Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'phy-fixes-7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy

Pull phy fixes from Vinod Koul:

- Qualcomm PCS table fix for ufs phy

- TI device node reference fix

- Common prop kconfig fix

- lynx CDR lock workaround for lanes disabled

- usb disconnect function fix of k1 driver

* tag 'phy-fixes-7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy:
phy: qcom: qmp-ufs: Fix SM8650 PCS table for Gear 4
phy: ti: j721e-wiz: Fix device node reference leak in wiz_get_lane_phy_types()
phy: k1-usb: add disconnect function support
phy: lynx-28g: skip CDR lock workaround for lanes disabled in the device tree
phy: make PHY_COMMON_PROPS Kconfig symbol conditionally user-selectable

+21 -5
+2 -3
drivers/phy/Kconfig
··· 6 6 menu "PHY Subsystem" 7 7 8 8 config PHY_COMMON_PROPS 9 - bool 9 + bool "PHY common properties" if KUNIT_ALL_TESTS 10 10 help 11 11 This parses properties common between generic PHYs and Ethernet PHYs. 12 12 ··· 16 16 17 17 config PHY_COMMON_PROPS_TEST 18 18 tristate "KUnit tests for PHY common props" if !KUNIT_ALL_TESTS 19 - select PHY_COMMON_PROPS 20 - depends on KUNIT 19 + depends on KUNIT && PHY_COMMON_PROPS 21 20 default KUNIT_ALL_TESTS 22 21 help 23 22 This builds KUnit tests for the PHY common property API.
+2
drivers/phy/freescale/phy-fsl-lynx-28g.c
··· 1069 1069 1070 1070 for (i = 0; i < LYNX_28G_NUM_LANE; i++) { 1071 1071 lane = &priv->lane[i]; 1072 + if (!lane->phy) 1073 + continue; 1072 1074 1073 1075 mutex_lock(&lane->phy->mutex); 1074 1076
+1 -2
drivers/phy/qualcomm/phy-qcom-qmp-ufs.c
··· 990 990 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_MULTI_LANE_CTRL1, 0x02), 991 991 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_TX_MID_TERM_CTRL1, 0x43), 992 992 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_PCS_CTRL1, 0xc1), 993 + QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_PLL_CNTL, 0x33), 993 994 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_TX_LARGE_AMP_DRV_LVL, 0x0f), 994 995 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_RX_SIGDET_CTRL2, 0x68), 995 996 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_TX_POST_EMP_LVL_S4, 0x0e), ··· 1000 999 }; 1001 1000 1002 1001 static const struct qmp_phy_init_tbl sm8650_ufsphy_g4_pcs[] = { 1003 - QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_PLL_CNTL, 0x13), 1004 1002 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_TX_HSGEAR_CAPABILITY, 0x04), 1005 1003 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_RX_HSGEAR_CAPABILITY, 0x04), 1006 1004 }; 1007 1005 1008 1006 static const struct qmp_phy_init_tbl sm8650_ufsphy_g5_pcs[] = { 1009 - QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_PLL_CNTL, 0x33), 1010 1007 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_TX_HSGEAR_CAPABILITY, 0x05), 1011 1008 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_RX_HSGEAR_CAPABILITY, 0x05), 1012 1009 QMP_PHY_INIT_CFG(QPHY_V6_PCS_UFS_RX_HS_G5_SYNC_LENGTH_CAPABILITY, 0x4d),
+14
drivers/phy/spacemit/phy-k1-usb2.c
··· 48 48 #define PHY_CLK_HSTXP_EN BIT(3) /* clock hstxp enable */ 49 49 #define PHY_HSTXP_MODE BIT(4) /* 0: force en_txp to be 1; 1: no force */ 50 50 51 + #define PHY_K1_HS_HOST_DISC 0x40 52 + #define PHY_K1_HS_HOST_DISC_CLR BIT(0) 53 + 51 54 #define PHY_PLL_DIV_CFG 0x98 52 55 #define PHY_FDIV_FRACT_8_15 GENMASK(7, 0) 53 56 #define PHY_FDIV_FRACT_16_19 GENMASK(11, 8) ··· 145 142 return 0; 146 143 } 147 144 145 + static int spacemit_usb2phy_disconnect(struct phy *phy, int port) 146 + { 147 + struct spacemit_usb2phy *sphy = phy_get_drvdata(phy); 148 + 149 + regmap_update_bits(sphy->regmap_base, PHY_K1_HS_HOST_DISC, 150 + PHY_K1_HS_HOST_DISC_CLR, PHY_K1_HS_HOST_DISC_CLR); 151 + 152 + return 0; 153 + } 154 + 148 155 static const struct phy_ops spacemit_usb2phy_ops = { 149 156 .init = spacemit_usb2phy_init, 150 157 .exit = spacemit_usb2phy_exit, 158 + .disconnect = spacemit_usb2phy_disconnect, 151 159 .owner = THIS_MODULE, 152 160 }; 153 161
+2
drivers/phy/ti/phy-j721e-wiz.c
··· 1425 1425 dev_err(dev, 1426 1426 "%s: Reading \"reg\" from \"%s\" failed: %d\n", 1427 1427 __func__, subnode->name, ret); 1428 + of_node_put(serdes); 1428 1429 return ret; 1429 1430 } 1430 1431 of_property_read_u32(subnode, "cdns,num-lanes", &num_lanes); ··· 1440 1439 } 1441 1440 } 1442 1441 1442 + of_node_put(serdes); 1443 1443 return 0; 1444 1444 } 1445 1445