Skip to contentSkip to conversation

usb: ehci-exynos: Make provision for vdd regulators

PATCH RESEND In review Anand Moon 4 participants 13 messages Jun 7, 2015 – Jun 8, 2015

Subsystems (5)
lore
Share & tools
lore

Anand Moon

author
#0 lore raw

PATCH RESEND 1/2 usb: ehci-exynos: Make provision for vdd regulators

Facilitate getting required 3.3V and 1.0V VDD supply for EHCI controller on Exynos.

With the patches for regulators' nodes merged in 3.15:
c8c253f ARM: dts: Add regulator entries to smdk5420 275dcd2 ARM: dts: add max77686 pmic node for smdk5250, the exynos systems turn on only minimal number of regulators.

Until now, the VDD regulator supplies were either turned on by the bootloader, or the regulators were enabled by default in the kernel, so that the controller drivers did not need to care about turning on these regulators on their own. This was rather bad about these controller drivers.
So ensuring now that the controller driver requests the necessary VDD regulators (if available, unless there are direct VDD rails), and enable them so as to make them working.

---
Initial version of this patch was part of following series, though they are not dependent on each other, resubmitting after rebasing.

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-June/266418.html

---
 .../devicetree/bindings/usb/exynos-usb.txt         |  2 +
 drivers/usb/host/ehci-exynos.c                     | 55 +++++++++++++++++++++-
 2 files changed, 56 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/usb/exynos-usb.txt +2 -0
index 9b4dbe3..776fa03 100644
@@ -23,6 +23,8 @@ Required properties:
 Optional properties:
  - samsung,vbus-gpio:  if present, specifies the GPIO that
    needs to be pulled up for the bus to be powered.
+ - vdd33-supply: handle to 3.3V Vdd supply regulator for the controller.
+ - vdd10-supply: handle to 1.0V Vdd supply regulator for the controller.
 
 Example:
 
drivers/usb/host/ehci-exynos.c +54 -1

97 lines not on this page · raw message

Signature · 1 line
2.4.3
author
#1 lore raw

PATCH RESEND 2/2 usb: ohci-exynos: Make provision for vdd regulators

Facilitate getting required 3.3V and 1.0V VDD supply for OHCI controller on Exynos.

With patches for regulators' nodes merged in 3.15:
c8c253f ARM: dts: Add regulator entries to smdk5420 275dcd2 ARM: dts: add max77686 pmic node for smdk5250, the exynos systems turn on only minimal number of regulators.

Until now, the VDD regulator supplies were either turned on by the bootloader, or the regulators were enabled by default in the kernel, so that the controller drivers did not need to care about turning on these regulators on their own. This was rather bad about these controller drivers.
So ensuring now that the controller driver requests the necessary VDD regulators (if available, unless there are direct VDD rails), and enable them so as to make them working.

---
Initial version of this patch was part of following series, though they are not dependent on each other, resubmitting after rebasing.

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-June/266419.html

---
 .../devicetree/bindings/usb/exynos-usb.txt         |  4 ++
 drivers/usb/host/ohci-exynos.c                     | 55 +++++++++++++++++++++-
 2 files changed, 58 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/usb/exynos-usb.txt +4 -0
index 776fa03..3883baa 100644
@@ -63,6 +63,10 @@ Required properties:
 			      port 2 is HSIC phy1
 	- phys: from the *Generic PHY* bindings, specifying phy used by port.
 
+Optional properties:
+ - vdd33-supply: handle to 3.3V Vdd supply regulator for the controller.
+ - vdd10-supply: handle to 1.0V Vdd supply regulator for the controller.
+
 Example:
 	usb at 12120000 {
 		compatible = "samsung,exynos4210-ohci";
drivers/usb/host/ohci-exynos.c +54 -1

97 lines not on this page · raw message

Signature · 1 line
2.4.3
#2 lore raw
In reply to Anand Moon
Quoted 21 lines · Anand Moon

Facilitate getting required 3.3V and 1.0V VDD supply for EHCI controller on Exynos.

With the patches for regulators' nodes merged in 3.15:
c8c253f ARM: dts: Add regulator entries to smdk5420 275dcd2 ARM: dts: add max77686 pmic node for smdk5250, the exynos systems turn on only minimal number of regulators.

Until now, the VDD regulator supplies were either turned on by the bootloader, or the regulators were enabled by default in the kernel, so that the controller drivers did not need to care about turning on these regulators on their own. This was rather bad about these controller drivers.
So ensuring now that the controller driver requests the necessary VDD regulators (if available, unless there are direct VDD rails), and enable them so as to make them working.

Quoted 5 lines

---
Initial version of this patch was part of following series, though they are not dependent on each other, resubmitting after rebasing.

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-June/266418.html

So you just took Vivek's patch along with all the credits... That is not how we usually do this.

I would expect that rebasing a patch won't change the author unless this is fine with Vivek.

Quoted 69 lines
---
 .../devicetree/bindings/usb/exynos-usb.txt         |  2 +
 drivers/usb/host/ehci-exynos.c                     | 55 +++++++++++++++++++++-
 2 files changed, 56 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/usb/exynos-usb.txt +2 -0
index 9b4dbe3..776fa03 100644
@@ -23,6 +23,8 @@ Required properties:
 Optional properties:
  - samsung,vbus-gpio:  if present, specifies the GPIO that
    needs to be pulled up for the bus to be powered.
+ - vdd33-supply: handle to 3.3V Vdd supply regulator for the controller.
+ - vdd10-supply: handle to 1.0V Vdd supply regulator for the controller.
 
 Example:
 
drivers/usb/host/ehci-exynos.c +24 -1
index df538fd..4f8f9d2 100644
@@ -21,6 +21,7 @@
 #include <linux/of_gpio.h>
 #include <linux/phy/phy.h>
 #include <linux/platform_device.h>
+#include <linux/regulator/consumer.h>
 #include <linux/usb.h>
 #include <linux/usb/hcd.h>
 
@@ -45,6 +46,8 @@ static struct hc_driver __read_mostly exynos_ehci_hc_driver;
 struct exynos_ehci_hcd {
 	struct clk *clk;
 	struct phy *phy[PHY_NUMBER];
+	struct regulator *vdd33;
+	struct regulator *vdd10;
 };
 
 #define to_exynos_ehci(hcd) (struct exynos_ehci_hcd *)(hcd_to_ehci(hcd)->priv)
@@ -170,7 +173,27 @@ static int exynos_ehci_probe(struct platform_device *pdev)
 
 	err = exynos_ehci_get_phy(&pdev->dev, exynos_ehci);
 	if (err)
-		goto fail_clk;
+		goto fail_regulator1;
+
+	exynos_ehci->vdd33 = devm_regulator_get_optional(&pdev->dev, "vdd33");
+	if (!IS_ERR(exynos_ehci->vdd33)) {
+		err = regulator_enable(exynos_ehci->vdd33);
+		if (err) {
+			dev_err(&pdev->dev,
+				"Failed to enable 3.3V Vdd supply\n");
+			goto fail_regulator1;
+		}
+	}
+
+	exynos_ehci->vdd10 = devm_regulator_get_optional(&pdev->dev, "vdd10");
+	if (!IS_ERR(exynos_ehci->vdd10)) {
+		err = regulator_enable(exynos_ehci->vdd10);
+		if (err) {
+			dev_err(&pdev->dev,
+				"Failed to enable 1.0V Vdd supply\n");
+			goto fail_regulator2;
+		}
+	}
 
 skip_phy:
 

drivers/usb/host/ehci-exynos.c fail_add_hcd: · line 259

Quoted 6 lines
drivers/usb/host/ehci-exynos.c +3 -0
@@ -231,6 +254,10 @@ fail_add_hcd:
 fail_io:
 	clk_disable_unprepare(exynos_ehci->clk);
 fail_clk:
+	regulator_disable(exynos_ehci->vdd10);
+fail_regulator2:
+	regulator_disable(exynos_ehci->vdd33);

if (!IS_ERR()).

Quoted 17 lines
drivers/usb/host/ehci-exynos.c +6 -0
+fail_regulator1:
 	usb_put_hcd(hcd);
 	return err;
 }
@@ -246,6 +273,11 @@ static int exynos_ehci_remove(struct platform_device *pdev)
 
 	clk_disable_unprepare(exynos_ehci->clk);
 
+	if (!IS_ERR(exynos_ehci->vdd33))
+		regulator_disable(exynos_ehci->vdd33);
+	if (!IS_ERR(exynos_ehci->vdd10))
+		regulator_disable(exynos_ehci->vdd10);
+
 	usb_put_hcd(hcd);
 
 	return 0;

drivers/usb/host/ehci-exynos.c static int exynos_ehci_suspend(struct device *dev) · line 307

Quoted 8 lines
drivers/usb/host/ehci-exynos.c +5 -0
@@ -268,6 +300,11 @@ static int exynos_ehci_suspend(struct device *dev)
 
 	clk_disable_unprepare(exynos_ehci->clk);
 
+	if (!IS_ERR(exynos_ehci->vdd33))
+		regulator_disable(exynos_ehci->vdd33);
+	if (!IS_ERR(exynos_ehci->vdd10))
+		regulator_disable(exynos_ehci->vdd10);
+

Is EHCI a wakeup source? If yes then how disabling regulators during suspend affects waking up process?

Best regards,
Krzysztof

author
#3 lore raw

Hi Krzysztof ,

Quoted 26 lines · Krzysztof Kozlowski
Quoted 25 lines · Anand Moon

Facilitate getting required 3.3V and 1.0V VDD supply for EHCI controller on Exynos.

With the patches for regulators' nodes merged in 3.15:
c8c253f ARM: dts: Add regulator entries to smdk5420 275dcd2 ARM: dts: add max77686 pmic node for smdk5250, the exynos systems turn on only minimal number of regulators.

Until now, the VDD regulator supplies were either turned on by the bootloader, or the regulators were enabled by default in the kernel, so that the controller drivers did not need to care about turning on these regulators on their own. This was rather bad about these controller drivers.
So ensuring now that the controller driver requests the necessary VDD regulators (if available, unless there are direct VDD rails), and enable them so as to make them working.

---
Initial version of this patch was part of following series, though they are not dependent on each other, resubmitting after rebasing.

Quoted 8 lines
Quoted 1 line

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-June/266418.html

So you just took Vivek's patch along with all the credits... That is not how we usually do this.

I would expect that rebasing a patch won't change the author unless this is fine with Vivek.

Sorry If I have done some mistake on my part. I just looked at below mail chain. Before I send it.

http://www.spinics.net/lists/linux-samsung-soc/msg44136.html

I don't want to take any credit out of it. I just re-base on the new kernel. I could not test this patch as it meant for exynos5440 boards.

-Anand Moon

Quoted 111 lines
Quoted 69 lines
---
 .../devicetree/bindings/usb/exynos-usb.txt         |  2 +
 drivers/usb/host/ehci-exynos.c                     | 55 +++++++++++++++++++++-
 2 files changed, 56 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/usb/exynos-usb.txt +2 -0
index 9b4dbe3..776fa03 100644
@@ -23,6 +23,8 @@ Required properties:
 Optional properties:
  - samsung,vbus-gpio:  if present, specifies the GPIO that
    needs to be pulled up for the bus to be powered.
+ - vdd33-supply: handle to 3.3V Vdd supply regulator for the controller.
+ - vdd10-supply: handle to 1.0V Vdd supply regulator for the controller.
 
 Example:
 
drivers/usb/host/ehci-exynos.c +24 -1
index df538fd..4f8f9d2 100644
@@ -21,6 +21,7 @@
 #include <linux/of_gpio.h>
 #include <linux/phy/phy.h>
 #include <linux/platform_device.h>
+#include <linux/regulator/consumer.h>
 #include <linux/usb.h>
 #include <linux/usb/hcd.h>
 
@@ -45,6 +46,8 @@ static struct hc_driver __read_mostly exynos_ehci_hc_driver;
 struct exynos_ehci_hcd {
      struct clk *clk;
      struct phy *phy[PHY_NUMBER];
+     struct regulator *vdd33;
+     struct regulator *vdd10;
 };
 
 #define to_exynos_ehci(hcd) (struct exynos_ehci_hcd *)(hcd_to_ehci(hcd)->priv)
@@ -170,7 +173,27 @@ static int exynos_ehci_probe(struct platform_device *pdev)
 
      err = exynos_ehci_get_phy(&pdev->dev, exynos_ehci);
      if (err)
-             goto fail_clk;
+             goto fail_regulator1;
+
+     exynos_ehci->vdd33 = devm_regulator_get_optional(&pdev->dev, "vdd33");
+     if (!IS_ERR(exynos_ehci->vdd33)) {
+             err = regulator_enable(exynos_ehci->vdd33);
+             if (err) {
+                     dev_err(&pdev->dev,
+                             "Failed to enable 3.3V Vdd supply\n");
+                     goto fail_regulator1;
+             }
+     }
+
+     exynos_ehci->vdd10 = devm_regulator_get_optional(&pdev->dev, "vdd10");
+     if (!IS_ERR(exynos_ehci->vdd10)) {
+             err = regulator_enable(exynos_ehci->vdd10);
+             if (err) {
+                     dev_err(&pdev->dev,
+                             "Failed to enable 1.0V Vdd supply\n");
+                     goto fail_regulator2;
+             }
+     }
 
 skip_phy:
 

drivers/usb/host/ehci-exynos.c fail_add_hcd: · line 259

Quoted 6 lines
drivers/usb/host/ehci-exynos.c +3 -0
@@ -231,6 +254,10 @@ fail_add_hcd:
 fail_io:
      clk_disable_unprepare(exynos_ehci->clk);
 fail_clk:
+     regulator_disable(exynos_ehci->vdd10);
+fail_regulator2:
+     regulator_disable(exynos_ehci->vdd33);

if (!IS_ERR()).

Quoted 17 lines
drivers/usb/host/ehci-exynos.c +6 -0
+fail_regulator1:
      usb_put_hcd(hcd);
      return err;
 }
@@ -246,6 +273,11 @@ static int exynos_ehci_remove(struct platform_device *pdev)
 
      clk_disable_unprepare(exynos_ehci->clk);
 
+     if (!IS_ERR(exynos_ehci->vdd33))
+             regulator_disable(exynos_ehci->vdd33);
+     if (!IS_ERR(exynos_ehci->vdd10))
+             regulator_disable(exynos_ehci->vdd10);
+
      usb_put_hcd(hcd);
 
      return 0;

drivers/usb/host/ehci-exynos.c static int exynos_ehci_suspend(struct device *dev) · line 307

Quoted 8 lines
drivers/usb/host/ehci-exynos.c +5 -0
@@ -268,6 +300,11 @@ static int exynos_ehci_suspend(struct device *dev)
 
      clk_disable_unprepare(exynos_ehci->clk);
 
+     if (!IS_ERR(exynos_ehci->vdd33))
+             regulator_disable(exynos_ehci->vdd33);
+     if (!IS_ERR(exynos_ehci->vdd10))
+             regulator_disable(exynos_ehci->vdd10);
+

Is EHCI a wakeup source? If yes then how disabling regulators during suspend affects waking up process?

Best regards,
Krzysztof

#4 lore raw

2015-06-08 13:21 GMT+09:00 Anand Moon <[email protected]>:

Quoted 34 lines

Hi Krzysztof ,

Quoted 31 lines · Krzysztof Kozlowski
Quoted 21 lines · Anand Moon

Facilitate getting required 3.3V and 1.0V VDD supply for EHCI controller on Exynos.

With the patches for regulators' nodes merged in 3.15:
c8c253f ARM: dts: Add regulator entries to smdk5420 275dcd2 ARM: dts: add max77686 pmic node for smdk5250, the exynos systems turn on only minimal number of regulators.

Until now, the VDD regulator supplies were either turned on by the bootloader, or the regulators were enabled by default in the kernel, so that the controller drivers did not need to care about turning on these regulators on their own. This was rather bad about these controller drivers.
So ensuring now that the controller driver requests the necessary VDD regulators (if available, unless there are direct VDD rails), and enable them so as to make them working.

Quoted 5 lines

---
Initial version of this patch was part of following series, though they are not dependent on each other, resubmitting after rebasing.

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-June/266418.html

So you just took Vivek's patch along with all the credits... That is not how we usually do this.

Quoted 8 lines
Quoted 3 lines

I would expect that rebasing a patch won't change the author unless this is fine with Vivek.

Sorry If I have done some mistake on my part. I just looked at below mail chain. Before I send it.

http://www.spinics.net/lists/linux-samsung-soc/msg44136.html

I don't get it. The patch you are referring to has a proper "From" field. So please use it as an example.

Quoted 3 lines

I don't want to take any credit out of it. I just re-base on the new kernel. I could not test this patch as it meant for exynos5440 boards.

Are you sure? I think the driver is used on almost all of Exynos SoCs (Exynos4, Exynos5250, Exynos542x).

Untested code should not go to the kernel. Additionally you should mark it as not-tested. Marking such patch as non-tested could help you finding some independent tests (tests performed by someone else).

To summarize my point of view:
1. Unless Vivek's says otherwise, please give him the credits with proper "from" field.
2. Issues mentioned in previous mail should be addressed (missing IS_ERR(), how disabling the regulator during suspend affects waking up).
3. The patchset must be tested, even after rebasing.

Best regards,
Krzysztof

#5 lore raw

Hi,

On Monday, June 08, 2015 10:44 AM, "Krzysztof Kozlowski" <[email protected]> wrote:

my apologies for being late in replying to this thread.

Quoted 40 lines

2015-06-08 13:21 GMT+09:00 Anand Moon <[email protected]>:

Quoted 39 lines

Hi Krzysztof ,

Quoted 34 lines · Krzysztof Kozlowski
Quoted 21 lines · Anand Moon

Facilitate getting required 3.3V and 1.0V VDD supply for EHCI controller on Exynos.

With the patches for regulators' nodes merged in 3.15:
c8c253f ARM: dts: Add regulator entries to smdk5420 275dcd2 ARM: dts: add max77686 pmic node for smdk5250, the exynos systems turn on only minimal number of regulators.

Until now, the VDD regulator supplies were either turned on by the bootloader, or the regulators were enabled by default in the kernel, so that the controller drivers did not need to care about turning on these regulators on their own. This was rather bad about these controller drivers.
So ensuring now that the controller driver requests the necessary VDD regulators (if available, unless there are direct VDD rails), and enable them so as to make them working.

Quoted 5 lines

---
Initial version of this patch was part of following series, though they are not dependent on each other, resubmitting after rebasing.

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-June/266418.html

So you just took Vivek's patch along with all the credits... That is not how we usually do this.

I would expect that rebasing a patch won't change the author unless this is fine with Vivek.

Quoted 11 lines
Quoted 4 lines

Sorry If I have done some mistake on my part. I just looked at below mail chain. Before I send it.

http://www.spinics.net/lists/linux-samsung-soc/msg44136.html

I don't get it. The patch you are referring to has a proper "From" field. So please use it as an example.

Quoted 3 lines

I don't want to take any credit out of it. I just re-base on the new kernel.

Perhaps, you would have maintained the authorship !

Quoted 4 lines
Quoted 1 line

I could not test this patch as it meant for exynos5440 boards.

Are you sure? I think the driver is used on almost all of Exynos SoCs (Exynos4, Exynos5250, Exynos542x).

That's correct, as pointed by Krzysztof Kozlowski, the driver is same for Exynos4 and Exynos5 series
of SoCs.

Quoted 11 lines

Untested code should not go to the kernel. Additionally you should mark it as not-tested. Marking such patch as non-tested could help you finding some independent tests (tests performed by someone else).

To summarize my point of view:
1. Unless Vivek's says otherwise, please give him the credits with proper "from" field.
2. Issues mentioned in previous mail should be addressed (missing IS_ERR(), how disabling the regulator during suspend affects waking up).
3. The patchset must be tested, even after rebasing.

Unfortunately, I got busy with a different project and lost track of the patches posted upstream.
If it's not too late I can post a rebased version of the patch with previous review comments addressed.

Quoted 3 lines

Best regards,
Krzysztof

author
#6 lore raw
Quoted 93 lines · Vivek Gautam

Hi,

On Monday, June 08, 2015 10:44 AM, "Krzysztof Kozlowski" <[email protected]> wrote:

my apologies for being late in replying to this thread.

Quoted 45 lines

2015-06-08 13:21 GMT+09:00 Anand Moon <[email protected]>:

Quoted 44 lines

Hi Krzysztof ,

Quoted 38 lines · Krzysztof Kozlowski
Quoted 22 lines · Anand Moon

Facilitate getting required 3.3V and 1.0V VDD supply for EHCI controller on Exynos.

With the patches for regulators' nodes merged in 3.15:
c8c253f ARM: dts: Add regulator entries to smdk5420 275dcd2 ARM: dts: add max77686 pmic node for smdk5250, the exynos systems turn on only minimal number of regulators.

Until now, the VDD regulator supplies were either turned on by the bootloader, or the regulators were enabled by default in the kernel, so that the controller drivers did not need to care about turning on these regulators on their own. This was rather bad about these controller drivers.
So ensuring now that the controller driver requests the necessary VDD regulators (if available, unless there are direct VDD rails), and enable them so as to make them working.

Quoted 6 lines

---
Initial version of this patch was part of following series, though they are not dependent on each other, resubmitting after rebasing.

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-June/266418.html

So you just took Vivek's patch along with all the credits... That is not how we usually do this.

I would expect that rebasing a patch won't change the author unless this is fine with Vivek.

Quoted 12 lines
Quoted 4 lines

Sorry If I have done some mistake on my part. I just looked at below mail chain. Before I send it.

http://www.spinics.net/lists/linux-samsung-soc/msg44136.html

I don't get it. The patch you are referring to has a proper "From" field. So please use it as an example.

Quoted 3 lines

I don't want to take any credit out of it. I just re-base on the new kernel.

Perhaps, you would have maintained the authorship !

Quoted 5 lines
Quoted 1 line

I could not test this patch as it meant for exynos5440 boards.

Are you sure? I think the driver is used on almost all of Exynos SoCs (Exynos4, Exynos5250, Exynos542x).

That's correct, as pointed by Krzysztof Kozlowski, the driver is same for Exynos4 and Exynos5 series
of SoCs.

Quoted 11 lines

Untested code should not go to the kernel. Additionally you should mark it as not-tested. Marking such patch as non-tested could help you finding some independent tests (tests performed by someone else).

To summarize my point of view:
1. Unless Vivek's says otherwise, please give him the credits with proper "from" field.
2. Issues mentioned in previous mail should be addressed (missing IS_ERR(), how disabling the regulator during suspend affects waking up).
3. The patchset must be tested, even after rebasing.

Quoted 10 lines

Unfortunately, I got busy with a different project and lost track of the patches posted upstream.
If it's not too late I can post a rebased version of the patch with previous review comments addressed.

Quoted 3 lines

Best regards,
Krzysztof

Hi All,

I have learned my lesson not to interfere in others work. It will never happen from my side again.

Please accept my apology.

-Anand Moon

#7 lore raw

Hi,

On Monday, June 08, 2015 3:50 PM, "Anand Moon" <[email protected]>

Quoted 105 lines · Vivek Gautam
Quoted 93 lines

Hi,

On Monday, June 08, 2015 10:44 AM, "Krzysztof Kozlowski" <[email protected]> wrote:

my apologies for being late in replying to this thread.

Quoted 45 lines

2015-06-08 13:21 GMT+09:00 Anand Moon <[email protected]>:

Quoted 44 lines

Hi Krzysztof ,

Quoted 38 lines · Krzysztof Kozlowski
Quoted 22 lines · Anand Moon

Facilitate getting required 3.3V and 1.0V VDD supply for EHCI controller on Exynos.

With the patches for regulators' nodes merged in 3.15:
c8c253f ARM: dts: Add regulator entries to smdk5420 275dcd2 ARM: dts: add max77686 pmic node for smdk5250, the exynos systems turn on only minimal number of regulators.

Until now, the VDD regulator supplies were either turned on by the bootloader, or the regulators were enabled by default in the kernel, so that the controller drivers did not need to care about turning on these regulators on their own. This was rather bad about these controller drivers.
So ensuring now that the controller driver requests the necessary VDD regulators (if available, unless there are direct VDD rails), and enable them so as to make them working.

Quoted 6 lines

---
Initial version of this patch was part of following series, though they are not dependent on each other, resubmitting after rebasing.

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-June/266418.html

So you just took Vivek's patch along with all the credits... That is not how we usually do this.

I would expect that rebasing a patch won't change the author unless this is fine with Vivek.

Quoted 12 lines
Quoted 4 lines

Sorry If I have done some mistake on my part. I just looked at below mail chain. Before I send it.

http://www.spinics.net/lists/linux-samsung-soc/msg44136.html

I don't get it. The patch you are referring to has a proper "From" field. So please use it as an example.

Quoted 3 lines

I don't want to take any credit out of it. I just re-base on the new kernel.

Perhaps, you would have maintained the authorship !

Quoted 5 lines
Quoted 1 line

I could not test this patch as it meant for exynos5440 boards.

Are you sure? I think the driver is used on almost all of Exynos SoCs (Exynos4, Exynos5250, Exynos542x).

That's correct, as pointed by Krzysztof Kozlowski, the driver is same for Exynos4 and Exynos5 series
of SoCs.

Quoted 11 lines

Untested code should not go to the kernel. Additionally you should mark it as not-tested. Marking such patch as non-tested could help you finding some independent tests (tests performed by someone else).

To summarize my point of view:
1. Unless Vivek's says otherwise, please give him the credits with proper "from" field.
2. Issues mentioned in previous mail should be addressed (missing IS_ERR(), how disabling the regulator during suspend affects waking up).
3. The patchset must be tested, even after rebasing.

Quoted 10 lines

Unfortunately, I got busy with a different project and lost track of the patches posted upstream.
If it's not too late I can post a rebased version of the patch with previous review comments addressed.

Quoted 3 lines

Best regards,
Krzysztof

Quoted 6 lines

Hi All,

I have learned my lesson not to interfere in others work. It will never happen from my side again.

Please accept my apology.

Please don't apologise. It's just a part of learning; learning how linux mainlining works. Hope you understand. :-)

thanks
Vivek

#8 lore raw
In reply to Anand Moon

W dniu 08.06.2015 o 19:20, Anand Moon pisze:

Quoted 3 lines · Vivek Gautam
Quoted 2 lines

Hi,

(...)

Quoted 28 lines
Quoted 17 lines
Quoted 11 lines · Krzysztof Kozlowski

Untested code should not go to the kernel. Additionally you should mark it as not-tested. Marking such patch as non-tested could help you finding some independent tests (tests performed by someone else).

To summarize my point of view:
1. Unless Vivek's says otherwise, please give him the credits with proper "from" field.
2. Issues mentioned in previous mail should be addressed (missing IS_ERR(), how disabling the regulator during suspend affects waking up).
3. The patchset must be tested, even after rebasing.

Quoted 10 lines

Unfortunately, I got busy with a different project and lost track of the patches posted upstream.
If it's not too late I can post a rebased version of the patch with previous review comments addressed.

Quoted 3 lines

Best regards,
Krzysztof

Quoted 6 lines

Hi All,

I have learned my lesson not to interfere in others work. It will never happen from my side again.

Please accept my apology.

Sure, no problem. Mistakes happen (I make a lot of them too), just learn from them.

Javier explained what was the proper way to do this - retain original author of the patch. Your signed-off-by was correct.

In fact the kernel SubmittingPatches is worth reading from time to time:
https://www.kernel.org/doc/Documentation/SubmittingPatches
Under chapter 11th ("Sign your work") in paragraph starting with "If you are a subsystem or branch maintainer" - it explains how to mention changes when modifying someone's else patch.

You can also look at example from Bartlomiej, how hge did this when he took Thomas' patches:
https://lkml.org/lkml/2015/4/3/387
However his case is kind of special because he made such a lot of changes and made such huge effort that in my humble opinion he could take the authorship of patch. But in this case the changelog is huge. And he tested it. Extensively. However he did not change the author of patches :) and you can just look at this work as an example.

Best regards,
Krzysztof

#9 lore raw
In reply to Krzysztof Kozlowski

Hello,

On Mon, Jun 8, 2015 at 7:14 AM, Krzysztof Kozlowski <[email protected]> wrote:

[...]

Quoted 9 lines

To summarize my point of view:
1. Unless Vivek's says otherwise, please give him the credits with proper "from" field.
2. Issues mentioned in previous mail should be addressed (missing IS_ERR(), how disabling the regulator during suspend affects waking up).
3. The patchset must be tested, even after rebasing.

Agreed with all the points.

Anand,

An easy way to preserve authorship when rebasing patches is to use the git command author option. As an example you can execute the following command:

$ git commit -a -s --author='Vivek Gautam <[email protected]>'
Quoted 2 lines

Best regards,
Krzysztof

Best regards,
Javier

#10 lore raw

2015-06-08 15:42 GMT+09:00 Javier Martinez Canillas <[email protected]>:

Quoted 19 lines

Hello,

On Mon, Jun 8, 2015 at 7:14 AM, Krzysztof Kozlowski <[email protected]> wrote:

[...]

Quoted 9 lines

To summarize my point of view:
1. Unless Vivek's says otherwise, please give him the credits with proper "from" field.
2. Issues mentioned in previous mail should be addressed (missing IS_ERR(), how disabling the regulator during suspend affects waking up).
3. The patchset must be tested, even after rebasing.

Agreed with all the points.

Quoted 7 lines

Anand,

An easy way to preserve authorship when rebasing patches is to use the git command author option. As an example you can execute the following command:

$ git commit -a -s --author='Vivek Gautam <[email protected]>'

By default "git am" and "git format-patch" preserve the author of a patch so usually this step is not necessary. Unless the patch is applied in a different way... :)

Best regards,
Krzysztof

#11 lore raw

Hello Krzysztof,

Quoted 26 lines · Krzysztof Kozlowski

2015-06-08 15:42 GMT+09:00 Javier Martinez Canillas <[email protected]>:

Quoted 25 lines

Hello,

On Mon, Jun 8, 2015 at 7:14 AM, Krzysztof Kozlowski <[email protected]> wrote:

[...]

Quoted 9 lines

To summarize my point of view:
1. Unless Vivek's says otherwise, please give him the credits with proper "from" field.
2. Issues mentioned in previous mail should be addressed (missing IS_ERR(), how disabling the regulator during suspend affects waking up).
3. The patchset must be tested, even after rebasing.

Agreed with all the points.

Anand,

An easy way to preserve authorship when rebasing patches is to use the git command author option. As an example you can execute the following command:

Quoted 6 lines
Quoted 1 line
$ git commit -a -s --author='Vivek Gautam <[email protected]>'

By default "git am" and "git format-patch" preserve the author of a patch so usually this step is not necessary. Unless the patch is applied in a different way... :)

That is correct but if an old patch still applies cleanly on top of current's tree, then there is no need to do a rebase right? ;-)

I mean, git am is not as smart as the patch command for example to detect when the line numbers mentioned in the patch are incorrect and does not attempt to find the correct place to apply each hunk of the patch (at least by default, I don't know if there is an option).

Which IIUC is what Anand had to do so in that case you need to manually commit again but using the original patch author.

Quoted 2 lines

Best regards,
Krzysztof

Best regards,
Javier

#12 lore raw
In reply to Krzysztof Kozlowski

--------------------------------------------------
From: "Krzysztof Kozlowski" <[email protected]>
Sent: Monday, June 08, 2015 7:40 AM
To: "Anand Moon" <[email protected]>; "Rob Herring" <[email protected]>; "Pawel Moll" <[email protected]>; "Mark Rutland" <[email protected]>; "Ian Campbell" <[email protected]>; "Kumar Gala" <[email protected]>; "Kukjin Kim" <[email protected]>; "Alan Stern" <[email protected]>; "Greg Kroah-Hartman" <[email protected]>; "Vivek Gautam" <[email protected]>; "Felipe Balbi" <[email protected]>
Cc: <[email protected]>; <[email protected]>; <[email protected]>; <[email protected]>; <[email protected]>; "Jingoo Han" <[email protected]>
Subject: Re: [RESEND 1/2] usb: ehci-exynos: Make provision for vdd regulators

Quoted 149 lines · Anand Moon
Quoted 21 lines

Facilitate getting required 3.3V and 1.0V VDD supply for EHCI controller on Exynos.

With the patches for regulators' nodes merged in 3.15:
c8c253f ARM: dts: Add regulator entries to smdk5420 275dcd2 ARM: dts: add max77686 pmic node for smdk5250, the exynos systems turn on only minimal number of regulators.

Until now, the VDD regulator supplies were either turned on by the bootloader, or the regulators were enabled by default in the kernel, so that the controller drivers did not need to care about turning on these regulators on their own. This was rather bad about these controller drivers.
So ensuring now that the controller driver requests the necessary VDD regulators (if available, unless there are direct VDD rails), and enable them so as to make them working.

Quoted 5 lines

---
Initial version of this patch was part of following series, though they are not dependent on each other, resubmitting after rebasing.

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-June/266418.html

So you just took Vivek's patch along with all the credits... That is not how we usually do this.

I would expect that rebasing a patch won't change the author unless this is fine with Vivek.

Quoted 75 lines
---
 .../devicetree/bindings/usb/exynos-usb.txt         |  2 +
 drivers/usb/host/ehci-exynos.c                     | 55 
+++++++++++++++++++++-
 2 files changed, 56 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/usb/exynos-usb.txt +2 -0
index 9b4dbe3..776fa03 100644
@@ -23,6 +23,8 @@ Required properties:
 Optional properties:
  - samsung,vbus-gpio:  if present, specifies the GPIO that
    needs to be pulled up for the bus to be powered.
+ - vdd33-supply: handle to 3.3V Vdd supply regulator for the controller.
+ - vdd10-supply: handle to 1.0V Vdd supply regulator for the controller.
 
 Example:
 
drivers/usb/host/ehci-exynos.c +3 -0
index df538fd..4f8f9d2 100644
@@ -21,6 +21,7 @@
 #include <linux/of_gpio.h>
 #include <linux/phy/phy.h>
 #include <linux/platform_device.h>
+#include <linux/regulator/consumer.h>
 #include <linux/usb.h>
 #include <linux/usb/hcd.h>
 
@@ -45,6 +46,8 @@ static struct hc_driver __read_mostly 
 exynos_ehci_hc_driver;
 struct exynos_ehci_hcd {
 struct clk *clk;
 struct phy *phy[PHY_NUMBER];
+ struct regulator *vdd33;
+ struct regulator *vdd10;
 };
 

#define to_exynos_ehci(hcd) (struct exynos_ehci_hcd
*)(hcd_to_ehci(hcd)->priv)

drivers/usb/host/ehci-exynos.c +21 -1
@@ -170,7 +173,27 @@ static int exynos_ehci_probe(struct platform_device 
 *pdev)
 
 err = exynos_ehci_get_phy(&pdev->dev, exynos_ehci);
 if (err)
- goto fail_clk;
+ goto fail_regulator1;
+
+ exynos_ehci->vdd33 = devm_regulator_get_optional(&pdev->dev, "vdd33");
+ if (!IS_ERR(exynos_ehci->vdd33)) {
+ err = regulator_enable(exynos_ehci->vdd33);
+ if (err) {
+ dev_err(&pdev->dev,
+ "Failed to enable 3.3V Vdd supply\n");
+ goto fail_regulator1;
+ }
+ }
+
+ exynos_ehci->vdd10 = devm_regulator_get_optional(&pdev->dev, "vdd10");
+ if (!IS_ERR(exynos_ehci->vdd10)) {
+ err = regulator_enable(exynos_ehci->vdd10);
+ if (err) {
+ dev_err(&pdev->dev,
+ "Failed to enable 1.0V Vdd supply\n");
+ goto fail_regulator2;
+ }
+ }
 
 skip_phy:

drivers/usb/host/ehci-exynos.c fail_add_hcd: · line 259

Quoted 6 lines
drivers/usb/host/ehci-exynos.c +3 -0
@@ -231,6 +254,10 @@ fail_add_hcd:
 fail_io:
 clk_disable_unprepare(exynos_ehci->clk);
 fail_clk:
+ regulator_disable(exynos_ehci->vdd10);
+fail_regulator2:
+ regulator_disable(exynos_ehci->vdd33);

if (!IS_ERR()).

Quoted 18 lines
drivers/usb/host/ehci-exynos.c +6 -0
+fail_regulator1:
 usb_put_hcd(hcd);
 return err;
 }
@@ -246,6 +273,11 @@ static int exynos_ehci_remove(struct platform_device 
 *pdev)
 
 clk_disable_unprepare(exynos_ehci->clk);
 
+ if (!IS_ERR(exynos_ehci->vdd33))
+ regulator_disable(exynos_ehci->vdd33);
+ if (!IS_ERR(exynos_ehci->vdd10))
+ regulator_disable(exynos_ehci->vdd10);
+
 usb_put_hcd(hcd);
 

return 0;

drivers/usb/host/ehci-exynos.c static int exynos_ehci_suspend(struct device *dev) · line 307

Quoted 8 lines
drivers/usb/host/ehci-exynos.c +5 -0
@@ -268,6 +300,11 @@ static int exynos_ehci_suspend(struct device *dev)
 
 clk_disable_unprepare(exynos_ehci->clk);
 
+ if (!IS_ERR(exynos_ehci->vdd33))
+ regulator_disable(exynos_ehci->vdd33);
+ if (!IS_ERR(exynos_ehci->vdd10))
+ regulator_disable(exynos_ehci->vdd10);
+

Is EHCI a wakeup source? If yes then how disabling regulators during suspend affects waking up process?

Quoted 1 line

From my knowledge of Exynos5 USB controller, EHCI could not be used as the

wake up source
for suspend.
That's the reason we tried this approach of gating the regulator supplies to the controller during
suspend.

Quoted 4 lines

Best regards,
Krzysztof