diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-07-18 13:05:23 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-07-18 13:05:23 -0700 |
| commit | c4873787c3ee5bbbf33082273cbce2f7c8dc16de (patch) | |
| tree | 9fb7495f9e987def5c2ec8edbc546af5367eaeba | |
| parent | 5effe5f433a82337154793adb95005f6bbfdc420 (diff) | |
| parent | 5bd34e1e583faf0991d0b9530d7432ba1ccda0b3 (diff) | |
Merge "ASoC: aud-ext-clk: enable lnbbclk2 for tavil"
| -rw-r--r-- | include/dt-bindings/clock/audio-ext-clk.h | 1 | ||||
| -rwxr-xr-x | sound/soc/codecs/audio-ext-clk.c | 72 |
2 files changed, 45 insertions, 28 deletions
diff --git a/include/dt-bindings/clock/audio-ext-clk.h b/include/dt-bindings/clock/audio-ext-clk.h index 4945d6956293..6e4932342751 100644 --- a/include/dt-bindings/clock/audio-ext-clk.h +++ b/include/dt-bindings/clock/audio-ext-clk.h @@ -18,4 +18,5 @@ #define clk_audio_pmi_clk 0xcbfe416d #define clk_audio_ap_clk2 0x454d1e91 #define clk_audio_lpass_mclk 0xf0f2a284 +#define clk_audio_pmi_lnbb_clk 0x57312343 #endif diff --git a/sound/soc/codecs/audio-ext-clk.c b/sound/soc/codecs/audio-ext-clk.c index 2d7e55f69990..7faabcfb1db1 100755 --- a/sound/soc/codecs/audio-ext-clk.c +++ b/sound/soc/codecs/audio-ext-clk.c @@ -146,6 +146,15 @@ static struct audio_ext_pmi_clk audio_pmi_clk = { }, }; +static struct audio_ext_pmi_clk audio_pmi_lnbb_clk = { + .gpio = -EINVAL, + .c = { + .dbg_name = "audio_ext_pmi_lnbb_clk", + .ops = &clk_ops_dummy, + CLK_INIT(audio_pmi_lnbb_clk.c), + }, +}; + static struct audio_ext_ap_clk audio_ap_clk = { .gpio = -EINVAL, .c = { @@ -166,6 +175,7 @@ static struct audio_ext_ap_clk2 audio_ap_clk2 = { static struct clk_lookup audio_ref_clock[] = { CLK_LIST(audio_ap_clk), CLK_LIST(audio_pmi_clk), + CLK_LIST(audio_pmi_lnbb_clk), CLK_LIST(audio_ap_clk2), }; @@ -216,38 +226,44 @@ static int audio_ref_clk_probe(struct platform_device *pdev) { int clk_gpio; int ret; - struct clk *div_clk1; + struct clk *audio_clk; clk_gpio = of_get_named_gpio(pdev->dev.of_node, "qcom,audio-ref-clk-gpio", 0); - if (clk_gpio < 0) { - dev_err(&pdev->dev, - "Looking up %s property in node %s failed %d\n", - "qcom,audio-ref-clk-gpio", - pdev->dev.of_node->full_name, - clk_gpio); - ret = -EINVAL; - goto err; - } - ret = gpio_request(clk_gpio, "EXT_CLK"); - if (ret) { - dev_err(&pdev->dev, - "Request ext clk gpio failed %d, err:%d\n", - clk_gpio, ret); - goto err; - } - if (of_property_read_bool(pdev->dev.of_node, - "qcom,node_has_rpm_clock")) { - div_clk1 = clk_get(&pdev->dev, "osr_clk"); - if (IS_ERR(div_clk1)) { - dev_err(&pdev->dev, "Failed to get RPM div clk\n"); - ret = PTR_ERR(div_clk1); - goto err_gpio; + if (clk_gpio > 0) { + ret = gpio_request(clk_gpio, "EXT_CLK"); + if (ret) { + dev_err(&pdev->dev, + "Request ext clk gpio failed %d, err:%d\n", + clk_gpio, ret); + goto err; + } + if (of_property_read_bool(pdev->dev.of_node, + "qcom,node_has_rpm_clock")) { + audio_clk = clk_get(&pdev->dev, NULL); + if (IS_ERR(audio_clk)) { + dev_err(&pdev->dev, "Failed to get RPM div clk\n"); + ret = PTR_ERR(audio_clk); + goto err_gpio; + } + audio_pmi_clk.c.parent = audio_clk; + audio_pmi_clk.gpio = clk_gpio; + } else + audio_ap_clk.gpio = clk_gpio; + + } else { + if (of_property_read_bool(pdev->dev.of_node, + "qcom,node_has_rpm_clock")) { + audio_clk = clk_get(&pdev->dev, NULL); + if (IS_ERR(audio_clk)) { + dev_err(&pdev->dev, "Failed to get lnbbclk2\n"); + ret = PTR_ERR(audio_clk); + goto err; + } + audio_pmi_lnbb_clk.c.parent = audio_clk; + audio_pmi_lnbb_clk.gpio = -EINVAL; } - audio_pmi_clk.c.parent = div_clk1; - audio_pmi_clk.gpio = clk_gpio; - } else - audio_ap_clk.gpio = clk_gpio; + } ret = audio_get_pinctrl(pdev); if (ret) |
