aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/clk/shmobile/clk-rcar-gen2.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/clk/shmobile/clk-rcar-gen2.c b/drivers/clk/shmobile/clk-rcar-gen2.c
index a59ec217a124..8c7bcbd727df 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 ? 16 : 20;
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")) {