Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #ifndef _EDAC_MCE_AMD_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #define _EDAC_MCE_AMD_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) #include <linux/notifier.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #include <asm/mce.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #define EC(x)				((x) & 0xffff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define LOW_SYNDROME(x)			(((x) >> 15) & 0xff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define HIGH_SYNDROME(x)		(((x) >> 24) & 0xff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define TLB_ERROR(x)			(((x) & 0xFFF0) == 0x0010)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define MEM_ERROR(x)			(((x) & 0xFF00) == 0x0100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define BUS_ERROR(x)			(((x) & 0xF800) == 0x0800)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define INT_ERROR(x)			(((x) & 0xF4FF) == 0x0400)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define TT(x)				(((x) >> 2) & 0x3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define TT_MSG(x)			tt_msgs[TT(x)]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define II(x)				(((x) >> 2) & 0x3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define II_MSG(x)			ii_msgs[II(x)]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define LL(x)				((x) & 0x3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define LL_MSG(x)			ll_msgs[LL(x)]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define TO(x)				(((x) >> 8) & 0x1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define TO_MSG(x)			to_msgs[TO(x)]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define PP(x)				(((x) >> 9) & 0x3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define PP_MSG(x)			pp_msgs[PP(x)]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define UU(x)				(((x) >> 8) & 0x3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define UU_MSG(x)			uu_msgs[UU(x)]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define R4(x)				(((x) >> 4) & 0xf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define R4_MSG(x)			((R4(x) < 9) ?  rrrr_msgs[R4(x)] : "Wrong R4!")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) extern const char * const pp_msgs[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) enum tt_ids {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	TT_INSTR = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	TT_DATA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	TT_GEN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	TT_RESV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) enum ll_ids {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 	LL_RESV = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	LL_L1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 	LL_L2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	LL_LG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) enum ii_ids {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	II_MEM = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	II_RESV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	II_IO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	II_GEN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) enum rrrr_ids {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 	R4_GEN	= 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 	R4_RD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 	R4_WR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 	R4_DRD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 	R4_DWR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	R4_IRD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 	R4_PREF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 	R4_EVICT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 	R4_SNOOP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)  * per-family decoder ops
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) struct amd_decoder_ops {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 	bool (*mc0_mce)(u16, u8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) 	bool (*mc1_mce)(u16, u8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 	bool (*mc2_mce)(u16, u8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) void amd_register_ecc_decoder(void (*f)(int, struct mce *));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) void amd_unregister_ecc_decoder(void (*f)(int, struct mce *));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #endif /* _EDAC_MCE_AMD_H */