[alsa-devel] [PATCH 00/11] ASoC: hdac_hdmi: Add multichannel support

Takashi Iwai tiwai at suse.de
Tue Apr 12 07:43:59 CEST 2016


On Tue, 12 Apr 2016 07:01:22 +0200,
Subhransu S. Prusty wrote:
> 
> This series parses ELD to identify multichannel capability of the
> sync, and uses HDA framework to programs codec's channel map
> registers.
> 
> Channel map controls are registered in patch 8, with which user
> can specify a specific channel order. chmap controls are
> registered inside jack_init callback. As PCMs need to be
> registered before registering chmap controls, jack_init call in
> the machine driver is moved to late_probe instead of init
> callback.
> 
> Skylake driver is modified and buffer size calculation is fixed
> for multichannel support.
> 
> Please note, patch 2 and 4 adds small macros to read speaker
> allocation from ELD and channel counts from cap bits respectively
> in DRM and HDA headers.  We have CCed DRM folks here. Please ack
> patch 1, so that we can have this series merged through sound
> trees. Patch 3 needs Takashi's ack, so that it can be merged
> through ASoC.
> 
> Patch 9 has dependency on commit#44fde3b ("ALSA: hda - Update
> chmap tlv to report sink's capability) which is merged in
> Takashi's tree.
> 
> So this may be merged in ASoC with Takashi's Ack and pulling in
> changes from Takashi's tree or alternatively it can be directly
> merged in Takashi's with Mark's Ack
> 
> Takashi/Mark, please decide how you guys want this to be merged. 

Mark needs to pull my for-next branch beforehand.
Or, Mark needs to send a pull request so that I pull Mark's tree, then
sync both before applying yours.

But the problem is more complicated because you're changing drm stuff,
too.  This is usually managed in drm tree.  So this cross over three
different trees.

And, the change in drm is only this:

> --- a/include/drm/drm_edid.h
> +++ b/include/drm/drm_edid.h
> @@ -415,6 +415,15 @@ static inline u8 drm_eld_get_conn_type(const uint8_t *eld)
>  	return eld[DRM_ELD_SAD_COUNT_CONN_TYPE] & DRM_ELD_CONN_TYPE_MASK;
>  }
>  
> +/**
> + * drm_eld_get_spk_alloc - Get ELD speaker allocation
> + * @eld: pointer to an eld memory structure
> + */
> +static inline const u8 drm_eld_get_spk_alloc(const uint8_t *eld)
> +{
> +	return eld[DRM_ELD_SPEAKER];
> +}

Do we really need this?  Even the direct reference is pretty much
obvious.  e.g. I see no big difference between two lines below:
	spk_alloc = drm_eld_get_spk_alloc(some_eld);
	spk_alloc = some_eld[DRM_ELD_SPAEKER];


thanks,

Takashi


More information about the Alsa-devel mailing list