···122122{123123 struct phy_mdm6600 *ddata = phy_get_drvdata(x);124124 struct gpio_desc *enable_gpio = ddata->ctrl_gpios[PHY_MDM6600_ENABLE];125125- int error;126125127126 if (!ddata->enabled)128127 return -ENODEV;129129-130130- error = pinctrl_pm_select_default_state(ddata->dev);131131- if (error)132132- dev_warn(ddata->dev, "%s: error with default_state: %i\n",133133- __func__, error);134128135129 gpiod_set_value_cansleep(enable_gpio, 1);136130···153159 }154160155161 gpiod_set_value_cansleep(enable_gpio, 0);156156-157157- error = pinctrl_pm_select_sleep_state(ddata->dev);158158- if (error)159159- dev_warn(ddata->dev, "%s: error with sleep_state: %i\n",160160- __func__, error);161162162163 return 0;163164}···445456{446457 struct gpio_desc *reset_gpio =447458 ddata->ctrl_gpios[PHY_MDM6600_RESET];459459+ int error;448460449461 ddata->enabled = false;450462 phy_mdm6600_cmd(ddata, PHY_MDM6600_CMD_BP_SHUTDOWN_REQ);···461471 } else {462472 dev_err(ddata->dev, "Timed out powering down\n");463473 }474474+475475+ /*476476+ * Keep reset gpio high with padconf internal pull-up resistor to477477+ * prevent modem from waking up during deeper SoC idle states. The478478+ * gpio bank lines can have glitches if not in the always-on wkup479479+ * domain.480480+ */481481+ error = pinctrl_pm_select_sleep_state(ddata->dev);482482+ if (error)483483+ dev_warn(ddata->dev, "%s: error with sleep_state: %i\n",484484+ __func__, error);464485}465486466487static void phy_mdm6600_deferred_power_on(struct work_struct *work)···572571 ddata->dev = &pdev->dev;573572 platform_set_drvdata(pdev, ddata);574573575575- /* Active state selected in phy_mdm6600_power_on() */576576- error = pinctrl_pm_select_sleep_state(ddata->dev);577577- if (error)578578- dev_warn(ddata->dev, "%s: error with sleep_state: %i\n",579579- __func__, error);580580-581574 error = phy_mdm6600_init_lines(ddata);582575 if (error)583576 return error;···622627 pm_runtime_put_autosuspend(ddata->dev);623628624629cleanup:625625- if (error < 0)630630+ if (error < 0) {626631 phy_mdm6600_device_power_off(ddata);627627- pm_runtime_disable(ddata->dev);628628- pm_runtime_dont_use_autosuspend(ddata->dev);632632+ pm_runtime_disable(ddata->dev);633633+ pm_runtime_dont_use_autosuspend(ddata->dev);634634+ }635635+629636 return error;630637}631638···636639 struct phy_mdm6600 *ddata = platform_get_drvdata(pdev);637640 struct gpio_desc *reset_gpio = ddata->ctrl_gpios[PHY_MDM6600_RESET];638641642642+ pm_runtime_get_noresume(ddata->dev);639643 pm_runtime_dont_use_autosuspend(ddata->dev);640644 pm_runtime_put_sync(ddata->dev);641645 pm_runtime_disable(ddata->dev);
+1-1
drivers/phy/qualcomm/phy-qcom-apq8064-sata.c
···152152 return ret;153153 }154154155155- /* SATA phy calibrated succesfully, power up to functional mode */155155+ /* SATA phy calibrated successfully, power up to functional mode */156156 writel_relaxed(0x3E, base + SATA_PHY_POW_DWN_CTRL1);157157 writel_relaxed(0x01, base + SATA_PHY_RX_IMCAL0);158158 writel_relaxed(0x01, base + SATA_PHY_TX_IMCAL0);
+2-3
drivers/phy/qualcomm/phy-qcom-m31.c
···126126 },127127};128128129129-struct m31_phy_regs m31_ipq5332_regs[] = {129129+static struct m31_phy_regs m31_ipq5332_regs[] = {130130 {131131 USB_PHY_CFG0,132132 UTMI_PHY_OVERRIDE_EN,···216216217217 ret = clk_prepare_enable(qphy->clk);218218 if (ret) {219219- if (qphy->vreg)220220- regulator_disable(qphy->vreg);219219+ regulator_disable(qphy->vreg);221220 dev_err(&phy->dev, "failed to enable cfg ahb clock, %d\n", ret);222221 return ret;223222 }
···22#33# Phy drivers for Realtek platforms44#55+66+if ARCH_REALTEK || COMPILE_TEST77+58config PHY_RTK_RTD_USB2PHY69 tristate "Realtek RTD USB2 PHY Transceiver Driver"710 depends on USB_SUPPORT···2825 The DHC (digital home center) RTD series SoCs used the Synopsys2926 DWC3 USB IP. This driver will do the PHY initialization3027 of the parameters.2828+2929+endif # ARCH_REALTEK || COMPILE_TEST