Re: [PATCH v2 1/2] usb: dwc3: keystone: Add PM_RUNTIME Support to DWC3 Keystone USB driver

2017-08-17 Thread Franklin S Cooper Jr


On 08/17/2017 07:04 AM, Felipe Balbi wrote:
> 
> Hi,
> 
> Franklin S Cooper Jr <fcoo...@ti.com> writes:
>> For 66AK2Gx there is a requirement to use PM Runtime to properly manage
>> clocks and the power domains. Therefore, add PM runtime support. Remove
>> legacy clock api's calls since other users of this driver worked without
>> these clock apis calls.
>>
>> Signed-off-by: Franklin S Cooper Jr <fcoo...@ti.com>
>> ---
> 
> I already have the previous version of this in my tree. Seems like the
> only difference was on binding document, right? Do I need to change
> anything in my 'next' and/or 'testing/next' branches?

Correct the binding document is the only difference. Both of your
branches looks good.

> 
--
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


[PATCH v2 2/2] dt-bindings: usb: keystone-usb: Update bindings pm and clocks properties

2017-08-16 Thread Franklin S Cooper Jr
Update various properties to properly indicate their requirement depending
on the SoC.

Signed-off-by: Franklin S Cooper Jr <fcoo...@ti.com>
---
Version 2:
Clarify clock requirements in binding document

 Documentation/devicetree/bindings/usb/keystone-usb.txt | 17 +++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/keystone-usb.txt 
b/Documentation/devicetree/bindings/usb/keystone-usb.txt
index 60527d3..2d1bef1 100644
--- a/Documentation/devicetree/bindings/usb/keystone-usb.txt
+++ b/Documentation/devicetree/bindings/usb/keystone-usb.txt
@@ -12,8 +12,21 @@ Required properties:
MPU.
  - ranges: allows valid 1:1 translation between child's address space and
parent's address space.
- - clocks: Clock IDs array as required by the controller.
- - clock-names: names of clocks correseponding to IDs in the clock property.
+
+SoC-specific Required Properties:
+The following are mandatory properties for Keystone 2 66AK2HK, 66AK2L and 
66AK2E
+SoCs only:
+
+- clocks:  Clock ID for USB functional clock.
+- clock-names: Must be "usb".
+
+
+The following are mandatory properties for Keystone 2 66AK2G SoCs only:
+
+- power-domains:   Should contain a phandle to a PM domain provider node
+   and an args specifier containing the USB device id
+   value. This property is as per the binding,
+   
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
 
 Sub-nodes:
 The dwc3 core should be added as subnode to Keystone DWC3 glue.
-- 
2.9.4.dirty

--
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


[PATCH v2 0/2] ARM: dts: k2g: Add support for USB instances on 66AK2G

2017-08-16 Thread Franklin S Cooper Jr
Add support for 66AK2G usb instances. However, the driver needs to be updated
to support PM_RUNTIME. This update has been validated to work on K2L and boot
tested on K2HK and K2E.

Version 2:
Clarify clock properties requirements in binding document

Franklin S Cooper Jr (2):
  usb: dwc3: keystone: Add PM_RUNTIME Support to DWC3 Keystone USB
driver
  dt-bindings: usb: keystone-usb: Update bindings pm and clocks
properties

 .../devicetree/bindings/usb/keystone-usb.txt   | 17 +++--
 drivers/usb/dwc3/dwc3-keystone.c   | 22 ++
 2 files changed, 25 insertions(+), 14 deletions(-)

-- 
2.9.4.dirty

--
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


[PATCH v2 1/2] usb: dwc3: keystone: Add PM_RUNTIME Support to DWC3 Keystone USB driver

2017-08-16 Thread Franklin S Cooper Jr
For 66AK2Gx there is a requirement to use PM Runtime to properly manage
clocks and the power domains. Therefore, add PM runtime support. Remove
legacy clock api's calls since other users of this driver worked without
these clock apis calls.

Signed-off-by: Franklin S Cooper Jr <fcoo...@ti.com>
---
 drivers/usb/dwc3/dwc3-keystone.c | 22 ++
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/usb/dwc3/dwc3-keystone.c b/drivers/usb/dwc3/dwc3-keystone.c
index 12ee23f..d2ed952 100644
--- a/drivers/usb/dwc3/dwc3-keystone.c
+++ b/drivers/usb/dwc3/dwc3-keystone.c
@@ -15,7 +15,6 @@
  * GNU General Public License for more details.
  */
 
-#include 
 #include 
 #include 
 #include 
@@ -23,6 +22,7 @@
 #include 
 #include 
 #include 
+#include 
 
 /* USBSS register offsets */
 #define USBSS_REVISION 0x
@@ -41,7 +41,6 @@
 
 struct dwc3_keystone {
struct device   *dev;
-   struct clk  *clk;
void __iomem*usbss;
 };
 
@@ -106,17 +105,13 @@ static int kdwc3_probe(struct platform_device *pdev)
if (IS_ERR(kdwc->usbss))
return PTR_ERR(kdwc->usbss);
 
-   kdwc->clk = devm_clk_get(kdwc->dev, "usb");
-   if (IS_ERR(kdwc->clk)) {
-   dev_err(kdwc->dev, "unable to get usb clock\n");
-   return PTR_ERR(kdwc->clk);
-   }
+   pm_runtime_enable(kdwc->dev);
 
-   error = clk_prepare_enable(kdwc->clk);
+   error = pm_runtime_get_sync(kdwc->dev);
if (error < 0) {
-   dev_err(kdwc->dev, "unable to enable usb clock, error %d\n",
+   dev_err(kdwc->dev, "pm_runtime_get_sync failed, error %d\n",
error);
-   return error;
+   goto err_irq;
}
 
irq = platform_get_irq(pdev, 0);
@@ -147,7 +142,8 @@ static int kdwc3_probe(struct platform_device *pdev)
 err_core:
kdwc3_disable_irqs(kdwc);
 err_irq:
-   clk_disable_unprepare(kdwc->clk);
+   pm_runtime_put_sync(kdwc->dev);
+   pm_runtime_disable(kdwc->dev);
 
return error;
 }
@@ -167,7 +163,9 @@ static int kdwc3_remove(struct platform_device *pdev)
 
kdwc3_disable_irqs(kdwc);
device_for_each_child(>dev, NULL, kdwc3_remove_core);
-   clk_disable_unprepare(kdwc->clk);
+   pm_runtime_put_sync(kdwc->dev);
+   pm_runtime_disable(kdwc->dev);
+
platform_set_drvdata(pdev, NULL);
 
return 0;
-- 
2.9.4.dirty

--
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


[PATCH 0/3] ARM: dts: k2g: Add support for USB instances on 66AK2G

2017-08-02 Thread Franklin S Cooper Jr
Add support for 66AK2G usb instances. However, the driver needs to be updated
to support PM_RUNTIME. This update has been validated to work on K2L and boot
tested on K2HK and K2E.

Franklin S Cooper Jr (2):
  usb: dwc3: keystone: Add PM_RUNTIME Support to DWC3 Keystone USB
driver
  dt-bindings: usb: keystone-usb: Update bindings pm and clocks
properties

Vitaly Andrianov (1):
  ARM: dts: k2g: Add USB instances

 .../devicetree/bindings/usb/keystone-usb.txt   | 18 ++-
 arch/arm/boot/dts/keystone-k2g.dtsi| 56 ++
 drivers/usb/dwc3/dwc3-keystone.c   | 22 -
 3 files changed, 82 insertions(+), 14 deletions(-)

-- 
2.9.4.dirty

--
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


[PATCH 2/3] dt-bindings: usb: keystone-usb: Update bindings pm and clocks properties

2017-08-02 Thread Franklin S Cooper Jr
Update varous properties to properly indicate their requirement depending
on the SoC.

Signed-off-by: Franklin S Cooper Jr <fcoo...@ti.com>
---
 Documentation/devicetree/bindings/usb/keystone-usb.txt | 18 --
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/keystone-usb.txt 
b/Documentation/devicetree/bindings/usb/keystone-usb.txt
index 60527d3..307531b 100644
--- a/Documentation/devicetree/bindings/usb/keystone-usb.txt
+++ b/Documentation/devicetree/bindings/usb/keystone-usb.txt
@@ -12,8 +12,22 @@ Required properties:
MPU.
  - ranges: allows valid 1:1 translation between child's address space and
parent's address space.
- - clocks: Clock IDs array as required by the controller.
- - clock-names: names of clocks correseponding to IDs in the clock property.
+
+SoC-specific Required Properties:
+The following are mandatory properties for Keystone 2 66AK2HK, 66AK2L and 
66AK2E
+SoCs only:
+
+- clocks:  Clock IDs array as required by the controller.
+- clock-names: names of clocks correseponding to IDs in the clock
+   property.
+
+
+The following are mandatory properties for Keystone 2 66AK2G SoCs only:
+
+- power-domains:   Should contain a phandle to a PM domain provider node
+   and an args specifier containing the USB device id
+   value. This property is as per the binding,
+   
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
 
 Sub-nodes:
 The dwc3 core should be added as subnode to Keystone DWC3 glue.
-- 
2.9.4.dirty

--
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


[PATCH 3/3] ARM: dts: k2g: Add USB instances

2017-08-02 Thread Franklin S Cooper Jr
From: Vitaly Andrianov <vita...@ti.com>

Add nodes for both USB instances supported by 66AK2G.

[d-gerl...@ti.com: Add power domain and clock properties]
Signed-off-by: Dave Gerlach <d-gerl...@ti.com>
[fcoo...@ti.com: Update commit message and subject]
Signed-off-by: Franklin S Cooper Jr <fcoo...@ti.com>
---
 arch/arm/boot/dts/keystone-k2g.dtsi | 56 +
 1 file changed, 56 insertions(+)

diff --git a/arch/arm/boot/dts/keystone-k2g.dtsi 
b/arch/arm/boot/dts/keystone-k2g.dtsi
index bf4d1fa..b206b69 100644
--- a/arch/arm/boot/dts/keystone-k2g.dtsi
+++ b/arch/arm/boot/dts/keystone-k2g.dtsi
@@ -168,5 +168,61 @@
#reset-cells = <2>;
};
};
+
+   usb0_phy: usb-phy@0 {
+   compatible = "usb-nop-xceiv";
+   status = "disabled";
+   };
+
+   keystone_usb0: keystone-dwc3@268 {
+   compatible = "ti,keystone-dwc3";
+   #address-cells = <1>;
+   #size-cells = <1>;
+   reg = <0x268 0x1>;
+   interrupts = ;
+   ranges;
+   dma-coherent;
+   dma-ranges;
+   status = "disabled";
+   power-domains = <_pds 0x0016>;
+
+   usb0: usb@269 {
+   compatible = "snps,dwc3";
+   reg = <0x269 0x1>;
+   interrupts = ;
+   maximum-speed = "high-speed";
+   dr_mode = "otg";
+   usb-phy = <_phy>;
+   status = "disabled";
+   };
+   };
+
+   usb1_phy: usb-phy@1 {
+   compatible = "usb-nop-xceiv";
+   status = "disabled";
+   };
+
+   keystone_usb1: keystone-dwc3@258 {
+   compatible = "ti,keystone-dwc3";
+   #address-cells = <1>;
+   #size-cells = <1>;
+   reg = <0x258 0x1>;
+   interrupts = ;
+   ranges;
+   dma-coherent;
+   dma-ranges;
+   status = "disabled";
+   power-domains = <_pds 0x0017>;
+
+   usb1: usb@259 {
+   compatible = "snps,dwc3";
+   reg = <0x259 0x1>;
+   interrupts = ;
+   maximum-speed = "high-speed";
+   dr_mode = "otg";
+   usb-phy = <_phy>;
+   status = "disabled";
+   };
+   };
};
 };
-- 
2.9.4.dirty

--
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


[PATCH 1/3] usb: dwc3: keystone: Add PM_RUNTIME Support to DWC3 Keystone USB driver

2017-08-02 Thread Franklin S Cooper Jr
For 66AK2Gx there is a requirement to use PM Runtime to properly manage
clocks and the power domains. Therefore, add PM runtime support. Remove
legacy clock api's calls since other users of this driver worked without
these clock apis calls.

Signed-off-by: Franklin S Cooper Jr <fcoo...@ti.com>
Signed-off-by: Sekhar Nori <nsek...@ti.com>
---
 drivers/usb/dwc3/dwc3-keystone.c | 22 ++
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/usb/dwc3/dwc3-keystone.c b/drivers/usb/dwc3/dwc3-keystone.c
index 12ee23f..d2ed952 100644
--- a/drivers/usb/dwc3/dwc3-keystone.c
+++ b/drivers/usb/dwc3/dwc3-keystone.c
@@ -15,7 +15,6 @@
  * GNU General Public License for more details.
  */
 
-#include 
 #include 
 #include 
 #include 
@@ -23,6 +22,7 @@
 #include 
 #include 
 #include 
+#include 
 
 /* USBSS register offsets */
 #define USBSS_REVISION 0x
@@ -41,7 +41,6 @@
 
 struct dwc3_keystone {
struct device   *dev;
-   struct clk  *clk;
void __iomem*usbss;
 };
 
@@ -106,17 +105,13 @@ static int kdwc3_probe(struct platform_device *pdev)
if (IS_ERR(kdwc->usbss))
return PTR_ERR(kdwc->usbss);
 
-   kdwc->clk = devm_clk_get(kdwc->dev, "usb");
-   if (IS_ERR(kdwc->clk)) {
-   dev_err(kdwc->dev, "unable to get usb clock\n");
-   return PTR_ERR(kdwc->clk);
-   }
+   pm_runtime_enable(kdwc->dev);
 
-   error = clk_prepare_enable(kdwc->clk);
+   error = pm_runtime_get_sync(kdwc->dev);
if (error < 0) {
-   dev_err(kdwc->dev, "unable to enable usb clock, error %d\n",
+   dev_err(kdwc->dev, "pm_runtime_get_sync failed, error %d\n",
error);
-   return error;
+   goto err_irq;
}
 
irq = platform_get_irq(pdev, 0);
@@ -147,7 +142,8 @@ static int kdwc3_probe(struct platform_device *pdev)
 err_core:
kdwc3_disable_irqs(kdwc);
 err_irq:
-   clk_disable_unprepare(kdwc->clk);
+   pm_runtime_put_sync(kdwc->dev);
+   pm_runtime_disable(kdwc->dev);
 
return error;
 }
@@ -167,7 +163,9 @@ static int kdwc3_remove(struct platform_device *pdev)
 
kdwc3_disable_irqs(kdwc);
device_for_each_child(>dev, NULL, kdwc3_remove_core);
-   clk_disable_unprepare(kdwc->clk);
+   pm_runtime_put_sync(kdwc->dev);
+   pm_runtime_disable(kdwc->dev);
+
platform_set_drvdata(pdev, NULL);
 
return 0;
-- 
2.9.4.dirty

--
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