phy-zynqmp.c (762f99f4f3cb41a775b5157dd761217beba65873) | phy-zynqmp.c (37291f60d0822f191748c2a54ce63b0bc669020f) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * phy-zynqmp.c - PHY driver for Xilinx ZynqMP GT. 4 * 5 * Copyright (C) 2018-2020 Xilinx Inc. 6 * 7 * Author: Anurag Kumar Vulisha <anuragku@xilinx.com> 8 * Author: Subbaraya Sundeep <sundeep.lkml@gmail.com> --- 120 unchanged lines hidden (view full) --- 129#define TM_CMN_RST_MASK 0x3 130 131/* Bus width parameters */ 132#define TX_PROT_BUS_WIDTH 0x10040 133#define RX_PROT_BUS_WIDTH 0x10044 134#define PROT_BUS_WIDTH_10 0x0 135#define PROT_BUS_WIDTH_20 0x1 136#define PROT_BUS_WIDTH_40 0x2 | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * phy-zynqmp.c - PHY driver for Xilinx ZynqMP GT. 4 * 5 * Copyright (C) 2018-2020 Xilinx Inc. 6 * 7 * Author: Anurag Kumar Vulisha <anuragku@xilinx.com> 8 * Author: Subbaraya Sundeep <sundeep.lkml@gmail.com> --- 120 unchanged lines hidden (view full) --- 129#define TM_CMN_RST_MASK 0x3 130 131/* Bus width parameters */ 132#define TX_PROT_BUS_WIDTH 0x10040 133#define RX_PROT_BUS_WIDTH 0x10044 134#define PROT_BUS_WIDTH_10 0x0 135#define PROT_BUS_WIDTH_20 0x1 136#define PROT_BUS_WIDTH_40 0x2 |
137#define PROT_BUS_WIDTH_SHIFT 2 | 137#define PROT_BUS_WIDTH_SHIFT(n) ((n) * 2) 138#define PROT_BUS_WIDTH_MASK(n) GENMASK((n) * 2 + 1, (n) * 2) |
138 139/* Number of GT lanes */ 140#define NUM_LANES 4 141 142/* SIOU SATA control register */ 143#define SATA_CONTROL_OFFSET 0x0100 144 145/* Total number of controllers */ --- 294 unchanged lines hidden (view full) --- 440 441 writel(gtr_phy->lane, gtr_dev->siou + SATA_CONTROL_OFFSET); 442} 443 444/* SGMII-specific initialization. */ 445static void xpsgtr_phy_init_sgmii(struct xpsgtr_phy *gtr_phy) 446{ 447 struct xpsgtr_dev *gtr_dev = gtr_phy->dev; | 139 140/* Number of GT lanes */ 141#define NUM_LANES 4 142 143/* SIOU SATA control register */ 144#define SATA_CONTROL_OFFSET 0x0100 145 146/* Total number of controllers */ --- 294 unchanged lines hidden (view full) --- 441 442 writel(gtr_phy->lane, gtr_dev->siou + SATA_CONTROL_OFFSET); 443} 444 445/* SGMII-specific initialization. */ 446static void xpsgtr_phy_init_sgmii(struct xpsgtr_phy *gtr_phy) 447{ 448 struct xpsgtr_dev *gtr_dev = gtr_phy->dev; |
449 u32 mask = PROT_BUS_WIDTH_MASK(gtr_phy->lane); 450 u32 val = PROT_BUS_WIDTH_10 << PROT_BUS_WIDTH_SHIFT(gtr_phy->lane); |
|
448 449 /* Set SGMII protocol TX and RX bus width to 10 bits. */ | 451 452 /* Set SGMII protocol TX and RX bus width to 10 bits. */ |
450 xpsgtr_write(gtr_dev, TX_PROT_BUS_WIDTH, 451 PROT_BUS_WIDTH_10 << (gtr_phy->lane * PROT_BUS_WIDTH_SHIFT)); 452 xpsgtr_write(gtr_dev, RX_PROT_BUS_WIDTH, 453 PROT_BUS_WIDTH_10 << (gtr_phy->lane * PROT_BUS_WIDTH_SHIFT)); | 453 xpsgtr_clr_set(gtr_dev, TX_PROT_BUS_WIDTH, mask, val); 454 xpsgtr_clr_set(gtr_dev, RX_PROT_BUS_WIDTH, mask, val); |
454 455 xpsgtr_bypass_scrambler_8b10b(gtr_phy); 456} 457 458/* Configure TX de-emphasis and margining for DP. */ 459static void xpsgtr_phy_configure_dp(struct xpsgtr_phy *gtr_phy, unsigned int pre, 460 unsigned int voltage) 461{ --- 576 unchanged lines hidden --- | 455 456 xpsgtr_bypass_scrambler_8b10b(gtr_phy); 457} 458 459/* Configure TX de-emphasis and margining for DP. */ 460static void xpsgtr_phy_configure_dp(struct xpsgtr_phy *gtr_phy, unsigned int pre, 461 unsigned int voltage) 462{ --- 576 unchanged lines hidden --- |