OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [rel-0-3-0-rc3/] [or1ksim/] [peripheral/] [dma.c] - Diff between revs 1649 and 1715

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;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.