diff options
| -rw-r--r-- | arch/arm/mach-at91/at91sam9263_devices.c | 36 | ||||
| -rw-r--r-- | 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 b7f233242315..6026c2e0d5cc 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) | |||
| 757 | void __init at91_add_device_ac97(struct atmel_ac97_data *data) {} | 757 | void __init at91_add_device_ac97(struct atmel_ac97_data *data) {} |
| 758 | #endif | 758 | #endif |
| 759 | 759 | ||
| 760 | /* -------------------------------------------------------------------- | ||
| 761 | * CAN Controller | ||
| 762 | * -------------------------------------------------------------------- */ | ||
| 763 | |||
| 764 | #if defined(CONFIG_CAN_AT91) || defined(CONFIG_CAN_AT91_MODULE) | ||
| 765 | static struct resource can_resources[] = { | ||
| 766 | [0] = { | ||
| 767 | .start = AT91SAM9263_BASE_CAN, | ||
| 768 | .end = AT91SAM9263_BASE_CAN + SZ_16K - 1, | ||
| 769 | .flags = IORESOURCE_MEM, | ||
| 770 | }, | ||
| 771 | [1] = { | ||
| 772 | .start = AT91SAM9263_ID_CAN, | ||
| 773 | .end = AT91SAM9263_ID_CAN, | ||
| 774 | .flags = IORESOURCE_IRQ, | ||
| 775 | }, | ||
| 776 | }; | ||
| 777 | |||
| 778 | static struct platform_device at91sam9263_can_device = { | ||
| 779 | .name = "at91_can", | ||
| 780 | .id = -1, | ||
| 781 | .resource = can_resources, | ||
| 782 | .num_resources = ARRAY_SIZE(can_resources), | ||
| 783 | }; | ||
| 784 | |||
| 785 | void __init at91_add_device_can(struct at91_can_data *data) | ||
| 786 | { | ||
| 787 | at91_set_A_periph(AT91_PIN_PA13, 0); /* CANTX */ | ||
| 788 | at91_set_A_periph(AT91_PIN_PA14, 0); /* CANRX */ | ||
| 789 | at91sam9263_can_device.dev.platform_data = data; | ||
| 790 | |||
| 791 | platform_device_register(&at91sam9263_can_device); | ||
| 792 | } | ||
| 793 | #else | ||
| 794 | void __init at91_add_device_can(struct at91_can_data *data) {} | ||
| 795 | #endif | ||
| 760 | 796 | ||
| 761 | /* -------------------------------------------------------------------- | 797 | /* -------------------------------------------------------------------- |
| 762 | * LCD Controller | 798 | * LCD Controller |
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h index e6afff849b85..134731cd9fdf 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); | |||
| 179 | /* Touchscreen Controller */ | 179 | /* Touchscreen Controller */ |
| 180 | extern void __init at91_add_device_tsadcc(void); | 180 | extern void __init at91_add_device_tsadcc(void); |
| 181 | 181 | ||
| 182 | /* CAN */ | ||
| 183 | struct at91_can_data { | ||
| 184 | void (*transceiver_switch)(int on); | ||
| 185 | }; | ||
| 186 | extern void __init at91_add_device_can(struct at91_can_data *data); | ||
| 187 | |||
| 182 | /* LEDs */ | 188 | /* LEDs */ |
| 183 | extern void __init at91_init_leds(u8 cpu_led, u8 timer_led); | 189 | extern void __init at91_init_leds(u8 cpu_led, u8 timer_led); |
| 184 | extern void __init at91_gpio_leds(struct gpio_led *leds, int nr); | 190 | extern void __init at91_gpio_leds(struct gpio_led *leds, int nr); |
