diff options
| -rw-r--r-- | Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt | 4 | ||||
| -rw-r--r-- | arch/arm/boot/dts/keystone-clocks.dtsi | 2 | ||||
| -rw-r--r-- | drivers/clk/at91/clk-master.c | 2 | ||||
| -rw-r--r-- | drivers/clk/clk-nomadik.c | 3 | ||||
| -rw-r--r-- | drivers/clk/clk.c | 13 | ||||
| -rw-r--r-- | drivers/clk/keystone/gate.c | 1 | ||||
| -rw-r--r-- | drivers/clk/mvebu/armada-370.c | 21 | ||||
| -rw-r--r-- | drivers/clk/mvebu/armada-xp.c | 20 | ||||
| -rw-r--r-- | drivers/clk/mvebu/dove.c | 19 | ||||
| -rw-r--r-- | drivers/clk/mvebu/kirkwood.c | 34 | ||||
| -rw-r--r-- | drivers/clk/shmobile/clk-rcar-gen2.c | 12 | ||||
| -rw-r--r-- | drivers/clk/tegra/clk-divider.c | 2 | ||||
| -rw-r--r-- | drivers/clk/tegra/clk-id.h | 4 | ||||
| -rw-r--r-- | drivers/clk/tegra/clk-tegra-periph.c | 10 | ||||
| -rw-r--r-- | drivers/clk/tegra/clk-tegra-super-gen4.c | 2 | ||||
| -rw-r--r-- | drivers/clk/tegra/clk-tegra114.c | 8 | ||||
| -rw-r--r-- | drivers/clk/tegra/clk-tegra124.c | 48 | ||||
| -rw-r--r-- | drivers/clk/tegra/clk-tegra20.c | 2 | ||||
| -rw-r--r-- | include/dt-bindings/clock/tegra124-car.h | 4 |
19 files changed, 116 insertions, 95 deletions
diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt index a6a352c2771e..5992dceec7af 100644 --- a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt +++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt | |||
| @@ -21,9 +21,9 @@ Required Properties: | |||
| 21 | must appear in the same order as the output clocks. | 21 | must appear in the same order as the output clocks. |
| 22 | - #clock-cells: Must be 1 | 22 | - #clock-cells: Must be 1 |
| 23 | - clock-output-names: The name of the clocks as free-form strings | 23 | - clock-output-names: The name of the clocks as free-form strings |
| 24 | - renesas,indices: Indices of the gate clocks into the group (0 to 31) | 24 | - renesas,clock-indices: Indices of the gate clocks into the group (0 to 31) |
| 25 | 25 | ||
| 26 | The clocks, clock-output-names and renesas,indices properties contain one | 26 | The clocks, clock-output-names and renesas,clock-indices properties contain one |
| 27 | entry per gate clock. The MSTP groups are sparsely populated. Unimplemented | 27 | entry per gate clock. The MSTP groups are sparsely populated. Unimplemented |
| 28 | gate clocks must not be declared. | 28 | gate clocks must not be declared. |
| 29 | 29 | ||
diff --git a/arch/arm/boot/dts/keystone-clocks.dtsi b/arch/arm/boot/dts/keystone-clocks.dtsi index 2363593e1050..ef58d1c24313 100644 --- a/arch/arm/boot/dts/keystone-clocks.dtsi +++ b/arch/arm/boot/dts/keystone-clocks.dtsi | |||
| @@ -612,7 +612,7 @@ clocks { | |||
| 612 | compatible = "ti,keystone,psc-clock"; | 612 | compatible = "ti,keystone,psc-clock"; |
| 613 | clocks = <&chipclk13>; | 613 | clocks = <&chipclk13>; |
| 614 | clock-output-names = "vcp-3"; | 614 | clock-output-names = "vcp-3"; |
| 615 | reg = <0x0235000a8 0xb00>, <0x02350060 0x400>; | 615 | reg = <0x023500a8 0xb00>, <0x02350060 0x400>; |
| 616 | reg-names = "control", "domain"; | 616 | reg-names = "control", "domain"; |
| 617 | domain-id = <24>; | 617 | domain-id = <24>; |
| 618 | }; | 618 | }; |
diff --git a/drivers/clk/at91/clk-master.c b/drivers/clk/at91/clk-master.c index bd313f7816a8..c1af80bcdf20 100644 --- a/drivers/clk/at91/clk-master.c +++ b/drivers/clk/at91/clk-master.c | |||
| @@ -242,7 +242,7 @@ of_at91_clk_master_setup(struct device_node *np, struct at91_pmc *pmc, | |||
| 242 | 242 | ||
| 243 | irq = irq_of_parse_and_map(np, 0); | 243 | irq = irq_of_parse_and_map(np, 0); |
| 244 | if (!irq) | 244 | if (!irq) |
| 245 | return; | 245 | goto out_free_characteristics; |
| 246 | 246 | ||
| 247 | clk = at91_clk_register_master(pmc, irq, name, num_parents, | 247 | clk = at91_clk_register_master(pmc, irq, name, num_parents, |
| 248 | parent_names, layout, | 248 | parent_names, layout, |
diff --git a/drivers/clk/clk-nomadik.c b/drivers/clk/clk-nomadik.c index 6a934a5296bd..05e04ce0f148 100644 --- a/drivers/clk/clk-nomadik.c +++ b/drivers/clk/clk-nomadik.c | |||
| @@ -494,6 +494,9 @@ static const struct file_operations nomadik_src_clk_debugfs_ops = { | |||
| 494 | 494 | ||
| 495 | static int __init nomadik_src_clk_init_debugfs(void) | 495 | static int __init nomadik_src_clk_init_debugfs(void) |
| 496 | { | 496 | { |
| 497 | /* Vital for multiplatform */ | ||
| 498 | if (!src_base) | ||
| 499 | return -ENODEV; | ||
| 497 | src_pcksr0_boot = readl(src_base + SRC_PCKSR0); | 500 | src_pcksr0_boot = readl(src_base + SRC_PCKSR0); |
| 498 | src_pcksr1_boot = readl(src_base + SRC_PCKSR1); | 501 | src_pcksr1_boot = readl(src_base + SRC_PCKSR1); |
| 499 | debugfs_create_file("nomadik-src-clk", S_IFREG | S_IRUGO, | 502 | debugfs_create_file("nomadik-src-clk", S_IFREG | S_IRUGO, |
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 5517944495d8..c42e608af6bb 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c | |||
| @@ -2226,24 +2226,25 @@ EXPORT_SYMBOL_GPL(devm_clk_unregister); | |||
| 2226 | */ | 2226 | */ |
| 2227 | int __clk_get(struct clk *clk) | 2227 | int __clk_get(struct clk *clk) |
| 2228 | { | 2228 | { |
| 2229 | if (clk && !try_module_get(clk->owner)) | 2229 | if (clk) { |
| 2230 | return 0; | 2230 | if (!try_module_get(clk->owner)) |
| 2231 | return 0; | ||
| 2231 | 2232 | ||
| 2232 | kref_get(&clk->ref); | 2233 | kref_get(&clk->ref); |
| 2234 | } | ||
| 2233 | return 1; | 2235 | return 1; |
| 2234 | } | 2236 | } |
| 2235 | 2237 | ||
| 2236 | void __clk_put(struct clk *clk) | 2238 | void __clk_put(struct clk *clk) |
| 2237 | { | 2239 | { |
| 2238 | if (WARN_ON_ONCE(IS_ERR(clk))) | 2240 | if (!clk || WARN_ON_ONCE(IS_ERR(clk))) |
| 2239 | return; | 2241 | return; |
| 2240 | 2242 | ||
| 2241 | clk_prepare_lock(); | 2243 | clk_prepare_lock(); |
| 2242 | kref_put(&clk->ref, __clk_release); | 2244 | kref_put(&clk->ref, __clk_release); |
| 2243 | clk_prepare_unlock(); | 2245 | clk_prepare_unlock(); |
| 2244 | 2246 | ||
| 2245 | if (clk) | 2247 | module_put(clk->owner); |
| 2246 | module_put(clk->owner); | ||
| 2247 | } | 2248 | } |
| 2248 | 2249 | ||
| 2249 | /*** clk rate change notifiers ***/ | 2250 | /*** clk rate change notifiers ***/ |
diff --git a/drivers/clk/keystone/gate.c b/drivers/clk/keystone/gate.c index 17a598398a53..86f1e362eafb 100644 --- a/drivers/clk/keystone/gate.c +++ b/drivers/clk/keystone/gate.c | |||
| @@ -179,6 +179,7 @@ static struct clk *clk_register_psc(struct device *dev, | |||
| 179 | 179 | ||
| 180 | init.name = name; | 180 | init.name = name; |
| 181 | init.ops = &clk_psc_ops; | 181 | init.ops = &clk_psc_ops; |
| 182 | init.flags = 0; | ||
| 182 | init.parent_names = (parent_name ? &parent_name : NULL); | 183 | init.parent_names = (parent_name ? &parent_name : NULL); |
| 183 | init.num_parents = (parent_name ? 1 : 0); | 184 | init.num_parents = (parent_name ? 1 : 0); |
| 184 | 185 | ||
diff --git a/drivers/clk/mvebu/armada-370.c b/drivers/clk/mvebu/armada-370.c index 81a202d12a7a..bef198a83863 100644 --- a/drivers/clk/mvebu/armada-370.c +++ b/drivers/clk/mvebu/armada-370.c | |||
| @@ -141,13 +141,6 @@ static const struct coreclk_soc_desc a370_coreclks = { | |||
| 141 | .num_ratios = ARRAY_SIZE(a370_coreclk_ratios), | 141 | .num_ratios = ARRAY_SIZE(a370_coreclk_ratios), |
| 142 | }; | 142 | }; |
| 143 | 143 | ||
| 144 | static void __init a370_coreclk_init(struct device_node *np) | ||
| 145 | { | ||
| 146 | mvebu_coreclk_setup(np, &a370_coreclks); | ||
| 147 | } | ||
| 148 | CLK_OF_DECLARE(a370_core_clk, "marvell,armada-370-core-clock", | ||
| 149 | a370_coreclk_init); | ||
| 150 | |||
| 151 | /* | 144 | /* |
| 152 | * Clock Gating Control | 145 | * Clock Gating Control |
| 153 | */ | 146 | */ |
| @@ -168,9 +161,15 @@ static const struct clk_gating_soc_desc a370_gating_desc[] __initconst = { | |||
| 168 | { } | 161 | { } |
| 169 | }; | 162 | }; |
| 170 | 163 | ||
| 171 | static void __init a370_clk_gating_init(struct device_node *np) | 164 | static void __init a370_clk_init(struct device_node *np) |
| 172 | { | 165 | { |
| 173 | mvebu_clk_gating_setup(np, a370_gating_desc); | 166 | struct device_node *cgnp = |
| 167 | of_find_compatible_node(NULL, NULL, "marvell,armada-370-gating-clock"); | ||
| 168 | |||
| 169 | mvebu_coreclk_setup(np, &a370_coreclks); | ||
| 170 | |||
| 171 | if (cgnp) | ||
| 172 | mvebu_clk_gating_setup(cgnp, a370_gating_desc); | ||
| 174 | } | 173 | } |
| 175 | CLK_OF_DECLARE(a370_clk_gating, "marvell,armada-370-gating-clock", | 174 | CLK_OF_DECLARE(a370_clk, "marvell,armada-370-core-clock", a370_clk_init); |
| 176 | a370_clk_gating_init); | 175 | |
diff --git a/drivers/clk/mvebu/armada-xp.c b/drivers/clk/mvebu/armada-xp.c index 9922c4475aa8..b3094315a3c0 100644 --- a/drivers/clk/mvebu/armada-xp.c +++ b/drivers/clk/mvebu/armada-xp.c | |||
| @@ -158,13 +158,6 @@ static const struct coreclk_soc_desc axp_coreclks = { | |||
| 158 | .num_ratios = ARRAY_SIZE(axp_coreclk_ratios), | 158 | .num_ratios = ARRAY_SIZE(axp_coreclk_ratios), |
| 159 | }; | 159 | }; |
| 160 | 160 | ||
| 161 | static void __init axp_coreclk_init(struct device_node *np) | ||
| 162 | { | ||
| 163 | mvebu_coreclk_setup(np, &axp_coreclks); | ||
| 164 | } | ||
| 165 | CLK_OF_DECLARE(axp_core_clk, "marvell,armada-xp-core-clock", | ||
| 166 | axp_coreclk_init); | ||
| 167 | |||
| 168 | /* | 161 | /* |
| 169 | * Clock Gating Control | 162 | * Clock Gating Control |
| 170 | */ | 163 | */ |
| @@ -202,9 +195,14 @@ static const struct clk_gating_soc_desc axp_gating_desc[] __initconst = { | |||
| 202 | { } | 195 | { } |
| 203 | }; | 196 | }; |
| 204 | 197 | ||
| 205 | static void __init axp_clk_gating_init(struct device_node *np) | 198 | static void __init axp_clk_init(struct device_node *np) |
| 206 | { | 199 | { |
| 207 | mvebu_clk_gating_setup(np, axp_gating_desc); | 200 | struct device_node *cgnp = |
| 201 | of_find_compatible_node(NULL, NULL, "marvell,armada-xp-gating-clock"); | ||
| 202 | |||
| 203 | mvebu_coreclk_setup(np, &axp_coreclks); | ||
| 204 | |||
| 205 | if (cgnp) | ||
| 206 | mvebu_clk_gating_setup(cgnp, axp_gating_desc); | ||
| 208 | } | 207 | } |
| 209 | CLK_OF_DECLARE(axp_clk_gating, "marvell,armada-xp-gating-clock", | 208 | CLK_OF_DECLARE(axp_clk, "marvell,armada-xp-core-clock", axp_clk_init); |
| 210 | axp_clk_gating_init); | ||
diff --git a/drivers/clk/mvebu/dove.c b/drivers/clk/mvebu/dove.c index 38aee1e3f242..b8c2424ac926 100644 --- a/drivers/clk/mvebu/dove.c +++ b/drivers/clk/mvebu/dove.c | |||
| @@ -154,12 +154,6 @@ static const struct coreclk_soc_desc dove_coreclks = { | |||
| 154 | .num_ratios = ARRAY_SIZE(dove_coreclk_ratios), | 154 | .num_ratios = ARRAY_SIZE(dove_coreclk_ratios), |
| 155 | }; | 155 | }; |
| 156 | 156 | ||
| 157 | static void __init dove_coreclk_init(struct device_node *np) | ||
| 158 | { | ||
| 159 | mvebu_coreclk_setup(np, &dove_coreclks); | ||
| 160 | } | ||
| 161 | CLK_OF_DECLARE(dove_core_clk, "marvell,dove-core-clock", dove_coreclk_init); | ||
| 162 | |||
| 163 | /* | 157 | /* |
| 164 | * Clock Gating Control | 158 | * Clock Gating Control |
| 165 | */ | 159 | */ |
| @@ -186,9 +180,14 @@ static const struct clk_gating_soc_desc dove_gating_desc[] __initconst = { | |||
| 186 | { } | 180 | { } |
| 187 | }; | 181 | }; |
| 188 | 182 | ||
| 189 | static void __init dove_clk_gating_init(struct device_node *np) | 183 | static void __init dove_clk_init(struct device_node *np) |
| 190 | { | 184 | { |
| 191 | mvebu_clk_gating_setup(np, dove_gating_desc); | 185 | struct device_node *cgnp = |
| 186 | of_find_compatible_node(NULL, NULL, "marvell,dove-gating-clock"); | ||
| 187 | |||
| 188 | mvebu_coreclk_setup(np, &dove_coreclks); | ||
| 189 | |||
| 190 | if (cgnp) | ||
| 191 | mvebu_clk_gating_setup(cgnp, dove_gating_desc); | ||
| 192 | } | 192 | } |
| 193 | CLK_OF_DECLARE(dove_clk_gating, "marvell,dove-gating-clock", | 193 | CLK_OF_DECLARE(dove_clk, "marvell,dove-core-clock", dove_clk_init); |
| 194 | dove_clk_gating_init); | ||
diff --git a/drivers/clk/mvebu/kirkwood.c b/drivers/clk/mvebu/kirkwood.c index 2636a55f29f9..ddb666a86500 100644 --- a/drivers/clk/mvebu/kirkwood.c +++ b/drivers/clk/mvebu/kirkwood.c | |||
| @@ -193,13 +193,6 @@ static const struct coreclk_soc_desc kirkwood_coreclks = { | |||
| 193 | .num_ratios = ARRAY_SIZE(kirkwood_coreclk_ratios), | 193 | .num_ratios = ARRAY_SIZE(kirkwood_coreclk_ratios), |
| 194 | }; | 194 | }; |
| 195 | 195 | ||
| 196 | static void __init kirkwood_coreclk_init(struct device_node *np) | ||
| 197 | { | ||
| 198 | mvebu_coreclk_setup(np, &kirkwood_coreclks); | ||
| 199 | } | ||
| 200 | CLK_OF_DECLARE(kirkwood_core_clk, "marvell,kirkwood-core-clock", | ||
| 201 | kirkwood_coreclk_init); | ||
| 202 | |||
| 203 | static const struct coreclk_soc_desc mv88f6180_coreclks = { | 196 | static const struct coreclk_soc_desc mv88f6180_coreclks = { |
| 204 | .get_tclk_freq = kirkwood_get_tclk_freq, | 197 | .get_tclk_freq = kirkwood_get_tclk_freq, |
| 205 | .get_cpu_freq = mv88f6180_get_cpu_freq, | 198 | .get_cpu_freq = mv88f6180_get_cpu_freq, |
| @@ -208,13 +201,6 @@ static const struct coreclk_soc_desc mv88f6180_coreclks = { | |||
| 208 | .num_ratios = ARRAY_SIZE(kirkwood_coreclk_ratios), | 201 | .num_ratios = ARRAY_SIZE(kirkwood_coreclk_ratios), |
| 209 | }; | 202 | }; |
| 210 | 203 | ||
| 211 | static void __init mv88f6180_coreclk_init(struct device_node *np) | ||
| 212 | { | ||
| 213 | mvebu_coreclk_setup(np, &mv88f6180_coreclks); | ||
| 214 | } | ||
| 215 | CLK_OF_DECLARE(mv88f6180_core_clk, "marvell,mv88f6180-core-clock", | ||
| 216 | mv88f6180_coreclk_init); | ||
| 217 | |||
| 218 | /* | 204 | /* |
| 219 | * Clock Gating Control | 205 | * Clock Gating Control |
| 220 | */ | 206 | */ |
| @@ -239,9 +225,21 @@ static const struct clk_gating_soc_desc kirkwood_gating_desc[] __initconst = { | |||
| 239 | { } | 225 | { } |
| 240 | }; | 226 | }; |
| 241 | 227 | ||
| 242 | static void __init kirkwood_clk_gating_init(struct device_node *np) | 228 | static void __init kirkwood_clk_init(struct device_node *np) |
| 243 | { | 229 | { |
| 244 | mvebu_clk_gating_setup(np, kirkwood_gating_desc); | 230 | struct device_node *cgnp = |
| 231 | of_find_compatible_node(NULL, NULL, "marvell,kirkwood-gating-clock"); | ||
| 232 | |||
| 233 | |||
| 234 | if (of_device_is_compatible(np, "marvell,mv88f6180-core-clock")) | ||
| 235 | mvebu_coreclk_setup(np, &mv88f6180_coreclks); | ||
| 236 | else | ||
| 237 | mvebu_coreclk_setup(np, &kirkwood_coreclks); | ||
| 238 | |||
| 239 | if (cgnp) | ||
| 240 | mvebu_clk_gating_setup(cgnp, kirkwood_gating_desc); | ||
| 245 | } | 241 | } |
| 246 | CLK_OF_DECLARE(kirkwood_clk_gating, "marvell,kirkwood-gating-clock", | 242 | CLK_OF_DECLARE(kirkwood_clk, "marvell,kirkwood-core-clock", |
| 247 | kirkwood_clk_gating_init); | 243 | kirkwood_clk_init); |
| 244 | CLK_OF_DECLARE(mv88f6180_clk, "marvell,mv88f6180-core-clock", | ||
| 245 | kirkwood_clk_init); | ||
diff --git a/drivers/clk/shmobile/clk-rcar-gen2.c b/drivers/clk/shmobile/clk-rcar-gen2.c index a59ec217a124..dd272a0d1446 100644 --- a/drivers/clk/shmobile/clk-rcar-gen2.c +++ b/drivers/clk/shmobile/clk-rcar-gen2.c | |||
| @@ -186,7 +186,7 @@ rcar_gen2_cpg_register_clock(struct device_node *np, struct rcar_gen2_cpg *cpg, | |||
| 186 | const char *name) | 186 | const char *name) |
| 187 | { | 187 | { |
| 188 | const struct clk_div_table *table = NULL; | 188 | const struct clk_div_table *table = NULL; |
| 189 | const char *parent_name = "main"; | 189 | const char *parent_name; |
| 190 | unsigned int shift; | 190 | unsigned int shift; |
| 191 | unsigned int mult = 1; | 191 | unsigned int mult = 1; |
| 192 | unsigned int div = 1; | 192 | unsigned int div = 1; |
| @@ -201,23 +201,31 @@ rcar_gen2_cpg_register_clock(struct device_node *np, struct rcar_gen2_cpg *cpg, | |||
| 201 | * the multiplier value. | 201 | * the multiplier value. |
| 202 | */ | 202 | */ |
| 203 | u32 value = clk_readl(cpg->reg + CPG_PLL0CR); | 203 | u32 value = clk_readl(cpg->reg + CPG_PLL0CR); |
| 204 | parent_name = "main"; | ||
| 204 | mult = ((value >> 24) & ((1 << 7) - 1)) + 1; | 205 | mult = ((value >> 24) & ((1 << 7) - 1)) + 1; |
| 205 | } else if (!strcmp(name, "pll1")) { | 206 | } else if (!strcmp(name, "pll1")) { |
| 207 | parent_name = "main"; | ||
| 206 | mult = config->pll1_mult / 2; | 208 | mult = config->pll1_mult / 2; |
| 207 | } else if (!strcmp(name, "pll3")) { | 209 | } else if (!strcmp(name, "pll3")) { |
| 210 | parent_name = "main"; | ||
| 208 | mult = config->pll3_mult; | 211 | mult = config->pll3_mult; |
| 209 | } else if (!strcmp(name, "lb")) { | 212 | } else if (!strcmp(name, "lb")) { |
| 213 | parent_name = "pll1_div2"; | ||
| 210 | div = cpg_mode & BIT(18) ? 36 : 24; | 214 | div = cpg_mode & BIT(18) ? 36 : 24; |
| 211 | } else if (!strcmp(name, "qspi")) { | 215 | } else if (!strcmp(name, "qspi")) { |
| 216 | parent_name = "pll1_div2"; | ||
| 212 | div = (cpg_mode & (BIT(3) | BIT(2) | BIT(1))) == BIT(2) | 217 | div = (cpg_mode & (BIT(3) | BIT(2) | BIT(1))) == BIT(2) |
| 213 | ? 16 : 20; | 218 | ? 8 : 10; |
| 214 | } else if (!strcmp(name, "sdh")) { | 219 | } else if (!strcmp(name, "sdh")) { |
| 220 | parent_name = "pll1_div2"; | ||
| 215 | table = cpg_sdh_div_table; | 221 | table = cpg_sdh_div_table; |
| 216 | shift = 8; | 222 | shift = 8; |
| 217 | } else if (!strcmp(name, "sd0")) { | 223 | } else if (!strcmp(name, "sd0")) { |
| 224 | parent_name = "pll1_div2"; | ||
| 218 | table = cpg_sd01_div_table; | 225 | table = cpg_sd01_div_table; |
| 219 | shift = 4; | 226 | shift = 4; |
| 220 | } else if (!strcmp(name, "sd1")) { | 227 | } else if (!strcmp(name, "sd1")) { |
| 228 | parent_name = "pll1_div2"; | ||
| 221 | table = cpg_sd01_div_table; | 229 | table = cpg_sd01_div_table; |
| 222 | shift = 0; | 230 | shift = 0; |
| 223 | } else if (!strcmp(name, "z")) { | 231 | } else if (!strcmp(name, "z")) { |
diff --git a/drivers/clk/tegra/clk-divider.c b/drivers/clk/tegra/clk-divider.c index 4d75b1f37e3a..290f9c1a3749 100644 --- a/drivers/clk/tegra/clk-divider.c +++ b/drivers/clk/tegra/clk-divider.c | |||
| @@ -59,7 +59,7 @@ static int get_div(struct tegra_clk_frac_div *divider, unsigned long rate, | |||
| 59 | return 0; | 59 | return 0; |
| 60 | 60 | ||
| 61 | if (divider_ux1 > get_max_div(divider)) | 61 | if (divider_ux1 > get_max_div(divider)) |
| 62 | return -EINVAL; | 62 | return get_max_div(divider); |
| 63 | 63 | ||
| 64 | return divider_ux1; | 64 | return divider_ux1; |
| 65 | } | 65 | } |
diff --git a/drivers/clk/tegra/clk-id.h b/drivers/clk/tegra/clk-id.h index cf0c323f2c36..c39613c519af 100644 --- a/drivers/clk/tegra/clk-id.h +++ b/drivers/clk/tegra/clk-id.h | |||
| @@ -180,9 +180,13 @@ enum clk_id { | |||
| 180 | tegra_clk_sbc6_8, | 180 | tegra_clk_sbc6_8, |
| 181 | tegra_clk_sclk, | 181 | tegra_clk_sclk, |
| 182 | tegra_clk_sdmmc1, | 182 | tegra_clk_sdmmc1, |
| 183 | tegra_clk_sdmmc1_8, | ||
| 183 | tegra_clk_sdmmc2, | 184 | tegra_clk_sdmmc2, |
| 185 | tegra_clk_sdmmc2_8, | ||
| 184 | tegra_clk_sdmmc3, | 186 | tegra_clk_sdmmc3, |
| 187 | tegra_clk_sdmmc3_8, | ||
| 185 | tegra_clk_sdmmc4, | 188 | tegra_clk_sdmmc4, |
| 189 | tegra_clk_sdmmc4_8, | ||
| 186 | tegra_clk_se, | 190 | tegra_clk_se, |
| 187 | tegra_clk_soc_therm, | 191 | tegra_clk_soc_therm, |
| 188 | tegra_clk_sor0, | 192 | tegra_clk_sor0, |
diff --git a/drivers/clk/tegra/clk-tegra-periph.c b/drivers/clk/tegra/clk-tegra-periph.c index 5c35885f4a7c..1fa5c3f33b20 100644 --- a/drivers/clk/tegra/clk-tegra-periph.c +++ b/drivers/clk/tegra/clk-tegra-periph.c | |||
| @@ -371,9 +371,7 @@ static const char *mux_pllp3_pllc_clkm[] = { | |||
| 371 | static const char *mux_pllm_pllc_pllp_plla_pllc2_c3_clkm[] = { | 371 | static const char *mux_pllm_pllc_pllp_plla_pllc2_c3_clkm[] = { |
| 372 | "pll_m", "pll_c", "pll_p", "pll_a", "pll_c2", "pll_c3", "clk_m" | 372 | "pll_m", "pll_c", "pll_p", "pll_a", "pll_c2", "pll_c3", "clk_m" |
| 373 | }; | 373 | }; |
| 374 | static u32 mux_pllm_pllc_pllp_plla_pllc2_c3_clkm_idx[] = { | 374 | #define mux_pllm_pllc_pllp_plla_pllc2_c3_clkm_idx NULL |
| 375 | [0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 6, | ||
| 376 | }; | ||
| 377 | 375 | ||
| 378 | static const char *mux_pllm_pllc2_c_c3_pllp_plla_pllc4[] = { | 376 | static const char *mux_pllm_pllc2_c_c3_pllp_plla_pllc4[] = { |
| 379 | "pll_m", "pll_c2", "pll_c", "pll_c3", "pll_p", "pll_a_out0", "pll_c4", | 377 | "pll_m", "pll_c2", "pll_c", "pll_c3", "pll_p", "pll_a_out0", "pll_c4", |
| @@ -465,6 +463,10 @@ static struct tegra_periph_init_data periph_clks[] = { | |||
| 465 | MUX("adx1", mux_plla_pllc_pllp_clkm, CLK_SOURCE_ADX1, 180, TEGRA_PERIPH_ON_APB, tegra_clk_adx1), | 463 | MUX("adx1", mux_plla_pllc_pllp_clkm, CLK_SOURCE_ADX1, 180, TEGRA_PERIPH_ON_APB, tegra_clk_adx1), |
| 466 | MUX("amx1", mux_plla_pllc_pllp_clkm, CLK_SOURCE_AMX1, 185, TEGRA_PERIPH_ON_APB, tegra_clk_amx1), | 464 | MUX("amx1", mux_plla_pllc_pllp_clkm, CLK_SOURCE_AMX1, 185, TEGRA_PERIPH_ON_APB, tegra_clk_amx1), |
| 467 | MUX("vi_sensor2", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_VI_SENSOR2, 20, TEGRA_PERIPH_NO_RESET, tegra_clk_vi_sensor2), | 465 | MUX("vi_sensor2", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_VI_SENSOR2, 20, TEGRA_PERIPH_NO_RESET, tegra_clk_vi_sensor2), |
| 466 | MUX8("sdmmc1", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SDMMC1, 14, 0, tegra_clk_sdmmc1_8), | ||
| 467 | MUX8("sdmmc2", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SDMMC2, 9, 0, tegra_clk_sdmmc2_8), | ||
| 468 | MUX8("sdmmc3", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SDMMC3, 69, 0, tegra_clk_sdmmc3_8), | ||
| 469 | MUX8("sdmmc4", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SDMMC4, 15, 0, tegra_clk_sdmmc4_8), | ||
| 468 | MUX8("sbc1", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC1, 41, TEGRA_PERIPH_ON_APB, tegra_clk_sbc1_8), | 470 | MUX8("sbc1", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC1, 41, TEGRA_PERIPH_ON_APB, tegra_clk_sbc1_8), |
| 469 | MUX8("sbc2", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC2, 44, TEGRA_PERIPH_ON_APB, tegra_clk_sbc2_8), | 471 | MUX8("sbc2", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC2, 44, TEGRA_PERIPH_ON_APB, tegra_clk_sbc2_8), |
| 470 | MUX8("sbc3", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC3, 46, TEGRA_PERIPH_ON_APB, tegra_clk_sbc3_8), | 472 | MUX8("sbc3", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SBC3, 46, TEGRA_PERIPH_ON_APB, tegra_clk_sbc3_8), |
| @@ -492,7 +494,7 @@ static struct tegra_periph_init_data periph_clks[] = { | |||
| 492 | UART("uartb", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTB, 7, tegra_clk_uartb), | 494 | UART("uartb", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTB, 7, tegra_clk_uartb), |
| 493 | UART("uartc", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTC, 55, tegra_clk_uartc), | 495 | UART("uartc", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTC, 55, tegra_clk_uartc), |
| 494 | UART("uartd", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTD, 65, tegra_clk_uartd), | 496 | UART("uartd", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTD, 65, tegra_clk_uartd), |
| 495 | UART("uarte", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTE, 65, tegra_clk_uarte), | 497 | UART("uarte", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_UARTE, 66, tegra_clk_uarte), |
| 496 | XUSB("xusb_host_src", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_HOST_SRC, 143, TEGRA_PERIPH_ON_APB | TEGRA_PERIPH_NO_RESET, tegra_clk_xusb_host_src), | 498 | XUSB("xusb_host_src", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_HOST_SRC, 143, TEGRA_PERIPH_ON_APB | TEGRA_PERIPH_NO_RESET, tegra_clk_xusb_host_src), |
| 497 | XUSB("xusb_falcon_src", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_FALCON_SRC, 143, TEGRA_PERIPH_NO_RESET, tegra_clk_xusb_falcon_src), | 499 | XUSB("xusb_falcon_src", mux_clkm_pllp_pllc_pllre, CLK_SOURCE_XUSB_FALCON_SRC, 143, TEGRA_PERIPH_NO_RESET, tegra_clk_xusb_falcon_src), |
| 498 | XUSB("xusb_fs_src", mux_clkm_48M_pllp_480M, CLK_SOURCE_XUSB_FS_SRC, 143, TEGRA_PERIPH_NO_RESET, tegra_clk_xusb_fs_src), | 500 | XUSB("xusb_fs_src", mux_clkm_48M_pllp_480M, CLK_SOURCE_XUSB_FS_SRC, 143, TEGRA_PERIPH_NO_RESET, tegra_clk_xusb_fs_src), |
diff --git a/drivers/clk/tegra/clk-tegra-super-gen4.c b/drivers/clk/tegra/clk-tegra-super-gen4.c index 05dce4aa2c11..feb3201c85ce 100644 --- a/drivers/clk/tegra/clk-tegra-super-gen4.c +++ b/drivers/clk/tegra/clk-tegra-super-gen4.c | |||
| @@ -120,7 +120,7 @@ void __init tegra_super_clk_gen4_init(void __iomem *clk_base, | |||
| 120 | ARRAY_SIZE(cclk_lp_parents), | 120 | ARRAY_SIZE(cclk_lp_parents), |
| 121 | CLK_SET_RATE_PARENT, | 121 | CLK_SET_RATE_PARENT, |
| 122 | clk_base + CCLKLP_BURST_POLICY, | 122 | clk_base + CCLKLP_BURST_POLICY, |
| 123 | 0, 4, 8, 9, NULL); | 123 | TEGRA_DIVIDER_2, 4, 8, 9, NULL); |
| 124 | *dt_clk = clk; | 124 | *dt_clk = clk; |
| 125 | } | 125 | } |
| 126 | 126 | ||
diff --git a/drivers/clk/tegra/clk-tegra114.c b/drivers/clk/tegra/clk-tegra114.c index 90d9d25f2228..80431f0fb268 100644 --- a/drivers/clk/tegra/clk-tegra114.c +++ b/drivers/clk/tegra/clk-tegra114.c | |||
| @@ -682,12 +682,12 @@ static struct tegra_clk tegra114_clks[tegra_clk_max] __initdata = { | |||
| 682 | [tegra_clk_timer] = { .dt_id = TEGRA114_CLK_TIMER, .present = true }, | 682 | [tegra_clk_timer] = { .dt_id = TEGRA114_CLK_TIMER, .present = true }, |
| 683 | [tegra_clk_uarta] = { .dt_id = TEGRA114_CLK_UARTA, .present = true }, | 683 | [tegra_clk_uarta] = { .dt_id = TEGRA114_CLK_UARTA, .present = true }, |
| 684 | [tegra_clk_uartd] = { .dt_id = TEGRA114_CLK_UARTD, .present = true }, | 684 | [tegra_clk_uartd] = { .dt_id = TEGRA114_CLK_UARTD, .present = true }, |
| 685 | [tegra_clk_sdmmc2] = { .dt_id = TEGRA114_CLK_SDMMC2, .present = true }, | 685 | [tegra_clk_sdmmc2_8] = { .dt_id = TEGRA114_CLK_SDMMC2, .present = true }, |
| 686 | [tegra_clk_i2s1] = { .dt_id = TEGRA114_CLK_I2S1, .present = true }, | 686 | [tegra_clk_i2s1] = { .dt_id = TEGRA114_CLK_I2S1, .present = true }, |
| 687 | [tegra_clk_i2c1] = { .dt_id = TEGRA114_CLK_I2C1, .present = true }, | 687 | [tegra_clk_i2c1] = { .dt_id = TEGRA114_CLK_I2C1, .present = true }, |
| 688 | [tegra_clk_ndflash] = { .dt_id = TEGRA114_CLK_NDFLASH, .present = true }, | 688 | [tegra_clk_ndflash] = { .dt_id = TEGRA114_CLK_NDFLASH, .present = true }, |
| 689 | [tegra_clk_sdmmc1] = { .dt_id = TEGRA114_CLK_SDMMC1, .present = true }, | 689 | [tegra_clk_sdmmc1_8] = { .dt_id = TEGRA114_CLK_SDMMC1, .present = true }, |
| 690 | [tegra_clk_sdmmc4] = { .dt_id = TEGRA114_CLK_SDMMC4, .present = true }, | 690 | [tegra_clk_sdmmc4_8] = { .dt_id = TEGRA114_CLK_SDMMC4, .present = true }, |
| 691 | [tegra_clk_pwm] = { .dt_id = TEGRA114_CLK_PWM, .present = true }, | 691 | [tegra_clk_pwm] = { .dt_id = TEGRA114_CLK_PWM, .present = true }, |
| 692 | [tegra_clk_i2s0] = { .dt_id = TEGRA114_CLK_I2S0, .present = true }, | 692 | [tegra_clk_i2s0] = { .dt_id = TEGRA114_CLK_I2S0, .present = true }, |
| 693 | [tegra_clk_i2s2] = { .dt_id = TEGRA114_CLK_I2S2, .present = true }, | 693 | [tegra_clk_i2s2] = { .dt_id = TEGRA114_CLK_I2S2, .present = true }, |
| @@ -723,7 +723,7 @@ static struct tegra_clk tegra114_clks[tegra_clk_max] __initdata = { | |||
| 723 | [tegra_clk_bsev] = { .dt_id = TEGRA114_CLK_BSEV, .present = true }, | 723 | [tegra_clk_bsev] = { .dt_id = TEGRA114_CLK_BSEV, .present = true }, |
| 724 | [tegra_clk_i2c3] = { .dt_id = TEGRA114_CLK_I2C3, .present = true }, | 724 | [tegra_clk_i2c3] = { .dt_id = TEGRA114_CLK_I2C3, .present = true }, |
| 725 | [tegra_clk_sbc4_8] = { .dt_id = TEGRA114_CLK_SBC4, .present = true }, | 725 | [tegra_clk_sbc4_8] = { .dt_id = TEGRA114_CLK_SBC4, .present = true }, |
| 726 | [tegra_clk_sdmmc3] = { .dt_id = TEGRA114_CLK_SDMMC3, .present = true }, | 726 | [tegra_clk_sdmmc3_8] = { .dt_id = TEGRA114_CLK_SDMMC3, .present = true }, |
| 727 | [tegra_clk_owr] = { .dt_id = TEGRA114_CLK_OWR, .present = true }, | 727 | [tegra_clk_owr] = { .dt_id = TEGRA114_CLK_OWR, .present = true }, |
| 728 | [tegra_clk_csite] = { .dt_id = TEGRA114_CLK_CSITE, .present = true }, | 728 | [tegra_clk_csite] = { .dt_id = TEGRA114_CLK_CSITE, .present = true }, |
| 729 | [tegra_clk_la] = { .dt_id = TEGRA114_CLK_LA, .present = true }, | 729 | [tegra_clk_la] = { .dt_id = TEGRA114_CLK_LA, .present = true }, |
diff --git a/drivers/clk/tegra/clk-tegra124.c b/drivers/clk/tegra/clk-tegra124.c index aff86b5bc745..166e02f16c8a 100644 --- a/drivers/clk/tegra/clk-tegra124.c +++ b/drivers/clk/tegra/clk-tegra124.c | |||
| @@ -516,11 +516,11 @@ static struct div_nmp pllp_nmp = { | |||
| 516 | }; | 516 | }; |
| 517 | 517 | ||
| 518 | static struct tegra_clk_pll_freq_table pll_p_freq_table[] = { | 518 | static struct tegra_clk_pll_freq_table pll_p_freq_table[] = { |
| 519 | {12000000, 216000000, 432, 12, 1, 8}, | 519 | {12000000, 408000000, 408, 12, 0, 8}, |
| 520 | {13000000, 216000000, 432, 13, 1, 8}, | 520 | {13000000, 408000000, 408, 13, 0, 8}, |
| 521 | {16800000, 216000000, 360, 14, 1, 8}, | 521 | {16800000, 408000000, 340, 14, 0, 8}, |
| 522 | {19200000, 216000000, 360, 16, 1, 8}, | 522 | {19200000, 408000000, 340, 16, 0, 8}, |
| 523 | {26000000, 216000000, 432, 26, 1, 8}, | 523 | {26000000, 408000000, 408, 26, 0, 8}, |
| 524 | {0, 0, 0, 0, 0, 0}, | 524 | {0, 0, 0, 0, 0, 0}, |
| 525 | }; | 525 | }; |
| 526 | 526 | ||
| @@ -570,6 +570,15 @@ static struct tegra_clk_pll_params pll_a_params = { | |||
| 570 | .flags = TEGRA_PLL_HAS_CPCON | TEGRA_PLL_USE_LOCK, | 570 | .flags = TEGRA_PLL_HAS_CPCON | TEGRA_PLL_USE_LOCK, |
| 571 | }; | 571 | }; |
| 572 | 572 | ||
| 573 | static struct div_nmp plld_nmp = { | ||
| 574 | .divm_shift = 0, | ||
| 575 | .divm_width = 5, | ||
| 576 | .divn_shift = 8, | ||
| 577 | .divn_width = 11, | ||
| 578 | .divp_shift = 20, | ||
| 579 | .divp_width = 3, | ||
| 580 | }; | ||
| 581 | |||
| 573 | static struct tegra_clk_pll_freq_table pll_d_freq_table[] = { | 582 | static struct tegra_clk_pll_freq_table pll_d_freq_table[] = { |
| 574 | {12000000, 216000000, 864, 12, 4, 12}, | 583 | {12000000, 216000000, 864, 12, 4, 12}, |
| 575 | {13000000, 216000000, 864, 13, 4, 12}, | 584 | {13000000, 216000000, 864, 13, 4, 12}, |
| @@ -603,19 +612,18 @@ static struct tegra_clk_pll_params pll_d_params = { | |||
| 603 | .lock_mask = PLL_BASE_LOCK, | 612 | .lock_mask = PLL_BASE_LOCK, |
| 604 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, | 613 | .lock_enable_bit_idx = PLLDU_MISC_LOCK_ENABLE, |
| 605 | .lock_delay = 1000, | 614 | .lock_delay = 1000, |
| 606 | .div_nmp = &pllp_nmp, | 615 | .div_nmp = &plld_nmp, |
| 607 | .freq_table = pll_d_freq_table, | 616 | .freq_table = pll_d_freq_table, |
| 608 | .flags = TEGRA_PLL_HAS_CPCON | TEGRA_PLL_SET_LFCON | | 617 | .flags = TEGRA_PLL_HAS_CPCON | TEGRA_PLL_SET_LFCON | |
| 609 | TEGRA_PLL_USE_LOCK, | 618 | TEGRA_PLL_USE_LOCK, |
| 610 | }; | 619 | }; |
| 611 | 620 | ||
| 612 | static struct tegra_clk_pll_freq_table tegra124_pll_d2_freq_table[] = { | 621 | static struct tegra_clk_pll_freq_table tegra124_pll_d2_freq_table[] = { |
| 613 | { 12000000, 148500000, 99, 1, 8}, | 622 | { 12000000, 594000000, 99, 1, 2}, |
| 614 | { 12000000, 594000000, 99, 1, 1}, | 623 | { 13000000, 594000000, 91, 1, 2}, /* actual: 591.5 MHz */ |
| 615 | { 13000000, 594000000, 91, 1, 1}, /* actual: 591.5 MHz */ | 624 | { 16800000, 594000000, 71, 1, 2}, /* actual: 596.4 MHz */ |
| 616 | { 16800000, 594000000, 71, 1, 1}, /* actual: 596.4 MHz */ | 625 | { 19200000, 594000000, 62, 1, 2}, /* actual: 595.2 MHz */ |
| 617 | { 19200000, 594000000, 62, 1, 1}, /* actual: 595.2 MHz */ | 626 | { 26000000, 594000000, 91, 2, 2}, /* actual: 591.5 MHz */ |
| 618 | { 26000000, 594000000, 91, 2, 1}, /* actual: 591.5 MHz */ | ||
| 619 | { 0, 0, 0, 0, 0, 0 }, | 627 | { 0, 0, 0, 0, 0, 0 }, |
| 620 | }; | 628 | }; |
| 621 | 629 | ||
| @@ -753,21 +761,19 @@ static struct tegra_clk tegra124_clks[tegra_clk_max] __initdata = { | |||
| 753 | [tegra_clk_rtc] = { .dt_id = TEGRA124_CLK_RTC, .present = true }, | 761 | [tegra_clk_rtc] = { .dt_id = TEGRA124_CLK_RTC, .present = true }, |
| 754 | [tegra_clk_timer] = { .dt_id = TEGRA124_CLK_TIMER, .present = true }, | 762 | [tegra_clk_timer] = { .dt_id = TEGRA124_CLK_TIMER, .present = true }, |
| 755 | [tegra_clk_uarta] = { .dt_id = TEGRA124_CLK_UARTA, .present = true }, | 763 | [tegra_clk_uarta] = { .dt_id = TEGRA124_CLK_UARTA, .present = true }, |
| 756 | [tegra_clk_sdmmc2] = { .dt_id = TEGRA124_CLK_SDMMC2, .present = true }, | 764 | [tegra_clk_sdmmc2_8] = { .dt_id = TEGRA124_CLK_SDMMC2, .present = true }, |
| 757 | [tegra_clk_i2s1] = { .dt_id = TEGRA124_CLK_I2S1, .present = true }, | 765 | [tegra_clk_i2s1] = { .dt_id = TEGRA124_CLK_I2S1, .present = true }, |
| 758 | [tegra_clk_i2c1] = { .dt_id = TEGRA124_CLK_I2C1, .present = true }, | 766 | [tegra_clk_i2c1] = { .dt_id = TEGRA124_CLK_I2C1, .present = true }, |
| 759 | [tegra_clk_ndflash] = { .dt_id = TEGRA124_CLK_NDFLASH, .present = true }, | 767 | [tegra_clk_ndflash] = { .dt_id = TEGRA124_CLK_NDFLASH, .present = true }, |
| 760 | [tegra_clk_sdmmc1] = { .dt_id = TEGRA124_CLK_SDMMC1, .present = true }, | 768 | [tegra_clk_sdmmc1_8] = { .dt_id = TEGRA124_CLK_SDMMC1, .present = true }, |
| 761 | [tegra_clk_sdmmc4] = { .dt_id = TEGRA124_CLK_SDMMC4, .present = true }, | 769 | [tegra_clk_sdmmc4_8] = { .dt_id = TEGRA124_CLK_SDMMC4, .present = true }, |
| 762 | [tegra_clk_pwm] = { .dt_id = TEGRA124_CLK_PWM, .present = true }, | 770 | [tegra_clk_pwm] = { .dt_id = TEGRA124_CLK_PWM, .present = true }, |
| 763 | [tegra_clk_i2s2] = { .dt_id = TEGRA124_CLK_I2S2, .present = true }, | 771 | [tegra_clk_i2s2] = { .dt_id = TEGRA124_CLK_I2S2, .present = true }, |
| 764 | [tegra_clk_gr2d] = { .dt_id = TEGRA124_CLK_GR_2D, .present = true }, | ||
| 765 | [tegra_clk_usbd] = { .dt_id = TEGRA124_CLK_USBD, .present = true }, | 772 | [tegra_clk_usbd] = { .dt_id = TEGRA124_CLK_USBD, .present = true }, |
| 766 | [tegra_clk_isp_8] = { .dt_id = TEGRA124_CLK_ISP, .present = true }, | 773 | [tegra_clk_isp_8] = { .dt_id = TEGRA124_CLK_ISP, .present = true }, |
| 767 | [tegra_clk_gr3d] = { .dt_id = TEGRA124_CLK_GR_3D, .present = true }, | ||
| 768 | [tegra_clk_disp2] = { .dt_id = TEGRA124_CLK_DISP2, .present = true }, | 774 | [tegra_clk_disp2] = { .dt_id = TEGRA124_CLK_DISP2, .present = true }, |
| 769 | [tegra_clk_disp1] = { .dt_id = TEGRA124_CLK_DISP1, .present = true }, | 775 | [tegra_clk_disp1] = { .dt_id = TEGRA124_CLK_DISP1, .present = true }, |
| 770 | [tegra_clk_host1x] = { .dt_id = TEGRA124_CLK_HOST1X, .present = true }, | 776 | [tegra_clk_host1x_8] = { .dt_id = TEGRA124_CLK_HOST1X, .present = true }, |
| 771 | [tegra_clk_vcp] = { .dt_id = TEGRA124_CLK_VCP, .present = true }, | 777 | [tegra_clk_vcp] = { .dt_id = TEGRA124_CLK_VCP, .present = true }, |
| 772 | [tegra_clk_i2s0] = { .dt_id = TEGRA124_CLK_I2S0, .present = true }, | 778 | [tegra_clk_i2s0] = { .dt_id = TEGRA124_CLK_I2S0, .present = true }, |
| 773 | [tegra_clk_apbdma] = { .dt_id = TEGRA124_CLK_APBDMA, .present = true }, | 779 | [tegra_clk_apbdma] = { .dt_id = TEGRA124_CLK_APBDMA, .present = true }, |
| @@ -794,7 +800,7 @@ static struct tegra_clk tegra124_clks[tegra_clk_max] __initdata = { | |||
| 794 | [tegra_clk_uartd] = { .dt_id = TEGRA124_CLK_UARTD, .present = true }, | 800 | [tegra_clk_uartd] = { .dt_id = TEGRA124_CLK_UARTD, .present = true }, |
| 795 | [tegra_clk_i2c3] = { .dt_id = TEGRA124_CLK_I2C3, .present = true }, | 801 | [tegra_clk_i2c3] = { .dt_id = TEGRA124_CLK_I2C3, .present = true }, |
| 796 | [tegra_clk_sbc4] = { .dt_id = TEGRA124_CLK_SBC4, .present = true }, | 802 | [tegra_clk_sbc4] = { .dt_id = TEGRA124_CLK_SBC4, .present = true }, |
| 797 | [tegra_clk_sdmmc3] = { .dt_id = TEGRA124_CLK_SDMMC3, .present = true }, | 803 | [tegra_clk_sdmmc3_8] = { .dt_id = TEGRA124_CLK_SDMMC3, .present = true }, |
| 798 | [tegra_clk_pcie] = { .dt_id = TEGRA124_CLK_PCIE, .present = true }, | 804 | [tegra_clk_pcie] = { .dt_id = TEGRA124_CLK_PCIE, .present = true }, |
| 799 | [tegra_clk_owr] = { .dt_id = TEGRA124_CLK_OWR, .present = true }, | 805 | [tegra_clk_owr] = { .dt_id = TEGRA124_CLK_OWR, .present = true }, |
| 800 | [tegra_clk_afi] = { .dt_id = TEGRA124_CLK_AFI, .present = true }, | 806 | [tegra_clk_afi] = { .dt_id = TEGRA124_CLK_AFI, .present = true }, |
| @@ -1286,9 +1292,9 @@ static void __init tegra124_pll_init(void __iomem *clk_base, | |||
| 1286 | clk_register_clkdev(clk, "pll_d2", NULL); | 1292 | clk_register_clkdev(clk, "pll_d2", NULL); |
| 1287 | clks[TEGRA124_CLK_PLL_D2] = clk; | 1293 | clks[TEGRA124_CLK_PLL_D2] = clk; |
| 1288 | 1294 | ||
| 1289 | /* PLLD2_OUT0 ?? */ | 1295 | /* PLLD2_OUT0 */ |
| 1290 | clk = clk_register_fixed_factor(NULL, "pll_d2_out0", "pll_d2", | 1296 | clk = clk_register_fixed_factor(NULL, "pll_d2_out0", "pll_d2", |
| 1291 | CLK_SET_RATE_PARENT, 1, 2); | 1297 | CLK_SET_RATE_PARENT, 1, 1); |
| 1292 | clk_register_clkdev(clk, "pll_d2_out0", NULL); | 1298 | clk_register_clkdev(clk, "pll_d2_out0", NULL); |
| 1293 | clks[TEGRA124_CLK_PLL_D2_OUT0] = clk; | 1299 | clks[TEGRA124_CLK_PLL_D2_OUT0] = clk; |
| 1294 | 1300 | ||
diff --git a/drivers/clk/tegra/clk-tegra20.c b/drivers/clk/tegra/clk-tegra20.c index dbace152b2fa..dace2b1b5ae6 100644 --- a/drivers/clk/tegra/clk-tegra20.c +++ b/drivers/clk/tegra/clk-tegra20.c | |||
| @@ -574,6 +574,8 @@ static struct tegra_clk tegra20_clks[tegra_clk_max] __initdata = { | |||
| 574 | [tegra_clk_tvdac] = { .dt_id = TEGRA20_CLK_TVDAC, .present = true }, | 574 | [tegra_clk_tvdac] = { .dt_id = TEGRA20_CLK_TVDAC, .present = true }, |
| 575 | [tegra_clk_vi_sensor] = { .dt_id = TEGRA20_CLK_VI_SENSOR, .present = true }, | 575 | [tegra_clk_vi_sensor] = { .dt_id = TEGRA20_CLK_VI_SENSOR, .present = true }, |
| 576 | [tegra_clk_afi] = { .dt_id = TEGRA20_CLK_AFI, .present = true }, | 576 | [tegra_clk_afi] = { .dt_id = TEGRA20_CLK_AFI, .present = true }, |
| 577 | [tegra_clk_fuse] = { .dt_id = TEGRA20_CLK_FUSE, .present = true }, | ||
| 578 | [tegra_clk_kfuse] = { .dt_id = TEGRA20_CLK_KFUSE, .present = true }, | ||
| 577 | }; | 579 | }; |
| 578 | 580 | ||
| 579 | static unsigned long tegra20_clk_measure_input_freq(void) | 581 | static unsigned long tegra20_clk_measure_input_freq(void) |
diff --git a/include/dt-bindings/clock/tegra124-car.h b/include/dt-bindings/clock/tegra124-car.h index a1116a3b54ef..8c1603b10665 100644 --- a/include/dt-bindings/clock/tegra124-car.h +++ b/include/dt-bindings/clock/tegra124-car.h | |||
| @@ -36,10 +36,10 @@ | |||
| 36 | #define TEGRA124_CLK_PWM 17 | 36 | #define TEGRA124_CLK_PWM 17 |
| 37 | #define TEGRA124_CLK_I2S2 18 | 37 | #define TEGRA124_CLK_I2S2 18 |
| 38 | /* 20 (register bit affects vi and vi_sensor) */ | 38 | /* 20 (register bit affects vi and vi_sensor) */ |
| 39 | #define TEGRA124_CLK_GR_2D 21 | 39 | /* 21 */ |
| 40 | #define TEGRA124_CLK_USBD 22 | 40 | #define TEGRA124_CLK_USBD 22 |
| 41 | #define TEGRA124_CLK_ISP 23 | 41 | #define TEGRA124_CLK_ISP 23 |
| 42 | #define TEGRA124_CLK_GR_3D 24 | 42 | /* 26 */ |
| 43 | /* 25 */ | 43 | /* 25 */ |
| 44 | #define TEGRA124_CLK_DISP2 26 | 44 | #define TEGRA124_CLK_DISP2 26 |
| 45 | #define TEGRA124_CLK_DISP1 27 | 45 | #define TEGRA124_CLK_DISP1 27 |
