URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Go to most recent revision |
Show entire file |
Details |
Blame |
View Log
Rev 1649 |
Rev 1715 |
Line 121... |
Line 121... |
|
|
/* Read a register */
|
/* Read a register */
|
uint32_t dma_read32( oraddr_t addr, void *dat )
|
uint32_t dma_read32( oraddr_t addr, void *dat )
|
{
|
{
|
struct dma_controller *dma = dat;
|
struct dma_controller *dma = dat;
|
|
uint32_t ret;
|
|
|
if ( addr < DMA_CH_BASE ) {
|
if ( addr < DMA_CH_BASE ) {
|
/* case of global (not per-channel) registers */
|
/* case of global (not per-channel) registers */
|
switch( addr ) {
|
switch( addr ) {
|
case DMA_CSR: return dma->regs.csr;
|
case DMA_CSR: return dma->regs.csr;
|
case DMA_INT_MSK_A: return dma->regs.int_msk_a;
|
case DMA_INT_MSK_A: return dma->regs.int_msk_a;
|
case DMA_INT_MSK_B: return dma->regs.int_msk_b;
|
case DMA_INT_MSK_B: return dma->regs.int_msk_b;
|
case DMA_INT_SRC_A: return dma->regs.int_src_a;
|
case DMA_INT_SRC_A:
|
|
if ( dma->regs.int_src_a )
|
|
clear_interrupt( dma->irq );
|
|
ret = dma->regs.int_src_a;
|
|
dma->regs.int_src_a = 0;
|
|
return ret;
|
case DMA_INT_SRC_B: return dma->regs.int_src_b;
|
case DMA_INT_SRC_B: return dma->regs.int_src_b;
|
default:
|
default:
|
fprintf( stderr, "dma_read32( 0x%"PRIxADDR" ): Illegal register\n",
|
fprintf( stderr, "dma_read32( 0x%"PRIxADDR" ): Illegal register\n",
|
addr + dma->baseaddr );
|
addr + dma->baseaddr );
|
return 0;
|
return 0;
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.