[alsa-devel] [PATCH v4] ALSA: core api: define offsets for TLV items

Takashi Sakamoto o-takashi at sakamocchi.jp
Thu May 10 03:48:17 CEST 2018


On May 10 2018 09:53, Ranjani Sridharan wrote:
> Currently, there are no pre-defined accessors for the elements
> in topology TLV data. In the absence of such offsets, the
> tlv data will have to be decoded using hardwired offset
> numbers 0-N depending on the type of TLV. This patch defines
> accessor offsets for the type, length, min and mute/step items
> in TLV data for DB_SCALE type tlv's. These will be used by drivers to
> decode the TLV data while loading topology thereby improving
> code readability. The type and len offsets are common for all TLV
> types. The min and step/mute offsets are specific to DB_SCALE tlv type.
> 
> Signed-off-by: Ranjani Sridharan <ranjani.sridharan at linux.intel.com>
> ---
> 
> Notes:
>      v4: change placement of tlv accessor offsets
> 
>   include/uapi/sound/tlv.h | 8 ++++++++
>   1 file changed, 8 insertions(+)

On May 10 2018 09:40, Ranjani Sridharan wrote:
 >>
 >> I have another concern that 'O' is hard to distinguish from 'D' as a
 >> quick glance and can easily leads developers and reviewers to
 >> misread 'SNDRV_CTL_TLVD_XXX' and 'SNDRV_CTL_TLVO_XXX'. Of cource, I
 >> know that you intend to use 'O' to express 'offset' and it's
 >> logically
 >> valid. My concern is just for visual.
 > I've left the prefix SNDRV_CTL_TLVO for lack of a better one and
 > adding OFFSET in the prefix would make the names very long. Hope that
 > is OK.

I agree with it.

Reviewed-by: Takashi Sakamoto <o-takashi at sakamocchi.jp>

> diff --git a/include/uapi/sound/tlv.h b/include/uapi/sound/tlv.h
> index be5371f09a62..e3437e96519a 100644
> --- a/include/uapi/sound/tlv.h
> +++ b/include/uapi/sound/tlv.h
> @@ -42,6 +42,10 @@
>   #define SNDRV_CTL_TLVD_LENGTH(...) \
>   	((unsigned int)sizeof((const unsigned int[]) { __VA_ARGS__ }))
>   
> +/* Accessor offsets for TLV data items */
> +#define SNDRV_CTL_TLVO_TYPE		0
> +#define SNDRV_CTL_TLVO_LEN		1
> +
>   #define SNDRV_CTL_TLVD_CONTAINER_ITEM(...) \
>   	SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_CONTAINER, __VA_ARGS__)
>   #define SNDRV_CTL_TLVD_DECLARE_CONTAINER(name, ...) \
> @@ -61,6 +65,10 @@
>   		SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) \
>   	}
>   
> +/* Accessor offsets for min, mute and step items in dB scale type TLV */
> +#define SNDRV_CTL_TLVO_DB_SCALE_MIN		2
> +#define SNDRV_CTL_TLVO_DB_SCALE_MUTE_AND_STEP	3
> +
>   /* dB scale specified with min/max values instead of step */
>   #define SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB, max_dB) \
>   	SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX, (min_dB), (max_dB))

Later, I'll post patchset for alsa-lib to add these macros, but it'll be 
done after subsystem maintainer is back from his absence.


Thanks


Takashi Sakamoto


More information about the Alsa-devel mailing list