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 | }; | ||
