aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhangfd0709 <zhangfd0709@thundersoft.com>2018-08-19 15:55:18 +0800
committerSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2019-02-21 16:42:17 +0000
commit4f45efeb77df0d5b554985c9240653d675491883 (patch)
tree49d4a1197f65725baf4a46b1648acd2d4bd58fe7
parentf5cf6c4a4fb0815aefced905f628a0907cc7db00 (diff)
USB: enable USB type c and type a host
Enable USB type c and type a host [IssueID]:redmine45687 [Module]: kernel Change-Id: Ibec9856e49354eafad3762c26163ce0869e18bee
-rw-r--r--arch/arm64/boot/dts/qcom/sdm845-670-usb-common.dtsi8
-rw-r--r--drivers/usb/dwc3/dwc3-msm.c25
2 files changed, 32 insertions, 1 deletions
diff --git a/arch/arm64/boot/dts/qcom/sdm845-670-usb-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-670-usb-common.dtsi
index bf09b67c7cd82..ab8813d325631 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-670-usb-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-670-usb-common.dtsi
@@ -360,6 +360,10 @@
interrupt-names = "dp_hs_phy_irq", "pwr_event_irq",
"ss_phy_irq", "dm_hs_phy_irq";
+ pinctrl-names = "wcd_usbc_analog_en1_idle","wcd_usbc_analog_en1_active";
+ pinctrl-0 = <&wcd_usbc_analog_en1_idle>;
+ pinctrl-1 = <&wcd_usbc_analog_en1_active>;
+
USB3_GDSC-supply = <&usb30_sec_gdsc>;
qcom,dwc-usb3-msm-tx-fifo-size = <21288>;
qcom,use-pdc-interrupts;
@@ -397,6 +401,7 @@
reg = <0x0a800000 0xcd00>;
interrupts = <0 138 0>;
usb-phy = <&qusb_phy1>, <&usb_qmp_phy>;
+ dr_mode = "host";
tx-fifo-resize;
linux,sysdev_is_parent;
snps,disable-clk-gating;
@@ -429,7 +434,8 @@
0x254 /* QUSB2PHY_TEST1 */
0x198 /* PLL_BIAS_CONTROL_2 */
0x228 /* QUSB2PHY_SQ_CTRL1 */
- 0x22c>; /* QUSB2PHY_SQ_CTRL2 */
+ 0x22c /* QUSB2PHY_SQ_CTRL2 */
+ 0x27c>; /* QUSB2PHY_DEBUG_CTRL1 */
qcom,qusb-phy-init-seq =
/* <value reg_offset> */
diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
index bf1baf6f344fc..d6ba3e159b706 100644
--- a/drivers/usb/dwc3/dwc3-msm.c
+++ b/drivers/usb/dwc3/dwc3-msm.c
@@ -47,6 +47,7 @@
#include <linux/extcon.h>
#include <linux/reset.h>
#include <linux/clk/qcom.h>
+#include <linux/gpio.h>
#include "power.h"
#include "core.h"
@@ -3322,6 +3323,8 @@ static int dwc3_msm_probe(struct platform_device *pdev)
{
struct device_node *node = pdev->dev.of_node, *dwc3_node;
struct device *dev = &pdev->dev;
+ struct pinctrl *pinctrl;
+ struct pinctrl_state *pinctrl_state;
union power_supply_propval pval = {0};
struct dwc3_msm *mdwc;
struct dwc3 *dwc;
@@ -3502,6 +3505,28 @@ static int dwc3_msm_probe(struct platform_device *pdev)
}
}
+ pinctrl = devm_pinctrl_get(&pdev->dev);
+ if(IS_ERR(pinctrl)) {
+ dev_err(&pdev->dev, "pinctrl get failed.\n");
+
+ } else {
+ pinctrl_state = pinctrl_lookup_state(pinctrl, "wcd_usbc_analog_en1_active");
+ if(IS_ERR(pinctrl_state)) {
+ dev_err(&pdev->dev, "pinctrl get state failed.\n");
+
+ } else {
+ ret = pinctrl_select_state(pinctrl, pinctrl_state);
+ if(ret) {
+ dev_err(&pdev->dev, "%s: disable pinctrl failed with %d\n",
+ __func__, ret);
+
+ }
+ printk("%s, pinctrl_state:%d\n", __func__, ret);
+
+ }
+
+ }
+
ext_hub_reset_gpio = of_get_named_gpio(node,
"qcom,ext-hub-reset-gpio", 0);