2007-09-07 Daniel Hellstrom <daniel@gaisler.com>

* shared/1553/b1553brm.c, shared/can/grcan.c, shared/can/grcan_rasta.c,
	shared/can/occan.c, shared/spw/grspw.c, shared/spw/grspw_pci.c,
	shared/uart/apbuart.c: Remove warnings.
This commit is contained in:
Joel Sherrill
2007-09-07 14:34:18 +00:00
parent 309cb3b572
commit 13279f5dcf
8 changed files with 66 additions and 52 deletions

View File

@@ -1,3 +1,9 @@
2007-09-07 Daniel Hellstrom <daniel@gaisler.com>
* shared/1553/b1553brm.c, shared/can/grcan.c, shared/can/grcan_rasta.c,
shared/can/occan.c, shared/spw/grspw.c, shared/spw/grspw_pci.c,
shared/uart/apbuart.c: Remove warnings.
2007-09-06 Daniel Hellstrom <daniel@gaisler.com> 2007-09-06 Daniel Hellstrom <daniel@gaisler.com>
* shared/pci/pcifinddevice.c: New file. * shared/pci/pcifinddevice.c: New file.

View File

@@ -39,6 +39,8 @@
#ifndef B1553BRM_REG_INT #ifndef B1553BRM_REG_INT
#define B1553BRM_REG_INT(handler,irqno,arg) set_vector(handler,(irqno)+0x10,1) #define B1553BRM_REG_INT(handler,irqno,arg) set_vector(handler,(irqno)+0x10,1)
#undef B1553BRM_DEFINE_INTHANDLER
#define B1553BRM_DEFINE_INTHANDLER
#endif #endif
/* default to 128K memory layout */ /* default to 128K memory layout */
@@ -126,6 +128,11 @@ struct circ_buf_1 {
}; };
#endif #endif
struct irq_log_list {
volatile unsigned short iiw;
volatile unsigned short iaw;
};
typedef struct { typedef struct {
unsigned int memarea_base; unsigned int memarea_base;
@@ -167,10 +174,7 @@ typedef struct {
unsigned short unused[(8*1024-(128*8+128*32))-16*2]; unsigned short unused[(8*1024-(128*8+128*32))-16*2];
#endif #endif
/* interrupt log at 64 bytes from end */ /* interrupt log at 64 bytes from end */
struct { struct irq_log_list irq_logs[16];
unsigned short iiw;
unsigned short iaw;
} irq_logs[16];
} *bcmem; } *bcmem;
#if defined(DMA_MEM_128K) #if defined(DMA_MEM_128K)
@@ -203,10 +207,7 @@ typedef struct {
unsigned short unused[(64*1024-(4*32*4+4*32*9*34))-16*2]; unsigned short unused[(64*1024-(4*32*4+4*32*9*34))-16*2];
/* interrupt log at 64 bytes from end */ /* interrupt log at 64 bytes from end */
struct { struct irq_log_list irq_logs[16];
unsigned short iiw;
unsigned short iaw;
} irq_logs[16];
} *rtmem; } *rtmem;
#elif defined(DMA_MEM_16K) #elif defined(DMA_MEM_16K)
/* Memory structure of a RT being inited, just used /* Memory structure of a RT being inited, just used
@@ -239,20 +240,14 @@ typedef struct {
unsigned short unused[8*1024 -(4*32*4 +3*32*2*34 +1*32*1*34) -16*2]; unsigned short unused[8*1024 -(4*32*4 +3*32*2*34 +1*32*1*34) -16*2];
/* interrupt log at 64 bytes from end */ /* interrupt log at 64 bytes from end */
struct { struct irq_log_list irq_logs[16];
unsigned short iiw;
unsigned short iaw;
} irq_logs[16];
} *rtmem; } *rtmem;
#else #else
#error You must define one DMA_MEM_???K #error You must define one DMA_MEM_???K
#endif #endif
/* Interrupt log list */ /* Interrupt log list */
struct irq_log_list { struct irq_log_list *irq_log;
volatile unsigned short iiw;
volatile unsigned short iaw;
} *irq_log;
unsigned int irq; unsigned int irq;
/* Received events waiting to be read */ /* Received events waiting to be read */
@@ -291,7 +286,9 @@ static unsigned int allbrm_cfg_clkdiv;
static unsigned int allbrm_cfg_freq; static unsigned int allbrm_cfg_freq;
static void brm_interrupt(brm_priv *brm); static void brm_interrupt(brm_priv *brm);
#ifdef B1553BRM_DEFINE_INTHANDLER
static void b1553brm_interrupt_handler(rtems_vector_number v); static void b1553brm_interrupt_handler(rtems_vector_number v);
#endif
#define OFS(ofs) (((unsigned int)&ofs & 0x1ffff)>>1) #define OFS(ofs) (((unsigned int)&ofs & 0x1ffff)>>1)
@@ -361,7 +358,7 @@ int B1553BRM_PREFIX(_register)(amba_confarea_type *bus, unsigned int clksel, uns
#ifdef B1553BRM_LOCAL_MEM #ifdef B1553BRM_LOCAL_MEM
allbrm_memarea = B1553BRM_LOCAL_MEM_ADR; allbrm_memarea = B1553BRM_LOCAL_MEM_ADR;
#else #else
allbrm_memarea = NULL; allbrm_memarea = 0;
#endif #endif
/* Save clksel, clkdiv and brm_freq for later use */ /* Save clksel, clkdiv and brm_freq for later use */
@@ -419,7 +416,7 @@ static rtems_device_driver rt_init(brm_priv *brm) {
return RTEMS_NO_MEMORY; return RTEMS_NO_MEMORY;
} }
brm->irq_log = &brm->rtmem->irq_logs[0]; brm->irq_log = (struct irq_log_list *)&brm->rtmem->irq_logs[0];
brm->regs->ctrl = 0x1912; /* enable both buses, circular 1 bufmode, broadcast, interrupt log */ brm->regs->ctrl = 0x1912; /* enable both buses, circular 1 bufmode, broadcast, interrupt log */
brm->regs->oper = 0x0900; /* configure as RT, with addr 1 */ brm->regs->oper = 0x0900; /* configure as RT, with addr 1 */
@@ -496,7 +493,7 @@ static rtems_device_driver bc_init(brm_priv *brm){
brm->bcmem = (void *)brm->mem; brm->bcmem = (void *)brm->mem;
brm->rtmem = NULL; brm->rtmem = NULL;
brm->irq_log = &brm->bcmem->irq_logs[0]; brm->irq_log = (struct irq_log_list *)&brm->bcmem->irq_logs[0];
brm->head = brm->tail = 0; brm->head = brm->tail = 0;
brm->rx_blocking = brm->tx_blocking = 1; brm->rx_blocking = brm->tx_blocking = 1;
@@ -543,7 +540,7 @@ static rtems_device_driver bm_init(brm_priv *brm) {
} }
/* end of 16K, fits all current modes (128K, 16K) */ /* end of 16K, fits all current modes (128K, 16K) */
brm->irq_log = &brm->mem[8*1024-16*2]; brm->irq_log = (struct irq_log_list *)&brm->mem[8*1024-16*2];
brm->regs->ctrl = 0x0006; /* ping pong enable and enable interrupt log */ brm->regs->ctrl = 0x0006; /* ping pong enable and enable interrupt log */
brm->regs->oper = 0x0A00; /* configure as BM */ brm->regs->oper = 0x0A00; /* configure as BM */
@@ -589,7 +586,7 @@ static rtems_device_driver brm_initialize(rtems_device_major_number major, rtems
} }
/* allocate & zero memory for the brm devices */ /* allocate & zero memory for the brm devices */
brms = malloc(sizeof(*brms)*dev_cnt); brms = (brm_priv *)malloc(sizeof(*brms)*dev_cnt);
if ( !brms ){ if ( !brms ){
printk("BRM: Failed to allocate SW memory\n\r"); printk("BRM: Failed to allocate SW memory\n\r");
return -1; return -1;
@@ -601,10 +598,10 @@ static rtems_device_driver brm_initialize(rtems_device_major_number major, rtems
*/ */
#define BRM_DESCS_PER_CTRL 128 #define BRM_DESCS_PER_CTRL 128
if ( allbrm_memarea ){ if ( allbrm_memarea ){
mem = allbrm_memarea; mem = (char *)allbrm_memarea;
}else{ }else{
/* sizeof(struct desc_table) * BRM_DESCS_PER_CTRL * dev_cnt */ /* sizeof(struct desc_table) * BRM_DESCS_PER_CTRL * dev_cnt */
mem = malloc( (128*1024) * (dev_cnt+1)); /* 128k per core + 128k for alignment */ mem = (char *)malloc( (128*1024) * (dev_cnt+1)); /* 128k per core + 128k for alignment */
if ( !mem ){ if ( !mem ){
free(brms); free(brms);
printk("BRM: Failed to allocate HW memory\n\r"); printk("BRM: Failed to allocate HW memory\n\r");
@@ -680,7 +677,7 @@ static rtems_device_driver brm_initialize(rtems_device_major_number major, rtems
brm->memarea_base = (unsigned int)&mem[(128*1024) * minor]; brm->memarea_base = (unsigned int)&mem[(128*1024) * minor];
brm->desc = (struct desc_table *) brm->memarea_base; brm->desc = (struct desc_table *) brm->memarea_base;
brm->mem = (volatile unsigned short *) brm->memarea_base; brm->mem = (volatile unsigned short *) brm->memarea_base;
brm->irq_log = (void *)(brm->memarea_base + (0xFFE0<<1)); /* last 64byte */ brm->irq_log = (struct irq_log_list *)(brm->memarea_base + (0xFFE0<<1)); /* last 64byte */
brm->bm_event = NULL; brm->bm_event = NULL;
brm->rt_event = NULL; brm->rt_event = NULL;
@@ -1126,6 +1123,7 @@ static rtems_device_driver brm_control(rtems_device_major_number major, rtems_de
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
#ifdef B1553BRM_DEFINE_INTHANDLER
static void b1553brm_interrupt_handler(rtems_vector_number v){ static void b1553brm_interrupt_handler(rtems_vector_number v){
int i; int i;
/* find minor */ /* find minor */
@@ -1136,14 +1134,15 @@ static void b1553brm_interrupt_handler(rtems_vector_number v){
} }
} }
} }
#endif
static void brm_interrupt(brm_priv *brm) { static void brm_interrupt(brm_priv *brm) {
unsigned short descriptor, current, pending, miw, wc, tmp; unsigned short descriptor, current, pending, miw, wc, tmp;
unsigned short msgadr, iaw, iiw; unsigned short msgadr, iaw, iiw;
int len; int len;
int signal_event=0; int signal_event=0;
unsigned int event_status; unsigned int event_status=0;
#define SET_ERROR_DESCRIPTOR(descriptor) (event_status = (event_status & 0x0000ffff) | descriptor<<16); #define SET_ERROR_DESCRIPTOR(descriptor) (event_status = (event_status & 0x0000ffff) | descriptor<<16)
while( (iiw=READ_REG(&brm->irq_log[brm->irq].iiw)) != 0xffff ){ while( (iiw=READ_REG(&brm->irq_log[brm->irq].iiw)) != 0xffff ){
iaw=READ_REG(&brm->irq_log[brm->irq].iaw); iaw=READ_REG(&brm->irq_log[brm->irq].iaw);

View File

@@ -82,6 +82,8 @@
#ifndef GRCAN_REG_INT #ifndef GRCAN_REG_INT
#define GRCAN_REG_INT(handler,irqno,arg) set_vector(handler,irqno+0x10,1) #define GRCAN_REG_INT(handler,irqno,arg) set_vector(handler,irqno+0x10,1)
#undef GRCAN_DEFINE_INTHANDLER
#define GRCAN_DEFINE_INTHANDLER
#endif #endif
#ifndef GRCAN_DEFAULT_BAUD #ifndef GRCAN_DEFAULT_BAUD
@@ -227,7 +229,6 @@ struct grcan_priv {
static int grcan_core_cnt; static int grcan_core_cnt;
struct grcan_priv *grcans; struct grcan_priv *grcans;
static amba_confarea_type *amba_bus; static amba_confarea_type *amba_bus;
static unsigned int ram_base;
struct grcan_device_info *grcan_cores; struct grcan_device_info *grcan_cores;
static int grcan_core_cnt; static int grcan_core_cnt;

View File

@@ -58,17 +58,17 @@ void (*grcan_rasta_int_reg)(void *handler, int irq, void *arg) = 0;
#define RX_BUF_SIZE 4096 #define RX_BUF_SIZE 4096
#define STATIC_TX_BUF_ADDR(core) \ #define STATIC_TX_BUF_ADDR(core) \
(grcan_rasta_rambase+(core)*(STATIC_TX_BUF_SIZE+STATIC_RX_BUF_SIZE)) ((unsigned int *)\
(grcan_rasta_rambase+(core)*(STATIC_TX_BUF_SIZE+STATIC_RX_BUF_SIZE)))
#define STATIC_RX_BUF_ADDR(core) \ #define STATIC_RX_BUF_ADDR(core) \
(grcan_rasta_rambase+(core)*(STATIC_TX_BUF_SIZE+STATIC_RX_BUF_SIZE)+STATIC_RX_BUF_SIZE) ((unsigned int *) \
(grcan_rasta_rambase+(core)*(STATIC_TX_BUF_SIZE+STATIC_RX_BUF_SIZE)+STATIC_RX_BUF_SIZE))
#define GRCAN_DEVNAME "/dev/grcan0" #define GRCAN_DEVNAME "/dev/grcan0"
#define GRCAN_DEVNAME_NO(devstr,no) ((devstr)[10]='0'+(no)) #define GRCAN_DEVNAME_NO(devstr,no) ((devstr)[10]='0'+(no))
static int grcan_rasta_calc_memoffs(int maxcores, int corenum, unsigned int *mem_base, unsigned int *mem_end, unsigned int *bdtable_base);
void grcan_rasta_interrupt_handler(int irq, void *pDev); void grcan_rasta_interrupt_handler(int irq, void *pDev);
unsigned int grcan_rasta_rambase; unsigned int grcan_rasta_rambase;

View File

@@ -65,6 +65,8 @@ rtems_assoc_t errno_assoc[] = {
#ifndef OCCAN_REG_INT #ifndef OCCAN_REG_INT
#define OCCAN_REG_INT(handler,irq,arg) set_vector(handler,irq+0x10,1) #define OCCAN_REG_INT(handler,irq,arg) set_vector(handler,irq+0x10,1)
#undef OCCAN_DEFINE_INTHANDLER
#define OCCAN_DEFINE_INTHANDLER
#endif #endif
/* Default to 40MHz system clock */ /* Default to 40MHz system clock */
@@ -258,14 +260,14 @@ static int occan_set_speedregs(occan_priv *priv, occan_speed_regs *timing);
static int pelican_speed_auto(occan_priv *priv); static int pelican_speed_auto(occan_priv *priv);
static void pelican_init(occan_priv *priv); static void pelican_init(occan_priv *priv);
static void pelican_open(occan_priv *priv); static void pelican_open(occan_priv *priv);
static void pelican_close(occan_priv *priv);
static int pelican_start(occan_priv *priv); static int pelican_start(occan_priv *priv);
static void pelican_stop(occan_priv *priv); static void pelican_stop(occan_priv *priv);
static void pelican_exit(occan_priv *priv);
static int pelican_send(occan_priv *can, CANMsg *msg); static int pelican_send(occan_priv *can, CANMsg *msg);
static void pelican_set_accept(occan_priv *priv, unsigned char *acode, unsigned char *amask); static void pelican_set_accept(occan_priv *priv, unsigned char *acode, unsigned char *amask);
static void occan_interrupt(occan_priv *can); static void occan_interrupt(occan_priv *can);
#ifdef DEBUG_PRINT_REGMAP
static void pelican_regadr_print(pelican_regs *regs); static void pelican_regadr_print(pelican_regs *regs);
#endif
/***** Driver related interface *****/ /***** Driver related interface *****/
static rtems_device_driver occan_ioctl(rtems_device_major_number major, rtems_device_minor_number minor, void *arg); static rtems_device_driver occan_ioctl(rtems_device_major_number major, rtems_device_minor_number minor, void *arg);
@@ -274,8 +276,9 @@ static rtems_device_driver occan_read(rtems_device_major_number major, rtems_dev
static rtems_device_driver occan_close(rtems_device_major_number major, rtems_device_minor_number minor, void *arg); static rtems_device_driver occan_close(rtems_device_major_number major, rtems_device_minor_number minor, void *arg);
static rtems_device_driver occan_open(rtems_device_major_number major, rtems_device_minor_number minor, void *arg); static rtems_device_driver occan_open(rtems_device_major_number major, rtems_device_minor_number minor, void *arg);
static rtems_device_driver occan_initialize(rtems_device_major_number major, rtems_device_minor_number unused, void *arg); static rtems_device_driver occan_initialize(rtems_device_major_number major, rtems_device_minor_number unused, void *arg);
#ifdef OCCAN_DEFINE_INTHANDLER
static void occan_interrupt_handler(rtems_vector_number v); static void occan_interrupt_handler(rtems_vector_number v);
#endif
static int can_cores; static int can_cores;
static occan_priv *cans; static occan_priv *cans;
static amba_confarea_type *amba_bus; static amba_confarea_type *amba_bus;
@@ -429,14 +432,6 @@ static void pelican_open(occan_priv *priv){
tmp = READ_REG(&priv->regs->intflags); tmp = READ_REG(&priv->regs->intflags);
} }
static void pelican_close(occan_priv *priv){
/* disable all interrupts */
priv->regs->inten = 0;
priv->regs->mode = PELICAN_MOD_RESET;
}
static int pelican_start(occan_priv *priv){ static int pelican_start(occan_priv *priv){
unsigned char tmp; unsigned char tmp;
/* Start HW communication */ /* Start HW communication */
@@ -509,11 +504,6 @@ static void pelican_stop(occan_priv *priv){
} }
static void pelican_exit(occan_priv *priv){
/* reset core */
priv->regs->mode = PELICAN_MOD_RESET;
}
/* Try to send message "msg", if hardware txfifo is /* Try to send message "msg", if hardware txfifo is
* full, then -1 is returned. * full, then -1 is returned.
* *
@@ -595,6 +585,7 @@ static void pelican_set_accept(occan_priv *priv, unsigned char *acode, unsigned
*amask3 = amask[3]; *amask3 = amask[3];
} }
#ifdef DEBUG
static void pelican_regs_print(pelican_regs *regs){ static void pelican_regs_print(pelican_regs *regs){
printk("--- PELICAN 0x%lx ---\n\r",(unsigned int)regs); printk("--- PELICAN 0x%lx ---\n\r",(unsigned int)regs);
printk(" MODE: 0x%02x\n\r",READ_REG(&regs->mode)); printk(" MODE: 0x%02x\n\r",READ_REG(&regs->mode));
@@ -627,7 +618,9 @@ static void pelican_regs_print(pelican_regs *regs){
printk(" CLKDIV: 0x%02x\n\r",READ_REG(&regs->clkdiv)); printk(" CLKDIV: 0x%02x\n\r",READ_REG(&regs->clkdiv));
printk("-------------------\n\r"); printk("-------------------\n\r");
} }
#endif
#ifdef DEBUG_PRINT_REGMAP
static void pelican_regadr_print(pelican_regs *regs){ static void pelican_regadr_print(pelican_regs *regs){
printk("--- PELICAN 0x%lx ---\n\r",(unsigned int)regs); printk("--- PELICAN 0x%lx ---\n\r",(unsigned int)regs);
printk(" MODE: 0x%lx\n\r",(unsigned int)&regs->mode); printk(" MODE: 0x%lx\n\r",(unsigned int)&regs->mode);
@@ -717,7 +710,9 @@ static void pelican_regadr_print(pelican_regs *regs){
printk(" CLKDIV: 0x%lx\n\r",(unsigned int)&regs->clkdiv); printk(" CLKDIV: 0x%lx\n\r",(unsigned int)&regs->clkdiv);
printk("-------------------\n\r"); printk("-------------------\n\r");
} }
#endif
#ifdef DEBUG
static void occan_stat_print(occan_stats *stats){ static void occan_stat_print(occan_stats *stats){
printk("----Stats----\n\r"); printk("----Stats----\n\r");
printk("rx_msgs: %d\n\r",stats->rx_msgs); printk("rx_msgs: %d\n\r",stats->rx_msgs);
@@ -731,6 +726,7 @@ static void occan_stat_print(occan_stats *stats){
printk("tx_buf_err: %d\n\r",stats->tx_buf_error); printk("tx_buf_err: %d\n\r",stats->tx_buf_error);
printk("-------------\n\r"); printk("-------------\n\r");
} }
#endif
/* This function calculates BTR0 BTR1 values for a given bitrate. /* This function calculates BTR0 BTR1 values for a given bitrate.
* Heavily based on mgt_mscan_bitrate() from peak driver, which * Heavily based on mgt_mscan_bitrate() from peak driver, which
@@ -1391,7 +1387,6 @@ static rtems_device_driver occan_ioctl(rtems_device_major_number major, rtems_de
rtems_libio_ioctl_args_t *ioarg = (rtems_libio_ioctl_args_t *) arg; rtems_libio_ioctl_args_t *ioarg = (rtems_libio_ioctl_args_t *) arg;
struct occan_afilter *afilter; struct occan_afilter *afilter;
occan_stats *dststats; occan_stats *dststats;
unsigned char btr0, btr1;
unsigned int rxcnt,txcnt; unsigned int rxcnt,txcnt;
DBG("OCCAN: IOCTL %d\n\r",ioarg->command); DBG("OCCAN: IOCTL %d\n\r",ioarg->command);
@@ -1794,6 +1789,7 @@ static void occan_interrupt(occan_priv *can){
} }
} }
#ifdef OCCAN_DEFINE_INTHANDLER
static void occan_interrupt_handler(rtems_vector_number v){ static void occan_interrupt_handler(rtems_vector_number v){
int minor; int minor;
@@ -1805,6 +1801,7 @@ static void occan_interrupt_handler(rtems_vector_number v){
} }
} }
} }
#endif
#define OCCAN_DRIVER_TABLE_ENTRY { occan_initialize, occan_open, occan_close, occan_read, occan_write, occan_ioctl } #define OCCAN_DRIVER_TABLE_ENTRY { occan_initialize, occan_open, occan_close, occan_read, occan_write, occan_ioctl }

View File

@@ -67,6 +67,8 @@
#ifndef GRSPW_REG_INT #ifndef GRSPW_REG_INT
#define GRSPW_REG_INT(handler,irqno,arg) set_vector(handler,irqno+0x10,1) #define GRSPW_REG_INT(handler,irqno,arg) set_vector(handler,irqno+0x10,1)
#undef GRSPW_DEFINE_INTHANDLER
#define GRSPW_DEFINE_INTHANDLER
#endif #endif
#include <bsp.h> #include <bsp.h>
@@ -303,8 +305,8 @@ static unsigned int _MEM_READ(void *addr) {
#define SPW_PREPAREMASK_RX (SPW_DMACTRL_TXEN | SPW_DMACTRL_TXIE | SPW_DMACTRL_AI | SPW_DMACTRL_PR | SPW_DMACTRL_RA) #define SPW_PREPAREMASK_RX (SPW_DMACTRL_TXEN | SPW_DMACTRL_TXIE | SPW_DMACTRL_AI | SPW_DMACTRL_PR | SPW_DMACTRL_RA)
static int grspw_hw_init(GRSPW_DEV *pDev); static int grspw_hw_init(GRSPW_DEV *pDev);
static int grspw_hw_send(GRSPW_DEV *pDev, unsigned int hlen, unsigned char *hdr, unsigned int dlen, unsigned char *data); static int grspw_hw_send(GRSPW_DEV *pDev, unsigned int hlen, char *hdr, unsigned int dlen, char *data);
static int grspw_hw_receive(GRSPW_DEV *pDev,unsigned char *b,int c); static int grspw_hw_receive(GRSPW_DEV *pDev,char *b,int c);
static int grspw_hw_startup (GRSPW_DEV *pDev, int timeout); static int grspw_hw_startup (GRSPW_DEV *pDev, int timeout);
static int grspw_hw_stop (GRSPW_DEV *pDev, int rx, int tx); static int grspw_hw_stop (GRSPW_DEV *pDev, int rx, int tx);
static void grspw_hw_wait_rx_inactive(GRSPW_DEV *pDev); static void grspw_hw_wait_rx_inactive(GRSPW_DEV *pDev);
@@ -500,6 +502,7 @@ static int grspw_buffer_alloc(GRSPW_DEV *pDev)
} }
#ifdef GRSPW_DEFINE_INTHANDLER
/* /*
* Standard Interrupt handler * Standard Interrupt handler
*/ */
@@ -514,6 +517,7 @@ static rtems_isr grspw_interrupt_handler(rtems_vector_number v)
} }
} }
} }
#endif
static void grspw_interrupt(GRSPW_DEV *pDev){ static void grspw_interrupt(GRSPW_DEV *pDev){
int dmactrl; int dmactrl;
@@ -1464,7 +1468,7 @@ static int grspw_hw_stop (GRSPW_DEV *pDev, int rx, int tx)
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
int grspw_hw_send(GRSPW_DEV *pDev, unsigned int hlen, unsigned char *hdr, unsigned int dlen, unsigned char *data) int grspw_hw_send(GRSPW_DEV *pDev, unsigned int hlen, char *hdr, unsigned int dlen, char *data)
{ {
unsigned int dmactrl, ctrl; unsigned int dmactrl, ctrl;
@@ -1539,7 +1543,7 @@ int grspw_hw_send(GRSPW_DEV *pDev, unsigned int hlen, unsigned char *hdr, unsign
return hlen + dlen; return hlen + dlen;
} }
static int grspw_hw_receive(GRSPW_DEV *pDev, unsigned char *b, int c) { static int grspw_hw_receive(GRSPW_DEV *pDev, char *b, int c) {
unsigned int len, rxlen, ctrl; unsigned int len, rxlen, ctrl;
unsigned int cur; unsigned int cur;
unsigned int tmp; unsigned int tmp;

View File

@@ -105,6 +105,7 @@ int grspw_pci_register(
*/ */
int grspwpci_interrupt_handler(int irq, void *arg){ int grspwpci_interrupt_handler(int irq, void *arg){
grspw_interrupt( (GRSPW_DEV *)arg ); grspw_interrupt( (GRSPW_DEV *)arg );
return 0;
} }
#if 0 #if 0

View File

@@ -44,6 +44,8 @@
#ifndef APBUART_REG_INT #ifndef APBUART_REG_INT
#define APBUART_REG_INT(handler,irq,arg) set_vector(handler,irq+0x10,1) #define APBUART_REG_INT(handler,irq,arg) set_vector(handler,irq+0x10,1)
#undef APBUART_DEFINE_INTHANDLER
#define APBUART_DEFINE_INTHANDLER
#endif #endif
/* Default to 40MHz system clock */ /* Default to 40MHz system clock */
@@ -117,7 +119,9 @@ static rtems_driver_address_table apbuart_driver = APBUART_DRIVER_TABLE_ENTRY;
static amba_confarea_type *amba_bus; static amba_confarea_type *amba_bus;
static void apbuart_interrupt(apbuart_priv *uart); static void apbuart_interrupt(apbuart_priv *uart);
#ifdef APBUART_DEFINE_INTHANDLER
static void apbuart_interrupt_handler(rtems_vector_number v); static void apbuart_interrupt_handler(rtems_vector_number v);
#endif
static void apbuart_hw_close(apbuart_priv *uart); static void apbuart_hw_close(apbuart_priv *uart);
static void apbuart_hw_open(apbuart_priv *uart); static void apbuart_hw_open(apbuart_priv *uart);
@@ -213,6 +217,7 @@ static void apbuart_hw_close(apbuart_priv *uart){
uart->regs->ctrl = 0; uart->regs->ctrl = 0;
} }
#ifdef APBUART_DEFINE_INTHANDLER
/* interrupt handler */ /* interrupt handler */
static void apbuart_interrupt_handler(rtems_vector_number v){ static void apbuart_interrupt_handler(rtems_vector_number v){
int minor; int minor;
@@ -225,6 +230,7 @@ static void apbuart_interrupt_handler(rtems_vector_number v){
} }
} }
} }
#endif
/* The interrupt handler, taking care of the /* The interrupt handler, taking care of the
* APBUART hardware * APBUART hardware