aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ide/Makefile4
-rw-r--r--drivers/ide/ide-floppy.c41
-rw-r--r--drivers/ide/ide-floppy.h7
-rw-r--r--drivers/ide/ide-floppy_proc.c33
4 files changed, 48 insertions, 37 deletions
diff --git a/drivers/ide/Makefile b/drivers/ide/Makefile
index f408983f89f3..06e7867052d3 100644
--- a/drivers/ide/Makefile
+++ b/drivers/ide/Makefile
@@ -39,6 +39,10 @@ obj-$(CONFIG_BLK_DEV_IDEPNP) += ide-pnp.o
39ide-cd_mod-y += ide-cd.o ide-cd_ioctl.o ide-cd_verbose.o 39ide-cd_mod-y += ide-cd.o ide-cd_ioctl.o ide-cd_verbose.o
40ide-floppy_mod-y += ide-floppy.o ide-floppy_ioctl.o 40ide-floppy_mod-y += ide-floppy.o ide-floppy_ioctl.o
41 41
42ifeq ($(CONFIG_IDE_PROC_FS), y)
43 ide-floppy_mod-y += ide-floppy_proc.o
44endif
45
42obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o 46obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o
43obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd_mod.o 47obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd_mod.o
44obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy_mod.o 48obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy_mod.o
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
index 169d4d93a6a9..cf0aa25470ee 100644
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -552,7 +552,7 @@ static int ide_floppy_get_capacity(ide_drive_t *drive)
552 return rc; 552 return rc;
553} 553}
554 554
555static sector_t idefloppy_capacity(ide_drive_t *drive) 555sector_t ide_floppy_capacity(ide_drive_t *drive)
556{ 556{
557 idefloppy_floppy_t *floppy = drive->driver_data; 557 idefloppy_floppy_t *floppy = drive->driver_data;
558 unsigned long capacity = floppy->blocks * floppy->bs_factor; 558 unsigned long capacity = floppy->blocks * floppy->bs_factor;
@@ -560,21 +560,6 @@ static sector_t idefloppy_capacity(ide_drive_t *drive)
560 return capacity; 560 return capacity;
561} 561}
562 562
563#ifdef CONFIG_IDE_PROC_FS
564ide_devset_rw_field(bios_cyl, bios_cyl);
565ide_devset_rw_field(bios_head, bios_head);
566ide_devset_rw_field(bios_sect, bios_sect);
567ide_devset_rw_field(ticks, pc_delay);
568
569static const struct ide_proc_devset idefloppy_settings[] = {
570 IDE_PROC_DEVSET(bios_cyl, 0, 1023),
571 IDE_PROC_DEVSET(bios_head, 0, 255),
572 IDE_PROC_DEVSET(bios_sect, 0, 63),
573 IDE_PROC_DEVSET(ticks, 0, 255),
574 { 0 },
575};
576#endif
577
578static void idefloppy_setup(ide_drive_t *drive, idefloppy_floppy_t *floppy) 563static void idefloppy_setup(ide_drive_t *drive, idefloppy_floppy_t *floppy)
579{ 564{
580 u16 *id = drive->id; 565 u16 *id = drive->id;
@@ -639,24 +624,6 @@ static void idefloppy_cleanup_obj(struct kref *kref)
639 kfree(floppy); 624 kfree(floppy);
640} 625}
641 626
642#ifdef CONFIG_IDE_PROC_FS
643static int proc_idefloppy_read_capacity(char *page, char **start, off_t off,
644 int count, int *eof, void *data)
645{
646 ide_drive_t*drive = (ide_drive_t *)data;
647 int len;
648
649 len = sprintf(page, "%llu\n", (long long)idefloppy_capacity(drive));
650 PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
651}
652
653static ide_proc_entry_t idefloppy_proc[] = {
654 { "capacity", S_IFREG|S_IRUGO, proc_idefloppy_read_capacity, NULL },
655 { "geometry", S_IFREG|S_IRUGO, proc_ide_read_geometry, NULL },
656 { NULL, 0, NULL, NULL }
657};
658#endif /* CONFIG_IDE_PROC_FS */
659
660static int ide_floppy_probe(ide_drive_t *); 627static int ide_floppy_probe(ide_drive_t *);
661 628
662static ide_driver_t idefloppy_driver = { 629static ide_driver_t idefloppy_driver = {
@@ -672,8 +639,8 @@ static ide_driver_t idefloppy_driver = {
672 .end_request = idefloppy_end_request, 639 .end_request = idefloppy_end_request,
673 .error = __ide_error, 640 .error = __ide_error,
674#ifdef CONFIG_IDE_PROC_FS 641#ifdef CONFIG_IDE_PROC_FS
675 .proc = idefloppy_proc, 642 .proc = ide_floppy_proc,
676 .settings = idefloppy_settings, 643 .settings = ide_floppy_settings,
677#endif 644#endif
678}; 645};
679 646
@@ -784,7 +751,7 @@ static int idefloppy_media_changed(struct gendisk *disk)
784static int idefloppy_revalidate_disk(struct gendisk *disk) 751static int idefloppy_revalidate_disk(struct gendisk *disk)
785{ 752{
786 struct ide_floppy_obj *floppy = ide_drv_g(disk, ide_floppy_obj); 753 struct ide_floppy_obj *floppy = ide_drv_g(disk, ide_floppy_obj);
787 set_capacity(disk, idefloppy_capacity(floppy->drive)); 754 set_capacity(disk, ide_floppy_capacity(floppy->drive));
788 return 0; 755 return 0;
789} 756}
790 757
diff --git a/drivers/ide/ide-floppy.h b/drivers/ide/ide-floppy.h
index 914e4b2f855d..17cf865e583d 100644
--- a/drivers/ide/ide-floppy.h
+++ b/drivers/ide/ide-floppy.h
@@ -48,8 +48,15 @@ typedef struct ide_floppy_obj {
48/* ide-floppy.c */ 48/* ide-floppy.c */
49void ide_floppy_create_mode_sense_cmd(struct ide_atapi_pc *, u8); 49void ide_floppy_create_mode_sense_cmd(struct ide_atapi_pc *, u8);
50void ide_floppy_create_read_capacity_cmd(struct ide_atapi_pc *); 50void ide_floppy_create_read_capacity_cmd(struct ide_atapi_pc *);
51sector_t ide_floppy_capacity(ide_drive_t *);
51 52
52/* ide-floppy_ioctl.c */ 53/* ide-floppy_ioctl.c */
53int ide_floppy_ioctl(struct inode *, struct file *, unsigned, unsigned long); 54int ide_floppy_ioctl(struct inode *, struct file *, unsigned, unsigned long);
54 55
56#ifdef CONFIG_IDE_PROC_FS
57/* ide-floppy_proc.c */
58extern ide_proc_entry_t ide_floppy_proc[];
59extern const struct ide_proc_devset ide_floppy_settings[];
60#endif
61
55#endif /*__IDE_FLOPPY_H */ 62#endif /*__IDE_FLOPPY_H */
diff --git a/drivers/ide/ide-floppy_proc.c b/drivers/ide/ide-floppy_proc.c
new file mode 100644
index 000000000000..76f0c6c4eca3
--- /dev/null
+++ b/drivers/ide/ide-floppy_proc.c
@@ -0,0 +1,33 @@
1#include <linux/kernel.h>
2#include <linux/ide.h>
3
4#include "ide-floppy.h"
5
6static int proc_idefloppy_read_capacity(char *page, char **start, off_t off,
7 int count, int *eof, void *data)
8{
9 ide_drive_t*drive = (ide_drive_t *)data;
10 int len;
11
12 len = sprintf(page, "%llu\n", (long long)ide_floppy_capacity(drive));
13 PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
14}
15
16ide_proc_entry_t ide_floppy_proc[] = {
17 { "capacity", S_IFREG|S_IRUGO, proc_idefloppy_read_capacity, NULL },
18 { "geometry", S_IFREG|S_IRUGO, proc_ide_read_geometry, NULL },
19 { NULL, 0, NULL, NULL }
20};
21
22ide_devset_rw_field(bios_cyl, bios_cyl);
23ide_devset_rw_field(bios_head, bios_head);
24ide_devset_rw_field(bios_sect, bios_sect);
25ide_devset_rw_field(ticks, pc_delay);
26
27const struct ide_proc_devset ide_floppy_settings[] = {
28 IDE_PROC_DEVSET(bios_cyl, 0, 1023),
29 IDE_PROC_DEVSET(bios_head, 0, 255),
30 IDE_PROC_DEVSET(bios_sect, 0, 63),
31 IDE_PROC_DEVSET(ticks, 0, 255),
32 { 0 },
33};