aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/pvrusb2/pvrusb2-sysfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/pvrusb2/pvrusb2-sysfs.c')
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-sysfs.c30
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
744static 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
738static ssize_t v4l_radio_minor_number_show(struct class_device *class_dev, 754static 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);