diff options
-rw-r--r-- | drivers/ide/Makefile | 4 | ||||
-rw-r--r-- | drivers/ide/ide-floppy.c | 41 | ||||
-rw-r--r-- | drivers/ide/ide-floppy.h | 7 | ||||
-rw-r--r-- | drivers/ide/ide-floppy_proc.c | 33 |
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 | |||
39 | ide-cd_mod-y += ide-cd.o ide-cd_ioctl.o ide-cd_verbose.o | 39 | ide-cd_mod-y += ide-cd.o ide-cd_ioctl.o ide-cd_verbose.o |
40 | ide-floppy_mod-y += ide-floppy.o ide-floppy_ioctl.o | 40 | ide-floppy_mod-y += ide-floppy.o ide-floppy_ioctl.o |
41 | 41 | ||
42 | ifeq ($(CONFIG_IDE_PROC_FS), y) | ||
43 | ide-floppy_mod-y += ide-floppy_proc.o | ||
44 | endif | ||
45 | |||
42 | obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o | 46 | obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o |
43 | obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd_mod.o | 47 | obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd_mod.o |
44 | obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy_mod.o | 48 | obj-$(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 | ||
555 | static sector_t idefloppy_capacity(ide_drive_t *drive) | 555 | sector_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 | ||
564 | ide_devset_rw_field(bios_cyl, bios_cyl); | ||
565 | ide_devset_rw_field(bios_head, bios_head); | ||
566 | ide_devset_rw_field(bios_sect, bios_sect); | ||
567 | ide_devset_rw_field(ticks, pc_delay); | ||
568 | |||
569 | static 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 | |||
578 | static void idefloppy_setup(ide_drive_t *drive, idefloppy_floppy_t *floppy) | 563 | static 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 | ||
643 | static 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 | |||
653 | static 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 | |||
660 | static int ide_floppy_probe(ide_drive_t *); | 627 | static int ide_floppy_probe(ide_drive_t *); |
661 | 628 | ||
662 | static ide_driver_t idefloppy_driver = { | 629 | static 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) | |||
784 | static int idefloppy_revalidate_disk(struct gendisk *disk) | 751 | static 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 */ |
49 | void ide_floppy_create_mode_sense_cmd(struct ide_atapi_pc *, u8); | 49 | void ide_floppy_create_mode_sense_cmd(struct ide_atapi_pc *, u8); |
50 | void ide_floppy_create_read_capacity_cmd(struct ide_atapi_pc *); | 50 | void ide_floppy_create_read_capacity_cmd(struct ide_atapi_pc *); |
51 | sector_t ide_floppy_capacity(ide_drive_t *); | ||
51 | 52 | ||
52 | /* ide-floppy_ioctl.c */ | 53 | /* ide-floppy_ioctl.c */ |
53 | int ide_floppy_ioctl(struct inode *, struct file *, unsigned, unsigned long); | 54 | int ide_floppy_ioctl(struct inode *, struct file *, unsigned, unsigned long); |
54 | 55 | ||
56 | #ifdef CONFIG_IDE_PROC_FS | ||
57 | /* ide-floppy_proc.c */ | ||
58 | extern ide_proc_entry_t ide_floppy_proc[]; | ||
59 | extern 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 | |||
6 | static 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 | |||
16 | ide_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 | |||
22 | ide_devset_rw_field(bios_cyl, bios_cyl); | ||
23 | ide_devset_rw_field(bios_head, bios_head); | ||
24 | ide_devset_rw_field(bios_sect, bios_sect); | ||
25 | ide_devset_rw_field(ticks, pc_delay); | ||
26 | |||
27 | const 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 | }; | ||