[alsa-devel] [RFC 03/10] ASoC: Intel: Skylake: add HDA BE DAIs

Takashi Iwai tiwai at suse.de
Mon Dec 4 18:01:21 CET 2017


On Mon, 04 Dec 2017 17:51:17 +0100,
Pierre-Louis Bossart wrote:
> 
> On 12/4/17 10:44 AM, Ughreja, Rakesh A wrote:
> >
> >
> >> -----Original Message-----
> >> From: Pierre-Louis Bossart [mailto:pierre-louis.bossart at linux.intel.com]
> >> Sent: Monday, December 4, 2017 10:11 PM
> >> To: Ughreja, Rakesh A <rakesh.a.ughreja at intel.com>; alsa-devel at alsa-
> >> project.org; broonie at kernel.org; tiwai at suse.de; liam.r.girdwood at linux.intel.com
> >> Cc: Koul, Vinod <vinod.koul at intel.com>; Patches Audio
> >> <patches.audio at intel.com>
> >> Subject: Re: [alsa-devel] [RFC 03/10] ASoC: Intel: Skylake: add HDA BE DAIs
> >>
> >> On 12/4/17 10:14 AM, Ughreja, Rakesh A wrote:
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: Pierre-Louis Bossart [mailto:pierre-louis.bossart at linux.intel.com]
> >>>> Sent: Friday, December 1, 2017 11:50 PM
> >>>> To: Ughreja, Rakesh A <rakesh.a.ughreja at intel.com>; alsa-devel at alsa-
> >>>> project.org; broonie at kernel.org; tiwai at suse.de;
> >> liam.r.girdwood at linux.intel.com
> >>>> Cc: Koul, Vinod <vinod.koul at intel.com>; Patches Audio
> >>>> <patches.audio at intel.com>
> >>>> Subject: Re: [alsa-devel] [RFC 03/10] ASoC: Intel: Skylake: add HDA BE DAIs
> >>>>
> >>>> On 12/1/17 3:14 AM, Rakesh Ughreja wrote:
> >>>>> Add support for HDA BE DAIs in SKL platform driver.
> >>>>>
> >>>>> Signed-off-by: Rakesh Ughreja <rakesh.a.ughreja at intel.com>
> >>>>> ---
> >>>>>     sound/soc/intel/skylake/skl-pcm.c | 32 +++++++++++++++++++++++++--
> >> ----
> >>>> -
> >>>>>     1 file changed, 25 insertions(+), 7 deletions(-)
> >>>>>
> >>>>> diff --git a/sound/soc/intel/skylake/skl-pcm.c b/sound/soc/intel/skylake/skl-
> >>>> pcm.c
> >>>>> index e6fee7a..3dcb241 100644
> >>>>> --- a/sound/soc/intel/skylake/skl-pcm.c
> >>>>> +++ b/sound/soc/intel/skylake/skl-pcm.c
> >>>>> @@ -956,21 +956,39 @@ static struct snd_soc_dai_driver skl_platform_dai[]
> >> = {
> >>>>>     	},
> >>>>>     },
> >>>>>     {
> >>>>> -	.name = "HD-Codec Pin",
> >>>>> +	.name = "Analog CPU DAI",
> >>>>>     	.ops = &skl_link_dai_ops,
> >>>>>     	.playback = {
> >>>>> -		.stream_name = "HD-Codec Tx",
> >>>>> -		.channels_min = HDA_STEREO,
> >>>>> +		.stream_name = "Analog CPU Playback",
> >>>>> +		.channels_min = HDA_MONO,
> >>>>>     		.channels_max = HDA_STEREO,
> >>>>>     		.rates = SNDRV_PCM_RATE_48000,
> >>>>> -		.formats = SNDRV_PCM_FMTBIT_S16_LE,
> >>>>> +		.formats = SNDRV_PCM_FMTBIT_S16_LE |
> >>>> SNDRV_PCM_FMTBIT_S24_LE,
> >>>>>     	},
> >>>>>     	.capture = {
> >>>>> -		.stream_name = "HD-Codec Rx",
> >>>>> -		.channels_min = HDA_STEREO,
> >>>>> +		.stream_name = "Analog CPU Capture",
> >>>>> +		.channels_min = HDA_MONO,
> >>>>>     		.channels_max = HDA_STEREO,
> >>>>>     		.rates = SNDRV_PCM_RATE_48000,
> >>>>> -		.formats = SNDRV_PCM_FMTBIT_S16_LE,
> >>>>> +		.formats = SNDRV_PCM_FMTBIT_S16_LE |
> >>>> SNDRV_PCM_FMTBIT_S24_LE,
> >>>>> +	},
> >>>>> +},
> >>>>> +{
> >>>>> +	.name = "Digital CPU DAI",
> >>>>
> >>>> I am not sure I get the meaning of analog/digital.
> >>>>
> >>>> Did you mean external codec vs. iDisp codec?
> >>>>
> >>>> Or did you really mean analog? I don't think you can control this front
> >>>> the CPU side, e.g. if the codec has an S/PDIF output it remains digital.
> >>>
> >>> I was trying to map the BE CPU DAIs to hda_pcm_stream.
> >>> The way it is defined here.
> >>> https://elixir.free-electrons.com/linux/v4.15-
> >> rc2/source/sound/pci/hda/hda_generic.c#L5374
> >>
> >> ok, but I still don't know what those BEs are supposed to refer to or mean.
> >
> > In the ASoC HDA codec driver it maps the hda_pcm_stream to codc DAI.
> > In the machine driver we map/bind the codec DAI to CPU BE DAI.
> 
> I meant the difference between pcm_analog_playback,
> pcm_analog_alt_playback and pcm_digital_playback in the hda_generic.c
> file you mentioned.

pcm_analog_playback is for the primary PCM streams that are assigned
to the analog I/O jacks (hp, mic, line-out, etc).  pcm_analog_alt is
for the alternative PCM stream, usually assigned for the independent
headphone PCM stream on certain codec chips.  pcm_digital_playback is
for either SPDIF or HDMI/DP, but mostly only for SPDIF, as HDMI/DP is
usually not dealt by generic driver but by HDMI codec driver.


Takashi


More information about the Alsa-devel mailing list