.. | .. |
---|
7 | 7 | * Copyright (C) 2014 Ulrich Hecht |
---|
8 | 8 | */ |
---|
9 | 9 | |
---|
10 | | -#include <linux/clk-provider.h> |
---|
11 | 10 | #include <linux/clocksource.h> |
---|
12 | 11 | #include <linux/device.h> |
---|
13 | | -#include <linux/dma-contiguous.h> |
---|
| 12 | +#include <linux/dma-map-ops.h> |
---|
14 | 13 | #include <linux/io.h> |
---|
15 | 14 | #include <linux/kernel.h> |
---|
16 | 15 | #include <linux/memblock.h> |
---|
17 | 16 | #include <linux/of.h> |
---|
| 17 | +#include <linux/of_clk.h> |
---|
18 | 18 | #include <linux/of_fdt.h> |
---|
19 | 19 | #include <linux/of_platform.h> |
---|
| 20 | +#include <linux/psci.h> |
---|
20 | 21 | #include <asm/mach/arch.h> |
---|
21 | 22 | #include <asm/secure_cntvoff.h> |
---|
22 | 23 | #include "common.h" |
---|
23 | 24 | #include "rcar-gen2.h" |
---|
24 | 25 | |
---|
25 | 26 | static const struct of_device_id cpg_matches[] __initconst = { |
---|
26 | | - { .compatible = "renesas,rcar-gen2-cpg-clocks", }, |
---|
| 27 | + { .compatible = "renesas,r8a7742-cpg-mssr", .data = "extal" }, |
---|
27 | 28 | { .compatible = "renesas,r8a7743-cpg-mssr", .data = "extal" }, |
---|
| 29 | + { .compatible = "renesas,r8a7744-cpg-mssr", .data = "extal" }, |
---|
28 | 30 | { .compatible = "renesas,r8a7790-cpg-mssr", .data = "extal" }, |
---|
29 | 31 | { .compatible = "renesas,r8a7791-cpg-mssr", .data = "extal" }, |
---|
30 | 32 | { .compatible = "renesas,r8a7793-cpg-mssr", .data = "extal" }, |
---|
.. | .. |
---|
57 | 59 | #define CNTCR 0 |
---|
58 | 60 | #define CNTFID0 0x20 |
---|
59 | 61 | |
---|
60 | | -void __init rcar_gen2_timer_init(void) |
---|
| 62 | +static void __init rcar_gen2_timer_init(void) |
---|
61 | 63 | { |
---|
| 64 | + bool need_update = true; |
---|
62 | 65 | void __iomem *base; |
---|
63 | 66 | u32 freq; |
---|
| 67 | + |
---|
| 68 | + /* |
---|
| 69 | + * If PSCI is available then most likely we are running on PSCI-enabled |
---|
| 70 | + * U-Boot which, we assume, has already taken care of resetting CNTVOFF |
---|
| 71 | + * and updating counter module before switching to non-secure mode |
---|
| 72 | + * and we don't need to. |
---|
| 73 | + */ |
---|
| 74 | +#ifdef CONFIG_ARM_PSCI_FW |
---|
| 75 | + if (psci_ops.cpu_on) |
---|
| 76 | + need_update = false; |
---|
| 77 | +#endif |
---|
| 78 | + |
---|
| 79 | + if (need_update == false) |
---|
| 80 | + goto skip_update; |
---|
64 | 81 | |
---|
65 | 82 | secure_cntvoff_init(); |
---|
66 | 83 | |
---|
.. | .. |
---|
101 | 118 | |
---|
102 | 119 | iounmap(base); |
---|
103 | 120 | |
---|
| 121 | +skip_update: |
---|
104 | 122 | of_clk_init(NULL); |
---|
105 | 123 | timer_probe(); |
---|
106 | 124 | } |
---|
.. | .. |
---|
156 | 174 | return 0; |
---|
157 | 175 | } |
---|
158 | 176 | |
---|
159 | | -void __init rcar_gen2_reserve(void) |
---|
| 177 | +static void __init rcar_gen2_reserve(void) |
---|
160 | 178 | { |
---|
161 | 179 | struct memory_reserve_config mrc; |
---|
162 | 180 | |
---|
.. | .. |
---|
192 | 210 | MACHINE_END |
---|
193 | 211 | |
---|
194 | 212 | static const char * const rz_g1_boards_compat_dt[] __initconst = { |
---|
| 213 | + "renesas,r8a7742", |
---|
195 | 214 | "renesas,r8a7743", |
---|
| 215 | + "renesas,r8a7744", |
---|
196 | 216 | "renesas,r8a7745", |
---|
197 | 217 | "renesas,r8a77470", |
---|
198 | 218 | NULL, |
---|