2019-01-11 09:46:48

by Anand Moon

[permalink] [raw]
Subject: [PATCH] ARM64: dts: meson-gxbb-odroidc2: Fix usb phy regulator warning

Add missing vin-supply 5V regulator node on usb_phy nodes needed
to power usb bus ports. Override the dr_mode from "host" to "peripheral"
for initialization of dwc2 usb0 phy node,changes fix the below
warning for usb initialization.

[ 1.203900] phy phy-c0000000.phy.0: USB ID detect failed!
[ 1.208048] phy phy-c0000000.phy.0: phy poweron failed --> -22
[ 1.213877] WARNING: CPU: 1 PID: 44 at drivers/regulator/core.c:2054 _regulator_put.part.11+0xf0/0xf8
[ 1.222953] Modules linked in:
[ 1.225976] CPU: 1 PID: 44 Comm: kworker/1:1 Not tainted 5.0.0-rc1-xc2ml #3
[ 1.232872] Hardware name: Hardkernel ODROID-C2 (DT)
[ 1.237794] Workqueue: events deferred_probe_work_func
[ 1.242878] pstate: 80000005 (Nzcv daif -PAN -UAO)
[ 1.247623] pc : _regulator_put.part.11+0xf0/0xf8
[ 1.252280] lr : regulator_put+0x34/0x48
[ 1.256159] sp : ffff00001176bb00
[ 1.259437] x29: ffff00001176bb00 x28: 0000000000000000
[ 1.264698] x27: ffff80007f31beb8 x26: ffff000010eeb7e0
[ 1.269959] x25: 0000000000000000 x24: 0000000000000009
[ 1.275220] x23: ffff00001176bbc8 x22: ffff80007ed9d500
[ 1.280482] x21: ffff0000111bd6c8 x20: ffff80007ed9d700
[ 1.285743] x19: ffff80007ed9d700 x18: 000000000000006f
[ 1.291004] x17: 0000000000000000 x16: 0000000000000000
[ 1.296265] x15: 0000000000000400 x14: 0000000000000400
[ 1.301527] x13: ff00000000000000 x12: ffffffffffffffff
[ 1.306788] x11: 0000000000000038 x10: 0000000000000040
[ 1.312049] x9 : ffff0000111d58b0 x8 : ffff0000111d58a8
[ 1.317310] x7 : ffff80007ed9db00 x6 : ffff80007ec21b00
[ 1.322571] x5 : ffff80007f400248 x4 : ffff80007fba9b00
[ 1.327833] x3 : ffff0000112d9eb8 x2 : ffff80007ec21b00
[ 1.333094] x1 : 0000000000000000 x0 : 0000000000000001
[ 1.338356] Call trace:
[ 1.340773] _regulator_put.part.11+0xf0/0xf8
[ 1.345085] regulator_put+0x34/0x48
[ 1.348621] regulator_bulk_free+0x30/0x50
[ 1.352675] devm_regulator_bulk_release+0x18/0x20
[ 1.357421] release_nodes+0x1b0/0x220
[ 1.361127] devres_release_all+0x34/0x50
[ 1.365094] really_probe+0xec/0x290
[ 1.368630] driver_probe_device+0x54/0xe8
[ 1.372684] __device_attach_driver+0xb8/0xe8
[ 1.376997] bus_for_each_drv+0x78/0xc8
[ 1.380792] __device_attach+0xd4/0x130
[ 1.384587] device_initial_probe+0x10/0x18
[ 1.388727] bus_probe_device+0x90/0x98
[ 1.392522] deferred_probe_work_func+0x6c/0xa0
[ 1.397010] process_one_work+0x1e0/0x318
[ 1.400975] worker_thread+0x228/0x428
[ 1.404684] kthread+0x124/0x128
[ 1.407876] ret_from_fork+0x10/0x18
[ 1.411410] ---[ end trace de5fd1b262c1f56a ]---
[ 1.416055] WARNING: CPU: 1 PID: 44 at drivers/regulator/core.c:2054 _regulator_put.part.11+0xf0/0xf8
[ 1.425123] Modules linked in:
[ 1.428144] CPU: 1 PID: 44 Comm: kworker/1:1 Tainted: G W 5.0.0-rc1-xc2ml #3
[ 1.436422] Hardware name: Hardkernel ODROID-C2 (DT)
[ 1.441340] Workqueue: events deferred_probe_work_func

Fixes: 5a0803bd5ae (ARM64: dts: meson-gxbb-odroidc2: Enable USB Nodes)
Cc: Martin Blumenstingl <[email protected]>
Cc: Jerome Brunet <[email protected]>
Cc: Neil Armstrong <[email protected]>
Signed-off-by: Anand Moon <[email protected]>
---
Fix the following power issue with usb device

[ 795.380156] usb 1-1.2: reset high-speed USB device number 3 using dwc2
[ 798.356073] usb 1-1.2: reset high-speed USB device number 3 using dwc2
[ 801.331999] usb 1-1.2: reset high-speed USB device number 3 using dwc2
[ 804.307919] usb 1-1.2: reset high-speed USB device number 3 using dwc2
[ 807.283844] usb 1-1.2: reset high-speed USB device number 3 using dwc2

[alarm@archl-c2m ~]$ lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 2: Dev 5, If 3, Class=Audio, Driver=, 480M
|__ Port 2: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 2: Dev 5, If 2, Class=Audio, Driver=, 480M
|__ Port 2: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 3: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 480M

Similar Fix is need for Odroid C1+ to power on the phy nodes
---
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
index 2e1cd5e3a246..b4e14ff614c4 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
@@ -28,6 +28,13 @@
reg = <0x0 0x0 0x0 0x80000000>;
};

+ p5v0: regulator-p5v0 {
+ compatible = "regulator-fixed";
+ regulator-name = "P5V0";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ };
+
usb_otg_pwr: regulator-usb-pwrs {
compatible = "regulator-fixed";

@@ -36,6 +43,8 @@
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;

+ vin-supply = <&p5v0>;
+
gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
@@ -303,6 +312,7 @@

&usb0 {
status = "okay";
+ dr_mode = "peripheral";
};

&usb1 {
--
2.19.1



2019-01-11 14:21:13

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH] ARM64: dts: meson-gxbb-odroidc2: Fix usb phy regulator warning

Hi Anand,

On 11/01/2019 10:22, Anand Moon wrote:
> Add missing vin-supply 5V regulator node on usb_phy nodes needed
> to power usb bus ports. Override the dr_mode from "host" to "peripheral"
> for initialization of dwc2 usb0 phy node,changes fix the below
> warning for usb initialization.

I would have switch the dr_mode to peripheral in another patch,
fix the regulator issue in this patch only.

Neil

>
> [ 1.203900] phy phy-c0000000.phy.0: USB ID detect failed!
> [ 1.208048] phy phy-c0000000.phy.0: phy poweron failed --> -22
> [ 1.213877] WARNING: CPU: 1 PID: 44 at drivers/regulator/core.c:2054 _regulator_put.part.11+0xf0/0xf8
> [ 1.222953] Modules linked in:
> [ 1.225976] CPU: 1 PID: 44 Comm: kworker/1:1 Not tainted 5.0.0-rc1-xc2ml #3
> [ 1.232872] Hardware name: Hardkernel ODROID-C2 (DT)
> [ 1.237794] Workqueue: events deferred_probe_work_func
> [ 1.242878] pstate: 80000005 (Nzcv daif -PAN -UAO)
> [ 1.247623] pc : _regulator_put.part.11+0xf0/0xf8
> [ 1.252280] lr : regulator_put+0x34/0x48
> [ 1.256159] sp : ffff00001176bb00
> [ 1.259437] x29: ffff00001176bb00 x28: 0000000000000000
> [ 1.264698] x27: ffff80007f31beb8 x26: ffff000010eeb7e0
> [ 1.269959] x25: 0000000000000000 x24: 0000000000000009
> [ 1.275220] x23: ffff00001176bbc8 x22: ffff80007ed9d500
> [ 1.280482] x21: ffff0000111bd6c8 x20: ffff80007ed9d700
> [ 1.285743] x19: ffff80007ed9d700 x18: 000000000000006f
> [ 1.291004] x17: 0000000000000000 x16: 0000000000000000
> [ 1.296265] x15: 0000000000000400 x14: 0000000000000400
> [ 1.301527] x13: ff00000000000000 x12: ffffffffffffffff
> [ 1.306788] x11: 0000000000000038 x10: 0000000000000040
> [ 1.312049] x9 : ffff0000111d58b0 x8 : ffff0000111d58a8
> [ 1.317310] x7 : ffff80007ed9db00 x6 : ffff80007ec21b00
> [ 1.322571] x5 : ffff80007f400248 x4 : ffff80007fba9b00
> [ 1.327833] x3 : ffff0000112d9eb8 x2 : ffff80007ec21b00
> [ 1.333094] x1 : 0000000000000000 x0 : 0000000000000001
> [ 1.338356] Call trace:
> [ 1.340773] _regulator_put.part.11+0xf0/0xf8
> [ 1.345085] regulator_put+0x34/0x48
> [ 1.348621] regulator_bulk_free+0x30/0x50
> [ 1.352675] devm_regulator_bulk_release+0x18/0x20
> [ 1.357421] release_nodes+0x1b0/0x220
> [ 1.361127] devres_release_all+0x34/0x50
> [ 1.365094] really_probe+0xec/0x290
> [ 1.368630] driver_probe_device+0x54/0xe8
> [ 1.372684] __device_attach_driver+0xb8/0xe8
> [ 1.376997] bus_for_each_drv+0x78/0xc8
> [ 1.380792] __device_attach+0xd4/0x130
> [ 1.384587] device_initial_probe+0x10/0x18
> [ 1.388727] bus_probe_device+0x90/0x98
> [ 1.392522] deferred_probe_work_func+0x6c/0xa0
> [ 1.397010] process_one_work+0x1e0/0x318
> [ 1.400975] worker_thread+0x228/0x428
> [ 1.404684] kthread+0x124/0x128
> [ 1.407876] ret_from_fork+0x10/0x18
> [ 1.411410] ---[ end trace de5fd1b262c1f56a ]---
> [ 1.416055] WARNING: CPU: 1 PID: 44 at drivers/regulator/core.c:2054 _regulator_put.part.11+0xf0/0xf8
> [ 1.425123] Modules linked in:
> [ 1.428144] CPU: 1 PID: 44 Comm: kworker/1:1 Tainted: G W 5.0.0-rc1-xc2ml #3
> [ 1.436422] Hardware name: Hardkernel ODROID-C2 (DT)
> [ 1.441340] Workqueue: events deferred_probe_work_func
>
> Fixes: 5a0803bd5ae (ARM64: dts: meson-gxbb-odroidc2: Enable USB Nodes)
> Cc: Martin Blumenstingl <[email protected]>
> Cc: Jerome Brunet <[email protected]>
> Cc: Neil Armstrong <[email protected]>
> Signed-off-by: Anand Moon <[email protected]>
> ---
> Fix the following power issue with usb device
>
> [ 795.380156] usb 1-1.2: reset high-speed USB device number 3 using dwc2
> [ 798.356073] usb 1-1.2: reset high-speed USB device number 3 using dwc2
> [ 801.331999] usb 1-1.2: reset high-speed USB device number 3 using dwc2
> [ 804.307919] usb 1-1.2: reset high-speed USB device number 3 using dwc2
> [ 807.283844] usb 1-1.2: reset high-speed USB device number 3 using dwc2
>
> [alarm@archl-c2m ~]$ lsusb -t
> /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
> |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
> |__ Port 1: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
> |__ Port 2: Dev 5, If 3, Class=Audio, Driver=, 480M
> |__ Port 2: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
> |__ Port 2: Dev 5, If 2, Class=Audio, Driver=, 480M
> |__ Port 2: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
> |__ Port 3: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 480M
>
> Similar Fix is need for Odroid C1+ to power on the phy nodes
> ---
> arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
> index 2e1cd5e3a246..b4e14ff614c4 100644
> --- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
> +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
> @@ -28,6 +28,13 @@
> reg = <0x0 0x0 0x0 0x80000000>;
> };
>
> + p5v0: regulator-p5v0 {
> + compatible = "regulator-fixed";
> + regulator-name = "P5V0";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + };
> +
> usb_otg_pwr: regulator-usb-pwrs {
> compatible = "regulator-fixed";
>
> @@ -36,6 +43,8 @@
> regulator-min-microvolt = <5000000>;
> regulator-max-microvolt = <5000000>;
>
> + vin-supply = <&p5v0>;
> +
> gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
> enable-active-high;
> };
> @@ -303,6 +312,7 @@
>
> &usb0 {
> status = "okay";
> + dr_mode = "peripheral";
> };
>
> &usb1 {
>


2019-01-11 20:53:32

by Anand Moon

[permalink] [raw]
Subject: Re: [PATCH] ARM64: dts: meson-gxbb-odroidc2: Fix usb phy regulator warning

Hi Neil,

On Fri, 11 Jan 2019 at 19:10, Neil Armstrong <[email protected]> wrote:
>
> Hi Anand,
>
> On 11/01/2019 10:22, Anand Moon wrote:
> > Add missing vin-supply 5V regulator node on usb_phy nodes needed
> > to power usb bus ports. Override the dr_mode from "host" to "peripheral"
> > for initialization of dwc2 usb0 phy node,changes fix the below
> > warning for usb initialization.
>
> I would have switch the dr_mode to peripheral in another patch,
> fix the regulator issue in this patch only.
>
> Neil
>
[snip]

Ok will split this into two patches and send after next dts updates.

Best Regards
-Anand

2019-01-11 21:00:15

by Kevin Hilman

[permalink] [raw]
Subject: Re: [PATCH] ARM64: dts: meson-gxbb-odroidc2: Fix usb phy regulator warning

Anand Moon <[email protected]> writes:

> Hi Neil,
>
> On Fri, 11 Jan 2019 at 19:10, Neil Armstrong <[email protected]> wrote:
>>
>> Hi Anand,
>>
>> On 11/01/2019 10:22, Anand Moon wrote:
>> > Add missing vin-supply 5V regulator node on usb_phy nodes needed
>> > to power usb bus ports. Override the dr_mode from "host" to "peripheral"
>> > for initialization of dwc2 usb0 phy node,changes fix the below
>> > warning for usb initialization.
>>
>> I would have switch the dr_mode to peripheral in another patch,
>> fix the regulator issue in this patch only.
>>
>> Neil
>>
> [snip]
>
> Ok will split this into two patches and send after next dts updates.
>

When you split, please be specific about which part fixes which
problem. e.g. it appears the dr_mode fixes the WARNING from the
regulator core by itself, and the vin-supply fixes the usb resets,
correct? It wasn't obvious upon reading the changelog.

In either case, feel free to add:

Tested-by: Kevin Hilman <[email protected]>

I tested on meson-gxbb-odroidc2 and it looks good.

Thanks for fixing this,

Kevin