|
@@ -59,10 +59,12 @@
|
|
|
|
|
|
#define WCD9XXX_MBHC_DEF_RLOADS 5
|
|
|
#define WCD9XXX_MBHC_DEF_BUTTONS 8
|
|
|
+#define ROULEUR_MBHC_DEF_BUTTONS 5
|
|
|
#define CODEC_EXT_CLK_RATE 9600000
|
|
|
#define ADSP_STATE_READY_TIMEOUT_MS 3000
|
|
|
#define DEV_NAME_STR_LEN 32
|
|
|
#define WCD_MBHC_HS_V_MAX 1600
|
|
|
+#define ROULEUR_MBHC_HS_V_MAX 1700
|
|
|
|
|
|
#define TDM_CHANNEL_MAX 8
|
|
|
#define DEV_NAME_STR_LEN 32
|
|
@@ -555,6 +557,7 @@ static int dmic_0_1_gpio_cnt;
|
|
|
static int dmic_2_3_gpio_cnt;
|
|
|
|
|
|
static void *def_wcd_mbhc_cal(void);
|
|
|
+static void *def_rouleur_mbhc_cal(void);
|
|
|
|
|
|
/*
|
|
|
* Need to report LINEIN
|
|
@@ -4389,6 +4392,34 @@ static void *def_wcd_mbhc_cal(void)
|
|
|
return wcd_mbhc_cal;
|
|
|
}
|
|
|
|
|
|
+static void *def_rouleur_mbhc_cal(void)
|
|
|
+{
|
|
|
+ void *wcd_mbhc_cal;
|
|
|
+ struct wcd_mbhc_btn_detect_cfg *btn_cfg;
|
|
|
+ u16 *btn_high;
|
|
|
+
|
|
|
+ wcd_mbhc_cal = kzalloc(WCD_MBHC_CAL_SIZE(ROULEUR_MBHC_DEF_BUTTONS,
|
|
|
+ WCD9XXX_MBHC_DEF_RLOADS), GFP_KERNEL);
|
|
|
+ if (!wcd_mbhc_cal)
|
|
|
+ return NULL;
|
|
|
+
|
|
|
+ WCD_MBHC_CAL_PLUG_TYPE_PTR(wcd_mbhc_cal)->v_hs_max =
|
|
|
+ ROULEUR_MBHC_HS_V_MAX;
|
|
|
+ WCD_MBHC_CAL_BTN_DET_PTR(wcd_mbhc_cal)->num_btn =
|
|
|
+ ROULEUR_MBHC_DEF_BUTTONS;
|
|
|
+ btn_cfg = WCD_MBHC_CAL_BTN_DET_PTR(wcd_mbhc_cal);
|
|
|
+ btn_high = ((void *)&btn_cfg->_v_btn_low) +
|
|
|
+ (sizeof(btn_cfg->_v_btn_low[0]) * btn_cfg->num_btn);
|
|
|
+
|
|
|
+ btn_high[0] = 75;
|
|
|
+ btn_high[1] = 150;
|
|
|
+ btn_high[2] = 237;
|
|
|
+ btn_high[3] = 500;
|
|
|
+ btn_high[4] = 500;
|
|
|
+
|
|
|
+ return wcd_mbhc_cal;
|
|
|
+}
|
|
|
+
|
|
|
/* Digital audio interface glue - connects codec <---> CPU */
|
|
|
static struct snd_soc_dai_link msm_common_dai_links[] = {
|
|
|
/* FrontEnd DAI Links */
|
|
@@ -6175,16 +6206,21 @@ static int msm_aux_codec_init(struct snd_soc_component *component)
|
|
|
}
|
|
|
|
|
|
mbhc_cfg_cal:
|
|
|
- mbhc_calibration = def_wcd_mbhc_cal();
|
|
|
- if (!mbhc_calibration)
|
|
|
- return -ENOMEM;
|
|
|
- wcd_mbhc_cfg.calibration = mbhc_calibration;
|
|
|
if (data != NULL) {
|
|
|
- if (!strncmp(data, "wcd937x", sizeof("wcd937x")))
|
|
|
- ret = wcd937x_mbhc_hs_detect(component, &wcd_mbhc_cfg);
|
|
|
- else if (!strncmp( data, "rouleur", sizeof("rouleur")))
|
|
|
- ret = rouleur_mbhc_hs_detect(component, &wcd_mbhc_cfg);
|
|
|
- }
|
|
|
+ if (!strncmp(data, "wcd937x", sizeof("wcd937x"))) {
|
|
|
+ mbhc_calibration = def_wcd_mbhc_cal();
|
|
|
+ if (!mbhc_calibration)
|
|
|
+ return -ENOMEM;
|
|
|
+ wcd_mbhc_cfg.calibration = mbhc_calibration;
|
|
|
+ ret = wcd937x_mbhc_hs_detect(component, &wcd_mbhc_cfg);
|
|
|
+ } else if (!strncmp( data, "rouleur", sizeof("rouleur"))) {
|
|
|
+ mbhc_calibration = def_rouleur_mbhc_cal();
|
|
|
+ if (!mbhc_calibration)
|
|
|
+ return -ENOMEM;
|
|
|
+ wcd_mbhc_cfg.calibration = mbhc_calibration;
|
|
|
+ ret = rouleur_mbhc_hs_detect(component, &wcd_mbhc_cfg);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (ret) {
|
|
|
dev_err(component->dev, "%s: mbhc hs detect failed, err:%d\n",
|