diff options
author | sos <sos@FreeBSD.org> | 2005-08-22 11:38:53 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2005-08-22 11:38:53 +0000 |
commit | 61076facb25aece774d46562afc37b84719d8768 (patch) | |
tree | 61ba6f501fe299ba7e7c40e1b5a390c2f009937b /sys | |
parent | 7311f9613c2a62dc31cb98f0ee30d1e7979f1bb4 (diff) | |
download | FreeBSD-src-61076facb25aece774d46562afc37b84719d8768.zip FreeBSD-src-61076facb25aece774d46562afc37b84719d8768.tar.gz |
Fix problem on Promise "mio" controllers and 48bit mode caused by last commit
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/ata/ata-chipset.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/ata/ata-chipset.c b/sys/dev/ata/ata-chipset.c index 0749f98..5792917 100644 --- a/sys/dev/ata/ata-chipset.c +++ b/sys/dev/ata/ata-chipset.c @@ -2708,10 +2708,12 @@ ata_promise_mio_command(struct ata_request *request) return ata_generic_command(request); case ATA_READ_DMA: + case ATA_READ_DMA48: wordp[0] = htole32(0x04 | ((ch->unit + 1) << 16) | (0x00 << 24)); break; case ATA_WRITE_DMA: + case ATA_WRITE_DMA48: wordp[0] = htole32(0x00 | ((ch->unit + 1) << 16) | (0x00 << 24)); break; } @@ -2742,14 +2744,19 @@ ata_promise_sx4_command(struct ata_request *request) case ATA_ATA_IDENTIFY: case ATA_READ: + case ATA_READ48: case ATA_READ_MUL: + case ATA_READ_MUL48: case ATA_WRITE: + case ATA_WRITE48: case ATA_WRITE_MUL: + case ATA_WRITE_MUL48: ATA_OUTL(ctlr->r_res2, 0x000c0400 + ((ch->unit + 1) << 2), 0x00000001); return ata_generic_command(request); case ATA_SETFEATURES: case ATA_FLUSHCACHE: + case ATA_FLUSHCACHE48: case ATA_SLEEP: case ATA_SET_MULTI: wordp = (u_int32_t *) @@ -2765,7 +2772,9 @@ ata_promise_sx4_command(struct ata_request *request) return 0; case ATA_READ_DMA: + case ATA_READ_DMA48: case ATA_WRITE_DMA: + case ATA_WRITE_DMA48: wordp = (u_int32_t *) (window + (ch->unit * ATA_PDC_CHN_OFFSET) + ATA_PDC_HSG_OFFSET); i = idx = 0; |