diff options
Diffstat (limited to 'sys/dev/thunderbolt/tb_debug.h')
-rw-r--r-- | sys/dev/thunderbolt/tb_debug.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/sys/dev/thunderbolt/tb_debug.h b/sys/dev/thunderbolt/tb_debug.h new file mode 100644 index 000000000000..4f5584420882 --- /dev/null +++ b/sys/dev/thunderbolt/tb_debug.h @@ -0,0 +1,93 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2022 Scott Long + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Thunderbolt 3 driver debug strings + * + * $FreeBSD$ + */ + +#ifndef _TB_DEBUG_H +#define _TB_DEBUG_H + +typedef struct { + uintmax_t key; + const char * value; +} tb_string_t; + +const char * tb_get_string(uintmax_t, tb_string_t *); +int tb_debug_sysctl(SYSCTL_HANDLER_ARGS); +void tb_parse_debug(u_int *, char *); + +extern tb_string_t nhi_outmailcmd_opmode[]; +extern tb_string_t nhi_frame_pdf[]; +extern tb_string_t tb_security_level[]; +extern tb_string_t tb_rdy_connmode[]; +extern tb_string_t tb_mbox_connmode[]; +extern tb_string_t tb_device_power[]; +extern tb_string_t tb_notify_code[]; +extern tb_string_t tb_adapter_type[]; +extern tb_string_t tb_adapter_state[]; +extern tb_string_t tb_notify_event[]; + +enum { + /* Debug subsystems */ + DBG_NONE = 0, + DBG_INIT = (1 << 0), + DBG_INFO = (1 << 1), + DBG_RXQ = (1 << 2), + DBG_TXQ = (1 << 3), + DBG_INTR = (1 << 4), + DBG_TB = (1 << 5), + DBG_MBOX = (1 << 6), + DBG_BRIDGE = (1 << 7), + DBG_CFG = (1 << 8), + DBG_ROUTER = (1 << 9), + DBG_PORT = (1 << 10), + DBG_HCM = (1 << 11), + /* Debug levels */ + DBG_EXTRA = (1 << 30), + DBG_NOISY = (1 << 31), + DBG_FULL = DBG_EXTRA | DBG_NOISY +}; + +/* + * Macros to wrap printing. + * Each softc type needs a `dev` and `debug` field. Do tbdbg_printf as a + * function to make format errors more clear during compile. + */ +void tbdbg_dprintf(device_t dev, u_int debug, u_int val, const char *fmt, ...) __printflike(4, 5); + +#if defined(THUNDERBOLT_DEBUG) && (THUNDERBOLT_DEBUG > 0) +#define tb_debug(sc, level, fmt...) \ + tbdbg_dprintf((sc)->dev, (sc)->debug, level, ##fmt) +#else +#define tb_debug(sc, level, fmt...) +#endif +#define tb_printf(sc, fmt...) \ + device_printf((sc)->dev, ##fmt) + +#endif /* _TB_DEBUG_H */ |