diff options
-rw-r--r-- | drivers/ide/ide-disk.c | 18 | ||||
-rw-r--r-- | drivers/ide/ide-floppy.c | 3 |
2 files changed, 12 insertions, 9 deletions
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c index 289a533afbd6..70b75f23a70e 100644 --- a/drivers/ide/ide-disk.c +++ b/drivers/ide/ide-disk.c | |||
@@ -716,6 +716,14 @@ static void idedisk_setup(ide_drive_t *drive) | |||
716 | drive->dev_flags |= IDE_DFLAG_WCACHE; | 716 | drive->dev_flags |= IDE_DFLAG_WCACHE; |
717 | 717 | ||
718 | set_wcache(drive, 1); | 718 | set_wcache(drive, 1); |
719 | |||
720 | if ((drive->dev_flags & IDE_DFLAG_LBA) == 0 && | ||
721 | (drive->head == 0 || drive->head > 16)) { | ||
722 | printk(KERN_ERR "%s: invalid geometry: %d physical heads?\n", | ||
723 | drive->name, drive->head); | ||
724 | drive->dev_flags &= ~IDE_DFLAG_ATTACH; | ||
725 | } else | ||
726 | drive->dev_flags |= IDE_DFLAG_ATTACH; | ||
719 | } | 727 | } |
720 | 728 | ||
721 | static void ide_cacheflush_p(ide_drive_t *drive) | 729 | static void ide_cacheflush_p(ide_drive_t *drive) |
@@ -957,20 +965,14 @@ static int ide_disk_probe(ide_drive_t *drive) | |||
957 | drive->driver_data = idkp; | 965 | drive->driver_data = idkp; |
958 | 966 | ||
959 | idedisk_setup(drive); | 967 | idedisk_setup(drive); |
960 | if ((drive->dev_flags & IDE_DFLAG_LBA) == 0 && | 968 | |
961 | (drive->head == 0 || drive->head > 16)) { | 969 | set_capacity(g, ide_disk_capacity(drive)); |
962 | printk(KERN_ERR "%s: INVALID GEOMETRY: %d PHYSICAL HEADS?\n", | ||
963 | drive->name, drive->head); | ||
964 | drive->dev_flags &= ~IDE_DFLAG_ATTACH; | ||
965 | } else | ||
966 | drive->dev_flags |= IDE_DFLAG_ATTACH; | ||
967 | 970 | ||
968 | g->minors = IDE_DISK_MINORS; | 971 | g->minors = IDE_DISK_MINORS; |
969 | g->driverfs_dev = &drive->gendev; | 972 | g->driverfs_dev = &drive->gendev; |
970 | g->flags |= GENHD_FL_EXT_DEVT; | 973 | g->flags |= GENHD_FL_EXT_DEVT; |
971 | if (drive->dev_flags & IDE_DFLAG_REMOVABLE) | 974 | if (drive->dev_flags & IDE_DFLAG_REMOVABLE) |
972 | g->flags = GENHD_FL_REMOVABLE; | 975 | g->flags = GENHD_FL_REMOVABLE; |
973 | set_capacity(g, ide_disk_capacity(drive)); | ||
974 | g->fops = &idedisk_ops; | 976 | g->fops = &idedisk_ops; |
975 | add_disk(g); | 977 | add_disk(g); |
976 | return 0; | 978 | return 0; |
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index 73458e46bf1e..bcbd980f7a48 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c | |||
@@ -598,6 +598,8 @@ static void idefloppy_setup(ide_drive_t *drive, idefloppy_floppy_t *floppy) | |||
598 | (void) ide_floppy_get_capacity(drive); | 598 | (void) ide_floppy_get_capacity(drive); |
599 | 599 | ||
600 | ide_proc_register_driver(drive, floppy->driver); | 600 | ide_proc_register_driver(drive, floppy->driver); |
601 | |||
602 | drive->dev_flags |= IDE_DFLAG_ATTACH; | ||
601 | } | 603 | } |
602 | 604 | ||
603 | static void ide_floppy_remove(ide_drive_t *drive) | 605 | static void ide_floppy_remove(ide_drive_t *drive) |
@@ -807,7 +809,6 @@ static int ide_floppy_probe(ide_drive_t *drive) | |||
807 | drive->debug_mask = debug_mask; | 809 | drive->debug_mask = debug_mask; |
808 | 810 | ||
809 | idefloppy_setup(drive, floppy); | 811 | idefloppy_setup(drive, floppy); |
810 | drive->dev_flags |= IDE_DFLAG_ATTACH; | ||
811 | 812 | ||
812 | g->minors = 1 << PARTN_BITS; | 813 | g->minors = 1 << PARTN_BITS; |
813 | g->driverfs_dev = &drive->gendev; | 814 | g->driverfs_dev = &drive->gendev; |