ARM: at91: SAMA5D4 SoC detection code and low level routines
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-at91 / sama5d4.c
index f81f11ed8deb1c0c80eda44f7c66efae92073f12..7638509639f4b4da2f0337f8cf62af216496fe56 100644 (file)
 /* --------------------------------------------------------------------
  *  Processor initialization
  * -------------------------------------------------------------------- */
+static struct map_desc at91_io_desc[] __initdata = {
+       {
+       .virtual        = (unsigned long)AT91_ALT_IO_P2V(SAMA5D4_BASE_MPDDRC),
+       .pfn            = __phys_to_pfn(SAMA5D4_BASE_MPDDRC),
+       .length         = SZ_512,
+       .type           = MT_DEVICE,
+       },
+       {
+       .virtual        = (unsigned long)AT91_ALT_IO_P2V(SAMA5D4_BASE_PMC),
+       .pfn            = __phys_to_pfn(SAMA5D4_BASE_PMC),
+       .length         = SZ_512,
+       .type           = MT_DEVICE,
+       },
+       { /* On sama5d4, we use USART3 as serial console */
+       .virtual        = (unsigned long)AT91_ALT_IO_P2V(SAMA5D4_BASE_USART3),
+       .pfn            = __phys_to_pfn(SAMA5D4_BASE_USART3),
+       .length         = SZ_256,
+       .type           = MT_DEVICE,
+       },
+       { /* A bunch of peripheral with fine grained IO space */
+       .virtual        = (unsigned long)AT91_ALT_IO_P2V(SAMA5D4_BASE_SYS2),
+       .pfn            = __phys_to_pfn(SAMA5D4_BASE_SYS2),
+       .length         = SZ_2K,
+       .type           = MT_DEVICE,
+       },
+};
+
 
 static void __init sama5d4_map_io(void)
 {
+       iotable_init(at91_io_desc, ARRAY_SIZE(at91_io_desc));
        at91_init_sram(0, SAMA5D4_NS_SRAM_BASE, SAMA5D4_NS_SRAM_SIZE);
 }