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