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 *);
 };

Reply via email to