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

Ranjani Sridharan ranjani.sridharan at linux.intel.com
Thu May 10 02:40:37 CEST 2018


On Thu, 2018-05-10 at 03:06 +0900, Takashi Sakamoto wrote:
> Hi,
> 
> On May 8 2018 06:04, 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:
> >      v3: fix prefix for offset definitions
> > 
> >   include/uapi/sound/tlv.h | 8 ++++++++
> >   1 file changed, 8 insertions(+)
> > 
> > diff --git a/include/uapi/sound/tlv.h b/include/uapi/sound/tlv.h
> > index be5371f09a62..13f425c2abbd 100644
> > --- a/include/uapi/sound/tlv.h
> > +++ b/include/uapi/sound/tlv.h
> > @@ -98,4 +98,12 @@
> >   
> >   #define SNDRV_CTL_TLVD_DB_GAIN_MUTE	-9999999
> >   
> > +/* Accessor offsets for TLV data items */
> > +#define SNDRV_CTL_TLVO_TYPE		0
> > +#define SNDRV_CTL_TLVO_LEN		1
> > +
> > +/* 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
> > +
> >   #endif
> 
> You added these macros in the end of this file. In my opinion, this
> is 
> inconvenient for future when adding more macros for new types. It's
> better to place the additional macro to places convenient to find
> relevant lines such that:

Thanks, Takashi. I've fixed the placement in v4. 

>   - 'SNDRV_CTL_TLVO_TYPE' and 'SNDRV_CTL_TLVO_LEN' following
>     to comments about layout of TLV data.
>   - 'SNDRV_CTL_TLVO_DB_SCALE_MIN' and
>     'SNDRV_CTL_TLVO_DB_SCALE_MUTE_AND_STEP' following to
>     'SNDRV_CTL_TLVO_DB_SCALE_MUTE_AND_STEP'.
> 
> diff --git a/include/uapi/sound/tlv.h b/include/uapi/sound/tlv.h
> index be5371f09a62..b5f45b13077e 100644
> --- a/include/uapi/sound/tlv.h
> +++ b/include/uapi/sound/tlv.h
> @@ -37,6 +37,9 @@
>    *        block_length = (length + (sizeof(unsigned int) - 1)) &
>    *                       ~(sizeof(unsigned int) - 1)) ....
>    */
> +#define SNDRV_CTL_TLVO_TYPE            0
> +#define SNDRV_CTL_TLVO_LEN             1
> +
>   #define SNDRV_CTL_TLVD_ITEM(type, ...) \
>          (type), SNDRV_CTL_TLVD_LENGTH(__VA_ARGS__), __VA_ARGS__
>   #define SNDRV_CTL_TLVD_LENGTH(...) \
> @@ -61,6 +64,9 @@
>                  SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) \
>          }
> 
> +#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))
> 
> 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.

> 
> 
> Regards
> 
> Takashi Sakamoto


More information about the Alsa-devel mailing list