* Version lincan-0.2 9 Jul 2003
*/
-#define __NO_VERSION__
-#include <linux/module.h>
-
-#include <linux/autoconf.h>
-
-#include <linux/sched.h>
-#include <linux/fs.h>
-
+#include "../include/can.h"
+#include "../include/can_sysdep.h"
#include "../include/main.h"
#include "../include/i82527.h"
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;
}
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
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; i<rtr_search->rtr_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)){
}
/* preempt_enable(); */
- spin_unlock(&dummy_lock);
+ can_spin_unlock(&dummy_lock);
return 0;
}