summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/pvrusb2
diff options
context:
space:
mode:
authorMike Isely <isely@pobox.com>2006-12-27 20:17:26 -0600
committerMike Isely <isely@pobox.com>2006-12-27 20:17:26 -0600
commit83ae242c47af9df6d3ea6c1ec17f95c302960dd1 (patch)
treeb7330b2487f1a1208854db1ee0f0edb248c44e7a /linux/drivers/media/video/pvrusb2
parent88d2794e9385b97e2aaef1416ca46d93d6f5ce50 (diff)
downloadmediapointer-dvb-s2-83ae242c47af9df6d3ea6c1ec17f95c302960dd1.tar.gz
mediapointer-dvb-s2-83ae242c47af9df6d3ea6c1ec17f95c302960dd1.tar.bz2
pvrusb2: Implement means to override vbi and radio device minor numbers
From: Mike Isely <isely@pobox.com> Support specification of vbi and radio device minor numbers in a manner similar to the video device minor number. Signed-off-by: Mike Isely <isely@pobox.com>
Diffstat (limited to 'linux/drivers/media/video/pvrusb2')
-rw-r--r--linux/drivers/media/video/pvrusb2/pvrusb2-v4l2.c32
1 files changed, 25 insertions, 7 deletions
diff --git a/linux/drivers/media/video/pvrusb2/pvrusb2-v4l2.c b/linux/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 0d1dcd11c..2536c6d08 100644
--- a/linux/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/linux/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -72,7 +72,13 @@ struct pvr2_v4l2 {
static int video_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1};
module_param_array(video_nr, int, NULL, 0444);
-MODULE_PARM_DESC(video_nr, "Offset for device's minor");
+MODULE_PARM_DESC(video_nr, "Offset for device's video dev minor");
+static int radio_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1};
+module_param_array(radio_nr, int, NULL, 0444);
+MODULE_PARM_DESC(radio_nr, "Offset for device's radio dev minor");
+static int vbi_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1};
+module_param_array(vbi_nr, int, NULL, 0444);
+MODULE_PARM_DESC(vbi_nr, "Offset for device's vbi dev minor");
static struct v4l2_capability pvr_capability ={
.driver = "pvrusb2",
@@ -1142,7 +1148,18 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
mindevnum = -1;
unit_number = pvr2_hdw_get_unit_number(vp->channel.mc_head->hdw);
if ((unit_number >= 0) && (unit_number < PVR_NUM)) {
- mindevnum = video_nr[unit_number];
+ switch (v4l_type) {
+ case VFL_TYPE_VBI:
+ mindevnum = vbi_nr[unit_number];
+ break;
+ case VFL_TYPE_RADIO:
+ mindevnum = radio_nr[unit_number];
+ break;
+ case VFL_TYPE_GRABBER:
+ default:
+ mindevnum = video_nr[unit_number];
+ break;
+ }
}
if ((video_register_device(&dip->devbase, v4l_type, mindevnum) < 0) &&
(video_register_device(&dip->devbase, v4l_type, -1) < 0)) {
@@ -1151,17 +1168,18 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
switch (cfg) {
case pvr2_config_mpeg:
printk(KERN_INFO "pvrusb2: registered device video%d [%s]\n",
- dip->devbase.minor,pvr2_config_get_name(dip->config));
+ dip->devbase.minor & 0x1f,
+ pvr2_config_get_name(dip->config));
break;
case pvr2_config_vbi:
printk(KERN_INFO "pvrusb2: registered device vbi%d [%s]\n",
- dip->devbase.minor - MINOR_VFL_TYPE_VBI_MIN,
- pvr2_config_get_name(dip->config));
+ dip->devbase.minor & 0x1f,
+ pvr2_config_get_name(dip->config));
break;
case pvr2_config_radio:
printk(KERN_INFO "pvrusb2: registered device radio%d [%s]\n",
- dip->devbase.minor - MINOR_VFL_TYPE_RADIO_MIN,
- pvr2_config_get_name(dip->config));
+ dip->devbase.minor & 0x1f,
+ pvr2_config_get_name(dip->config));
break;
default:
break;