diff options
author | Mike Isely <isely@pobox.com> | 2006-12-27 21:17:26 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-02-21 10:34:29 -0500 |
commit | 5e6862cefe004f0f7ad86e0a80df4d9465576903 (patch) | |
tree | 7ad46003d31bdd3df1f2421a8a70e1218d579f79 | |
parent | f5156b06acaad13b74f72bf62025de7b76b1b8a4 (diff) |
V4L/DVB (5044): Pvrusb2: Allow overriding vbi and radio device minor numbers
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>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-v4l2.c | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c index 3a2a0ca33e90..28187fbb5414 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c +++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c | |||
@@ -71,7 +71,13 @@ struct pvr2_v4l2 { | |||
71 | 71 | ||
72 | static int video_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1}; | 72 | static int video_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1}; |
73 | module_param_array(video_nr, int, NULL, 0444); | 73 | module_param_array(video_nr, int, NULL, 0444); |
74 | MODULE_PARM_DESC(video_nr, "Offset for device's minor"); | 74 | MODULE_PARM_DESC(video_nr, "Offset for device's video dev minor"); |
75 | static int radio_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1}; | ||
76 | module_param_array(radio_nr, int, NULL, 0444); | ||
77 | MODULE_PARM_DESC(radio_nr, "Offset for device's radio dev minor"); | ||
78 | static int vbi_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1}; | ||
79 | module_param_array(vbi_nr, int, NULL, 0444); | ||
80 | MODULE_PARM_DESC(vbi_nr, "Offset for device's vbi dev minor"); | ||
75 | 81 | ||
76 | static struct v4l2_capability pvr_capability ={ | 82 | static struct v4l2_capability pvr_capability ={ |
77 | .driver = "pvrusb2", | 83 | .driver = "pvrusb2", |
@@ -1113,7 +1119,18 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip, | |||
1113 | mindevnum = -1; | 1119 | mindevnum = -1; |
1114 | unit_number = pvr2_hdw_get_unit_number(vp->channel.mc_head->hdw); | 1120 | unit_number = pvr2_hdw_get_unit_number(vp->channel.mc_head->hdw); |
1115 | if ((unit_number >= 0) && (unit_number < PVR_NUM)) { | 1121 | if ((unit_number >= 0) && (unit_number < PVR_NUM)) { |
1116 | mindevnum = video_nr[unit_number]; | 1122 | switch (v4l_type) { |
1123 | case VFL_TYPE_VBI: | ||
1124 | mindevnum = vbi_nr[unit_number]; | ||
1125 | break; | ||
1126 | case VFL_TYPE_RADIO: | ||
1127 | mindevnum = radio_nr[unit_number]; | ||
1128 | break; | ||
1129 | case VFL_TYPE_GRABBER: | ||
1130 | default: | ||
1131 | mindevnum = video_nr[unit_number]; | ||
1132 | break; | ||
1133 | } | ||
1117 | } | 1134 | } |
1118 | if ((video_register_device(&dip->devbase, v4l_type, mindevnum) < 0) && | 1135 | if ((video_register_device(&dip->devbase, v4l_type, mindevnum) < 0) && |
1119 | (video_register_device(&dip->devbase, v4l_type, -1) < 0)) { | 1136 | (video_register_device(&dip->devbase, v4l_type, -1) < 0)) { |
@@ -1122,17 +1139,18 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip, | |||
1122 | switch (cfg) { | 1139 | switch (cfg) { |
1123 | case pvr2_config_mpeg: | 1140 | case pvr2_config_mpeg: |
1124 | printk(KERN_INFO "pvrusb2: registered device video%d [%s]\n", | 1141 | printk(KERN_INFO "pvrusb2: registered device video%d [%s]\n", |
1125 | dip->devbase.minor,pvr2_config_get_name(dip->config)); | 1142 | dip->devbase.minor & 0x1f, |
1143 | pvr2_config_get_name(dip->config)); | ||
1126 | break; | 1144 | break; |
1127 | case pvr2_config_vbi: | 1145 | case pvr2_config_vbi: |
1128 | printk(KERN_INFO "pvrusb2: registered device vbi%d [%s]\n", | 1146 | printk(KERN_INFO "pvrusb2: registered device vbi%d [%s]\n", |
1129 | dip->devbase.minor - MINOR_VFL_TYPE_VBI_MIN, | 1147 | dip->devbase.minor & 0x1f, |
1130 | pvr2_config_get_name(dip->config)); | 1148 | pvr2_config_get_name(dip->config)); |
1131 | break; | 1149 | break; |
1132 | case pvr2_config_radio: | 1150 | case pvr2_config_radio: |
1133 | printk(KERN_INFO "pvrusb2: registered device radio%d [%s]\n", | 1151 | printk(KERN_INFO "pvrusb2: registered device radio%d [%s]\n", |
1134 | dip->devbase.minor - MINOR_VFL_TYPE_RADIO_MIN, | 1152 | dip->devbase.minor & 0x1f, |
1135 | pvr2_config_get_name(dip->config)); | 1153 | pvr2_config_get_name(dip->config)); |
1136 | break; | 1154 | break; |
1137 | default: | 1155 | default: |
1138 | break; | 1156 | break; |