diff options
Diffstat (limited to 'drivers/media/video/pvrusb2/pvrusb2-sysfs.c')
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-sysfs.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c index 91396fd573e4..a741c556a39a 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c +++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c | |||
@@ -42,9 +42,11 @@ struct pvr2_sysfs { | |||
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_v4l_radio_minor_number; |
44 | struct class_device_attribute attr_unit_number; | 44 | struct class_device_attribute attr_unit_number; |
45 | struct class_device_attribute attr_bus_info; | ||
45 | int v4l_minor_number_created_ok; | 46 | int v4l_minor_number_created_ok; |
46 | int v4l_radio_minor_number_created_ok; | 47 | int v4l_radio_minor_number_created_ok; |
47 | int unit_number_created_ok; | 48 | int unit_number_created_ok; |
49 | int bus_info_created_ok; | ||
48 | }; | 50 | }; |
49 | 51 | ||
50 | #ifdef CONFIG_VIDEO_PVRUSB2_DEBUGIFC | 52 | #ifdef CONFIG_VIDEO_PVRUSB2_DEBUGIFC |
@@ -705,6 +707,10 @@ static void class_dev_destroy(struct pvr2_sysfs *sfp) | |||
705 | pvr2_sysfs_tear_down_debugifc(sfp); | 707 | pvr2_sysfs_tear_down_debugifc(sfp); |
706 | #endif /* CONFIG_VIDEO_PVRUSB2_DEBUGIFC */ | 708 | #endif /* CONFIG_VIDEO_PVRUSB2_DEBUGIFC */ |
707 | pvr2_sysfs_tear_down_controls(sfp); | 709 | pvr2_sysfs_tear_down_controls(sfp); |
710 | if (sfp->bus_info_created_ok) { | ||
711 | class_device_remove_file(sfp->class_dev, | ||
712 | &sfp->attr_bus_info); | ||
713 | } | ||
708 | if (sfp->v4l_minor_number_created_ok) { | 714 | if (sfp->v4l_minor_number_created_ok) { |
709 | class_device_remove_file(sfp->class_dev, | 715 | class_device_remove_file(sfp->class_dev, |
710 | &sfp->attr_v4l_minor_number); | 716 | &sfp->attr_v4l_minor_number); |
@@ -735,6 +741,16 @@ static ssize_t v4l_minor_number_show(struct class_device *class_dev,char *buf) | |||
735 | } | 741 | } |
736 | 742 | ||
737 | 743 | ||
744 | static ssize_t bus_info_show(struct class_device *class_dev,char *buf) | ||
745 | { | ||
746 | struct pvr2_sysfs *sfp; | ||
747 | sfp = (struct pvr2_sysfs *)class_dev->class_data; | ||
748 | if (!sfp) return -EINVAL; | ||
749 | return scnprintf(buf,PAGE_SIZE,"%s\n", | ||
750 | pvr2_hdw_get_bus_info(sfp->channel.hdw)); | ||
751 | } | ||
752 | |||
753 | |||
738 | static ssize_t v4l_radio_minor_number_show(struct class_device *class_dev, | 754 | static ssize_t v4l_radio_minor_number_show(struct class_device *class_dev, |
739 | char *buf) | 755 | char *buf) |
740 | { | 756 | { |
@@ -836,6 +852,20 @@ static void class_dev_create(struct pvr2_sysfs *sfp, | |||
836 | sfp->unit_number_created_ok = !0; | 852 | sfp->unit_number_created_ok = !0; |
837 | } | 853 | } |
838 | 854 | ||
855 | sfp->attr_bus_info.attr.owner = THIS_MODULE; | ||
856 | sfp->attr_bus_info.attr.name = "bus_info_str"; | ||
857 | sfp->attr_bus_info.attr.mode = S_IRUGO; | ||
858 | sfp->attr_bus_info.show = bus_info_show; | ||
859 | sfp->attr_bus_info.store = NULL; | ||
860 | ret = class_device_create_file(sfp->class_dev, | ||
861 | &sfp->attr_bus_info); | ||
862 | if (ret < 0) { | ||
863 | printk(KERN_WARNING "%s: class_device_create_file error: %d\n", | ||
864 | __FUNCTION__, ret); | ||
865 | } else { | ||
866 | sfp->bus_info_created_ok = !0; | ||
867 | } | ||
868 | |||
839 | pvr2_sysfs_add_controls(sfp); | 869 | pvr2_sysfs_add_controls(sfp); |
840 | #ifdef CONFIG_VIDEO_PVRUSB2_DEBUGIFC | 870 | #ifdef CONFIG_VIDEO_PVRUSB2_DEBUGIFC |
841 | pvr2_sysfs_add_debugifc(sfp); | 871 | pvr2_sysfs_add_debugifc(sfp); |