[alsa-devel] question on snd minors
Takashi Iwai
tiwai at suse.de
Tue Nov 15 09:11:26 CET 2011
At Tue, 15 Nov 2011 13:15:39 +0530,
Vinod Koul wrote:
>
> On Tue, 2011-11-15 at 07:39 +0100, Takashi Iwai wrote:
> > At Tue, 15 Nov 2011 09:39:23 +0530,
> > Vinod Koul wrote:
> > >
> > > Hi,
> > >
> > > for the compressed path work I had a question regarding the minor
> > > numbers.
> > >
> > > Looks like we have 32 minors (5 bits) and going by current table there
> > > is no space for new devices.
> > > So should i increase the number to 64 (6bits), add compressed playback
> > > and capture devices as 32-39, 40-48 respectively and keep rest as
> > > reserved, or would you like it to be kept 32 and realign the table?
> >
> > For the large number of concurrent accesses, we usually take an
> > approach with sub-streams instead of scattering too many device
> > files.
> Perhaps I should have worded my question better :)
>
> For compressed path (i had posted RFC roughly two months back [1]), we
> are creating new devices /dev/snd/comprCxDxp which would be registered
> as SNDRV_DEV_COMPRESS. For the registration part we need to assign the
> minors, right? Hence the above question
>
> Or did I miss something very obvious here...
Yes, take a look at PCM devices, for example. They have sub-streams.
So, you can open a single device file multiple times to assign
multiple sub-streams. If any specific substream with a given index is
needed, it can be specified via ioctl before open. Otherwise, the
next empty substream is assigned.
The similar implementation is found in rawmidi, too.
Takashi
> This is how I wrote it now, I wanted to run this with you folks first
>
> diff --git a/include/sound/core.h b/include/sound/core.h
> index 1fa2407..9d1e54b 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..ffa6001 100644
> --- a/include/sound/minors.h
> +++ b/include/sound/minors.h
> @@ -23,10 +23,10 @@
>
> #define SNDRV_OS_MINORS 256
>
> -#define SNDRV_MINOR_DEVICES 32
> -#define SNDRV_MINOR_CARD(minor) ((minor) >> 5)
> -#define SNDRV_MINOR_DEVICE(minor) ((minor) & 0x001f)
> -#define SNDRV_MINOR(card, dev) (((card) << 5) | (dev))
> +#define SNDRV_MINOR_DEVICES 64
> +#define SNDRV_MINOR_CARD(minor) ((minor) >> 6)
> +#define SNDRV_MINOR_DEVICE(minor) ((minor) & 0x003f)
> +#define SNDRV_MINOR(card, dev) (((card) << 6) | (dev))
>
> /* these minors can still be used for autoloading devices (/dev/aload*) */
> #define SNDRV_MINOR_CONTROL 0 /* 0 */
> @@ -40,6 +40,8 @@
> #define SNDRV_MINOR_RAWMIDI 8 /* 8 - 15 */
> #define SNDRV_MINOR_PCM_PLAYBACK 16 /* 16 - 23 */
> #define SNDRV_MINOR_PCM_CAPTURE 24 /* 24 - 31 */
> +#define SNDRV_MINOR_COMPR_PLAYBACK 32 /* 32 - 35 */
> +#define SNDRV_MINOR_COMPR_CAPTURE 36 /* 36 - 39 */
>
>
>
> --
> ~Vinod
>
> 1:
> http://mailman.alsa-project.org/pipermail/alsa-devel/2011-September/043408.html
>
More information about the Alsa-devel
mailing list