But like you said, there's no way to tell what's attached to a USB or
SDIO port before probing it, at least if the port is at all
user-accessible. The class driver for the host-side of the port (USB hub
or SDIO controller) would be the one that needs to implement this, not
the class driver for the thing that could be plugged in (WiFi or 3G
device).
Agree, I did not consider the situation that the class driver is loaded as
module and only be loaded when that kinds of device (wifi/3g) has found
(through udev).
Maybe we have to add misc control (power/reset) for devices at sd or usb
controller driver's probe, and those gpio are belonged to controller's.
quoted
But the generic 3G and HUB devices are special, there is only one
common driver
quoted
for each of them (drivers/usb/core/hub.c & drivers/serial/option.c)