summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Green <andy.green@linaro.org>2014-12-28 09:52:49 +0800
committerAndy Green <andy.green@linaro.org>2014-12-28 10:30:58 +0800
commit6d473dddd20b087da8aa41af114c96dc7ca08463 (patch)
treeb75c1cc631d4556eadec8b67e96447d6f088ad4f
parentd5e21d32350846be50607937ce2eae535c7ba2f6 (diff)
usb chipidea integrationmainline-basis-test-2014-12-28-1
Signed-off-by: Andy Green <andy.green@linaro.org>
-rw-r--r--arch/arm/boot/dts/msm8916-qrd-skui.dts2
-rw-r--r--arch/arm/boot/dts/msm8916.dtsi62
-rw-r--r--arch/arm/configs/msm8916-qrd_defconfig9
-rw-r--r--drivers/usb/phy/phy-msm-usb.c26
4 files changed, 51 insertions, 48 deletions
diff --git a/arch/arm/boot/dts/msm8916-qrd-skui.dts b/arch/arm/boot/dts/msm8916-qrd-skui.dts
index 8d7cc4f21700..5e0bd08af0f5 100644
--- a/arch/arm/boot/dts/msm8916-qrd-skui.dts
+++ b/arch/arm/boot/dts/msm8916-qrd-skui.dts
@@ -43,7 +43,7 @@
};
};
-&usb_otg {
+&gadget0 {
qcom,hsusb-otg-mode = <3>;
qcom,usbid-gpio = <&msm_gpio 110 0>;
pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/msm8916.dtsi b/arch/arm/boot/dts/msm8916.dtsi
index df9dbc92ca72..66203d77110f 100644
--- a/arch/arm/boot/dts/msm8916.dtsi
+++ b/arch/arm/boot/dts/msm8916.dtsi
@@ -958,45 +958,41 @@
qcom,ipi-ping;
};
- usb_otg: usb@78d9000 {
- compatible = "qcom,usb-otg-snps";
+ usbphy0:usb@78 {
+ compatible = "qcom,usb-otg-snps";
+ reg = <0x78d9000 0x400>;
+ interrupts = <0 134 0>;
+ dr_mode = "peripheral";
+ clocks = <&clock_gcc clk_gcc_usb_hs_ahb_clk>,
+ <&clock_gcc clk_gcc_usb_hs_system_clk>,
+ <&clock_rpm clk_xo_otg_clk>;
- reg = <0x78d9000 0x400>;
- interrupts = <0 134 0>,<0 140 0>;
- interrupt-names = "core_irq", "async_irq";
+// <&clock_gcc clk_gcc_usb2a_phy_sleep_clk>;
+
+ clock-names = "iface", "core", "phy";
- vddcx-supply = <&pm8916_s1_corner>;
- v1p8-supply = <&pm8916_l7>;
- v3p3-supply = <&pm8916_l13>;
- qcom,vdd-levels = <1 5 7>;
+ vddcx-supply = <&pm8916_s1_corner>;
+ v1p8-supply = <&pm8916_l7>;
+ v3p3-supply = <&pm8916_l13>;
+ qcom,vdd-levels = <1 5 7>;
- qcom,phy-init-sequence =
+ qcom,phy-init-sequence =
<0x44 0x80 0x6B 0x81 0x24 0x82 0x13 0x83 0xffffffff>;
- qcom,otg-phy-type = <2>;
- qcom,otg-mode = <1>;
- qcom,otg-control = <2>;
- qcom,dp-manual-pullup;
-
- qcom,msm-bus,name = "usb2";
- qcom,msm-bus,num-cases = <3>;
- qcom,msm-bus,num-paths = <1>;
- qcom,msm-bus,vectors-KBps =
- <87 512 0 0>,
- <87 512 80000 0>,
- <87 512 6000 6000>;
- clocks = <&clock_gcc clk_gcc_usb_hs_ahb_clk>,
- <&clock_gcc clk_gcc_usb_hs_system_clk>,
- <&clock_gcc clk_gcc_usb2a_phy_sleep_clk>,
- <&clock_rpm clk_bimc_usb_a_clk>,
- <&clock_rpm clk_snoc_usb_a_clk>,
- <&clock_rpm clk_pcnoc_usb_a_clk>,
- <&clock_rpm clk_xo_otg_clk>;
- clock-names = "iface", "core", "phy",
- "bimc_clk", "snoc_clk", "pcnoc_clk",
- "xo";
- qcom,bus-clk-rate = <400000000 200000000 100000000>;
+ qcom,otg-phy-type = <2>;
+ qcom,otg-mode = <1>;
+ qcom,otg-control = <2>;
+
+// resets = <&gcc GCC_USB2A_PHY_BCR>, <&gcc GCC_USB_HS_BCR>;
+// reset-names = "phy", "link";
};
+ gadget0: gadget@78 {
+ compatible = "qcom,ci-hdrc";
+ reg = <0x78d9000 0x400>;
+ dr_mode = "peripheral";
+ interrupts = <0 134 0>;
+ usb-phy = <&usbphy0>;
+ };
};
diff --git a/arch/arm/configs/msm8916-qrd_defconfig b/arch/arm/configs/msm8916-qrd_defconfig
index d6030862df26..146b18b96687 100644
--- a/arch/arm/configs/msm8916-qrd_defconfig
+++ b/arch/arm/configs/msm8916-qrd_defconfig
@@ -126,9 +126,15 @@ CONFIG_USB=y
CONFIG_USB_OTG=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_MSM=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_CHIPIDEA_DEBUG=y
CONFIG_USB_MSM_OTG=y
CONFIG_USB_GADGET=y
-CONFIG_USB_ETH=y
+CONFIG_USB_ETH=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_CDC_COMPOSITE=m
CONFIG_MMC=y
CONFIG_MMC_CLKGATE=y
CONFIG_MMC_BLOCK_MINORS=32
@@ -155,6 +161,7 @@ CONFIG_EXT4_FS_SECURITY=y
CONFIG_FUSE_FS=y
CONFIG_VFAT_FS=y
CONFIG_TMPFS=y
+CONFIG_CONFIGFS_FS=y
CONFIG_CRAMFS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ASCII=y
diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
index 674438b1d429..7bb6e0ef5fd3 100644
--- a/drivers/usb/phy/phy-msm-usb.c
+++ b/drivers/usb/phy/phy-msm-usb.c
@@ -45,6 +45,8 @@
#include <linux/regulator/consumer.h>
#include <linux/clk/msm-clk.h>
+#define DEBUG
+
#define MSM_USB_BASE (motg->regs)
#define DRIVER_NAME "msm_otg"
@@ -307,17 +309,14 @@ static int msm_otg_link_clk_reset(struct msm_otg *motg, bool assert)
static int msm_otg_phy_clk_reset(struct msm_otg *motg)
{
int ret = 0;
-#if 0
- if (motg->pdata->phy_clk_reset)
- ret = motg->pdata->phy_clk_reset(motg->phy_reset_clk);
- else if (motg->phy_rst)
- ret = reset_control_reset(motg->phy_rst);
+ u32 val;
- if (ret)
- dev_err(motg->phy.dev, "usb phy clk reset failed\n");
-#endif
+// if (motg->pdata->phy_clk_reset)
+ clk_reset(motg->phy_reset_clk, CLK_RESET_ASSERT);
+ clk_reset(motg->phy_reset_clk, CLK_RESET_DEASSERT);
- u32 val;
+// else if (motg->phy_rst)
+// ret = reset_control_reset(motg->phy_rst);
/*
* * AHB2AHB Bypass mode shouldn't be enable before doing
@@ -1328,6 +1327,7 @@ static irqreturn_t msm_otg_irq(int irq, void *data)
struct msm_otg *motg = data;
struct usb_phy *phy = &motg->phy;
u32 otgsc = 0;
+ pr_err("%s\n", __func__);
if (atomic_read(&motg->in_lpm)) {
disable_irq_nosync(irq);
@@ -1613,15 +1613,14 @@ static int msm_otg_probe(struct platform_device *pdev)
phy = &motg->phy;
phy->dev = &pdev->dev;
- if (motg->pdata->phy_clk_reset) {
- motg->phy_reset_clk = devm_clk_get(&pdev->dev,
- np ? "phy" : "usb_phy_clk");
+// if (motg->pdata->phy_clk_reset) {
+ motg->phy_reset_clk = devm_clk_get(&pdev->dev, "phy");
if (IS_ERR(motg->phy_reset_clk)) {
dev_err(&pdev->dev, "failed to get usb_phy_clk\n");
return PTR_ERR(motg->phy_reset_clk);
}
- }
+// }
motg->clk = devm_clk_get(&pdev->dev, np ? "core" : "usb_hs_clk");
if (IS_ERR(motg->clk)) {
@@ -1757,6 +1756,7 @@ static int msm_otg_probe(struct platform_device *pdev)
pm_runtime_set_active(&pdev->dev);
pm_runtime_enable(&pdev->dev);
+ dev_info(&pdev->dev, "initialized\n");
return 0;