^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) //
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) // Samsung's S3C64XX flattened device tree enabled machine
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) //
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) // Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <asm/mach/arch.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <asm/mach/map.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <asm/system_misc.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include "cpu.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include "map.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include "s3c64xx.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * IO mapping for shared system controller IP.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) * FIXME: Make remaining drivers use dynamic mapping.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) static struct map_desc s3c64xx_dt_iodesc[] __initdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) .virtual = (unsigned long)S3C_VA_SYS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) .pfn = __phys_to_pfn(S3C64XX_PA_SYSCON),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) .length = SZ_4K,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) .type = MT_DEVICE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) static void __init s3c64xx_dt_map_io(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) debug_ll_io_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) iotable_init(s3c64xx_dt_iodesc, ARRAY_SIZE(s3c64xx_dt_iodesc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) s3c64xx_init_cpu();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) if (!soc_is_s3c64xx())
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) panic("SoC is not S3C64xx!");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) static const char *const s3c64xx_dt_compat[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) "samsung,s3c6400",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) "samsung,s3c6410",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) NULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) DT_MACHINE_START(S3C6400_DT, "Samsung S3C64xx (Flattened Device Tree)")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) /* Maintainer: Tomasz Figa <tomasz.figa@gmail.com> */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) .dt_compat = s3c64xx_dt_compat,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) .map_io = s3c64xx_dt_map_io,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) MACHINE_END