* [PATCH V1 1/1] usb/host: Let usb phy shutdown later
@ 2022-04-12 12:25 Surong Pang
2022-04-19 14:45 ` Mathias Nyman
0 siblings, 1 reply; 10+ messages in thread
From: Surong Pang @ 2022-04-12 12:25 UTC (permalink / raw)
To: mathias.nyman, gregkh; +Cc: linux-usb, linux-kernel
From: Surong Pang <surong.pang@unisoc.com>
Let usb phy shutdown later in xhci_plat_remove function.
Some phy driver doesn't divide 3.0/2.0 very clear.
If calls usb_phy_shutdown earlier than usb_remove_hcd(hcd),
It will case 10s cmd timeout issue.
Call usb phy shutdown later has better compatibility.
Signed-off-by: Surong Pang <surong.pang@unisoc.com>
---
drivers/usb/host/xhci-plat.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index 649ffd861b44..dc73a81cbe9b 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -390,7 +390,6 @@ static int xhci_plat_remove(struct platform_device *dev)
usb_remove_hcd(shared_hcd);
xhci->shared_hcd = NULL;
- usb_phy_shutdown(hcd->usb_phy);
usb_remove_hcd(hcd);
usb_put_hcd(shared_hcd);
@@ -398,6 +397,7 @@ static int xhci_plat_remove(struct platform_device *dev)
clk_disable_unprepare(clk);
clk_disable_unprepare(reg_clk);
usb_put_hcd(hcd);
+ usb_phy_shutdown(hcd->usb_phy);
pm_runtime_disable(&dev->dev);
pm_runtime_put_noidle(&dev->dev);
--
2.17.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V1 1/1] usb/host: Let usb phy shutdown later
2022-04-12 12:25 [PATCH V1 1/1] usb/host: Let usb phy shutdown later Surong Pang
@ 2022-04-19 14:45 ` Mathias Nyman
2022-04-22 2:10 ` surong pang
0 siblings, 1 reply; 10+ messages in thread
From: Mathias Nyman @ 2022-04-19 14:45 UTC (permalink / raw)
To: Surong Pang, mathias.nyman, gregkh; +Cc: linux-usb, linux-kernel
On 12.4.2022 15.25, Surong Pang wrote:
> From: Surong Pang <surong.pang@unisoc.com>
>
> Let usb phy shutdown later in xhci_plat_remove function.
> Some phy driver doesn't divide 3.0/2.0 very clear.
> If calls usb_phy_shutdown earlier than usb_remove_hcd(hcd),
> It will case 10s cmd timeout issue.
>
> Call usb phy shutdown later has better compatibility.
>
> Signed-off-by: Surong Pang <surong.pang@unisoc.com>
> ---
> drivers/usb/host/xhci-plat.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> index 649ffd861b44..dc73a81cbe9b 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -390,7 +390,6 @@ static int xhci_plat_remove(struct platform_device *dev)
>
> usb_remove_hcd(shared_hcd);
> xhci->shared_hcd = NULL;
> - usb_phy_shutdown(hcd->usb_phy);
>
> usb_remove_hcd(hcd);
> usb_put_hcd(shared_hcd);
> @@ -398,6 +397,7 @@ static int xhci_plat_remove(struct platform_device *dev)
> clk_disable_unprepare(clk);
> clk_disable_unprepare(reg_clk);
> usb_put_hcd(hcd);
> + usb_phy_shutdown(hcd->usb_phy);
hcd might be freed already here.
maybe call usb_phy_shutdown(hcd->usb_phy) before usb_put_hcd(hcd)
-Mathias
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V1 1/1] usb/host: Let usb phy shutdown later
2022-04-19 14:45 ` Mathias Nyman
@ 2022-04-22 2:10 ` surong pang
2022-04-22 7:53 ` Mathias Nyman
0 siblings, 1 reply; 10+ messages in thread
From: surong pang @ 2022-04-22 2:10 UTC (permalink / raw)
To: Mathias Nyman
Cc: mathias.nyman, Greg KH, linux-usb, linux-kernel, Orson.Zhai, yunguo.wu
shared_hcd might be freed already here, but hcd should not be freed
here, because "usb_put_hcd(hcd)" is called later.
Mathias Nyman <mathias.nyman@linux.intel.com> 于2022年4月19日周二 22:43写道:
>
> On 12.4.2022 15.25, Surong Pang wrote:
> > From: Surong Pang <surong.pang@unisoc.com>
> >
> > Let usb phy shutdown later in xhci_plat_remove function.
> > Some phy driver doesn't divide 3.0/2.0 very clear.
> > If calls usb_phy_shutdown earlier than usb_remove_hcd(hcd),
> > It will case 10s cmd timeout issue.
> >
> > Call usb phy shutdown later has better compatibility.
> >
> > Signed-off-by: Surong Pang <surong.pang@unisoc.com>
> > ---
> > drivers/usb/host/xhci-plat.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> > index 649ffd861b44..dc73a81cbe9b 100644
> > --- a/drivers/usb/host/xhci-plat.c
> > +++ b/drivers/usb/host/xhci-plat.c
> > @@ -390,7 +390,6 @@ static int xhci_plat_remove(struct platform_device *dev)
> >
> > usb_remove_hcd(shared_hcd);
> > xhci->shared_hcd = NULL;
> > - usb_phy_shutdown(hcd->usb_phy);
> >
> > usb_remove_hcd(hcd);
> > usb_put_hcd(shared_hcd);
> > @@ -398,6 +397,7 @@ static int xhci_plat_remove(struct platform_device *dev)
> > clk_disable_unprepare(clk);
> > clk_disable_unprepare(reg_clk);
> > usb_put_hcd(hcd);
> > + usb_phy_shutdown(hcd->usb_phy);
>
> hcd might be freed already here.
> maybe call usb_phy_shutdown(hcd->usb_phy) before usb_put_hcd(hcd)
>
> -Mathias
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V1 1/1] usb/host: Let usb phy shutdown later
2022-04-22 2:10 ` surong pang
@ 2022-04-22 7:53 ` Mathias Nyman
2022-04-22 10:43 ` surong pang
0 siblings, 1 reply; 10+ messages in thread
From: Mathias Nyman @ 2022-04-22 7:53 UTC (permalink / raw)
To: surong pang
Cc: mathias.nyman, Greg KH, linux-usb, linux-kernel, Orson.Zhai, yunguo.wu
On 22.4.2022 5.10, surong pang wrote:
> shared_hcd might be freed already here, but hcd should not be freed
> here, because "usb_put_hcd(hcd)" is called later.
To me it still looks like this patch calls usb_phy_shutdown(hcd->usb_phy) _after_
usb_put_hcd(hcd):
>>> @@ -398,6 +397,7 @@ static int xhci_plat_remove(struct platform_device *dev)
>>> clk_disable_unprepare(clk);
>>> clk_disable_unprepare(reg_clk);
>>> usb_put_hcd(hcd);
>>> + usb_phy_shutdown(hcd->usb_phy);
shared hcd was freed even earlier, before disabling the clocks.
Thanks
Mathias
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V1 1/1] usb/host: Let usb phy shutdown later
2022-04-22 7:53 ` Mathias Nyman
@ 2022-04-22 10:43 ` surong pang
2022-04-22 11:59 ` Mathias Nyman
0 siblings, 1 reply; 10+ messages in thread
From: surong pang @ 2022-04-22 10:43 UTC (permalink / raw)
To: Mathias Nyman
Cc: mathias.nyman, Greg KH, linux-usb, linux-kernel, Orson.Zhai, yunguo.wu
>>> @@ -398,6 +397,7 @@ static int xhci_plat_remove(struct platform_device *dev)
>>> clk_disable_unprepare(clk);
>>> clk_disable_unprepare(reg_clk);
>>> + usb_phy_shutdown(hcd->usb_phy);
>>> usb_put_hcd(hcd);
Is it ok to put usb_phy_shutdown before usb_put_hcd(hcd)? hcd is
released at usb_put_hcd.
UNISOC DWC3 phy is not divided USB 2.0/3.0 phy clearly. Yes, it's
UNISOC's issue.
It UNISOC's dtsi: phys = <&ssphy>, <&ssphy>;
If to shutdown phy too earlier, it will cost 10s timeout to do xhci_reset.
usb_remmove_hcd --> usb_stop_hcd --> xhci_stop --> xhci_reset -->
xhci_handshake(&xhci->op_regs->command, CMD_RESET, 0, 10 * 1000 *1000)
I want to know this change is acceptable or not?
hcd->usb_phy = devm_usb_get_phy_by_phandle(sysdev, "usb-phy", 0);
Why in xhci_plat_remove, just to shutdown "usb-phy"[0], not to
shutdown "usb-phy"[1] ?
Mathias Nyman <mathias.nyman@linux.intel.com> 于2022年4月22日周五 15:51写道:
>
> On 22.4.2022 5.10, surong pang wrote:
> > shared_hcd might be freed already here, but hcd should not be freed
> > here, because "usb_put_hcd(hcd)" is called later.
>
> To me it still looks like this patch calls usb_phy_shutdown(hcd->usb_phy) _after_
> usb_put_hcd(hcd):
>
> >>> @@ -398,6 +397,7 @@ static int xhci_plat_remove(struct platform_device *dev)
> >>> clk_disable_unprepare(clk);
> >>> clk_disable_unprepare(reg_clk);
> >>> usb_put_hcd(hcd);
> >>> + usb_phy_shutdown(hcd->usb_phy);
>
>
> shared hcd was freed even earlier, before disabling the clocks.
>
> Thanks
> Mathias
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V1 1/1] usb/host: Let usb phy shutdown later
2022-04-22 10:43 ` surong pang
@ 2022-04-22 11:59 ` Mathias Nyman
2022-04-24 1:57 ` [PATCH V2] " Surong Pang
0 siblings, 1 reply; 10+ messages in thread
From: Mathias Nyman @ 2022-04-22 11:59 UTC (permalink / raw)
To: surong pang
Cc: mathias.nyman, Greg KH, linux-usb, linux-kernel, Orson.Zhai, yunguo.wu
On 22.4.2022 13.43, surong pang wrote:
>>>> @@ -398,6 +397,7 @@ static int xhci_plat_remove(struct platform_device *dev)
>>>> clk_disable_unprepare(clk);
>>>> clk_disable_unprepare(reg_clk);
>>>> + usb_phy_shutdown(hcd->usb_phy);
>>>> usb_put_hcd(hcd);
>
> Is it ok to put usb_phy_shutdown before usb_put_hcd(hcd)? hcd is
> released at usb_put_hcd.
yes, above looks good.
>
> UNISOC DWC3 phy is not divided USB 2.0/3.0 phy clearly. Yes, it's
> UNISOC's issue.
> It UNISOC's dtsi: phys = <&ssphy>, <&ssphy>;
> If to shutdown phy too earlier, it will cost 10s timeout to do xhci_reset.
> usb_remmove_hcd --> usb_stop_hcd --> xhci_stop --> xhci_reset -->
> xhci_handshake(&xhci->op_regs->command, CMD_RESET, 0, 10 * 1000 *1000)
>
> I want to know this change is acceptable or not?
>
> hcd->usb_phy = devm_usb_get_phy_by_phandle(sysdev, "usb-phy", 0);
> Why in xhci_plat_remove, just to shutdown "usb-phy"[0], not to
> shutdown "usb-phy"[1] ?
xhci-plat.c only takes one phy at index 0, so we only shutdowns that one.
Looks like usb core hcd code has better phy handling when adding and
removing hcds. It supports multiple phys.
If possible use that instead.
See drivers/usb/core/hcd.c usb_add_hcd()
Thanks
-Mathias
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH V2] usb/host: Let usb phy shutdown later
2022-04-22 11:59 ` Mathias Nyman
@ 2022-04-24 1:57 ` Surong Pang
2022-04-26 11:53 ` Greg KH
0 siblings, 1 reply; 10+ messages in thread
From: Surong Pang @ 2022-04-24 1:57 UTC (permalink / raw)
To: mathias.nyman
Cc: mathias.nyman, gregkh, linux-kernel, linux-usb, surong.pang,
Orson.Zhai, yunguo.wu
From: Surong Pang <surong.pang@unisoc.com>
Let usb phy shutdown later in xhci_plat_remove function.
Some phy driver doesn't divide 3.0/2.0 very clear.
If calls usb_phy_shutdown earlier than usb_remove_hcd(hcd),
It will case 10s cmd timeout issue.
Call usb phy shutdown later has better compatibility.
Signed-off-by: Surong Pang <surong.pang@unisoc.com>
---
drivers/usb/host/xhci-plat.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index 649ffd861b44..fe492ed99cb7 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -390,13 +390,13 @@ static int xhci_plat_remove(struct platform_device *dev)
usb_remove_hcd(shared_hcd);
xhci->shared_hcd = NULL;
- usb_phy_shutdown(hcd->usb_phy);
usb_remove_hcd(hcd);
usb_put_hcd(shared_hcd);
clk_disable_unprepare(clk);
clk_disable_unprepare(reg_clk);
+ usb_phy_shutdown(hcd->usb_phy);
usb_put_hcd(hcd);
pm_runtime_disable(&dev->dev);
--
2.17.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V2] usb/host: Let usb phy shutdown later
2022-04-24 1:57 ` [PATCH V2] " Surong Pang
@ 2022-04-26 11:53 ` Greg KH
[not found] ` <CAEDbmAQmYQdMNY8sANnSuauBcsemrV1MFR3bB83JJ7cHNdWGmA@mail.gmail.com>
0 siblings, 1 reply; 10+ messages in thread
From: Greg KH @ 2022-04-26 11:53 UTC (permalink / raw)
To: Surong Pang
Cc: mathias.nyman, mathias.nyman, linux-kernel, linux-usb,
Orson.Zhai, yunguo.wu
On Sun, Apr 24, 2022 at 09:57:57AM +0800, Surong Pang wrote:
> From: Surong Pang <surong.pang@unisoc.com>
>
> Let usb phy shutdown later in xhci_plat_remove function.
> Some phy driver doesn't divide 3.0/2.0 very clear.
> If calls usb_phy_shutdown earlier than usb_remove_hcd(hcd),
> It will case 10s cmd timeout issue.
>
> Call usb phy shutdown later has better compatibility.
>
> Signed-off-by: Surong Pang <surong.pang@unisoc.com>
The subject should say "xhci-plat", right?
> ---
> drivers/usb/host/xhci-plat.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> index 649ffd861b44..fe492ed99cb7 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -390,13 +390,13 @@ static int xhci_plat_remove(struct platform_device *dev)
>
> usb_remove_hcd(shared_hcd);
> xhci->shared_hcd = NULL;
> - usb_phy_shutdown(hcd->usb_phy);
>
> usb_remove_hcd(hcd);
> usb_put_hcd(shared_hcd);
>
> clk_disable_unprepare(clk);
> clk_disable_unprepare(reg_clk);
> + usb_phy_shutdown(hcd->usb_phy);
> usb_put_hcd(hcd);
Does this fix a specific commit id?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-04-29 1:55 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-12 12:25 [PATCH V1 1/1] usb/host: Let usb phy shutdown later Surong Pang
2022-04-19 14:45 ` Mathias Nyman
2022-04-22 2:10 ` surong pang
2022-04-22 7:53 ` Mathias Nyman
2022-04-22 10:43 ` surong pang
2022-04-22 11:59 ` Mathias Nyman
2022-04-24 1:57 ` [PATCH V2] " Surong Pang
2022-04-26 11:53 ` Greg KH
[not found] ` <CAEDbmAQmYQdMNY8sANnSuauBcsemrV1MFR3bB83JJ7cHNdWGmA@mail.gmail.com>
2022-04-28 6:31 ` Greg KH
2022-04-29 1:54 ` [PATCH V2] xhci-plat: " surong pang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®