[alsa-devel] [PATCH] ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card
On Braswell, we need to add some machine specific setting before suspend and after resume. For example, disable/enable jack detection in codec so use snd_soc_card suspend_pre and resume_post ops for this purpose.
Signed-off-by: Jin Yao yao.jin@linux.intel.com --- sound/soc/intel/cht_bsw_rt5672.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)
diff --git a/sound/soc/intel/cht_bsw_rt5672.c b/sound/soc/intel/cht_bsw_rt5672.c index 279df4c..c41fae3 100644 --- a/sound/soc/intel/cht_bsw_rt5672.c +++ b/sound/soc/intel/cht_bsw_rt5672.c @@ -267,6 +267,35 @@ static struct snd_soc_dai_link cht_dailink[] = { }, };
+static int cht_suspend_pre(struct snd_soc_card *card) +{ + struct snd_soc_codec *codec; + + list_for_each_entry(codec, &card->codec_dev_list, card_list) { + if (!strcmp(codec->component.name, "i2c-10EC5670:00")) { + dev_dbg(codec->dev, "disabling jack detect before going to suspend.\n"); + rt5670_jack_suspend(codec); + break; + } + } + return 0; +} + +static int cht_resume_post(struct snd_soc_card *card) +{ + struct snd_soc_codec *codec; + + list_for_each_entry(codec, &card->codec_dev_list, card_list) { + if (!strcmp(codec->component.name, "i2c-10EC5670:00")) { + dev_dbg(codec->dev, "enabling jack detect for resume.\n"); + rt5670_jack_resume(codec); + break; + } + } + + return 0; +} + /* SoC card */ static struct snd_soc_card snd_soc_card_cht = { .name = "cherrytrailcraudio", @@ -278,6 +307,8 @@ static struct snd_soc_card snd_soc_card_cht = { .num_dapm_routes = ARRAY_SIZE(cht_audio_map), .controls = cht_mc_controls, .num_controls = ARRAY_SIZE(cht_mc_controls), + .suspend_pre = cht_suspend_pre, + .resume_post = cht_resume_post, };
static int snd_cht_mc_probe(struct platform_device *pdev)
On Wed, Mar 11, 2015 at 11:48:33AM +0800, Jin Yao wrote:
On Braswell, we need to add some machine specific setting before suspend and after resume. For example, disable/enable jack detection in codec so use snd_soc_card suspend_pre and resume_post ops for this purpose.
Applied, thanks.
On Wed, Mar 11, 2015 at 11:48:33AM +0800, Jin Yao wrote:
On Braswell, we need to add some machine specific setting before suspend and after resume. For example, disable/enable jack detection in codec so use snd_soc_card suspend_pre and resume_post ops for this purpose.
Reverted since it doesn't build!
Hi Mark, Bard,
This patch has dependency on Bard's patch "ASoC: rt5670: export jack suspend/resume APIs". I pull the Mark's for-next branch right now and I can see Bard's patch "ASoC: rt5670: export jack suspend/resume APIs" has been integrated.
So there now is only one build error in rt5670.c:
sound/soc/codecs/rt5670.c: In function 'is_sys_clk_from_pll': sound/soc/codecs/rt5670.c:702:38: error: 'struct snd_soc_dapm_widget' has no member named 'codec' struct snd_soc_codec *codec = source->codec; ^ After I fix it with my change as following, the build is successful.
--- a/sound/soc/codecs/rt5670.c +++ b/sound/soc/codecs/rt5670.c @@ -699,7 +699,7 @@ static int set_dmic_clk(struct snd_soc_dapm_widget *w, static int is_sys_clk_from_pll(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = source->codec; + struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); struct rt5670_priv *rt5670 = snd_soc_codec_get_drvdata(codec);
if (rt5670->sysclk_src == RT5670_SCLK_S_PLL1)
Could Bard take a look at it?
For my patch, the build is successful.
ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card ASoC: Intel: move the jack creation to Braswell machine driver
Thanks Jin Yao
On 2015/3/11 20:50, Mark Brown wrote:
On Wed, Mar 11, 2015 at 11:48:33AM +0800, Jin Yao wrote:
On Braswell, we need to add some machine specific setting before suspend and after resume. For example, disable/enable jack detection in codec so use snd_soc_card suspend_pre and resume_post ops for this purpose.
Reverted since it doesn't build!
-----Original Message----- From: Jin, Yao [mailto:yao.jin@linux.intel.com] Sent: Thursday, March 12, 2015 8:52 AM To: Mark Brown Cc: lgirdwood@gmail.com; alsa-devel@alsa-project.org; mengdong.lin@intel.com; subhransu.s.prusty@intel.com; Bard Liao Subject: Re: [PATCH] ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card
Hi Mark, Bard,
This patch has dependency on Bard's patch "ASoC: rt5670: export jack suspend/resume APIs". I pull the Mark's for-next branch right now and I can see Bard's patch "ASoC: rt5670: export jack suspend/resume APIs" has been integrated.
I think we should send the dependency patches in a series.
function 'snd_soc_card_jack_new' [-Werror=implicit-function-declaration] ret = snd_soc_card_jack_new(runtime->card, "Headset", ^
I think it is due to Lars-Peter's "ASoC: simple-card: Register jacks at the card level" patch is not applied on branch topic/intel.
So there now is only one build error in rt5670.c:
sound/soc/codecs/rt5670.c: In function 'is_sys_clk_from_pll': sound/soc/codecs/rt5670.c:702:38: error: 'struct snd_soc_dapm_widget' has no member named 'codec' struct snd_soc_codec *codec = source->codec; ^ After I fix it with my change as following, the build is successful.
--- a/sound/soc/codecs/rt5670.c +++ b/sound/soc/codecs/rt5670.c @@ -699,7 +699,7 @@ static int set_dmic_clk(struct snd_soc_dapm_widget *w, static int is_sys_clk_from_pll(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) {
struct snd_soc_codec *codec = source->codec;
struct snd_soc_codec *codec =
- snd_soc_dapm_to_codec(source->dapm); struct rt5670_priv *rt5670 =
snd_soc_codec_get_drvdata(codec);
if (rt5670->sysclk_src == RT5670_SCLK_S_PLL1)
Could Bard take a look at it?
It is already in Lars-Peter's "ASoC: rt5670: Replace w->codec snd_soc_dapm_to_codec(w->dapm)" patch
For my patch, the build is successful.
ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card ASoC: Intel: move the jack creation to Braswell machine driver
Thanks Jin Yao
On 2015/3/11 20:50, Mark Brown wrote:
On Wed, Mar 11, 2015 at 11:48:33AM +0800, Jin Yao wrote:
On Braswell, we need to add some machine specific setting before suspend and after resume. For example, disable/enable jack detection in codec so use snd_soc_card suspend_pre and resume_post ops for
this purpose.
Reverted since it doesn't build!
------Please consider the environment before printing this e-mail.
Hi Bard, Mark,
I pull the for-next branch right now and I can see the following rt5670 patches have been integrated.
66454b3 ASoC: rt5670: Replace w->codec snd_soc_dapm_to_codec(w->dapm) cc3c340 ASoC: rt5670: export jack suspend/resume APIs d3ef705 ASoC: rt5670: Add IRQ function
Then I build the for-next branch with my patches (reverted before):
ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card ASoC: Intel: move the jack creation to Braswell machine driver
The build is successful. So it looks we don't need to resend the patch series, just re-applying my patches should be OK.
Thanks Jin Yao
On 2015/3/12 10:38, Bard Liao wrote:
-----Original Message----- From: Jin, Yao [mailto:yao.jin@linux.intel.com] Sent: Thursday, March 12, 2015 8:52 AM To: Mark Brown Cc: lgirdwood@gmail.com; alsa-devel@alsa-project.org; mengdong.lin@intel.com; subhransu.s.prusty@intel.com; Bard Liao Subject: Re: [PATCH] ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card
Hi Mark, Bard,
This patch has dependency on Bard's patch "ASoC: rt5670: export jack suspend/resume APIs". I pull the Mark's for-next branch right now and I can see Bard's patch "ASoC: rt5670: export jack suspend/resume APIs" has been integrated.
I think we should send the dependency patches in a series.
function 'snd_soc_card_jack_new' [-Werror=implicit-function-declaration] ret = snd_soc_card_jack_new(runtime->card, "Headset", ^
I think it is due to Lars-Peter's "ASoC: simple-card: Register jacks at the card level" patch is not applied on branch topic/intel.
So there now is only one build error in rt5670.c:
sound/soc/codecs/rt5670.c: In function 'is_sys_clk_from_pll': sound/soc/codecs/rt5670.c:702:38: error: 'struct snd_soc_dapm_widget' has no member named 'codec' struct snd_soc_codec *codec = source->codec; ^ After I fix it with my change as following, the build is successful.
--- a/sound/soc/codecs/rt5670.c +++ b/sound/soc/codecs/rt5670.c @@ -699,7 +699,7 @@ static int set_dmic_clk(struct snd_soc_dapm_widget *w, static int is_sys_clk_from_pll(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) {
struct snd_soc_codec *codec = source->codec;
struct snd_soc_codec *codec =
- snd_soc_dapm_to_codec(source->dapm); struct rt5670_priv *rt5670 =
snd_soc_codec_get_drvdata(codec);
if (rt5670->sysclk_src == RT5670_SCLK_S_PLL1)
Could Bard take a look at it?
It is already in Lars-Peter's "ASoC: rt5670: Replace w->codec snd_soc_dapm_to_codec(w->dapm)" patch
For my patch, the build is successful.
ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card ASoC: Intel: move the jack creation to Braswell machine driver
Thanks Jin Yao
On 2015/3/11 20:50, Mark Brown wrote:
On Wed, Mar 11, 2015 at 11:48:33AM +0800, Jin Yao wrote:
On Braswell, we need to add some machine specific setting before suspend and after resume. For example, disable/enable jack detection in codec so use snd_soc_card suspend_pre and resume_post ops for
this purpose.
Reverted since it doesn't build!
------Please consider the environment before printing this e-mail.
On Thu, Mar 12, 2015 at 08:42:55PM +0800, Jin, Yao wrote:
I pull the for-next branch right now and I can see the following rt5670 patches have been integrated.
66454b3 ASoC: rt5670: Replace w->codec snd_soc_dapm_to_codec(w->dapm) cc3c340 ASoC: rt5670: export jack suspend/resume APIs d3ef705 ASoC: rt5670: Add IRQ function
Then I build the for-next branch with my patches (reverted before):
ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card ASoC: Intel: move the jack creation to Braswell machine driver
The build is successful. So it looks we don't need to resend the patch series, just re-applying my patches should be OK.
These are two separate branches, if there's dependencies between the two branches we need to merge them before applying new patches - I think that's the missing piece of information here.
Hi Mark,
Sorry for forgetting to mention the patch dependency information in previous mail.
Now since all the dependency rt5670 patches have been merged in for-next branch, I just want to know what we need to do for next step to let following patches be applied?
ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card ASoC: Intel: move the jack creation to Braswell machine drive
Thanks Jin Yao
On 2015/3/13 2:01, Mark Brown wrote:
On Thu, Mar 12, 2015 at 08:42:55PM +0800, Jin, Yao wrote:
I pull the for-next branch right now and I can see the following rt5670 patches have been integrated.
66454b3 ASoC: rt5670: Replace w->codec snd_soc_dapm_to_codec(w->dapm) cc3c340 ASoC: rt5670: export jack suspend/resume APIs d3ef705 ASoC: rt5670: Add IRQ function
Then I build the for-next branch with my patches (reverted before):
ASoC: Intel: Add suspend_pre and resume_post for Braswell snd_soc_card ASoC: Intel: move the jack creation to Braswell machine driver
The build is successful. So it looks we don't need to resend the patch series, just re-applying my patches should be OK.
These are two separate branches, if there's dependencies between the two branches we need to merge them before applying new patches - I think that's the missing piece of information here.
participants (4)
-
Bard Liao
-
Jin Yao
-
Jin, Yao
-
Mark Brown