summaryrefslogtreecommitdiff
path: root/packages/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch
diff options
context:
space:
mode:
authorPaul Sokolovsky <pmiscml@gmail.com>2006-10-27 01:07:40 +0000
committerPaul Sokolovsky <pmiscml@gmail.com>2006-10-27 01:07:40 +0000
commit3903dc969a1710e80c49f78adf2f1639956185b4 (patch)
treef05878d9299a5ee2e652f13c8b95bf637b83210b /packages/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch
parent11d174ab5324bd1e46cc86532dbb3aa3c4f2d700 (diff)
linux-handhelds-2.6: Prepare to finish upgrade to 2.6.17.
* Aim: support few kernel releases nicely and transparently. * Issue: different kernel versions/releases (may) have different defconfigs. * Requirement: we need files dir to be override not just on PN, amd not just on MACHINE, but additionally on some version string, which doesn't necessarily have to be PV (for example, current situation is that 2.6.16 vs 2.6.17 need different defconfigs, while potentially *some* -hh tags may have that need too). * Solution: I could get per-MACHINE overrides work automagically if FILESPATH is overriden. So, emulate that with adding both per-version dir (foo) and foo/${MACHINE} at the same time (and at the right order). * Rename linux-handhelds-2.6/ to linux-handhelds-2.6-2.6.16/, as it really contains defconfigs for those kernels. "HEAD" kernel version will still use linux-handhelds-2.6 (i.e. TODO: add 2.6.17 defconfigs to linux-handhelds-2.6/).
Diffstat (limited to 'packages/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch')
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch114
1 files changed, 114 insertions, 0 deletions
diff --git a/packages/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch b/packages/linux/linux-handhelds-2.6-2.6.16/ide_not_removable-r0.patch
new file mode 100644
index 0000000000..1938f72829
--- /dev/null
+++ b/packages/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 */