I just want to add in that there's also a bit naming confusion - not in this thread, but in general - about "OTG" with regard to USB.
On the consumer side it mostly means some device is capable to interact with other "OTG" devices, as e.g. a camera and a printer.
On the hardware folks side, OTG is often used as a hinter to a multi-mode capable USB interface - an interface that is capable of driving other USB devices in addition to being an USB client. While this case covers the "consumer side" I've mentioned before, it is often also used for USB interfaces that would work in full Host mode. This is probably true for the Kindle's USB port, too.
Another thing: The gadget device options in the Linux kernel are kind of a USB client side software stack. Thus the mentioned mass-storage module is an implementation of a USB mass storage client. For driving HDDs and USB flash memory, the "normal" usb mass storage driver of the Linux kernel should be sufficient. That one should be provided by a USB HCI abstraction providing driver specifically for the USB controller in the Freescale SoC, which would be the mentioned fsl-ehci driver. However, I think it is only recognizing one USB bus, and I think that would probably be the host-mode bus that's used for e.g. driving the 3G modem (at least on older Kindle models, that was the case). Something must be triggered to present the other USB interface as a Host, too, so the fsl-ehci driver could care for it.