diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/ide/ide-disk.c | 6 | ||||
| -rw-r--r-- | drivers/ide/ide-probe.c | 51 | ||||
| -rw-r--r-- | drivers/ide/ide.c | 1 |
3 files changed, 9 insertions, 49 deletions
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c index ca25f9e3d0f4..f46bb0404ae4 100644 --- a/drivers/ide/ide-disk.c +++ b/drivers/ide/ide-disk.c | |||
| @@ -889,11 +889,7 @@ static void idedisk_setup (ide_drive_t *drive) | |||
| 889 | if (drive->id_read == 0) | 889 | if (drive->id_read == 0) |
| 890 | return; | 890 | return; |
| 891 | 891 | ||
| 892 | /* | 892 | if (drive->removable) { |
| 893 | * CompactFlash cards and their brethern look just like hard drives | ||
| 894 | * to us, but they are removable and don't have a doorlock mechanism. | ||
| 895 | */ | ||
| 896 | if (drive->removable && !(drive->is_flash)) { | ||
| 897 | /* | 893 | /* |
| 898 | * Removable disks (eg. SYQUEST); ignore 'WD' drives | 894 | * Removable disks (eg. SYQUEST); ignore 'WD' drives |
| 899 | */ | 895 | */ |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index e7425546b4b1..427d1c204174 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
| @@ -125,45 +125,6 @@ static void ide_disk_init_mult_count(ide_drive_t *drive) | |||
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | /** | 127 | /** |
| 128 | * drive_is_flashcard - check for compact flash | ||
| 129 | * @drive: drive to check | ||
| 130 | * | ||
| 131 | * CompactFlash cards and their brethern pretend to be removable | ||
| 132 | * hard disks, except: | ||
| 133 | * (1) they never have a slave unit, and | ||
| 134 | * (2) they don't have doorlock mechanisms. | ||
| 135 | * This test catches them, and is invoked elsewhere when setting | ||
| 136 | * appropriate config bits. | ||
| 137 | * | ||
| 138 | * FIXME: This treatment is probably applicable for *all* PCMCIA (PC CARD) | ||
| 139 | * devices, so in linux 2.3.x we should change this to just treat all | ||
| 140 | * PCMCIA drives this way, and get rid of the model-name tests below | ||
| 141 | * (too big of an interface change for 2.4.x). | ||
| 142 | * At that time, we might also consider parameterizing the timeouts and | ||
| 143 | * retries, since these are MUCH faster than mechanical drives. -M.Lord | ||
| 144 | */ | ||
| 145 | |||
| 146 | static inline int drive_is_flashcard (ide_drive_t *drive) | ||
| 147 | { | ||
| 148 | struct hd_driveid *id = drive->id; | ||
| 149 | |||
| 150 | if (drive->removable) { | ||
| 151 | if (id->config == 0x848a) return 1; /* CompactFlash */ | ||
| 152 | if (!strncmp(id->model, "KODAK ATA_FLASH", 15) /* Kodak */ | ||
| 153 | || !strncmp(id->model, "Hitachi CV", 10) /* Hitachi */ | ||
| 154 | || !strncmp(id->model, "SunDisk SDCFB", 13) /* old SanDisk */ | ||
| 155 | || !strncmp(id->model, "SanDisk SDCFB", 13) /* SanDisk */ | ||
| 156 | || !strncmp(id->model, "HAGIWARA HPC", 12) /* Hagiwara */ | ||
| 157 | || !strncmp(id->model, "LEXAR ATA_FLASH", 15) /* Lexar */ | ||
| 158 | || !strncmp(id->model, "ATA_FLASH", 9)) /* Simple Tech */ | ||
| 159 | { | ||
| 160 | return 1; /* yes, it is a flash memory card */ | ||
| 161 | } | ||
| 162 | } | ||
| 163 | return 0; /* no, it is not a flash memory card */ | ||
| 164 | } | ||
| 165 | |||
| 166 | /** | ||
| 167 | * do_identify - identify a drive | 128 | * do_identify - identify a drive |
| 168 | * @drive: drive to identify | 129 | * @drive: drive to identify |
| 169 | * @cmd: command used | 130 | * @cmd: command used |
| @@ -278,13 +239,17 @@ static inline void do_identify (ide_drive_t *drive, u8 cmd) | |||
| 278 | /* | 239 | /* |
| 279 | * Not an ATAPI device: looks like a "regular" hard disk | 240 | * Not an ATAPI device: looks like a "regular" hard disk |
| 280 | */ | 241 | */ |
| 281 | if (id->config & (1<<7)) | 242 | |
| 243 | /* | ||
| 244 | * 0x848a = CompactFlash device | ||
| 245 | * These are *not* removable in Linux definition of the term | ||
| 246 | */ | ||
| 247 | |||
| 248 | if ((id->config != 0x848a) && (id->config & (1<<7))) | ||
| 282 | drive->removable = 1; | 249 | drive->removable = 1; |
| 283 | 250 | ||
| 284 | if (drive_is_flashcard(drive)) | ||
| 285 | drive->is_flash = 1; | ||
| 286 | drive->media = ide_disk; | 251 | drive->media = ide_disk; |
| 287 | printk("%s DISK drive\n", (drive->is_flash) ? "CFA" : "ATA" ); | 252 | printk("%s DISK drive\n", (id->config == 0x848a) ? "CFA" : "ATA" ); |
| 288 | QUIRK_LIST(drive); | 253 | QUIRK_LIST(drive); |
| 289 | return; | 254 | return; |
| 290 | 255 | ||
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index afeb02bbb722..b2cc43702f65 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c | |||
| @@ -242,7 +242,6 @@ static void init_hwif_data(ide_hwif_t *hwif, unsigned int index) | |||
| 242 | drive->name[2] = 'a' + (index * MAX_DRIVES) + unit; | 242 | drive->name[2] = 'a' + (index * MAX_DRIVES) + unit; |
| 243 | drive->max_failures = IDE_DEFAULT_MAX_FAILURES; | 243 | drive->max_failures = IDE_DEFAULT_MAX_FAILURES; |
| 244 | drive->using_dma = 0; | 244 | drive->using_dma = 0; |
| 245 | drive->is_flash = 0; | ||
| 246 | drive->vdma = 0; | 245 | drive->vdma = 0; |
| 247 | INIT_LIST_HEAD(&drive->list); | 246 | INIT_LIST_HEAD(&drive->list); |
| 248 | init_completion(&drive->gendev_rel_comp); | 247 | init_completion(&drive->gendev_rel_comp); |
