diff options
author | mav <mav@FreeBSD.org> | 2009-10-31 13:24:14 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2009-10-31 13:24:14 +0000 |
commit | 0bf5f10c46aea8f2fe18b9a91167a9aefc33bc31 (patch) | |
tree | 92fd162ac0493f8aac178ae1620be42aeb377f24 /sys/arm | |
parent | 789d8ecfb76d1350ba654a835108b98bc15c8c98 (diff) | |
download | FreeBSD-src-0bf5f10c46aea8f2fe18b9a91167a9aefc33bc31.zip FreeBSD-src-0bf5f10c46aea8f2fe18b9a91167a9aefc33bc31.tar.gz |
MFp4:
- Remove most of direct relations between ATA(4) peripherial and controller
levels. It makes logic more transparent and is a mandatory step to wrap
ATA(4) controller level into ATA-native CAM SIM.
- Tune AHCI and SATA2 SiI drivers memory allocation a bit to allow bigger
I/O transaction sizes without additional cost.
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/mv/mv_sata.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/sys/arm/mv/mv_sata.c b/sys/arm/mv/mv_sata.c index 1337252..3593956 100644 --- a/sys/arm/mv/mv_sata.c +++ b/sys/arm/mv/mv_sata.c @@ -548,14 +548,16 @@ sata_channel_begin_transaction(struct ata_request *request) uint32_t req_in; int error, slot; - sc = device_get_softc(GRANDPARENT(request->dev)); + sc = device_get_softc(device_get_parent(request->parent)); ch = device_get_softc(request->parent); mtx_assert(&ch->state_mtx, MA_OWNED); /* Only DMA R/W goes through the EDMA machine. */ if (request->u.ata.command != ATA_READ_DMA && - request->u.ata.command != ATA_WRITE_DMA) { + request->u.ata.command != ATA_WRITE_DMA && + request->u.ata.command != ATA_READ_DMA48 && + request->u.ata.command != ATA_WRITE_DMA48) { /* Disable EDMA before accessing legacy registers */ if (sata_edma_is_running(request->parent)) { @@ -569,12 +571,9 @@ sata_channel_begin_transaction(struct ata_request *request) return (ata_begin_transaction(request)); } - /* Check for 48 bit access and convert if needed */ - ata_modify_if_48bit(request); - /* Prepare data for DMA */ if ((error = ch->dma.load(request, NULL, NULL))) { - device_printf(request->dev, "setting up DMA failed!\n"); + device_printf(request->parent, "setting up DMA failed!\n"); request->result = error; return ATA_OP_FINISHED; } @@ -633,7 +632,7 @@ sata_channel_end_transaction(struct ata_request *request) uint32_t res_in, res_out, icr; int slot; - sc = device_get_softc(GRANDPARENT(request->dev)); + sc = device_get_softc(device_get_parent(request->parent)); ch = device_get_softc(request->parent); mtx_assert(&ch->state_mtx, MA_OWNED); |