diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-09 18:41:31 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-09 18:41:31 -0400 |
| commit | 3cb7396b7b26585b1ab7c1a8ca554ec103da5d37 (patch) | |
| tree | 94720199f016045fe2a204ac8fd26c0029f4544c /drivers/scsi/ide-scsi.c | |
| parent | d0b6e0e380d6a32d479120a8b5d98cdff936ec8c (diff) | |
| parent | 317a46a200e6514a1acf50ed30291160185a5c73 (diff) | |
Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6:
ide: fix PIO setup on resume for ATAPI devices
ide: legacy PCI bus order probing fixes
ide: add ide_proc_register_port()
ide: add "initializing" argument to ide_register_hw()
ide: cable detection fixes (take 2)
ide: move IDE settings handling to ide-proc.c
ide: split off ioctl handling from IDE settings (v2)
ide: make /proc/ide/ optional
ide: add ide_tune_dma() helper
ide: rework the code for selecting the best DMA transfer mode (v3)
ide: fix UDMA/MWDMA/SWDMA masks (v3)
Diffstat (limited to 'drivers/scsi/ide-scsi.c')
| -rw-r--r-- | drivers/scsi/ide-scsi.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c index 2b5b8a93bc10..8263f752809d 100644 --- a/drivers/scsi/ide-scsi.c +++ b/drivers/scsi/ide-scsi.c | |||
| @@ -721,19 +721,23 @@ static ide_startstop_t idescsi_do_request (ide_drive_t *drive, struct request *r | |||
| 721 | return ide_stopped; | 721 | return ide_stopped; |
| 722 | } | 722 | } |
| 723 | 723 | ||
| 724 | #ifdef CONFIG_IDE_PROC_FS | ||
| 724 | static void idescsi_add_settings(ide_drive_t *drive) | 725 | static void idescsi_add_settings(ide_drive_t *drive) |
| 725 | { | 726 | { |
| 726 | idescsi_scsi_t *scsi = drive_to_idescsi(drive); | 727 | idescsi_scsi_t *scsi = drive_to_idescsi(drive); |
| 727 | 728 | ||
| 728 | /* | 729 | /* |
| 729 | * drive setting name read/write ioctl ioctl data type min max mul_factor div_factor data pointer set function | 730 | * drive setting name read/write data type min max mul_factor div_factor data pointer set function |
| 730 | */ | 731 | */ |
| 731 | ide_add_setting(drive, "bios_cyl", SETTING_RW, -1, -1, TYPE_INT, 0, 1023, 1, 1, &drive->bios_cyl, NULL); | 732 | ide_add_setting(drive, "bios_cyl", SETTING_RW, TYPE_INT, 0, 1023, 1, 1, &drive->bios_cyl, NULL); |
| 732 | ide_add_setting(drive, "bios_head", SETTING_RW, -1, -1, TYPE_BYTE, 0, 255, 1, 1, &drive->bios_head, NULL); | 733 | ide_add_setting(drive, "bios_head", SETTING_RW, TYPE_BYTE, 0, 255, 1, 1, &drive->bios_head, NULL); |
| 733 | ide_add_setting(drive, "bios_sect", SETTING_RW, -1, -1, TYPE_BYTE, 0, 63, 1, 1, &drive->bios_sect, NULL); | 734 | ide_add_setting(drive, "bios_sect", SETTING_RW, TYPE_BYTE, 0, 63, 1, 1, &drive->bios_sect, NULL); |
| 734 | ide_add_setting(drive, "transform", SETTING_RW, -1, -1, TYPE_INT, 0, 3, 1, 1, &scsi->transform, NULL); | 735 | ide_add_setting(drive, "transform", SETTING_RW, TYPE_INT, 0, 3, 1, 1, &scsi->transform, NULL); |
| 735 | ide_add_setting(drive, "log", SETTING_RW, -1, -1, TYPE_INT, 0, 1, 1, 1, &scsi->log, NULL); | 736 | ide_add_setting(drive, "log", SETTING_RW, TYPE_INT, 0, 1, 1, 1, &scsi->log, NULL); |
| 736 | } | 737 | } |
| 738 | #else | ||
| 739 | static inline void idescsi_add_settings(ide_drive_t *drive) { ; } | ||
| 740 | #endif | ||
| 737 | 741 | ||
| 738 | /* | 742 | /* |
| 739 | * Driver initialization. | 743 | * Driver initialization. |
| @@ -756,7 +760,7 @@ static void ide_scsi_remove(ide_drive_t *drive) | |||
| 756 | struct ide_scsi_obj *scsi = scsihost_to_idescsi(scsihost); | 760 | struct ide_scsi_obj *scsi = scsihost_to_idescsi(scsihost); |
| 757 | struct gendisk *g = scsi->disk; | 761 | struct gendisk *g = scsi->disk; |
| 758 | 762 | ||
| 759 | ide_unregister_subdriver(drive, scsi->driver); | 763 | ide_proc_unregister_driver(drive, scsi->driver); |
| 760 | 764 | ||
| 761 | ide_unregister_region(g); | 765 | ide_unregister_region(g); |
| 762 | 766 | ||
| @@ -770,13 +774,11 @@ static void ide_scsi_remove(ide_drive_t *drive) | |||
| 770 | 774 | ||
| 771 | static int ide_scsi_probe(ide_drive_t *); | 775 | static int ide_scsi_probe(ide_drive_t *); |
| 772 | 776 | ||
| 773 | #ifdef CONFIG_PROC_FS | 777 | #ifdef CONFIG_IDE_PROC_FS |
| 774 | static ide_proc_entry_t idescsi_proc[] = { | 778 | static ide_proc_entry_t idescsi_proc[] = { |
| 775 | { "capacity", S_IFREG|S_IRUGO, proc_ide_read_capacity, NULL }, | 779 | { "capacity", S_IFREG|S_IRUGO, proc_ide_read_capacity, NULL }, |
| 776 | { NULL, 0, NULL, NULL } | 780 | { NULL, 0, NULL, NULL } |
| 777 | }; | 781 | }; |
| 778 | #else | ||
| 779 | # define idescsi_proc NULL | ||
| 780 | #endif | 782 | #endif |
| 781 | 783 | ||
| 782 | static ide_driver_t idescsi_driver = { | 784 | static ide_driver_t idescsi_driver = { |
| @@ -790,11 +792,13 @@ static ide_driver_t idescsi_driver = { | |||
| 790 | .version = IDESCSI_VERSION, | 792 | .version = IDESCSI_VERSION, |
| 791 | .media = ide_scsi, | 793 | .media = ide_scsi, |
| 792 | .supports_dsc_overlap = 0, | 794 | .supports_dsc_overlap = 0, |
| 793 | .proc = idescsi_proc, | ||
| 794 | .do_request = idescsi_do_request, | 795 | .do_request = idescsi_do_request, |
| 795 | .end_request = idescsi_end_request, | 796 | .end_request = idescsi_end_request, |
| 796 | .error = idescsi_atapi_error, | 797 | .error = idescsi_atapi_error, |
| 797 | .abort = idescsi_atapi_abort, | 798 | .abort = idescsi_atapi_abort, |
| 799 | #ifdef CONFIG_IDE_PROC_FS | ||
| 800 | .proc = idescsi_proc, | ||
| 801 | #endif | ||
| 798 | }; | 802 | }; |
| 799 | 803 | ||
| 800 | static int idescsi_ide_open(struct inode *inode, struct file *filp) | 804 | static int idescsi_ide_open(struct inode *inode, struct file *filp) |
| @@ -1153,7 +1157,7 @@ static int ide_scsi_probe(ide_drive_t *drive) | |||
| 1153 | idescsi->host = host; | 1157 | idescsi->host = host; |
| 1154 | idescsi->disk = g; | 1158 | idescsi->disk = g; |
| 1155 | g->private_data = &idescsi->driver; | 1159 | g->private_data = &idescsi->driver; |
| 1156 | ide_register_subdriver(drive, &idescsi_driver); | 1160 | ide_proc_register_driver(drive, &idescsi_driver); |
| 1157 | err = 0; | 1161 | err = 0; |
| 1158 | idescsi_setup(drive, idescsi); | 1162 | idescsi_setup(drive, idescsi); |
| 1159 | g->fops = &idescsi_ops; | 1163 | g->fops = &idescsi_ops; |
| @@ -1165,7 +1169,7 @@ static int ide_scsi_probe(ide_drive_t *drive) | |||
| 1165 | } | 1169 | } |
| 1166 | /* fall through on error */ | 1170 | /* fall through on error */ |
| 1167 | ide_unregister_region(g); | 1171 | ide_unregister_region(g); |
| 1168 | ide_unregister_subdriver(drive, &idescsi_driver); | 1172 | ide_proc_unregister_driver(drive, &idescsi_driver); |
| 1169 | 1173 | ||
| 1170 | put_disk(g); | 1174 | put_disk(g); |
| 1171 | out_host_put: | 1175 | out_host_put: |
