Date: Wed, 10 Jan 2001 17:16:08 -0800 From: Mike Smith <msmith@freebsd.org> To: Peter Wemm <peter@netplex.com.au> Cc: Jonathan Lemon <jlemon@flugsvamp.com>, Peter Jeremy <peter.jeremy@alcatel.com.au>, Sergey Babkin <babkin@FreeBSD.ORG>, freebsd-arch@FreeBSD.ORG Subject: Re: cvs commit: src/sys/gnu/i386/isa dgb.c dgm.c dgmreg.h dgreg.h Message-ID: <200101110116.f0B1G8f00436@mass.osd.bsdi.com> In-Reply-To: Your message of "Wed, 10 Jan 2001 15:23:38 PST." <200101102323.f0ANNcQ63145@mobile.wemm.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> > > This means that the code does a lot of checking to see if the card > > > is PCI or not, resulting in expressions like: > > > ((IS_PCI(board_type)) ? *mem[reg] : inb(base + reg)) > > > > This should be taken care of by the bus_space() macros; which is > > already done by most drivers in the tree. (Many drivers can run > > in either PIO or memory mapped mode) > > But the bus_space_() stuff doesn't handle changing register windows etc. > eg: if you have a 64K memory space and can read/write it directly when > memory mapped, but when on ISA it is all crammed into 16 lots of 4K windows > then bus_space_() cannot save you from this. > > ie: > if (IS_PCI(board_type)) { > value = *mem[reg]; > } else { > if (board->window != window(reg)) > board->window = window(reg); > value = inb(base + (reg % winsize)); > } Typically, if you have half a clue, you will separate the ISA-aware parts of the driver from the PCI-aware parts and use a set of function vectors. Makes for much cleaner code. 8) -- ... every activity meets with opposition, everyone who acts has his rivals and unfortunately opponents also. But not because people want to be opponents, rather because the tasks and relationships force people to take different points of view. [Dr. Fritz Todt] V I C T O R Y N O T V E N G E A N C E To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200101110116.f0B1G8f00436>