Hi Rui, On 13/05/2021 10:47, Rui Miguel Silva wrote: > Rework access to registers and memory to use regmap framework. > No change in current feature or way of work is intended with this > change. > > This will allow to reuse this driver with other IP of this family, > for example isp1763, with little changes and effort. > 1da9e1c06873 - usb: isp1760: move to regmap for register access Starting from this patch, our Arm TC2 platform (multi_v7_defconfig, vexpress-v2p-ca15_a7.dts) doesn't boot anymore. We discovered this in our v5.14-rc1 based task scheduler test build. With 1da9e1c06873^1 : # lsusb Bus 001 Device 001: ID 1d6b:0002 <-- NXP ISP1760 USB Host Controller Bus 001 Device 002: ID 0471:3526 Bus 001 Device 003: ID 0781:5591 # dmesg | grep -i isp [ 4.014307] isp1760 1b000000.usb: bus width: 32, oc: digital [ 4.014442] isp1760 1b000000.usb: NXP ISP1760 USB Host Controller [ 4.014715] isp1760 1b000000.usb: new USB bus registered, assigned bus number 1 [ 4.025076] isp1760 1b000000.usb: irq 32, io mem 0x1b000000 [ 4.025288] isp1760 1b000000.usb: USB ISP 1761 HW rev. 1 started [ 4.055802] ISP1760 USB device initialised [ 4.257911] isp1760 1b000000.usb: port 1 high speed [ 4.325662] usb 1-1: new high-speed USB device number 2 using isp1760 [ 4.475670] isp1760 1b000000.usb: port 1 high speed [ 14.320372] usb 1-1.2: new high-speed USB device number 3 using isp1760 With v5.14-rc1 : there is no boot output at all, but I debugged it a little bit and the system seems to hang here: [ 1.847494] [<c0cac46c>] (isp1760_udc_register) from [<c0ca668c>] (isp1760_register+0x5d0/0x5f0) [ 1.847527] [<c0ca668c>] (isp1760_register) from [<c0ca6b7c>] (isp1760_plat_probe+0x150/0x1b0) [ 1.847557] [<c0ca6b7c>] (isp1760_plat_probe) from [<c0a46ef0>] (platform_probe+0x5c/0xb8) [ 1.847589] [<c0a46ef0>] (platform_probe) from [<c0a44924>] (really_probe.part.0+0x9c/0x32c) ... isp1760_udc_register()->isp1760_udc_init() .... /* Reset the device controller. */ isp1760_udc_set(udc, DC_SFRESET); <-- hangs here !!! usleep_range(10000, 11000); isp1760_reg_write(udc->regs, ISP176x_DC_MODE, 0); usleep_range(10000, 11000); [...]