Missing isa_ symbols
Geert Uytterhoeven
geert at linux-m68k.org
Sun Feb 15 21:45:08 EST 2004
On Sat, 14 Feb 2004, Christoph Hellwig wrote:
> On Tue, Feb 03, 2004 at 04:17:28PM -0700, Tom Rini wrote:
> > On PPC32, CONFIG_ISA is kinda hack'ish. I know it will / must work on
> > PRePs, and it _may_ but I'm not certain of some CHRP machines as well.
> > So you can probably look at the i386 versions of the functions (save for
> > udelay as Ben mentioned) and do something like:
> > if (_machine == _MACH_prep) {
> > ... do i386 version ...
> > } else
> > return -EINVAL; // whatever
>
> Well, there's no really sane error return for any of those, but as these
> routines are clearly for isa drivers only I'd just implement the prep
> versions.
>
> Does this patch look okay?
>
> --- 1.16/include/asm-ppc/io.h Wed Feb 4 06:31:18 2004
> +++ edited/include/asm-ppc/io.h Fri Feb 13 07:30:39 2004
> @@ -199,6 +199,26 @@
> #define memcpy_toio(a,b,c) memcpy((void *)(a),(b),(c))
>
> /*
> + * ISA space is 'always mapped' on a typical prep system, no need to
> + * explicitly ioremap() it. The fact that the ISA IO space is mapped
> + * to PAGE_OFFSET is pure coincidence - it does not mean ISA values
> + * are physical addresses. The following constant pointer can be
> + * used as the IO-area pointer (it can be iounmapped as well, so the
> + * analogy with PCI is quite large):
> + */
> +#define __ISA_IO_base ((char *)(PAGE_OFFSET))
This is not true, I think.
I don't remember whether there's a global ISA memory base variable on PPC yet
(I think there is on MIPS)...
> +
> +#define isa_readb(a) readb(__ISA_IO_base + (a))
> +#define isa_readw(a) readw(__ISA_IO_base + (a))
> +#define isa_readl(a) readl(__ISA_IO_base + (a))
> +#define isa_writeb(b,a) writeb(b,__ISA_IO_base + (a))
> +#define isa_writew(w,a) writew(w,__ISA_IO_base + (a))
> +#define isa_writel(l,a) writel(l,__ISA_IO_base + (a))
> +#define isa_memset_io(a,b,c) memset_io(__ISA_IO_base + (a),(b),(c))
> +#define isa_memcpy_fromio(a,b,c) memcpy_fromio((a),__ISA_IO_base + (b),(c))
> +#define isa_memcpy_toio(a,b,c) memcpy_toio(__ISA_IO_base + (a),(b),(c))
> +
> +/*
> * Map in an area of physical address space, for accessing
> * I/O devices etc.
> */
> @@ -265,6 +285,13 @@
> return (void*) mm_ptov (address);
> #endif
> }
> +
> +/*
> + * ISA I/O bus memory addresses are 1:1 with the physical address.
> + */
> +#define isa_virt_to_bus virt_to_phys
> +#define isa_page_to_bus page_to_phys
> +#define isa_bus_to_virt phys_to_virt
Same for this.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at 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
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-dev
mailing list