Hi Marcelo, On 11/12/2021 19:36, Marcelo Roberto Jimenez wrote:
The regression occurs on the second time a self powered gadget is connected to the host. In this situation, the gadget no loger accepts an address in the USB enumeration phase. The regression has been introduced in commit 70a7f8be8598 ("usb: gadget: atmel: support USB suspend") Signed-off-by: Marcelo Roberto Jimenez <marcelo.jimenez@xxxxxxxxx> --- Hi, I have been using an ACME Arietta board (Microchip AT91SAM9G25 MPU, ARM9@400Mhz) for some years, and from time to time I need to do a kernel upgrade to fix issues or introduce new required features. I have recently noticed a regression in the ethernet over USB Gadget. The system boots fine and when the device is first connected to a host it is recognized. But upon disconnection, the second time the device is connected to the host, it is no longer recognized. Of course, the gadget is self powered. I did a "git bisect" and found that the patch introducing the regression is this: commit 70a7f8be85986a3c2ffc7274c41b89552dfe2ad0 Author: Jonas Bonn <jonas@xxxxxxxxxxx> Date: Wed Feb 20 13:20:00 2019 +0100 usb: gadget: atmel: support USB suspend This patch adds support for USB suspend to the Atmel UDC.
Given that the patch that you want to revert is almost 3 years old, it's a bit of a stretch to call this a regression. I suspect that a cleaner way forward is to introduce some kind of quirk for your board.
I have a self-powered board where the USB suspend sequence works and device add/remove works fine. So fundamentally, I suspect that the driver is ok.
With all that said, I'm not immediately in a position to run tests on my SAMA5D2 board right now and the kernel on that board is 5.2. I'm not sure when we we would notice that USB suspend stopped working because there is no kernel maintenance planned for that board, as far as I know; someday, however, that work might happen and the lack of working USB suspend will be a regression in and of itself.
Thanks, Jonas