+/* 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"
#include "../include/setup.h"
-
+/**
+ * msgobj_done - destroys one CAN message object
+ * @obj: pointer to CAN message object structure
+ */
void msgobj_done(struct msgobj_t *obj)
{
int delayed=0;
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;
}
}
-void canchip_done(struct chip_t *chip)
+/**
+ * canchip_done - destroys one CAN chip representation
+ * @chip: pointer to CAN chip structure
+ */
+void canchip_done(struct canchip_t *chip)
{
int i;
CANMSG("canchip_done: not registered in hostdevice\n");
}
- if((chip->flags & CHIP_IRQ_SETUP) && (chip->chip_irq>=0)) {
- free_irq(chip->chip_irq, chip);
- chip->flags &= ~CHIP_IRQ_SETUP;
- }
+ can_chip_free_irq(chip);
can_synchronize_irq(chip->chip_irq);
}
+/**
+ * candevice_done - destroys representation of one CAN device/board
+ * @candev: pointer to CAN device/board structure
+ */
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)
candev->hwspecops=NULL;
}
+/**
+ * candevice_done - destroys representation of all CAN devices/boards
+ * @canhw: pointer to the root of all CAN hardware representation
+ */
void canhardware_done(struct canhardware_t *canhw)
{
int i;