X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/adb01113d2bc1a7d277898079d13490e8a48b293..04ac67cc3cac14cd601daacd0592121ec0b84012:/lincan/src/mpc5200.c diff --git a/lincan/src/mpc5200.c b/lincan/src/mpc5200.c index 9371eca..ae0a465 100644 --- a/lincan/src/mpc5200.c +++ b/lincan/src/mpc5200.c @@ -61,7 +61,7 @@ int mpc5200_request_io(struct candevice_t *candev) /* Select device by chipnr: * first dev is @ 900 * second dev is @ 980 - * + * * There are only two devices on MPC5200 */ /* initialize internal address storage */ @@ -80,7 +80,7 @@ int mpc5200_request_io(struct candevice_t *candev) continue; } - + if (mpc5200_init_device_node(candev->chip[chipnr], dn)) return -ENODEV; @@ -108,13 +108,13 @@ int mpc5200_release_io(struct candevice_t *candev) iounmap((void*)chips_addr[i]); kfree(chips_addr); - + return 0; } int mpc5200_reset(struct candevice_t *candev) { - int i; + int i; DEBUGMSG("Resetting MSCAN chips ...\n"); for (i = 0; i < candev->nr_all_chips; i++) @@ -127,7 +127,7 @@ int mpc5200_reset(struct candevice_t *candev) return 0; } -int mpc5200_init_hw_data(struct candevice_t *candev) +int mpc5200_init_hw_data(struct candevice_t *candev) { /* candev->res_addr = RESET_ADDR; */ candev->nr_82527_chips = NR_82527; @@ -137,6 +137,19 @@ int mpc5200_init_hw_data(struct candevice_t *candev) return 0; } + +/* special function for midam board */ +int mpc5200_midam_init_hw_data(struct candevice_t *candev) +{ + /* use same init routine */ + mpc5200_init_hw_data(candev); + + /* modify chip count */ + candev->nr_all_chips = NR_ALL_MIDAM; + + return 0; +} + int mpc5200_init_chip_data(struct candevice_t *candev, int chipnr) { mscan_fill_chipspecops(candev->chip[chipnr]); @@ -163,7 +176,7 @@ int mpc5200_init_obj_data(struct canchip_t *chip, int objnr) int mpc5200_program_irq(struct candevice_t *candev) { - /* we don't use programmable interrupt on MPC5200 */ + /* we don't use programmable interrupt on MPC5200 */ return 0; } @@ -196,6 +209,16 @@ int mpc5200_register(struct hwspecops_t *hwspecops) return 0; } +int mpc5200_midam_register(struct hwspecops_t *hwspecops) +{ + /* use same register routine for MIDAM board */ + mpc5200_register(hwspecops); + + /* use specific init_hw_data */ + hwspecops->init_hw_data = mpc5200_midam_init_hw_data; + + return 0; +} int mpc5200_init_device_node(struct canchip_t * chip, struct device_node * devnode) { @@ -215,6 +238,6 @@ int mpc5200_init_device_node(struct canchip_t * chip, struct device_node * devno } DEBUGMSG("Bound to io-addr: 0x%08x IRQ: %d\n", (unsigned int)chip->chip_base_addr, chip->chip_irq); - + return 0; }