/* SPDX-License-Identifier: GPL-2.0 */
/*
* USB4 port sideband registers found on routers and retimers
*
* Copyright (C) 2020, Intel Corporation
* Authors: Mika Westerberg <mika.westerberg@linux.intel.com>
* Rajmohan Mani <rajmohan.mani@intel.com>
*/
#ifndef _SB_REGS
#define _SB_REGS
#define USB4_SB_VENDOR_ID 0 x00
#define USB4_SB_PRODUCT_ID 0 x01
#define USB4_SB_FW_VERSION 0 x02
#define USB4_SB_DEBUG_CONF 0 x05
#define USB4_SB_DEBUG 0 x06
#define USB4_SB_LRD_TUNING 0 x07
#define USB4_SB_OPCODE 0 x08
enum usb4_sb_opcode {
USB4_SB_OPCODE_ERR = 0 x20525245, /* "ERR " */
USB4_SB_OPCODE_ONS = 0 x444d4321, /* "!CMD" */
USB4_SB_OPCODE_ROUTER_OFFLINE = 0 x4e45534c, /* "LSEN" */
USB4_SB_OPCODE_ENUMERATE_RETIMERS = 0 x4d554e45, /* "ENUM" */
USB4_SB_OPCODE_SET_INBOUND_SBTX = 0 x5055534c, /* "LSUP" */
USB4_SB_OPCODE_UNSET_INBOUND_SBTX = 0 x50555355, /* "USUP" */
USB4_SB_OPCODE_QUERY_LAST_RETIMER = 0 x5453414c, /* "LAST" */
USB4_SB_OPCODE_QUERY_CABLE_RETIMER = 0 x524c4243, /* "CBLR" */
USB4_SB_OPCODE_GET_NVM_SECTOR_SIZE = 0 x53534e47, /* "GNSS" */
USB4_SB_OPCODE_NVM_SET_OFFSET = 0 x53504f42, /* "BOPS" */
USB4_SB_OPCODE_NVM_BLOCK_WRITE = 0 x574b4c42, /* "BLKW" */
USB4_SB_OPCODE_NVM_AUTH_WRITE = 0 x48545541, /* "AUTH" */
USB4_SB_OPCODE_NVM_READ = 0 x52524641, /* "AFRR" */
USB4_SB_OPCODE_READ_LANE_MARGINING_CAP = 0 x50434452, /* "RDCP" */
USB4_SB_OPCODE_RUN_HW_LANE_MARGINING = 0 x474d4852, /* "RHMG" */
USB4_SB_OPCODE_RUN_SW_LANE_MARGINING = 0 x474d5352, /* "RSMG" */
USB4_SB_OPCODE_READ_SW_MARGIN_ERR = 0 x57534452, /* "RDSW" */
};
#define USB4_SB_METADATA 0 x09
#define USB4_SB_METADATA_NVM_AUTH_WRITE_MASK GENMASK(5 , 0 )
#define USB4_SB_LINK_CONF 0 x0c
#define USB4_SB_GEN23_TXFFE 0 x0d
#define USB4_SB_GEN4_TXFFE 0 x0e
#define USB4_SB_VERSION 0 x0f
#define USB4_SB_DATA 0 x12
/* USB4_SB_OPCODE_READ_LANE_MARGINING_CAP */
#define USB4_MARGIN_CAP_0_MODES_HW BIT(0 )
#define USB4_MARGIN_CAP_0_MODES_SW BIT(1 )
#define USB4_MARGIN_CAP_0_ALL_LANES BIT(2 )
#define USB4_MARGIN_CAP_0_VOLTAGE_INDP_MASK GENMASK(4 , 3 )
#define USB4_MARGIN_CAP_0_VOLTAGE_MIN 0 x0
#define USB4_MARGIN_CAP_0_VOLTAGE_HL 0 x1
#define USB4_MARGIN_CAP_0_VOLTAGE_BOTH 0 x2
#define USB4_MARGIN_CAP_0_TIME BIT(5 )
#define USB4_MARGIN_CAP_0_VOLTAGE_STEPS_MASK GENMASK(12 , 6 )
#define USB4_MARGIN_CAP_0_MAX_VOLTAGE_OFFSET_MASK GENMASK(18 , 13 )
#define USB4_MARGIN_CAP_0_OPT_VOLTAGE_SUPPORT BIT(19 )
#define USB4_MARGIN_CAP_0_VOLT_STEPS_OPT_MASK GENMASK(26 , 20 )
#define USB4_MARGIN_CAP_1_MAX_VOLT_OFS_OPT_MASK GENMASK(7 , 0 )
#define USB4_MARGIN_CAP_1_TIME_DESTR BIT(8 )
#define USB4_MARGIN_CAP_1_TIME_INDP_MASK GENMASK(10 , 9 )
#define USB4_MARGIN_CAP_1_TIME_MIN 0 x0
#define USB4_MARGIN_CAP_1_TIME_LR 0 x1
#define USB4_MARGIN_CAP_1_TIME_BOTH 0 x2
#define USB4_MARGIN_CAP_1_TIME_STEPS_MASK GENMASK(15 , 11 )
#define USB4_MARGIN_CAP_1_TIME_OFFSET_MASK GENMASK(20 , 16 )
#define USB4_MARGIN_CAP_1_MIN_BER_MASK GENMASK(25 , 21 )
#define USB4_MARGIN_CAP_1_MAX_BER_MASK GENMASK(30 , 26 )
#define USB4_MARGIN_CAP_2_MODES_HW BIT(0 )
#define USB4_MARGIN_CAP_2_MODES_SW BIT(1 )
#define USB4_MARGIN_CAP_2_TIME BIT(2 )
#define USB4_MARGIN_CAP_2_MAX_VOLTAGE_OFFSET_MASK GENMASK(8 , 3 )
#define USB4_MARGIN_CAP_2_VOLTAGE_STEPS_MASK GENMASK(15 , 9 )
#define USB4_MARGIN_CAP_2_VOLTAGE_INDP_MASK GENMASK(17 , 16 )
#define USB4_MARGIN_CAP_2_VOLTAGE_MIN 0 x0
#define USB4_MARGIN_CAP_2_VOLTAGE_BOTH 0 x1
#define USB4_MARGIN_CAP_2_TIME_INDP_MASK GENMASK(19 , 18 )
#define USB4_MARGIN_CAP_2_TIME_MIN 0 x0
#define USB4_MARGIN_CAP_2_TIME_BOTH 0 x1
/* USB4_SB_OPCODE_RUN_HW_LANE_MARGINING */
#define USB4_MARGIN_HW_TIME BIT(3 )
#define USB4_MARGIN_HW_RHU BIT(4 )
#define USB4_MARGIN_HW_BER_MASK GENMASK(9 , 5 )
#define USB4_MARGIN_HW_BER_SHIFT 5
#define USB4_MARGIN_HW_OPT_VOLTAGE BIT(10 )
/* Applicable to all margin values */
#define USB4_MARGIN_HW_RES_MARGIN_MASK GENMASK(6 , 0 )
#define USB4_MARGIN_HW_RES_EXCEEDS BIT(7 )
/* Shifts for parsing the lane results */
#define USB4_MARGIN_HW_RES_LANE_SHIFT 16
#define USB4_MARGIN_HW_RES_LL_SHIFT 8
/* USB4_SB_OPCODE_RUN_SW_LANE_MARGINING */
#define USB4_MARGIN_SW_LANES_MASK GENMASK(2 , 0 )
#define USB4_MARGIN_SW_TIME BIT(3 )
#define USB4_MARGIN_SW_RH BIT(4 )
#define USB4_MARGIN_SW_OPT_VOLTAGE BIT(5 )
#define USB4_MARGIN_SW_VT_MASK GENMASK(12 , 6 )
#define USB4_MARGIN_SW_COUNTER_MASK GENMASK(14 , 13 )
#define USB4_MARGIN_SW_UPPER_EYE BIT(15 )
#define USB4_MARGIN_SW_ERR_COUNTER_LANE_0_MASK GENMASK(3 , 0 )
#define USB4_MARGIN_SW_ERR_COUNTER_LANE_1_MASK GENMASK(7 , 4 )
#define USB4_MARGIN_SW_ERR_COUNTER_LANE_2_MASK GENMASK(11 , 8 )
#endif
Messung V0.5 in Prozent C=95 H=92 G=93
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland