Commit ba857b21 authored by Stephen Boyd's avatar Stephen Boyd

Merge branch 'clk-fixes' into clk-kconfig

Need to merge this up to get the IOMEM dependency patch on top that is
broken and fixed in the next commit.

* clk-fixes:
  clk: Specify IOMEM dependency for HSDK pll driver
  clk: AST2600: Add mux for EMMC clock
  clk: mvebu: ARMADA_AP_CPU_CLK needs to select ARMADA_AP_CP_HELPER
parents b545b9c3 1e7468bd
...@@ -50,6 +50,7 @@ source "drivers/clk/versatile/Kconfig" ...@@ -50,6 +50,7 @@ source "drivers/clk/versatile/Kconfig"
config CLK_HSDK config CLK_HSDK
bool "PLL Driver for HSDK platform" bool "PLL Driver for HSDK platform"
depends on OF || COMPILE_TEST depends on OF || COMPILE_TEST
depends on IOMEM
help help
This driver supports the HSDK core, system, ddr, tunnel and hdmi PLLs This driver supports the HSDK core, system, ddr, tunnel and hdmi PLLs
control. control.
......
...@@ -131,6 +131,18 @@ static const struct clk_div_table ast2600_eclk_div_table[] = { ...@@ -131,6 +131,18 @@ static const struct clk_div_table ast2600_eclk_div_table[] = {
{ 0 } { 0 }
}; };
static const struct clk_div_table ast2600_emmc_extclk_div_table[] = {
{ 0x0, 2 },
{ 0x1, 4 },
{ 0x2, 6 },
{ 0x3, 8 },
{ 0x4, 10 },
{ 0x5, 12 },
{ 0x6, 14 },
{ 0x7, 16 },
{ 0 }
};
static const struct clk_div_table ast2600_mac_div_table[] = { static const struct clk_div_table ast2600_mac_div_table[] = {
{ 0x0, 4 }, { 0x0, 4 },
{ 0x1, 4 }, { 0x1, 4 },
...@@ -390,6 +402,11 @@ static struct clk_hw *aspeed_g6_clk_hw_register_gate(struct device *dev, ...@@ -390,6 +402,11 @@ static struct clk_hw *aspeed_g6_clk_hw_register_gate(struct device *dev,
return hw; return hw;
} }
static const char *const emmc_extclk_parent_names[] = {
"emmc_extclk_hpll_in",
"mpll",
};
static const char * const vclk_parent_names[] = { static const char * const vclk_parent_names[] = {
"dpll", "dpll",
"d1pll", "d1pll",
...@@ -459,16 +476,32 @@ static int aspeed_g6_clk_probe(struct platform_device *pdev) ...@@ -459,16 +476,32 @@ static int aspeed_g6_clk_probe(struct platform_device *pdev)
return PTR_ERR(hw); return PTR_ERR(hw);
aspeed_g6_clk_data->hws[ASPEED_CLK_UARTX] = hw; aspeed_g6_clk_data->hws[ASPEED_CLK_UARTX] = hw;
/* EMMC ext clock divider */ /* EMMC ext clock */
hw = clk_hw_register_gate(dev, "emmc_extclk_gate", "hpll", 0, hw = clk_hw_register_fixed_factor(dev, "emmc_extclk_hpll_in", "hpll",
scu_g6_base + ASPEED_G6_CLK_SELECTION1, 15, 0, 0, 1, 2);
&aspeed_g6_clk_lock);
if (IS_ERR(hw)) if (IS_ERR(hw))
return PTR_ERR(hw); return PTR_ERR(hw);
hw = clk_hw_register_divider_table(dev, "emmc_extclk", "emmc_extclk_gate", 0,
scu_g6_base + ASPEED_G6_CLK_SELECTION1, 12, 3, 0, hw = clk_hw_register_mux(dev, "emmc_extclk_mux",
ast2600_div_table, emmc_extclk_parent_names,
&aspeed_g6_clk_lock); ARRAY_SIZE(emmc_extclk_parent_names), 0,
scu_g6_base + ASPEED_G6_CLK_SELECTION1, 11, 1,
0, &aspeed_g6_clk_lock);
if (IS_ERR(hw))
return PTR_ERR(hw);
hw = clk_hw_register_gate(dev, "emmc_extclk_gate", "emmc_extclk_mux",
0, scu_g6_base + ASPEED_G6_CLK_SELECTION1,
15, 0, &aspeed_g6_clk_lock);
if (IS_ERR(hw))
return PTR_ERR(hw);
hw = clk_hw_register_divider_table(dev, "emmc_extclk",
"emmc_extclk_gate", 0,
scu_g6_base +
ASPEED_G6_CLK_SELECTION1, 12,
3, 0, ast2600_emmc_extclk_div_table,
&aspeed_g6_clk_lock);
if (IS_ERR(hw)) if (IS_ERR(hw))
return PTR_ERR(hw); return PTR_ERR(hw);
aspeed_g6_clk_data->hws[ASPEED_CLK_EMMC] = hw; aspeed_g6_clk_data->hws[ASPEED_CLK_EMMC] = hw;
......
...@@ -42,6 +42,7 @@ config ARMADA_AP806_SYSCON ...@@ -42,6 +42,7 @@ config ARMADA_AP806_SYSCON
config ARMADA_AP_CPU_CLK config ARMADA_AP_CPU_CLK
bool bool
select ARMADA_AP_CP_HELPER
config ARMADA_CP110_SYSCON config ARMADA_CP110_SYSCON
bool bool
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment