Loading Documentation/devicetree/bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ examples: phy@84000 { compatible = "qcom,ipq6018-qmp-pcie-phy"; reg = <0x0 0x00084000 0x0 0x1000>; reg = <0x00084000 0x1000>; clocks = <&gcc GCC_PCIE0_AUX_CLK>, <&gcc GCC_PCIE0_AHB_CLK>, Loading drivers/phy/motorola/phy-mapphone-mdm6600.c +18 −20 Original line number Diff line number Diff line Loading @@ -122,16 +122,10 @@ static int phy_mdm6600_power_on(struct phy *x) { struct phy_mdm6600 *ddata = phy_get_drvdata(x); struct gpio_desc *enable_gpio = ddata->ctrl_gpios[PHY_MDM6600_ENABLE]; int error; if (!ddata->enabled) return -ENODEV; error = pinctrl_pm_select_default_state(ddata->dev); if (error) dev_warn(ddata->dev, "%s: error with default_state: %i\n", __func__, error); gpiod_set_value_cansleep(enable_gpio, 1); /* Allow aggressive PM for USB, it's only needed for n_gsm port */ Loading Loading @@ -160,11 +154,6 @@ static int phy_mdm6600_power_off(struct phy *x) gpiod_set_value_cansleep(enable_gpio, 0); error = pinctrl_pm_select_sleep_state(ddata->dev); if (error) dev_warn(ddata->dev, "%s: error with sleep_state: %i\n", __func__, error); return 0; } Loading Loading @@ -456,6 +445,7 @@ static void phy_mdm6600_device_power_off(struct phy_mdm6600 *ddata) { struct gpio_desc *reset_gpio = ddata->ctrl_gpios[PHY_MDM6600_RESET]; int error; ddata->enabled = false; phy_mdm6600_cmd(ddata, PHY_MDM6600_CMD_BP_SHUTDOWN_REQ); Loading @@ -471,6 +461,17 @@ static void phy_mdm6600_device_power_off(struct phy_mdm6600 *ddata) } else { dev_err(ddata->dev, "Timed out powering down\n"); } /* * Keep reset gpio high with padconf internal pull-up resistor to * prevent modem from waking up during deeper SoC idle states. The * gpio bank lines can have glitches if not in the always-on wkup * domain. */ error = pinctrl_pm_select_sleep_state(ddata->dev); if (error) dev_warn(ddata->dev, "%s: error with sleep_state: %i\n", __func__, error); } static void phy_mdm6600_deferred_power_on(struct work_struct *work) Loading Loading @@ -571,12 +572,6 @@ static int phy_mdm6600_probe(struct platform_device *pdev) ddata->dev = &pdev->dev; platform_set_drvdata(pdev, ddata); /* Active state selected in phy_mdm6600_power_on() */ error = pinctrl_pm_select_sleep_state(ddata->dev); if (error) dev_warn(ddata->dev, "%s: error with sleep_state: %i\n", __func__, error); error = phy_mdm6600_init_lines(ddata); if (error) return error; Loading Loading @@ -627,10 +622,12 @@ static int phy_mdm6600_probe(struct platform_device *pdev) pm_runtime_put_autosuspend(ddata->dev); cleanup: if (error < 0) if (error < 0) { phy_mdm6600_device_power_off(ddata); pm_runtime_disable(ddata->dev); pm_runtime_dont_use_autosuspend(ddata->dev); } return error; } Loading @@ -639,6 +636,7 @@ static void phy_mdm6600_remove(struct platform_device *pdev) struct phy_mdm6600 *ddata = platform_get_drvdata(pdev); struct gpio_desc *reset_gpio = ddata->ctrl_gpios[PHY_MDM6600_RESET]; pm_runtime_get_noresume(ddata->dev); pm_runtime_dont_use_autosuspend(ddata->dev); pm_runtime_put_sync(ddata->dev); pm_runtime_disable(ddata->dev); Loading drivers/phy/qualcomm/phy-qcom-apq8064-sata.c +1 −1 Original line number Diff line number Diff line Loading @@ -152,7 +152,7 @@ static int qcom_apq8064_sata_phy_init(struct phy *generic_phy) return ret; } /* SATA phy calibrated succesfully, power up to functional mode */ /* SATA phy calibrated successfully, power up to functional mode */ writel_relaxed(0x3E, base + SATA_PHY_POW_DWN_CTRL1); writel_relaxed(0x01, base + SATA_PHY_RX_IMCAL0); writel_relaxed(0x01, base + SATA_PHY_TX_IMCAL0); Loading drivers/phy/qualcomm/phy-qcom-m31.c +2 −3 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ static const struct m31_phy_regs m31_ipq5018_regs[] = { }, }; struct m31_phy_regs m31_ipq5332_regs[] = { static struct m31_phy_regs m31_ipq5332_regs[] = { { USB_PHY_CFG0, UTMI_PHY_OVERRIDE_EN, Loading Loading @@ -216,7 +216,6 @@ static int m31usb_phy_init(struct phy *phy) ret = clk_prepare_enable(qphy->clk); if (ret) { if (qphy->vreg) regulator_disable(qphy->vreg); dev_err(&phy->dev, "failed to enable cfg ahb clock, %d\n", ret); return ret; Loading drivers/phy/qualcomm/phy-qcom-qmp-combo.c +5 −1 Original line number Diff line number Diff line Loading @@ -859,10 +859,10 @@ static const struct qmp_phy_init_tbl sm8550_usb3_pcs_tbl[] = { QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_PCS_TX_RX_CONFIG, 0x0c), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_EQ_CONFIG1, 0x4b), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_EQ_CONFIG5, 0x10), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_POWER_STATE_CONFIG1, 0x68), }; static const struct qmp_phy_init_tbl sm8550_usb3_pcs_usb_tbl[] = { QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_POWER_STATE_CONFIG1, 0x68), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_LFPS_DET_HIGH_COUNT_VAL, 0xf8), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_RXEQTRAINING_DFE_TIME_S2, 0x07), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_RCVR_DTCT_DLY_U3_L, 0x40), Loading Loading @@ -2555,6 +2555,7 @@ static int qmp_combo_usb_power_on(struct phy *phy) void __iomem *tx2 = qmp->tx2; void __iomem *rx2 = qmp->rx2; void __iomem *pcs = qmp->pcs; void __iomem *pcs_usb = qmp->pcs_usb; void __iomem *status; unsigned int val; int ret; Loading @@ -2576,6 +2577,9 @@ static int qmp_combo_usb_power_on(struct phy *phy) qmp_combo_configure(pcs, cfg->pcs_tbl, cfg->pcs_tbl_num); if (pcs_usb) qmp_combo_configure(pcs_usb, cfg->pcs_usb_tbl, cfg->pcs_usb_tbl_num); if (cfg->has_pwrdn_delay) usleep_range(10, 20); Loading Loading
Documentation/devicetree/bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ examples: phy@84000 { compatible = "qcom,ipq6018-qmp-pcie-phy"; reg = <0x0 0x00084000 0x0 0x1000>; reg = <0x00084000 0x1000>; clocks = <&gcc GCC_PCIE0_AUX_CLK>, <&gcc GCC_PCIE0_AHB_CLK>, Loading
drivers/phy/motorola/phy-mapphone-mdm6600.c +18 −20 Original line number Diff line number Diff line Loading @@ -122,16 +122,10 @@ static int phy_mdm6600_power_on(struct phy *x) { struct phy_mdm6600 *ddata = phy_get_drvdata(x); struct gpio_desc *enable_gpio = ddata->ctrl_gpios[PHY_MDM6600_ENABLE]; int error; if (!ddata->enabled) return -ENODEV; error = pinctrl_pm_select_default_state(ddata->dev); if (error) dev_warn(ddata->dev, "%s: error with default_state: %i\n", __func__, error); gpiod_set_value_cansleep(enable_gpio, 1); /* Allow aggressive PM for USB, it's only needed for n_gsm port */ Loading Loading @@ -160,11 +154,6 @@ static int phy_mdm6600_power_off(struct phy *x) gpiod_set_value_cansleep(enable_gpio, 0); error = pinctrl_pm_select_sleep_state(ddata->dev); if (error) dev_warn(ddata->dev, "%s: error with sleep_state: %i\n", __func__, error); return 0; } Loading Loading @@ -456,6 +445,7 @@ static void phy_mdm6600_device_power_off(struct phy_mdm6600 *ddata) { struct gpio_desc *reset_gpio = ddata->ctrl_gpios[PHY_MDM6600_RESET]; int error; ddata->enabled = false; phy_mdm6600_cmd(ddata, PHY_MDM6600_CMD_BP_SHUTDOWN_REQ); Loading @@ -471,6 +461,17 @@ static void phy_mdm6600_device_power_off(struct phy_mdm6600 *ddata) } else { dev_err(ddata->dev, "Timed out powering down\n"); } /* * Keep reset gpio high with padconf internal pull-up resistor to * prevent modem from waking up during deeper SoC idle states. The * gpio bank lines can have glitches if not in the always-on wkup * domain. */ error = pinctrl_pm_select_sleep_state(ddata->dev); if (error) dev_warn(ddata->dev, "%s: error with sleep_state: %i\n", __func__, error); } static void phy_mdm6600_deferred_power_on(struct work_struct *work) Loading Loading @@ -571,12 +572,6 @@ static int phy_mdm6600_probe(struct platform_device *pdev) ddata->dev = &pdev->dev; platform_set_drvdata(pdev, ddata); /* Active state selected in phy_mdm6600_power_on() */ error = pinctrl_pm_select_sleep_state(ddata->dev); if (error) dev_warn(ddata->dev, "%s: error with sleep_state: %i\n", __func__, error); error = phy_mdm6600_init_lines(ddata); if (error) return error; Loading Loading @@ -627,10 +622,12 @@ static int phy_mdm6600_probe(struct platform_device *pdev) pm_runtime_put_autosuspend(ddata->dev); cleanup: if (error < 0) if (error < 0) { phy_mdm6600_device_power_off(ddata); pm_runtime_disable(ddata->dev); pm_runtime_dont_use_autosuspend(ddata->dev); } return error; } Loading @@ -639,6 +636,7 @@ static void phy_mdm6600_remove(struct platform_device *pdev) struct phy_mdm6600 *ddata = platform_get_drvdata(pdev); struct gpio_desc *reset_gpio = ddata->ctrl_gpios[PHY_MDM6600_RESET]; pm_runtime_get_noresume(ddata->dev); pm_runtime_dont_use_autosuspend(ddata->dev); pm_runtime_put_sync(ddata->dev); pm_runtime_disable(ddata->dev); Loading
drivers/phy/qualcomm/phy-qcom-apq8064-sata.c +1 −1 Original line number Diff line number Diff line Loading @@ -152,7 +152,7 @@ static int qcom_apq8064_sata_phy_init(struct phy *generic_phy) return ret; } /* SATA phy calibrated succesfully, power up to functional mode */ /* SATA phy calibrated successfully, power up to functional mode */ writel_relaxed(0x3E, base + SATA_PHY_POW_DWN_CTRL1); writel_relaxed(0x01, base + SATA_PHY_RX_IMCAL0); writel_relaxed(0x01, base + SATA_PHY_TX_IMCAL0); Loading
drivers/phy/qualcomm/phy-qcom-m31.c +2 −3 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ static const struct m31_phy_regs m31_ipq5018_regs[] = { }, }; struct m31_phy_regs m31_ipq5332_regs[] = { static struct m31_phy_regs m31_ipq5332_regs[] = { { USB_PHY_CFG0, UTMI_PHY_OVERRIDE_EN, Loading Loading @@ -216,7 +216,6 @@ static int m31usb_phy_init(struct phy *phy) ret = clk_prepare_enable(qphy->clk); if (ret) { if (qphy->vreg) regulator_disable(qphy->vreg); dev_err(&phy->dev, "failed to enable cfg ahb clock, %d\n", ret); return ret; Loading
drivers/phy/qualcomm/phy-qcom-qmp-combo.c +5 −1 Original line number Diff line number Diff line Loading @@ -859,10 +859,10 @@ static const struct qmp_phy_init_tbl sm8550_usb3_pcs_tbl[] = { QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_PCS_TX_RX_CONFIG, 0x0c), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_EQ_CONFIG1, 0x4b), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_EQ_CONFIG5, 0x10), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_POWER_STATE_CONFIG1, 0x68), }; static const struct qmp_phy_init_tbl sm8550_usb3_pcs_usb_tbl[] = { QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_POWER_STATE_CONFIG1, 0x68), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_LFPS_DET_HIGH_COUNT_VAL, 0xf8), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_RXEQTRAINING_DFE_TIME_S2, 0x07), QMP_PHY_INIT_CFG(QPHY_USB_V6_PCS_USB3_RCVR_DTCT_DLY_U3_L, 0x40), Loading Loading @@ -2555,6 +2555,7 @@ static int qmp_combo_usb_power_on(struct phy *phy) void __iomem *tx2 = qmp->tx2; void __iomem *rx2 = qmp->rx2; void __iomem *pcs = qmp->pcs; void __iomem *pcs_usb = qmp->pcs_usb; void __iomem *status; unsigned int val; int ret; Loading @@ -2576,6 +2577,9 @@ static int qmp_combo_usb_power_on(struct phy *phy) qmp_combo_configure(pcs, cfg->pcs_tbl, cfg->pcs_tbl_num); if (pcs_usb) qmp_combo_configure(pcs_usb, cfg->pcs_usb_tbl, cfg->pcs_usb_tbl_num); if (cfg->has_pwrdn_delay) usleep_range(10, 20); Loading