From ccdb91522ab2a168b0e944e60c4f346def9330b1 Mon Sep 17 00:00:00 2001 From: Xiaoyu Ye Date: Thu, 6 Dec 2018 15:14:02 -0800 Subject: [PATCH] asoc: bolero: add support to enable VA MCLK MUX select on Kona VA macro is currently lacking capability to dynamically select MCLK on Kona. Add support in VA macro driver to read MUX select property from DT to enable dynamic MCLK MUX select. Change-Id: I46d0b760119a2d8c2ed754ae9cb43ba717fa300b Signed-off-by: Xiaoyu Ye --- asoc/codecs/bolero/va-macro.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/asoc/codecs/bolero/va-macro.c b/asoc/codecs/bolero/va-macro.c index da68da847e30..db078e2a6cdf 100644 --- a/asoc/codecs/bolero/va-macro.c +++ b/asoc/codecs/bolero/va-macro.c @@ -138,6 +138,7 @@ static int va_macro_mclk_enable(struct va_macro_priv *va_priv, { struct regmap *regmap = dev_get_regmap(va_priv->dev->parent, NULL); int ret = 0; + u16 mclk_mux_sel = MCLK_MUX0; if (regmap == NULL) { dev_err(va_priv->dev, "%s: regmap is NULL\n", __func__); @@ -148,10 +149,21 @@ static int va_macro_mclk_enable(struct va_macro_priv *va_priv, __func__, mclk_enable, dapm, va_priv->va_mclk_users); mutex_lock(&va_priv->mclk_lock); + if (of_property_read_u16(va_priv->dev->of_node, + "qcom,va-clk-mux-select", &mclk_mux_sel)) + dev_dbg(va_priv->dev, + "%s: could not find %s entry in dt, use default\n", + __func__, "qcom,va-clk-mux-select"); + if (mclk_mux_sel != MCLK_MUX0 && mclk_mux_sel != MCLK_MUX1) { + dev_err(va_priv->dev, "%s: mclk_mux_sel: %d is invalid\n", + __func__, mclk_mux_sel); + return -EINVAL; + } + if (mclk_enable) { if (va_priv->va_mclk_users == 0) { ret = bolero_request_clock(va_priv->dev, - VA_MACRO, MCLK_MUX0, true); + VA_MACRO, mclk_mux_sel, true); if (ret < 0) { dev_err(va_priv->dev, "%s: va request clock en failed\n", @@ -192,7 +204,7 @@ static int va_macro_mclk_enable(struct va_macro_priv *va_priv, BOLERO_CDC_VA_CLK_RST_CTRL_MCLK_CONTROL, 0x01, 0x00); bolero_request_clock(va_priv->dev, - VA_MACRO, MCLK_MUX0, false); + VA_MACRO, mclk_mux_sel, false); } } exit: