[PATCH 16/20] imx27: define and use MX27_IO_ADDRESS

Lothar Waßmann LW at KARO-electronics.de
Thu Dec 17 02:06:36 EST 2009


Hi,

Uwe Kleine-König writes:
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
> ---
>  arch/arm/mach-mx2/clock_imx27.c       |    4 ++--
>  arch/arm/mach-mx2/cpu_imx27.c         |    3 ++-
>  arch/arm/plat-mxc/include/mach/mx27.h |    7 +++++++
>  3 files changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-mx2/clock_imx27.c b/arch/arm/mach-mx2/clock_imx27.c
> index 6db9856..bb9f603 100644
> --- a/arch/arm/mach-mx2/clock_imx27.c
> +++ b/arch/arm/mach-mx2/clock_imx27.c
> @@ -29,7 +29,7 @@
>  #include <mach/common.h>
>  #include <mach/hardware.h>
>  
> -#define IO_ADDR_CCM(off)	(IO_ADDRESS(MX27_CCM_BASE_ADDR) + (off))
> +#define IO_ADDR_CCM(off)	(MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR) + (off))
>  
>  /* Register offsets */
>  #define CCM_CSCR		IO_ADDR_CCM(0x0)
> @@ -757,7 +757,7 @@ int __init mx27_clocks_init(unsigned long fref)
>  	clk_enable(&uart1_clk);
>  #endif
>  
> -	mxc_timer_init(&gpt1_clk, IO_ADDRESS(MX27_GPT1_BASE_ADDR),
> +	mxc_timer_init(&gpt1_clk, MX27_IO_ADDRESS(MX27_GPT1_BASE_ADDR),
>  			MX27_INT_GPT1);
>  
>  	return 0;
> diff --git a/arch/arm/mach-mx2/cpu_imx27.c b/arch/arm/mach-mx2/cpu_imx27.c
> index 8c50c5e..d8d3b2d 100644
> --- a/arch/arm/mach-mx2/cpu_imx27.c
> +++ b/arch/arm/mach-mx2/cpu_imx27.c
> @@ -39,7 +39,8 @@ static void query_silicon_parameter(void)
>  	 * the silicon revision very early we read it here to
>  	 * avoid any further hooks
>  	*/
> -	val = __raw_readl(IO_ADDRESS(MX27_SYSCTRL_BASE_ADDR) + SYS_CHIP_ID);
> +	val = __raw_readl(MX27_IO_ADDRESS(MX27_SYSCTRL_BASE_ADDR
> +				+ SYS_CHIP_ID));
>  
>  	cpu_silicon_rev = (int)(val >> 28);
>  	cpu_partnumber = (int)((val >> 12) & 0xFFFF);
> diff --git a/arch/arm/plat-mxc/include/mach/mx27.h b/arch/arm/plat-mxc/include/mach/mx27.h
> index e2ae19f..4c7b947 100644
> --- a/arch/arm/plat-mxc/include/mach/mx27.h
> +++ b/arch/arm/plat-mxc/include/mach/mx27.h
> @@ -114,6 +114,13 @@
>  /* IRAM */
>  #define MX27_IRAM_BASE_ADDR		0xffff4c00	/* internal ram */
>  
> +#define MX27_IO_ADDRESS(x)						\
> +	(void __force __iomem *) ( 					\
> +	IMX_IO_ADDRESS(x, MX27_AIPI) ?:					\
> +	IMX_IO_ADDRESS(x, MX27_SAHB1) ?:				\
> +	IMX_IO_ADDRESS(x, MX27_X_MEMC) ?:				\
> +	0xdeadbeef)
        ^^^^^^^^^^
I prefer to have a plain '0' here. Otherwise an invocation of this
macro with an illegal address could lead to silent corruption of
memory that happens to be mapped at that virtual address instead of a
kernel oops due to a null pointer dereference!

Same for the other processors.


Lothar Waßmann
-- 
___________________________________________________________

Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996

www.karo-electronics.de | info at karo-electronics.de
___________________________________________________________



More information about the linux-arm-kernel mailing list