Mask off the last two bits before comparing. It might just be that some
hardware might leave those bits in the wrong state.
This commit is contained in:
parent
720b7903cb
commit
904db0db42
@ -1749,7 +1749,8 @@ ohci_close_pipe(pipe, head)
|
||||
s = splusb();
|
||||
#ifdef DIAGNOSTIC
|
||||
sed->ed.ed_flags |= LE(OHCI_ED_SKIP);
|
||||
if (sed->ed.ed_tailp != (sed->ed.ed_headp & LE(OHCI_HEADMASK))) {
|
||||
if ((sed->ed.ed_tailp & LE(OHCI_TAILMASK))
|
||||
!= (sed->ed.ed_headp & LE(OHCI_HEADMASK))) {
|
||||
ohci_physaddr_t td = sed->ed.ed_headp;
|
||||
ohci_soft_td_t *std;
|
||||
for (std = LIST_FIRST(&sc->sc_hash_tds[HASH(td)]);
|
||||
@ -1762,7 +1763,8 @@ ohci_close_pipe(pipe, head)
|
||||
(int)LE(sed->ed.ed_headp), (int)LE(sed->ed.ed_tailp),
|
||||
pipe, std);
|
||||
usb_delay_ms(&sc->sc_bus, 2);
|
||||
if (sed->ed.ed_tailp != (sed->ed.ed_headp & LE(OHCI_HEADMASK)))
|
||||
if ((sed->ed.ed_tailp & LE(OHCI_TAILMASK))
|
||||
!= (sed->ed.ed_headp & LE(OHCI_HEADMASK)))
|
||||
printf("ohci_close_pipe: pipe still not empty\n");
|
||||
}
|
||||
#endif
|
||||
@ -2657,10 +2659,12 @@ ohci_device_intr_close(pipe)
|
||||
pipe, nslots, pos));
|
||||
s = splusb();
|
||||
sed->ed.ed_flags |= LE(OHCI_ED_SKIP);
|
||||
if (sed->ed.ed_tailp != (sed->ed.ed_headp & LE(OHCI_HEADMASK)))
|
||||
if ((sed->ed.ed_tailp & LE(OHCI_TAILMASK))
|
||||
!= (sed->ed.ed_headp & LE(OHCI_HEADMASK)))
|
||||
usb_delay_ms(&sc->sc_bus, 2);
|
||||
#ifdef DIAGNOSTIC
|
||||
if (sed->ed.ed_tailp != (sed->ed.ed_headp & LE(OHCI_HEADMASK)))
|
||||
if ((sed->ed.ed_tailp & LE(OHCI_TAILMASK))
|
||||
!= (sed->ed.ed_headp & LE(OHCI_HEADMASK)))
|
||||
panic("%s: Intr pipe %p still has TDs queued\n",
|
||||
USBDEVNAME(sc->sc_bus.bdev), pipe);
|
||||
#endif
|
||||
|
@ -163,6 +163,7 @@ typedef struct {
|
||||
#define OHCI_ED_SET_MAXP(s) ((s) << 16)
|
||||
#define OHCI_ED_MAXPMASK (0x7ff << 16)
|
||||
ohci_physaddr_t ed_tailp;
|
||||
#define OHCI_TAILMASK 0xfffffffc
|
||||
ohci_physaddr_t ed_headp;
|
||||
#define OHCI_HALTED 0x00000001
|
||||
#define OHCI_TOGGLECARRY 0x00000002
|
||||
|
Loading…
x
Reference in New Issue
Block a user