In the Intel Wireless Multicomm 3200, the initialization is orchestrated by a component called Top. This component also monitors how many times a function is reset (via sdio_disable) to detect possible issues and will reset the whole multifunction device if any function triggers a maximum reset level. During WiMAX's probe, the driver needs to wait for Top to come up before it can enable the WiMAX function. If it cannot, it will return -ENODEV and the Top driver will rescan the SDIO bus once done loading. Currently, the WiMAX SDIO probe routine was trying a few times before returning -ENODEV, and this was triggering Top's too-many-resets detector. This is, in any case, unnecessary because the Top driver will force the bus rescan when the functions can be probed successfully. Added then a maxtries argument to i2400ms_enable_func() and set it to 1 when calling from probe. We want to reuse this function instead of flat calling out sdio_enable_func() to take advantage of hardware quirk workarounds. Reported-by: Cindy H Kao <cindy.h.kao@intel.com> Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com> |
||
---|---|---|
.. | ||
control.c | ||
debug-levels.h | ||
debugfs.c | ||
driver.c | ||
fw.c | ||
i2400m-sdio.h | ||
i2400m-usb.h | ||
i2400m.h | ||
Kconfig | ||
Makefile | ||
netdev.c | ||
op-rfkill.c | ||
rx.c | ||
sdio-debug-levels.h | ||
sdio-fw.c | ||
sdio-rx.c | ||
sdio-tx.c | ||
sdio.c | ||
sysfs.c | ||
tx.c | ||
usb-debug-levels.h | ||
usb-fw.c | ||
usb-notif.c | ||
usb-rx.c | ||
usb-tx.c | ||
usb.c |