diff options
author | sos <sos@FreeBSD.org> | 2005-10-06 15:44:07 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2005-10-06 15:44:07 +0000 |
commit | 84b311757f08e75b3d4c4210fbb357e1fcf3d748 (patch) | |
tree | 0865eae36111178e7797a9a91aaff2e630347ed4 /sys/dev/ata/ata-dma.c | |
parent | a6cc05cfd1542bb7b2c631e44e266ef52c0f083a (diff) | |
download | FreeBSD-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.c | 11 |
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; |