blob: 84f9c3b55aac052e04682a9d94b11482547c08e7 [file] [log] [blame]
David Hendricks7d48ac52018-03-09 14:30:38 -08001#ifndef __CB_BDK_WARN_H__
2#define __CB_BDK_WARN_H__
3
David Hendricks2004b932018-03-09 13:58:27 -08004/***********************license start***********************************
5* Copyright (c) 2003-2017 Cavium Inc. (support@cavium.com). All rights
6* reserved.
7*
8*
9* Redistribution and use in source and binary forms, with or without
10* modification, are permitted provided that the following conditions are
11* met:
12*
13* * Redistributions of source code must retain the above copyright
14* notice, this list of conditions and the following disclaimer.
15*
16* * Redistributions in binary form must reproduce the above
17* copyright notice, this list of conditions and the following
18* disclaimer in the documentation and/or other materials provided
19* with the distribution.
20*
21* * Neither the name of Cavium Inc. nor the names of
22* its contributors may be used to endorse or promote products
23* derived from this software without specific prior written
24* permission.
25*
26* This Software, including technical data, may be subject to U.S. export
27* control laws, including the U.S. Export Administration Act and its
28* associated regulations, and may be subject to export or import
29* regulations in other countries.
30*
31* TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
32* AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
33* WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT
34* TO THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY
35* REPRESENTATION OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT
36* DEFECTS, AND CAVIUM SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES
37* OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR
38* PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT,
39* QUIET POSSESSION OR CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK
40* ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
41***********************license end**************************************/
42
David Hendricks7d48ac52018-03-09 14:30:38 -080043#include <console/console.h>
44
David Hendricks2004b932018-03-09 13:58:27 -080045/**
46 * @file
47 *
48 * Functions for reporting errors and warnings.
49 *
50 * <hr>$Revision: 49448 $<hr>
51 *
52 * @defgroup stdio Standard IO related functions
53 * @{
54 */
55
David Hendricks7d48ac52018-03-09 14:30:38 -080056#define bdk_warn(format, ...) printk(BIOS_WARNING, format, ##__VA_ARGS__)
57#define bdk_error(format, ...) printk(BIOS_ERR, format, ##__VA_ARGS__)
58#define bdk_fatal(format, ...) \
59 do { \
60 printk(BIOS_CRIT, format, ##__VA_ARGS__); \
61 while (1) \
62 ; \
63 } while (0)
David Hendricks2004b932018-03-09 13:58:27 -080064
65/* The following defines control detailed tracing of various parts of the
66 BDK. Each one can be enabled(1) or disabled(0) independently. These
67 should be disabled unless you are trying to debug something specific */
68
69typedef enum
70{
71 BDK_TRACE_ENABLE_BGX, /* BGX networking block */
72 BDK_TRACE_ENABLE_DRAM, /* DRAM initialzation */
73 BDK_TRACE_ENABLE_DRAM_TEST, /* DRAM test code */
74 BDK_TRACE_ENABLE_INIT, /* Early initialization, before main() */
75 BDK_TRACE_ENABLE_ECAM, /* ECAM initialization */
76 BDK_TRACE_ENABLE_QLM, /* QLM related debug */
77 BDK_TRACE_ENABLE_EMMC, /* eMMC related debug */
78 BDK_TRACE_ENABLE_PCIE, /* PCIe link init */
79 BDK_TRACE_ENABLE_PCIE_CONFIG, /* PCIe config space reads / writes */
80 BDK_TRACE_ENABLE_SATA, /* SATA/AHCI related debug */
81 BDK_TRACE_ENABLE_CCPI, /* Multi-node related debug */
82 BDK_TRACE_ENABLE_FATFS, /* FatFs related debug */
83 BDK_TRACE_ENABLE_MPI, /* MPI related debug */
84 BDK_TRACE_ENABLE_ENV, /* Environment variables related debug */
85 BDK_TRACE_ENABLE_FPA, /* Free Pool Allocator */
86 BDK_TRACE_ENABLE_PKI, /* Packet Input */
87 BDK_TRACE_ENABLE_PKO, /* Packet Output */
88 BDK_TRACE_ENABLE_SSO, /* SSO */
89 BDK_TRACE_ENABLE_DEVICE, /* ECAM based device framework */
90 BDK_TRACE_ENABLE_DEVICE_SCAN, /* ECAM based device scanning detail */
91 BDK_TRACE_ENABLE_NIC, /* Virtual NIC */
92 BDK_TRACE_ENABLE_FDT_OS, /* Device tree passed to OS */
93 BDK_TRACE_ENABLE_USB_XHCI, /* USB XHCI block */
94 BDK_TRACE_ENABLE_PHY, /* Ethernet Phy drivers debug */
95 __BDK_TRACE_ENABLE_LAST, /* Must always be last value */
96} bdk_trace_enable_t;
97
David Hendricks2004b932018-03-09 13:58:27 -080098/**
99 * Macro for low level tracing of BDK functions. When enabled,
100 * these translate to printf() calls. The "area" is a string
101 * that is appended to "BDK_TRACE_ENABLE_" to figure out which
102 * enable macro to use. The macro expects a ';' after it.
103 */
David Hendricks7d48ac52018-03-09 14:30:38 -0800104#define BDK_TRACE(area, format, ...) do { \
105 if ((BDK_TRACE_ENABLE_INIT == BDK_TRACE_ENABLE_##area && \
106 IS_ENABLED(CONFIG_CAVIUM_BDK_VERBOSE_INIT)) || \
107 (BDK_TRACE_ENABLE_DRAM == BDK_TRACE_ENABLE_##area && \
108 IS_ENABLED(CONFIG_CAVIUM_BDK_VERBOSE_DRAM)) || \
109 (BDK_TRACE_ENABLE_DRAM_TEST == BDK_TRACE_ENABLE_##area && \
110 IS_ENABLED(CONFIG_CAVIUM_BDK_VERBOSE_DRAM_TEST)) || \
111 (BDK_TRACE_ENABLE_QLM == BDK_TRACE_ENABLE_##area && \
112 IS_ENABLED(CONFIG_CAVIUM_BDK_VERBOSE_QLM)) || \
113 (BDK_TRACE_ENABLE_PCIE_CONFIG == BDK_TRACE_ENABLE_##area && \
114 IS_ENABLED(CONFIG_CAVIUM_BDK_VERBOSE_PCIE_CONFIG)) || \
115 (BDK_TRACE_ENABLE_PCIE == BDK_TRACE_ENABLE_##area && \
116 IS_ENABLED(CONFIG_CAVIUM_BDK_VERBOSE_PCIE)) || \
117 (BDK_TRACE_ENABLE_PHY == BDK_TRACE_ENABLE_##area && \
118 IS_ENABLED(CONFIG_CAVIUM_BDK_VERBOSE_PHY))) \
119 printk(BIOS_DEBUG, #area ": " format, ##__VA_ARGS__); \
120 } while (0)
David Hendricks2004b932018-03-09 13:58:27 -0800121
122/** @} */
David Hendricks7d48ac52018-03-09 14:30:38 -0800123#endif