Now that all our USB controllers use the same wrapper around
usb_allocmem() and usb_freemem() for allocating buffers for
transfers and taking into consideration that they also use these
functions directly internally, can I get rid of this layer?
Index: ehci.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/ehci.c,v
retrieving revision 1.130
diff -u -p -r1.130 ehci.c
--- ehci.c 15 Apr 2013 09:23:01 -0000 1.130
+++ ehci.c 16 Apr 2013 15:01:00 -0000
@@ -135,9 +135,6 @@ void ehci_timeout(void *);
void ehci_timeout_task(void *);
void ehci_intrlist_timeout(void *);
-usbd_status ehci_allocm(struct usbd_bus *, struct usb_dma *, u_int32_t);
-void ehci_freem(struct usbd_bus *, struct usb_dma *);
-
struct usbd_xfer *ehci_allocx(struct usbd_bus *);
void ehci_freex(struct usbd_bus *, struct usbd_xfer *);
@@ -250,8 +247,6 @@ struct usbd_bus_methods ehci_bus_methods
ehci_open,
ehci_softintr,
ehci_poll,
- ehci_allocm,
- ehci_freem,
ehci_allocx,
ehci_freex,
};
@@ -1173,28 +1168,6 @@ ehci_shutdown(void *v)
DPRINTF(("ehci_shutdown: stopping the HC\n"));
EOWRITE4(sc, EHCI_USBCMD, 0); /* Halt controller */
EOWRITE4(sc, EHCI_USBCMD, EHCI_CMD_HCRESET);
-}
-
-usbd_status
-ehci_allocm(struct usbd_bus *bus, struct usb_dma *dma, u_int32_t size)
-{
- struct ehci_softc *sc = (struct ehci_softc *)bus;
- usbd_status err;
-
- err = usb_allocmem(&sc->sc_bus, size, 0, dma);
-#ifdef EHCI_DEBUG
- if (err)
- printf("ehci_allocm: usb_allocmem()=%d\n", err);
-#endif
- return (err);
-}
-
-void
-ehci_freem(struct usbd_bus *bus, struct usb_dma *dma)
-{
- struct ehci_softc *sc = (struct ehci_softc *)bus;
-
- usb_freemem(&sc->sc_bus, dma);
}
struct usbd_xfer *
Index: ohci.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/ohci.c,v
retrieving revision 1.110
diff -u -p -r1.110 ohci.c
--- ohci.c 16 Apr 2013 12:10:03 -0000 1.110
+++ ohci.c 16 Apr 2013 15:08:45 -0000
@@ -119,9 +119,6 @@ struct ohci_soft_itd *ohci_hash_find_itd
usbd_status ohci_setup_isoc(struct usbd_pipe *pipe);
void ohci_device_isoc_enter(struct usbd_xfer *);
-usbd_status ohci_allocm(struct usbd_bus *, struct usb_dma *, u_int32_t);
-void ohci_freem(struct usbd_bus *, struct usb_dma *);
-
struct usbd_xfer *ohci_allocx(struct usbd_bus *);
void ohci_freex(struct usbd_bus *, struct usbd_xfer *);
@@ -261,8 +258,6 @@ struct usbd_bus_methods ohci_bus_methods
ohci_open,
ohci_softintr,
ohci_poll,
- ohci_allocm,
- ohci_freem,
ohci_allocx,
ohci_freex,
};
@@ -946,22 +941,6 @@ ohci_init(struct ohci_softc *sc)
bad1:
usb_freemem(&sc->sc_bus, &sc->sc_hccadma);
return (err);
-}
-
-usbd_status
-ohci_allocm(struct usbd_bus *bus, struct usb_dma *dma, u_int32_t size)
-{
- struct ohci_softc *sc = (struct ohci_softc *)bus;
-
- return (usb_allocmem(&sc->sc_bus, size, 0, dma));
-}
-
-void
-ohci_freem(struct usbd_bus *bus, struct usb_dma *dma)
-{
- struct ohci_softc *sc = (struct ohci_softc *)bus;
-
- usb_freemem(&sc->sc_bus, dma);
}
struct usbd_xfer *
Index: uhci.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uhci.c,v
retrieving revision 1.95
diff -u -p -r1.95 uhci.c
--- uhci.c 16 Apr 2013 12:22:49 -0000 1.95
+++ uhci.c 16 Apr 2013 15:08:57 -0000
@@ -167,9 +167,6 @@ void uhci_rem_loop(struct uhci_softc *s
usbd_status uhci_setup_isoc(struct usbd_pipe *pipe);
void uhci_device_isoc_enter(struct usbd_xfer *);
-usbd_status uhci_allocm(struct usbd_bus *, struct usb_dma *, u_int32_t);
-void uhci_freem(struct usbd_bus *, struct usb_dma *);
-
struct usbd_xfer *uhci_allocx(struct usbd_bus *);
void uhci_freex(struct usbd_bus *, struct usbd_xfer *);
@@ -283,8 +280,6 @@ struct usbd_bus_methods uhci_bus_methods
uhci_open,
uhci_softintr,
uhci_poll,
- uhci_allocm,
- uhci_freem,
uhci_allocx,
uhci_freex,
};
@@ -623,20 +618,6 @@ uhci_detach(struct uhci_softc *sc, int f
/* XXX free other data structures XXX */
return (rv);
-}
-
-usbd_status
-uhci_allocm(struct usbd_bus *bus, struct usb_dma *dma, u_int32_t size)
-{
- struct uhci_softc *sc = (struct uhci_softc *)bus;
-
- return (usb_allocmem(&sc->sc_bus, size, 0, dma));
-}
-
-void
-uhci_freem(struct usbd_bus *bus, struct usb_dma *dma)
-{
- usb_freemem(&((struct uhci_softc *)bus)->sc_bus, dma);
}
struct usbd_xfer *
Index: usbdi.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdi.c,v
retrieving revision 1.50
diff -u -p -r1.50 usbdi.c
--- usbdi.c 15 Apr 2013 09:23:02 -0000 1.50
+++ usbdi.c 16 Apr 2013 15:14:16 -0000
@@ -340,7 +340,7 @@ usbd_transfer(struct usbd_xfer *xfer)
if (xfer->rqflags & URQ_AUTO_DMABUF)
printf("usbd_transfer: has old buffer!\n");
#endif
- err = bus->methods->allocm(bus, dmap, size);
+ err = usb_allocmem(bus, size, 0, dmap);
if (err)
return (err);
xfer->rqflags |= URQ_AUTO_DMABUF;
@@ -358,7 +358,7 @@ usbd_transfer(struct usbd_xfer *xfer)
if (xfer->rqflags & URQ_AUTO_DMABUF) {
struct usbd_bus *bus = pipe->device->bus;
- bus->methods->freem(bus, &xfer->dmabuf);
+ usb_freemem(bus, &xfer->dmabuf);
xfer->rqflags &= ~URQ_AUTO_DMABUF;
}
}
@@ -389,7 +389,7 @@ usbd_alloc_buffer(struct usbd_xfer *xfer
if (xfer->rqflags & (URQ_DEV_DMABUF | URQ_AUTO_DMABUF))
printf("usbd_alloc_buffer: xfer already has a buffer\n");
#endif
- err = bus->methods->allocm(bus, &xfer->dmabuf, size);
+ err = usb_allocmem(bus, size, 0, &xfer->dmabuf);
if (err)
return (NULL);
xfer->rqflags |= URQ_DEV_DMABUF;
@@ -406,7 +406,7 @@ usbd_free_buffer(struct usbd_xfer *xfer)
}
#endif
xfer->rqflags &= ~(URQ_DEV_DMABUF | URQ_AUTO_DMABUF);
- xfer->device->bus->methods->freem(xfer->device->bus, &xfer->dmabuf);
+ usb_freemem(xfer->device->bus, &xfer->dmabuf);
}
void *
@@ -806,7 +806,7 @@ usb_transfer_complete(struct usbd_xfer *
if (xfer->rqflags & URQ_AUTO_DMABUF) {
if (!repeat) {
struct usbd_bus *bus = pipe->device->bus;
- bus->methods->freem(bus, dmap);
+ usb_freemem(bus, dmap);
xfer->rqflags &= ~URQ_AUTO_DMABUF;
}
}
Index: usbdivar.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdivar.h,v
retrieving revision 1.47
diff -u -p -r1.47 usbdivar.h
--- usbdivar.h 15 Apr 2013 09:23:02 -0000 1.47
+++ usbdivar.h 16 Apr 2013 15:01:51 -0000
@@ -54,9 +54,6 @@ struct usbd_bus_methods {
usbd_status (*open_pipe)(struct usbd_pipe *pipe);
void (*soft_intr)(void *);
void (*do_poll)(struct usbd_bus *);
- usbd_status (*allocm)(struct usbd_bus *, struct usb_dma *,
- u_int32_t bufsize);
- void (*freem)(struct usbd_bus *, struct usb_dma *);
struct usbd_xfer * (*allocx)(struct usbd_bus *);
void (*freex)(struct usbd_bus *, struct usbd_xfer *);
};