[PATCH 5/7 v2] Basic IO mappings for mach-tcc8k

Hans J. Koch hjk at linutronix.de
Sat Mar 27 13:08:56 EDT 2010


On Thu, Mar 25, 2010 at 08:37:58PM +0000, Russell King - ARM Linux wrote:
> On Thu, Mar 25, 2010 at 09:15:09PM +0100, Hans J. Koch wrote:
> > +#include <linux/kernel.h>
> > +#include <linux/init.h>
> > +
> > +#include <asm/tlb.h>
> 
> You don't need asm/tlb.h in this file.

Removed.

> 
> > +#include <asm/mach/map.h>
> > +#include <asm/io.h>
> 
> linux/io.h

OK.

> 
> > +
> > +#include <mach/tcc8k-regs.h>
> > +
> > +/*
> > + * The machine specific code may provide the extra mapping besides the
> > + * default mapping provided here.
> > + */
> > +static struct map_desc tcc8k_io_desc[] __initdata = {
> > +	{
> > +		.virtual	= CS1_BASE_VIRT,	/* CS1 (CS8900) */
> > +		.pfn		= __phys_to_pfn(CS1_BASE),
> > +		.length		= CS1_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +	{
> 
> 	}, {
> 
> is more conventional and avoids using up valuable vertical screen
> realestate.

Right, fixed.

> 
> > +		.virtual	= AHB_PERI_BASE_VIRT,	/* AHB peripherals */
> > +		.pfn		= __phys_to_pfn(AHB_PERI_BASE),
> > +		.length		= AHB_PERI_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +	{
> > +		.virtual	= APB0_PERI_BASE_VIRT,	/* APB peripherals */
> > +		.pfn		= __phys_to_pfn(APB0_PERI_BASE),
> > +		.length		= APB0_PERI_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +	{
> > +		.virtual	= APB1_PERI_BASE_VIRT,	/* APB peripherals */
> > +		.pfn		= __phys_to_pfn(APB1_PERI_BASE),
> > +		.length		= APB1_PERI_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +	{
> > +		.virtual	= EXT_MEM_CTRL_BASE_VIRT, /* Ext. mem.contr. */
> > +		.pfn		= __phys_to_pfn(EXT_MEM_CTRL_BASE),
> > +		.length		= EXT_MEM_CTRL_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +};
> > +
> > +/*
> > + * Maps common IO regions for tcc8k.
> > + *
> > + */
> > +void __init tcc8k_map_common_io(void)
> > +{
> > +	iotable_init(tcc8k_io_desc, ARRAY_SIZE(tcc8k_io_desc));
> > +}
> > +
> > diff --git a/arch/arm/plat-tcc/include/mach/io.h b/arch/arm/plat-tcc/include/mach/io.h
> > new file mode 100644
> > index 0000000..7d84370
> > --- /dev/null
> > +++ b/arch/arm/plat-tcc/include/mach/io.h
> > @@ -0,0 +1,53 @@
> > +/*
> > + * Based on:    linux/include/asm-arm/arch-sa1100/io.h
> > + * Author : <linux at telechips.com>
> > + * Created: June 10, 2008
> > + * Description: IO definitions for TCC8300 processors and boards
> > + *
> > + * Copyright (C) 1997-1999 Russell King
> > + * Copyright (C) 2008-2009 Telechips
> > + *
> > + * Modifications for mainline (C) 2009 Hans J. Koch <hjk at linutronix.de>
> > + *
> > + * Licensed under the terms of the GNU Public License version 2.
> > + */
> > +
> > +#ifndef __ASM_ARM_ARCH_IO_H
> > +#define __ASM_ARM_ARCH_IO_H
> > +
> > +#define IO_SPACE_LIMIT 0xffffffff
> > +
> > +/*
> > + * We don't actually have real ISA nor PCI buses, but there is so many
> > + * drivers out there that might just work if we fake them...
> > + */
> > +#define __io(a)			((void __iomem *)(PCIO_BASE + (a)))
> 
> #define __io(a)		__typesafe_io(a)
> 
> please.

OK.

> 
> > +#define __mem_pci(a)		(a)
> > +
> > +/*
> > + * ----------------------------------------------------------------------------
> > + * I/O mapping
> > + * ----------------------------------------------------------------------------
> > + */
> > +
> > +#define PCIO_BASE	0
> > +
> > +/* Address Map of Internal Peripherials (Base 0x80000000) */
> > +#define IO_PHYS_A			0x80000000
> > +#define IO_OFFSET_A			0x70000000 /* Virtual IO = 0xF0000000 */
> > +#define IO_SIZE_A			0x100000
> > +#define IO_VIRT_A			(IO_PHYS + IO_OFFSET)
> > +#define IO_ADDRESS_A(pa)	((pa) + IO_OFFSET)
> > +#define IO_P2V_A(pa)		((pa) + IO_OFFSET)
> > +#define IO_V2P_A(va)		((va) - IO_OFFSET)
> 
> Where is IO_OFFSET defined?

Nowhere. Actually, none of these #define IO_* is needed at all. Removed.

Thanks,
Hans




More information about the linux-arm-kernel mailing list