aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch')
-rw-r--r--recipes/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch114
1 files changed, 114 insertions, 0 deletions
diff --git a/recipes/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch b/recipes/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch
new file mode 100644
index 0000000000..1938f72829
--- /dev/null
+++ b/recipes/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch
@@ -0,0 +1,114 @@
+Index: linux-2.6.13/drivers/ide/ide-probe.c
+===================================================================
+--- linux-2.6.13.orig/drivers/ide/ide-probe.c 2005-08-29 00:41:01.000000000 +0100
++++ linux-2.6.13/drivers/ide/ide-probe.c 2005-09-21 20:57:34.000000000 +0100
+@@ -125,45 +125,6 @@
+ }
+
+ /**
+- * drive_is_flashcard - check for compact flash
+- * @drive: drive to check
+- *
+- * CompactFlash cards and their brethern pretend to be removable
+- * hard disks, except:
+- * (1) they never have a slave unit, and
+- * (2) they don't have doorlock mechanisms.
+- * This test catches them, and is invoked elsewhere when setting
+- * appropriate config bits.
+- *
+- * FIXME: This treatment is probably applicable for *all* PCMCIA (PC CARD)
+- * devices, so in linux 2.3.x we should change this to just treat all
+- * PCMCIA drives this way, and get rid of the model-name tests below
+- * (too big of an interface change for 2.4.x).
+- * At that time, we might also consider parameterizing the timeouts and
+- * retries, since these are MUCH faster than mechanical drives. -M.Lord
+- */
+-
+-static inline int drive_is_flashcard (ide_drive_t *drive)
+-{
+- struct hd_driveid *id = drive->id;
+-
+- if (drive->removable) {
+- if (id->config == 0x848a) return 1; /* CompactFlash */
+- if (!strncmp(id->model, "KODAK ATA_FLASH", 15) /* Kodak */
+- || !strncmp(id->model, "Hitachi CV", 10) /* Hitachi */
+- || !strncmp(id->model, "SunDisk SDCFB", 13) /* old SanDisk */
+- || !strncmp(id->model, "SanDisk SDCFB", 13) /* SanDisk */
+- || !strncmp(id->model, "HAGIWARA HPC", 12) /* Hagiwara */
+- || !strncmp(id->model, "LEXAR ATA_FLASH", 15) /* Lexar */
+- || !strncmp(id->model, "ATA_FLASH", 9)) /* Simple Tech */
+- {
+- return 1; /* yes, it is a flash memory card */
+- }
+- }
+- return 0; /* no, it is not a flash memory card */
+-}
+-
+-/**
+ * do_identify - identify a drive
+ * @drive: drive to identify
+ * @cmd: command used
+@@ -278,13 +239,17 @@
+ /*
+ * Not an ATAPI device: looks like a "regular" hard disk
+ */
+- if (id->config & (1<<7))
+- drive->removable = 1;
+
+- if (drive_is_flashcard(drive))
+- drive->is_flash = 1;
++ /*
++ * 0x848a = CompactFlash device
++ * These are *not* removable in Linux definition of the term
++ */
++
++ if ((id->config != 0x848a) && (id->config & (1<<7)))
++ drive->removable = 1;
++
+ drive->media = ide_disk;
+- printk("%s DISK drive\n", (drive->is_flash) ? "CFA" : "ATA" );
++ printk("%s DISK drive\n", (id->config == 0x848a) ? "CFA" : "ATA" );
+ QUIRK_LIST(drive);
+ return;
+
+Index: linux-2.6.13/drivers/ide/ide.c
+===================================================================
+--- linux-2.6.13.orig/drivers/ide/ide.c 2005-09-19 10:53:59.000000000 +0100
++++ linux-2.6.13/drivers/ide/ide.c 2005-09-21 20:52:53.000000000 +0100
+@@ -242,7 +242,6 @@
+ drive->name[2] = 'a' + (index * MAX_DRIVES) + unit;
+ drive->max_failures = IDE_DEFAULT_MAX_FAILURES;
+ drive->using_dma = 0;
+- drive->is_flash = 0;
+ drive->vdma = 0;
+ INIT_LIST_HEAD(&drive->list);
+ sema_init(&drive->gendev_rel_sem, 0);
+Index: linux-2.6.13/drivers/ide/ide-disk.c
+===================================================================
+--- linux-2.6.13.orig/drivers/ide/ide-disk.c 2005-09-19 10:53:59.000000000 +0100
++++ linux-2.6.13/drivers/ide/ide-disk.c 2005-09-21 20:51:31.000000000 +0100
+@@ -895,11 +895,7 @@
+ if (drive->id_read == 0)
+ return;
+
+- /*
+- * CompactFlash cards and their brethern look just like hard drives
+- * to us, but they are removable and don't have a doorlock mechanism.
+- */
+- if (drive->removable && !(drive->is_flash)) {
++ if (drive->removable) {
+ /*
+ * Removable disks (eg. SYQUEST); ignore 'WD' drives
+ */
+Index: linux-2.6.13/include/linux/ide.h
+===================================================================
+--- linux-2.6.13.orig/include/linux/ide.h 2005-08-29 00:41:01.000000000 +0100
++++ linux-2.6.13/include/linux/ide.h 2005-09-21 20:56:29.000000000 +0100
+@@ -697,7 +697,6 @@
+ unsigned noprobe : 1; /* from: hdx=noprobe */
+ unsigned removable : 1; /* 1 if need to do check_media_change */
+ unsigned attach : 1; /* needed for removable devices */
+- unsigned is_flash : 1; /* 1 if probed as flash */
+ unsigned forced_geom : 1; /* 1 if hdx=c,h,s was given at boot */
+ unsigned no_unmask : 1; /* disallow setting unmask bit */
+ unsigned no_io_32bit : 1; /* disallow enabling 32bit I/O */