From owner-freebsd-current Wed Jan 15 13:56:37 2003 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B754037B401 for ; Wed, 15 Jan 2003 13:56:35 -0800 (PST) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mx1.FreeBSD.org (Postfix) with SMTP id 83AD843F13 for ; Wed, 15 Jan 2003 13:56:34 -0800 (PST) (envelope-from tmoestl@gmx.net) Received: (qmail 2866 invoked by uid 0); 15 Jan 2003 21:56:29 -0000 Received: from p508e7cf6.dip.t-dialin.net (HELO galatea.local) (80.142.124.246) by mail.gmx.net (mp015-rz3) with SMTP; 15 Jan 2003 21:56:29 -0000 Received: from localhost ([127.0.0.1] helo=galatea.local) by galatea.local with esmtp (Exim 4.12 #1) id 18YvY4-0000IE-00; Wed, 15 Jan 2003 22:58:12 +0100 Received: (from tmm@localhost) by galatea.local (8.12.6/8.12.6/Submit) id h0FLw5pc001129; Wed, 15 Jan 2003 22:58:05 +0100 (CET) Date: Wed, 15 Jan 2003 22:58:04 +0100 From: Thomas Moestl To: Josef Karthauser Cc: Maxime Henrion , current@FreeBSD.org Subject: Re: Bus DMA for USB - compilation problems. Message-ID: <20030115215804.GA286@crow.dom2ip.de> Mail-Followup-To: Josef Karthauser , Maxime Henrion , current@freebsd.org References: <20030115195607.GA13076@genius.tao.org.uk> <20030115200519.GH16775@elvis.mu.org> <20030115202033.GA13368@genius.tao.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20030115202033.GA13368@genius.tao.org.uk> User-Agent: Mutt/1.4i Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Wed, 2003/01/15 at 20:20:33 +0000, Josef Karthauser wrote: > On Wed, Jan 15, 2003 at 12:05:20PM -0800, Maxime Henrion wrote: > > Josef Karthauser wrote: > > > I've partially ported the NetBSD busdma code for USB to FreeBSD, but > > > it doesn't compile, probably for a trivial reason. > > > > > > Anyone fancy helping me out? > > > > I didn't look at the patches yet, but could you give me the compilation > > error you are getting ? > > > > cc -c -O -pipe -march=pentium3 -Wall -Wredundant-decls -Wnested-externs > -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline > -Wcast-qual -fformat-extensions -ansi -g -nostdinc -I- -I. > -I/usr/src/sys -I/usr/src/sys/dev -I/usr/src/sys/contrib/dev/acpica > -I/usr/src/sys/contrib/ipfilter -D_KERNEL -include opt_global.h > -fno-common -mno-align-long-strings -mpreferred-stack-boundary=2 > -ffreestanding -Werror /usr/src/sys/dev/usb/uhci.c > /usr/src/sys/dev/usb/uhci.c: In function `uhci_init': > /usr/src/sys/dev/usb/uhci.c:425: dereferencing pointer to incomplete type > /usr/src/sys/dev/usb/uhci.c: In function `uhci_power': > /usr/src/sys/dev/usb/uhci.c:714: dereferencing pointer to incomplete type > /usr/src/sys/dev/usb/uhci.c: In function `uhci_alloc_std': > > It's failing at lines like: > > UWRITE4(sc, UHCI_FLBASEADDR, DMAADDR(&sc->sc_dma, 0)); /* set frame list */ > > The problematic is DMAADDR, and it's because the sc->sc_dma, which is > defined as usb_dma_t. This is defined in usb_port.h, and it uses > usb_dma_block which is defined in usb_mem.h. I think that it's the > usb_dma_block that is coming up as incomplete, but I'm not sure. DMAADDR is: #define DMAADDR(dma, o) ((dma)->block->map->dm_segs[0].ds_addr + (dma)->offs + (o)) struct usb_dma_block starts like: typedef struct usb_dma_block { bus_dma_tag_t tag; bus_dmamap_t map; However, bus_dmamap_t (like bus_dma_tag_t) is supposed to be opaque to users of the busdma interface on FreeBSD. Our implementations enforce this by defining it as: typedef struct bus_dmamap *bus_dmamap_t; , and by not exporting struct bus_dmamap in public headers. The DMA addresses are obtained by writing an appropriate callback routine to process them and passing it to bus_dmamap_load(). The usb_mem.c will need some other changes to work on FreeBSD, since our busdma code has diverged from NetBSD's quite a bit. - Thomas -- Thomas Moestl http://www.tu-bs.de/~y0015675/ http://people.FreeBSD.org/~tmm/ PGP fingerprint: 1C97 A604 2BD0 E492 51D0 9C0F 1FE6 4F1D 419C 776C To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message