ASoC: msm8x10-wcd: Update codec driver to use mbhc
Remove headset detection specific structure from the codec
so that the common headset detection module can be used.
Change-Id: Ibd20def87440c1949b423499db34e7faa7f8c5a2
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
(cherry picked from commit 6e75870ea7421c92da4402a2b364850d52da27eb)
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index c0469e3..56cd5e6 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -165,7 +165,7 @@
obj-$(CONFIG_SND_SOC_CS8427) += snd-soc-cs8427.o
obj-$(CONFIG_SND_SOC_WCD9320) += snd-soc-wcd9320.o
obj-$(CONFIG_SND_SOC_WCD9306) += snd-soc-wcd9306.o wcd9xxx-resmgr.o wcd9xxx-mbhc.o
-obj-$(CONFIG_SND_SOC_MSM8X10_WCD) += snd-soc-msm8x10-wcd.o wcd9xxx-resmgr.o
+obj-$(CONFIG_SND_SOC_MSM8X10_WCD) += snd-soc-msm8x10-wcd.o wcd9xxx-resmgr.o wcd9xxx-mbhc.o
obj-$(CONFIG_SND_SOC_WL1273) += snd-soc-wl1273.o
obj-$(CONFIG_SND_SOC_WM1250_EV1) += snd-soc-wm1250-ev1.o
obj-$(CONFIG_SND_SOC_WM2000) += snd-soc-wm2000.o
diff --git a/sound/soc/codecs/msm8x10-wcd.c b/sound/soc/codecs/msm8x10-wcd.c
index afeea1f..00f9f27 100644
--- a/sound/soc/codecs/msm8x10-wcd.c
+++ b/sound/soc/codecs/msm8x10-wcd.c
@@ -61,6 +61,7 @@
#define MAX_MSM8X10_WCD_DEVICE 4
#define CODEC_DT_MAX_PROP_SIZE 40
#define MAX_ON_DEMAND_SUPPLY_NAME_LENGTH 64
+#define HELICON_MCLK_CLK_9P6MHZ 9600000
enum {
MSM8X10_WCD_I2C_TOP_LEVEL = 0,
@@ -163,10 +164,11 @@
bool mclk_enabled;
bool clock_active;
bool config_mode_active;
- bool mbhc_polling_active;
struct on_demand_supply on_demand_list[ON_DEMAND_SUPPLIES_MAX];
/* resmgr module */
struct wcd9xxx_resmgr resmgr;
+ /* mbhc module */
+ struct wcd9xxx_mbhc mbhc;
};
static unsigned short rx_digital_gain_reg[] = {
@@ -2630,7 +2632,7 @@
}
int msm8x10_wcd_hs_detect(struct snd_soc_codec *codec,
- struct msm8x10_wcd_mbhc_config *mbhc_cfg)
+ struct wcd9xxx_mbhc_config *mbhc_cfg)
{
return 0;
}
@@ -2770,7 +2772,6 @@
msm8x10_wcd_priv->bandgap_type = MSM8X10_WCD_BANDGAP_OFF;
msm8x10_wcd_priv->clock_active = false;
msm8x10_wcd_priv->config_mode_active = false;
- msm8x10_wcd_priv->mbhc_polling_active = false;
registered_codec = codec;
adsp_state_notifier =
diff --git a/sound/soc/codecs/msm8x10-wcd.h b/sound/soc/codecs/msm8x10-wcd.h
index ec6782a..5f67cba 100644
--- a/sound/soc/codecs/msm8x10-wcd.h
+++ b/sound/soc/codecs/msm8x10-wcd.h
@@ -168,31 +168,6 @@
MSM8X10_WCD_MICBIAS1 = 0,
};
-struct msm8x10_wcd_mbhc_config {
- struct snd_soc_jack *headset_jack;
- struct snd_soc_jack *button_jack;
- bool read_fw_bin;
- /*
- * void* calibration contains:
- * struct msm8x10_wcd_mbhc_general_cfg generic;
- * struct msm8x10_wcd_mbhc_plug_detect_cfg plug_det;
- * struct msm8x10_wcd_mbhc_plug_type_cfg plug_type;
- * struct msm8x10_wcd_mbhc_btn_detect_cfg btn_det;
- * struct msm8x10_wcd_mbhc_imped_detect_cfg imped_det;
- * Note: various size depends on btn_det->num_btn
- */
- void *calibration;
- enum msm8x10_wcd_micbias_num micbias;
- int (*mclk_cb_fn) (struct snd_soc_codec*, int, bool);
- unsigned int mclk_rate;
- unsigned int gpio;
- unsigned int gpio_irq;
- int gpio_level_insert;
- bool detect_extn_cable;
- /* swap_gnd_mic returns true if extern GND/MIC swap switch toggled */
- bool (*swap_gnd_mic) (struct snd_soc_codec *);
-};
-
enum msm8x10_wcd_pm_state {
MSM8X10_WCD_PM_SLEEPABLE,
MSM8X10_WCD_PM_AWAKE,
@@ -226,6 +201,6 @@
extern int msm8x10_wcd_mclk_enable(struct snd_soc_codec *codec, int mclk_enable,
bool dapm);
extern int msm8x10_wcd_hs_detect(struct snd_soc_codec *codec,
- struct msm8x10_wcd_mbhc_config *mbhc_cfg);
+ struct wcd9xxx_mbhc_config *mbhc_cfg);
#endif