+ int i;
+ struct canchip_t *chip=candev->chip[0];
+ unsigned cdr;
+
+ oscar_write_register(sjaMOD_RM, chip->chip_base_addr+SJAMOD);
+ udelay(1000);
+
+ cdr=oscar_read_register(chip->chip_base_addr+SJACDR);
+ oscar_write_register(cdr|sjaCDR_PELICAN, chip->chip_base_addr+SJACDR);
+
+ oscar_write_register(0, chip->chip_base_addr+SJAIER);
+
+ i=20;
+ oscar_write_register(0, chip->chip_base_addr+SJAMOD);
+ while (oscar_read_register(chip->chip_base_addr+SJAMOD)&sjaMOD_RM){
+ if(!i--) return -ENODEV;
+ udelay(1000);
+ oscar_write_register(0, chip->chip_base_addr+SJAMOD);
+ }
+
+ cdr=oscar_read_register(chip->chip_base_addr+SJACDR);
+ oscar_write_register(cdr|sjaCDR_PELICAN, chip->chip_base_addr+SJACDR);
+
+ oscar_write_register(0, chip->chip_base_addr+SJAIER);
+
+ return 0;