//#include "./can/ul_usb1.h"
-//#include "./can/setup.h"
+#include "./can/setup.h"
#include "./usb/usb_defs.h"
#include "./usb/usb_vend.h"
-
-#include "can/lpc17xx_can.h"
+extern int can_lmc1_register(struct hwspecops_t *hwspecops);
+extern int ul_usb1_register(struct hwspecops_t *hwspecops);
#define MASK_EP1RX 0x01
#define MASK_EP1TX 0x02
}
}
-/***********************************************************************
- * Microsecond delay routine
- ***********************************************************************/
-/*
-void udelay(long time)
-{
- volatile long ticks=(time * CCLK) / 2000000;
- do{
- ticks--;
- } while(ticks>0);
-}
-*/
-
/***********************************************************************
* Routine for visible LED blinking (on USB transmission)
***********************************************************************/
}
- //***********************************************************************
+ // ***********************************************************************
// * CAN device initialization - device side (adapted from LinCAN setup.c)
// ***********************************************************************
- // DEBUG
- //can_init(); // useless with lpc17xx (defined in can_lpcbusemu.c)
-
-
DEBUGMSG("Initiating CAN device initialization\n");
baudrate[0]=1000;
- // DEBUG
- //ul_usb1_register(candev->hwspecops); //(defined in ul_usb1.c)
- // register for another board:
+#ifdef CONFIG_OC_LINCAN_CARD_ul_usb1
+ ul_usb1_register(candev->hwspecops);
+#endif
+#ifdef CONFIG_OC_LINCAN_CARD_can_lmc1
can_lmc1_register(candev->hwspecops);
-
-
+#endif
bd=baudrate[0];
if (candev->hwspecops->init_hw_data(candev)){
}
- if (candev->hwspecops->request_io(candev))
+ if (candev->hwspecops->request_io(candev)) {
+ CANMSG("Error to request IO\n");
sys_err();
+ }
candev->flags|=CANDEV_IO_RESERVED;
- if (candev->hwspecops->reset(candev))
+ if (candev->hwspecops->reset(candev)) {
+ CANMSG("Error to reset chip\n");
sys_err();
+ }
for(chipnr=0; chipnr<candev->nr_all_chips; chipnr++) {
chip->flags |= CHIP_ATTACHED;
-// Interrupts from chip are served in main cycle
-// if(can_chip_setup_irq(chip)<0) {
-// CANMSG("Error to setup chip IRQ\n");
-// sys_err();
-// }
+ // used with lpc17xx:
+ if(can_chip_setup_irq(chip)<0) {
+ CANMSG("Error to setup chip IRQ\n");
+ sys_err();
+ }
+
}
if (candev->flags & CANDEV_PROGRAMMABLE_IRQ)
usb_check_events(&usb_device);
usb_control_response(&usb_device);
-// useless with lpc17xx:
-// if (!(IO0PIN&P0_SJA1000_INT_PIN)) //INT PIN is inverted
-// chip->chipspecops->irq_handler(0,chip);
+#ifdef CONFIG_OC_LINCAN_CARD_ul_usb1
+ /* polled IRQ mode for ul_usb1 board*/
+ if (!(IO0PIN&P0_SJA1000_INT_PIN)) /* INT PIN is inverted */
+ chip->chipspecops->irq_handler(0,chip);
+#endif
if (usb_device.ep_events & MASK_EP1RX) { //EP1RX - data waiting to receive
}
+
}