[PATCH] Floppy: Add cmos attribute to floppy driver

2005-09-06 Thread Linux Kernel Mailing List
tree 3b440ad6560e832f2b91629e6af7fa9b602f75c0
parent 76d1ce00bdd76c2987fbfb763cd40447413a55b3
author Hannes Reinecke <[EMAIL PROTECTED]> Fri, 15 Jul 2005 10:09:25 +0200
committer Greg Kroah-Hartman <[EMAIL PROTECTED]> Tue, 06 Sep 2005 06:03:10 -0700

[PATCH] Floppy: Add cmos attribute to floppy driver

Currently only a device 'fdX' shows up in sysfs; the other possible
device for this drive (like fd0h1440 etc) must be guessed from there.

This patch corrects the floppy driver to create a platform device for
each floppy found; each platform device also has an attribute 'cmos'
which represents the cmos type for this drive. From this attribute the
other possible device types can be computed.

From: Hannes Reinecke <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

 drivers/block/floppy.c |   42 +-
 1 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -493,6 +493,8 @@ static struct floppy_struct user_params[
 
 static sector_t floppy_sizes[256];
 
+static char floppy_device_name[] = "floppy";
+
 /*
  * The driver is trying to determine the correct media format
  * while probing is set. rw_interrupt() clears it after a
@@ -4191,18 +4193,25 @@ static int __init floppy_setup(char *str
 
 static int have_no_fdc = -ENODEV;
 
+static ssize_t floppy_cmos_show(struct device *dev, struct device_attribute 
*attr, char *buf)
+{
+   struct platform_device *p = container_of(dev,struct 
platform_device,dev);
+   int drive = p->id;
+   ssize_t retval;
+
+   retval = sprintf(buf,"%X\n", UDP->cmos);
+
+   return retval;
+}
+
+DEVICE_ATTR(cmos,S_IRUGO,floppy_cmos_show,NULL);
+
 static void floppy_device_release(struct device *dev)
 {
complete(&device_release);
 }
 
-static struct platform_device floppy_device = {
-   .name   = "floppy",
-   .id = 0,
-   .dev= {
-   .release = floppy_device_release,
-   }
-};
+static struct platform_device floppy_device[N_DRIVE];
 
 static struct kobject *floppy_find(dev_t dev, int *part, void *data)
 {
@@ -4370,20 +4379,26 @@ static int __init floppy_init(void)
goto out_flush_work;
}
 
-   err = platform_device_register(&floppy_device);
-   if (err)
-   goto out_flush_work;
-
for (drive = 0; drive < N_DRIVE; drive++) {
if (!(allowed_drive_mask & (1 << drive)))
continue;
if (fdc_state[FDC(drive)].version == FDC_NONE)
continue;
+
+   floppy_device[drive].name = floppy_device_name;
+   floppy_device[drive].id = drive;
+   floppy_device[drive].dev.release = floppy_device_release;
+
+   err = platform_device_register(&floppy_device[drive]);
+   if (err)
+   goto out_flush_work;
+
+   device_create_file(&floppy_device[drive].dev,&dev_attr_cmos);
/* to be cleaned up... */
disks[drive]->private_data = (void *)(long)drive;
disks[drive]->queue = floppy_queue;
disks[drive]->flags |= GENHD_FL_REMOVABLE;
-   disks[drive]->driverfs_dev = &floppy_device.dev;
+   disks[drive]->driverfs_dev = &floppy_device[drive].dev;
add_disk(disks[drive]);
}
 
@@ -4603,10 +4618,11 @@ void cleanup_module(void)
fdc_state[FDC(drive)].version != FDC_NONE) {
del_gendisk(disks[drive]);
unregister_devfs_entries(drive);
+   device_remove_file(&floppy_device[drive].dev, 
&dev_attr_cmos);
+   platform_device_unregister(&floppy_device[drive]);
}
put_disk(disks[drive]);
}
-   platform_device_unregister(&floppy_device);
devfs_remove("floppy");
 
del_timer_sync(&fd_timeout);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Floppy: add cmos attribute to floppy driver tidy

2005-09-06 Thread Linux Kernel Mailing List
tree 1e2fe584510f1af920b084cbbe1f2fe756508733
parent 94fd0db7bfb4a03da202fd426d4e8e7eab42ab86
author Andrew Morton <[EMAIL PROTECTED]> Thu, 28 Jul 2005 07:37:34 -0700
committer Greg Kroah-Hartman <[EMAIL PROTECTED]> Tue, 06 Sep 2005 06:03:11 -0700

[PATCH] Floppy: add cmos attribute to floppy driver tidy

Fiddle with coding style a bit.

Cc: Hannes Reinecke <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

 drivers/block/floppy.c |   15 +++
 1 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -4193,17 +4193,16 @@ static int __init floppy_setup(char *str
 
 static int have_no_fdc = -ENODEV;
 
-static ssize_t floppy_cmos_show(struct device *dev, struct device_attribute 
*attr, char *buf)
+static ssize_t floppy_cmos_show(struct device *dev,
+   struct device_attribute *attr, char *buf)
 {
-   struct platform_device *p = container_of(dev,struct 
platform_device,dev);
-   int drive = p->id;
-   ssize_t retval;
-
-   retval = sprintf(buf,"%X\n", UDP->cmos);
+   struct platform_device *p;
+   int drive;
 
-   return retval;
+   p = container_of(dev, struct platform_device,dev);
+   drive = p->id;
+   return sprintf(buf, "%X\n", UDP->cmos);
 }
-
 DEVICE_ATTR(cmos,S_IRUGO,floppy_cmos_show,NULL);
 
 static void floppy_device_release(struct device *dev)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html