Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-27 Thread Felipe Balbi
On Wed, Aug 14, 2013 at 12:28:17PM +0300, Ivan T. Ivanov wrote:
 
 Hi, 
 
 On Mon, 2013-08-12 at 13:24 -0500, Felipe Balbi wrote: 
  On Fri, Aug 09, 2013 at 07:09:18PM +0300, Ivan T. Ivanov wrote:
   Hi, 
   
   On Fri, 2013-08-09 at 16:23 +0300, Felipe Balbi wrote:
Hi,

On Tue, Aug 06, 2013 at 02:53:11PM +0300, Ivan T. Ivanov wrote:
 diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
 new file mode 100644
 index 000..e509abc
 --- /dev/null
 +++ b/drivers/usb/dwc3/dwc3-msm.c
 @@ -0,0 +1,175 @@
 +#undef CONFIG_REGULATOR

why ??

   
   1. This shows that driver is still not fully tested 
  Regulators support is still missing in the MSM
   2. Helps me to load driver successfully. 
  
  Then remove all the regulator-related code from this.
 
 I would like to keep them. I will just remove #undef line. 
 Code will continue to build fine. And once regulators drivers 
 are upstreamed this driver 'will not' require further
 modifications.

fair enough.

-- 
balbi


signature.asc
Description: Digital signature


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-14 Thread Ivan T. Ivanov

Hi, 

On Mon, 2013-08-12 at 13:24 -0500, Felipe Balbi wrote: 
 On Fri, Aug 09, 2013 at 07:09:18PM +0300, Ivan T. Ivanov wrote:
  Hi, 
  
  On Fri, 2013-08-09 at 16:23 +0300, Felipe Balbi wrote:
   Hi,
   
   On Tue, Aug 06, 2013 at 02:53:11PM +0300, Ivan T. Ivanov wrote:
diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
new file mode 100644
index 000..e509abc
--- /dev/null
+++ b/drivers/usb/dwc3/dwc3-msm.c
@@ -0,0 +1,175 @@
+#undef CONFIG_REGULATOR
   
   why ??
   
  
  1. This shows that driver is still not fully tested 
 Regulators support is still missing in the MSM
  2. Helps me to load driver successfully. 
 
 Then remove all the regulator-related code from this.

I would like to keep them. I will just remove #undef line. 
Code will continue to build fine. And once regulators drivers 
are upstreamed this driver 'will not' require further
modifications.

 
+   clk_prepare_enable(mdwc-core_clk);
+   clk_prepare_enable(mdwc-iface_clk);
+   clk_prepare_enable(mdwc-sleep_clk);
+   clk_prepare_enable(mdwc-utmi_clk);
   
   do you really need to enable your clocks here ? Why don't you enable
   them on runtime_resume and disable on runtime_suspend ?
  
  I will like to make it working first and then will improve
  power management.
 
 alright, makes sense.
 
+   res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+   tcsr = devm_ioremap_resource(pdev-dev, res);
+   if (!tcsr) {
+   dev_dbg(pdev-dev, tcsr ioremap failed\n);
   
   no need to ioremap, also you're likely leaking clocks and regulators
   enabled here.
   
   Make sure to have something like:
   
 if (!tcsr)
 goto err_disable_clocks;
   
 /* TODO This has to be revised */\
   
 [...]
   
  
  Sure.
 
 just to make it clear, I meant to say that you don't need to print the
 error message :-)

Yes. I got it.

Regards,
Ivan


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-14 Thread Ivan T. Ivanov
Hi, 

On Fri, 2013-08-09 at 16:23 +0300, Felipe Balbi wrote:

snip

 
  +   /*
  +* DWC3 Core requires its CORE CLK (aka master / bus clk) to
  +* run at 125Mhz in SSUSB mode and 60MHZ for HSUSB mode.
  +*/
  +   clk_set_rate(mdwc-core_clk, 12500);
 
 if this is dwc3's core clock, why don't we teach dwc3.ko about this
 requirement ? Just make sure to have it optional, since x86 and OMAP
 wouldn't need direct fiddling with the clocks.

I believe this is Qualcomm specific requirement. Something is modified
inside DWC in respect of the clocks. I will like to keep this here, in
the glue layer driver.

Regards,
Ivan


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-12 Thread Felipe Balbi
On Fri, Aug 09, 2013 at 07:09:18PM +0300, Ivan T. Ivanov wrote:
 Hi, 
 
 On Fri, 2013-08-09 at 16:23 +0300, Felipe Balbi wrote:
  Hi,
  
  On Tue, Aug 06, 2013 at 02:53:11PM +0300, Ivan T. Ivanov wrote:
   diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
   new file mode 100644
   index 000..e509abc
   --- /dev/null
   +++ b/drivers/usb/dwc3/dwc3-msm.c
   @@ -0,0 +1,175 @@
   +#undef CONFIG_REGULATOR
  
  why ??
  
 
 1. This shows that driver is still not fully tested 
Regulators support is still missing in the MSM
 2. Helps me to load driver successfully. 

Then remove all the regulator-related code from this.

   + clk_prepare_enable(mdwc-core_clk);
   + clk_prepare_enable(mdwc-iface_clk);
   + clk_prepare_enable(mdwc-sleep_clk);
   + clk_prepare_enable(mdwc-utmi_clk);
  
  do you really need to enable your clocks here ? Why don't you enable
  them on runtime_resume and disable on runtime_suspend ?
 
 I will like to make it working first and then will improve
 power management.

alright, makes sense.

   + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
   + tcsr = devm_ioremap_resource(pdev-dev, res);
   + if (!tcsr) {
   + dev_dbg(pdev-dev, tcsr ioremap failed\n);
  
  no need to ioremap, also you're likely leaking clocks and regulators
  enabled here.
  
  Make sure to have something like:
  
  if (!tcsr)
  goto err_disable_clocks;
  
  /* TODO This has to be revised */\
  
  [...]
  
 
 Sure.

just to make it clear, I meant to say that you don't need to print the
error message :-)

-- 
balbi


signature.asc
Description: Digital signature


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-09 Thread Felipe Balbi
Hi,

On Tue, Aug 06, 2013 at 02:53:11PM +0300, Ivan T. Ivanov wrote:
 diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
 new file mode 100644
 index 000..e509abc
 --- /dev/null
 +++ b/drivers/usb/dwc3/dwc3-msm.c
 @@ -0,0 +1,175 @@
 +#undef CONFIG_REGULATOR

why ??

 +static int dwc3_msm_probe(struct platform_device *pdev)
 +{
 + struct device_node *node = pdev-dev.of_node;
 + struct dwc3_msm *mdwc;
 + struct resource *res;
 + void __iomem *tcsr;
 + int ret = 0;
 +
 + dev_info(pdev-dev, MSM DWC3\n);

please don't. This is hardly necessary.

 + mdwc = devm_kzalloc(pdev-dev, sizeof(*mdwc), GFP_KERNEL);
 + if (!mdwc) {
 + dev_err(pdev-dev, not enough memory\n);

this message isn't needed either

 + /*
 +  * DWC3 Core requires its CORE CLK (aka master / bus clk) to
 +  * run at 125Mhz in SSUSB mode and 60MHZ for HSUSB mode.
 +  */
 + clk_set_rate(mdwc-core_clk, 12500);

if this is dwc3's core clock, why don't we teach dwc3.ko about this
requirement ? Just make sure to have it optional, since x86 and OMAP
wouldn't need direct fiddling with the clocks.

 + clk_prepare_enable(mdwc-core_clk);
 + clk_prepare_enable(mdwc-iface_clk);
 + clk_prepare_enable(mdwc-sleep_clk);
 + clk_prepare_enable(mdwc-utmi_clk);

do you really need to enable your clocks here ? Why don't you enable
them on runtime_resume and disable on runtime_suspend ?

 + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 + tcsr = devm_ioremap_resource(pdev-dev, res);
 + if (!tcsr) {
 + dev_dbg(pdev-dev, tcsr ioremap failed\n);

no need to ioremap, also you're likely leaking clocks and regulators
enabled here.

Make sure to have something like:

if (!tcsr)
goto err_disable_clocks;

/* TODO This has to be revised */\

[...]

 + } else {
 + /* TODO: This has to be revised */
 +
 + /* Enable USB3 on the primary USB port. */
 + writel_relaxed(0x1, tcsr);
 + /*
 +  * Ensure that TCSR write is completed before
 +  * USB registers initialization.
 +  */
 + mb();

why don't you use writel() instead. It will add the memory barrier for
you.

-- 
balbi


signature.asc
Description: Digital signature


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-09 Thread Felipe Balbi
Hi,

On Tue, Aug 06, 2013 at 01:21:38PM +0100, Pawel Moll wrote:
  @@ -47,3 +64,25 @@ Example device nodes:
  vddcx-supply = supply;
  v1p8-supply = supply;
  };
  +
  +   usb@fd4ab000 {
  +   compatible = qcom,dwc-usb3-msm;
  +   #address-cells = 1;
  +   #size-cells = 1;
  +   reg = 0xfd4ab000 0x4;
  +
  +   clocks = usb30_master_cxc, sys_noc_usb3_axi_cxc, 
  usb30_sleep_cxc, usb30_mock_utmi_cxc;
  +   clock-names = core_clk, iface_clk, sleep_clk, utmi_clk;
  +
  +   gdsc-supply = supply;
  +   ranges;
  +
  +   dwc3@f920 {
  +   compatible = snps,dwc3;
 
 Note that the Documentation/devicetree/bindings/usb/dwc3.txt is
 mentioning synopsys,dwc3 (which is clearly in opposition to the

I have a patch converting to snps,dwc3.

-- 
balbi


signature.asc
Description: Digital signature


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-09 Thread Ivan T. Ivanov
Hi, 

On Fri, 2013-08-09 at 16:23 +0300, Felipe Balbi wrote:
 Hi,
 
 On Tue, Aug 06, 2013 at 02:53:11PM +0300, Ivan T. Ivanov wrote:
  diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
  new file mode 100644
  index 000..e509abc
  --- /dev/null
  +++ b/drivers/usb/dwc3/dwc3-msm.c
  @@ -0,0 +1,175 @@
  +#undef CONFIG_REGULATOR
 
 why ??
 

1. This shows that driver is still not fully tested 
   Regulators support is still missing in the MSM
2. Helps me to load driver successfully. 

  +static int dwc3_msm_probe(struct platform_device *pdev)
  +{
  +   struct device_node *node = pdev-dev.of_node;
  +   struct dwc3_msm *mdwc;
  +   struct resource *res;
  +   void __iomem *tcsr;
  +   int ret = 0;
  +
  +   dev_info(pdev-dev, MSM DWC3\n);
 
 please don't. This is hardly necessary.

Sure, this will be removed.

 
  +   mdwc = devm_kzalloc(pdev-dev, sizeof(*mdwc), GFP_KERNEL);
  +   if (!mdwc) {
  +   dev_err(pdev-dev, not enough memory\n);
 
 this message isn't needed either

ok.

 
  +   /*
  +* DWC3 Core requires its CORE CLK (aka master / bus clk) to
  +* run at 125Mhz in SSUSB mode and 60MHZ for HSUSB mode.
  +*/
  +   clk_set_rate(mdwc-core_clk, 12500);
 
 if this is dwc3's core clock, why don't we teach dwc3.ko about this
 requirement ? Just make sure to have it optional, since x86 and OMAP
 wouldn't need direct fiddling with the clocks.

I have to check whether DWC3 core or Qcom wrapper requires this clock.

 
  +   clk_prepare_enable(mdwc-core_clk);
  +   clk_prepare_enable(mdwc-iface_clk);
  +   clk_prepare_enable(mdwc-sleep_clk);
  +   clk_prepare_enable(mdwc-utmi_clk);
 
 do you really need to enable your clocks here ? Why don't you enable
 them on runtime_resume and disable on runtime_suspend ?

I will like to make it working first and then will improve
power management.

 
  +   res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  +   tcsr = devm_ioremap_resource(pdev-dev, res);
  +   if (!tcsr) {
  +   dev_dbg(pdev-dev, tcsr ioremap failed\n);
 
 no need to ioremap, also you're likely leaking clocks and regulators
 enabled here.
 
 Make sure to have something like:
 
   if (!tcsr)
   goto err_disable_clocks;
 
   /* TODO This has to be revised */\
 
   [...]
 

Sure.

  +   } else {
  +   /* TODO: This has to be revised */
  +
  +   /* Enable USB3 on the primary USB port. */
  +   writel_relaxed(0x1, tcsr);
  +   /*
  +* Ensure that TCSR write is completed before
  +* USB registers initialization.
  +*/
  +   mb();
 
 why don't you use writel() instead. It will add the memory barrier for
 you.

Ok.

Thanks
Ivan


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-06 Thread Ivan T. Ivanov
From: Ivan T. Ivanov iiva...@mm-sol.com

Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com
---
 .../devicetree/bindings/usb/msm-ssusb.txt  |   39 +
 drivers/usb/dwc3/Kconfig   |8 +
 drivers/usb/dwc3/Makefile  |1 +
 drivers/usb/dwc3/dwc3-msm.c|  175 
 4 files changed, 223 insertions(+)
 create mode 100644 drivers/usb/dwc3/dwc3-msm.c

diff --git a/Documentation/devicetree/bindings/usb/msm-ssusb.txt 
b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
index 550b496..313ae0d 100644
--- a/Documentation/devicetree/bindings/usb/msm-ssusb.txt
+++ b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
@@ -22,6 +22,23 @@ Required supply-name examples are:
v1p8 : 1.8v supply for SS-PHY
vddcx : vdd supply for SS-PHY digital circuit operation
 
+Required properties :
+- compatible : should be qcom,dwc-usb3-msm
+- reg : offset and length of the register set in the memory map
+   offset and length of the TCSR register for routing USB
+   signals to either picoPHY0 or picoPHY1.
+- clocks = usb30_master_cxc, sys_noc_usb3_axi_cxc, usb30_sleep_cxc, 
usb30_mock_utmi_cxc;
+- clock-names = core_clk, iface_clk, sleep_clk, utmi_clk;
+
+Optional properties :
+- gdsc-supply : phandle to the globally distributed switch controller
+  regulator node to the USB controller.
+
+Sub nodes:
+- Sub node for DWC3- USB3 controller.
+  This sub node is required property for device node. The properties of this 
subnode
+  are specified in dwc3.txt.
+
 Example device nodes:
 
dwc3_usb2: phy@f92f8800 {
@@ -47,3 +64,25 @@ Example device nodes:
vddcx-supply = supply;
v1p8-supply = supply;
};
+
+   usb@fd4ab000 {
+   compatible = qcom,dwc-usb3-msm;
+   #address-cells = 1;
+   #size-cells = 1;
+   reg = 0xfd4ab000 0x4;
+
+   clocks = usb30_master_cxc, sys_noc_usb3_axi_cxc, 
usb30_sleep_cxc, usb30_mock_utmi_cxc;
+   clock-names = core_clk, iface_clk, sleep_clk, utmi_clk;
+
+   gdsc-supply = supply;
+   ranges;
+
+   dwc3@f920 {
+   compatible = snps,dwc3;
+   reg = 0xf920 0xcd00;
+   interrupts = 0 131 0;
+   interrupt-names = irq;
+   usb-phy = dwc3_usb2, dwc3_usb3;
+   tx-fifo-resize;
+   };
+   };
diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
index 3e225d5..e2032c4 100644
--- a/drivers/usb/dwc3/Kconfig
+++ b/drivers/usb/dwc3/Kconfig
@@ -70,6 +70,14 @@ config USB_DWC3_PCI
  One such PCIe-based platform is Synopsys' PCIe HAPS model of
  this IP.
 
+config USB_DWC3_MSM
+   tristate Qualcomm MSM/APQ Platforms
+   default USB_DWC3
+   select USB_MSM_DWC3_PHYS
+   help
+ Recent Qualcomm SoCs ship with one DesignWare Core USB3 IP inside,
+ say 'Y' or 'M' if you have one such device.
+
 comment Debugging features
 
 config USB_DWC3_DEBUG
diff --git a/drivers/usb/dwc3/Makefile b/drivers/usb/dwc3/Makefile
index dd17601..5226681 100644
--- a/drivers/usb/dwc3/Makefile
+++ b/drivers/usb/dwc3/Makefile
@@ -32,3 +32,4 @@ endif
 obj-$(CONFIG_USB_DWC3_OMAP)+= dwc3-omap.o
 obj-$(CONFIG_USB_DWC3_EXYNOS)  += dwc3-exynos.o
 obj-$(CONFIG_USB_DWC3_PCI) += dwc3-pci.o
+obj-$(CONFIG_USB_DWC3_MSM) += dwc3-msm.o
diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
new file mode 100644
index 000..e509abc
--- /dev/null
+++ b/drivers/usb/dwc3/dwc3-msm.c
@@ -0,0 +1,175 @@
+/* Copyright (c) 2013, 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
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+#undef CONFIG_REGULATOR
+
+#include linux/clk.h
+#include linux/err.h
+#include linux/io.h
+#include linux/module.h
+#include linux/of.h
+#include linux/of_platform.h
+#include linux/platform_device.h
+#include linux/regulator/consumer.h
+#include linux/usb/phy.h
+
+struct dwc3_msm {
+   struct device   *dev;
+   void __iomem*base;
+
+   struct clk  *core_clk;
+   struct clk  *iface_clk;
+   struct clk  *sleep_clk;
+   struct clk  *utmi_clk;
+
+   struct regulator*gdsc;
+};
+
+static int dwc3_msm_probe(struct platform_device *pdev)
+{
+   struct device_node *node = pdev-dev.of_node;
+   struct dwc3_msm 

Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-06 Thread Pawel Moll
On Tue, 2013-08-06 at 12:53 +0100, Ivan T. Ivanov wrote:
 From: Ivan T. Ivanov iiva...@mm-sol.com
 
 Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com

The same comment as for the RFC 1/2 here...

  .../devicetree/bindings/usb/msm-ssusb.txt  |   39 +
  drivers/usb/dwc3/Kconfig   |8 +
  drivers/usb/dwc3/Makefile  |1 +
  drivers/usb/dwc3/dwc3-msm.c|  175 
 
  4 files changed, 223 insertions(+)
  create mode 100644 drivers/usb/dwc3/dwc3-msm.c
 
 diff --git a/Documentation/devicetree/bindings/usb/msm-ssusb.txt 
 b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
 index 550b496..313ae0d 100644
 --- a/Documentation/devicetree/bindings/usb/msm-ssusb.txt
 +++ b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
 @@ -22,6 +22,23 @@ Required supply-name examples are:
   v1p8 : 1.8v supply for SS-PHY
   vddcx : vdd supply for SS-PHY digital circuit operation
  
 +Required properties :
 +- compatible : should be qcom,dwc-usb3-msm
 +- reg : offset and length of the register set in the memory map
 + offset and length of the TCSR register for routing USB
 + signals to either picoPHY0 or picoPHY1.
 +- clocks = usb30_master_cxc, sys_noc_usb3_axi_cxc, usb30_sleep_cxc, 
 usb30_mock_utmi_cxc;
 +- clock-names = core_clk, iface_clk, sleep_clk, utmi_clk;
 +
 +Optional properties :
 +- gdsc-supply : phandle to the globally distributed switch controller
 +  regulator node to the USB controller.
 +
 +Sub nodes:
 +- Sub node for DWC3- USB3 controller.
 +  This sub node is required property for device node. The properties of this 
 subnode
 +  are specified in dwc3.txt.

Ah, this answers one of my questions - DWC3 comes from Synopsys.

  Example device nodes:
  
   dwc3_usb2: phy@f92f8800 {
 @@ -47,3 +64,25 @@ Example device nodes:
   vddcx-supply = supply;
   v1p8-supply = supply;
   };
 +
 + usb@fd4ab000 {
 + compatible = qcom,dwc-usb3-msm;
 + #address-cells = 1;
 + #size-cells = 1;
 + reg = 0xfd4ab000 0x4;
 +
 + clocks = usb30_master_cxc, sys_noc_usb3_axi_cxc, 
 usb30_sleep_cxc, usb30_mock_utmi_cxc;
 + clock-names = core_clk, iface_clk, sleep_clk, utmi_clk;
 +
 + gdsc-supply = supply;
 + ranges;
 +
 + dwc3@f920 {
 + compatible = snps,dwc3;

Note that the Documentation/devicetree/bindings/usb/dwc3.txt is
mentioning synopsys,dwc3 (which is clearly in opposition to the
vendor-prefixes.txt file) and this compatible value is used in the
drivers/usb/dwc3/core.c and omap5.dtsi. Unless it has been already fixed
recently, could you take care of that?

 + reg = 0xf920 0xcd00;
 + interrupts = 0 131 0;
 + interrupt-names = irq;
 + usb-phy = dwc3_usb2, dwc3_usb3;
 + tx-fifo-resize;
 + };
 + };

And now I'm really confused... Maybe it's just lack of documentation...

How does the qcom,dwc-usb3-msm relate to qcom,dwc-usb3?

Paweł


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-06 Thread Ivan T. Ivanov
On Tue, 2013-08-06 at 13:21 +0100, Pawel Moll wrote:
 On Tue, 2013-08-06 at 12:53 +0100, Ivan T. Ivanov wrote:
  From: Ivan T. Ivanov iiva...@mm-sol.com
  
  Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com
 
 The same comment as for the RFC 1/2 here...

Will fix this.

 
   .../devicetree/bindings/usb/msm-ssusb.txt  |   39 +
   drivers/usb/dwc3/Kconfig   |8 +
   drivers/usb/dwc3/Makefile  |1 +
   drivers/usb/dwc3/dwc3-msm.c|  175 
  
   4 files changed, 223 insertions(+)
   create mode 100644 drivers/usb/dwc3/dwc3-msm.c
  
  diff --git a/Documentation/devicetree/bindings/usb/msm-ssusb.txt 
  b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
  index 550b496..313ae0d 100644
  --- a/Documentation/devicetree/bindings/usb/msm-ssusb.txt
  +++ b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
  @@ -22,6 +22,23 @@ Required supply-name examples are:
  v1p8 : 1.8v supply for SS-PHY
  vddcx : vdd supply for SS-PHY digital circuit operation
   
  +Required properties :
  +- compatible : should be qcom,dwc-usb3-msm
  +- reg : offset and length of the register set in the memory map
  +   offset and length of the TCSR register for routing USB
  +   signals to either picoPHY0 or picoPHY1.
  +- clocks = usb30_master_cxc, sys_noc_usb3_axi_cxc, 
  usb30_sleep_cxc, usb30_mock_utmi_cxc;
  +- clock-names = core_clk, iface_clk, sleep_clk, utmi_clk;
  +
  +Optional properties :
  +- gdsc-supply : phandle to the globally distributed switch controller
  +  regulator node to the USB controller.
  +
  +Sub nodes:
  +- Sub node for DWC3- USB3 controller.
  +  This sub node is required property for device node. The properties of 
  this subnode
  +  are specified in dwc3.txt.
 
 Ah, this answers one of my questions - DWC3 comes from Synopsys.

Yes, sorry.

 
   Example device nodes:
   
  dwc3_usb2: phy@f92f8800 {
  @@ -47,3 +64,25 @@ Example device nodes:
  vddcx-supply = supply;
  v1p8-supply = supply;
  };
  +
  +   usb@fd4ab000 {
  +   compatible = qcom,dwc-usb3-msm;
  +   #address-cells = 1;
  +   #size-cells = 1;
  +   reg = 0xfd4ab000 0x4;
  +
  +   clocks = usb30_master_cxc, sys_noc_usb3_axi_cxc, 
  usb30_sleep_cxc, usb30_mock_utmi_cxc;
  +   clock-names = core_clk, iface_clk, sleep_clk, utmi_clk;
  +
  +   gdsc-supply = supply;
  +   ranges;
  +
  +   dwc3@f920 {
  +   compatible = snps,dwc3;
 
 Note that the Documentation/devicetree/bindings/usb/dwc3.txt is
 mentioning synopsys,dwc3 (which is clearly in opposition to the
 vendor-prefixes.txt file) and this compatible value is used in the
 drivers/usb/dwc3/core.c and omap5.dtsi. Unless it has been already fixed
 recently, could you take care of that?

Yes, it is fixed already. Patch is in linux-next 
usb: dwc3: core: switch to snps,dwc3

 
  +   reg = 0xf920 0xcd00;
  +   interrupts = 0 131 0;
  +   interrupt-names = irq;
  +   usb-phy = dwc3_usb2, dwc3_usb3;
  +   tx-fifo-resize;
  +   };
  +   };
 
 And now I'm really confused... Maybe it's just lack of documentation...
 
 How does the qcom,dwc-usb3-msm relate to qcom,dwc-usb3?

Not sure from where you get this qcom,dwc-usb3, but now I think
that qcom,dwc-usb3 should be enough for compatible.  

Thanks, 
Ivan

 
 Paweł


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-06 Thread Mark Rutland
On Tue, Aug 06, 2013 at 12:53:11PM +0100, Ivan T. Ivanov wrote:
 From: Ivan T. Ivanov iiva...@mm-sol.com

What does the glue layer do? Is it an actual piece of hardware, or
just some platform-specific code?

 
 Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com
 ---
  .../devicetree/bindings/usb/msm-ssusb.txt  |   39 +
  drivers/usb/dwc3/Kconfig   |8 +
  drivers/usb/dwc3/Makefile  |1 +
  drivers/usb/dwc3/dwc3-msm.c|  175 
 
  4 files changed, 223 insertions(+)
  create mode 100644 drivers/usb/dwc3/dwc3-msm.c
 
 diff --git a/Documentation/devicetree/bindings/usb/msm-ssusb.txt 
 b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
 index 550b496..313ae0d 100644
 --- a/Documentation/devicetree/bindings/usb/msm-ssusb.txt
 +++ b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
 @@ -22,6 +22,23 @@ Required supply-name examples are:
   v1p8 : 1.8v supply for SS-PHY
   vddcx : vdd supply for SS-PHY digital circuit operation
  
 +Required properties :
 +- compatible : should be qcom,dwc-usb3-msm
 +- reg : offset and length of the register set in the memory map
 + offset and length of the TCSR register for routing USB
 + signals to either picoPHY0 or picoPHY1.
 +- clocks = usb30_master_cxc, sys_noc_usb3_axi_cxc, usb30_sleep_cxc, 
 usb30_mock_utmi_cxc;

Similarly to my comment on patch 1, these need to be described better.

Thanks,
Mark.
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-06 Thread Ivan T. Ivanov

Hi, 

On Tue, 2013-08-06 at 15:07 +0100, Mark Rutland wrote:
 On Tue, Aug 06, 2013 at 12:53:11PM +0100, Ivan T. Ivanov wrote:
  From: Ivan T. Ivanov iiva...@mm-sol.com
 
 What does the glue layer do? Is it an actual piece of hardware, or
 just some platform-specific code?
 

It is hardware layer around Synopsys DesignWare USB3 core. The 
term 'glue layer' is what is used in TI OMAP's and Samsung Exynos
drivers implementations.

  
  Signed-off-by: Ivan T. Ivanov iiva...@mm-sol.com
  ---
   .../devicetree/bindings/usb/msm-ssusb.txt  |   39 +
   drivers/usb/dwc3/Kconfig   |8 +
   drivers/usb/dwc3/Makefile  |1 +
   drivers/usb/dwc3/dwc3-msm.c|  175 
  
   4 files changed, 223 insertions(+)
   create mode 100644 drivers/usb/dwc3/dwc3-msm.c
  
  diff --git a/Documentation/devicetree/bindings/usb/msm-ssusb.txt 
  b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
  index 550b496..313ae0d 100644
  --- a/Documentation/devicetree/bindings/usb/msm-ssusb.txt
  +++ b/Documentation/devicetree/bindings/usb/msm-ssusb.txt
  @@ -22,6 +22,23 @@ Required supply-name examples are:
  v1p8 : 1.8v supply for SS-PHY
  vddcx : vdd supply for SS-PHY digital circuit operation
   
  +Required properties :
  +- compatible : should be qcom,dwc-usb3-msm
  +- reg : offset and length of the register set in the memory map
  +   offset and length of the TCSR register for routing USB
  +   signals to either picoPHY0 or picoPHY1.
  +- clocks = usb30_master_cxc, sys_noc_usb3_axi_cxc, 
  usb30_sleep_cxc, usb30_mock_utmi_cxc;
 
 Similarly to my comment on patch 1, these need to be described better.

Sure, will fix this.

Thanks, 
Ivan

 
 Thanks,
 Mark.


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-06 Thread Pawel Moll
On Tue, 2013-08-06 at 14:46 +0100, Ivan T. Ivanov wrote:
   + reg = 0xf920 0xcd00;
   + interrupts = 0 131 0;
   + interrupt-names = irq;
   + usb-phy = dwc3_usb2, dwc3_usb3;
   + tx-fifo-resize;
   + };
   + };
  
  And now I'm really confused... Maybe it's just lack of documentation...
  
  How does the qcom,dwc-usb3-msm relate to qcom,dwc-usb3?
 
 Not sure from where you get this qcom,dwc-usb3, but now I think
 that qcom,dwc-usb3 should be enough for compatible.  

The other patch introduces qcom,dwc3-usb3 compatible value...

Paweł


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC 2/2] usb: dwc3: Add Qualcomm DWC3 glue layer driver

2013-08-06 Thread Ivan T. Ivanov
On Tue, 2013-08-06 at 16:15 +0100, Pawel Moll wrote:
 On Tue, 2013-08-06 at 14:46 +0100, Ivan T. Ivanov wrote:
+   reg = 0xf920 0xcd00;
+   interrupts = 0 131 0;
+   interrupt-names = irq;
+   usb-phy = dwc3_usb2, dwc3_usb3;
+   tx-fifo-resize;
+   };
+   };
   
   And now I'm really confused... Maybe it's just lack of documentation...
   
   How does the qcom,dwc-usb3-msm relate to qcom,dwc-usb3?
  
  Not sure from where you get this qcom,dwc-usb3, but now I think
  that qcom,dwc-usb3 should be enough for compatible.  
 
 The other patch introduces qcom,dwc3-usb3 compatible value...

Oh, of course. Intention was that qcom,dwc-usb3 will handle SS-PHY, 
while qcom,dwc-usb2 will handle HS-PHY. Probably it will better if
I rename them to qcom,dwc-ssphy and qcom,dwc-hsphy.

Regards,
Ivan

 
 Paweł


--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html