X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/49e5d02a7ffce9534cdbb70d0b4e1181755da074..8fdb6813a61bd9b0f5b98ee90d0ebbbcca82fad6:/lincan/src/main.c diff --git a/lincan/src/main.c b/lincan/src/main.c index 0e9f2a5..b59160b 100644 --- a/lincan/src/main.c +++ b/lincan/src/main.c @@ -413,7 +413,7 @@ int init_module(void) -struct candevice_t* register_usbdev(const char *hwname,void *anydev){ +struct candevice_t* register_usbdev(const char *hwname,void *devdata,void (*chipdataregfnc)(struct canchip_t *ch,void *data)){ int i=0, j, board=0; struct candevice_t *candev; struct canchip_t *chip; @@ -446,7 +446,7 @@ struct candevice_t* register_usbdev(const char *hwname,void *anydev){ candev=hardware_p->candevice[board]; /* Adding link to usb device structure into can device */ - candev->sysdevptr.anydev=anydev; + candev->sysdevptr.anydev=devdata; if (candev->hwspecops->request_io(candev)) goto request_io_error; @@ -459,6 +459,8 @@ struct candevice_t* register_usbdev(const char *hwname,void *anydev){ if((chip=candev->chip[j])==NULL) continue; + chipdataregfnc(chip,devdata); + if(chip->chipspecops->attach_to_chip(chip)<0) { CANMSG("Initial attach to the chip HW failed\n"); goto interrupt_error; @@ -591,29 +593,15 @@ void cleanup_usbdev(struct candevice_t *dev) } #endif - for(i=0;ihostchip->hostdevice != dev) continue; - //canqueue_ends_done_chip(objects_p[i]->qends); - //can_checked_free(objects_p[i]->qends); - //can_checked_free(objects_p[i]); - objects_p[i]=NULL; - } - for(i=0;ihostdevice != dev) continue; - //can_checked_free(chips_p[i]->chipspecops); - //can_checked_free(chips_p[i]); chips_p[i]=NULL; } hardware_p->candevice[dev->candev_idx]=NULL; hardware_p->nr_boards--; - //kfree(hw[dev->candev_idx]); hw[dev->candev_idx]=NULL; - //can_checked_free(dev->hwspecops); - //can_checked_free(dev); candevice_done(dev); can_checked_free(dev);