[alsa-devel] [PATCH v4 2/6] core: add support for compressed devices

Takashi Iwai tiwai at suse.de
Thu Dec 22 08:34:09 CET 2011


At Tue, 13 Dec 2011 14:32:56 +0530,
Vinod Koul wrote:
> 
> From: Omair Mohammed Abdullah <omair.m.abdullah at intel.com>
> 
> Use the two minor numbers 2 and 3 for audio compressed offload devices.
> Also add support for these devices in core
> 
> Signed-off-by: Omair Mohammed Abdullah <omair.m.abdullah at intel.com>
> Signed-off-by: Vinod Koul <vinod.koul at linux.intel.com>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
> Reviewed-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
> Signed-off-by: Vinod Koul <vinod.koul at linux.intel.com>
> ---
>  include/sound/core.h   |    1 +
>  include/sound/minors.h |    7 ++++++-
>  sound/core/sound.c     |    6 ++++++
>  3 files changed, 13 insertions(+), 1 deletions(-)
> 
> diff --git a/include/sound/core.h b/include/sound/core.h
> index 3be5ab7..5ab255f 100644
> --- a/include/sound/core.h
> +++ b/include/sound/core.h
> @@ -62,6 +62,7 @@ typedef int __bitwise snd_device_type_t;
>  #define	SNDRV_DEV_BUS		((__force snd_device_type_t) 0x1007)
>  #define	SNDRV_DEV_CODEC		((__force snd_device_type_t) 0x1008)
>  #define	SNDRV_DEV_JACK          ((__force snd_device_type_t) 0x1009)
> +#define	SNDRV_DEV_COMPRESS	((__force snd_device_type_t) 0x100A)
>  #define	SNDRV_DEV_LOWLEVEL	((__force snd_device_type_t) 0x2000)
>  
>  typedef int __bitwise snd_device_state_t;
> diff --git a/include/sound/minors.h b/include/sound/minors.h
> index 8f76420..faaeb64 100644
> --- a/include/sound/minors.h
> +++ b/include/sound/minors.h
> @@ -35,7 +35,8 @@
>  #define SNDRV_MINOR_TIMER		33	/* SNDRV_MINOR_GLOBAL + 1 * 32 */
>  
>  #ifndef CONFIG_SND_DYNAMIC_MINORS
> -						/* 2 - 3 (reserved) */
> +#define SNDRV_MINOR_COMPR_PLAYBACK	2
> +#define SNDRV_MINOR_COMPR_CAPTURE	3

If you'd share both playback and capture to a single device (as you
already did in patch 5/6), no need to provide distinct numbers here.
This would be simply

#define SNDRV_MINOR_COMPR		2

and define the single SNDRV_DEVICE_TYPE_COMPR.
Then you'll have to up to two devices for the static minors and more
for dynamic minors.  So, the below would be:

> diff --git a/sound/core/sound.c b/sound/core/sound.c
> index 828af35..2b680dd 100644
> --- a/sound/core/sound.c
> +++ b/sound/core/sound.c
> @@ -233,6 +233,12 @@ static int snd_kernel_minor(int type, struct snd_card *card, int dev)
>  			return -EINVAL;
>  		minor = SNDRV_MINOR(card->number, type + dev);
>  		break;
> +	case SNDRV_DEVICE_TYPE_COMPR_PLAYBACK:
> +	case SNDRV_DEVICE_TYPE_COMPR_CAPTURE:
> +		if (snd_BUG_ON(!card))
> +			return -EINVAL;
> +		minor = SNDRV_MINOR(card->number, type);
> +		break;

Instead of this, just add case SNDRV_DEVICE_TYPE_COMPR in the cases of
other types like PCM and RAWMIDI, i.e.

> +		minor = SNDRV_MINOR(card->number, type + dev);


Takashi


More information about the Alsa-devel mailing list