On 6/22/23 04:48, Lim, Jit Loon wrote:
-----Original Message-----
From: Marek Vasut <[email protected]>
Sent: Wednesday, 21 June, 2023 10:19 PM
To: Lim, Jit Loon <[email protected]>; [email protected]
Cc: Jagan Teki <[email protected]>; Simon
<[email protected]>; Chee, Tien Fong
<[email protected]>; Hea, Kok Kiang <[email protected]>;
Lokanathan, Raaj <[email protected]>; Maniyam, Dinesh
<[email protected]>; Ng, Boon Khai <[email protected]>;
Yuslaimi, Alif Zakuan <[email protected]>; Chong, Teik Heng
<[email protected]>; Zamri, Muhammad Hazim Izzat
<[email protected]>; Tang, Sieu Mun
<[email protected]>; Bin Meng <[email protected]>
Subject: Re: [PATCH v1] HSD #18028953892: usb: xhci-dwc3: Fix USB3.1
controller register access in reset state
On 6/21/23 16:11, Jit Loon Lim wrote:
From: Teik Heng Chong <[email protected]>
The controller registers should not be accessed while the controller's
vcc_reset_n is asserted.
Signed-off-by: Teik Heng Chong <[email protected]>
Is this patch ported from Linux or is this custom development ?
Is there a matching patch/fix in Linux already ?
In xhci_dwc3_probe(), the program sequence is
vcc reset -> clk init -> phy setup -> xhci_register
therefore, when xhci_dwc3_remove is called, the proper usb stop sequence should
be
xhci_register _> phy setup -> clk init -> vcc reset
if we look at linux driver
https://elixir.bootlin.com/linux/latest/source/drivers/usb/dwc3/dwc3-of-simple.c#L33
dwc3_of_simple_probe: The sequence is reset -> clock
__dwc3_of_simple_teardown: Then, clock -> reset
So based on the above, we have made changes and the uboot fix is now aligned
with linux driver.
Instead of adding random patches to the U-Boot dwc3 driver, please just
synchronize the driver with Linux. You should be able to add the missing
patches to the DWC3 driver from Linux since the last synchronization
point, the process should be largely mechanical. Make sure to include
commit ID of each Linux commit in the new matching U-Boot patch.
It shouldn't be difficult, one approach I can think of is roughly this:
- figure out the original merge base from which the DWC3 driver was
imported to U-Boot
- in U-Boot, revert all dwc3 patches on top of that import patch
- pick all Linux kernel dwc3 patches from that merge base and apply on
top of this U-Boot with reverts
- Run rebase and drop the reverts, let git drop duplicate patches