S3C6410 board (SmartQ 7) USB host issues

Ben Dooks ben-linux at fluff.org
Thu Oct 29 21:43:51 EDT 2009


On Fri, Oct 30, 2009 at 02:40:32AM +0100, Maurus Cuelenaere wrote:
> Op 30-10-09 01:36, Ben Dooks schreef:
> >On Fri, Oct 30, 2009 at 01:24:32AM +0100, Maurus Cuelenaere wrote:
> >   
> >>Hi,
> >>
> >>I'm working on getting mainline Linux working on the SmartQ 7, a Samsung
> >>S3C6410 board.
> >>
> >>I'm having issues getting USB host to work, when I try to attach a
> >>device (Logitech mouse in this case) to it I get "device descriptor
> >>read/64, error -62" errors. Then it gets a new address assigned and gets
> >>back to the same error (this loops around 4 times, then Linux seems to
> >>give up).
> >>     
> >That could be due to a number of things, such as:
> >
> >1) Unstable clock (need to verify the clock below is happening)
> >2) Interface problems - does the board have the correct pull ups
> >3) Does the interface have power control that needs to be set?
> >   
> 
> It does, but I'm already enabling that.
> 
> >>This board doesn't have a separate 48M clock source, so I'm currently
> >>changing the USB host clock source to EPLL in my board config like this:
> >>     
> >What is the current EPLL rate?
> >
> >   
> >>struct clk * usb_clock, * mout_epll;
> >>
> >>usb_clock = clk_get(NULL, "usb-bus-host");
> >>if(usb_clock == NULL) {
> >>     pr_err("%s: failed to get usb-bus-host clock\n", __func__);
> >>     return -ENXIO;
> >>}
> >>mout_epll = clk_get(NULL, "mout_epll");
> >>if(mout_epll == NULL) {
> >>     pr_err("%s: failed to get mout_epll clock\n", __func__);
> >>     clk_put(usb_clock);
> >>     return -ENXIO;
> >>}
> >>
> >>/* setup clock */
> >>clk_set_parent(usb_clock, mout_epll);
> >>clk_set_rate(usb_clock, 48000000);
> >>     
> >does clk_get_rate() here show 48MHz, or something 'close' ?
> >
> >currently we do not have support for setting the EPLL, so you
> >may be getting a best-effort value from the divider chain.
> >   
> 
> Looks like EPLL runs at 24Mhz, so I probably need to look into modifying 
> my bootloader to run it higher (the original firmware seems to run it at 
> 192Mhz).
> 
> Also what's the preferred way of setting the USB host clock source: 
> doing this in the bootloader or in the Linux mach file?

I'm ok with either the bootloader or the machine init file doing it.

I'd say for the moment, look at getting the EPLL setup in the bootloader
and have it running at (say 192MHz) and then just ensure in mach-xxx.c
that the clocks are correct.

-- 
Ben

Q:      What's a light-year?
A:      One-third less calories than a regular year.




More information about the linux-arm-kernel mailing list