public inbox for alsa-devel@alsa-project.org
 help / color / mirror / Atom feed
* [PATCH 2/4] ASoC: rt5670: check if asrc is useable
  2014-11-12  6:21 bardliao
@ 2014-11-12  6:21 ` bardliao
  0 siblings, 0 replies; 9+ messages in thread
From: bardliao @ 2014-11-12  6:21 UTC (permalink / raw)
  To: broonie, lgirdwood
  Cc: oder_chiou, alsa-devel, lars, mengdong.lin, Bard Liao, yao.jin,
	flove

From: Bard Liao <bardliao@realtek.com>

To use ASRC, the sysclk should be faster than 384 times sample
rate of I2S1.

Signed-off-by: Bard Liao <bardliao@realtek.com>
---
 sound/soc/codecs/rt5670.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
index 85dc210..898b17f 100644
--- a/sound/soc/codecs/rt5670.c
+++ b/sound/soc/codecs/rt5670.c
@@ -575,6 +575,17 @@ static int is_using_asrc(struct snd_soc_dapm_widget *source,
 
 }
 
+static int can_use_asrc(struct snd_soc_dapm_widget *source,
+			 struct snd_soc_dapm_widget *sink)
+{
+	struct rt5670_priv *rt5670 = snd_soc_codec_get_drvdata(source->codec);
+
+	if (rt5670->sysclk > rt5670->lrck[RT5670_AIF1] * 384)
+		return 1;
+
+	return 0;
+}
+
 /* Digital Mixer */
 static const struct snd_kcontrol_new rt5670_sto1_adc_l_mix[] = {
 	SOC_DAPM_SINGLE("ADC1 Switch", RT5670_STO1_ADC_MIXER,
@@ -1638,8 +1649,8 @@ static const struct snd_soc_dapm_route rt5670_dapm_routes[] = {
 	{ "DAC Mono Right Filter", NULL, "DAC MONO R ASRC", is_using_asrc },
 	{ "DAC Stereo1 Filter", NULL, "DAC STO ASRC", is_using_asrc },
 
-	{ "I2S1", NULL, "I2S1 ASRC" },
-	{ "I2S2", NULL, "I2S2 ASRC" },
+	{ "I2S1", NULL, "I2S1 ASRC", can_use_asrc},
+	{ "I2S2", NULL, "I2S2 ASRC", can_use_asrc},
 
 	{ "DMIC1", NULL, "DMIC L1" },
 	{ "DMIC1", NULL, "DMIC R1" },
-- 
1.8.1.1.439.g50a6b54

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 1/4] ASoC: rt5670: make bias level more reasonable
@ 2014-11-12 11:54 bardliao
  2014-11-12 11:54 ` [PATCH 2/4] ASoC: rt5670: check if asrc is useable bardliao
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: bardliao @ 2014-11-12 11:54 UTC (permalink / raw)
  To: broonie, lgirdwood
  Cc: oder_chiou, alsa-devel, lars, mengdong.lin, Bard Liao, yao.jin,
	flove

From: Bard Liao <bardliao@realtek.com>

This patah separate bias level off to standby and off. The standby
level will provide the necessary power for JD and push button
functions.

Signed-off-by: Bard Liao <bardliao@realtek.com>
---
 sound/soc/codecs/rt5670.c | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
index c4c42d5..85dc210 100644
--- a/sound/soc/codecs/rt5670.c
+++ b/sound/soc/codecs/rt5670.c
@@ -2309,6 +2309,8 @@ static int rt5670_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
 static int rt5670_set_bias_level(struct snd_soc_codec *codec,
 			enum snd_soc_bias_level level)
 {
+	struct rt5670_priv *rt5670 = snd_soc_codec_get_drvdata(codec);
+
 	switch (level) {
 	case SND_SOC_BIAS_PREPARE:
 		if (SND_SOC_BIAS_STANDBY == codec->dapm.bias_level) {
@@ -2330,16 +2332,27 @@ static int rt5670_set_bias_level(struct snd_soc_codec *codec,
 		}
 		break;
 	case SND_SOC_BIAS_STANDBY:
-		snd_soc_write(codec, RT5670_PWR_DIG1, 0x0000);
-		snd_soc_write(codec, RT5670_PWR_DIG2, 0x0001);
-		snd_soc_write(codec, RT5670_PWR_VOL, 0x0000);
-		snd_soc_write(codec, RT5670_PWR_MIXER, 0x0001);
-		snd_soc_write(codec, RT5670_PWR_ANLG1, 0x2800);
-		snd_soc_write(codec, RT5670_PWR_ANLG2, 0x0004);
-		snd_soc_update_bits(codec, RT5670_DIG_MISC, 0x1, 0x0);
+		snd_soc_update_bits(codec, RT5670_PWR_ANLG1,
+				RT5670_PWR_VREF1 | RT5670_PWR_VREF2 |
+				RT5670_PWR_FV1 | RT5670_PWR_FV2, 0);
 		snd_soc_update_bits(codec, RT5670_PWR_ANLG1,
 				RT5670_LDO_SEL_MASK, 0x1);
 		break;
+	case SND_SOC_BIAS_OFF:
+		if (rt5670->pdata.jd_mode)
+			snd_soc_update_bits(codec, RT5670_PWR_ANLG1,
+				RT5670_PWR_VREF1 | RT5670_PWR_MB |
+				RT5670_PWR_BG | RT5670_PWR_VREF2 |
+				RT5670_PWR_FV1 | RT5670_PWR_FV2,
+				RT5670_PWR_MB | RT5670_PWR_BG);
+		else
+			snd_soc_update_bits(codec, RT5670_PWR_ANLG1,
+				RT5670_PWR_VREF1 | RT5670_PWR_MB |
+				RT5670_PWR_BG | RT5670_PWR_VREF2 |
+				RT5670_PWR_FV1 | RT5670_PWR_FV2, 0);
+
+		snd_soc_update_bits(codec, RT5670_DIG_MISC, 0x1, 0x0);
+		break;
 
 	default:
 		break;
-- 
1.8.1.1.439.g50a6b54

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/4] ASoC: rt5670: check if asrc is useable
  2014-11-12 11:54 [PATCH 1/4] ASoC: rt5670: make bias level more reasonable bardliao
@ 2014-11-12 11:54 ` bardliao
  2014-11-12 19:42   ` Lars-Peter Clausen
  2014-11-12 11:54 ` [PATCH 3/4] ASoC: rt5670: add DMIC ASRC support bardliao
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: bardliao @ 2014-11-12 11:54 UTC (permalink / raw)
  To: broonie, lgirdwood
  Cc: oder_chiou, alsa-devel, lars, mengdong.lin, Bard Liao, yao.jin,
	flove

From: Bard Liao <bardliao@realtek.com>

To use ASRC, the sysclk should be faster than 384 times sample
rate of I2S1.

Signed-off-by: Bard Liao <bardliao@realtek.com>
---
 sound/soc/codecs/rt5670.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
index 85dc210..898b17f 100644
--- a/sound/soc/codecs/rt5670.c
+++ b/sound/soc/codecs/rt5670.c
@@ -575,6 +575,17 @@ static int is_using_asrc(struct snd_soc_dapm_widget *source,
 
 }
 
+static int can_use_asrc(struct snd_soc_dapm_widget *source,
+			 struct snd_soc_dapm_widget *sink)
+{
+	struct rt5670_priv *rt5670 = snd_soc_codec_get_drvdata(source->codec);
+
+	if (rt5670->sysclk > rt5670->lrck[RT5670_AIF1] * 384)
+		return 1;
+
+	return 0;
+}
+
 /* Digital Mixer */
 static const struct snd_kcontrol_new rt5670_sto1_adc_l_mix[] = {
 	SOC_DAPM_SINGLE("ADC1 Switch", RT5670_STO1_ADC_MIXER,
@@ -1638,8 +1649,8 @@ static const struct snd_soc_dapm_route rt5670_dapm_routes[] = {
 	{ "DAC Mono Right Filter", NULL, "DAC MONO R ASRC", is_using_asrc },
 	{ "DAC Stereo1 Filter", NULL, "DAC STO ASRC", is_using_asrc },
 
-	{ "I2S1", NULL, "I2S1 ASRC" },
-	{ "I2S2", NULL, "I2S2 ASRC" },
+	{ "I2S1", NULL, "I2S1 ASRC", can_use_asrc},
+	{ "I2S2", NULL, "I2S2 ASRC", can_use_asrc},
 
 	{ "DMIC1", NULL, "DMIC L1" },
 	{ "DMIC1", NULL, "DMIC R1" },
-- 
1.8.1.1.439.g50a6b54

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/4] ASoC: rt5670: add DMIC ASRC support
  2014-11-12 11:54 [PATCH 1/4] ASoC: rt5670: make bias level more reasonable bardliao
  2014-11-12 11:54 ` [PATCH 2/4] ASoC: rt5670: check if asrc is useable bardliao
@ 2014-11-12 11:54 ` bardliao
  2014-11-12 11:54 ` [PATCH 4/4] ASoC: rt5670: add codec irq support bardliao
  2014-11-14 11:11 ` [PATCH 1/4] ASoC: rt5670: make bias level more reasonable Mark Brown
  3 siblings, 0 replies; 9+ messages in thread
From: bardliao @ 2014-11-12 11:54 UTC (permalink / raw)
  To: broonie, lgirdwood
  Cc: oder_chiou, alsa-devel, lars, mengdong.lin, Bard Liao, yao.jin,
	flove

From: Bard Liao <bardliao@realtek.com>

This patch will enable ASRC for DMIC if ASRC is useable.

Signed-off-by: Bard Liao <bardliao@realtek.com>
---
 sound/soc/codecs/rt5670.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
index 898b17f..89fa507 100644
--- a/sound/soc/codecs/rt5670.c
+++ b/sound/soc/codecs/rt5670.c
@@ -1292,6 +1292,14 @@ static const struct snd_soc_dapm_widget rt5670_dapm_widgets[] = {
 			      9, 0, NULL, 0),
 	SND_SOC_DAPM_SUPPLY_S("DAC MONO R ASRC", 1, RT5670_ASRC_1,
 			      8, 0, NULL, 0),
+	SND_SOC_DAPM_SUPPLY_S("DMIC STO1 ASRC", 1, RT5670_ASRC_1,
+			      7, 0, NULL, 0),
+	SND_SOC_DAPM_SUPPLY_S("DMIC STO2 ASRC", 1, RT5670_ASRC_1,
+			      6, 0, NULL, 0),
+	SND_SOC_DAPM_SUPPLY_S("DMIC MONO L ASRC", 1, RT5670_ASRC_1,
+			      5, 0, NULL, 0),
+	SND_SOC_DAPM_SUPPLY_S("DMIC MONO R ASRC", 1, RT5670_ASRC_1,
+			      4, 0, NULL, 0),
 	SND_SOC_DAPM_SUPPLY_S("ADC STO1 ASRC", 1, RT5670_ASRC_1,
 			      3, 0, NULL, 0),
 	SND_SOC_DAPM_SUPPLY_S("ADC STO2 ASRC", 1, RT5670_ASRC_1,
@@ -1648,6 +1656,10 @@ static const struct snd_soc_dapm_route rt5670_dapm_routes[] = {
 	{ "DAC Mono Left Filter", NULL, "DAC MONO L ASRC", is_using_asrc },
 	{ "DAC Mono Right Filter", NULL, "DAC MONO R ASRC", is_using_asrc },
 	{ "DAC Stereo1 Filter", NULL, "DAC STO ASRC", is_using_asrc },
+	{ "Stereo1 DMIC Mux", NULL, "DMIC STO1 ASRC", can_use_asrc },
+	{ "Stereo2 DMIC Mux", NULL, "DMIC STO2 ASRC", can_use_asrc },
+	{ "Mono DMIC L Mux", NULL, "DMIC MONO L ASRC", can_use_asrc },
+	{ "Mono DMIC R Mux", NULL, "DMIC MONO R ASRC", can_use_asrc },
 
 	{ "I2S1", NULL, "I2S1 ASRC", can_use_asrc},
 	{ "I2S2", NULL, "I2S2 ASRC", can_use_asrc},
-- 
1.8.1.1.439.g50a6b54

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/4] ASoC: rt5670: add codec irq support
  2014-11-12 11:54 [PATCH 1/4] ASoC: rt5670: make bias level more reasonable bardliao
  2014-11-12 11:54 ` [PATCH 2/4] ASoC: rt5670: check if asrc is useable bardliao
  2014-11-12 11:54 ` [PATCH 3/4] ASoC: rt5670: add DMIC ASRC support bardliao
@ 2014-11-12 11:54 ` bardliao
  2014-11-14 11:11 ` [PATCH 1/4] ASoC: rt5670: make bias level more reasonable Mark Brown
  3 siblings, 0 replies; 9+ messages in thread
From: bardliao @ 2014-11-12 11:54 UTC (permalink / raw)
  To: broonie, lgirdwood
  Cc: oder_chiou, alsa-devel, lars, mengdong.lin, Bard Liao, yao.jin,
	flove

From: Bard Liao <bardliao@realtek.com>

This patch provide the jack function of rt5670. We use a irq pin
to notice the jack event. rt5670_irq_detection will determine
which status should be reported.
We can get gpio information from gpio number or gpiod_dev. That's
why we define both on platform data.

Signed-off-by: Bard Liao <bardliao@realtek.com>
---
 include/sound/rt5670.h    |   2 +
 sound/soc/codecs/rt5670.c | 176 +++++++++++++++++++++++++++++++++++++++++++++-
 sound/soc/codecs/rt5670.h |   2 +
 3 files changed, 178 insertions(+), 2 deletions(-)

diff --git a/include/sound/rt5670.h b/include/sound/rt5670.h
index bd31119..bb5cf6d 100644
--- a/include/sound/rt5670.h
+++ b/include/sound/rt5670.h
@@ -14,6 +14,8 @@
 struct rt5670_platform_data {
 	int jd_mode;
 	bool in2_diff;
+	int codec_gpio;
+	bool dev_gpio;
 
 	bool dmic_en;
 	unsigned int dmic1_data_pin;
diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
index 89fa507..cb5a91c 100644
--- a/sound/soc/codecs/rt5670.c
+++ b/sound/soc/codecs/rt5670.c
@@ -401,6 +401,144 @@ static bool rt5670_readable_register(struct device *dev, unsigned int reg)
 	}
 }
 
+/**
+ * rt5670_headset_detect - Detect headset.
+ * @codec: SoC audio codec device.
+ * @jack_insert: Jack insert or not.
+ *
+ * Detect whether is headset or not when jack inserted.
+ *
+ * Returns detect status.
+ */
+
+static int rt5670_headset_detect(struct snd_soc_codec *codec, int jack_insert)
+{
+	int val;
+	struct rt5670_priv *rt5670 = snd_soc_codec_get_drvdata(codec);
+
+	if (jack_insert) {
+		snd_soc_dapm_force_enable_pin(&codec->dapm,
+						       "Mic Det Power");
+		snd_soc_dapm_sync(&codec->dapm);
+		snd_soc_update_bits(codec, RT5670_GEN_CTRL3, 0x4, 0x0);
+		snd_soc_update_bits(codec, RT5670_CJ_CTRL2,
+			RT5670_CBJ_DET_MODE | RT5670_CBJ_MN_JD,
+			RT5670_CBJ_MN_JD);
+		snd_soc_write(codec, RT5670_GPIO_CTRL2, 0x0004);
+		snd_soc_update_bits(codec, RT5670_GPIO_CTRL1,
+			RT5670_GP1_PIN_MASK, RT5670_GP1_PIN_IRQ);
+		snd_soc_update_bits(codec, RT5670_CJ_CTRL1,
+			RT5670_CBJ_BST1_EN, RT5670_CBJ_BST1_EN);
+		snd_soc_write(codec, RT5670_JD_CTRL3, 0x00f0);
+		snd_soc_update_bits(codec, RT5670_CJ_CTRL2,
+			RT5670_CBJ_MN_JD, RT5670_CBJ_MN_JD);
+		snd_soc_update_bits(codec, RT5670_CJ_CTRL2,
+			RT5670_CBJ_MN_JD, 0);
+		msleep(300);
+		val = snd_soc_read(codec, RT5670_CJ_CTRL3) & 0x7;
+		if (val == 0x1 || val == 0x2) {
+			rt5670->jack_type = SND_JACK_HEADSET;
+			/* for push button */
+			snd_soc_update_bits(codec, RT5670_INT_IRQ_ST, 0x8, 0x8);
+			snd_soc_update_bits(codec, RT5670_IL_CMD, 0x40, 0x40);
+			snd_soc_read(codec, RT5670_IL_CMD);
+		} else {
+			snd_soc_update_bits(codec, RT5670_GEN_CTRL3, 0x4, 0x4);
+			rt5670->jack_type = SND_JACK_HEADPHONE;
+			snd_soc_dapm_disable_pin(&codec->dapm, "Mic Det Power");
+			snd_soc_dapm_sync(&codec->dapm);
+		}
+	} else {
+		snd_soc_update_bits(codec, RT5670_INT_IRQ_ST, 0x8, 0x0);
+		snd_soc_update_bits(codec, RT5670_GEN_CTRL3, 0x4, 0x4);
+		rt5670->jack_type = 0;
+		snd_soc_dapm_disable_pin(&codec->dapm, "Mic Det Power");
+		snd_soc_dapm_sync(&codec->dapm);
+	}
+
+	return rt5670->jack_type;
+}
+
+static int rt5670_button_detect(struct snd_soc_codec *codec)
+{
+	int btn_type, val;
+
+	val = snd_soc_read(codec, RT5670_IL_CMD);
+	btn_type = val & 0xff80;
+	snd_soc_write(codec, RT5670_IL_CMD, val);
+	if (btn_type != 0) {
+		msleep(20);
+		val = snd_soc_read(codec, RT5670_IL_CMD);
+		snd_soc_write(codec, RT5670_IL_CMD, val);
+	}
+
+	return btn_type;
+}
+
+static int rt5670_irq_detection(void *data)
+{
+	struct rt5670_priv *rt5670 = (struct rt5670_priv *)data;
+	struct snd_soc_jack_gpio *gpio = &rt5670->hp_gpio;
+	struct snd_soc_jack *jack = &rt5670->jack;
+	int val, btn_type, report = jack->status;
+
+	if (rt5670->pdata.jd_mode == 1) /* 2 port */
+		val = snd_soc_read(rt5670->codec, RT5670_A_JD_CTRL1) & 0x0070;
+	else
+		val = snd_soc_read(rt5670->codec, RT5670_A_JD_CTRL1) & 0x0020;
+
+	switch (val) {
+	/* jack in */
+	case 0x30: /* 2 port */
+	case 0x0: /* 1 port or 2 port */
+		if (rt5670->jack_type == 0) {
+			report = rt5670_headset_detect(rt5670->codec, 1);
+			/* for push button and jack out */
+			gpio->debounce_time = 25;
+			break;
+		}
+		btn_type = 0;
+		if (snd_soc_read(rt5670->codec, RT5670_INT_IRQ_ST) & 0x4) {
+			/* button pressed */
+			report = SND_JACK_HEADSET;
+			btn_type = rt5670_button_detect(rt5670->codec);
+			switch (btn_type) {
+			case 0x2000: /* up */
+				report |= SND_JACK_BTN_1;
+				break;
+			case 0x0400: /* center */
+				report |= SND_JACK_BTN_0;
+				break;
+			case 0x0080: /* down */
+				report |= SND_JACK_BTN_2;
+				break;
+			default:
+				dev_err(rt5670->codec->dev,
+					"Unexpected button code 0x%04x\n",
+					btn_type);
+				break;
+			}
+		}
+		if (btn_type == 0)/* button release */
+			report =  rt5670->jack_type;
+
+		break;
+	/* jack out */
+	case 0x70: /* 2 port */
+	case 0x10: /* 2 port */
+	case 0x20: /* 1 port */
+		report = 0;
+		snd_soc_update_bits(rt5670->codec, RT5670_INT_IRQ_ST, 0x1, 0x0);
+		rt5670_headset_detect(rt5670->codec, 0);
+		gpio->debounce_time = 150; /* for jack in */
+		break;
+	default:
+		break;
+	}
+
+	return report;
+}
+
 static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0);
 static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0);
 static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0);
@@ -2413,6 +2551,34 @@ static int rt5670_probe(struct snd_soc_codec *codec)
 		return -ENODEV;
 	}
 	rt5670->codec = codec;
+	if ((rt5670->pdata.codec_gpio != -1) || (rt5670->pdata.dev_gpio)) {
+		if (rt5670->pdata.dev_gpio)
+			rt5670->hp_gpio.gpiod_dev = codec->dev;
+		else
+			rt5670->hp_gpio.gpio = rt5670->pdata.codec_gpio;
+
+		rt5670->hp_gpio.name = "headphone detect";
+		rt5670->hp_gpio.report = SND_JACK_HEADSET |
+			SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2;
+		rt5670->hp_gpio.debounce_time = 150,
+		rt5670->hp_gpio.wake = true,
+		rt5670->hp_gpio.data = (struct rt5670_priv *)rt5670,
+		rt5670->hp_gpio.jack_status_check = rt5670_irq_detection,
+		ret = snd_soc_jack_new(codec, rt5670->hp_gpio.name,
+				rt5670->hp_gpio.report,
+				&rt5670->jack);
+		if (ret) {
+			dev_err(codec->dev, "Jack creation failed\n");
+			return ret;
+		}
+
+		ret = snd_soc_jack_add_gpios(&rt5670->jack, 1,
+				&rt5670->hp_gpio);
+		if (ret) {
+			dev_err(codec->dev, "Adding jack GPIO failed\n");
+			return ret;
+		}
+	}
 
 	return 0;
 }
@@ -2422,6 +2588,7 @@ static int rt5670_remove(struct snd_soc_codec *codec)
 	struct rt5670_priv *rt5670 = snd_soc_codec_get_drvdata(codec);
 
 	regmap_write(rt5670->regmap, RT5670_RESET, 0);
+	snd_soc_jack_free_gpios(&rt5670->jack, 1, &rt5670->hp_gpio);
 	return 0;
 }
 
@@ -2590,12 +2757,17 @@ static int rt5670_i2c_probe(struct i2c_client *i2c,
 		regmap_update_bits(rt5670->regmap, RT5670_IN2,
 					RT5670_IN_DF2, RT5670_IN_DF2);
 
-	if (i2c->irq) {
+	if ((rt5670->pdata.codec_gpio != -1) || (rt5670->pdata.dev_gpio)) {
+		/* for push button */
+		regmap_write(rt5670->regmap, RT5670_IL_CMD, 0x0000);
+		regmap_write(rt5670->regmap, RT5670_IL_CMD2, 0x0010);
+		regmap_write(rt5670->regmap, RT5670_IL_CMD3, 0x0014);
+		/* for irq */
 		regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL1,
 				   RT5670_GP1_PIN_MASK, RT5670_GP1_PIN_IRQ);
 		regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL2,
 				   RT5670_GP1_PF_MASK, RT5670_GP1_PF_OUT);
-
+		regmap_update_bits(rt5670->regmap, RT5670_DIG_MISC, 0x8, 0x8);
 	}
 
 	if (rt5670->pdata.jd_mode) {
diff --git a/sound/soc/codecs/rt5670.h b/sound/soc/codecs/rt5670.h
index d11b9c2..54933f3 100644
--- a/sound/soc/codecs/rt5670.h
+++ b/sound/soc/codecs/rt5670.h
@@ -1987,6 +1987,8 @@ struct rt5670_priv {
 	struct snd_soc_codec *codec;
 	struct rt5670_platform_data pdata;
 	struct regmap *regmap;
+	struct snd_soc_jack jack;
+	struct snd_soc_jack_gpio hp_gpio;
 
 	int sysclk;
 	int sysclk_src;
-- 
1.8.1.1.439.g50a6b54

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] ASoC: rt5670: check if asrc is useable
  2014-11-12 11:54 ` [PATCH 2/4] ASoC: rt5670: check if asrc is useable bardliao
@ 2014-11-12 19:42   ` Lars-Peter Clausen
  2014-11-14 11:38     ` Bard Liao
  0 siblings, 1 reply; 9+ messages in thread
From: Lars-Peter Clausen @ 2014-11-12 19:42 UTC (permalink / raw)
  To: bardliao
  Cc: oder_chiou, alsa-devel, mengdong.lin, lgirdwood, broonie, yao.jin,
	flove

On 11/12/2014 12:54 PM, bardliao@realtek.com wrote:
> From: Bard Liao <bardliao@realtek.com>
>
> To use ASRC, the sysclk should be faster than 384 times sample
> rate of I2S1.
>
> Signed-off-by: Bard Liao <bardliao@realtek.com>
> ---
>   sound/soc/codecs/rt5670.c | 15 +++++++++++++--
>   1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
> index 85dc210..898b17f 100644
> --- a/sound/soc/codecs/rt5670.c
> +++ b/sound/soc/codecs/rt5670.c
> @@ -575,6 +575,17 @@ static int is_using_asrc(struct snd_soc_dapm_widget *source,
>
>   }
>
> +static int can_use_asrc(struct snd_soc_dapm_widget *source,
> +			 struct snd_soc_dapm_widget *sink)
> +{
> +	struct rt5670_priv *rt5670 = snd_soc_codec_get_drvdata(source->codec);

Can you start using snd_soc_dapm_to_codec(source->dapm) instead of 
source->codec? The codec field will eventually be removed.

Bonus points for fixing up the existing w->codec users in rt drivers.

Thanks,
- Lars

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/4] ASoC: rt5670: make bias level more reasonable
  2014-11-12 11:54 [PATCH 1/4] ASoC: rt5670: make bias level more reasonable bardliao
                   ` (2 preceding siblings ...)
  2014-11-12 11:54 ` [PATCH 4/4] ASoC: rt5670: add codec irq support bardliao
@ 2014-11-14 11:11 ` Mark Brown
  3 siblings, 0 replies; 9+ messages in thread
From: Mark Brown @ 2014-11-14 11:11 UTC (permalink / raw)
  To: bardliao
  Cc: oder_chiou, alsa-devel, lars, mengdong.lin, lgirdwood, yao.jin,
	flove


[-- Attachment #1.1: Type: text/plain, Size: 286 bytes --]

On Wed, Nov 12, 2014 at 07:54:30PM +0800, bardliao@realtek.com wrote:
> From: Bard Liao <bardliao@realtek.com>
> 
> This patah separate bias level off to standby and off. The standby
> level will provide the necessary power for JD and push button
> functions.

Applied, thanks.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] ASoC: rt5670: check if asrc is useable
  2014-11-12 19:42   ` Lars-Peter Clausen
@ 2014-11-14 11:38     ` Bard Liao
  2014-11-14 15:11       ` Mark Brown
  0 siblings, 1 reply; 9+ messages in thread
From: Bard Liao @ 2014-11-14 11:38 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Oder Chiou, alsa-devel@alsa-project.org, mengdong.lin@intel.com,
	lgirdwood@gmail.com, broonie@kernel.org, yao.jin@intel.com, Flove

> -----Original Message-----
> From: Lars-Peter Clausen [mailto:lars@metafoo.de]
> Sent: Thursday, November 13, 2014 3:43 AM
> To: Bard Liao
> Cc: broonie@kernel.org; lgirdwood@gmail.com;
> alsa-devel@alsa-project.org; Flove; Oder Chiou; mengdong.lin@intel.com;
> yao.jin@intel.com
> Subject: Re: [PATCH 2/4] ASoC: rt5670: check if asrc is useable
> 
> On 11/12/2014 12:54 PM, bardliao@realtek.com wrote:
> > From: Bard Liao <bardliao@realtek.com>
> >
> > To use ASRC, the sysclk should be faster than 384 times sample rate of
> > I2S1.
> >
> > Signed-off-by: Bard Liao <bardliao@realtek.com>
> > ---
> >   sound/soc/codecs/rt5670.c | 15 +++++++++++++--
> >   1 file changed, 13 insertions(+), 2 deletions(-)
> >
> > diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
> > index 85dc210..898b17f 100644
> > --- a/sound/soc/codecs/rt5670.c
> > +++ b/sound/soc/codecs/rt5670.c
> > @@ -575,6 +575,17 @@ static int is_using_asrc(struct
> > snd_soc_dapm_widget *source,
> >
> >   }
> >
> > +static int can_use_asrc(struct snd_soc_dapm_widget *source,
> > +			 struct snd_soc_dapm_widget *sink) {
> > +	struct rt5670_priv *rt5670 =
> > +snd_soc_codec_get_drvdata(source->codec);
> 
> Can you start using snd_soc_dapm_to_codec(source->dapm) instead of
> source->codec? The codec field will eventually be removed.
> 
> Bonus points for fixing up the existing w->codec users in rt drivers.

Sure, I will resend the patch. Another question is that the patch is one
of 4 patches series. Should I resend all of them?

Thanks.

> 
> Thanks,
> - Lars
> 
> 
> ------Please consider the environment before printing this e-mail.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/4] ASoC: rt5670: check if asrc is useable
  2014-11-14 11:38     ` Bard Liao
@ 2014-11-14 15:11       ` Mark Brown
  0 siblings, 0 replies; 9+ messages in thread
From: Mark Brown @ 2014-11-14 15:11 UTC (permalink / raw)
  To: Bard Liao
  Cc: Oder Chiou, alsa-devel@alsa-project.org, Lars-Peter Clausen,
	mengdong.lin@intel.com, lgirdwood@gmail.com, yao.jin@intel.com,
	Flove


[-- Attachment #1.1: Type: text/plain, Size: 366 bytes --]

On Fri, Nov 14, 2014 at 11:38:51AM +0000, Bard Liao wrote:

> Sure, I will resend the patch. Another question is that the patch is one
> of 4 patches series. Should I resend all of them?

No need to send patch 1 since I applied it but please resend the rest -
I assumed that patches 3 and 4 depended on patch 2.  In general resend
anything that hasn't been applied.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-11-14 15:12 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-12 11:54 [PATCH 1/4] ASoC: rt5670: make bias level more reasonable bardliao
2014-11-12 11:54 ` [PATCH 2/4] ASoC: rt5670: check if asrc is useable bardliao
2014-11-12 19:42   ` Lars-Peter Clausen
2014-11-14 11:38     ` Bard Liao
2014-11-14 15:11       ` Mark Brown
2014-11-12 11:54 ` [PATCH 3/4] ASoC: rt5670: add DMIC ASRC support bardliao
2014-11-12 11:54 ` [PATCH 4/4] ASoC: rt5670: add codec irq support bardliao
2014-11-14 11:11 ` [PATCH 1/4] ASoC: rt5670: make bias level more reasonable Mark Brown
  -- strict thread matches above, loose matches on Subject: below --
2014-11-12  6:21 bardliao
2014-11-12  6:21 ` [PATCH 2/4] ASoC: rt5670: check if asrc is useable bardliao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox