[alsa-devel] [PATCH] [RFC 3/13] Intel SST driver include headers

Takashi Iwai tiwai at suse.de
Fri Jul 3 12:58:35 CEST 2009


At Fri,  3 Jul 2009 12:32:25 +0530,
Vinod Koul wrote:
> 
> This patch adds the intel_sst.h header file that is places in the
> include folder for MAD driver (ALSA sound card driver for the platform
> given in later patches) to use. This file contains the definitions
> of interfaces exposed by the SST drivers along with the definitions of
> all the controls for the sound card to be used by MAD driver.
> intel_sst_ioctl.h - this file exposes the ioctls definitions
> for player/middleware to use. Many of the definitions are reuse from ALSA
> 
> Signed-off-by: Vinod Koul <vinod.koul at intel.com>
> Signed-off-by: Harsha Priya <priya.harsha at intel.com>
> 
> 	new file:   include/sound/intel_sst.h
> 	new file:   include/sound/intel_sst_ioctl.h
> ---
>  include/sound/intel_sst.h       |  259 +++++++++++++++++++++++++++++
>  include/sound/intel_sst_ioctl.h |  351 +++++++++++++++++++++++++++++++++++++++
>  2 files changed, 610 insertions(+), 0 deletions(-)
>  create mode 100644 include/sound/intel_sst.h
>  create mode 100644 include/sound/intel_sst_ioctl.h
> 
> diff --git a/include/sound/intel_sst.h b/include/sound/intel_sst.h
> new file mode 100644
> index 0000000..c709390
> --- /dev/null
> +++ b/include/sound/intel_sst.h
(snip)
> +static inline int sst_sc_reg_access(struct sc_reg_access *sc_access,
> +							int type, int num_val)
> +{
> +#ifndef CONFIG_SST_IPC_NOT_INCLUDED
> +	int i, retval = 0, j = 0, k = 0, count = 0;
> +	struct ipc_pmic_reg_data reg_data;
> +	struct ipc_pmic_mod_reg_data pmic_mod_reg = {0};

This is way too big as an inline function.

> diff --git a/include/sound/intel_sst_ioctl.h b/include/sound/intel_sst_ioctl.h
> new file mode 100644
> index 0000000..848ea26
> --- /dev/null
> +++ b/include/sound/intel_sst_ioctl.h
> +
> +enum sst_codec_types {
> +/*  AUDIO/MUSIC	CODEC Type Definitions */
> +	SST_CODEC_TYPE_UNKNOWN = 0,
> +	SST_CODEC_TYPE_PCM,	/* Pass through Audio codec */
> +	SST_CODEC_TYPE_MP3,
> +	SST_CODEC_TYPE_MP24,
> +	SST_CODEC_TYPE_AAC,
> +	SST_CODEC_TYPE_AACP,
> +	SST_CODEC_TYPE_eAACP,
> +	SST_CODEC_TYPE_WMA9,
> +	SST_CODEC_TYPE_WMA10,
> +	SST_CODEC_TYPE_WMA10P,
> +	SST_CODEC_TYPE_RA,
> +	SST_CODEC_TYPE_DDAC3,
> +	SST_CODEC_TYPE_STEREO_TRUE_HD,
> +	SST_CODEC_TYPE_STEREO_HD_PLUS,
> +
> +	/*  VOICE CODEC Type Definitions */
> +	SST_CODEC_TYPE_VOICE_PCM = 0x21, /* Pass through voice codec */
> +	SRC = 0x64,
> +	MIXER = 0x65,
> +	DOWN_MIXER = 0x66,
> +	VOLUME_CONTROL = 0x67,
> +	OEM1 = 0xC8,
> +	OEM2 = 0xC9,

These terms are too generic to be used as public definitions.
Better to put a prefix.

> +/* Firmware Version info */
> +struct snd_sst_fw_version {
> +	__u8 build;	/* build number*/
> +	__u8 minor;	/* minor number*/
> +	__u8 major;	/* major number*/
> +	__u8 type; /* build type*/
> +};
> +
> +/* Port info structure */
> +struct snd_sst_port_info {
> +	__u16 port_type;

Just wondering -- is there big-endian support?

> +/* Target selection per device structure */
> +struct snd_sst_slot_info {
> +	__u8 mix_enable;		/* Mixer enable or disable */
> +	__u8 device_type;
> +	__u8 device_instance; 	/* 0, 1, 2 */
> +	__u16 slot[2];
> +	struct snd_sst_pmic_config pcm_params;
> +	enum snd_sst_target_type type;

Better to use another type with a strict size instead of enum.

> +struct snd_sst_vol {
> +	unsigned int	stream_id;
> +	int		volume;
> +	unsigned long	ramp_duration;

Are you sure to use long?
Long can be different between 32 and 64bit architectures.

> +struct snd_sst_buff_entry {
> +	union {
> +		void *user;
> +		unsigned int offset;
> +	} buffer;

Is it OK?
The pointer and int can be different sizes.


Takashi


More information about the Alsa-devel mailing list