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) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *	Copyright IBM Corp. 2001, 2007
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *	Authors:	Peter Tiedemann (ptiedem@de.ibm.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #ifndef _CTCM_DBUG_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #define _CTCM_DBUG_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * Debug Facility stuff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #include <asm/debug.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #ifdef DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)  #define do_debug 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)  #define do_debug 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #ifdef DEBUGCCW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23)  #define do_debug_ccw 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24)  #define DEBUGDATA 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)  #define do_debug_ccw 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #ifdef DEBUGDATA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)  #define do_debug_data 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)  #define do_debug_data 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) /* define dbf debug levels similar to kernel msg levels */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #define	CTC_DBF_ALWAYS	0	/* always print this 			*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #define	CTC_DBF_EMERG	0	/* system is unusable			*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) #define	CTC_DBF_ALERT	1	/* action must be taken immediately	*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define	CTC_DBF_CRIT	2	/* critical conditions			*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #define	CTC_DBF_ERROR	3	/* error conditions			*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) #define	CTC_DBF_WARN	4	/* warning conditions			*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) #define	CTC_DBF_NOTICE	5	/* normal but significant condition	*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) #define	CTC_DBF_INFO	5	/* informational			*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #define	CTC_DBF_DEBUG	6	/* debug-level messages			*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) enum ctcm_dbf_names {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	CTCM_DBF_SETUP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	CTCM_DBF_ERROR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	CTCM_DBF_TRACE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	CTCM_DBF_MPC_SETUP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	CTCM_DBF_MPC_ERROR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	CTCM_DBF_MPC_TRACE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	CTCM_DBF_INFOS	/* must be last element */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) struct ctcm_dbf_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	char name[DEBUG_MAX_NAME_LEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	int pages;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	int areas;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	int len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	int level;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	debug_info_t *id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) extern struct ctcm_dbf_info ctcm_dbf[CTCM_DBF_INFOS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) int ctcm_register_dbf_views(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) void ctcm_unregister_dbf_views(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) void ctcm_dbf_longtext(enum ctcm_dbf_names dbf_nix, int level, char *text, ...);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) static inline const char *strtail(const char *s, int n)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	int l = strlen(s);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	return (l > n) ? s + (l - n) : s;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) #define CTCM_FUNTAIL strtail((char *)__func__, 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #define CTCM_DBF_TEXT(name, level, text) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 		debug_text_event(ctcm_dbf[CTCM_DBF_##name].id, level, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define CTCM_DBF_HEX(name, level, addr, len) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 		debug_event(ctcm_dbf[CTCM_DBF_##name].id, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 					level, (void *)(addr), len); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) #define CTCM_DBF_TEXT_(name, level, text...) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	ctcm_dbf_longtext(CTCM_DBF_##name, level, text)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93)  * cat : one of {setup, mpc_setup, trace, mpc_trace, error, mpc_error}.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94)  * dev : netdevice with valid name field.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95)  * text: any text string.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define CTCM_DBF_DEV_NAME(cat, dev, text) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 		CTCM_DBF_TEXT_(cat, CTC_DBF_INFO, "%s(%s) :- %s", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 			CTCM_FUNTAIL, dev->name, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define MPC_DBF_DEV_NAME(cat, dev, text) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 		CTCM_DBF_TEXT_(MPC_##cat, CTC_DBF_INFO, "%s(%s) := %s", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 			CTCM_FUNTAIL, dev->name, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define CTCMY_DBF_DEV_NAME(cat, dev, text) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 		if (IS_MPCDEV(dev)) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 			MPC_DBF_DEV_NAME(cat, dev, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 		else \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 			CTCM_DBF_DEV_NAME(cat, dev, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118)  * cat : one of {setup, mpc_setup, trace, mpc_trace, error, mpc_error}.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)  * dev : netdevice.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)  * text: any text string.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define CTCM_DBF_DEV(cat, dev, text) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 		CTCM_DBF_TEXT_(cat, CTC_DBF_INFO, "%s(%p) :-: %s", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 			CTCM_FUNTAIL, dev, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define MPC_DBF_DEV(cat, dev, text) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 		CTCM_DBF_TEXT_(MPC_##cat, CTC_DBF_INFO, "%s(%p) :=: %s", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 			CTCM_FUNTAIL, dev, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define CTCMY_DBF_DEV(cat, dev, text) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 		if (IS_MPCDEV(dev)) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 			MPC_DBF_DEV(cat, dev, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 		else \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 			CTCM_DBF_DEV(cat, dev, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #endif