+ /* Alocate and initialize the chip structures */
+ for (chipnr=0; chipnr < candev->nr_all_chips; chipnr++) {
+
+ if(chipnr<irqnum)
+ irqsig=irq[*irq_param_idx_p+chipnr];
+
+ bd=baudrate[*chan_param_idx_p+chipnr];
+ if(!bd) bd=baudrate[0];
+
+ if ((ret=init_chip_struct(candev, chipnr, irqsig, bd*1000)))
+ goto error_chip;
+ }
+
+
+
+ for (chipnr=0; chipnr < candev->nr_all_chips; chipnr++) {
+ int m=minor[*chan_param_idx_p+chipnr];
+ struct chip_t *chip=candev->chip[chipnr];
+ int objnr;
+
+ register_chip_struct(chip, m);
+
+ for (objnr=0; objnr<chip->max_objects; objnr++) {
+ register_obj_struct(chip->msgobj[objnr], m);
+ if(m>=0) m++;
+ }
+ }
+
+ *irq_param_idx_p += irqnum;
+ *chan_param_idx_p += candev->nr_all_chips;