/* * Copyright (C) 2007 Atmel Corporation. * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD * * Under GPLv2 */ #include #include #include #include #include #include "soc.h" #include "generic.h" struct at91_soc __initdata at91_boot_soc; static struct map_desc at91_io_desc __initdata = { .virtual = AT91_VA_BASE_SYS, .pfn = __phys_to_pfn(AT91_BASE_SYS), .length = SZ_16K, .type = MT_DEVICE, }; void __init at91_map_io(void) { /* Map peripherals */ iotable_init(&at91_io_desc, 1); if (cpu_is_at91cap9()) at91_boot_soc = at91cap9_soc; else if (cpu_is_at91rm9200()) at91_boot_soc = at91rm9200_soc; else if (cpu_is_at91sam9260()) at91_boot_soc = at91sam9260_soc; else if (cpu_is_at91sam9261()) at91_boot_soc = at91sam9261_soc; else if (cpu_is_at91sam9263()) at91_boot_soc = at91sam9263_soc; else if (cpu_is_at91sam9g10()) at91_boot_soc = at91sam9261_soc; else if (cpu_is_at91sam9g20()) at91_boot_soc = at91sam9260_soc; else if (cpu_is_at91sam9g45()) at91_boot_soc = at91sam9g45_soc; else if (cpu_is_at91sam9rl()) at91_boot_soc = at91sam9rl_soc; else if (cpu_is_at91sam9x5()) at91_boot_soc = at91sam9x5_soc; else panic("Impossible to detect the SOC type"); if (at91_boot_soc.map_io) at91_boot_soc.map_io(); } void __init at91_initialize(unsigned long main_clock) { at91_boot_soc.init(main_clock); }