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