| .. | .. |
|---|
| 1 | 1 | // SPDX-License-Identifier: GPL-2.0 |
|---|
| 2 | 2 | // |
|---|
| 3 | | -// SAMSUNG EXYNOS Flattened Device Tree enabled machine |
|---|
| 3 | +// Samsung Exynos Flattened Device Tree enabled machine |
|---|
| 4 | 4 | // |
|---|
| 5 | 5 | // Copyright (c) 2010-2014 Samsung Electronics Co., Ltd. |
|---|
| 6 | 6 | // http://www.samsung.com |
|---|
| .. | .. |
|---|
| 19 | 19 | #include <asm/mach/arch.h> |
|---|
| 20 | 20 | #include <asm/mach/map.h> |
|---|
| 21 | 21 | |
|---|
| 22 | | -#include <mach/map.h> |
|---|
| 23 | | -#include <plat/cpu.h> |
|---|
| 24 | | - |
|---|
| 25 | 22 | #include "common.h" |
|---|
| 23 | + |
|---|
| 24 | +#define S3C_ADDR_BASE 0xF6000000 |
|---|
| 25 | +#define S3C_ADDR(x) ((void __iomem __force *)S3C_ADDR_BASE + (x)) |
|---|
| 26 | +#define S5P_VA_CHIPID S3C_ADDR(0x02000000) |
|---|
| 26 | 27 | |
|---|
| 27 | 28 | static struct platform_device exynos_cpuidle = { |
|---|
| 28 | 29 | .name = "exynos_cpuidle", |
|---|
| .. | .. |
|---|
| 33 | 34 | }; |
|---|
| 34 | 35 | |
|---|
| 35 | 36 | void __iomem *sysram_base_addr __ro_after_init; |
|---|
| 37 | +phys_addr_t sysram_base_phys __ro_after_init; |
|---|
| 36 | 38 | void __iomem *sysram_ns_base_addr __ro_after_init; |
|---|
| 39 | + |
|---|
| 40 | +unsigned long exynos_cpu_id; |
|---|
| 41 | +static unsigned int exynos_cpu_rev; |
|---|
| 42 | + |
|---|
| 43 | +unsigned int exynos_rev(void) |
|---|
| 44 | +{ |
|---|
| 45 | + return exynos_cpu_rev; |
|---|
| 46 | +} |
|---|
| 37 | 47 | |
|---|
| 38 | 48 | void __init exynos_sysram_init(void) |
|---|
| 39 | 49 | { |
|---|
| .. | .. |
|---|
| 43 | 53 | if (!of_device_is_available(node)) |
|---|
| 44 | 54 | continue; |
|---|
| 45 | 55 | sysram_base_addr = of_iomap(node, 0); |
|---|
| 56 | + sysram_base_phys = of_translate_address(node, |
|---|
| 57 | + of_get_address(node, 0, NULL, NULL)); |
|---|
| 58 | + of_node_put(node); |
|---|
| 46 | 59 | break; |
|---|
| 47 | 60 | } |
|---|
| 48 | 61 | |
|---|
| .. | .. |
|---|
| 50 | 63 | if (!of_device_is_available(node)) |
|---|
| 51 | 64 | continue; |
|---|
| 52 | 65 | sysram_ns_base_addr = of_iomap(node, 0); |
|---|
| 66 | + of_node_put(node); |
|---|
| 53 | 67 | break; |
|---|
| 54 | 68 | } |
|---|
| 55 | 69 | } |
|---|
| .. | .. |
|---|
| 83 | 97 | of_scan_flat_dt(exynos_fdt_map_chipid, NULL); |
|---|
| 84 | 98 | |
|---|
| 85 | 99 | /* detect cpu id and rev. */ |
|---|
| 86 | | - s5p_init_cpu(S5P_VA_CHIPID); |
|---|
| 100 | + exynos_cpu_id = readl_relaxed(S5P_VA_CHIPID); |
|---|
| 101 | + exynos_cpu_rev = exynos_cpu_id & 0xFF; |
|---|
| 102 | + |
|---|
| 103 | + pr_info("Samsung CPU ID: 0x%08lx\n", exynos_cpu_id); |
|---|
| 104 | + |
|---|
| 87 | 105 | } |
|---|
| 88 | 106 | |
|---|
| 89 | 107 | /* |
|---|
| .. | .. |
|---|
| 131 | 149 | np = of_find_matching_node(NULL, exynos_dt_pmu_match); |
|---|
| 132 | 150 | if (np) |
|---|
| 133 | 151 | pmu_base_addr = of_iomap(np, 0); |
|---|
| 152 | + of_node_put(np); |
|---|
| 134 | 153 | } |
|---|
| 135 | 154 | |
|---|
| 136 | 155 | static void __init exynos_init_irq(void) |
|---|
| .. | .. |
|---|
| 189 | 208 | of_fdt_limit_memory(8); |
|---|
| 190 | 209 | } |
|---|
| 191 | 210 | |
|---|
| 192 | | -DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)") |
|---|
| 193 | | - .l2c_aux_val = 0x3c400001, |
|---|
| 194 | | - .l2c_aux_mask = 0xc20fffff, |
|---|
| 211 | +DT_MACHINE_START(EXYNOS_DT, "Samsung Exynos (Flattened Device Tree)") |
|---|
| 212 | + .l2c_aux_val = 0x38400000, |
|---|
| 213 | + .l2c_aux_mask = 0xc60fffff, |
|---|
| 195 | 214 | .smp = smp_ops(exynos_smp_ops), |
|---|
| 196 | 215 | .map_io = exynos_init_io, |
|---|
| 197 | 216 | .init_early = exynos_firmware_init, |
|---|