From owner-svn-src-user@FreeBSD.ORG Wed Oct 6 23:04:07 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B5FB11065670; Wed, 6 Oct 2010 23:04:07 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A58528FC16; Wed, 6 Oct 2010 23:04:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o96N47kT020909; Wed, 6 Oct 2010 23:04:07 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o96N47nC020903; Wed, 6 Oct 2010 23:04:07 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201010062304.o96N47nC020903@svn.freebsd.org> From: Weongyo Jeong Date: Wed, 6 Oct 2010 23:04:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r213500 - in user/weongyo/usb/sys/dev/usb: . controller X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Oct 2010 23:04:07 -0000 Author: weongyo Date: Wed Oct 6 23:04:07 2010 New Revision: 213500 URL: http://svn.freebsd.org/changeset/base/213500 Log: Rewrites USB_DMATAG_TO_XROOT macro to remove linux-like container_of() macro. Sometimes it's useful because it don't need to handle the parent pointer but it's not intuitive. Modified: user/weongyo/usb/sys/dev/usb/controller/usb_controller.c user/weongyo/usb/sys/dev/usb/usb_busdma.c user/weongyo/usb/sys/dev/usb/usb_busdma.h user/weongyo/usb/sys/dev/usb/usb_transfer.c user/weongyo/usb/sys/dev/usb/usb_transfer.h Modified: user/weongyo/usb/sys/dev/usb/controller/usb_controller.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/controller/usb_controller.c Wed Oct 6 22:41:32 2010 (r213499) +++ user/weongyo/usb/sys/dev/usb/controller/usb_controller.c Wed Oct 6 23:04:07 2010 (r213500) @@ -473,7 +473,7 @@ usb_bus_mem_alloc_all(struct usb_bus *bu #if USB_HAVE_BUSDMA usb_dma_tag_setup(bus->dma_parent_tag, bus->dma_tags, - dmat, &bus->bus_mtx, NULL, 32, USB_BUS_DMA_TAG_MAX); + dmat, &bus->bus_mtx, NULL, 32, USB_BUS_DMA_TAG_MAX, NULL); if (bus->busmem_func != NULL) bus->busmem_func(bus, usb_bus_mem_alloc_all_cb); #endif Modified: user/weongyo/usb/sys/dev/usb/usb_busdma.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_busdma.c Wed Oct 6 22:41:32 2010 (r213499) +++ user/weongyo/usb/sys/dev/usb/usb_busdma.c Wed Oct 6 23:04:07 2010 (r213500) @@ -767,7 +767,7 @@ usb_dma_tag_find(struct usb_dma_parent_t void usb_dma_tag_setup(struct usb_dma_parent_tag *udpt, struct usb_dma_tag *udt, bus_dma_tag_t dmat, struct mtx *mtx, usb_dma_callback_t *func, - uint8_t ndmabits, uint8_t nudt) + uint8_t ndmabits, uint8_t nudt, void *priv) { bzero(udpt, sizeof(*udpt)); @@ -786,6 +786,7 @@ usb_dma_tag_setup(struct usb_dma_parent_ udpt->utag_first = udt; udpt->utag_max = nudt; udpt->dma_bits = ndmabits; + udpt->priv = priv; while (nudt--) { bzero(udt, sizeof(*udt)); Modified: user/weongyo/usb/sys/dev/usb/usb_busdma.h ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_busdma.h Wed Oct 6 22:41:32 2010 (r213499) +++ user/weongyo/usb/sys/dev/usb/usb_busdma.h Wed Oct 6 23:04:07 2010 (r213500) @@ -115,6 +115,11 @@ struct usb_dma_parent_tag { uint8_t dma_error; /* set if DMA load operation failed */ uint8_t dma_bits; /* number of DMA address lines */ uint8_t utag_max; /* number of USB DMA tags */ + /* + * pointer to struct usb_xfer_root. But it'd be NULL if + * `struct usb_dma_parent_tag' is for controller/usb_controller.c + */ + void *priv; }; #else struct usb_dma_parent_tag {}; /* empty struct */ @@ -151,7 +156,8 @@ void usb_bdma_pre_sync(struct usb_xfer * void usb_bdma_work_loop(struct usb_xfer_queue *pq); void usb_dma_tag_setup(struct usb_dma_parent_tag *udpt, struct usb_dma_tag *udt, bus_dma_tag_t dmat, struct mtx *mtx, - usb_dma_callback_t *func, uint8_t ndmabits, uint8_t nudt); + usb_dma_callback_t *func, uint8_t ndmabits, uint8_t nudt, + void *priv); void usb_dma_tag_unsetup(struct usb_dma_parent_tag *udpt); void usb_pc_cpu_flush(struct usb_page_cache *pc); void usb_pc_cpu_invalidate(struct usb_page_cache *pc); Modified: user/weongyo/usb/sys/dev/usb/usb_transfer.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_transfer.c Wed Oct 6 22:41:32 2010 (r213499) +++ user/weongyo/usb/sys/dev/usb/usb_transfer.c Wed Oct 6 23:04:07 2010 (r213500) @@ -918,7 +918,7 @@ usbd_transfer_setup(struct usb_device *u #if USB_HAVE_BUSDMA usb_dma_tag_setup(&info->dma_parent_tag, parm.dma_tag_p, udev->bus->dma_parent_tag[0].tag, - xfer_mtx, &usb_bdma_done_event, 32, parm.dma_tag_max); + xfer_mtx, &usb_bdma_done_event, 32, parm.dma_tag_max, info); #endif info->bus = udev->bus; Modified: user/weongyo/usb/sys/dev/usb/usb_transfer.h ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_transfer.h Wed Oct 6 22:41:32 2010 (r213499) +++ user/weongyo/usb/sys/dev/usb/usb_transfer.h Wed Oct 6 23:04:07 2010 (r213500) @@ -29,10 +29,7 @@ #include -#define USB_DMATAG_TO_XROOT(dpt) \ - ((struct usb_xfer_root *)( \ - ((uint8_t *)(dpt)) - \ - ((uint8_t *)&((struct usb_xfer_root *)0)->dma_parent_tag))) +#define USB_DMATAG_TO_XROOT(dpt) ((struct usb_xfer_root *)(dpt)->priv) /* * The following structure is used to keep information about memory