Skip site navigation (1)Skip section navigation (2)
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>