summaryrefslogtreecommitdiffstats
path: root/sys/arm
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2009-10-31 13:24:14 +0000
committermav <mav@FreeBSD.org>2009-10-31 13:24:14 +0000
commit0bf5f10c46aea8f2fe18b9a91167a9aefc33bc31 (patch)
tree92fd162ac0493f8aac178ae1620be42aeb377f24 /sys/arm
parent789d8ecfb76d1350ba654a835108b98bc15c8c98 (diff)
downloadFreeBSD-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.c13
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);
OpenPOWER on IntegriCloud