Loading Documentation/devicetree/bindings/sound/qcom-audio-dev.txt +5 −0 Original line number Diff line number Diff line Loading @@ -1663,6 +1663,10 @@ mclk frequency needs to be configured for internal and external PA. - qcom,cdc-comp-gpios : phandle for compander gpios. - qcom,cdc-dmic-gpios : phandle for Digital mic clk and data gpios. - qcom,cdc-sdw-gpios : phandle for soundwire clk and data gpios. - qcom,msm-mbhc-moist-cfg: This property is used to set moisture detection threshold values for different codecs. First parameter is V(voltage) second one is i(current), third one is r (resistance). Depending on the codec set corresponding element in array and set others to 0. Example: sound { Loading @@ -1671,6 +1675,7 @@ Example: qcom,msm-mclk-freq = <9600000>; qcom,msm-mbhc-hphl-swh = <0>; qcom,msm-mbhc-gnd-swh = <0>; qcom,msm-mbhc-moist-cfg = <1>, <3>, <0>; qcom,msm-hs-micbias-type = "internal"; qcom,msm-micbias1-ext-cap; qcom,audio-routing = Loading sound/soc/codecs/wcd-mbhc-v2.c +17 −1 Original line number Diff line number Diff line /* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -2380,6 +2380,7 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, int ret = 0; int hph_swh = 0; int gnd_swh = 0; u32 hph_moist_config[3]; struct snd_soc_card *card = codec->component.card; const char *hph_switch = "qcom,msm-mbhc-hphl-swh"; const char *gnd_switch = "qcom,msm-mbhc-gnd-swh"; Loading @@ -2400,6 +2401,21 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, goto err; } ret = of_property_read_u32_array(card->dev->of_node, "qcom,msm-mbhc-moist-cfg", hph_moist_config, 3); if (ret) { dev_dbg(card->dev, "%s: no qcom,msm-mbhc-moist-cfg in DT\n", __func__); mbhc->moist_vref = V_45_MV; mbhc->moist_iref = I_3P0_UA; mbhc->moist_rref = R_24_KOHM; } else { mbhc->moist_vref = hph_moist_config[0]; mbhc->moist_iref = hph_moist_config[1]; mbhc->moist_rref = hph_moist_config[2]; } mbhc->in_swch_irq_handler = false; mbhc->current_plug = MBHC_PLUG_TYPE_NONE; mbhc->is_btn_press = false; Loading sound/soc/codecs/wcd-mbhc-v2.h +4 −1 Original line number Diff line number Diff line /* Copyright (c) 2014-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -393,6 +393,9 @@ struct wcd_mbhc { bool in_swch_irq_handler; bool hphl_swh; /*track HPHL switch NC / NO */ bool gnd_swh; /*track GND switch NC / NO */ u32 moist_vref; u32 moist_iref; u32 moist_rref; u8 micbias1_cap_mode; /* track ext cap setting */ u8 micbias2_cap_mode; /* track ext cap setting */ bool hs_detect_work_stop; Loading sound/soc/codecs/wcd9335.c +4 −4 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -2202,7 +2202,7 @@ static void tasha_mbhc_moisture_config(struct wcd_mbhc *mbhc) { struct snd_soc_codec *codec = mbhc->codec; if (TASHA_MBHC_MOISTURE_VREF == V_OFF) if (mbhc->moist_vref == V_OFF) return; /* Donot enable moisture detection if jack type is NC */ Loading @@ -2213,8 +2213,8 @@ static void tasha_mbhc_moisture_config(struct wcd_mbhc *mbhc) } snd_soc_update_bits(codec, WCD9335_MBHC_CTL_2, 0x0C, TASHA_MBHC_MOISTURE_VREF << 2); tasha_mbhc_hph_l_pull_up_control(codec, TASHA_MBHC_MOISTURE_IREF); 0x0C, mbhc->moist_vref << 2); tasha_mbhc_hph_l_pull_up_control(codec, mbhc->moist_iref); } static const struct wcd_mbhc_cb mbhc_cb = { Loading sound/soc/codecs/wcd934x/wcd934x-mbhc.c +3 −3 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -772,7 +772,7 @@ static void tavil_mbhc_moisture_config(struct wcd_mbhc *mbhc) { struct snd_soc_codec *codec = mbhc->codec; if (TAVIL_MBHC_MOISTURE_RREF == R_OFF) if (mbhc->moist_rref == R_OFF) return; /* Donot enable moisture detection if jack type is NC */ Loading @@ -783,7 +783,7 @@ static void tavil_mbhc_moisture_config(struct wcd_mbhc *mbhc) } snd_soc_update_bits(codec, WCD934X_MBHC_NEW_CTL_2, 0x0C, TAVIL_MBHC_MOISTURE_RREF << 2); 0x0C, mbhc->moist_rref << 2); } static bool tavil_hph_register_recovery(struct wcd_mbhc *mbhc) Loading Loading
Documentation/devicetree/bindings/sound/qcom-audio-dev.txt +5 −0 Original line number Diff line number Diff line Loading @@ -1663,6 +1663,10 @@ mclk frequency needs to be configured for internal and external PA. - qcom,cdc-comp-gpios : phandle for compander gpios. - qcom,cdc-dmic-gpios : phandle for Digital mic clk and data gpios. - qcom,cdc-sdw-gpios : phandle for soundwire clk and data gpios. - qcom,msm-mbhc-moist-cfg: This property is used to set moisture detection threshold values for different codecs. First parameter is V(voltage) second one is i(current), third one is r (resistance). Depending on the codec set corresponding element in array and set others to 0. Example: sound { Loading @@ -1671,6 +1675,7 @@ Example: qcom,msm-mclk-freq = <9600000>; qcom,msm-mbhc-hphl-swh = <0>; qcom,msm-mbhc-gnd-swh = <0>; qcom,msm-mbhc-moist-cfg = <1>, <3>, <0>; qcom,msm-hs-micbias-type = "internal"; qcom,msm-micbias1-ext-cap; qcom,audio-routing = Loading
sound/soc/codecs/wcd-mbhc-v2.c +17 −1 Original line number Diff line number Diff line /* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -2380,6 +2380,7 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, int ret = 0; int hph_swh = 0; int gnd_swh = 0; u32 hph_moist_config[3]; struct snd_soc_card *card = codec->component.card; const char *hph_switch = "qcom,msm-mbhc-hphl-swh"; const char *gnd_switch = "qcom,msm-mbhc-gnd-swh"; Loading @@ -2400,6 +2401,21 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, goto err; } ret = of_property_read_u32_array(card->dev->of_node, "qcom,msm-mbhc-moist-cfg", hph_moist_config, 3); if (ret) { dev_dbg(card->dev, "%s: no qcom,msm-mbhc-moist-cfg in DT\n", __func__); mbhc->moist_vref = V_45_MV; mbhc->moist_iref = I_3P0_UA; mbhc->moist_rref = R_24_KOHM; } else { mbhc->moist_vref = hph_moist_config[0]; mbhc->moist_iref = hph_moist_config[1]; mbhc->moist_rref = hph_moist_config[2]; } mbhc->in_swch_irq_handler = false; mbhc->current_plug = MBHC_PLUG_TYPE_NONE; mbhc->is_btn_press = false; Loading
sound/soc/codecs/wcd-mbhc-v2.h +4 −1 Original line number Diff line number Diff line /* Copyright (c) 2014-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -393,6 +393,9 @@ struct wcd_mbhc { bool in_swch_irq_handler; bool hphl_swh; /*track HPHL switch NC / NO */ bool gnd_swh; /*track GND switch NC / NO */ u32 moist_vref; u32 moist_iref; u32 moist_rref; u8 micbias1_cap_mode; /* track ext cap setting */ u8 micbias2_cap_mode; /* track ext cap setting */ bool hs_detect_work_stop; Loading
sound/soc/codecs/wcd9335.c +4 −4 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -2202,7 +2202,7 @@ static void tasha_mbhc_moisture_config(struct wcd_mbhc *mbhc) { struct snd_soc_codec *codec = mbhc->codec; if (TASHA_MBHC_MOISTURE_VREF == V_OFF) if (mbhc->moist_vref == V_OFF) return; /* Donot enable moisture detection if jack type is NC */ Loading @@ -2213,8 +2213,8 @@ static void tasha_mbhc_moisture_config(struct wcd_mbhc *mbhc) } snd_soc_update_bits(codec, WCD9335_MBHC_CTL_2, 0x0C, TASHA_MBHC_MOISTURE_VREF << 2); tasha_mbhc_hph_l_pull_up_control(codec, TASHA_MBHC_MOISTURE_IREF); 0x0C, mbhc->moist_vref << 2); tasha_mbhc_hph_l_pull_up_control(codec, mbhc->moist_iref); } static const struct wcd_mbhc_cb mbhc_cb = { Loading
sound/soc/codecs/wcd934x/wcd934x-mbhc.c +3 −3 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -772,7 +772,7 @@ static void tavil_mbhc_moisture_config(struct wcd_mbhc *mbhc) { struct snd_soc_codec *codec = mbhc->codec; if (TAVIL_MBHC_MOISTURE_RREF == R_OFF) if (mbhc->moist_rref == R_OFF) return; /* Donot enable moisture detection if jack type is NC */ Loading @@ -783,7 +783,7 @@ static void tavil_mbhc_moisture_config(struct wcd_mbhc *mbhc) } snd_soc_update_bits(codec, WCD934X_MBHC_NEW_CTL_2, 0x0C, TAVIL_MBHC_MOISTURE_RREF << 2); 0x0C, mbhc->moist_rref << 2); } static bool tavil_hph_register_recovery(struct wcd_mbhc *mbhc) Loading