[RFC PATCH 08/10] imx: Add MX53 core support

Sascha Hauer s.hauer at pengutronix.de
Sat Apr 17 22:35:17 EDT 2010


On Fri, Apr 16, 2010 at 02:35:22PM -0500, Rob Herring wrote:

[snip]

> +
> +void __init mx5x_init_irq(void)

What does the x stand for? Obviously not 1, so how about mx53_init_irq?

> +{
> +	void __iomem *tzic_virt;
> +
> +	tzic_virt = ioremap(MX5x_TZIC_BASE_ADDR, SZ_4K);
> +	if (!tzic_virt)
> +		panic("unable to map TZIC interrupt controller\n");
> +	tzic_init_irq(tzic_virt);
> +}
> +
> diff --git a/arch/arm/plat-mxc/devices.c b/arch/arm/plat-mxc/devices.c
> index 56f2fb5..7c4c722 100644
> --- a/arch/arm/plat-mxc/devices.c
> +++ b/arch/arm/plat-mxc/devices.c
> @@ -20,13 +20,26 @@
>  #include <linux/init.h>
>  #include <linux/platform_device.h>
>  #include <mach/common.h>
> +#include <mach/hardware.h>
>  
>  int __init mxc_register_device(struct platform_device *pdev, void *data)
>  {
>  	int ret;
> +	int i;
>  
>  	pdev->dev.platform_data = data;
>  
> +	if (cpu_is_mx53()) {
> +		for (i = 0; i < pdev->num_resources; i++) {
> +			struct resource *r = &pdev->resource[i];
> +			if (resource_type(r) != IORESOURCE_MEM)
> +				continue;
> +
> +			r->start = MX5x_FIXUP_ADDR(r->start);
> +			r->end = MX5x_FIXUP_ADDR(r->end);
> +		}
> +	}

This MX5x_FIXUP_ADDR stuff really looks painful. Please just use proper
MX53_ defines and use them where appropriate. We can really effort a
duplicate set of resources when both i.MX51 and i.MX53 support are
compiled in. You might have a look how Uwe did this in
arch/arm/mach-mx2/devices.c.

> diff --git a/arch/arm/plat-mxc/include/mach/mx51.h b/arch/arm/plat-mxc/include/mach/mx51.h
> index b83963f..7759df7 100644
> --- a/arch/arm/plat-mxc/include/mach/mx51.h
> +++ b/arch/arm/plat-mxc/include/mach/mx51.h
> @@ -55,6 +55,7 @@
>  
>  #define MX51_TZIC_BASE_ADDR_TO1		0x8FFFC000
>  #define MX51_TZIC_BASE_ADDR		0xE0000000
> +#define MX5x_TZIC_BASE_ADDR		0x0FFFC000
>  
>  #define MX51_DEBUG_BASE_ADDR		0x60000000
>  #define MX51_DEBUG_SIZE			(36 * SZ_1K)
> @@ -170,6 +171,7 @@
>  #define MX51_PLL1_BASE_ADDR	(MX51_AIPS2_BASE_ADDR + 0x00080000)
>  #define MX51_PLL2_BASE_ADDR	(MX51_AIPS2_BASE_ADDR + 0x00084000)
>  #define MX51_PLL3_BASE_ADDR	(MX51_AIPS2_BASE_ADDR + 0x00088000)
> +#define MX5x_PLL4_BASE_ADDR	(MX51_AIPS2_BASE_ADDR + 0x0008C000)
>  #define MX51_AHBMAX_BASE_ADDR	(MX51_AIPS2_BASE_ADDR + 0x00094000)
>  #define MX51_IIM_BASE_ADDR	(MX51_AIPS2_BASE_ADDR + 0x00098000)
>  #define MX51_CSU_BASE_ADDR	(MX51_AIPS2_BASE_ADDR + 0x0009C000)
> @@ -234,6 +236,10 @@
>  	(MX51_IS_MODULE(x, AIPS1) ? MX51_AIPS1_IO_ADDRESS(x) :	\
>  	0xDEADBEEF)
>  
> +#define MX5x_FIXUP_ADDR(x) ((cpu_is_mx53() && \
> +	(MX51_IS_MODULE(x, AIPS1) || MX51_IS_MODULE(x, AIPS2) || MX51_IS_MODULE(x, SPBA0))) ? \
> +	((x) - 0x20000000) : (x))
> +
>  /*
>   * define the address mapping macros: in physical address order
>   */
> diff --git a/arch/arm/plat-mxc/include/mach/mxc.h b/arch/arm/plat-mxc/include/mach/mxc.h
> index ec85f14..b77f71e 100644
> --- a/arch/arm/plat-mxc/include/mach/mxc.h
> +++ b/arch/arm/plat-mxc/include/mach/mxc.h
> @@ -31,6 +31,7 @@
>  #define MXC_CPU_MX31		31
>  #define MXC_CPU_MX35		35
>  #define MXC_CPU_MX51		51
> +#define MXC_CPU_MX53		53
>  #define MXC_CPU_MXC91231	91231
>  
>  #ifndef __ASSEMBLY__
> @@ -121,6 +122,18 @@ extern unsigned int __mxc_cpu_type;
>  # define cpu_is_mx51()		(0)
>  #endif
>  
> +#ifdef CONFIG_ARCH_MX53
> +# ifdef mxc_cpu_type
> +#  undef mxc_cpu_type
> +#  define mxc_cpu_type __mxc_cpu_type
> +# else
> +#  define mxc_cpu_type MXC_CPU_MX53
> +# endif
> +# define cpu_is_mx53()		(mxc_cpu_type == MXC_CPU_MX53)
> +#else
> +# define cpu_is_mx53()		(0)
> +#endif
> +
>  #ifdef CONFIG_ARCH_MXC91231
>  # ifdef mxc_cpu_type
>  #  undef mxc_cpu_type
> -- 
> 1.6.0.4
> 
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the linux-arm-kernel mailing list