* [PATCH 0/5] ASoC: Intel: geminilake: Adds da7219+max98537 machine driver support
@ 2018-04-04 4:46 Naveen Manohar
2018-04-04 4:46 ` [PATCH 1/5] ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a Naveen Manohar
` (4 more replies)
0 siblings, 5 replies; 12+ messages in thread
From: Naveen Manohar @ 2018-04-04 4:46 UTC (permalink / raw)
To: alsa-devel
Cc: vinod.koul, harshapriya.n, naveen.m, broonie,
pierre-louis.bossart
Patch adds required changes in bxt machine & corresponding driver
entry in machine to use MAX98357A codec as speaker on SSP1 and
DA7219 codec as headset on SSP2 for GLK board.
Naveen Manohar (5):
ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a
ASoC: Intel: Headset button support in broxton machine driver
ASoC: Intel: Add Geminilake Dialog Maxim machine driver support
ASoC: Intel: glk: Add DAI links for Multi-Playback
ASoC: Intel: Add Geminilake Dialog+Maxim machine driver entry
sound/soc/intel/boards/bxt_da7219_max98357a.c | 308 ++++++++++++++++++++++++--
sound/soc/intel/skylake/skl.c | 9 +-
2 files changed, 297 insertions(+), 20 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH 1/5] ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a 2018-04-04 4:46 [PATCH 0/5] ASoC: Intel: geminilake: Adds da7219+max98537 machine driver support Naveen Manohar @ 2018-04-04 4:46 ` Naveen Manohar 2018-06-19 15:24 ` Applied "ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a" to the asoc tree Mark Brown 2018-04-04 4:46 ` [PATCH 2/5] ASoC: Intel: Headset button support in broxton machine driver Naveen Manohar ` (3 subsequent siblings) 4 siblings, 1 reply; 12+ messages in thread From: Naveen Manohar @ 2018-04-04 4:46 UTC (permalink / raw) To: alsa-devel Cc: vinod.koul, harshapriya.n, naveen.m, broonie, pierre-louis.bossart Use truncated names in bxt id table and bxt_da7219_max98357a machine as platform device id table expects names to be less then 20chars. Signed-off-by: Naveen Manohar <naveen.m@intel.com> --- sound/soc/intel/boards/bxt_da7219_max98357a.c | 4 ++-- sound/soc/intel/skylake/skl.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c index 668c093..ce021a3 100644 --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c @@ -586,7 +586,7 @@ static int broxton_audio_probe(struct platform_device *pdev) static struct platform_driver broxton_audio = { .probe = broxton_audio_probe, .driver = { - .name = "bxt_da7219_max98357a_i2s", + .name = "bxt_da7219_max98357a", .pm = &snd_soc_pm_ops, }, }; @@ -599,4 +599,4 @@ MODULE_AUTHOR("Rohit Ainapure <rohit.m.ainapure@intel.com>"); MODULE_AUTHOR("Harsha Priya <harshapriya.n@intel.com>"); MODULE_AUTHOR("Conrad Cooke <conrad.cooke@intel.com>"); MODULE_LICENSE("GPL v2"); -MODULE_ALIAS("platform:bxt_da7219_max98357a_i2s"); +MODULE_ALIAS("platform:bxt_da7219_max98357a"); diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index abf3247..d50c2ee 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -1086,7 +1086,7 @@ static struct snd_soc_acpi_mach sst_bxtp_devdata[] = { }, { .id = "DLGS7219", - .drv_name = "bxt_da7219_max98357a_i2s", + .drv_name = "bxt_da7219_max98357a", .fw_filename = "intel/dsp_fw_bxtn.bin", .machine_quirk = snd_soc_acpi_codec_list, .quirk_data = &bxt_codecs, -- 2.7.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Applied "ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a" to the asoc tree 2018-04-04 4:46 ` [PATCH 1/5] ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a Naveen Manohar @ 2018-06-19 15:24 ` Mark Brown 0 siblings, 0 replies; 12+ messages in thread From: Mark Brown @ 2018-06-19 15:24 UTC (permalink / raw) Cc: alsa-devel, vinod.koul, Pierre-Louis Bossart, harshapriya.n, broonie, naveen.m, pierre-louis.bossart The patch ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a has been applied to the asoc tree at https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark >From 95555f580dca21fac5ea35c10fa92fa034bd403f Mon Sep 17 00:00:00 2001 From: Naveen Manohar <naveen.m@intel.com> Date: Mon, 18 Jun 2018 13:29:35 -0500 Subject: [PATCH] ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a Use truncated names in bxt id table and bxt_da7219_max98357a machine as platform device id table expects names to be less then 20chars. Signed-off-by: Naveen Manohar <naveen.m@intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org> --- sound/soc/intel/boards/bxt_da7219_max98357a.c | 4 ++-- sound/soc/intel/skylake/skl.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c index 40eb979d5ac1..3aba5bcf806a 100644 --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c @@ -586,7 +586,7 @@ static int broxton_audio_probe(struct platform_device *pdev) static struct platform_driver broxton_audio = { .probe = broxton_audio_probe, .driver = { - .name = "bxt_da7219_max98357a_i2s", + .name = "bxt_da7219_max98357a", .pm = &snd_soc_pm_ops, }, }; @@ -599,4 +599,4 @@ MODULE_AUTHOR("Rohit Ainapure <rohit.m.ainapure@intel.com>"); MODULE_AUTHOR("Harsha Priya <harshapriya.n@intel.com>"); MODULE_AUTHOR("Conrad Cooke <conrad.cooke@intel.com>"); MODULE_LICENSE("GPL v2"); -MODULE_ALIAS("platform:bxt_da7219_max98357a_i2s"); +MODULE_ALIAS("platform:bxt_da7219_max98357a"); diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index f0d9793f872a..0a8f0768e987 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -1093,7 +1093,7 @@ static struct snd_soc_acpi_mach sst_bxtp_devdata[] = { }, { .id = "DLGS7219", - .drv_name = "bxt_da7219_max98357a_i2s", + .drv_name = "bxt_da7219_max98357a", .fw_filename = "intel/dsp_fw_bxtn.bin", .machine_quirk = snd_soc_acpi_codec_list, .quirk_data = &bxt_codecs, -- 2.17.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/5] ASoC: Intel: Headset button support in broxton machine driver 2018-04-04 4:46 [PATCH 0/5] ASoC: Intel: geminilake: Adds da7219+max98537 machine driver support Naveen Manohar 2018-04-04 4:46 ` [PATCH 1/5] ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a Naveen Manohar @ 2018-04-04 4:46 ` Naveen Manohar 2018-04-06 0:30 ` Benson Leung 2018-04-04 4:46 ` [PATCH 3/5] ASoC: Intel: Add Geminilake Dialog Maxim machine driver support Naveen Manohar ` (2 subsequent siblings) 4 siblings, 1 reply; 12+ messages in thread From: Naveen Manohar @ 2018-04-04 4:46 UTC (permalink / raw) To: alsa-devel Cc: vinod.koul, harshapriya.n, naveen.m, broonie, pierre-louis.bossart Patch adds headset button support for broxton machine driver (bxt_da7219_max98357a). Signed-off-by: Naveen Manohar <naveen.m@intel.com> --- sound/soc/intel/boards/bxt_da7219_max98357a.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c index ce021a3..1c1e70c 100644 --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c @@ -16,6 +16,7 @@ * GNU General Public License for more details. */ +#include <linux/input.h> #include <linux/module.h> #include <linux/platform_device.h> #include <sound/core.h> @@ -168,6 +169,7 @@ static int broxton_ssp_fixup(struct snd_soc_pcm_runtime *rtd, static int broxton_da7219_codec_init(struct snd_soc_pcm_runtime *rtd) { int ret; + struct snd_soc_jack *jack; struct snd_soc_dai *codec_dai = rtd->codec_dai; struct snd_soc_component *component = rtd->codec_dai->component; @@ -192,7 +194,12 @@ static int broxton_da7219_codec_init(struct snd_soc_pcm_runtime *rtd) return ret; } - da7219_aad_jack_det(component, &broxton_headset); + jack = &broxton_headset; + snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_MEDIA); + snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); + snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); + snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN); + da7219_aad_jack_det(component, jack); snd_soc_dapm_ignore_suspend(&rtd->card->dapm, "SoC DMIC"); -- 2.7.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 2/5] ASoC: Intel: Headset button support in broxton machine driver 2018-04-04 4:46 ` [PATCH 2/5] ASoC: Intel: Headset button support in broxton machine driver Naveen Manohar @ 2018-04-06 0:30 ` Benson Leung 2018-04-06 1:15 ` Naveen M 0 siblings, 1 reply; 12+ messages in thread From: Benson Leung @ 2018-04-06 0:30 UTC (permalink / raw) To: Naveen Manohar Cc: alsa-devel, vinod.koul, harshapriya.n, broonie, bleung, bleung, pierre-louis.bossart [-- Attachment #1.1: Type: text/plain, Size: 1910 bytes --] Hi Naveen, On Wed, Apr 04, 2018 at 10:16:56AM +0530, Naveen Manohar wrote: > Patch adds headset button support for broxton machine driver > (bxt_da7219_max98357a). > > Signed-off-by: Naveen Manohar <naveen.m@intel.com> > --- > sound/soc/intel/boards/bxt_da7219_max98357a.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c > index ce021a3..1c1e70c 100644 > --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c > +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c > @@ -16,6 +16,7 @@ > * GNU General Public License for more details. > */ > > +#include <linux/input.h> > #include <linux/module.h> > #include <linux/platform_device.h> > #include <sound/core.h> > @@ -168,6 +169,7 @@ static int broxton_ssp_fixup(struct snd_soc_pcm_runtime *rtd, > static int broxton_da7219_codec_init(struct snd_soc_pcm_runtime *rtd) > { > int ret; > + struct snd_soc_jack *jack; > struct snd_soc_dai *codec_dai = rtd->codec_dai; > struct snd_soc_component *component = rtd->codec_dai->component; > > @@ -192,7 +194,12 @@ static int broxton_da7219_codec_init(struct snd_soc_pcm_runtime *rtd) > return ret; > } > > - da7219_aad_jack_det(component, &broxton_headset); > + jack = &broxton_headset; > + snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_MEDIA); I recently made a set of changes that replaced KEY_MEDIA usage for BTN_0 with KEY_PLAYPAUSE. See https://lkml.org/lkml/2017/11/22/586 Since this patch may be destined for Chrome OS, you should definitely use KEY_PLAYPAUSE, as the Chrome OS user space doesn't respond to KEY_MEDIA but does respond to KEY_PLAYPAUSE. Thanks, Benson -- Benson Leung Staff Software Engineer Chrome OS Kernel Google Inc. bleung@google.com Chromium OS Project bleung@chromium.org [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/5] ASoC: Intel: Headset button support in broxton machine driver 2018-04-06 0:30 ` Benson Leung @ 2018-04-06 1:15 ` Naveen M 2018-04-06 7:28 ` David Woodhouse 0 siblings, 1 reply; 12+ messages in thread From: Naveen M @ 2018-04-06 1:15 UTC (permalink / raw) To: Benson Leung Cc: alsa-devel, vinod.koul, harshapriya.n, broonie, bleung, pierre-louis.bossart On Thu, Apr 05, 2018 at 05:30:33PM -0700, Benson Leung wrote: > Hi Naveen, > > On Wed, Apr 04, 2018 at 10:16:56AM +0530, Naveen Manohar wrote: > > Patch adds headset button support for broxton machine driver > > (bxt_da7219_max98357a). > > > > Signed-off-by: Naveen Manohar <naveen.m@intel.com> > > --- > > sound/soc/intel/boards/bxt_da7219_max98357a.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c > > index ce021a3..1c1e70c 100644 > > --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c > > +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c > > @@ -16,6 +16,7 @@ > > * GNU General Public License for more details. > > */ > > > > +#include <linux/input.h> > > #include <linux/module.h> > > #include <linux/platform_device.h> > > #include <sound/core.h> > > @@ -168,6 +169,7 @@ static int broxton_ssp_fixup(struct snd_soc_pcm_runtime *rtd, > > static int broxton_da7219_codec_init(struct snd_soc_pcm_runtime *rtd) > > { > > int ret; > > + struct snd_soc_jack *jack; > > struct snd_soc_dai *codec_dai = rtd->codec_dai; > > struct snd_soc_component *component = rtd->codec_dai->component; > > > > @@ -192,7 +194,12 @@ static int broxton_da7219_codec_init(struct snd_soc_pcm_runtime *rtd) > > return ret; > > } > > > > - da7219_aad_jack_det(component, &broxton_headset); > > + jack = &broxton_headset; > > + snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_MEDIA); > > I recently made a set of changes that replaced KEY_MEDIA usage for BTN_0 > with KEY_PLAYPAUSE. See https://lkml.org/lkml/2017/11/22/586 > > Since this patch may be destined for Chrome OS, you should definitely use > KEY_PLAYPAUSE, as the Chrome OS user space doesn't respond to KEY_MEDIA but does > respond to KEY_PLAYPAUSE. > > Thanks, > Benson > Thanks for the review and update. Shall correct this in V2. Also there are other machines which still use KEY_MEDIA - kbl_da7219_max98357a.c, cht_bsw_nau8824.c Shall correct these too. > -- > Benson Leung > Staff Software Engineer > Chrome OS Kernel > Google Inc. > bleung@google.com > Chromium OS Project > bleung@chromium.org -- ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/5] ASoC: Intel: Headset button support in broxton machine driver 2018-04-06 1:15 ` Naveen M @ 2018-04-06 7:28 ` David Woodhouse 2018-04-12 15:24 ` Mark Brown 0 siblings, 1 reply; 12+ messages in thread From: David Woodhouse @ 2018-04-06 7:28 UTC (permalink / raw) To: Naveen M, Benson Leung Cc: alsa-devel, vinod.koul, harshapriya.n, broonie, bleung, pierre-louis.bossart [-- Attachment #1.1: Type: text/plain, Size: 600 bytes --] On Fri, 2018-04-06 at 06:45 +0530, Naveen M wrote: > > Thanks for the review and update. Shall correct this in V2. > Also there are other machines which still use KEY_MEDIA - > kbl_da7219_max98357a.c, cht_bsw_nau8824.c > Shall correct these too. kbl_da7219_max98357a and rk3399_gru_sound also seem to have KEY_VOICECOMMAND on BTN_3 and volume up/down on 1/2; is that correct? Until I spotted that, I was going to suggest a generic helper to set all four, since they should *all* be setting the four events to KEY_PLAYPAUSE, KEY_VOICECOMMAND, KEY_VOLUMEUP, KEY_VOLUMEDOWN respectively. [-- Attachment #1.2: smime.p7s --] [-- Type: application/x-pkcs7-signature, Size: 5213 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/5] ASoC: Intel: Headset button support in broxton machine driver 2018-04-06 7:28 ` David Woodhouse @ 2018-04-12 15:24 ` Mark Brown 0 siblings, 0 replies; 12+ messages in thread From: Mark Brown @ 2018-04-12 15:24 UTC (permalink / raw) To: David Woodhouse Cc: alsa-devel, vinod.koul, harshapriya.n, Naveen M, Benson Leung, bleung, pierre-louis.bossart [-- Attachment #1.1: Type: text/plain, Size: 938 bytes --] On Fri, Apr 06, 2018 at 08:28:35AM +0100, David Woodhouse wrote: > On Fri, 2018-04-06 at 06:45 +0530, Naveen M wrote: > > Thanks for the review and update. Shall correct this in V2. > > Also there are other machines which still use KEY_MEDIA - > > kbl_da7219_max98357a.c, cht_bsw_nau8824.c > > Shall correct these too. > kbl_da7219_max98357a and rk3399_gru_sound also seem to have > KEY_VOICECOMMAND on BTN_3 and volume up/down on 1/2; is that correct? > Until I spotted that, I was going to suggest a generic helper to set > all four, since they should *all* be setting the four events to > KEY_PLAYPAUSE, KEY_VOICECOMMAND, KEY_VOLUMEUP, KEY_VOLUMEDOWN > respectively. Headsets are very system specific, it's going to depend on both how the manufacturer headset is labelled and how the hardware interprets the buttons on it. There's a diversity of standards for both unfortunately and no way to identify what's plugged in usefully. [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 3/5] ASoC: Intel: Add Geminilake Dialog Maxim machine driver support 2018-04-04 4:46 [PATCH 0/5] ASoC: Intel: geminilake: Adds da7219+max98537 machine driver support Naveen Manohar 2018-04-04 4:46 ` [PATCH 1/5] ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a Naveen Manohar 2018-04-04 4:46 ` [PATCH 2/5] ASoC: Intel: Headset button support in broxton machine driver Naveen Manohar @ 2018-04-04 4:46 ` Naveen Manohar 2018-04-04 15:18 ` Pierre-Louis Bossart 2018-04-04 4:46 ` [PATCH 4/5] ASoC: Intel: glk: Add DAI links for Multi-Playback Naveen Manohar 2018-04-04 4:46 ` [PATCH 5/5] ASoC: Intel: Add Geminilake Dialog+Maxim machine driver entry Naveen Manohar 4 siblings, 1 reply; 12+ messages in thread From: Naveen Manohar @ 2018-04-04 4:46 UTC (permalink / raw) To: alsa-devel Cc: vinod.koul, harshapriya.n, naveen.m, broonie, pierre-louis.bossart Patch adds required changes in bxt machine to use MAX98357A codec as speaker on SSP1 & DA7219 codec as headset on SSP2 on GLK board. Signed-off-by: Naveen Manohar <naveen.m@intel.com> --- sound/soc/intel/boards/bxt_da7219_max98357a.c | 283 ++++++++++++++++++++++++-- 1 file changed, 267 insertions(+), 16 deletions(-) diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c index 1c1e70c..7725aa1 100644 --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c @@ -16,6 +16,7 @@ * GNU General Public License for more details. */ +#include <asm/cpu_device_id.h> #include <linux/input.h> #include <linux/module.h> #include <linux/platform_device.h> @@ -33,6 +34,7 @@ #define DUAL_CHANNEL 2 #define QUAD_CHANNEL 4 +static struct snd_soc_card *audio_card; static struct snd_soc_jack broxton_headset; static struct snd_soc_jack broxton_hdmi[3]; @@ -103,7 +105,7 @@ static const struct snd_soc_dapm_widget broxton_widgets[] = { platform_clock_control, SND_SOC_DAPM_POST_PMD|SND_SOC_DAPM_PRE_PMU), }; -static const struct snd_soc_dapm_route broxton_map[] = { +static const struct snd_soc_dapm_route audio_map[] = { /* HP jack connectors - unknown if we have jack detection */ {"Headphone Jack", NULL, "HPL"}, {"Headphone Jack", NULL, "HPR"}, @@ -118,15 +120,6 @@ static const struct snd_soc_dapm_route broxton_map[] = { {"DMic", NULL, "SoC DMIC"}, /* CODEC BE connections */ - {"HiFi Playback", NULL, "ssp5 Tx"}, - {"ssp5 Tx", NULL, "codec0_out"}, - - {"Playback", NULL, "ssp1 Tx"}, - {"ssp1 Tx", NULL, "codec1_out"}, - - {"codec0_in", NULL, "ssp1 Rx"}, - {"ssp1 Rx", NULL, "Capture"}, - {"HDMI1", NULL, "hif5-0 Output"}, {"HDMI2", NULL, "hif6-0 Output"}, {"HDMI2", NULL, "hif7-0 Output"}, @@ -146,6 +139,28 @@ static const struct snd_soc_dapm_route broxton_map[] = { { "Headset Mic", NULL, "Platform Clock" }, }; +static const struct snd_soc_dapm_route broxton_map[] = { + {"HiFi Playback", NULL, "ssp5 Tx"}, + {"ssp5 Tx", NULL, "codec0_out"}, + + {"Playback", NULL, "ssp1 Tx"}, + {"ssp1 Tx", NULL, "codec1_out"}, + + {"codec0_in", NULL, "ssp1 Rx"}, + {"ssp1 Rx", NULL, "Capture"}, +}; + +static const struct snd_soc_dapm_route gemini_map[] = { + {"HiFi Playback", NULL, "ssp1 Tx"}, + {"ssp1 Tx", NULL, "codec0_out"}, + + {"Playback", NULL, "ssp2 Tx"}, + {"ssp2 Tx", NULL, "codec1_out"}, + + {"codec0_in", NULL, "ssp2 Rx"}, + {"ssp2 Rx", NULL, "Capture"}, +}; + static int broxton_ssp_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_params *params) { @@ -524,6 +539,199 @@ static struct snd_soc_dai_link broxton_dais[] = { }, }; +/* geminilake digital audio interface glue - connects codec <--> CPU */ +static struct snd_soc_dai_link geminilake_dais[] = { + /* Front End DAI links */ + [BXT_DPCM_AUDIO_PB] = { + .name = "Bxt Audio Port", + .stream_name = "Audio", + .cpu_dai_name = "System Pin", + .platform_name = "0000:00:0e.0", + .dynamic = 1, + .codec_name = "snd-soc-dummy", + .codec_dai_name = "snd-soc-dummy-dai", + .nonatomic = 1, + .init = broxton_da7219_fe_init, + .trigger = { + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, + .dpcm_playback = 1, + .ops = &broxton_da7219_fe_ops, + }, + [BXT_DPCM_AUDIO_CP] = { + .name = "Bxt Audio Capture Port", + .stream_name = "Audio Record", + .cpu_dai_name = "System Pin", + .platform_name = "0000:00:0e.0", + .dynamic = 1, + .codec_name = "snd-soc-dummy", + .codec_dai_name = "snd-soc-dummy-dai", + .nonatomic = 1, + .trigger = { + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, + .dpcm_capture = 1, + .ops = &broxton_da7219_fe_ops, + }, + [BXT_DPCM_AUDIO_REF_CP] = { + .name = "Bxt Audio Reference cap", + .stream_name = "Refcap", + .cpu_dai_name = "Reference Pin", + .codec_name = "snd-soc-dummy", + .codec_dai_name = "snd-soc-dummy-dai", + .platform_name = "0000:00:0e.0", + .init = NULL, + .dpcm_capture = 1, + .nonatomic = 1, + .dynamic = 1, + .ops = &broxton_refcap_ops, + }, + [BXT_DPCM_AUDIO_DMIC_CP] = { + .name = "Bxt Audio DMIC cap", + .stream_name = "dmiccap", + .cpu_dai_name = "DMIC Pin", + .codec_name = "snd-soc-dummy", + .codec_dai_name = "snd-soc-dummy-dai", + .platform_name = "0000:00:0e.0", + .init = NULL, + .dpcm_capture = 1, + .nonatomic = 1, + .dynamic = 1, + .ops = &broxton_dmic_ops, + }, + [BXT_DPCM_AUDIO_HDMI1_PB] = { + .name = "Bxt HDMI Port1", + .stream_name = "Hdmi1", + .cpu_dai_name = "HDMI1 Pin", + .codec_name = "snd-soc-dummy", + .codec_dai_name = "snd-soc-dummy-dai", + .platform_name = "0000:00:0e.0", + .dpcm_playback = 1, + .init = NULL, + .trigger = { + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, + .nonatomic = 1, + .dynamic = 1, + }, + [BXT_DPCM_AUDIO_HDMI2_PB] = { + .name = "Bxt HDMI Port2", + .stream_name = "Hdmi2", + .cpu_dai_name = "HDMI2 Pin", + .codec_name = "snd-soc-dummy", + .codec_dai_name = "snd-soc-dummy-dai", + .platform_name = "0000:00:0e.0", + .dpcm_playback = 1, + .init = NULL, + .trigger = { + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, + .nonatomic = 1, + .dynamic = 1, + }, + [BXT_DPCM_AUDIO_HDMI3_PB] = { + .name = "Bxt HDMI Port3", + .stream_name = "Hdmi3", + .cpu_dai_name = "HDMI3 Pin", + .codec_name = "snd-soc-dummy", + .codec_dai_name = "snd-soc-dummy-dai", + .platform_name = "0000:00:0e.0", + .trigger = { + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, + .dpcm_playback = 1, + .init = NULL, + .nonatomic = 1, + .dynamic = 1, + }, + /* Back End DAI links */ + { + /* SSP1 - Codec */ + .name = "SSP1-Codec", + .id = 0, + .cpu_dai_name = "SSP1 Pin", + .platform_name = "0000:00:0e.0", + .no_pcm = 1, + .codec_name = "MX98357A:00", + .codec_dai_name = BXT_MAXIM_CODEC_DAI, + .dai_fmt = SND_SOC_DAIFMT_I2S | + SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBS_CFS, + .ignore_pmdown_time = 1, + .be_hw_params_fixup = broxton_ssp_fixup, + .dpcm_playback = 1, + }, + { + /* SSP2 - Codec */ + .name = "SSP2-Codec", + .id = 1, + .cpu_dai_name = "SSP2 Pin", + .platform_name = "0000:00:0e.0", + .no_pcm = 1, + .codec_name = "i2c-DLGS7219:00", + .codec_dai_name = BXT_DIALOG_CODEC_DAI, + .init = broxton_da7219_codec_init, + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBS_CFS, + .ignore_pmdown_time = 1, + .be_hw_params_fixup = broxton_ssp_fixup, + .dpcm_playback = 1, + .dpcm_capture = 1, + }, + { + .name = "dmic01", + .id = 2, + .cpu_dai_name = "DMIC01 Pin", + .codec_name = "dmic-codec", + .codec_dai_name = "dmic-hifi", + .platform_name = "0000:00:0e.0", + .ignore_suspend = 1, + .be_hw_params_fixup = broxton_dmic_fixup, + .dpcm_capture = 1, + .no_pcm = 1, + }, + { + .name = "iDisp1", + .id = 3, + .cpu_dai_name = "iDisp1 Pin", + .codec_name = "ehdaudio0D2", + .codec_dai_name = "intel-hdmi-hifi1", + .platform_name = "0000:00:0e.0", + .init = broxton_hdmi_init, + .dpcm_playback = 1, + .no_pcm = 1, + }, + { + .name = "iDisp2", + .id = 4, + .cpu_dai_name = "iDisp2 Pin", + .codec_name = "ehdaudio0D2", + .codec_dai_name = "intel-hdmi-hifi2", + .platform_name = "0000:00:0e.0", + .init = broxton_hdmi_init, + .dpcm_playback = 1, + .no_pcm = 1, + }, + { + .name = "iDisp3", + .id = 5, + .cpu_dai_name = "iDisp3 Pin", + .codec_name = "ehdaudio0D2", + .codec_dai_name = "intel-hdmi-hifi3", + .platform_name = "0000:00:0e.0", + .init = broxton_hdmi_init, + .dpcm_playback = 1, + .no_pcm = 1, + }, +}; + +static int is_geminilake(void) +{ + static const struct x86_cpu_id cpu_ids[] = { + { X86_VENDOR_INTEL, 6, 0x7A }, /* Geminilake CPU_ID */ + {} + }; + + if (x86_match_cpu(cpu_ids)) + return true; + return false; +} + #define NAME_SIZE 32 static int bxt_card_late_probe(struct snd_soc_card *card) { @@ -533,6 +741,13 @@ static int bxt_card_late_probe(struct snd_soc_card *card) int err, i = 0; char jack_name[NAME_SIZE]; + if (is_geminilake()) + snd_soc_dapm_add_routes(&card->dapm, gemini_map, + ARRAY_SIZE(gemini_map)); + else + snd_soc_dapm_add_routes(&card->dapm, broxton_map, + ARRAY_SIZE(broxton_map)); + list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) { component = pcm->codec_dai->component; snprintf(jack_name, sizeof(jack_name), @@ -559,7 +774,7 @@ static int bxt_card_late_probe(struct snd_soc_card *card) } /* broxton audio machine driver for SPT + da7219 */ -static struct snd_soc_card broxton_audio_card = { +static struct snd_soc_card bxt_audio_card_da7219_m98357a = { .name = "bxtda7219max", .owner = THIS_MODULE, .dai_link = broxton_dais, @@ -568,8 +783,24 @@ static struct snd_soc_card broxton_audio_card = { .num_controls = ARRAY_SIZE(broxton_controls), .dapm_widgets = broxton_widgets, .num_dapm_widgets = ARRAY_SIZE(broxton_widgets), - .dapm_routes = broxton_map, - .num_dapm_routes = ARRAY_SIZE(broxton_map), + .dapm_routes = audio_map, + .num_dapm_routes = ARRAY_SIZE(audio_map), + .fully_routed = true, + .late_probe = bxt_card_late_probe, +}; + +/* geminilake audio machine driver for SPT + DA7219 */ +static struct snd_soc_card glk_audio_card_da7219_m98357a = { + .name = "glkda7219max", + .owner = THIS_MODULE, + .dai_link = geminilake_dais, + .num_links = ARRAY_SIZE(geminilake_dais), + .controls = broxton_controls, + .num_controls = ARRAY_SIZE(broxton_controls), + .dapm_widgets = broxton_widgets, + .num_dapm_widgets = ARRAY_SIZE(broxton_widgets), + .dapm_routes = audio_map, + .num_dapm_routes = ARRAY_SIZE(audio_map), .fully_routed = true, .late_probe = bxt_card_late_probe, }; @@ -584,18 +815,36 @@ static int broxton_audio_probe(struct platform_device *pdev) INIT_LIST_HEAD(&ctx->hdmi_pcm_list); - broxton_audio_card.dev = &pdev->dev; - snd_soc_card_set_drvdata(&broxton_audio_card, ctx); + audio_card = + (struct snd_soc_card *)pdev->id_entry->driver_data; + + audio_card->dev = &pdev->dev; + snd_soc_card_set_drvdata(audio_card, ctx); - return devm_snd_soc_register_card(&pdev->dev, &broxton_audio_card); + return devm_snd_soc_register_card(&pdev->dev, audio_card); } +static const struct platform_device_id bxt_board_ids[] = { + { + .name = "bxt_da7219_max98357a", + .driver_data = + (kernel_ulong_t)&bxt_audio_card_da7219_m98357a, + }, + { + .name = "glk_da7219_max98357a", + .driver_data = + (kernel_ulong_t)&glk_audio_card_da7219_m98357a, + }, + { } +}; + static struct platform_driver broxton_audio = { .probe = broxton_audio_probe, .driver = { .name = "bxt_da7219_max98357a", .pm = &snd_soc_pm_ops, }, + .id_table = bxt_board_ids, }; module_platform_driver(broxton_audio) @@ -605,5 +854,7 @@ MODULE_AUTHOR("Sathyanarayana Nujella <sathyanarayana.nujella@intel.com>"); MODULE_AUTHOR("Rohit Ainapure <rohit.m.ainapure@intel.com>"); MODULE_AUTHOR("Harsha Priya <harshapriya.n@intel.com>"); MODULE_AUTHOR("Conrad Cooke <conrad.cooke@intel.com>"); +MODULE_AUTHOR("Naveen Manohar <naveen.m@intel.com>"); MODULE_LICENSE("GPL v2"); MODULE_ALIAS("platform:bxt_da7219_max98357a"); +MODULE_ALIAS("platform:glk_da7219_max98357a"); -- 2.7.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 3/5] ASoC: Intel: Add Geminilake Dialog Maxim machine driver support 2018-04-04 4:46 ` [PATCH 3/5] ASoC: Intel: Add Geminilake Dialog Maxim machine driver support Naveen Manohar @ 2018-04-04 15:18 ` Pierre-Louis Bossart 0 siblings, 0 replies; 12+ messages in thread From: Pierre-Louis Bossart @ 2018-04-04 15:18 UTC (permalink / raw) To: Naveen Manohar, alsa-devel Cc: vinod.koul, harshapriya.n, broonie, pierre-louis.bossart On 4/3/18 11:46 PM, Naveen Manohar wrote: > Patch adds required changes in bxt machine to use MAX98357A codec > as speaker on SSP1 & DA7219 codec as headset on SSP2 on GLK board. > > Signed-off-by: Naveen Manohar <naveen.m@intel.com> > --- > sound/soc/intel/boards/bxt_da7219_max98357a.c | 283 ++++++++++++++++++++++++-- > 1 file changed, 267 insertions(+), 16 deletions(-) > > diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c > index 1c1e70c..7725aa1 100644 > --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c > +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c > @@ -16,6 +16,7 @@ > * GNU General Public License for more details. > */ > > +#include <asm/cpu_device_id.h> > #include <linux/input.h> > #include <linux/module.h> > #include <linux/platform_device.h> > @@ -33,6 +34,7 @@ > #define DUAL_CHANNEL 2 > #define QUAD_CHANNEL 4 > > +static struct snd_soc_card *audio_card; > static struct snd_soc_jack broxton_headset; > static struct snd_soc_jack broxton_hdmi[3]; > > @@ -103,7 +105,7 @@ static const struct snd_soc_dapm_widget broxton_widgets[] = { > platform_clock_control, SND_SOC_DAPM_POST_PMD|SND_SOC_DAPM_PRE_PMU), > }; > > -static const struct snd_soc_dapm_route broxton_map[] = { > +static const struct snd_soc_dapm_route audio_map[] = { > /* HP jack connectors - unknown if we have jack detection */ > {"Headphone Jack", NULL, "HPL"}, > {"Headphone Jack", NULL, "HPR"}, > @@ -118,15 +120,6 @@ static const struct snd_soc_dapm_route broxton_map[] = { > {"DMic", NULL, "SoC DMIC"}, > > /* CODEC BE connections */ > - {"HiFi Playback", NULL, "ssp5 Tx"}, > - {"ssp5 Tx", NULL, "codec0_out"}, > - > - {"Playback", NULL, "ssp1 Tx"}, > - {"ssp1 Tx", NULL, "codec1_out"}, > - > - {"codec0_in", NULL, "ssp1 Rx"}, > - {"ssp1 Rx", NULL, "Capture"}, > - > {"HDMI1", NULL, "hif5-0 Output"}, > {"HDMI2", NULL, "hif6-0 Output"}, > {"HDMI2", NULL, "hif7-0 Output"}, > @@ -146,6 +139,28 @@ static const struct snd_soc_dapm_route broxton_map[] = { > { "Headset Mic", NULL, "Platform Clock" }, > }; > > +static const struct snd_soc_dapm_route broxton_map[] = { > + {"HiFi Playback", NULL, "ssp5 Tx"}, > + {"ssp5 Tx", NULL, "codec0_out"}, > + > + {"Playback", NULL, "ssp1 Tx"}, > + {"ssp1 Tx", NULL, "codec1_out"}, > + > + {"codec0_in", NULL, "ssp1 Rx"}, > + {"ssp1 Rx", NULL, "Capture"}, > +}; > + > +static const struct snd_soc_dapm_route gemini_map[] = { > + {"HiFi Playback", NULL, "ssp1 Tx"}, > + {"ssp1 Tx", NULL, "codec0_out"}, > + > + {"Playback", NULL, "ssp2 Tx"}, > + {"ssp2 Tx", NULL, "codec1_out"}, > + > + {"codec0_in", NULL, "ssp2 Rx"}, > + {"ssp2 Rx", NULL, "Capture"}, > +}; > + > static int broxton_ssp_fixup(struct snd_soc_pcm_runtime *rtd, > struct snd_pcm_hw_params *params) > { > @@ -524,6 +539,199 @@ static struct snd_soc_dai_link broxton_dais[] = { > }, > }; > > +/* geminilake digital audio interface glue - connects codec <--> CPU */ > +static struct snd_soc_dai_link geminilake_dais[] = { > + /* Front End DAI links */ > + [BXT_DPCM_AUDIO_PB] = { > + .name = "Bxt Audio Port", > + .stream_name = "Audio", > + .cpu_dai_name = "System Pin", > + .platform_name = "0000:00:0e.0", > + .dynamic = 1, > + .codec_name = "snd-soc-dummy", > + .codec_dai_name = "snd-soc-dummy-dai", > + .nonatomic = 1, > + .init = broxton_da7219_fe_init, > + .trigger = { > + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, > + .dpcm_playback = 1, > + .ops = &broxton_da7219_fe_ops, > + }, > + [BXT_DPCM_AUDIO_CP] = { > + .name = "Bxt Audio Capture Port", > + .stream_name = "Audio Record", > + .cpu_dai_name = "System Pin", > + .platform_name = "0000:00:0e.0", > + .dynamic = 1, > + .codec_name = "snd-soc-dummy", > + .codec_dai_name = "snd-soc-dummy-dai", > + .nonatomic = 1, > + .trigger = { > + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, > + .dpcm_capture = 1, > + .ops = &broxton_da7219_fe_ops, > + }, > + [BXT_DPCM_AUDIO_REF_CP] = { > + .name = "Bxt Audio Reference cap", > + .stream_name = "Refcap", > + .cpu_dai_name = "Reference Pin", > + .codec_name = "snd-soc-dummy", > + .codec_dai_name = "snd-soc-dummy-dai", > + .platform_name = "0000:00:0e.0", > + .init = NULL, > + .dpcm_capture = 1, > + .nonatomic = 1, > + .dynamic = 1, > + .ops = &broxton_refcap_ops, > + }, > + [BXT_DPCM_AUDIO_DMIC_CP] = { > + .name = "Bxt Audio DMIC cap", > + .stream_name = "dmiccap", > + .cpu_dai_name = "DMIC Pin", > + .codec_name = "snd-soc-dummy", > + .codec_dai_name = "snd-soc-dummy-dai", > + .platform_name = "0000:00:0e.0", > + .init = NULL, > + .dpcm_capture = 1, > + .nonatomic = 1, > + .dynamic = 1, > + .ops = &broxton_dmic_ops, > + }, > + [BXT_DPCM_AUDIO_HDMI1_PB] = { > + .name = "Bxt HDMI Port1", > + .stream_name = "Hdmi1", > + .cpu_dai_name = "HDMI1 Pin", > + .codec_name = "snd-soc-dummy", > + .codec_dai_name = "snd-soc-dummy-dai", > + .platform_name = "0000:00:0e.0", > + .dpcm_playback = 1, > + .init = NULL, > + .trigger = { > + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, > + .nonatomic = 1, > + .dynamic = 1, > + }, > + [BXT_DPCM_AUDIO_HDMI2_PB] = { > + .name = "Bxt HDMI Port2", > + .stream_name = "Hdmi2", > + .cpu_dai_name = "HDMI2 Pin", > + .codec_name = "snd-soc-dummy", > + .codec_dai_name = "snd-soc-dummy-dai", > + .platform_name = "0000:00:0e.0", > + .dpcm_playback = 1, > + .init = NULL, > + .trigger = { > + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, > + .nonatomic = 1, > + .dynamic = 1, > + }, > + [BXT_DPCM_AUDIO_HDMI3_PB] = { > + .name = "Bxt HDMI Port3", > + .stream_name = "Hdmi3", > + .cpu_dai_name = "HDMI3 Pin", > + .codec_name = "snd-soc-dummy", > + .codec_dai_name = "snd-soc-dummy-dai", > + .platform_name = "0000:00:0e.0", > + .trigger = { > + SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, > + .dpcm_playback = 1, > + .init = NULL, > + .nonatomic = 1, > + .dynamic = 1, > + }, > + /* Back End DAI links */ > + { > + /* SSP1 - Codec */ > + .name = "SSP1-Codec", > + .id = 0, > + .cpu_dai_name = "SSP1 Pin", > + .platform_name = "0000:00:0e.0", > + .no_pcm = 1, > + .codec_name = "MX98357A:00", > + .codec_dai_name = BXT_MAXIM_CODEC_DAI, > + .dai_fmt = SND_SOC_DAIFMT_I2S | > + SND_SOC_DAIFMT_NB_NF | > + SND_SOC_DAIFMT_CBS_CFS, > + .ignore_pmdown_time = 1, > + .be_hw_params_fixup = broxton_ssp_fixup, > + .dpcm_playback = 1, > + }, > + { > + /* SSP2 - Codec */ > + .name = "SSP2-Codec", > + .id = 1, > + .cpu_dai_name = "SSP2 Pin", > + .platform_name = "0000:00:0e.0", > + .no_pcm = 1, > + .codec_name = "i2c-DLGS7219:00", > + .codec_dai_name = BXT_DIALOG_CODEC_DAI, > + .init = broxton_da7219_codec_init, > + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | > + SND_SOC_DAIFMT_CBS_CFS, > + .ignore_pmdown_time = 1, > + .be_hw_params_fixup = broxton_ssp_fixup, > + .dpcm_playback = 1, > + .dpcm_capture = 1, > + }, As I mentioned it in my earlier reviews, you could have kept the same dailinks for the two platforms and just update the first backend to be SSP5 for BXT and SSP1 for GLK, and the second as SSP1 for BXT and SSP2 for Dialog. These updates would just be string replacements which can be done dynamically. No need to copy the same structure when all you are about is 4 strings that change the routing. > + { > + .name = "dmic01", > + .id = 2, > + .cpu_dai_name = "DMIC01 Pin", > + .codec_name = "dmic-codec", > + .codec_dai_name = "dmic-hifi", > + .platform_name = "0000:00:0e.0", > + .ignore_suspend = 1, > + .be_hw_params_fixup = broxton_dmic_fixup, > + .dpcm_capture = 1, > + .no_pcm = 1, > + }, > + { > + .name = "iDisp1", > + .id = 3, > + .cpu_dai_name = "iDisp1 Pin", > + .codec_name = "ehdaudio0D2", > + .codec_dai_name = "intel-hdmi-hifi1", > + .platform_name = "0000:00:0e.0", > + .init = broxton_hdmi_init, > + .dpcm_playback = 1, > + .no_pcm = 1, > + }, > + { > + .name = "iDisp2", > + .id = 4, > + .cpu_dai_name = "iDisp2 Pin", > + .codec_name = "ehdaudio0D2", > + .codec_dai_name = "intel-hdmi-hifi2", > + .platform_name = "0000:00:0e.0", > + .init = broxton_hdmi_init, > + .dpcm_playback = 1, > + .no_pcm = 1, > + }, > + { > + .name = "iDisp3", > + .id = 5, > + .cpu_dai_name = "iDisp3 Pin", > + .codec_name = "ehdaudio0D2", > + .codec_dai_name = "intel-hdmi-hifi3", > + .platform_name = "0000:00:0e.0", > + .init = broxton_hdmi_init, > + .dpcm_playback = 1, > + .no_pcm = 1, > + }, > +}; > + > +static int is_geminilake(void) > +{ > + static const struct x86_cpu_id cpu_ids[] = { > + { X86_VENDOR_INTEL, 6, 0x7A }, /* Geminilake CPU_ID */ > + {} > + }; > + > + if (x86_match_cpu(cpu_ids)) > + return true; > + return false; > +} > + > #define NAME_SIZE 32 > static int bxt_card_late_probe(struct snd_soc_card *card) > { > @@ -533,6 +741,13 @@ static int bxt_card_late_probe(struct snd_soc_card *card) > int err, i = 0; > char jack_name[NAME_SIZE]; > > + if (is_geminilake()) > + snd_soc_dapm_add_routes(&card->dapm, gemini_map, > + ARRAY_SIZE(gemini_map)); > + else > + snd_soc_dapm_add_routes(&card->dapm, broxton_map, > + ARRAY_SIZE(broxton_map)); > + > list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) { > component = pcm->codec_dai->component; > snprintf(jack_name, sizeof(jack_name), > @@ -559,7 +774,7 @@ static int bxt_card_late_probe(struct snd_soc_card *card) > } > > /* broxton audio machine driver for SPT + da7219 */ > -static struct snd_soc_card broxton_audio_card = { > +static struct snd_soc_card bxt_audio_card_da7219_m98357a = { > .name = "bxtda7219max", > .owner = THIS_MODULE, > .dai_link = broxton_dais, > @@ -568,8 +783,24 @@ static struct snd_soc_card broxton_audio_card = { > .num_controls = ARRAY_SIZE(broxton_controls), > .dapm_widgets = broxton_widgets, > .num_dapm_widgets = ARRAY_SIZE(broxton_widgets), > - .dapm_routes = broxton_map, > - .num_dapm_routes = ARRAY_SIZE(broxton_map), > + .dapm_routes = audio_map, > + .num_dapm_routes = ARRAY_SIZE(audio_map), > + .fully_routed = true, > + .late_probe = bxt_card_late_probe, > +}; > + > +/* geminilake audio machine driver for SPT + DA7219 */ > +static struct snd_soc_card glk_audio_card_da7219_m98357a = { > + .name = "glkda7219max", > + .owner = THIS_MODULE, > + .dai_link = geminilake_dais, > + .num_links = ARRAY_SIZE(geminilake_dais), > + .controls = broxton_controls, > + .num_controls = ARRAY_SIZE(broxton_controls), > + .dapm_widgets = broxton_widgets, > + .num_dapm_widgets = ARRAY_SIZE(broxton_widgets), > + .dapm_routes = audio_map, > + .num_dapm_routes = ARRAY_SIZE(audio_map), > .fully_routed = true, > .late_probe = bxt_card_late_probe, > }; > @@ -584,18 +815,36 @@ static int broxton_audio_probe(struct platform_device *pdev) > > INIT_LIST_HEAD(&ctx->hdmi_pcm_list); > > - broxton_audio_card.dev = &pdev->dev; > - snd_soc_card_set_drvdata(&broxton_audio_card, ctx); > + audio_card = > + (struct snd_soc_card *)pdev->id_entry->driver_data; > + > + audio_card->dev = &pdev->dev; > + snd_soc_card_set_drvdata(audio_card, ctx); > > - return devm_snd_soc_register_card(&pdev->dev, &broxton_audio_card); > + return devm_snd_soc_register_card(&pdev->dev, audio_card); > } > > +static const struct platform_device_id bxt_board_ids[] = { > + { > + .name = "bxt_da7219_max98357a", > + .driver_data = > + (kernel_ulong_t)&bxt_audio_card_da7219_m98357a, > + }, > + { > + .name = "glk_da7219_max98357a", > + .driver_data = > + (kernel_ulong_t)&glk_audio_card_da7219_m98357a, > + }, > + { } > +}; > + > static struct platform_driver broxton_audio = { > .probe = broxton_audio_probe, > .driver = { > .name = "bxt_da7219_max98357a", > .pm = &snd_soc_pm_ops, > }, > + .id_table = bxt_board_ids, > }; > module_platform_driver(broxton_audio) > > @@ -605,5 +854,7 @@ MODULE_AUTHOR("Sathyanarayana Nujella <sathyanarayana.nujella@intel.com>"); > MODULE_AUTHOR("Rohit Ainapure <rohit.m.ainapure@intel.com>"); > MODULE_AUTHOR("Harsha Priya <harshapriya.n@intel.com>"); > MODULE_AUTHOR("Conrad Cooke <conrad.cooke@intel.com>"); > +MODULE_AUTHOR("Naveen Manohar <naveen.m@intel.com>"); > MODULE_LICENSE("GPL v2"); > MODULE_ALIAS("platform:bxt_da7219_max98357a"); > +MODULE_ALIAS("platform:glk_da7219_max98357a"); > ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 4/5] ASoC: Intel: glk: Add DAI links for Multi-Playback 2018-04-04 4:46 [PATCH 0/5] ASoC: Intel: geminilake: Adds da7219+max98537 machine driver support Naveen Manohar ` (2 preceding siblings ...) 2018-04-04 4:46 ` [PATCH 3/5] ASoC: Intel: Add Geminilake Dialog Maxim machine driver support Naveen Manohar @ 2018-04-04 4:46 ` Naveen Manohar 2018-04-04 4:46 ` [PATCH 5/5] ASoC: Intel: Add Geminilake Dialog+Maxim machine driver entry Naveen Manohar 4 siblings, 0 replies; 12+ messages in thread From: Naveen Manohar @ 2018-04-04 4:46 UTC (permalink / raw) To: alsa-devel Cc: vinod.koul, harshapriya.n, naveen.m, broonie, pierre-louis.bossart Add new FE DAI link to support: Parallel playback on 2 ports simultaneously Signed-off-by: Naveen Manohar <naveen.m@intel.com> --- sound/soc/intel/boards/bxt_da7219_max98357a.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c index 7725aa1..5ead754 100644 --- a/sound/soc/intel/boards/bxt_da7219_max98357a.c +++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c @@ -51,6 +51,7 @@ struct bxt_card_private { enum { BXT_DPCM_AUDIO_PB = 0, BXT_DPCM_AUDIO_CP, + BXT_DPCM_AUDIO_HS_PB, BXT_DPCM_AUDIO_REF_CP, BXT_DPCM_AUDIO_DMIC_CP, BXT_DPCM_AUDIO_HDMI1_PB, @@ -571,6 +572,17 @@ static struct snd_soc_dai_link geminilake_dais[] = { .dpcm_capture = 1, .ops = &broxton_da7219_fe_ops, }, + [BXT_DPCM_AUDIO_HS_PB] = { + .name = "Bxt Audio Headset Playback", + .stream_name = "Headset Playback", + .cpu_dai_name = "System Pin2", + .platform_name = "0000:00:0e.0", + .codec_name = "snd-soc-dummy", + .codec_dai_name = "snd-soc-dummy-dai", + .dpcm_playback = 1, + .nonatomic = 1, + .dynamic = 1, + }, [BXT_DPCM_AUDIO_REF_CP] = { .name = "Bxt Audio Reference cap", .stream_name = "Refcap", -- 2.7.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 5/5] ASoC: Intel: Add Geminilake Dialog+Maxim machine driver entry 2018-04-04 4:46 [PATCH 0/5] ASoC: Intel: geminilake: Adds da7219+max98537 machine driver support Naveen Manohar ` (3 preceding siblings ...) 2018-04-04 4:46 ` [PATCH 4/5] ASoC: Intel: glk: Add DAI links for Multi-Playback Naveen Manohar @ 2018-04-04 4:46 ` Naveen Manohar 4 siblings, 0 replies; 12+ messages in thread From: Naveen Manohar @ 2018-04-04 4:46 UTC (permalink / raw) To: alsa-devel Cc: vinod.koul, harshapriya.n, naveen.m, broonie, pierre-louis.bossart This patch adds da7219_max98357a machine driver entry into machine table Signed-off-by: Naveen Manohar <naveen.m@intel.com> --- sound/soc/intel/skylake/skl.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index d50c2ee..96eeb1d 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -1155,6 +1155,13 @@ static struct snd_soc_acpi_mach sst_glk_devdata[] = { .drv_name = "glk_alc298s_i2s", .fw_filename = "intel/dsp_fw_glk.bin", }, + { + .id = "DLGS7219", + .drv_name = "glk_da7219_max98357a", + .fw_filename = "intel/dsp_fw_glk.bin", + .machine_quirk = snd_soc_acpi_codec_list, + .quirk_data = &bxt_codecs, + }, {} }; -- 2.7.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2018-06-19 15:24 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-04-04 4:46 [PATCH 0/5] ASoC: Intel: geminilake: Adds da7219+max98537 machine driver support Naveen Manohar 2018-04-04 4:46 ` [PATCH 1/5] ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a Naveen Manohar 2018-06-19 15:24 ` Applied "ASoC: Intel: broxton: reduce machine name for bxt_da7219_max98357a" to the asoc tree Mark Brown 2018-04-04 4:46 ` [PATCH 2/5] ASoC: Intel: Headset button support in broxton machine driver Naveen Manohar 2018-04-06 0:30 ` Benson Leung 2018-04-06 1:15 ` Naveen M 2018-04-06 7:28 ` David Woodhouse 2018-04-12 15:24 ` Mark Brown 2018-04-04 4:46 ` [PATCH 3/5] ASoC: Intel: Add Geminilake Dialog Maxim machine driver support Naveen Manohar 2018-04-04 15:18 ` Pierre-Louis Bossart 2018-04-04 4:46 ` [PATCH 4/5] ASoC: Intel: glk: Add DAI links for Multi-Playback Naveen Manohar 2018-04-04 4:46 ` [PATCH 5/5] ASoC: Intel: Add Geminilake Dialog+Maxim machine driver entry Naveen Manohar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).