diff options
Diffstat (limited to 'drivers/media/video/pvrusb2/pvrusb2-sysfs.c')
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-sysfs.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c index c294f46db9b9..d583c9777b6d 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c +++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c | |||
@@ -40,8 +40,10 @@ struct pvr2_sysfs { | |||
40 | struct pvr2_sysfs_ctl_item *item_first; | 40 | struct pvr2_sysfs_ctl_item *item_first; |
41 | struct pvr2_sysfs_ctl_item *item_last; | 41 | struct pvr2_sysfs_ctl_item *item_last; |
42 | struct class_device_attribute attr_v4l_minor_number; | 42 | struct class_device_attribute attr_v4l_minor_number; |
43 | struct class_device_attribute attr_v4l_radio_minor_number; | ||
43 | struct class_device_attribute attr_unit_number; | 44 | struct class_device_attribute attr_unit_number; |
44 | int v4l_minor_number_created_ok; | 45 | int v4l_minor_number_created_ok; |
46 | int v4l_radio_minor_number_created_ok; | ||
45 | int unit_number_created_ok; | 47 | int unit_number_created_ok; |
46 | }; | 48 | }; |
47 | 49 | ||
@@ -709,6 +711,10 @@ static void class_dev_destroy(struct pvr2_sysfs *sfp) | |||
709 | class_device_remove_file(sfp->class_dev, | 711 | class_device_remove_file(sfp->class_dev, |
710 | &sfp->attr_v4l_minor_number); | 712 | &sfp->attr_v4l_minor_number); |
711 | } | 713 | } |
714 | if (sfp->v4l_radio_minor_number_created_ok) { | ||
715 | class_device_remove_file(sfp->class_dev, | ||
716 | &sfp->attr_v4l_radio_minor_number); | ||
717 | } | ||
712 | if (sfp->unit_number_created_ok) { | 718 | if (sfp->unit_number_created_ok) { |
713 | class_device_remove_file(sfp->class_dev, | 719 | class_device_remove_file(sfp->class_dev, |
714 | &sfp->attr_unit_number); | 720 | &sfp->attr_unit_number); |
@@ -726,7 +732,18 @@ static ssize_t v4l_minor_number_show(struct class_device *class_dev,char *buf) | |||
726 | sfp = (struct pvr2_sysfs *)class_dev->class_data; | 732 | sfp = (struct pvr2_sysfs *)class_dev->class_data; |
727 | if (!sfp) return -EINVAL; | 733 | if (!sfp) return -EINVAL; |
728 | return scnprintf(buf,PAGE_SIZE,"%d\n", | 734 | return scnprintf(buf,PAGE_SIZE,"%d\n", |
729 | pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw)); | 735 | pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw,0)); |
736 | } | ||
737 | |||
738 | |||
739 | static ssize_t v4l_radio_minor_number_show(struct class_device *class_dev, | ||
740 | char *buf) | ||
741 | { | ||
742 | struct pvr2_sysfs *sfp; | ||
743 | sfp = (struct pvr2_sysfs *)class_dev->class_data; | ||
744 | if (!sfp) return -EINVAL; | ||
745 | return scnprintf(buf,PAGE_SIZE,"%d\n", | ||
746 | pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw,2)); | ||
730 | } | 747 | } |
731 | 748 | ||
732 | 749 | ||
@@ -793,6 +810,20 @@ static void class_dev_create(struct pvr2_sysfs *sfp, | |||
793 | sfp->v4l_minor_number_created_ok = !0; | 810 | sfp->v4l_minor_number_created_ok = !0; |
794 | } | 811 | } |
795 | 812 | ||
813 | sfp->attr_v4l_radio_minor_number.attr.owner = THIS_MODULE; | ||
814 | sfp->attr_v4l_radio_minor_number.attr.name = "v4l_radio_minor_number"; | ||
815 | sfp->attr_v4l_radio_minor_number.attr.mode = S_IRUGO; | ||
816 | sfp->attr_v4l_radio_minor_number.show = v4l_radio_minor_number_show; | ||
817 | sfp->attr_v4l_radio_minor_number.store = NULL; | ||
818 | ret = class_device_create_file(sfp->class_dev, | ||
819 | &sfp->attr_v4l_radio_minor_number); | ||
820 | if (ret < 0) { | ||
821 | printk(KERN_WARNING "%s: class_device_create_file error: %d\n", | ||
822 | __FUNCTION__, ret); | ||
823 | } else { | ||
824 | sfp->v4l_radio_minor_number_created_ok = !0; | ||
825 | } | ||
826 | |||
796 | sfp->attr_unit_number.attr.owner = THIS_MODULE; | 827 | sfp->attr_unit_number.attr.owner = THIS_MODULE; |
797 | sfp->attr_unit_number.attr.name = "unit_number"; | 828 | sfp->attr_unit_number.attr.name = "unit_number"; |
798 | sfp->attr_unit_number.attr.mode = S_IRUGO; | 829 | sfp->attr_unit_number.attr.mode = S_IRUGO; |