diff options
Diffstat (limited to 'arch/arm/mach-at91/at91rm9200_devices.c')
-rw-r--r-- | arch/arm/mach-at91/at91rm9200_devices.c | 92 |
1 files changed, 89 insertions, 3 deletions
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index ef6aeb86e980..de19bee83f75 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c | |||
@@ -577,6 +577,90 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) | |||
577 | 577 | ||
578 | 578 | ||
579 | /* -------------------------------------------------------------------- | 579 | /* -------------------------------------------------------------------- |
580 | * Timer/Counter blocks | ||
581 | * -------------------------------------------------------------------- */ | ||
582 | |||
583 | #ifdef CONFIG_ATMEL_TCLIB | ||
584 | |||
585 | static struct resource tcb0_resources[] = { | ||
586 | [0] = { | ||
587 | .start = AT91RM9200_BASE_TCB0, | ||
588 | .end = AT91RM9200_BASE_TCB0 + SZ_16K - 1, | ||
589 | .flags = IORESOURCE_MEM, | ||
590 | }, | ||
591 | [1] = { | ||
592 | .start = AT91RM9200_ID_TC0, | ||
593 | .end = AT91RM9200_ID_TC0, | ||
594 | .flags = IORESOURCE_IRQ, | ||
595 | }, | ||
596 | [2] = { | ||
597 | .start = AT91RM9200_ID_TC1, | ||
598 | .end = AT91RM9200_ID_TC1, | ||
599 | .flags = IORESOURCE_IRQ, | ||
600 | }, | ||
601 | [3] = { | ||
602 | .start = AT91RM9200_ID_TC2, | ||
603 | .end = AT91RM9200_ID_TC2, | ||
604 | .flags = IORESOURCE_IRQ, | ||
605 | }, | ||
606 | }; | ||
607 | |||
608 | static struct platform_device at91rm9200_tcb0_device = { | ||
609 | .name = "atmel_tcb", | ||
610 | .id = 0, | ||
611 | .resource = tcb0_resources, | ||
612 | .num_resources = ARRAY_SIZE(tcb0_resources), | ||
613 | }; | ||
614 | |||
615 | static struct resource tcb1_resources[] = { | ||
616 | [0] = { | ||
617 | .start = AT91RM9200_BASE_TCB1, | ||
618 | .end = AT91RM9200_BASE_TCB1 + SZ_16K - 1, | ||
619 | .flags = IORESOURCE_MEM, | ||
620 | }, | ||
621 | [1] = { | ||
622 | .start = AT91RM9200_ID_TC3, | ||
623 | .end = AT91RM9200_ID_TC3, | ||
624 | .flags = IORESOURCE_IRQ, | ||
625 | }, | ||
626 | [2] = { | ||
627 | .start = AT91RM9200_ID_TC4, | ||
628 | .end = AT91RM9200_ID_TC4, | ||
629 | .flags = IORESOURCE_IRQ, | ||
630 | }, | ||
631 | [3] = { | ||
632 | .start = AT91RM9200_ID_TC5, | ||
633 | .end = AT91RM9200_ID_TC5, | ||
634 | .flags = IORESOURCE_IRQ, | ||
635 | }, | ||
636 | }; | ||
637 | |||
638 | static struct platform_device at91rm9200_tcb1_device = { | ||
639 | .name = "atmel_tcb", | ||
640 | .id = 1, | ||
641 | .resource = tcb1_resources, | ||
642 | .num_resources = ARRAY_SIZE(tcb1_resources), | ||
643 | }; | ||
644 | |||
645 | static void __init at91_add_device_tc(void) | ||
646 | { | ||
647 | /* this chip has a separate clock and irq for each TC channel */ | ||
648 | at91_clock_associate("tc0_clk", &at91rm9200_tcb0_device.dev, "t0_clk"); | ||
649 | at91_clock_associate("tc1_clk", &at91rm9200_tcb0_device.dev, "t1_clk"); | ||
650 | at91_clock_associate("tc2_clk", &at91rm9200_tcb0_device.dev, "t2_clk"); | ||
651 | platform_device_register(&at91rm9200_tcb0_device); | ||
652 | |||
653 | at91_clock_associate("tc3_clk", &at91rm9200_tcb1_device.dev, "t0_clk"); | ||
654 | at91_clock_associate("tc4_clk", &at91rm9200_tcb1_device.dev, "t1_clk"); | ||
655 | at91_clock_associate("tc5_clk", &at91rm9200_tcb1_device.dev, "t2_clk"); | ||
656 | platform_device_register(&at91rm9200_tcb1_device); | ||
657 | } | ||
658 | #else | ||
659 | static void __init at91_add_device_tc(void) { } | ||
660 | #endif | ||
661 | |||
662 | |||
663 | /* -------------------------------------------------------------------- | ||
580 | * RTC | 664 | * RTC |
581 | * -------------------------------------------------------------------- */ | 665 | * -------------------------------------------------------------------- */ |
582 | 666 | ||
@@ -1019,7 +1103,7 @@ static inline void configure_usart3_pins(unsigned pins) | |||
1019 | at91_set_B_periph(AT91_PIN_PB0, 0); /* RTS3 */ | 1103 | at91_set_B_periph(AT91_PIN_PB0, 0); /* RTS3 */ |
1020 | } | 1104 | } |
1021 | 1105 | ||
1022 | static struct platform_device *at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ | 1106 | static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ |
1023 | struct platform_device *atmel_default_console_device; /* the serial console device */ | 1107 | struct platform_device *atmel_default_console_device; /* the serial console device */ |
1024 | 1108 | ||
1025 | void __init __deprecated at91_init_serial(struct at91_uart_config *config) | 1109 | void __init __deprecated at91_init_serial(struct at91_uart_config *config) |
@@ -1110,8 +1194,6 @@ void __init at91_set_serial_console(unsigned portnr) | |||
1110 | { | 1194 | { |
1111 | if (portnr < ATMEL_MAX_UART) | 1195 | if (portnr < ATMEL_MAX_UART) |
1112 | atmel_default_console_device = at91_uarts[portnr]; | 1196 | atmel_default_console_device = at91_uarts[portnr]; |
1113 | if (!atmel_default_console_device) | ||
1114 | printk(KERN_INFO "AT91: No default serial console defined.\n"); | ||
1115 | } | 1197 | } |
1116 | 1198 | ||
1117 | void __init at91_add_device_serial(void) | 1199 | void __init at91_add_device_serial(void) |
@@ -1122,6 +1204,9 @@ void __init at91_add_device_serial(void) | |||
1122 | if (at91_uarts[i]) | 1204 | if (at91_uarts[i]) |
1123 | platform_device_register(at91_uarts[i]); | 1205 | platform_device_register(at91_uarts[i]); |
1124 | } | 1206 | } |
1207 | |||
1208 | if (!atmel_default_console_device) | ||
1209 | printk(KERN_INFO "AT91: No default serial console defined.\n"); | ||
1125 | } | 1210 | } |
1126 | #else | 1211 | #else |
1127 | void __init __deprecated at91_init_serial(struct at91_uart_config *config) {} | 1212 | void __init __deprecated at91_init_serial(struct at91_uart_config *config) {} |
@@ -1141,6 +1226,7 @@ static int __init at91_add_standard_devices(void) | |||
1141 | { | 1226 | { |
1142 | at91_add_device_rtc(); | 1227 | at91_add_device_rtc(); |
1143 | at91_add_device_watchdog(); | 1228 | at91_add_device_watchdog(); |
1229 | at91_add_device_tc(); | ||
1144 | return 0; | 1230 | return 0; |
1145 | } | 1231 | } |
1146 | 1232 | ||