|
UNOFFICIAL USB HOST MODE PATCHES FOR NOKIA N800
Here are backported USB host patches from the linux-omap git tree and some
extra patches. These patches are against the N800 2.6.18 tree to make the USB
host mode to work.
These patches apply against Nokia's N800 kernel tree at:
http://repository.maemo.org/pool/maemo3.2/free/source/
kernel-source-rx-34_2.6.18.orig.tar.gz
kernel-source-rx-34_2.6.18-osso55.diff.gz
CURRENT STATUS
- The driver mostly works, and there's minimal power management for host mode
- DMA is not very usable, it's one transfer per packet
N800 must run OTG mode for the host mode to work. As N800 does not have a
mini-AB connector, you need to modify a mini-AB cable, or use a non-standard
mini-B to mini-B cable. The patches include some changes to the N800 config,
but you may want to modify the config for your needs.
MODIFIED MINI-AB CABLE
To modify a mini-AB cable for N800 host mode, you need to cut the metal
shielding off at mini-A end so the mini-A connector will fit into the mini-B
socket on N800. This modification will make the cable not stay in the socket
very well, so a mini-B to mini-B cable may be a better option.
Customizing a mini-AB cable has the advantage of grounding the USB ID pin for
role switching, and the software hack above is not needed to switch the role.
Note that mini-A connector cannot be forced to be peripheral end as it grounds
the ID line. When grounded, software cannot drive it up with a pull-up.
It should be also possible to replace the mini-B connector on N800 with a
mini-AB connector, but that is a risky operation and you may ruin your board.
I'd assume this will also void the warranty, so I don't recommend it.
CHANGING THE ROLE VIA SYSFS
You can use sysfs to change between host and gadget mode with a non-standard
mini-B to mini-B cable:
$ echo host > /sys/devices/platform/musb_hdrc/mode
To set N800 back to OTG mode, do:
# echo otg > /sys/devices/platform/musb_hdrc/mode
If the system does not detect cable events after switching back to OTG mode,
switch it to peripheral mode first, then to OTG mode:
# echo peripheral > /sys/devices/platform/musb_hdrc/mode
# echo otg > /sys/devices/platform/musb_hdrc/mode
USB VBUS POWER LIMITATIONS
For most USB devices you need to connect the N800 to a powered USB hub. N800
can only provide 100mA of power, so basically any load on the VBUS line will
make the host mode to fail. Since N800 can provide nominal VBUS power, a
N770 modified hub is not needed.
To download the patches as a tar.gz quilt series:
patches-tusb-n800-2007-10-12.tar.gz
patches-tusb-n800-2007-07-03.tar.gz
patches-tusb-n800-2007-05-04.tar.gz
patches-tusb-n800-2007-04-18.tar.gz (Do not use)
Please send bug reports and patches to linux-omap-open-source@linux.omap.com
mailing list (subscription only). You can subscribe to the mailing list
here.
|