* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.