[alsa-devel] [RFC 1/4] ASoC: topology: Add topology UAPI header.
Liam Girdwood
liam.r.girdwood at linux.intel.com
Tue Apr 21 11:47:53 CEST 2015
On Mon, 2015-04-20 at 22:30 +0100, Mark Brown wrote:
> On Thu, Apr 16, 2015 at 09:48:15PM +0100, Liam Girdwood wrote:
>
> > +struct snd_soc_tplg_hdr {
> > + __le32 magic;
> > + __le32 abi; /* ABI version */
> > + __le32 version; /* optional vendor specific version details */
> > + __le32 type; /* SND_SOC_TPLG_ */
> > + __le32 vendor_type; /* optional vendor specific type info */
> > + __le32 size; /* data bytes, excluding this header */
> > + __le32 id; /* identifier for block */
> > + char reserved[128];
> > +} __attribute__((packed));
>
> Not got a massively strong opinion here but given that we have ABI
> versioning can we just skip the 128 bytes of reserved space in most of
> the structs? Doesn't seem to be doing much except making the files
> bigger.
We had a similar discussion in Nuremburg last week, the intention is to
keep the size of the structures constant so wont dont break older
kernels with newer userspace ABIs etc.
>
> > +/*
> > + * Mixer kcontrol.
> > + */
> > +struct snd_soc_tplg_mixer_control {
> > + struct snd_soc_tplg_control_hdr hdr;
> > + __le32 min;
> > + __le32 max;
> > + __le32 platform_max;
> > + __le32 reg;
> > + __le32 rreg;
> > + __le32 shift;
> > + __le32 rshift;
>
> Do we want to convert this into an array of reg/shift tuples for the
> (dobutless forthcoming) 5.1 controls? Not sure it's worth it. I do
> think we probably need some explicit documentation for things like what
> to do with the left and right bits, I guess we hope other OSs or
> whatever can make use of the same topology if we're trying to make it
> standard.
Yeah, that's a good point which we should address :)
What about something like :-
struct snd_soc_mixer_channel {
__le32 reg;
__le32 shift;
}
struct snd_soc_tplg_mixer_control {
struct snd_soc_tplg_control_hdr hdr;
__le32 min;
__le32 max;
__le32 platform_max;
__le32 invert;
__le32 num_channels;
char reserved[64];
struct snd_soc_tplg_mixer_channel channel[0];
struct snd_soc_tplg_private priv;
} __attribute__((packed));
The same could be applied to the other control types too ?
Liam
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
More information about the Alsa-devel
mailing list