/linux/drivers/phy/freescale/ |
H A D | phy-fsl-lynx-28g.c | 24 #define LYNX_28G_LNa_PCC_OFFSET(lane) (4 * (LYNX_28G_NUM_LANE - (lane->id) - 1)) argument 45 /* Per SerDes lane registers */ 46 /* Lane a General Control Register */ 47 #define LYNX_28G_LNaGCR0(lane) (0x800 + (lane) * 0x100 + 0x0) argument 55 /* Lane a Tx Reset Control Register */ 56 #define LYNX_28G_LNaTRSTCTL(lane) (0x800 + (lane) * 0x100 + 0x20) argument 61 /* Lane a Tx General Control Register */ 62 #define LYNX_28G_LNaTGCR0(lane) (0x800 + (lane) * 0x100 + 0x24) argument 71 #define LYNX_28G_LNaTECR0(lane) (0x800 + (lane) * 0x100 + 0x30) argument 73 /* Lane a Rx Reset Control Register */ [all …]
|
H A D | phy-fsl-imx8qm-hsio.c | 96 struct imx_hsio_lane lane[MAX_NUM_LANE]; member 119 struct imx_hsio_lane *lane = phy_get_drvdata(phy); in imx_hsio_init() local 120 struct imx_hsio_priv *priv = lane->priv; in imx_hsio_init() 124 switch (lane->phy_type) { in imx_hsio_init() 126 lane->phy_mode = PHY_MODE_PCIE; in imx_hsio_init() 127 if (lane->ctrl_index == 0) { /* PCIEA */ in imx_hsio_init() 128 lane->ctrl_off = 0; in imx_hsio_init() 129 lane->phy_off = 0; in imx_hsio_init() 132 if (lane->idx == 0) in imx_hsio_init() 133 lane->clks[i].id = lan0_pcie_clks[i]; in imx_hsio_init() [all …]
|
/linux/drivers/phy/marvell/ |
H A D | phy-mvebu-cp110-comphy.c | 129 * A lane is described by the following bitfields: 182 unsigned lane; member 190 .lane = _lane, \ 200 .lane = _lane, \ 209 /* lane 0 */ 214 /* lane 1 */ 221 /* lane 2 */ 230 /* lane 3 */ 237 /* lane 4 */ 250 /* lane 5 */ [all …]
|
H A D | phy-mvebu-a3700-comphy.c | 40 * When accessing common PHY lane registers directly, we need to shift by 1, 175 * This register is not from PHY lane register space. It only exists in the 176 * indirect register space, before the actual PHY lane 2 registers. So the 184 #define COMPHY_PHY_REG(lane, reg) (((1 - (lane)) * 0x28) + ((reg) & 0x3f)) argument 227 unsigned int lane; member 234 .lane = _lane, \ 246 /* lane 0 */ 251 /* lane 1 */ 256 /* lane 2 */ 387 /* Used for accessing lane 2 registers (SATA/USB3 PHY) */ [all …]
|
H A D | phy-armada38x-comphy.c | 47 struct a38x_comphy_lane lane[MAX_A38X_COMPHY]; member 52 * row index = serdes lane, 64 static void a38x_set_conf(struct a38x_comphy_lane *lane, bool enable) in a38x_set_conf() argument 66 struct a38x_comphy *priv = lane->priv; in a38x_set_conf() 72 conf |= BIT(lane->port); in a38x_set_conf() 74 conf &= ~BIT(lane->port); in a38x_set_conf() 79 static void a38x_comphy_set_reg(struct a38x_comphy_lane *lane, in a38x_comphy_set_reg() argument 84 val = readl_relaxed(lane->base + offset) & ~mask; in a38x_comphy_set_reg() 85 writel(val | value, lane->base + offset); in a38x_comphy_set_reg() 88 static void a38x_comphy_set_speed(struct a38x_comphy_lane *lane, in a38x_comphy_set_speed() argument [all …]
|
/linux/drivers/net/dsa/b53/ |
H A D | b53_serdes.c | 42 static void b53_serdes_set_lane(struct b53_device *dev, u8 lane) in b53_serdes_set_lane() argument 44 if (dev->serdes_lane == lane) in b53_serdes_set_lane() 47 WARN_ON(lane > 1); in b53_serdes_set_lane() 50 SERDES_XGXSBLK0_BLOCKADDRESS, lane); in b53_serdes_set_lane() 51 dev->serdes_lane = lane; in b53_serdes_set_lane() 54 static void b53_serdes_write(struct b53_device *dev, u8 lane, in b53_serdes_write() argument 57 b53_serdes_set_lane(dev, lane); in b53_serdes_write() 61 static u16 b53_serdes_read(struct b53_device *dev, u8 lane, in b53_serdes_read() argument 64 b53_serdes_set_lane(dev, lane); in b53_serdes_read() 74 u8 lane = pcs_to_b53_pcs(pcs)->lane; in b53_serdes_config() local [all …]
|
/linux/drivers/gpu/drm/amd/display/dc/link/protocols/ |
H A D | link_dp_training_fixed_vs_pe_retimer.c | 52 uint8_t lane; in dp_fixed_vs_pe_read_lane_adjust() local 54 /* W/A to read lane settings requested by DPRX */ in dp_fixed_vs_pe_read_lane_adjust() 65 for (lane = 0; lane < LANE_COUNT_DP_MAX; lane++) { in dp_fixed_vs_pe_read_lane_adjust() 66 dpcd_lane_adjust[lane].bits.VOLTAGE_SWING_SET = (dprx_vs >> (2 * lane)) & 0x3; in dp_fixed_vs_pe_read_lane_adjust() 67 dpcd_lane_adjust[lane].bits.PRE_EMPHASIS_SET = (dprx_pe >> (2 * lane)) & 0x3; in dp_fixed_vs_pe_read_lane_adjust() 80 uint8_t lane = 0; in dp_fixed_vs_pe_set_retimer_lane_settings() local 82 for (lane = 0; lane < lane_count; lane++) { in dp_fixed_vs_pe_set_retimer_lane_settings() 84 dpcd_lane_adjust[lane].bits.VOLTAGE_SWING_SET << (2 * lane); in dp_fixed_vs_pe_set_retimer_lane_settings() 86 dpcd_lane_adjust[lane].bits.PRE_EMPHASIS_SET << (2 * lane); in dp_fixed_vs_pe_set_retimer_lane_settings() 106 uint8_t lane = 0; in perform_fixed_vs_pe_nontransparent_training_sequence() local [all …]
|
H A D | link_dp_training.c | 305 uint32_t lane; in maximize_lane_settings() local 313 for (lane = 1; lane < lt_settings->link_settings.lane_count; lane++) { in maximize_lane_settings() 314 if (lane_settings[lane].VOLTAGE_SWING > max_requested.VOLTAGE_SWING) in maximize_lane_settings() 315 max_requested.VOLTAGE_SWING = lane_settings[lane].VOLTAGE_SWING; in maximize_lane_settings() 317 if (lane_settings[lane].PRE_EMPHASIS > max_requested.PRE_EMPHASIS) in maximize_lane_settings() 318 max_requested.PRE_EMPHASIS = lane_settings[lane].PRE_EMPHASIS; in maximize_lane_settings() 319 if (lane_settings[lane].FFE_PRESET.settings.level > in maximize_lane_settings() 322 lane_settings[lane].FFE_PRESET.settings.level; in maximize_lane_settings() 347 for (lane = 0; lane < LANE_COUNT_DP_MAX; lane++) { in maximize_lane_settings() 348 lane_settings[lane].VOLTAGE_SWING = max_requested.VOLTAGE_SWING; in maximize_lane_settings() [all …]
|
/linux/drivers/phy/tegra/ |
H A D | xusb.c | 115 int tegra_xusb_lane_parse_dt(struct tegra_xusb_lane *lane, in tegra_xusb_lane_parse_dt() argument 118 struct device *dev = &lane->pad->dev; in tegra_xusb_lane_parse_dt() 126 err = match_string(lane->soc->funcs, lane->soc->num_funcs, function); in tegra_xusb_lane_parse_dt() 128 dev_err(dev, "invalid function \"%s\" for lane \"%pOFn\"\n", in tegra_xusb_lane_parse_dt() 133 lane->function = err; in tegra_xusb_lane_parse_dt() 141 struct tegra_xusb_lane *lane = phy_get_drvdata(phy); in tegra_xusb_lane_destroy() local 143 lane->pad->ops->remove(lane); in tegra_xusb_lane_destroy() 191 struct phy *lane; in tegra_xusb_pad_register() local 199 pad->lanes = devm_kcalloc(&pad->dev, pad->soc->num_lanes, sizeof(lane), in tegra_xusb_pad_register() 208 struct tegra_xusb_lane *lane; in tegra_xusb_pad_register() local [all …]
|
H A D | xusb-tegra124.c | 292 struct tegra_xusb_lane *lane; in tegra124_usb3_save_context() local 300 lane = port->base.lane; in tegra124_usb3_save_context() 302 if (lane->pad == padctl->pcie) in tegra124_usb3_save_context() 303 offset = XUSB_PADCTL_IOPHY_MISC_PAD_PX_CTL6(lane->index); in tegra124_usb3_save_context() 452 static void tegra124_usb2_lane_remove(struct tegra_xusb_lane *lane) in tegra124_usb2_lane_remove() argument 454 struct tegra_xusb_usb2_lane *usb2 = to_usb2_lane(lane); in tegra124_usb2_lane_remove() 466 struct tegra_xusb_lane *lane = phy_get_drvdata(phy); in tegra124_usb2_phy_init() local 468 return tegra124_xusb_padctl_enable(lane->pad->padctl); in tegra124_usb2_phy_init() 473 struct tegra_xusb_lane *lane = phy_get_drvdata(phy); in tegra124_usb2_phy_exit() local 475 return tegra124_xusb_padctl_disable(lane->pad->padctl); in tegra124_usb2_phy_exit() [all …]
|
H A D | xusb-tegra210.c | 447 static int tegra210_usb3_lane_map(struct tegra_xusb_lane *lane) in tegra210_usb3_lane_map() argument 452 if (map->index == lane->index && in tegra210_usb3_lane_map() 453 strcmp(map->type, lane->pad->soc->name) == 0) { in tegra210_usb3_lane_map() 454 dev_dbg(lane->pad->padctl->dev, "lane = %s map to port = usb3-%d\n", in tegra210_usb3_lane_map() 455 lane->pad->soc->lanes[lane->index].name, map->port); in tegra210_usb3_lane_map() 706 struct tegra_xusb_lane *lane = tegra_xusb_find_lane(padctl, "sata", 0); in tegra210_sata_uphy_enable() local 716 if (IS_ERR(lane)) in tegra210_sata_uphy_enable() 722 usb = tegra_xusb_lane_check(lane, "usb3-ss"); in tegra210_sata_uphy_enable() 1058 static int tegra210_usb3_enable_phy_sleepwalk(struct tegra_xusb_lane *lane, in tegra210_usb3_enable_phy_sleepwalk() argument 1061 struct tegra_xusb_padctl *padctl = lane->pad->padctl; in tegra210_usb3_enable_phy_sleepwalk() [all …]
|
H A D | xusb.h | 55 int tegra_xusb_lane_parse_dt(struct tegra_xusb_lane *lane, 63 to_usb3_lane(struct tegra_xusb_lane *lane) in to_usb3_lane() argument 65 return container_of(lane, struct tegra_xusb_usb3_lane, base); in to_usb3_lane() 76 to_usb2_lane(struct tegra_xusb_lane *lane) in to_usb2_lane() argument 78 return container_of(lane, struct tegra_xusb_usb2_lane, base); in to_usb2_lane() 86 to_ulpi_lane(struct tegra_xusb_lane *lane) in to_ulpi_lane() argument 88 return container_of(lane, struct tegra_xusb_ulpi_lane, base); in to_ulpi_lane() 105 to_hsic_lane(struct tegra_xusb_lane *lane) in to_hsic_lane() argument 107 return container_of(lane, struct tegra_xusb_hsic_lane, base); in to_hsic_lane() 115 to_pcie_lane(struct tegra_xusb_lane *lane) in to_pcie_lane() argument [all …]
|
H A D | xusb-tegra186.c | 321 static void tegra186_usb2_lane_remove(struct tegra_xusb_lane *lane) in tegra186_usb2_lane_remove() argument 323 struct tegra_xusb_usb2_lane *usb2 = to_usb2_lane(lane); in tegra186_usb2_lane_remove() 328 static int tegra186_utmi_enable_phy_sleepwalk(struct tegra_xusb_lane *lane, in tegra186_utmi_enable_phy_sleepwalk() argument 331 struct tegra_xusb_padctl *padctl = lane->pad->padctl; in tegra186_utmi_enable_phy_sleepwalk() 333 unsigned int index = lane->index; in tegra186_utmi_enable_phy_sleepwalk() 477 static int tegra186_utmi_disable_phy_sleepwalk(struct tegra_xusb_lane *lane) in tegra186_utmi_disable_phy_sleepwalk() argument 479 struct tegra_xusb_padctl *padctl = lane->pad->padctl; in tegra186_utmi_disable_phy_sleepwalk() 481 unsigned int index = lane->index; in tegra186_utmi_disable_phy_sleepwalk() 525 static int tegra186_utmi_enable_phy_wake(struct tegra_xusb_lane *lane) in tegra186_utmi_enable_phy_wake() argument 527 struct tegra_xusb_padctl *padctl = lane->pad->padctl; in tegra186_utmi_enable_phy_wake() [all …]
|
/linux/drivers/gpu/drm/i915/display/ |
H A D | intel_cx0_phy_regs.h | 34 #define _XELPDP_PORT_M2P_MSGBUS_CTL(idx, lane) _MMIO(_PICK_EVEN_2RANGES(idx, PORT_TC1, \ argument 38 _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC2) + (lane) * 4) 39 #define XELPDP_PORT_M2P_MSGBUS_CTL(i915__, port, lane) \ argument 41 _XELPDP_PORT_M2P_MSGBUS_CTL(__xe2lpd_port_idx(port), lane) : \ 42 _XELPDP_PORT_M2P_MSGBUS_CTL(port, lane)) 54 #define _XELPDP_PORT_P2M_MSGBUS_STATUS(idx, lane) _MMIO(_PICK_EVEN_2RANGES(idx, PORT_TC1, \ argument 58 _XELPDP_PORT_M2P_MSGBUS_CTL_LN0_USBC2) + (lane) * 4 + 8) 59 #define XELPDP_PORT_P2M_MSGBUS_STATUS(i915__, port, lane) \ argument 61 _XELPDP_PORT_P2M_MSGBUS_STATUS(__xe2lpd_port_idx(port), lane) : \ 62 _XELPDP_PORT_P2M_MSGBUS_STATUS(port, lane)) [all …]
|
H A D | vlv_dpio_phy_regs.h | 19 #define _VLV_TX(ch, lane, dw) (0x80 + (ch) * 0x2400 + (lane) * 0x200 + (dw) * 4) argument 156 #define VLV_TX_DW2(ch, lane) _VLV_TX((ch), (lane), 2) argument 163 #define VLV_TX_DW3(ch, lane) _VLV_TX((ch), (lane), 3) argument 170 #define VLV_TX_DW4(ch, lane) _VLV_TX((ch), (lane), 4) argument 177 #define VLV_TX_DW5(ch, lane) _VLV_TX((ch), (lane), 5) argument 181 #define VLV_TX_DW11(ch, lane) _VLV_TX((ch), (lane), 11) argument 184 #define VLV_TX_DW14(ch, lane) _VLV_TX((ch), (lane), 14) argument 290 #define CHV_TX_DW0(ch, lane) _VLV_TX((ch), (lane), 0) argument 291 #define CHV_TX_DW1(ch, lane) _VLV_TX((ch), (lane), 1) argument 292 #define CHV_TX_DW2(ch, lane) _VLV_TX((ch), (lane), 2) argument [all …]
|
H A D | bxt_dpio_phy_regs.h | 28 #define _BXT_LANE_OFFSET(lane) (((lane) >> 1) * 0x200 + \ argument 29 ((lane) & 1) * 0x80) 30 #define _MMIO_BXT_PHY_CH_LN(phy, ch, lane, reg_ch0, reg_ch1) \ argument 31 _MMIO(_BXT_PHY_CH(phy, ch, reg_ch0, reg_ch1) + _BXT_LANE_OFFSET(lane)) 101 /* BXT PHY common lane registers */ 209 #define BXT_PORT_TX_DW2_LN(phy, ch, lane) _MMIO_BXT_PHY_CH_LN(phy, ch, lane, \ argument 226 #define BXT_PORT_TX_DW3_LN(phy, ch, lane) _MMIO_BXT_PHY_CH_LN(phy, ch, lane, \ argument 241 #define BXT_PORT_TX_DW4_LN(phy, ch, lane) _MMIO_BXT_PHY_CH_LN(phy, ch, lane, \ argument 256 #define BXT_PORT_TX_DW5_LN(phy, ch, lane) _MMIO_BXT_PHY_CH_LN(phy, ch, lane, \ argument 269 #define BXT_PORT_TX_DW14_LN(phy, ch, lane) _MMIO_BXT_PHY_CH_LN(phy, ch, lane, \ argument
|
/linux/drivers/net/dsa/mv88e6xxx/ |
H A D | serdes.c | 37 int lane, int device, int reg, u16 *val) in mv88e6390_serdes_read() argument 39 return mv88e6xxx_phy_read_c45(chip, lane, device, reg, val); in mv88e6390_serdes_read() 244 int lane = -ENODEV; in mv88e6341_serdes_get_lane() local 251 lane = MV88E6341_PORT5_LANE; in mv88e6341_serdes_get_lane() 255 return lane; in mv88e6341_serdes_get_lane() 261 int lane = -ENODEV; in mv88e6390_serdes_get_lane() local 268 lane = MV88E6390_PORT9_LANE0; in mv88e6390_serdes_get_lane() 274 lane = MV88E6390_PORT10_LANE0; in mv88e6390_serdes_get_lane() 278 return lane; in mv88e6390_serdes_get_lane() 286 int lane = -ENODEV; in mv88e6390x_serdes_get_lane() local [all …]
|
/linux/drivers/phy/ |
H A D | phy-xgene.c | 268 /* PHY lane CSR accessing from SDS indirectly */ 520 u32 speed[MAX_LANE]; /* Index for override parameter per lane */ 658 static void serdes_wr(struct xgene_phy_ctx *ctx, int lane, u32 reg, u32 data) in serdes_wr() argument 664 reg += lane * SERDES_LANE_STRIDE; in serdes_wr() 673 static void serdes_rd(struct xgene_phy_ctx *ctx, int lane, u32 reg, u32 *data) in serdes_rd() argument 678 reg += lane * SERDES_LANE_STRIDE; in serdes_rd() 684 static void serdes_clrbits(struct xgene_phy_ctx *ctx, int lane, u32 reg, in serdes_clrbits() argument 689 serdes_rd(ctx, lane, reg, &val); in serdes_clrbits() 691 serdes_wr(ctx, lane, reg, val); in serdes_clrbits() 694 static void serdes_setbits(struct xgene_phy_ctx *ctx, int lane, u32 reg, in serdes_setbits() argument [all …]
|
/linux/Documentation/devicetree/bindings/usb/ |
H A D | onnn,nb7vpq904m.yaml | 48 An array of physical data lane indexes. Position determines how 51 Lane number represents the following 52 - 0 is RX2 lane 53 - 1 is TX2 lane 54 - 2 is TX1 lane 55 - 3 is RX1 lane 66 - Port A to RX2 lane 67 - Port B to TX2 lane 68 - Port C to TX1 lane 69 - Port D to RX1 lane [all …]
|
/linux/Documentation/devicetree/bindings/media/ |
H A D | video-interfaces.yaml | 165 # Assume up to 9 physical lane indices 168 An array of physical data lane indexes. Position of an entry determines 169 the logical lane number, while the value of an entry indicates physical 170 lane, e.g. for 2-lane MIPI CSI-2 bus we could have "data-lanes = <1 2>;", 171 assuming the clock lane is on hardware lane 0. If the hardware does not 172 support lane reordering, monotonically incremented values shall be used 174 lane. This property is valid for serial busses only (e.g. MIPI CSI-2). 178 # Assume up to 9 physical lane indices 181 Physical clock lane index. Position of an entry determines the logical 182 lane number, while the value of an entry indicates physical lane, e.g. for [all …]
|
/linux/sound/soc/tegra/ |
H A D | tegra186_asrc.c | 109 if (asrc->lane[id].ratio_source != in tegra186_asrc_runtime_resume() 116 asrc->lane[id].int_part); in tegra186_asrc_runtime_resume() 121 asrc->lane[id].frac_part); in tegra186_asrc_runtime_resume() 173 asrc->lane[id].input_thresh); in tegra186_asrc_in_hw_params() 196 asrc->lane[id].output_thresh); in tegra186_asrc_out_hw_params() 206 if (asrc->lane[id].hwcomp_disable) { in tegra186_asrc_out_hw_params() 225 1, asrc->lane[id].ratio_source); in tegra186_asrc_out_hw_params() 227 if (asrc->lane[id].ratio_source == TEGRA186_ASRC_RATIO_SOURCE_SW) { in tegra186_asrc_out_hw_params() 230 asrc->lane[id].int_part); in tegra186_asrc_out_hw_params() 233 asrc->lane[id].frac_part); in tegra186_asrc_out_hw_params() [all …]
|
/linux/Documentation/devicetree/bindings/media/i2c/ |
H A D | st,st-mipid02.yaml | 17 CSI-2 first input port is a dual lane 800Mbps per lane whereas CSI-2 18 second input port is a single lane 800Mbps. Both ports support clock 19 and data lane polarity swap. First port also supports data lane swap. 65 Single-lane operation shall be <1> or <2> . 66 Dual-lane operation shall be <1 2> or <2 1> . 70 lane-polarities: 72 Any lane can be inverted or not. 91 Single-lane operation shall be <1> or <2> . 94 lane-polarities: 96 Any lane can be inverted or not.
|
/linux/drivers/phy/xilinx/ |
H A D | phy-zynqmp.c | 30 * Lane Registers 163 /* Lane 0/1/2/3 offset */ 174 /* Lane 0/1/2/3 Register */ 184 * struct xpsgtr_ssc - structure to hold SSC settings for a lane 198 * struct xpsgtr_phy - representation of a lane 200 * @instance: instance of the protocol type (such as the lane within a 202 * @lane: lane number 203 * @protocol: protocol in which the lane operates 211 u8 lane; member 294 + gtr_phy->lane * PHY_REG_OFFSET + reg; in xpsgtr_read_phy() [all …]
|
/linux/drivers/thunderbolt/ |
H A D | lc.c | 97 u32 ctrl, lane; in tb_lc_set_port_configured() local 111 /* Resolve correct lane */ in tb_lc_set_port_configured() 113 lane = TB_LC_SX_CTRL_L1C; in tb_lc_set_port_configured() 115 lane = TB_LC_SX_CTRL_L2C; in tb_lc_set_port_configured() 118 ctrl |= lane; in tb_lc_set_port_configured() 122 ctrl &= ~lane; in tb_lc_set_port_configured() 155 u32 ctrl, lane; in tb_lc_set_xdomain_configured() local 169 /* Resolve correct lane */ in tb_lc_set_xdomain_configured() 171 lane = TB_LC_SX_CTRL_L1D; in tb_lc_set_xdomain_configured() 173 lane = TB_LC_SX_CTRL_L2D; in tb_lc_set_xdomain_configured() [all …]
|
/linux/drivers/gpu/drm/bridge/analogix/ |
H A D | analogix_dp_core.c | 229 int lane, lane_count, retval; in analogix_dp_link_start() local 236 for (lane = 0; lane < lane_count; lane++) in analogix_dp_link_start() 237 dp->link_train.cr_loop[lane] = 0; in analogix_dp_link_start() 267 for (lane = 0; lane < lane_count; lane++) in analogix_dp_link_start() 268 dp->link_train.training_lane[lane] = in analogix_dp_link_start() 283 for (lane = 0; lane < lane_count; lane++) in analogix_dp_link_start() 284 buf[lane] = DP_TRAIN_PRE_EMPH_LEVEL_0 | in analogix_dp_link_start() 295 static unsigned char analogix_dp_get_lane_status(u8 link_status[2], int lane) in analogix_dp_get_lane_status() argument 297 int shift = (lane & 1) * 4; in analogix_dp_get_lane_status() 298 u8 link_value = link_status[lane >> 1]; in analogix_dp_get_lane_status() [all …]
|