ChangeSet 1.1276.22.24, 2003/08/22 15:42:39-07:00, [EMAIL PROTECTED]

[PATCH] USB: add sysfs files for stv680 driver, replacing the lost proc functionality.


 drivers/usb/media/stv680.c |   53 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+)


diff -Nru a/drivers/usb/media/stv680.c b/drivers/usb/media/stv680.c
--- a/drivers/usb/media/stv680.c        Tue Sep  2 12:46:43 2003
+++ b/drivers/usb/media/stv680.c        Tue Sep  2 12:46:43 2003
@@ -510,6 +510,57 @@
 
 /***************** last of pencam  routines  *******************/
 
+/****************************************************************************
+ *  sysfs
+ ***************************************************************************/
+static inline struct usb_stv *cd_to_stv(struct class_device *cd)
+{
+       struct video_device *vdev = to_video_device(cd);
+       return video_get_drvdata(vdev);
+}
+
+#define stv680_file(name, variable, field)                             \
+static ssize_t show_##name(struct class_device *class_dev, char *buf)  \
+{                                                                      \
+       struct video_device *vdev = to_video_device(class_dev);         \
+       struct usb_stv *stv = video_get_drvdata(vdev);                  \
+       return sprintf(buf, field, stv->variable);                      \
+}                                                                      \
+static CLASS_DEVICE_ATTR(name, S_IRUGO, show_##name, NULL);
+
+stv680_file(model, camera_name, "%s\n");
+stv680_file(in_use, user, "%d\n");
+stv680_file(streaming, streaming, "%d\n");
+stv680_file(palette, palette, "%i\n");
+stv680_file(frames_total, readcount, "%d\n");
+stv680_file(frames_read, framecount, "%d\n");
+stv680_file(packets_dropped, dropped, "%d\n");
+stv680_file(decoding_errors, error, "%d\n");
+
+static void stv680_create_sysfs_files(struct video_device *vdev)
+{
+       video_device_create_file(vdev, &class_device_attr_model);
+       video_device_create_file(vdev, &class_device_attr_in_use);
+       video_device_create_file(vdev, &class_device_attr_streaming);
+       video_device_create_file(vdev, &class_device_attr_palette);
+       video_device_create_file(vdev, &class_device_attr_frames_total);
+       video_device_create_file(vdev, &class_device_attr_frames_read);
+       video_device_create_file(vdev, &class_device_attr_packets_dropped);
+       video_device_create_file(vdev, &class_device_attr_decoding_errors);
+}
+
+static void stv680_remove_sysfs_files(struct video_device *vdev)
+{
+       video_device_remove_file(vdev, &class_device_attr_model);
+       video_device_remove_file(vdev, &class_device_attr_in_use);
+       video_device_remove_file(vdev, &class_device_attr_streaming);
+       video_device_remove_file(vdev, &class_device_attr_palette);
+       video_device_remove_file(vdev, &class_device_attr_frames_total);
+       video_device_remove_file(vdev, &class_device_attr_frames_read);
+       video_device_remove_file(vdev, &class_device_attr_packets_dropped);
+       video_device_remove_file(vdev, &class_device_attr_decoding_errors);
+}
+
 /********************************************************************
  * Camera control
  *******************************************************************/
@@ -1388,6 +1439,7 @@
        PDEBUG (0, "STV(i): registered new video device: video%d", 
stv680->vdev->minor);
 
        usb_set_intfdata (intf, stv680);
+       stv680_create_sysfs_files(stv680->vdev);
        return 0;
 
 error:
@@ -1432,6 +1484,7 @@
        if (stv680) {
                /* We don't want people trying to open up the device */
                if (stv680->vdev) {
+                       stv680_remove_sysfs_files(stv680->vdev);
                        video_unregister_device(stv680->vdev);
                        stv680->vdev = NULL;
                }



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to