Line 42... |
Line 42... |
#include "debug.h"
|
#include "debug.h"
|
|
|
/* The representation of the DMA controllers */
|
/* The representation of the DMA controllers */
|
static struct dma_controller dmas[MAX_DMAS];
|
static struct dma_controller dmas[MAX_DMAS];
|
|
|
static uint32_t dma_read32( oraddr_t addr );
|
static uint32_t dma_read32( oraddr_t addr, void *dat );
|
static void dma_write32( oraddr_t addr, uint32_t value );
|
static void dma_write32( oraddr_t addr, uint32_t value, void *dat );
|
|
|
static unsigned long dma_read_ch_csr( struct dma_channel *channel );
|
static unsigned long dma_read_ch_csr( struct dma_channel *channel );
|
static void dma_write_ch_csr( struct dma_channel *channel, unsigned long value );
|
static void dma_write_ch_csr( struct dma_channel *channel, unsigned long value );
|
static void dma_controller_clock( struct dma_controller *dma );
|
static void dma_controller_clock( struct dma_controller *dma );
|
static void dma_load_descriptor( struct dma_channel *channel );
|
static void dma_load_descriptor( struct dma_channel *channel );
|
Line 77... |
Line 77... |
dma->ch[channel_number].channel_number = channel_number;
|
dma->ch[channel_number].channel_number = channel_number;
|
dma->ch[channel_number].channel_mask = 1LU << channel_number;
|
dma->ch[channel_number].channel_mask = 1LU << channel_number;
|
dma->ch[channel_number].regs.am0 = dma->ch[channel_number].regs.am1 = 0xFFFFFFFC;
|
dma->ch[channel_number].regs.am0 = dma->ch[channel_number].regs.am1 = 0xFFFFFFFC;
|
}
|
}
|
if ( dma->baseaddr != 0 )
|
if ( dma->baseaddr != 0 )
|
register_memoryarea( dma->baseaddr, DMA_ADDR_SPACE, 4, 0, dma_read32, dma_write32);
|
register_memoryarea( dma->baseaddr, DMA_ADDR_SPACE, 4, 0, dma_read32, dma_write32, NULL );
|
}
|
}
|
}
|
}
|
|
|
/* Print register values on stdout */
|
/* Print register values on stdout */
|
void dma_status( void )
|
void dma_status( void )
|
Line 117... |
Line 117... |
}
|
}
|
}
|
}
|
|
|
|
|
/* Read a register */
|
/* Read a register */
|
uint32_t dma_read32( oraddr_t addr )
|
uint32_t dma_read32( oraddr_t addr, void *dat )
|
{
|
{
|
unsigned i;
|
unsigned i;
|
struct dma_controller *dma = NULL;
|
struct dma_controller *dma = NULL;
|
|
|
for ( i = 0; i < MAX_DMAS && dma == NULL; ++ i ) {
|
for ( i = 0; i < MAX_DMAS && dma == NULL; ++ i ) {
|
Line 192... |
Line 192... |
}
|
}
|
|
|
|
|
|
|
/* Write a register */
|
/* Write a register */
|
void dma_write32( oraddr_t addr, uint32_t value )
|
void dma_write32( oraddr_t addr, uint32_t value, void *dat )
|
{
|
{
|
unsigned i;
|
unsigned i;
|
struct dma_controller *dma = NULL;
|
struct dma_controller *dma = NULL;
|
|
|
/* Find which controller this is */
|
/* Find which controller this is */
|