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

Reply via email to