sata_sil: add Large Block Transfer support
authorRobert Hancock <hancockr@shaw.ca>
Thu, 25 Dec 2008 01:06:06 +0000 (19:06 -0600)
committerJeff Garzik <jgarzik@redhat.com>
Mon, 29 Dec 2008 12:40:09 +0000 (07:40 -0500)
commitc7e324f1bd17b25fcdca33bdad01cf6eb8be4933
tree89f185e8e15f7c03fa03ec783ad2b88faf2e6dd3
parent3c387730ef2639811306c631e820711a70b98c5d
sata_sil: add Large Block Transfer support

This implements support for the Large Block Transfer feature found in Silicon
Image 311x controllers. This allows transferring bigger contiguous chunks of
data from system memory and avoids the 64KB boundary restriction of standard
SFF controllers.

This is based on a patch from Jeff Garzik (from the sii-lbt branch of
libata-dev) but includes a few bug fixes: Since the bmdma2 register does not
implement the status bits, the original bmdma register must be used except
where the bmdma2 register is required. As well the DMA boundary should be
31-bit instead of 32-bit since the top bit of the length field is still
required for the PRD end-of-table flag.

Signed-off-by: Robert Hancock <hancockr@shaw.ca>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/sata_sil.c