* Version lincan-0.3 17 Jun 2004
*/
-/* This file is included in unican.c when CAN_ENABLE_VME_SUPPORT is
+/* This file is included in unican.c if CAN_ENABLE_VME_SUPPORT is
* set. */
-#include "ca91c042.h"
-
-#define UNICAN_VME_IRQ 1
-
-/* Used to pass chip pointer to irq handler. This sould be done in VME
- * bridge driver */
-#define VME_CHIPS_SIZE 8
-struct chip_t *vme_chips[VME_CHIPS_SIZE];
-
-can_irqreturn_t unican_vme_irq_handler(int vmeirq, int vector, void *dev_id, struct pt_regs *regs)
-{
-/* struct chip_t *chip = vme_chips[vector < VME_CHIPS_SIZE && vector >= 0 ? vector : 0]; */
- struct chip_t *chip = vme_chips[0];
-
- DEBUGMSG("unican_vme_irq_handler: vmeirq=0x%08x vector=0x%08x\n", vmeirq, vector);
- return unican_irq_handler(vmeirq, chip, regs);
-}
-
-/**
- * unican_program_irq - program interrupts
- * @candev: Pointer to candevice/board structure
- *
- * Return value: The function returns zero on success or %-ENODEV on failure
- * File: src/unican.c
- */
-int unican_vme_program_irq(struct candevice_t *candev)
-{
- struct chip_t *chip = candev->chip[0];
-
- if (chip->chip_irq < 0 || chip->chip_irq >= VME_CHIPS_SIZE) {
- CANMSG("Bad irq parameter. Maximum is %d.\n", VME_CHIPS_SIZE-1);
- return -EINVAL;
- }
-
-/* vme_chips[chip->chip_irq] = chip; */
- vme_chips[0] = chip;
-
- request_vmeirq(UNICAN_VME_IRQ, unican_vme_irq_handler);
- enable_vmeirq(UNICAN_VME_IRQ);
-
- return 0;
-}
-
-int unican_vme_request_io(struct candevice_t *candev)
-{
- unican_request_io(candev);
-
- return 0;
-}
-
-/**
- * unican_vme_release_io - free reserved io memory range
- * @candev: pointer to candevice/board which releases io
- *
- * Return Value: The function always returns zero
- * File: src/unican.c
- */
-int unican_vme_release_io(struct candevice_t *candev)
-{
- disable_vmeirq(UNICAN_VME_IRQ);
- free_vmeirq(UNICAN_VME_IRQ);
-
- unican_release_io(candev);
-
- return 0;
-}
/**
* unican_vme_init_hw_data - Initialize hardware cards
int unican_vme_reset(struct candevice_t *candev)
{
int ret;
- struct chip_t *chip = candev->chip[0];
+ struct canchip_t *chip = candev->chip[0];
ret = unican_reset(candev);
/* Setup VME interrupt vector */
if (ret == 0)
- unican_writew(0x1234/* chip->chip_irq */,chip->chip_base_addr+CL2_VME_INT_VECTOR);
-
+ unican_writew(chip->chip_irq, chip->chip_base_addr+CL2_VME_INT_VECTOR);
return ret;
}
*/
int unican_vme_init_chip_data(struct candevice_t *candev, int chipnr)
{
- struct chip_t *chip = candev->chip[chipnr];
+ struct canchip_t *chip = candev->chip[chipnr];
unican_init_chip_data(candev, chipnr);
chip->flags |= CHIP_IRQ_VME;
- chip->chipspecops->irq_handler=unican_vme_irq_handler;
+ /*chip->chipspecops->irq_handler=unican_irq_handler;*/
return 0;
}
hwspecops->init_hw_data = unican_vme_init_hw_data;
hwspecops->init_chip_data = unican_vme_init_chip_data;
- hwspecops->request_io = unican_vme_request_io;
+ hwspecops->request_io = unican_request_io;
hwspecops->reset = unican_vme_reset;
- hwspecops->program_irq = unican_vme_program_irq;
- hwspecops->release_io = unican_vme_release_io;
+ hwspecops->release_io = unican_release_io;
return 0;
}