diff options
author | imp <imp@FreeBSD.org> | 2006-11-29 07:57:02 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2006-11-29 07:57:02 +0000 |
commit | 85a0be372bb9fac00010df21561c9b263e934882 (patch) | |
tree | 167439625a536243a2f365e62b42b5205436e027 /sys/arm | |
parent | 7a8aafd20a9b54722595e7f785696d030c169765 (diff) | |
download | FreeBSD-src-85a0be372bb9fac00010df21561c9b263e934882.zip FreeBSD-src-85a0be372bb9fac00010df21561c9b263e934882.tar.gz |
MFp4:
correct data counts so that we clock enough data for the spi
transaction. This allows complete spi transactions to happen.
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/at91/at91_spi.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/arm/at91/at91_spi.c b/sys/arm/at91/at91_spi.c index 55b8a55..6341176 100644 --- a/sys/arm/at91/at91_spi.c +++ b/sys/arm/at91/at91_spi.c @@ -223,7 +223,7 @@ at91_spi_transfer(device_t dev, device_t child, struct spi_command *cmd) cmd->tx_data_sz, at91_getaddr, &addr, 0) != 0) goto out; WR4(sc, PDC_TNPR, addr); - WR4(sc, PDC_TNCR, cmd->tx_cmd_sz); + WR4(sc, PDC_TNCR, cmd->tx_data_sz); bus_dmamap_sync(sc->dmatag, sc->map[i], BUS_DMASYNC_PREWRITE); mode[i++] = BUS_DMASYNC_POSTWRITE; } @@ -234,12 +234,12 @@ at91_spi_transfer(device_t dev, device_t child, struct spi_command *cmd) WR4(sc, PDC_RCR, cmd->tx_cmd_sz); bus_dmamap_sync(sc->dmatag, sc->map[i], BUS_DMASYNC_PREREAD); mode[i++] = BUS_DMASYNC_POSTREAD; - if (cmd->tx_data_sz > 0) { + if (cmd->rx_data_sz > 0) { if (bus_dmamap_load(sc->dmatag, sc->map[i], cmd->rx_data, cmd->tx_data_sz, at91_getaddr, &addr, 0) != 0) goto out; WR4(sc, PDC_RNPR, addr); - WR4(sc, PDC_RNCR, cmd->tx_data_sz); + WR4(sc, PDC_RNCR, cmd->rx_data_sz); bus_dmamap_sync(sc->dmatag, sc->map[i], BUS_DMASYNC_PREREAD); mode[i++] = BUS_DMASYNC_POSTREAD; } |