xref: /aosp_15_r20/external/coreboot/src/vendorcode/cavium/bdk/libdram/dram-print.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /***********************license start***********************************
2 * Copyright (c) 2003-2017  Cavium Inc. ([email protected]). All rights
3 * reserved.
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 *   * Redistributions of source code must retain the above copyright
11 *     notice, this list of conditions and the following disclaimer.
12 *
13 *   * Redistributions in binary form must reproduce the above
14 *     copyright notice, this list of conditions and the following
15 *     disclaimer in the documentation and/or other materials provided
16 *     with the distribution.
17 *
18 *   * Neither the name of Cavium Inc. nor the names of
19 *     its contributors may be used to endorse or promote products
20 *     derived from this software without specific prior written
21 *     permission.
22 *
23 * This Software, including technical data, may be subject to U.S. export
24 * control laws, including the U.S. Export Administration Act and its
25 * associated regulations, and may be subject to export or import
26 * regulations in other countries.
27 *
28 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29 * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT
31 * TO THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY
32 * REPRESENTATION OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT
33 * DEFECTS, AND CAVIUM SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES
34 * OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR
35 * PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT,
36 * QUIET POSSESSION OR CORRESPONDENCE TO DESCRIPTION. THE ENTIRE  RISK
37 * ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38 ***********************license end**************************************/
39 
40 /**
41  * Functions for diplaying output in libdram. Internal use only.
42  */
43 
44 typedef enum {
45     // low 4 bits are verbosity level
46     VBL_OFF       =   0, // use this only to init dram_verbosity
47     VBL_ALL       =   0, // use this only in VBL_PR() to get printf equiv
48     VBL_NORM      =   1,
49     VBL_FAE       =   2,
50     VBL_TME       =   3,
51     VBL_DEV       =   4,
52     VBL_DEV2      =   5,
53     VBL_DEV3      =   6,
54     VBL_DEV4      =   7,
55     VBL_NONE      =  15, // use this only in VBL_PR() to get no printing
56     // upper 4 bits are special verbosities
57     VBL_SEQ       =  16,
58     VBL_CSRS      =  32,
59     VBL_SPECIAL   =  48,
60     // force at least 8 bits for enum
61     VBL_LAST      = 255
62 } dram_verbosity_t;
63 
64 extern dram_verbosity_t dram_verbosity;
65 
66 // "level" should be 1-7, or only one of the special bits
67 // let the compiler optimize the test for verbosity
68 #define is_verbosity_level(level)   ((int)(dram_verbosity & 0x0f) >= (level))
69 #define is_verbosity_special(level) (((int)(dram_verbosity & 0xf0) & (level)) != 0)
70 #define dram_is_verbose(level)      (((level) & VBL_SPECIAL) ? is_verbosity_special(level) : is_verbosity_level(level))
71 
72 /* FIXME(dhendrix): printf... */
73 #if 0
74 #define VB_PRT(level, format, ...)         \
75     do {                                    \
76         if (dram_is_verbose(level))         \
77             printf(format, ##__VA_ARGS__);  \
78     } while (0)
79 
80 #define ddr_print(format, ...) VB_PRT(VBL_NORM, format, ##__VA_ARGS__)
81 
82 #define error_print(format, ...) printf(format, ##__VA_ARGS__)
83 
84 #ifdef DEBUG_DEBUG_PRINT
85     #define debug_print(format, ...) printf(format, ##__VA_ARGS__)
86 #else
87     #define debug_print(format, ...) do {} while (0)
88 #endif
89 #endif
90 #include <console/console.h>
91 #define VB_PRT(level, format, ...)         \
92     do {                                    \
93         if (dram_is_verbose(level))         \
94             printk(BIOS_DEBUG, format, ##__VA_ARGS__);  \
95     } while (0)
96 
97 #define ddr_print(format, ...) VB_PRT(VBL_NORM, format, ##__VA_ARGS__)
98 
99 #define error_print(format, ...) printk(BIOS_ERR, format, ##__VA_ARGS__)
100 
101 #ifdef DEBUG_DEBUG_PRINT
102     #define debug_print(format, ...) printk(BIOS_DEBUG, format, ##__VA_ARGS__)
103 #else
104     #define debug_print(format, ...) do {} while (0)
105 #endif
106