Loading Documentation/devicetree/bindings/usb/msm-phy.txt +2 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,8 @@ Optional properties: - qcom,core-voltage-level: This property must be a list of three integer values (no, min, max) where each value represents either a voltage in microvolts or a value corresponding to voltage corner. - "pcs_clamp_enable_reg" : Clamps the phy data inputs and enables USB3 autonomous mode. Example: ssphy0: ssphy@f9b38000 { Loading drivers/usb/phy/phy-msm-ssusb-qmp.c +14 −1 Original line number Diff line number Diff line /* * Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * Copyright (c) 2013-2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -112,6 +112,7 @@ struct msm_ssphy_qmp { struct usb_phy phy; void __iomem *base; void __iomem *vls_clamp_reg; void __iomem *pcs_clamp_enable_reg; void __iomem *tcsr_usb3_dp_phymode; struct regulator *vdd; Loading Loading @@ -187,6 +188,8 @@ static void msm_ssusb_qmp_clamp_enable(struct msm_ssphy_qmp *phy, bool val) case USB_PHY_TYPE_USB3_OR_DP: case USB_PHY_TYPE_USB3: writel_relaxed(!!val, phy->vls_clamp_reg); if (phy->pcs_clamp_enable_reg) writel_relaxed(!val, phy->pcs_clamp_enable_reg); break; default: break; Loading Loading @@ -891,6 +894,16 @@ static int msm_ssphy_qmp_probe(struct platform_device *pdev) } } res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pcs_clamp_enable_reg"); if (res) { phy->pcs_clamp_enable_reg = devm_ioremap_resource(dev, res); if (IS_ERR(phy->pcs_clamp_enable_reg)) { dev_err(dev, "err getting pcs_clamp_enable_reg address.\n"); return PTR_ERR(phy->pcs_clamp_enable_reg); } } res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "tcsr_usb3_dp_phymode"); if (res) { Loading Loading
Documentation/devicetree/bindings/usb/msm-phy.txt +2 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,8 @@ Optional properties: - qcom,core-voltage-level: This property must be a list of three integer values (no, min, max) where each value represents either a voltage in microvolts or a value corresponding to voltage corner. - "pcs_clamp_enable_reg" : Clamps the phy data inputs and enables USB3 autonomous mode. Example: ssphy0: ssphy@f9b38000 { Loading
drivers/usb/phy/phy-msm-ssusb-qmp.c +14 −1 Original line number Diff line number Diff line /* * Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * Copyright (c) 2013-2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -112,6 +112,7 @@ struct msm_ssphy_qmp { struct usb_phy phy; void __iomem *base; void __iomem *vls_clamp_reg; void __iomem *pcs_clamp_enable_reg; void __iomem *tcsr_usb3_dp_phymode; struct regulator *vdd; Loading Loading @@ -187,6 +188,8 @@ static void msm_ssusb_qmp_clamp_enable(struct msm_ssphy_qmp *phy, bool val) case USB_PHY_TYPE_USB3_OR_DP: case USB_PHY_TYPE_USB3: writel_relaxed(!!val, phy->vls_clamp_reg); if (phy->pcs_clamp_enable_reg) writel_relaxed(!val, phy->pcs_clamp_enable_reg); break; default: break; Loading Loading @@ -891,6 +894,16 @@ static int msm_ssphy_qmp_probe(struct platform_device *pdev) } } res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pcs_clamp_enable_reg"); if (res) { phy->pcs_clamp_enable_reg = devm_ioremap_resource(dev, res); if (IS_ERR(phy->pcs_clamp_enable_reg)) { dev_err(dev, "err getting pcs_clamp_enable_reg address.\n"); return PTR_ERR(phy->pcs_clamp_enable_reg); } } res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "tcsr_usb3_dp_phymode"); if (res) { Loading