* [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