diff --git a/Documentation/devicetree/bindings/sound/taiko_codec.txt b/Documentation/devicetree/bindings/sound/taiko_codec.txt index 9f3719b944c..96e3a61b74c 100644 --- a/Documentation/devicetree/bindings/sound/taiko_codec.txt +++ b/Documentation/devicetree/bindings/sound/taiko_codec.txt @@ -28,6 +28,10 @@ Required properties: - qcom,cdc-micbias2-cfilt-sel = cfilt to use for micbias2 (should be from 1 to 3). - qcom,cdc-micbias3-cfilt-sel = cfilt to use for micbias3 (should be from 1 to 3). - qcom,cdc-micbias4-cfilt-sel = cfilt to use for micbias4 (should be from 1 to 3). + - qcom,cdc-micbias1-ext-cap: Boolean. Enable micbias 1 external capacitor mode. + - qcom,cdc-micbias2-ext-cap: Boolean. Enable micbias 2 external capacitor mode. + - qcom,cdc-micbias3-ext-cap: Boolean. Enable micbias 3 external capacitor mode. + - qcom,cdc-micbias4-ext-cap: Boolean. Enable micbias 4 external capacitor mode. - qcom,cdc-slim-ifd-dev - namme of the codec slim interface device. - qcom,cdc-slim-ifd-elemental-addr - codec slimbus slave interface device @@ -76,6 +80,10 @@ taiko_codec { qcom,cdc-micbias2-cfilt-sel = <0x1>; qcom,cdc-micbias3-cfilt-sel = <0x2>; qcom,cdc-micbias4-cfilt-sel = <0x2>; + qcom,cdc-micbias1-ext-cap; + qcom,cdc-micbias2-ext-cap; + qcom,cdc-micbias3-ext-cap; + qcom,cdc-micbias4-ext-cap; qcom,cdc-slim-ifd = "taiko-slim-ifd"; qcom,cdc-slim-ifd-elemental-addr = [00 00 A0 00 17 02]; diff --git a/drivers/mfd/wcd9xxx-core.c b/drivers/mfd/wcd9xxx-core.c index 62f1a93299e..a8e40f76dee 100644 --- a/drivers/mfd/wcd9xxx-core.c +++ b/drivers/mfd/wcd9xxx-core.c @@ -988,6 +988,20 @@ static int wcd9xxx_dt_parse_micbias_info(struct device *dev, } micbias->bias4_cfilt_sel = (u8)prop_val; + /* micbias external cap */ + micbias->bias1_cap_mode = + (of_property_read_bool(dev->of_node, "qcom,cdc-micbias1-ext-cap") ? + MICBIAS_EXT_BYP_CAP : MICBIAS_NO_EXT_BYP_CAP); + micbias->bias2_cap_mode = + (of_property_read_bool(dev->of_node, "qcom,cdc-micbias2-ext-cap") ? + MICBIAS_EXT_BYP_CAP : MICBIAS_NO_EXT_BYP_CAP); + micbias->bias3_cap_mode = + (of_property_read_bool(dev->of_node, "qcom,cdc-micbias3-ext-cap") ? + MICBIAS_EXT_BYP_CAP : MICBIAS_NO_EXT_BYP_CAP); + micbias->bias4_cap_mode = + (of_property_read_bool(dev->of_node, "qcom,cdc-micbias4-ext-cap") ? + MICBIAS_EXT_BYP_CAP : MICBIAS_NO_EXT_BYP_CAP); + dev_dbg(dev, "ldoh_v %u cfilt1_mv %u cfilt2_mv %u cfilt3_mv %u", (u32)micbias->ldoh_v, (u32)micbias->cfilt1_mv, (u32)micbias->cfilt2_mv, (u32)micbias->cfilt3_mv); @@ -998,6 +1012,11 @@ static int wcd9xxx_dt_parse_micbias_info(struct device *dev, dev_dbg(dev, "bias3_cfilt_sel %u bias4_cfilt_sel %u\n", (u32)micbias->bias3_cfilt_sel, (u32)micbias->bias4_cfilt_sel); + dev_dbg(dev, "bias1_ext_cap %d bias2_ext_cap %d\n", + micbias->bias1_cap_mode, micbias->bias2_cap_mode); + dev_dbg(dev, "bias3_ext_cap %d bias4_ext_cap %d\n", + micbias->bias3_cap_mode, micbias->bias4_cap_mode); + return 0; }