lkml.org 
[lkml]   [2000]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: dual head r128
On Fri, 13 Oct 2000, Benjamin Herrenschmidt wrote:
> >Or, more general, treat [PCI] I/O space similar to [PCI] memory space. Just
> >like we must use ioremap() for memory space:
> >
> > cookie = ioremap(memory_space_address, size);
> > x = readb(cookie+offset);
> >
> >we could have ioportremap() for I/O space:
> >
> > cookie = ioportremap(io_space_address, size);
> > x = inb(cookie+offset);
> >
> >On PC, ioportremap(x) would evaluate to (x). On other platforms, we can do
> >whatever we want.
>
> That would make us fall in the same trap as we are now with multiple IO
> busses having overlapping IO mappings. (Basically, every IO bus on some
> multi-bus systems have 0->64k IO range). ioportremap() cannot "know" on
> which bus the device is, except if we also pass the pci_dev* parameter
> (and NULL for ISA).

But you can fixup all pci_dev's so bus 0 takes 0x00000-0x0fffff, bus 1 takes
0x10000-0x1ffff, and so on. ioportremap() finds out the bus by looking at the
region.

I/O space is not limited to 64 kB on non-ia32, we can use the full size of an
unsigned long.

Legacy I/O mappings (`I have legacy lp0 on bus 0 and legacy lp1 on bus 1') can
be sorted out in ioportremap() as well.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:41    [W:0.038 / U:0.552 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site