Hi,

On 17-02-15 14:58, Maxime Ripard wrote:
Hi Hans,

On Fri, Feb 13, 2015 at 08:25:46PM +0100, Hans de Goede wrote:
I'm happy to report that after a lot of poking at the Allwinner
musb code I've it working reliable in both host and peripheral mode,
as well as automatically switching between the 2 depending on which
cable gets plugged.

My wip code is available here:

https://github.com/jwrdegoede/linux-sunxi/commits/sunxi-wip

Functionality wise this is complete and I expect / hope there will be
no functional changes before it goes upstream.

There are 2 things which need to be done before it can be submitted
upstream though:

1) All the ForceVbus / ForceID stuff needs to be cleaned up
2) Currently this is not suitable for multiplatform kernels as it
puts a #ifdef MACH_SUNXI in musb_regs.h, this needs to be fixed.

1) is just a matter of removing a whole lot of unnecessary indirection
in the code, and giving the relevant defines better names
2) I've a plan for, I just need some time for this.

I've so far only tested this on a cubietruck, I started development on
a cubieboard, but the cubieboard has the Vusb hardwired to the 5V of the
board (or at least mine does) meaning that the Vusb enable gpio does not
do anything, and Vusb-detect always reads as 1, I think my current code
may work despite this, but I need to test.

Note that the dts modifications for the cubietruck / cubieboard enable
the musb controller in otg mode, which means that it will not "start"
until a gadget driver is loaded. For testing I use:

insmod libcomposite.ko
insmod u_serial.ko
insmod usb_f_acm.ko
insmod g_serial.ko

After this you should see 2 messages like this:

[ 3528.872816] g_serial gadget: Gadget Serial v2.4
[ 3528.877377] g_serial gadget: g_serial ready

And then the controller should work either as a usb serial
port (ttyGS0 on cubietruck side, ttyACM0 on pc version)
or as a usb host, depending on what you plug in, and you should
be able to switch on the fly.

I use the following on the cubietruck side to start a getty
on the usb serial, this assumes you use systemd :)

systemctl start [email protected]

If you put this in say rc.local, then you can use it to
get a console on a tablet over the otg connector, which is
very useful for debugging stuff.

Very nice, thanks!

Last time I tried musb, there was some issue with the switch from host
to peripheral after a random number of switches. Did you encounter
such a thing during your tests?

Not while explicitly testing things, I've seen it not registering as
a device with my desktop once during actual use, a simple unplug / replug
fixed this.

Regards,

Hans

--
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to