diff options
Diffstat (limited to 'drivers/media/video/pvrusb2')
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h | 3 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-hdw.c | 23 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-hdw.h | 5 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-sysfs.c | 6 | ||||
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-v4l2.c | 8 |
5 files changed, 28 insertions, 17 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h index 4f69431a8f4..e6d546f56d3 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h +++ b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h | |||
@@ -283,7 +283,8 @@ struct pvr2_hdw { | |||
283 | 283 | ||
284 | /* Minor numbers used by v4l logic (yes, this is a hack, as there | 284 | /* Minor numbers used by v4l logic (yes, this is a hack, as there |
285 | should be no v4l junk here). Probably a better way to do this. */ | 285 | should be no v4l junk here). Probably a better way to do this. */ |
286 | int v4l_minor_number[3]; | 286 | int v4l_minor_number_mpeg; |
287 | int v4l_minor_number_radio; | ||
287 | 288 | ||
288 | /* Location of eeprom or a negative number if none */ | 289 | /* Location of eeprom or a negative number if none */ |
289 | int eeprom_addr; | 290 | int eeprom_addr; |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c index 4b45299e187..6acd73ca9ed 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c +++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c | |||
@@ -1898,9 +1898,8 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf, | |||
1898 | 1898 | ||
1899 | hdw->eeprom_addr = -1; | 1899 | hdw->eeprom_addr = -1; |
1900 | hdw->unit_number = -1; | 1900 | hdw->unit_number = -1; |
1901 | hdw->v4l_minor_number[0] = -1; | 1901 | hdw->v4l_minor_number_mpeg = -1; |
1902 | hdw->v4l_minor_number[1] = -1; | 1902 | hdw->v4l_minor_number_radio = -1; |
1903 | hdw->v4l_minor_number[2] = -1; | ||
1904 | hdw->ctl_write_buffer = kmalloc(PVR2_CTL_BUFFSIZE,GFP_KERNEL); | 1903 | hdw->ctl_write_buffer = kmalloc(PVR2_CTL_BUFFSIZE,GFP_KERNEL); |
1905 | if (!hdw->ctl_write_buffer) goto fail; | 1904 | if (!hdw->ctl_write_buffer) goto fail; |
1906 | hdw->ctl_read_buffer = kmalloc(PVR2_CTL_BUFFSIZE,GFP_KERNEL); | 1905 | hdw->ctl_read_buffer = kmalloc(PVR2_CTL_BUFFSIZE,GFP_KERNEL); |
@@ -2548,16 +2547,26 @@ int pvr2_hdw_cpufw_get(struct pvr2_hdw *hdw,unsigned int offs, | |||
2548 | } | 2547 | } |
2549 | 2548 | ||
2550 | 2549 | ||
2551 | int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *hdw,int index) | 2550 | int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *hdw, |
2551 | enum pvr2_config index) | ||
2552 | { | 2552 | { |
2553 | return hdw->v4l_minor_number[index]; | 2553 | switch (index) { |
2554 | case pvr2_config_mpeg: return hdw->v4l_minor_number_mpeg; | ||
2555 | case pvr2_config_radio: return hdw->v4l_minor_number_radio; | ||
2556 | default: return -1; | ||
2557 | } | ||
2554 | } | 2558 | } |
2555 | 2559 | ||
2556 | 2560 | ||
2557 | /* Store a v4l minor device number */ | 2561 | /* Store a v4l minor device number */ |
2558 | void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *hdw,int index,int v) | 2562 | void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *hdw, |
2563 | enum pvr2_config index,int v) | ||
2559 | { | 2564 | { |
2560 | hdw->v4l_minor_number[index] = v; | 2565 | switch (index) { |
2566 | case pvr2_config_mpeg: hdw->v4l_minor_number_mpeg = v; | ||
2567 | case pvr2_config_radio: hdw->v4l_minor_number_radio = v; | ||
2568 | default: break; | ||
2569 | } | ||
2561 | } | 2570 | } |
2562 | 2571 | ||
2563 | 2572 | ||
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.h b/drivers/media/video/pvrusb2/pvrusb2-hdw.h index b1d80bd2678..fa3769a244a 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw.h +++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.h | |||
@@ -206,10 +206,11 @@ int pvr2_hdw_cpufw_get(struct pvr2_hdw *,unsigned int offs, | |||
206 | char *buf,unsigned int cnt); | 206 | char *buf,unsigned int cnt); |
207 | 207 | ||
208 | /* Retrieve a previously stored v4l minor device number */ | 208 | /* Retrieve a previously stored v4l minor device number */ |
209 | int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *,int); | 209 | int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *,enum pvr2_config index); |
210 | 210 | ||
211 | /* Store a v4l minor device number */ | 211 | /* Store a v4l minor device number */ |
212 | void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *,int,int); | 212 | void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *, |
213 | enum pvr2_config index,int); | ||
213 | 214 | ||
214 | /* Direct read/write access to chip's registers: | 215 | /* Direct read/write access to chip's registers: |
215 | chip_id - unique id of chip (e.g. I2C_DRIVERD_xxxx) | 216 | chip_id - unique id of chip (e.g. I2C_DRIVERD_xxxx) |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c index d583c9777b6..0f8021e2dd0 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c +++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c | |||
@@ -732,7 +732,8 @@ static ssize_t v4l_minor_number_show(struct class_device *class_dev,char *buf) | |||
732 | sfp = (struct pvr2_sysfs *)class_dev->class_data; | 732 | sfp = (struct pvr2_sysfs *)class_dev->class_data; |
733 | if (!sfp) return -EINVAL; | 733 | if (!sfp) return -EINVAL; |
734 | return scnprintf(buf,PAGE_SIZE,"%d\n", | 734 | return scnprintf(buf,PAGE_SIZE,"%d\n", |
735 | pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw,0)); | 735 | pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw, |
736 | pvr2_config_mpeg)); | ||
736 | } | 737 | } |
737 | 738 | ||
738 | 739 | ||
@@ -743,7 +744,8 @@ static ssize_t v4l_radio_minor_number_show(struct class_device *class_dev, | |||
743 | sfp = (struct pvr2_sysfs *)class_dev->class_data; | 744 | sfp = (struct pvr2_sysfs *)class_dev->class_data; |
744 | if (!sfp) return -EINVAL; | 745 | if (!sfp) return -EINVAL; |
745 | return scnprintf(buf,PAGE_SIZE,"%d\n", | 746 | return scnprintf(buf,PAGE_SIZE,"%d\n", |
746 | pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw,2)); | 747 | pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw, |
748 | pvr2_config_radio)); | ||
747 | } | 749 | } |
748 | 750 | ||
749 | 751 | ||
diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c index 3cea6101e9f..4acbbc71f7e 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c +++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c | |||
@@ -725,11 +725,9 @@ static void pvr2_v4l2_dev_destroy(struct pvr2_v4l2_dev *dip) | |||
725 | static void pvr2_v4l2_destroy_no_lock(struct pvr2_v4l2 *vp) | 725 | static void pvr2_v4l2_destroy_no_lock(struct pvr2_v4l2 *vp) |
726 | { | 726 | { |
727 | pvr2_hdw_v4l_store_minor_number(vp->channel.mc_head->hdw, | 727 | pvr2_hdw_v4l_store_minor_number(vp->channel.mc_head->hdw, |
728 | pvr2_config_mpeg-1,-1); | 728 | pvr2_config_mpeg,-1); |
729 | pvr2_hdw_v4l_store_minor_number(vp->channel.mc_head->hdw, | 729 | pvr2_hdw_v4l_store_minor_number(vp->channel.mc_head->hdw, |
730 | pvr2_config_vbi-1,-1); | 730 | pvr2_config_radio,-1); |
731 | pvr2_hdw_v4l_store_minor_number(vp->channel.mc_head->hdw, | ||
732 | pvr2_config_radio-1,-1); | ||
733 | pvr2_v4l2_dev_destroy(vp->vdev); | 731 | pvr2_v4l2_dev_destroy(vp->vdev); |
734 | 732 | ||
735 | pvr2_trace(PVR2_TRACE_STRUCT,"Destroying pvr2_v4l2 id=%p",vp); | 733 | pvr2_trace(PVR2_TRACE_STRUCT,"Destroying pvr2_v4l2 id=%p",vp); |
@@ -1135,7 +1133,7 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip, | |||
1135 | } | 1133 | } |
1136 | 1134 | ||
1137 | pvr2_hdw_v4l_store_minor_number(vp->channel.mc_head->hdw, | 1135 | pvr2_hdw_v4l_store_minor_number(vp->channel.mc_head->hdw, |
1138 | cfg-1,dip->devbase.minor); | 1136 | cfg,dip->devbase.minor); |
1139 | } | 1137 | } |
1140 | 1138 | ||
1141 | 1139 | ||