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