ivtv-alsa: Add index to specify device number
Subsystems (2)
PATCH 1/1 ivtv-alsa: Add index to specify device number
When using multiple capture cards, it migth be necessary to identify a specific device with an ALSA one. If not, the order of the ALSA devices might have no relation to the id of the radio or video device.
--- drivers/media/pci/ivtv/ivtv-alsa-main.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
drivers/media/pci/ivtv/ivtv-alsa-main.c +9 -1
@@ -41,6 +41,7 @@#include "ivtv-alsa-pcm.h" int ivtv_alsa_debug; +static int index[SNDRV_CARDS ] =SNDRV_DEFAULT_IDX ; #define IVTV_DEBUG_ALSA_INFO(fmt, arg...) \ do { \
@@ -54,6 +55,10 @@ MODULE_PARM_DESC(debug,"\t\t\t 1/0x0001: warning\n" "\t\t\t 2/0x0002: info\n"); +module_param_array (index, int,NULL ,0444 ); +MODULE_PARM_DESC (index, +"Index value for IVTV ALSA capture interface(s).\n" ); +MODULE_AUTHOR ("Andy Walls" );MODULE_DESCRIPTION ("CX23415/CX23416 ALSA Interface" );MODULE_SUPPORTED_DEVICE ("CX23415/CX23416 MPEG2 encoder" );
@@ -146,7 +151,7 @@ static int snd_ivtv_init(struct v4l2_device *v4l2_dev)/* (2) Create a card instance */ ret =snd_card_new (&itv->pdev->dev, -SNDRV_DEFAULT_IDX1 ,/* use first available id */ + index[itv->instance] ==-1 ?SNDRV_DEFAULT_IDX1 : index[itv->instance],/* use first available id if not specified otherwise*/ SNDRV_DEFAULT_STR1 ,/* xid from end of shortname*/ THIS_MODULE ,0 , &sc);if (ret) {
@@ -196,6 +201,9 @@ static int snd_ivtv_init(struct v4l2_device *v4l2_dev) goto err_exit_free; } +IVTV_ALSA_INFO ("%s:: Instance %d registered ALSA card %d\n" , + __func__, itv->instance, index[itv->instance]); +return 0 ; err_exit_free:
Signature · 1 line
2.1.4
Quoted 31 lines · Nicolas Sugino
When using multiple capture cards, it migth be necessary to identify a specific device with an ALSA one. If not, the order of the ALSA devices might have no relation to the id of the radio or video device.
Signed-off-by Nicolas Sugino <[email protected]>--- drivers/media/pci/ivtv/ivtv-alsa-main.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)drivers/media/pci/ivtv/ivtv-alsa-main.c +5
-0@@ -41,6 +41,7 @@#include "ivtv-alsa-pcm.h" int ivtv_alsa_debug; +static int index[SNDRV_CARDS ] =SNDRV_DEFAULT_IDX ; #define IVTV_DEBUG_ALSA_INFO(fmt, arg...) \ do { \@@ -54,6 +55,10 @@ MODULE_PARM_DESC(debug,"\t\t\t 1/0x0001: warning\n" "\t\t\t 2/0x0002: info\n"); +module_param_array (index, int,NULL ,0444 ); +MODULE_PARM_DESC (index, +"Index value for IVTV ALSA capture interface(s).\n" ); +MODULE_AUTHOR ("Andy Walls" );MODULE_DESCRIPTION ("CX23415/CX23416 ALSA Interface" );MODULE_SUPPORTED_DEVICE ("CX23415/CX23416 MPEG2 encoder" );
drivers/media/pci/ivtv/ivtv-alsa-main.c static int snd_ivtv_init(struct v4l2_device *v4l2_dev) · line 154
Quoted 5 lines
drivers/media/pci/ivtv/ivtv-alsa-main.c +1
-1@@ -146,7 +151,7 @@ static int snd_ivtv_init(struct v4l2_device *v4l2_dev)/* (2) Create a card instance */ ret = snd_card_new(&itv->pdev->dev, - SNDRV_DEFAULT_IDX1, /* use first available id */ + index[itv->instance] == -1 ? SNDRV_DEFAULT_IDX1 : index[itv->instance], /* use first available id if not specified otherwise*/
This line is way too long.
It's more readable if you make an 'idx' local variable that you assign first, then use in snd_card_new. The comment can go in front of the idx assignment.
drivers/media/pci/ivtv/ivtv-alsa-main.c static int snd_ivtv_init(struct v4l2_device *v4l2_dev) · line 205
Quoted 9 lines
drivers/media/pci/ivtv/ivtv-alsa-main.c +2
-0SNDRV_DEFAULT_STR1 ,/* xid from end of shortname*/ THIS_MODULE, 0, &sc);if (ret) {@@ -196,6 +201,9 @@ static int snd_ivtv_init(struct v4l2_device *v4l2_dev) goto err_exit_free; } +IVTV_ALSA_INFO ("%s:: Instance %d registered ALSA card %d\n" , + __func__, itv->instance, index[itv->instance]);
You can't use index[] here since it could give back -1. You can probably get the actual index from sc.
drivers/media/pci/ivtv/ivtv-alsa-main.c static int snd_ivtv_init(struct v4l2_device *v4l2_dev) · line 209
Quoted 5 lines
drivers/media/pci/ivtv/ivtv-alsa-main.c +1
-0+return 0 ; err_exit_free:
Regards,
Hans