Module Name: src Committed By: skrll Date: Tue Dec 21 09:51:22 UTC 2021
Modified Files: src/sys/arch/mips/adm5120/dev: ahci.c src/sys/dev/usb: ehci.c ohci.c uhci.c usb_mem.c usb_mem.h usbdi.c xhci.c src/sys/external/bsd/dwc2: dwc2.c src/sys/external/bsd/dwc2/dist: dwc2_hcd.c dwc2_hcdddma.c dwc2_hcdqueue.c Log Message: Change the usb_mem API to take a bus_dma_tag_t in usb_allocmem instead of a struct usbd_bus *. This allows an HCD to use more than one tag. To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 src/sys/arch/mips/adm5120/dev/ahci.c cvs rdiff -u -r1.292 -r1.293 src/sys/dev/usb/ehci.c cvs rdiff -u -r1.317 -r1.318 src/sys/dev/usb/ohci.c cvs rdiff -u -r1.307 -r1.308 src/sys/dev/usb/uhci.c cvs rdiff -u -r1.83 -r1.84 src/sys/dev/usb/usb_mem.c cvs rdiff -u -r1.34 -r1.35 src/sys/dev/usb/usb_mem.h cvs rdiff -u -r1.219 -r1.220 src/sys/dev/usb/usbdi.c cvs rdiff -u -r1.150 -r1.151 src/sys/dev/usb/xhci.c cvs rdiff -u -r1.76 -r1.77 src/sys/external/bsd/dwc2/dwc2.c cvs rdiff -u -r1.25 -r1.26 src/sys/external/bsd/dwc2/dist/dwc2_hcd.c cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/dwc2/dist/dwc2_hcdddma.c cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/mips/adm5120/dev/ahci.c diff -u src/sys/arch/mips/adm5120/dev/ahci.c:1.27 src/sys/arch/mips/adm5120/dev/ahci.c:1.28 --- src/sys/arch/mips/adm5120/dev/ahci.c:1.27 Tue Dec 7 06:49:15 2021 +++ src/sys/arch/mips/adm5120/dev/ahci.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ahci.c,v 1.27 2021/12/07 06:49:15 skrll Exp $ */ +/* $NetBSD: ahci.c,v 1.28 2021/12/21 09:51:22 skrll Exp $ */ /*- * Copyright (c) 2007 Ruslan Ermilov and Vsevolod Lobko. @@ -64,7 +64,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ahci.c,v 1.27 2021/12/07 06:49:15 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ahci.c,v 1.28 2021/12/21 09:51:22 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -877,7 +877,7 @@ ahci_device_ctrl_start(struct usbd_xfer td1 = (struct admhcd_td *)KSEG1ADDR(&td_v[1]); td2 = (struct admhcd_td *)KSEG1ADDR(&td_v[2]); td3 = (struct admhcd_td *)KSEG1ADDR(&td_v[3]); - err = usb_allocmem(&sc->sc_bus, + err = usb_allocmem(sc->sc_bus.ub_dmatag, sizeof(usb_device_request_t), 0, USBMALLOC_COHERENT, &reqdma); if (err) @@ -990,7 +990,7 @@ ahci_device_ctrl_start(struct usbd_xfer usb_transfer_complete(xfer); mutex_exit(&sc->sc_lock); - usb_freemem(&sc->sc_bus, &reqdma); + usb_freemem(&reqdma); return USBD_NORMAL_COMPLETION; } Index: src/sys/dev/usb/ehci.c diff -u src/sys/dev/usb/ehci.c:1.292 src/sys/dev/usb/ehci.c:1.293 --- src/sys/dev/usb/ehci.c:1.292 Tue Dec 21 08:49:03 2021 +++ src/sys/dev/usb/ehci.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ehci.c,v 1.292 2021/12/21 08:49:03 skrll Exp $ */ +/* $NetBSD: ehci.c,v 1.293 2021/12/21 09:51:22 skrll Exp $ */ /* * Copyright (c) 2004-2012,2016,2020 The NetBSD Foundation, Inc. @@ -54,7 +54,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.292 2021/12/21 08:49:03 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.293 2021/12/21 09:51:22 skrll Exp $"); #include "ohci.h" #include "uhci.h" @@ -517,7 +517,8 @@ ehci_init(ehci_softc_t *sc) case 2: sc->sc_flsize = 256; break; case 3: return EIO; } - err = usb_allocmem(&sc->sc_bus, sc->sc_flsize * sizeof(ehci_link_t), + err = usb_allocmem(sc->sc_bus.ub_dmatag, + sc->sc_flsize * sizeof(ehci_link_t), EHCI_FLALIGN_ALIGN, USBMALLOC_COHERENT, &sc->sc_fldma); if (err) return err; @@ -654,7 +655,7 @@ ehci_init(ehci_softc_t *sc) ehci_free_sqh(sc, sc->sc_async_head); #endif bad1: - usb_freemem(&sc->sc_bus, &sc->sc_fldma); + usb_freemem(&sc->sc_fldma); return err; } @@ -1999,7 +2000,7 @@ ehci_open(struct usbd_pipe *pipe) switch (xfertype) { case UE_CONTROL: - err = usb_allocmem(&sc->sc_bus, sizeof(usb_device_request_t), + err = usb_allocmem(sc->sc_bus.ub_dmatag, sizeof(usb_device_request_t), 0, USBMALLOC_COHERENT, &epipe->ctrl.reqdma); #ifdef EHCI_DEBUG if (err) @@ -2796,7 +2797,7 @@ ehci_alloc_sqh(ehci_softc_t *sc) mutex_exit(&sc->sc_lock); usb_dma_t dma; - int err = usb_allocmem(&sc->sc_bus, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, EHCI_SQH_SIZE * EHCI_SQH_CHUNK, EHCI_PAGE_SIZE, USBMALLOC_COHERENT, &dma); @@ -2852,7 +2853,7 @@ ehci_alloc_sqtd(ehci_softc_t *sc) mutex_exit(&sc->sc_lock); usb_dma_t dma; - int err = usb_allocmem(&sc->sc_bus, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, EHCI_SQTD_SIZE * EHCI_SQTD_CHUNK, EHCI_PAGE_SIZE, USBMALLOC_COHERENT, &dma); @@ -3112,7 +3113,7 @@ ehci_alloc_itd(ehci_softc_t *sc) mutex_exit(&sc->sc_lock); usb_dma_t dma; - int err = usb_allocmem(&sc->sc_bus, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, EHCI_ITD_SIZE * EHCI_ITD_CHUNK, EHCI_PAGE_SIZE, USBMALLOC_COHERENT, &dma); @@ -3166,7 +3167,7 @@ ehci_alloc_sitd(ehci_softc_t *sc) mutex_exit(&sc->sc_lock); usb_dma_t dma; - int err = usb_allocmem(&sc->sc_bus, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, EHCI_SITD_SIZE * EHCI_SITD_CHUNK, EHCI_PAGE_SIZE, USBMALLOC_COHERENT, &dma); @@ -3772,7 +3773,7 @@ ehci_device_ctrl_close(struct usbd_pipe ehci_close_pipe(pipe, sc->sc_async_head); - usb_freemem(&sc->sc_bus, &epipe->ctrl.reqdma); + usb_freemem(&epipe->ctrl.reqdma); } /* Index: src/sys/dev/usb/ohci.c diff -u src/sys/dev/usb/ohci.c:1.317 src/sys/dev/usb/ohci.c:1.318 --- src/sys/dev/usb/ohci.c:1.317 Thu Jun 24 23:01:03 2021 +++ src/sys/dev/usb/ohci.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ohci.c,v 1.317 2021/06/24 23:01:03 mrg Exp $ */ +/* $NetBSD: ohci.c,v 1.318 2021/12/21 09:51:22 skrll Exp $ */ /* * Copyright (c) 1998, 2004, 2005, 2012, 2016, 2020 The NetBSD Foundation, Inc. @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ohci.c,v 1.317 2021/06/24 23:01:03 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ohci.c,v 1.318 2021/12/21 09:51:22 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -388,7 +388,7 @@ ohci_detach(struct ohci_softc *sc, int f mutex_destroy(&sc->sc_intr_lock); if (sc->sc_hcca != NULL) - usb_freemem(&sc->sc_bus, &sc->sc_hccadma); + usb_freemem(&sc->sc_hccadma); pool_cache_destroy(sc->sc_xferpool); cv_destroy(&sc->sc_abort_cv); @@ -409,7 +409,7 @@ ohci_alloc_sed(ohci_softc_t *sc) DPRINTFN(2, "allocating chunk", 0, 0, 0, 0); mutex_exit(&sc->sc_lock); - int err = usb_allocmem(&sc->sc_bus, OHCI_SED_SIZE * OHCI_SED_CHUNK, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, OHCI_SED_SIZE * OHCI_SED_CHUNK, OHCI_ED_ALIGN, 0 /*!USBMALLOC_COHERENT*/, &dma); if (err) return NULL; @@ -467,7 +467,7 @@ ohci_alloc_std(ohci_softc_t *sc) DPRINTFN(2, "allocating chunk", 0, 0, 0, 0); mutex_exit(&sc->sc_lock); - int err = usb_allocmem(&sc->sc_bus, OHCI_STD_SIZE * OHCI_STD_CHUNK, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, OHCI_STD_SIZE * OHCI_STD_CHUNK, OHCI_TD_ALIGN, USBMALLOC_COHERENT, &dma); if (err) return NULL; @@ -719,7 +719,7 @@ ohci_alloc_sitd(ohci_softc_t *sc) DPRINTFN(2, "allocating chunk", 0, 0, 0, 0); mutex_exit(&sc->sc_lock); - int err = usb_allocmem(&sc->sc_bus, OHCI_SITD_SIZE * OHCI_SITD_CHUNK, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, OHCI_SITD_SIZE * OHCI_SITD_CHUNK, OHCI_ITD_ALIGN, USBMALLOC_COHERENT, &dma); if (err) return NULL; @@ -826,7 +826,7 @@ ohci_init(ohci_softc_t *sc) /* XXX determine alignment by R/W */ /* Allocate the HCCA area. */ - err = usb_allocmem(&sc->sc_bus, OHCI_HCCA_SIZE, OHCI_HCCA_ALIGN, + err = usb_allocmem(sc->sc_bus.ub_dmatag, OHCI_HCCA_SIZE, OHCI_HCCA_ALIGN, USBMALLOC_COHERENT, &sc->sc_hccadma); if (err) { sc->sc_hcca = NULL; @@ -1073,7 +1073,7 @@ ohci_init(ohci_softc_t *sc) bad2: ohci_free_sed(sc, sc->sc_ctrl_head); bad1: - usb_freemem(&sc->sc_bus, &sc->sc_hccadma); + usb_freemem(&sc->sc_hccadma); sc->sc_hcca = NULL; return err; } @@ -2140,7 +2140,7 @@ ohci_open(struct usbd_pipe *pipe) switch (xfertype) { case UE_CONTROL: pipe->up_methods = &ohci_device_ctrl_methods; - int error = usb_allocmem(&sc->sc_bus, + int error = usb_allocmem(sc->sc_bus.ub_dmatag, sizeof(usb_device_request_t), 0, USBMALLOC_COHERENT, &opipe->ctrl.reqdma); if (error) @@ -2989,7 +2989,7 @@ ohci_device_ctrl_close(struct usbd_pipe ohci_close_pipe(pipe, sc->sc_ctrl_head); ohci_free_std_locked(sc, opipe->tail.td); - usb_freemem(&sc->sc_bus, &opipe->ctrl.reqdma); + usb_freemem(&opipe->ctrl.reqdma); } /************************/ Index: src/sys/dev/usb/uhci.c diff -u src/sys/dev/usb/uhci.c:1.307 src/sys/dev/usb/uhci.c:1.308 --- src/sys/dev/usb/uhci.c:1.307 Mon Oct 4 21:02:39 2021 +++ src/sys/dev/usb/uhci.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: uhci.c,v 1.307 2021/10/04 21:02:39 andvar Exp $ */ +/* $NetBSD: uhci.c,v 1.308 2021/12/21 09:51:22 skrll Exp $ */ /* * Copyright (c) 1998, 2004, 2011, 2012, 2016, 2020 The NetBSD Foundation, Inc. @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uhci.c,v 1.307 2021/10/04 21:02:39 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uhci.c,v 1.308 2021/12/21 09:51:22 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -453,7 +453,7 @@ uhci_init(uhci_softc_t *sc) uhci_reset(sc); /* Allocate and initialize real frame array. */ - int err = usb_allocmem(&sc->sc_bus, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, UHCI_FRAMELIST_COUNT * sizeof(uhci_physaddr_t), UHCI_FRAMELIST_ALIGN, USBMALLOC_COHERENT, &sc->sc_dma); if (err) @@ -1844,7 +1844,7 @@ uhci_alloc_std(uhci_softc_t *sc) DPRINTFN(2, "allocating chunk", 0, 0, 0, 0); mutex_exit(&sc->sc_lock); - int err = usb_allocmem(&sc->sc_bus, UHCI_STD_SIZE * UHCI_STD_CHUNK, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, UHCI_STD_SIZE * UHCI_STD_CHUNK, UHCI_TD_ALIGN, USBMALLOC_COHERENT, &dma); if (err) return NULL; @@ -1910,7 +1910,7 @@ uhci_alloc_sqh(uhci_softc_t *sc) DPRINTFN(2, "allocating chunk", 0, 0, 0, 0); mutex_exit(&sc->sc_lock); - int err = usb_allocmem(&sc->sc_bus, UHCI_SQH_SIZE * UHCI_SQH_CHUNK, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, UHCI_SQH_SIZE * UHCI_SQH_CHUNK, UHCI_QH_ALIGN, USBMALLOC_COHERENT, &dma); if (err) return NULL; @@ -2823,7 +2823,7 @@ uhci_device_ctrl_close(struct usbd_pipe uhci_free_std_locked(sc, upipe->ctrl.setup); uhci_free_std_locked(sc, upipe->ctrl.stat); - usb_freemem(&sc->sc_bus, &upipe->ctrl.reqdma); + usb_freemem(&upipe->ctrl.reqdma); } /* Abort a device interrupt request. */ @@ -3505,7 +3505,7 @@ uhci_open(struct usbd_pipe *pipe) uhci_free_std(sc, upipe->ctrl.setup); goto bad; } - int err = usb_allocmem(&sc->sc_bus, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, sizeof(usb_device_request_t), 0, USBMALLOC_COHERENT, &upipe->ctrl.reqdma); if (err) { Index: src/sys/dev/usb/usb_mem.c diff -u src/sys/dev/usb/usb_mem.c:1.83 src/sys/dev/usb/usb_mem.c:1.84 --- src/sys/dev/usb/usb_mem.c:1.83 Tue Dec 21 09:25:17 2021 +++ src/sys/dev/usb/usb_mem.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: usb_mem.c,v 1.83 2021/12/21 09:25:17 skrll Exp $ */ +/* $NetBSD: usb_mem.c,v 1.84 2021/12/21 09:51:22 skrll Exp $ */ /* * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usb_mem.c,v 1.83 2021/12/21 09:25:17 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usb_mem.c,v 1.84 2021/12/21 09:51:22 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -262,10 +262,9 @@ usb_block_freemem(usb_dma_block_t *b) } int -usb_allocmem(struct usbd_bus *bus, size_t size, size_t align, u_int flags, +usb_allocmem(bus_dma_tag_t tag, size_t size, size_t align, u_int flags, usb_dma_t *p) { - bus_dma_tag_t tag = bus->ub_dmatag; usbd_status err; struct usb_frag_dma *f; usb_dma_block_t *b; @@ -345,7 +344,7 @@ usb_allocmem(struct usbd_bus *bus, size_ } void -usb_freemem(struct usbd_bus *bus, usb_dma_t *p) +usb_freemem(usb_dma_t *p) { struct usb_frag_dma *f; Index: src/sys/dev/usb/usb_mem.h diff -u src/sys/dev/usb/usb_mem.h:1.34 src/sys/dev/usb/usb_mem.h:1.35 --- src/sys/dev/usb/usb_mem.h:1.34 Tue Jan 5 18:00:21 2021 +++ src/sys/dev/usb/usb_mem.h Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: usb_mem.h,v 1.34 2021/01/05 18:00:21 skrll Exp $ */ +/* $NetBSD: usb_mem.h,v 1.35 2021/12/21 09:51:22 skrll Exp $ */ /* $FreeBSD: src/sys/dev/usb/usb_mem.h,v 1.9 1999/11/17 22:33:47 n_hibma Exp $ */ /* @@ -51,12 +51,12 @@ typedef struct usb_dma_block { #define USBMALLOC_COHERENT __BIT(1) #define USBMALLOC_ZERO __BIT(2) -int usb_allocmem(struct usbd_bus *, size_t, size_t, u_int, usb_dma_t *); -void usb_freemem(struct usbd_bus *, usb_dma_t *); +int usb_allocmem(bus_dma_tag_t, size_t, size_t, u_int, usb_dma_t *); +void usb_freemem(usb_dma_t *); void usb_syncmem(usb_dma_t *, bus_addr_t, bus_size_t, int); bus_addr_t usb_dmaaddr(usb_dma_t *, unsigned int); -#define DMAADDR(dma, o) usb_dmaaddr((dma), (o)) +#define DMAADDR(dma, o) usb_dmaaddr((dma), (o)) #define KERNADDR(dma, o) \ ((void *)((char *)(dma)->udma_block->kaddr + (dma)->udma_offs + (o))) Index: src/sys/dev/usb/usbdi.c diff -u src/sys/dev/usb/usbdi.c:1.219 src/sys/dev/usb/usbdi.c:1.220 --- src/sys/dev/usb/usbdi.c:1.219 Tue Sep 7 10:44:18 2021 +++ src/sys/dev/usb/usbdi.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi.c,v 1.219 2021/09/07 10:44:18 riastradh Exp $ */ +/* $NetBSD: usbdi.c,v 1.220 2021/12/21 09:51:22 skrll Exp $ */ /* * Copyright (c) 1998, 2012, 2015 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usbdi.c,v 1.219 2021/09/07 10:44:18 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usbdi.c,v 1.220 2021/12/21 09:51:22 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -503,7 +503,7 @@ usbd_alloc_buffer(struct usbd_xfer *xfer usb_dma_t *dmap = &xfer->ux_dmabuf; KASSERT((bus->ub_dmaflags & USBMALLOC_COHERENT) == 0); - int err = usb_allocmem(bus, size, 0, bus->ub_dmaflags, dmap); + int err = usb_allocmem(bus->ub_dmatag, size, 0, bus->ub_dmaflags, dmap); if (err) { return NULL; } @@ -537,7 +537,7 @@ usbd_free_buffer(struct usbd_xfer *xfer) if (bus->ub_usedma) { usb_dma_t *dmap = &xfer->ux_dmabuf; - usb_freemem(bus, dmap); + usb_freemem(dmap); return; } #endif Index: src/sys/dev/usb/xhci.c diff -u src/sys/dev/usb/xhci.c:1.150 src/sys/dev/usb/xhci.c:1.151 --- src/sys/dev/usb/xhci.c:1.150 Sat Oct 23 20:40:23 2021 +++ src/sys/dev/usb/xhci.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: xhci.c,v 1.150 2021/10/23 20:40:23 jakllsch Exp $ */ +/* $NetBSD: xhci.c,v 1.151 2021/12/21 09:51:22 skrll Exp $ */ /* * Copyright (c) 2013 Jonathan A. Kollasch @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xhci.c,v 1.150 2021/10/23 20:40:23 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xhci.c,v 1.151 2021/12/21 09:51:22 skrll Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -644,10 +644,10 @@ xhci_detach(struct xhci_softc *sc, int f xhci_rt_write_8(sc, XHCI_ERDP(0), 0 | XHCI_ERDP_BUSY); xhci_ring_free(sc, &sc->sc_er); - usb_freemem(&sc->sc_bus, &sc->sc_eventst_dma); + usb_freemem(&sc->sc_eventst_dma); xhci_op_write_8(sc, XHCI_DCBAAP, 0); - usb_freemem(&sc->sc_bus, &sc->sc_dcbaa_dma); + usb_freemem(&sc->sc_dcbaa_dma); kmem_free(sc->sc_slots, sizeof(*sc->sc_slots) * sc->sc_maxslots); @@ -1460,7 +1460,7 @@ xhci_init(struct xhci_softc *sc) sc->sc_maxspbuf = XHCI_HCS2_MAXSPBUF(hcs2); aprint_debug_dev(sc->sc_dev, "sc_maxspbuf %d\n", sc->sc_maxspbuf); if (sc->sc_maxspbuf != 0) { - err = usb_allocmem(&sc->sc_bus, + err = usb_allocmem(sc->sc_bus.ub_dmatag, sizeof(uint64_t) * sc->sc_maxspbuf, sizeof(uint64_t), USBMALLOC_COHERENT | USBMALLOC_ZERO, &sc->sc_spbufarray_dma); @@ -1476,7 +1476,7 @@ xhci_init(struct xhci_softc *sc) for (i = 0; i < sc->sc_maxspbuf; i++) { usb_dma_t * const dma = &sc->sc_spbuf_dma[i]; /* allocate contexts */ - err = usb_allocmem(&sc->sc_bus, sc->sc_pgsz, + err = usb_allocmem(sc->sc_bus.ub_dmatag, sc->sc_pgsz, sc->sc_pgsz, USBMALLOC_COHERENT | USBMALLOC_ZERO, dma); if (err) { @@ -1526,7 +1526,7 @@ xhci_init(struct xhci_softc *sc) XHCI_EVENT_RING_SEGMENT_TABLE_ALIGN); KASSERTMSG(size <= (512 * 1024), "eventst size %zu too large", size); align = XHCI_EVENT_RING_SEGMENT_TABLE_ALIGN; - err = usb_allocmem(&sc->sc_bus, size, align, + err = usb_allocmem(sc->sc_bus.ub_dmatag, size, align, USBMALLOC_COHERENT | USBMALLOC_ZERO, dma); if (err) { aprint_error_dev(sc->sc_dev, "eventst init fail, err %d\n", @@ -1544,7 +1544,7 @@ xhci_init(struct xhci_softc *sc) size = (1 + sc->sc_maxslots) * sizeof(uint64_t); KASSERTMSG(size <= 2048, "dcbaa size %zu too large", size); align = XHCI_DEVICE_CONTEXT_BASE_ADDRESS_ARRAY_ALIGN; - err = usb_allocmem(&sc->sc_bus, size, align, + err = usb_allocmem(sc->sc_bus.ub_dmatag, size, align, USBMALLOC_COHERENT | USBMALLOC_ZERO, dma); if (err) { aprint_error_dev(sc->sc_dev, "dcbaa init fail, err %d\n", err); @@ -1626,9 +1626,9 @@ xhci_init(struct xhci_softc *sc) sc->sc_slots = NULL; } - usb_freemem(&sc->sc_bus, &sc->sc_dcbaa_dma); + usb_freemem(&sc->sc_dcbaa_dma); bad4: - usb_freemem(&sc->sc_bus, &sc->sc_eventst_dma); + usb_freemem(&sc->sc_eventst_dma); bad3: xhci_ring_free(sc, &sc->sc_er); bad2: @@ -1636,8 +1636,8 @@ xhci_init(struct xhci_softc *sc) i = sc->sc_maxspbuf; bad1: for (int j = 0; j < i; j++) - usb_freemem(&sc->sc_bus, &sc->sc_spbuf_dma[j]); - usb_freemem(&sc->sc_bus, &sc->sc_spbufarray_dma); + usb_freemem(&sc->sc_spbuf_dma[j]); + usb_freemem(&sc->sc_spbufarray_dma); return rv; } @@ -2974,7 +2974,7 @@ xhci_ring_init(struct xhci_softc * const xr = kmem_zalloc(sizeof(struct xhci_ring), KM_SLEEP); DPRINTFN(1, "ring %#jx", (uintptr_t)xr, 0, 0, 0); - int err = usb_allocmem(&sc->sc_bus, size, align, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, size, align, USBMALLOC_COHERENT | USBMALLOC_ZERO, &xr->xr_dma); if (err) { kmem_free(xr, sizeof(struct xhci_ring)); @@ -2998,7 +2998,7 @@ xhci_ring_free(struct xhci_softc * const if (*xr == NULL) return; - usb_freemem(&sc->sc_bus, &(*xr)->xr_dma); + usb_freemem(&(*xr)->xr_dma); mutex_destroy(&(*xr)->xr_lock); kmem_free((*xr)->xr_cookies, sizeof(*(*xr)->xr_cookies) * (*xr)->xr_ntrb); @@ -3413,7 +3413,7 @@ xhci_init_slot(struct usbd_device *dev, xs = &sc->sc_slots[slot]; /* allocate contexts */ - int err = usb_allocmem(&sc->sc_bus, sc->sc_pgsz, sc->sc_pgsz, + int err = usb_allocmem(sc->sc_bus.ub_dmatag, sc->sc_pgsz, sc->sc_pgsz, USBMALLOC_COHERENT | USBMALLOC_ZERO, &xs->xs_dc_dma); if (err) { DPRINTFN(1, "failed to allocmem output device context %jd", @@ -3421,7 +3421,7 @@ xhci_init_slot(struct usbd_device *dev, return USBD_NOMEM; } - err = usb_allocmem(&sc->sc_bus, sc->sc_pgsz, sc->sc_pgsz, + err = usb_allocmem(sc->sc_bus.ub_dmatag, sc->sc_pgsz, sc->sc_pgsz, USBMALLOC_COHERENT | USBMALLOC_ZERO, &xs->xs_ic_dma); if (err) { DPRINTFN(1, "failed to allocmem input device context %jd", @@ -3435,7 +3435,7 @@ xhci_init_slot(struct usbd_device *dev, return USBD_NORMAL_COMPLETION; bad1: - usb_freemem(&sc->sc_bus, &xs->xs_dc_dma); + usb_freemem(&xs->xs_dc_dma); xs->xs_idx = 0; return USBD_NOMEM; } @@ -3453,8 +3453,8 @@ xhci_free_slot(struct xhci_softc *sc, st if (xs->xs_xr[dci] != NULL) xhci_ring_free(sc, &xs->xs_xr[dci]); } - usb_freemem(&sc->sc_bus, &xs->xs_ic_dma); - usb_freemem(&sc->sc_bus, &xs->xs_dc_dma); + usb_freemem(&xs->xs_ic_dma); + usb_freemem(&xs->xs_dc_dma); xs->xs_idx = 0; } Index: src/sys/external/bsd/dwc2/dwc2.c diff -u src/sys/external/bsd/dwc2/dwc2.c:1.76 src/sys/external/bsd/dwc2/dwc2.c:1.77 --- src/sys/external/bsd/dwc2/dwc2.c:1.76 Thu Jan 7 13:25:51 2021 +++ src/sys/external/bsd/dwc2/dwc2.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dwc2.c,v 1.76 2021/01/07 13:25:51 skrll Exp $ */ +/* $NetBSD: dwc2.c,v 1.77 2021/12/21 09:51:22 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dwc2.c,v 1.76 2021/01/07 13:25:51 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dwc2.c,v 1.77 2021/12/21 09:51:22 skrll Exp $"); #include "opt_usb.h" @@ -403,7 +403,7 @@ dwc2_open(struct usbd_pipe *pipe) switch (xfertype) { case UE_CONTROL: pipe->up_methods = &dwc2_device_ctrl_methods; - int err = usb_allocmem(&sc->sc_bus, sizeof(usb_device_request_t), + int err = usb_allocmem(sc->sc_bus.ub_dmatag, sizeof(usb_device_request_t), 0, USBMALLOC_COHERENT, &dpipe->req_dma); if (err) return USBD_NOMEM; @@ -763,13 +763,12 @@ dwc2_device_ctrl_abort(struct usbd_xfer Static void dwc2_device_ctrl_close(struct usbd_pipe *pipe) { - struct dwc2_softc * const sc = DWC2_PIPE2SC(pipe); struct dwc2_pipe * const dpipe = DWC2_PIPE2DPIPE(pipe); DPRINTF("pipe=%p\n", pipe); dwc2_close_pipe(pipe); - usb_freemem(&sc->sc_bus, &dpipe->req_dma); + usb_freemem(&dpipe->req_dma); } Static void Index: src/sys/external/bsd/dwc2/dist/dwc2_hcd.c diff -u src/sys/external/bsd/dwc2/dist/dwc2_hcd.c:1.25 src/sys/external/bsd/dwc2/dist/dwc2_hcd.c:1.26 --- src/sys/external/bsd/dwc2/dist/dwc2_hcd.c:1.25 Mon Jan 11 17:00:18 2021 +++ src/sys/external/bsd/dwc2/dist/dwc2_hcd.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dwc2_hcd.c,v 1.25 2021/01/11 17:00:18 skrll Exp $ */ +/* $NetBSD: dwc2_hcd.c,v 1.26 2021/12/21 09:51:22 skrll Exp $ */ /* * hcd.c - DesignWare HS OTG Controller host-mode routines @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dwc2_hcd.c,v 1.25 2021/01/11 17:00:18 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dwc2_hcd.c,v 1.26 2021/12/21 09:51:22 skrll Exp $"); #include <sys/types.h> #include <sys/kmem.h> @@ -732,8 +732,8 @@ static int dwc2_hc_setup_align_buf(struc qh->dw_align_buf = NULL; qh->dw_align_buf_dma = 0; - err = usb_allocmem(&hsotg->hsotg_sc->sc_bus, buf_size, 0, - USBMALLOC_COHERENT, &qh->dw_align_buf_usbdma); + err = usb_allocmem(hsotg->hsotg_sc->sc_bus.ub_dmatag, + buf_size, 0, USBMALLOC_COHERENT, &qh->dw_align_buf_usbdma); if (!err) { usb_dma_t *ud = &qh->dw_align_buf_usbdma; @@ -2247,8 +2247,7 @@ static void dwc2_hcd_free(struct dwc2_hs if (hsotg->core_params->dma_enable > 0) { if (hsotg->status_buf) { - usb_freemem(&hsotg->hsotg_sc->sc_bus, - &hsotg->status_buf_usbdma); + usb_freemem(&hsotg->status_buf_usbdma); hsotg->status_buf = NULL; } } else { @@ -2391,7 +2390,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso */ hsotg->status_buf = NULL; if (hsotg->core_params->dma_enable > 0) { - int error = usb_allocmem(&hsotg->hsotg_sc->sc_bus, + int error = usb_allocmem(hsotg->hsotg_sc->sc_bus.ub_dmatag, DWC2_HCD_STATUS_BUF_SIZE, 0, USBMALLOC_COHERENT, &hsotg->status_buf_usbdma); if (!error) { Index: src/sys/external/bsd/dwc2/dist/dwc2_hcdddma.c diff -u src/sys/external/bsd/dwc2/dist/dwc2_hcdddma.c:1.9 src/sys/external/bsd/dwc2/dist/dwc2_hcdddma.c:1.10 --- src/sys/external/bsd/dwc2/dist/dwc2_hcdddma.c:1.9 Sun Apr 5 20:59:38 2020 +++ src/sys/external/bsd/dwc2/dist/dwc2_hcdddma.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dwc2_hcdddma.c,v 1.9 2020/04/05 20:59:38 skrll Exp $ */ +/* $NetBSD: dwc2_hcdddma.c,v 1.10 2021/12/21 09:51:22 skrll Exp $ */ /* * hcd_ddma.c - DesignWare HS OTG Controller descriptor DMA routines @@ -40,7 +40,7 @@ * This file contains the Descriptor DMA implementation for Host mode */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dwc2_hcdddma.c,v 1.9 2020/04/05 20:59:38 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dwc2_hcdddma.c,v 1.10 2021/12/21 09:51:22 skrll Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -105,8 +105,8 @@ static int dwc2_desc_list_alloc(struct d qh->desc_list_sz = sizeof(struct dwc2_hcd_dma_desc) * dwc2_max_desc_num(qh); - err = usb_allocmem(&hsotg->hsotg_sc->sc_bus, qh->desc_list_sz, 0, - USBMALLOC_COHERENT, &qh->desc_list_usbdma); + err = usb_allocmem(hsotg->hsotg_sc->sc_bus.ub_dmatag, + qh->desc_list_sz, 0, USBMALLOC_COHERENT, &qh->desc_list_usbdma); if (err) return -ENOMEM; @@ -116,7 +116,7 @@ static int dwc2_desc_list_alloc(struct d qh->n_bytes = kmem_zalloc(sizeof(u32) * dwc2_max_desc_num(qh), KM_SLEEP); if (!qh->n_bytes) { - usb_freemem(&hsotg->hsotg_sc->sc_bus, &qh->desc_list_usbdma); + usb_freemem(&qh->desc_list_usbdma); qh->desc_list = NULL; return -ENOMEM; } @@ -128,7 +128,7 @@ static void dwc2_desc_list_free(struct d { if (qh->desc_list) { - usb_freemem(&hsotg->hsotg_sc->sc_bus, &qh->desc_list_usbdma); + usb_freemem(&qh->desc_list_usbdma); qh->desc_list = NULL; } @@ -146,8 +146,8 @@ static int dwc2_frame_list_alloc(struct /* XXXNH - pool_cache_t */ hsotg->frame_list_sz = 4 * FRLISTEN_64_SIZE; hsotg->frame_list = NULL; - err = usb_allocmem(&hsotg->hsotg_sc->sc_bus, hsotg->frame_list_sz, - 0, USBMALLOC_COHERENT, &hsotg->frame_list_usbdma); + err = usb_allocmem(hsotg->hsotg_sc->sc_bus.ub_dmatag, + hsotg->frame_list_sz, 0, USBMALLOC_COHERENT, &hsotg->frame_list_usbdma); if (!err) { hsotg->frame_list = KERNADDR(&hsotg->frame_list_usbdma, 0); @@ -177,7 +177,7 @@ static void dwc2_frame_list_free(struct spin_unlock_irqrestore(&hsotg->lock, flags); - usb_freemem(&hsotg->hsotg_sc->sc_bus, &frame_list_usbdma); + usb_freemem(&frame_list_usbdma); } static void dwc2_per_sched_enable(struct dwc2_hsotg *hsotg, u32 fr_list_en) Index: src/sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c diff -u src/sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c:1.15 src/sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c:1.16 --- src/sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c:1.15 Wed Aug 8 07:20:44 2018 +++ src/sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c Tue Dec 21 09:51:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dwc2_hcdqueue.c,v 1.15 2018/08/08 07:20:44 simonb Exp $ */ +/* $NetBSD: dwc2_hcdqueue.c,v 1.16 2021/12/21 09:51:22 skrll Exp $ */ /* * hcd_queue.c - DesignWare HS OTG Controller host queuing routines @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dwc2_hcdqueue.c,v 1.15 2018/08/08 07:20:44 simonb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dwc2_hcdqueue.c,v 1.16 2021/12/21 09:51:22 skrll Exp $"); #include <sys/types.h> #include <sys/kmem.h> @@ -272,7 +272,7 @@ void dwc2_hcd_qh_free(struct dwc2_hsotg if (qh->desc_list) { dwc2_hcd_qh_free_ddma(hsotg, qh); } else if (qh->dw_align_buf) { - usb_freemem(&sc->sc_bus, &qh->dw_align_buf_usbdma); + usb_freemem(&qh->dw_align_buf_usbdma); qh->dw_align_buf_dma = (dma_addr_t)0; }