+/* finish.c - finalization of the driver operation
+ * Linux CAN-bus device driver.
+ * Written by Arnaud Westenberg email:arnaud@wanadoo.nl
+ * Rewritten for new CAN queues by Pavel Pisa - OCERA team member
+ * email:pisa@cmp.felk.cvut.cz
+ * This software is released under the GPL-License.
+ * Version lincan-0.3 17 Jun 2004
+ */
+
#include "../include/can.h"
#include "../include/can_sysdep.h"
#include "../include/main.h"
if(obj->hostchip->msgobj[obj->object-1] == obj)
obj->hostchip->msgobj[obj->object-1]=NULL;
else
- CANMSG("msgobj_done: not registered in the chip_t\n");
+ CANMSG("msgobj_done: not registered in the canchip_t\n");
obj->hostchip=NULL;
}
* canchip_done - destroys one CAN chip representation
* @chip: pointer to CAN chip structure
*/
-void canchip_done(struct chip_t *chip)
+void canchip_done(struct canchip_t *chip)
{
int i;
struct msgobj_t *obj;
+ if(chip->flags & CHIP_ATTACHED)
+ chip->chipspecops->release_chip(chip);
+
if((chip->hostdevice) && (chip->chip_idx>=0)) {
if(chip->hostdevice->chip[chip->chip_idx] == chip)
chip->hostdevice->chip[chip->chip_idx] = NULL;
void candevice_done(struct candevice_t *candev)
{
int i;
- struct chip_t *chip;
+ struct canchip_t *chip;
for(i=0; i<candev->nr_all_chips; i++){
if((chip=candev->chip[i])==NULL)