[PATCH 4/8] S3C2416: move io-init to SoC specific files
Russell King - ARM Linux
linux at arm.linux.org.uk
Tue Jan 17 16:43:36 EST 2012
On Tue, Jan 17, 2012 at 10:13:26PM +0100, Heiko Stübner wrote:
> +/* minimal IO mapping */
> +
> +static struct map_desc s3c_iodesc[] __initdata = {
> + IODESC_ENT(GPIO),
> + IODESC_ENT(IRQ),
> + IODESC_ENT(MEMCTRL),
> + IODESC_ENT(UART)
> +};
> +
> +void __init s3c2416_init_io(struct map_desc *mach_desc, int size)
> +{
> + /* initialise the io descriptors we need for initialisation */
> + iotable_init(mach_desc, size);
> + iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc));
> +
> + samsung_cpu_id = __raw_readl(S3C24XX_GSTATUS1);
> + s3c24xx_init_cpu();
> +
> + s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids));
> +}
Why do we need this implemented in every Samsung mach directory?
Why not provide a new function in arch/arm/plat-s3c24xx/cpu.c:
void __init s3c24xx_common_init_io(void __iomem *id_reg, struct cpu_table *ids,
size_t nr_ids)
{
iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc));
samsung_cpu_id = __raw_readl(id_reg);
s3c24xx_init_cpu();
s3c_init_cpu(samsung_cpu_id, ids, nr_ids);
}
and then this becomes:
void __init s3c2416_init_io(struct map_desc *mach_desc, int size)
{
/* initialise the io descriptors we need for initialisation */
iotable_init(mach_desc, size);
s3c24xx_common_init_io(S3C24XX_GSTATUS1, cpu_ids, ARRAY_SIZE(cpu_ids));
}
More information about the linux-arm-kernel
mailing list