ASoC: wcd9xxx: Add gpio control for micbias-supply for SXR1120
SXR1120 has additional gpio for micbias supply to be enabled. Add control for this gpio and enable it. Change-Id: Ica4ea9765db9bd48a1f8eb010d82d2687c8abbb9 Signed-off-by: Vatsal Bucha <vbucha@codeaurora.org>
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright (c) 2011-2017, The Linux Foundation. All rights reserved.
|
/* Copyright (c) 2011-2018, The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License version 2 and
|
||||||
@@ -180,7 +180,9 @@ struct wcd9xxx_pdata {
|
|||||||
int num_irqs;
|
int num_irqs;
|
||||||
int reset_gpio;
|
int reset_gpio;
|
||||||
bool has_buck_vsel_gpio;
|
bool has_buck_vsel_gpio;
|
||||||
|
bool has_micb_supply_en_gpio;
|
||||||
struct device_node *buck_vsel_ctl_np;
|
struct device_node *buck_vsel_ctl_np;
|
||||||
|
struct device_node *micb_en_ctl;
|
||||||
struct device_node *wcd_rst_np;
|
struct device_node *wcd_rst_np;
|
||||||
struct wcd9xxx_amic amic_settings;
|
struct wcd9xxx_amic amic_settings;
|
||||||
struct slim_device slimbus_slave_device;
|
struct slim_device slimbus_slave_device;
|
||||||
|
@@ -1289,6 +1289,9 @@ static int wcd9xxx_slim_probe(struct slim_device *slim)
|
|||||||
if (pdata->has_buck_vsel_gpio)
|
if (pdata->has_buck_vsel_gpio)
|
||||||
msm_cdc_pinctrl_select_active_state(pdata->buck_vsel_ctl_np);
|
msm_cdc_pinctrl_select_active_state(pdata->buck_vsel_ctl_np);
|
||||||
|
|
||||||
|
if (pdata->has_micb_supply_en_gpio)
|
||||||
|
msm_cdc_pinctrl_select_active_state(pdata->micb_en_ctl);
|
||||||
|
|
||||||
device_id = slim_get_device_id(slim);
|
device_id = slim_get_device_id(slim);
|
||||||
if (!device_id) {
|
if (!device_id) {
|
||||||
dev_err(&slim->dev, "%s: Error, no device id\n", __func__);
|
dev_err(&slim->dev, "%s: Error, no device id\n", __func__);
|
||||||
|
@@ -365,6 +365,19 @@ struct wcd9xxx_pdata *wcd9xxx_populate_dt_data(struct device *dev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pdata->has_micb_supply_en_gpio = of_property_read_bool(dev->of_node,
|
||||||
|
"qcom,has-micbias-supply-en-gpio");
|
||||||
|
if (pdata->has_micb_supply_en_gpio) {
|
||||||
|
pdata->micb_en_ctl = of_parse_phandle(dev->of_node,
|
||||||
|
"qcom,micbias-supply-en-gpio-node", 0);
|
||||||
|
if (!pdata->micb_en_ctl) {
|
||||||
|
dev_err(dev, "%s No entry for %s property in node %s\n",
|
||||||
|
__func__, "qcom,micbias-supply-en-gpio-node",
|
||||||
|
dev->of_node->full_name);
|
||||||
|
goto err_parse_dt_prop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!(wcd9xxx_read_of_property_u32(dev, "qcom,cdc-mclk-clk-rate",
|
if (!(wcd9xxx_read_of_property_u32(dev, "qcom,cdc-mclk-clk-rate",
|
||||||
&prop_val)))
|
&prop_val)))
|
||||||
pdata->mclk_rate = prop_val;
|
pdata->mclk_rate = prop_val;
|
||||||
|
Reference in New Issue
Block a user