Maintainer of usb code
Hans Petter Selasky
hselasky at c2i.net
Thu Jul 17 17:13:55 UTC 2008
I think your patch is Ok. It should look similar to this:
/* Determine in what context we are running. */
ctl = OREAD4(sc, OHCI_CONTROL);
if (ctl & OHCI_IR) {
/* SMM active, request change */
DPRINTF(0, "SMM active, request owner change\n");
s = OREAD4(sc, OHCI_COMMAND_STATUS);
OWRITE4(sc, OHCI_COMMAND_STATUS, s | OHCI_OCR);
for (i = 0; (i < 100) && (ctl & OHCI_IR); i++) {
DELAY(1000 * 1);
ctl = OREAD4(sc, OHCI_CONTROL);
}
if ((ctl & OHCI_IR) == 0) {
device_printf(sc->sc_bus.bdev, "SMM does not respond,
resetting\n");
OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_RESET);
goto reset;
}
--HPS
On Thursday 17 July 2008, Luoqi Chen wrote:
> Hans,
>
> It probably doesn't matter, this part of code hasn't been touched
> for years. I did a quick check on the latest svn version, it looked
> the same.
>
> -lq
>
> > -----Original Message-----
> > From: Hans Petter Selasky [mailto:hselasky at c2i.net]
> > Sent: Thursday, July 17, 2008 5:21 AM
> > To: freebsd-usb at freebsd.org
> > Cc: Luoqi Chen
> > Subject: Re: Maintainer of usb code
> >
> > Hi Luoqi,
> >
> > From what version of FreeBSD did you fetch your ohci.c ?
> >
> > --HPS
> >
> > On Thursday 17 July 2008, Luoqi Chen wrote:
> > > Hello,
> > >
> > > Do we have an official maintainer of the usb code? I came
> >
> > across some quite
> >
> > > trivial errors while debugging another problem (which
> >
> > turned out not to be
> >
> > > usb related), please see the diff below. I'm not terribly
> >
> > familiar with the
> >
> > > usb code, so I'd like to seek someone to review this change,
> > >
> > > Index: ohci.c
> > > ===================================================================
> > > RCS file: /home/ncvs/src/sys/dev/usb/ohci.c,v
> > > retrieving revision 1.170
> > > diff -u -r1.170 ohci.c
> > > --- ohci.c 20 Jun 2007 05:10:52 -0000 1.170
> > > +++ ohci.c 17 Jul 2008 10:07:07 -0000
> > > @@ -815,20 +815,19 @@
> > > ohci_controller_init(ohci_softc_t *sc)
> > > {
> > > int i;
> > > - u_int32_t s, ctl, ival, hcr, fm, per, desca;
> > > + u_int32_t ctl, ival, hcr, fm, per, desca;
> > >
> > > /* Determine in what context we are running. */
> > > ctl = OREAD4(sc, OHCI_CONTROL);
> > > if (ctl & OHCI_IR) {
> > > /* SMM active, request change */
> > > DPRINTF(("ohci_init: SMM active, request
> >
> > owner change\n"));
> >
> > > - s = OREAD4(sc, OHCI_COMMAND_STATUS);
> > > - OWRITE4(sc, OHCI_COMMAND_STATUS, s | OHCI_OCR);
> > > + OWRITE4(sc, OHCI_COMMAND_STATUS, OHCI_OCR);
> > > for (i = 0; i < 100 && (ctl & OHCI_IR); i++) {
> > > usb_delay_ms(&sc->sc_bus, 1);
> > > ctl = OREAD4(sc, OHCI_CONTROL);
> > > }
> > > - if ((ctl & OHCI_IR) == 0) {
> > > + if (ctl & OHCI_IR) {
> > > printf("%s: SMM does not respond,
> >
> > resetting\n",
> >
> > device_get_nameunit(sc->sc_bus.bdev));
> >
> > > OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_RESET);
> > >
> > > Thanks
> > > -lq
More information about the freebsd-usb
mailing list