X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/659b098309c2bca57ac60a35a1b9900d6f28e74d..91dfab84182937b62ef64cb12d8e4f89e6d5c3ec:/lincan/src/i82527.c diff --git a/lincan/src/i82527.c b/lincan/src/i82527.c index ec99430..7a57f45 100644 --- a/lincan/src/i82527.c +++ b/lincan/src/i82527.c @@ -7,14 +7,8 @@ * Version lincan-0.2 9 Jul 2003 */ -#define __NO_VERSION__ -#include - -#include - -#include -#include - +#include "../include/can.h" +#include "../include/can_sysdep.h" #include "../include/main.h" #include "../include/i82527.h" @@ -89,10 +83,10 @@ int i82527_chip_config(struct chip_t *chip) else DEBUGMSG("Could read back, hardware is probably configured correctly\n"); - if (baudrate == 0) - baudrate=1000; + if (chip->baudrate == 0) + chip->baudrate=1000000; - if (i82527_baud_rate(chip,baudrate*1000,chip->clock,0,75,0)) { + if (i82527_baud_rate(chip,chip->baudrate,chip->clock,0,75,0)) { CANMSG("Error configuring baud rate\n"); return -ENODEV; } @@ -526,14 +520,14 @@ irqreturn_t i82527_irq_handler(int irq, void *dev_id, struct pt_regs *regs) message_id=(id0|id1)>>5; } - spin_lock(&hardware_p->rtr_lock); + can_spin_lock(&hardware_p->rtr_lock); rtr_search=hardware_p->rtr_queue; while (rtr_search != NULL) { if (rtr_search->id == message_id) break; rtr_search=rtr_search->next; } - spin_unlock(&hardware_p->rtr_lock); + can_spin_unlock(&hardware_p->rtr_lock); if ((rtr_search!=NULL) && (rtr_search->id==message_id)) i82527_irq_rtr_handler(chip, obj, rtr_search, message_id); else @@ -553,27 +547,27 @@ void i82527_irq_rtr_handler(struct chip_t *chip, struct msgobj_t *obj, canobj_write_reg(chip,obj,(MVAL_RES|TXIE_RES|RXIE_RES|INTPD_RES),iMSGCTL0); canobj_write_reg(chip,obj,(RMPD_RES|TXRQ_RES|MLST_RES|NEWD_RES),iMSGCTL1); - spin_lock(&hardware_p->rtr_lock); + can_spin_lock(&hardware_p->rtr_lock); rtr_search->rtr_message->id=message_id; rtr_search->rtr_message->length=(canobj_read_reg(chip,obj,iMSGCFG) & 0xf0)>>4; for (i=0; irtr_message->length; i++) rtr_search->rtr_message->data[i]=canobj_read_reg(chip,obj,iMSGDAT0+i); - spin_unlock(&hardware_p->rtr_lock); + can_spin_unlock(&hardware_p->rtr_lock); if (waitqueue_active(&rtr_search->rtr_wq)) - wake_up_interruptible(&rtr_search->rtr_wq); + wake_up(&rtr_search->rtr_wq); } int i82527_wakeup_tx(struct chip_t *chip, struct msgobj_t *obj) { /* dummy lock to prevent preemption fully portable way */ - spinlock_t dummy_lock; + can_spinlock_t dummy_lock; /* preempt_disable() */ - spin_lock_init(&dummy_lock); - spin_lock(&dummy_lock); + can_spin_lock_init(&dummy_lock); + can_spin_lock(&dummy_lock); set_bit(OBJ_TX_REQUEST,&obj->flags); while(!test_and_set_bit(OBJ_TX_LOCK,&obj->flags)){ @@ -587,7 +581,7 @@ int i82527_wakeup_tx(struct chip_t *chip, struct msgobj_t *obj) } /* preempt_enable(); */ - spin_unlock(&dummy_lock); + can_spin_unlock(&dummy_lock); return 0; }