cores/dma, liblitesdcard/sdcard: use 64 bits for dma base address

Make the DMA base address register 64-bit wide, to cover situations
in which the physical memory being accessed is above the 4GB limit
(e.g., on 64-bit systems with more than 4GB of provisioned physical
memory).

Also update DMA reader/writer setup call sites in the bios (currently
only used by litesdcard).

Signed-off-by: Gabriel Somlo <gsomlo@gmail.com>
This commit is contained in:
Gabriel Somlo 2020-07-06 09:07:25 -04:00
parent 4cf28a0107
commit ba34c85284
2 changed files with 4 additions and 4 deletions

View File

@ -72,7 +72,7 @@ class WishboneDMAReader(Module, AutoCSR):
self.add_csr()
def add_csr(self):
self._base = CSRStorage(32)
self._base = CSRStorage(64)
self._length = CSRStorage(32)
self._enable = CSRStorage()
self._done = CSRStatus()
@ -158,7 +158,7 @@ class WishboneDMAWriter(Module, AutoCSR):
self._sink = self.sink
self.sink = stream.Endpoint([("data", self.bus.data_width)])
self._base = CSRStorage(32)
self._base = CSRStorage(64)
self._length = CSRStorage(32)
self._enable = CSRStorage()
self._done = CSRStatus()

View File

@ -561,7 +561,7 @@ void sdcard_read(uint32_t sector, uint32_t count, uint8_t* buf)
{
/* Initialize DMA Writer */
sdblock2mem_dma_enable_write(0);
sdblock2mem_dma_base_write((uint32_t) buf);
sdblock2mem_dma_base_write((uint64_t) buf);
sdblock2mem_dma_length_write(512*count);
sdblock2mem_dma_enable_write(1);
@ -594,7 +594,7 @@ void sdcard_write(uint32_t sector, uint32_t count, uint8_t* buf)
while (count--) {
/* Initialize DMA Reader */
sdmem2block_dma_enable_write(0);
sdmem2block_dma_base_write((uint32_t) buf);
sdmem2block_dma_base_write((uint64_t) buf);
sdmem2block_dma_length_write(512);
sdmem2block_dma_enable_write(1);