Marc Kleine-Budde wrote: > This patch adds the device definition for the at91_can device to > the generic device definiton file for the at91sam9263. > > Signed-off-by: Hans J. Koch <[email protected]> > Signed-off-by: Marc Kleine-Budde <[email protected]> > --- > arch/arm/mach-at91/at91sam9263_devices.c | 36 > ++++++++++++++++++++++++++++++ > arch/arm/mach-at91/include/mach/board.h | 6 +++++ > 2 files changed, 42 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/mach-at91/at91sam9263_devices.c > b/arch/arm/mach-at91/at91sam9263_devices.c > index b7f2332..6026c2e 100644 > --- a/arch/arm/mach-at91/at91sam9263_devices.c > +++ b/arch/arm/mach-at91/at91sam9263_devices.c > @@ -757,6 +757,42 @@ void __init at91_add_device_ac97(struct atmel_ac97_data > *data) > void __init at91_add_device_ac97(struct atmel_ac97_data *data) {} > #endif > > +/* -------------------------------------------------------------------- > + * CAN Controller > + * -------------------------------------------------------------------- */ > + > +#if defined(CONFIG_CAN_AT91) || defined(CONFIG_CAN_AT91_MODULE) > +static struct resource can_resources[] = { > + [0] = { > + .start = AT91SAM9263_BASE_CAN, > + .end = AT91SAM9263_BASE_CAN + SZ_16K - 1, > + .flags = IORESOURCE_MEM, > + }, > + [1] = { > + .start = AT91SAM9263_ID_CAN, > + .end = AT91SAM9263_ID_CAN, > + .flags = IORESOURCE_IRQ, > + }, > +}; > + > +static struct platform_device at91sam9263_can_device = { > + .name = "at91_can", > + .id = -1, > + .resource = can_resources, > + .num_resources = ARRAY_SIZE(can_resources), > +}; > + > +void __init at91_add_device_can(struct at91_can_data *data) > +{ > + at91_set_A_periph(AT91_PIN_PA13, 0); /* CANTX */ > + at91_set_A_periph(AT91_PIN_PA14, 0); /* CANRX */ > + at91sam9263_can_device.dev.platform_data = data; > + > + platform_device_register(&at91sam9263_can_device); > +} > +#else > +void __init at91_add_device_can(struct at91_can_data *data) {} > +#endif > > /* -------------------------------------------------------------------- > * LCD Controller > diff --git a/arch/arm/mach-at91/include/mach/board.h > b/arch/arm/mach-at91/include/mach/board.h > index e6afff8..134731c 100644 > --- a/arch/arm/mach-at91/include/mach/board.h > +++ b/arch/arm/mach-at91/include/mach/board.h > @@ -179,6 +179,12 @@ extern void __init at91_add_device_isi(void); > /* Touchscreen Controller */ > extern void __init at91_add_device_tsadcc(void); > > +/* CAN */ > +struct at91_can_data { > + void (*transceiver_switch)(int on); > +}; > +extern void __init at91_add_device_can(struct at91_can_data *data); > + > /* LEDs */ > extern void __init at91_init_leds(u8 cpu_led, u8 timer_led); > extern void __init at91_gpio_leds(struct gpio_led *leds, int nr);
Acked-by: Wolfgang Grandegger <[email protected]> _______________________________________________ Socketcan-core mailing list [email protected] https://lists.berlios.de/mailman/listinfo/socketcan-core
