int init_chip_struct(struct candevice_t *candev, int chipnr, int irq, long baudrate, long clock);
int init_obj_struct(struct candevice_t *candev, struct canchip_t *hostchip, int objnr);
+int next_minor=0;
+
/**
* can_base_addr_fixup - relocates board physical memory addresses to the CPU accessible ones
* @candev: pointer to the previously filled device/board, chips and message objects structures
*/
int register_obj_struct(struct msgobj_t *obj, int minorbase)
{
- static int next_minor=0;
int i;
if(minorbase>=0)
return 0;
}
+/**
+ * init_new_hw_struct - initializes driver description structures for new hardware
+ *
+ * The function init_new_hw_struct() is used to initialize the hardware structure.
+ *
+ * Return Value: returns negative number in the case of fail
+ */
+int init_new_hw_struct(int devnr)
+{
+ int irq_param_idx=0;
+ int chan_param_idx=0;
+
+ if ( (hw[devnr] != NULL) & (devnr < MAX_HW_CARDS) ) {
+ hardware_p->nr_boards++;
+
+ if (init_device_struct(devnr, &chan_param_idx, &irq_param_idx)) {
+ CANMSG("Error initializing candevice_t structures.\n");
+ return -ENODEV;
+ }
+ }
+
+ return 0;
+}
+
/**
* init_device_struct - initializes single CAN device/board
* @card: index into @hardware_p HW description
candev->dev_base_addr=io[card];
clock=clockfreq[card];
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10))
+ kref_init(&candev->refcount);
+#endif
+
candev->hwspecops=(struct hwspecops_t *)can_checked_malloc(sizeof(struct hwspecops_t));
if (candev->hwspecops==NULL)
goto error_nomem;