Re: [PATCH v4 2/9] usb: isp1760: move to regmap for register access
From: Dietmar Eggemann <hidden>
Date: 2021-08-20 13:30:44
Also in:
linux-devicetree
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);
[...]