[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