diff options
Diffstat (limited to 'arch/arm/plat-s5p/cpu.c')
-rw-r--r-- | arch/arm/plat-s5p/cpu.c | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/arch/arm/plat-s5p/cpu.c b/arch/arm/plat-s5p/cpu.c index bbc2aa7449ca..7b0a28f73a68 100644 --- a/arch/arm/plat-s5p/cpu.c +++ b/arch/arm/plat-s5p/cpu.c | |||
@@ -33,48 +33,66 @@ static const char name_s5p6450[] = "S5P6450"; | |||
33 | static const char name_s5pc100[] = "S5PC100"; | 33 | static const char name_s5pc100[] = "S5PC100"; |
34 | static const char name_s5pv210[] = "S5PV210/S5PC110"; | 34 | static const char name_s5pv210[] = "S5PV210/S5PC110"; |
35 | static const char name_exynos4210[] = "EXYNOS4210"; | 35 | static const char name_exynos4210[] = "EXYNOS4210"; |
36 | static const char name_exynos4212[] = "EXYNOS4212"; | ||
37 | static const char name_exynos4412[] = "EXYNOS4412"; | ||
36 | 38 | ||
37 | static struct cpu_table cpu_ids[] __initdata = { | 39 | static struct cpu_table cpu_ids[] __initdata = { |
38 | { | 40 | { |
39 | .idcode = 0x56440100, | 41 | .idcode = S5P6440_CPU_ID, |
40 | .idmask = 0xfffff000, | 42 | .idmask = S5P64XX_CPU_MASK, |
41 | .map_io = s5p6440_map_io, | 43 | .map_io = s5p6440_map_io, |
42 | .init_clocks = s5p6440_init_clocks, | 44 | .init_clocks = s5p6440_init_clocks, |
43 | .init_uarts = s5p6440_init_uarts, | 45 | .init_uarts = s5p6440_init_uarts, |
44 | .init = s5p64x0_init, | 46 | .init = s5p64x0_init, |
45 | .name = name_s5p6440, | 47 | .name = name_s5p6440, |
46 | }, { | 48 | }, { |
47 | .idcode = 0x36450000, | 49 | .idcode = S5P6450_CPU_ID, |
48 | .idmask = 0xfffff000, | 50 | .idmask = S5P64XX_CPU_MASK, |
49 | .map_io = s5p6450_map_io, | 51 | .map_io = s5p6450_map_io, |
50 | .init_clocks = s5p6450_init_clocks, | 52 | .init_clocks = s5p6450_init_clocks, |
51 | .init_uarts = s5p6450_init_uarts, | 53 | .init_uarts = s5p6450_init_uarts, |
52 | .init = s5p64x0_init, | 54 | .init = s5p64x0_init, |
53 | .name = name_s5p6450, | 55 | .name = name_s5p6450, |
54 | }, { | 56 | }, { |
55 | .idcode = 0x43100000, | 57 | .idcode = S5PC100_CPU_ID, |
56 | .idmask = 0xfffff000, | 58 | .idmask = S5PC100_CPU_MASK, |
57 | .map_io = s5pc100_map_io, | 59 | .map_io = s5pc100_map_io, |
58 | .init_clocks = s5pc100_init_clocks, | 60 | .init_clocks = s5pc100_init_clocks, |
59 | .init_uarts = s5pc100_init_uarts, | 61 | .init_uarts = s5pc100_init_uarts, |
60 | .init = s5pc100_init, | 62 | .init = s5pc100_init, |
61 | .name = name_s5pc100, | 63 | .name = name_s5pc100, |
62 | }, { | 64 | }, { |
63 | .idcode = 0x43110000, | 65 | .idcode = S5PV210_CPU_ID, |
64 | .idmask = 0xfffff000, | 66 | .idmask = S5PV210_CPU_MASK, |
65 | .map_io = s5pv210_map_io, | 67 | .map_io = s5pv210_map_io, |
66 | .init_clocks = s5pv210_init_clocks, | 68 | .init_clocks = s5pv210_init_clocks, |
67 | .init_uarts = s5pv210_init_uarts, | 69 | .init_uarts = s5pv210_init_uarts, |
68 | .init = s5pv210_init, | 70 | .init = s5pv210_init, |
69 | .name = name_s5pv210, | 71 | .name = name_s5pv210, |
70 | }, { | 72 | }, { |
71 | .idcode = 0x43210000, | 73 | .idcode = EXYNOS4210_CPU_ID, |
72 | .idmask = 0xfffe0000, | 74 | .idmask = EXYNOS4_CPU_MASK, |
73 | .map_io = exynos4_map_io, | 75 | .map_io = exynos4_map_io, |
74 | .init_clocks = exynos4_init_clocks, | 76 | .init_clocks = exynos4_init_clocks, |
75 | .init_uarts = exynos4_init_uarts, | 77 | .init_uarts = exynos4_init_uarts, |
76 | .init = exynos4_init, | 78 | .init = exynos4_init, |
77 | .name = name_exynos4210, | 79 | .name = name_exynos4210, |
80 | }, { | ||
81 | .idcode = EXYNOS4212_CPU_ID, | ||
82 | .idmask = EXYNOS4_CPU_MASK, | ||
83 | .map_io = exynos4_map_io, | ||
84 | .init_clocks = exynos4_init_clocks, | ||
85 | .init_uarts = exynos4_init_uarts, | ||
86 | .init = exynos4_init, | ||
87 | .name = name_exynos4212, | ||
88 | }, { | ||
89 | .idcode = EXYNOS4412_CPU_ID, | ||
90 | .idmask = EXYNOS4_CPU_MASK, | ||
91 | .map_io = exynos4_map_io, | ||
92 | .init_clocks = exynos4_init_clocks, | ||
93 | .init_uarts = exynos4_init_uarts, | ||
94 | .init = exynos4_init, | ||
95 | .name = name_exynos4412, | ||
78 | }, | 96 | }, |
79 | }; | 97 | }; |
80 | 98 | ||
@@ -114,13 +132,13 @@ static struct map_desc s5p_iodesc[] __initdata = { | |||
114 | void __init s5p_init_io(struct map_desc *mach_desc, | 132 | void __init s5p_init_io(struct map_desc *mach_desc, |
115 | int size, void __iomem *cpuid_addr) | 133 | int size, void __iomem *cpuid_addr) |
116 | { | 134 | { |
117 | unsigned long idcode; | ||
118 | |||
119 | /* initialize the io descriptors we need for initialization */ | 135 | /* initialize the io descriptors we need for initialization */ |
120 | iotable_init(s5p_iodesc, ARRAY_SIZE(s5p_iodesc)); | 136 | iotable_init(s5p_iodesc, ARRAY_SIZE(s5p_iodesc)); |
121 | if (mach_desc) | 137 | if (mach_desc) |
122 | iotable_init(mach_desc, size); | 138 | iotable_init(mach_desc, size); |
123 | 139 | ||
124 | idcode = __raw_readl(cpuid_addr); | 140 | /* detect cpu id and rev. */ |
125 | s3c_init_cpu(idcode, cpu_ids, ARRAY_SIZE(cpu_ids)); | 141 | s5p_init_cpu(cpuid_addr); |
142 | |||
143 | s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids)); | ||
126 | } | 144 | } |