It turned out that the problem is that there wasn't a clean way to tell the charger to send power out to USB when a bus-powered device was connected.
The chipidea hdrc code creates an EHCI controller host port instance but there isn't an appropriate hook in that code that can be used to do system-specific things once that instance has been created (like tell the charger to do OTG boost instead of battery charging).
In our old code, the charger driver registered to receive usb bus add and remove events and, if it was a specifically named bus, it would change the charger type as appropriate. This has to be done before the bus-powered device is connected or adding the device isn't detected at all.
There is an existing "notify event" callback, but I added a usb host setup callback that is implemented in the imx hdrc driver to call usb misc to call the charger driver to set the charge type.