Commit 41ee7caf authored by Pierre-Louis Bossart's avatar Pierre-Louis Bossart Committed by Stephen Boyd

clk: x86: add "mclk" alias for Baytrail/Cherrytrail

Due to timing requirements, TI and Conexant manage the audio
reference clock from their ASoC codec drivers using the "mclk"
string. This patch adds another lookup for the "pmc_plt_clk_3"
clock to avoid Intel-specific tests in those codec drivers and
use code as-is.

To avoid a leak, clk_add_alias() is not used in this patch.
Instead the lookup is created manually as part of the .probe()
step and dropped in the .remove() step.

"pmc_plt_clk_3" is used exclusively for audio on all known
Baytrail/CherryTrail designs and is e.g. routed on the MCLK
(pin 26) of the MinnowBoardMAX Turbot LSE connector.
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
parent 8973aa4a
...@@ -54,6 +54,7 @@ struct clk_plt_data { ...@@ -54,6 +54,7 @@ struct clk_plt_data {
struct clk_plt_fixed **parents; struct clk_plt_fixed **parents;
u8 nparents; u8 nparents;
struct clk_plt *clks[PMC_CLK_NUM]; struct clk_plt *clks[PMC_CLK_NUM];
struct clk_lookup *mclk_lookup;
}; };
/* Return an index in parent table */ /* Return an index in parent table */
...@@ -337,6 +338,11 @@ static int plt_clk_probe(struct platform_device *pdev) ...@@ -337,6 +338,11 @@ static int plt_clk_probe(struct platform_device *pdev)
goto err_unreg_clk_plt; goto err_unreg_clk_plt;
} }
} }
data->mclk_lookup = clkdev_hw_create(&data->clks[3]->hw, "mclk", NULL);
if (IS_ERR(data->mclk_lookup)) {
err = PTR_ERR(data->mclk_lookup);
goto err_unreg_clk_plt;
}
plt_clk_free_parent_names_loop(parent_names, data->nparents); plt_clk_free_parent_names_loop(parent_names, data->nparents);
...@@ -356,6 +362,7 @@ static int plt_clk_remove(struct platform_device *pdev) ...@@ -356,6 +362,7 @@ static int plt_clk_remove(struct platform_device *pdev)
data = platform_get_drvdata(pdev); data = platform_get_drvdata(pdev);
clkdev_drop(data->mclk_lookup);
plt_clk_unregister_loop(data, PMC_CLK_NUM); plt_clk_unregister_loop(data, PMC_CLK_NUM);
plt_clk_unregister_parents(data); plt_clk_unregister_parents(data);
return 0; return 0;
......
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