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. 2008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  *  Author: Jan Glauber (jang@linux.vnet.ibm.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #ifndef QDIO_DEBUG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #define QDIO_DEBUG_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <asm/debug.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <asm/qdio.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include "qdio.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) /* that gives us 15 characters in the text event views */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define QDIO_DBF_LEN	32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) extern debug_info_t *qdio_dbf_setup;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) extern debug_info_t *qdio_dbf_error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define DBF_ERR		3	/* error conditions	*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define DBF_WARN	4	/* warning conditions	*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define DBF_INFO	6	/* informational	*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #undef DBF_EVENT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #undef DBF_ERROR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #undef DBF_DEV_EVENT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define DBF_EVENT(text...) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 		char debug_buffer[QDIO_DBF_LEN]; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 		snprintf(debug_buffer, QDIO_DBF_LEN, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 		debug_text_event(qdio_dbf_setup, DBF_ERR, debug_buffer); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) static inline void DBF_HEX(void *addr, int len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	debug_event(qdio_dbf_setup, DBF_ERR, addr, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define DBF_ERROR(text...) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 		char debug_buffer[QDIO_DBF_LEN]; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 		snprintf(debug_buffer, QDIO_DBF_LEN, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 		debug_text_event(qdio_dbf_error, DBF_ERR, debug_buffer); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) static inline void DBF_ERROR_HEX(void *addr, int len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 	debug_event(qdio_dbf_error, DBF_ERR, addr, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define DBF_DEV_EVENT(level, device, text...) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	do { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 		char debug_buffer[QDIO_DBF_LEN]; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 		if (debug_level_enabled(device->debug_area, level)) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 			snprintf(debug_buffer, QDIO_DBF_LEN, text); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 			debug_text_event(device->debug_area, level, debug_buffer); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 		} \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 	} while (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) static inline void DBF_DEV_HEX(struct qdio_irq *dev, void *addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 			       int len, int level)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	debug_event(dev->debug_area, level, addr, len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) int qdio_allocate_dbf(struct qdio_irq *irq_ptr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) void qdio_setup_debug_entries(struct qdio_irq *irq_ptr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) void qdio_shutdown_debug_entries(struct qdio_irq *irq_ptr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) int qdio_debug_init(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) void qdio_debug_exit(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #endif