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:
parent
4cf28a0107
commit
ba34c85284
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue