linux-mips
[Top] [All Lists]

Re: usb-problems with Au1000

To: linux-mips <linux-mips@oss.sgi.com>
Subject: Re: usb-problems with Au1000
From: Kunihiko IMAI <kimai@laser5.co.jp>
Date: Fri, 18 Jan 2002 14:26:02 +0900
In-reply-to: <1011294123.4550.58.camel@zeus>
References: <3B7DA3A3.8010000@pacbell.net> <3C3DD208.45B5BC29@esk.fhg.de> <m3bsft6z87.wl@l5ac152.l5.laser5.co.jp> <1011294123.4550.58.camel@zeus>
Sender: owner-linux-mips@oss.sgi.com
User-agent: Wanderlust/2.4.0 (Rio) SEMI/1.13.7 (Awazu) CLIME/1.13.6 (中ノ庄) Emacs/20.7 (i386-laser5-linux-gnu) MULE/4.1 (AOI)
Hi,

At 17 Jan 2002 11:02:03 -0800,
Pete Popov wrote:
> 
> On Thu, 2002-01-17 at 02:36, Kunihiko IMAI wrote:
> > Hi,
> > 
> > I'm trying SGI version of kernel-2.2.17.
> > And I get same message,
> > 
> > At Thu, 10 Jan 2002 18:40:24 +0100,
> > Wolfgang Heidrich wrote:
> > 
> > > hub.c: USB new device connect on bus1/1, assigned device number 3
> > > usb.c: USB device not accepting new address=3 (error=-145)
> 
> I'm surprised the sgi kernel works with usb at all.  We did a patch for
> non-pci usb devices which was not accepted by the usb project at that
> time because they were working on a different solution.

Of course, I patched usb-ohci code with memory mapped I/O support.
It is very ugly code, so Linux USB stuff will not accept, I think.

About two years ago, I ported USB OHCI to StrongARM SA1111 CPU and
SA1111 companion chip.  At that time, I suggested to the author of
usb-ohci.c that it should be better to support of memory mapped I/O
device, but it was not accepted.  On StrongARM, it has DMA memory
coherency problem, too. (Au1000 has bus snoop function, so this is not
a problem.)

> > The errata report says workaround method:
> > - set the CPU clock is 384MHz
> > - set the source of USB host controller is CPU clcck.
> > 
> > And the code:
> > 
> >         /*
> >          * Setup 48MHz FREQ2 from CPUPLL for USB Host
> >          */
> >         /* FRDIV2=3 -> div by 8 of 384MHz -> 48MHz */
> >         sys_freqctrl |= ((3<<22) | (1<<21) | (0<<20));
> >         outl(sys_freqctrl, FQ_CNTRL_1);
> > 
> > Comment says "Setup FREQ2" but the code set FREQ5.
> 
> It's the comment that's wrong, not the code. The code works and has been
> tested.  Alchemy makes available the Linux Support Package (LSP) which
> we did. That kernel has been tested with all peripherals so I would
> recommend that you get that from them.  Also,make sure your jumpers are
> setup correctly (S4).

In the source code:

        sys_clksrc |= ((4<<12) | (0<<11) | (0<<10));

        (snip...)

        outl(sys_clksrc, CLOCK_SOURCE_CNTRL);

This code sets the clock source of USB host controller is FREQ2.  So
FREQ5 clock source doesn't affect to USB host controller.


And I found HHL version of kernel source code in Pb1000 CD-ROM.  I'll
read it.


> I do have a better USB workaround which checks the CPU silicon rev, but
> I haven't had time to send Ralf an updated patch. The current setup.c
> should work though.  Get the latest LSP from Alchemy, check the S4
> jumpers (1-4 off, 5-6 on, 7-8 off), and let me know if it still doesn't
> work for you.

OK.  I checked S4 DIP SW, it was setted same config.
# Pb1000 documentation doesn't clearly explain at this configration.
# So I looked schematics of Pb1000.

This switch affects only J24 connector setting.  J2 connector is not
affected by S4.

Thanks.
_._. __._  _ . ... _  .___ ._. _____ _... ._ _._ _.._. .____  _ . ... _

                                                          Kunihiko IMAI

<Prev in Thread] Current Thread [Next in Thread>