I'd like to ask a quite specific question regarding the USB power management.
First of all, I will outline the design of my device. It is a symmetric signal line driver with a builtin audio codec for my DIY speaker system. The device is internally split into two mostly independent blocks: the very line driver with a controlling MCU and the audio codec (TI's PCM2706). Both need USB data connectivity (via an FT232R for the driver block) and the whole device should be bus-powered. The two blocks will be linked together by an USB hub chip, yielding a single uplink USB connection to the PC. I expect the consumption of the driver stage to be something between 100 and 200 mA (definitely more than one load unit).
Here comes the problem: According to the USB specification, a bus-powered hub can provide only one unit per downstream port while drawing max 5 units from the upstream. I'd like to know, what would the hub do if I requested two units via the FT232 for the driver stage. The 5-unit upstream limit will not be reached (1 unit for the hub, 1 unit for the codec and two for the driver), so the computer should be physically able to supply that current.
For the hub chip, I've been checking out http://www.ti.com/lit/ds/symlink/tusb2036.pdf. There is an option of "ganged" powering mode, would this be any help? Or would the chip just refuse to grant two units to the driver? And in this case, is there any dirty workaround?
I am aware of the requirement that high power devices are also required to draw max 100 mA during enumeration; this is not a problem as the FT232 is able to turn the driver on just after the enumeration. The hub will turn the stages on independently as well.
Hope I stated my problem clear enough and thanks for your time in advance :)
I did some more research on the TUSB2036 chip. The overcurrent protection can be turned off by the /OCPROT pin. The hub then reports to the root controller that it is not able to detect overcurrent. There is a warning in the datasheet, that OC protection is required by USB 2.0 specification - this does not matter for me, I only need 1.1 Full-speed. The PC's root hub should then IMO supply 500 mAmps to the whole device. Thus, I could set the driver's FT232 to require 100 mA only and the hub would never know if I would have exceeded the limit (respecting the 500 mA from the PC of course). Can someone tell if this could work?