Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a0147c6 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "asoc: Add a separate mbhc config for rouleur codec"

parents 0e7b0f8a 9f892d81
Loading
Loading
Loading
Loading
+45 −9
Original line number Diff line number Diff line
@@ -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
@@ -4344,6 +4347,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 */
@@ -6116,16 +6147,21 @@ static int msm_aux_codec_init(struct snd_soc_component *component)
	}

mbhc_cfg_cal:
        if (data != NULL) {
		if (!strncmp(data, "wcd937x", sizeof("wcd937x"))) {
			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")))
		} 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",