patch-2.3.40 linux/drivers/block/ide-geometry.c
Next file: linux/drivers/block/ide-pci.c
Previous file: linux/drivers/block/ide-features.c
Back to the patch index
Back to the overall index
- Lines: 40
- Date:
Fri Jan 14 00:50:53 2000
- Orig file:
v2.3.39/linux/drivers/block/ide-geometry.c
- Orig date:
Tue Nov 23 22:42:20 1999
diff -u --recursive --new-file v2.3.39/linux/drivers/block/ide-geometry.c linux/drivers/block/ide-geometry.c
@@ -60,6 +60,7 @@
/* Extract drive geometry from CMOS+BIOS if not already setup */
for (unit = 0; unit < MAX_DRIVES; ++unit) {
ide_drive_t *drive = &hwif->drives[unit];
+#if 0
if ((cmos_disks & (0xf0 >> (unit*4))) &&
!drive->present && !drive->nobios) {
drive->cyl = drive->bios_cyl = *(unsigned short *)BIOS;
@@ -67,6 +68,22 @@
drive->sect = drive->bios_sect = *(BIOS+14);
drive->ctl = *(BIOS+8);
}
+#else
+ if ((cmos_disks & (0xf0 >> (unit*4)))
+ && !drive->present && !drive->nobios) {
+ unsigned short cyl = *(unsigned short *)BIOS;
+ unsigned char head = *(BIOS+2);
+ unsigned char sect = *(BIOS+14);
+ if (cyl > 0 && head > 0 && sect > 0 && sect < 64) {
+ drive->cyl = drive->bios_cyl = cyl;
+ drive->head = drive->bios_head = head;
+ drive->sect = drive->bios_sect = sect;
+ drive->ctl = *(BIOS+8);
+ } else {
+ printk("hd%d: C/H/S=%d/%d/%d from BIOS ignored\n", unit, cyl, head, sect);
+ }
+ }
+#endif
BIOS += 16;
}
#endif
@@ -78,7 +95,7 @@
* Otherwise: find out how OnTrack Disk Manager would translate the disk.
*/
static void
-ontrack(ide_drive_t *drive, int heads, int *c, int *h, int *s) {
+ontrack(ide_drive_t *drive, int heads, unsigned int *c, int *h, int *s) {
static const byte dm_head_vals[] = {4, 8, 16, 32, 64, 128, 255, 0};
const byte *headp = dm_head_vals;
unsigned long total, tracks;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)