Hi Steve,
I don;t have much experience with kernel and drivers but in the last
days I tried to understand that USB Host thing.
As you know Nexus S is somewhat similar with Galaxy S.
I know that some OTG related messages are kicked when I plug in a USB
OTG cable.

<4>[ 8681.804081] fsa9480_interrupt
<4>[ 8681.804398] [FSA9480] FSA9480_ReadIntRegister
<6>[ 8681.837806] ldo38_control : turn ON LDO3 and LDO8 (cur_stat=0,
req=1)
<4>[ 8681.837980] [otg_clock_enable] clk_enable(otg_clock) OK.
<4>[ 8681.848727] [FSA9480] FSA9480_ProcessDevice (dev1 : 0x80, dev2 :
0x0)
<4>[ 8681.849042] USB OTG

ODROID-7 sources and Samsung Galaxy S sources have some similar code
regarding ehci and ohci. (ehci-s5pv210.c and ohci-s5pv210.c)

Regards,
Andrei

On Jan 28, 1:56 pm, Steve Modica <mod...@small-tree.com> wrote:
> Hi Julian,
>
> Thanks for the response!  I've seen Sven's page and a couple of the guys I'll 
> be working with next week have this hack working.
>
> The first problem I see with his method is that he's pulling in ehci-hcd.  
> The Nexus S doesn't have any host drivers.  I would need something for the 
> S5Pv210.
> I've found a tree that includes drivers for this for 2.6.32 over on 
> tarot.com.tw.  There's a Samsung guy that has been updating it. It appears 
> it's for Galaxy Tab or something.  I have a tree with these included and they 
> initialize, but no joy. (I have yet to try my power on hack below at the same 
> time)
>
> I dropped Sven a note asking about the modules. I'm not sure why he built the 
> USB stuff independent of the kernel.
>
> Lastly, it appears that the voltage regulators on the part are being wired up 
> for the s3c_usb OTG infrastructure.  You can find the declarations in 
> arch/arm/mach-s5pv210/mach-herring:
>
> static struct regulator_consumer_supply ldo3_consumer[] = {
>         REGULATOR_SUPPLY("pd_io", "s3c-usbgadget")
>
> };
>
> static struct regulator_consumer_supply ldo8_consumer[] = {
>         REGULATOR_SUPPLY("pd_core", "s3c-usbgadget")
>
> };
>
> I actually can get otg_enable_phy to get called (very encouraging!) and it 
> attempts to kick power on with regulator_enable for these two guys.  However 
> I get no power because my regulators don't support: REGULATOR_CHANGE_DRMS
> This is checked in the valid ops mask and the call is basically ignored.
>
>        /* check voltage and requested load before enabling */
>         if (rdev->constraints &&
>             (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS))
>                 drms_uA_update(rdev);
>
> These regulators only support REGULATOR_CHANGE_STATUS (on or off):
>
> static struct regulator_init_data herring_ldo3_data = {
>         .constraints    = {
>                 .name           = "VUSB_1.1V",
>                 .min_uV         = 1100000,
>                 .max_uV         = 1100000,
>                 .apply_uV       = 1,
>                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
>                 .state_mem      = {
>                         .disabled = 1,
>                 },
>         },
>         .num_consumer_supplies  = ARRAY_SIZE(ldo3_consumer),
>         .consumer_supplies      = ldo3_consumer,
>
> };
>
> static struct regulator_init_data herring_ldo8_data = {
>         .constraints    = {
>                 .name           = "VUSB_3.3V",
>                 .min_uV         = 3300000,
>                 .max_uV         = 3300000,
>                 .apply_uV       = 1,
>                 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
>                 .state_mem      = {
>                         .disabled = 1,
>                 },
>         },
>         .num_consumer_supplies  = ARRAY_SIZE(ldo8_consumer),
>         .consumer_supplies      = ldo8_consumer,
>
> };
>
> So, as a complete hack, I enabled the registers at boot with ".boot_on" and 
> verified that the mx8998 LDO3 and LDO8 regulators are enabled at boot. (VUSB 
> 3.3V and VUSB 1.1V).  However I get no power.  So I'm starting to believe 
> you're right and those regulators are happily cranking power, but they are 
> not wired :(
>
> Steve
>
> On Jan 28, 2011, at 3:27 AM, Julian Pas wrote:
>
>
>
>
>
> > Try to use an externally powered usb hub. On the nexus one the usb
> > circuits of the chip were only powered through the usb itself. So in
> > order to use OTG or pure host mode you had to supple power from
> > outside. I can imagine this haven't changed in the Nexus S either.
> > Have a look at this page for more details on that :
> >http://sven.killig.de/android/N1/2.2/usb_host/.
>
> > On Jan 28, 12:08 am, Steve Modica <mod...@small-tree.com> wrote:
> >> I've been trying to get my Nexus S to act as a host via OTG.
>
> >> I've discovered that plugging in a microB to female A adapter that has the 
> >> ID pin grounded kicks the OTG code.  The s3c_udc driver kicks out a 
> >> message that it's initializing and it attempts to bring up vbus power.  
> >> That's where it stops.  I never get vbus.
>
> >> I've tried kicking on the regulators (ldo3 and ldo8 for vUSB 3.3V and VUSB 
> >> 1.1V in the mach-herring.c file but that doesn't seem to kick them on.  I 
> >> see no power on the pins.  (I've verified that the code is being called to 
> >> enabled them at boot).
>
> >> My suspicion is that the regulators are just not wired.  It's a microB 
> >> port so maybe it's not able to drive VUSB.  
>
> >> Comments?
>
> >> Steve
> >> --
> >> Steve Modica
> >> CTO -  Small Tree Communicationswww.small-tree.com
> >> phone: 651-209-6509 ext 301
> >> mobile: 651-261-3201
>
> > --
> > unsubscribe: android-kernel+unsubscr...@googlegroups.com
> > website:http://groups.google.com/group/android-kernel
>
> --
> Steve Modica
> CTO -  Small Tree Communicationswww.small-tree.com
> phone: 651-209-6509 ext 301
> mobile: 651-261-3201

-- 
unsubscribe: android-kernel+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-kernel

Reply via email to