Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Aug 2005 01:56:08 +0200
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        Maksim Yevmenkin <maksim.yevmenkin@gmail.com>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: weird usb problem
Message-ID:  <200508090156.09985.hselasky@c2i.net>
In-Reply-To: <bb4a86c705080815513204ec81@mail.gmail.com>
References:  <bb4a86c7050808140175d0134a@mail.gmail.com> <200508082323.51881.hselasky@c2i.net> <bb4a86c705080815513204ec81@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 09 August 2005 00:51, Maksim Yevmenkin wrote:
> [...]
>
> > > it seems that usb does even detect that device is plugged
> > > or something broken in discovery.
> >
> > See my PR on this issue. This should have been fixed a long time ago, b=
ut
> > I have not commit rights :-(
> >
> > http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dusb/79656
>
> well, i looked at the PR but i do not see any patches :( all it says
>
> <quote>
>
> >Fix:
>
> ehci_pcd_enable() must call ehci_pcd() to catch up missed interrupts
>
> ohci_rhsc_enable() must call ohci_rhsc() to catch up missed interrupts
>
> </qoute>
>
> could you please submit the patch? i can test and commit it for you.
>
> > If you want, try out the following and see if the problem dissappears:
> >
> > Download the three files below into a new directory and type
> > "make install"  (to uninstall type "make deinstall")
> > http://home.c2i.net/hselasky/isdn4bsd/privat/usb/Makefile
> > http://home.c2i.net/hselasky/isdn4bsd/privat/usb/new_usb_1_5_4.diff.bz2
> > http://home.c2i.net/hselasky/isdn4bsd/privat/usb/new_usb_1_5_4.tar.bz2
>
> that seems like a lot of changes. i tried it and one of the patches
> failed completely. are all these changes required to fix the problem?

No, don't worry about the patches failing. As long as it compiles it should=
 be=20
OK.


You find "ehci_pcd_enable()" in "/sys/dev/usb2/_ehci.c" (my driver) and in=
=20
"/sys/dev/usb/ehci.c" (old driver).


You find "ohci_rhsc_enable()" in "/sys/dev/usb2/_ohci.c" (my driver) and in=
=20
"/sys/dev/usb/ohci.c" (old driver).


I'm not sure how this patch would look for the "old USB driver", but basica=
lly=20
you need to finish the root interrupt transfer, that again will wakeup the=
=20
explore thread. Also you need to clear the PCD/RHSC status bits, to make su=
re=20
that the PCD/RHSC interrupt does not stop.

=46rom a quick glimpse, you need to add something like=20

"ehci_pcd(sc, sc->sc_intrxfer);" after "ehci_pcd_able(sc, 1);".

In the middle you have to add something like this:

        /* acknowledge any PCD interrupt */
        EOWRITE4(sc, EHCI_USBSTS, EHCI_STS_PCD);

Just look at the code in my USB driver, and if it fixes the problem, just=20
backport it.

=2D-HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508090156.09985.hselasky>