summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/ata-dma.c
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2005-10-06 15:44:07 +0000
committersos <sos@FreeBSD.org>2005-10-06 15:44:07 +0000
commit84b311757f08e75b3d4c4210fbb357e1fcf3d748 (patch)
tree0865eae36111178e7797a9a91aaff2e630347ed4 /sys/dev/ata/ata-dma.c
parenta6cc05cfd1542bb7b2c631e44e266ef52c0f083a (diff)
downloadFreeBSD-src-84b311757f08e75b3d4c4210fbb357e1fcf3d748.zip
FreeBSD-src-84b311757f08e75b3d4c4210fbb357e1fcf3d748.tar.gz
Add support for setting the SG list segment size.
Use this for the SiI3112 workaround to get rid of the "oversized DMA" errors. MFC to 6.0 candidate.
Diffstat (limited to 'sys/dev/ata/ata-dma.c')
-rw-r--r--sys/dev/ata/ata-dma.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/dev/ata/ata-dma.c b/sys/dev/ata/ata-dma.c
index f8c4411..4032a48 100644
--- a/sys/dev/ata/ata-dma.c
+++ b/sys/dev/ata/ata-dma.c
@@ -77,8 +77,9 @@ ata_dmainit(device_t dev)
ch->dma->load = ata_dmaload;
ch->dma->unload = ata_dmaunload;
ch->dma->alignment = 2;
- ch->dma->max_iosize = 128 * DEV_BSIZE;
ch->dma->boundary = 128 * DEV_BSIZE;
+ ch->dma->segsize = 128 * DEV_BSIZE;
+ ch->dma->max_iosize = 128 * DEV_BSIZE;
}
}
@@ -99,8 +100,8 @@ ata_dmaalloc(device_t dev)
if (bus_dma_tag_create(NULL, ch->dma->alignment, 0,
BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
- NULL, NULL, 256 * DEV_BSIZE,
- ATA_DMA_ENTRIES, ch->dma->max_iosize,
+ NULL, NULL, ch->dma->max_iosize,
+ ATA_DMA_ENTRIES, ch->dma->segsize,
0, NULL, NULL, &ch->dma->dmatag))
goto error;
@@ -112,8 +113,8 @@ ata_dmaalloc(device_t dev)
if (bus_dma_tag_create(ch->dma->dmatag,ch->dma->alignment,ch->dma->boundary,
BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
- NULL, NULL, 256 * DEV_BSIZE,
- ATA_DMA_ENTRIES, ch->dma->max_iosize,
+ NULL, NULL, ch->dma->max_iosize,
+ ATA_DMA_ENTRIES, ch->dma->segsize,
BUS_DMA_ALLOCNOW, NULL, NULL, &ch->dma->data_tag))
goto error;
OpenPOWER on IntegriCloud