epia800

SONE Takeshi ts1 at cma.co.jp
Thu Sep 25 04:10:01 CEST 2003


On Wed, Sep 24, 2003 at 11:00:52PM -0600, Eric W. Biederman wrote:
> Right.  My only other guess is that some of the lba48 support my be interacting
> in a strange way and causing problems.  We always write the lba48 high
> registers but we don't set them in the lba case.  It should not cause a problem.

Do you mean something like this:

====
--- ide.c.org	2003-08-26 20:53:10.000000000 +0900
+++ ide.c	2003-09-25 17:26:34.000000000 +0900
@@ -316,13 +316,15 @@
 		mdelay(50); 
 	}
 	outb(cmd->feature,         IDE_REG_FEATURE(ctrl));
-	outb(cmd->sector_count2,   IDE_REG_SECTOR_COUNT(ctrl));
+	if (cmd->command == IDE_CMD_READ_SECTORS_EXT) {
+		outb(cmd->sector_count2,   IDE_REG_SECTOR_COUNT(ctrl));
+		outb(cmd->lba_low2,        IDE_REG_LBA_LOW(ctrl));
+		outb(cmd->lba_mid2,        IDE_REG_LBA_MID(ctrl));
+		outb(cmd->lba_high2,       IDE_REG_LBA_HIGH(ctrl));
+	}
 	outb(cmd->sector_count,    IDE_REG_SECTOR_COUNT(ctrl));
-	outb(cmd->lba_low2,        IDE_REG_LBA_LOW(ctrl));
 	outb(cmd->lba_low,         IDE_REG_LBA_LOW(ctrl));
-	outb(cmd->lba_mid2,        IDE_REG_LBA_MID(ctrl));
 	outb(cmd->lba_mid,         IDE_REG_LBA_MID(ctrl));
-	outb(cmd->lba_high2,       IDE_REG_LBA_HIGH(ctrl));
 	outb(cmd->lba_high,        IDE_REG_LBA_HIGH(ctrl));
 	outb(cmd->command,         IDE_REG_COMMAND(ctrl));
 }
====

--
Takeshi



More information about the coreboot mailing list