Hey,
I'm trying to write a "power supply" class driver for Apple MFi
devices, and struggling a little with the USB drivers.
To ask many Apple devices to draw more power, we need to make a call to
the device using a vendor command. It doesn't go to an interface, but
to the device itself.
The call done in the kernel would look something like:
usb_control_msg(mfi->udev, usb_sndctrlpipe(mfi->udev, 0),
0x40, /* Vendor-defined USB get enabled capabilities request. */
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
current_ma, /* wValue, current offset */
current_ma, /* wIndex, current offset */
NULL, 0, USB_CTRL_GET_TIMEOUT);
But I can't figure out what type of driver I'd need to just be able to
export that power_supply interface.
Trying to use a "struct usb_device_driver" didn't work as probe
functions were never called, and a "struct usb_driver" gets unbound
after user-space and the ipheth drivers comes around.
This is my "struct usb_driver" attempt:
https://github.com/hadess/apple-mfi-fastcharge
Any ideas what type of driver, or what trick I should be using here?
Cheers