aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-at91rm9200/devices.c1
-rw-r--r--arch/avr32/mach-at32ap/at32ap7000.c33
2 files changed, 28 insertions, 6 deletions
diff --git a/arch/arm/mach-at91rm9200/devices.c b/arch/arm/mach-at91rm9200/devices.c
index 5a3919f09d4d..059824376629 100644
--- a/arch/arm/mach-at91rm9200/devices.c
+++ b/arch/arm/mach-at91rm9200/devices.c
@@ -561,6 +561,7 @@ static struct resource dbgu_resources[] = {
561static struct atmel_uart_data dbgu_data = { 561static struct atmel_uart_data dbgu_data = {
562 .use_dma_tx = 0, 562 .use_dma_tx = 0,
563 .use_dma_rx = 0, /* DBGU not capable of receive DMA */ 563 .use_dma_rx = 0, /* DBGU not capable of receive DMA */
564 .regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
564}; 565};
565 566
566static struct platform_device at91rm9200_dbgu_device = { 567static struct platform_device at91rm9200_dbgu_device = {
diff --git a/arch/avr32/mach-at32ap/at32ap7000.c b/arch/avr32/mach-at32ap/at32ap7000.c
index 05d1296bd7b2..3dd305875087 100644
--- a/arch/avr32/mach-at32ap/at32ap7000.c
+++ b/arch/avr32/mach-at32ap/at32ap7000.c
@@ -523,32 +523,48 @@ void __init at32_add_system_devices(void)
523 * USART 523 * USART
524 * -------------------------------------------------------------------- */ 524 * -------------------------------------------------------------------- */
525 525
526static struct atmel_uart_data atmel_usart0_data = {
527 .use_dma_tx = 1,
528 .use_dma_rx = 1,
529};
526static struct resource atmel_usart0_resource[] = { 530static struct resource atmel_usart0_resource[] = {
527 PBMEM(0xffe00c00), 531 PBMEM(0xffe00c00),
528 IRQ(7), 532 IRQ(7),
529}; 533};
530DEFINE_DEV(atmel_usart, 0); 534DEFINE_DEV_DATA(atmel_usart, 0);
531DEV_CLK(usart, atmel_usart0, pba, 4); 535DEV_CLK(usart, atmel_usart0, pba, 4);
532 536
537static struct atmel_uart_data atmel_usart1_data = {
538 .use_dma_tx = 1,
539 .use_dma_rx = 1,
540};
533static struct resource atmel_usart1_resource[] = { 541static struct resource atmel_usart1_resource[] = {
534 PBMEM(0xffe01000), 542 PBMEM(0xffe01000),
535 IRQ(7), 543 IRQ(7),
536}; 544};
537DEFINE_DEV(atmel_usart, 1); 545DEFINE_DEV_DATA(atmel_usart, 1);
538DEV_CLK(usart, atmel_usart1, pba, 4); 546DEV_CLK(usart, atmel_usart1, pba, 4);
539 547
548static struct atmel_uart_data atmel_usart2_data = {
549 .use_dma_tx = 1,
550 .use_dma_rx = 1,
551};
540static struct resource atmel_usart2_resource[] = { 552static struct resource atmel_usart2_resource[] = {
541 PBMEM(0xffe01400), 553 PBMEM(0xffe01400),
542 IRQ(8), 554 IRQ(8),
543}; 555};
544DEFINE_DEV(atmel_usart, 2); 556DEFINE_DEV_DATA(atmel_usart, 2);
545DEV_CLK(usart, atmel_usart2, pba, 5); 557DEV_CLK(usart, atmel_usart2, pba, 5);
546 558
559static struct atmel_uart_data atmel_usart3_data = {
560 .use_dma_tx = 1,
561 .use_dma_rx = 1,
562};
547static struct resource atmel_usart3_resource[] = { 563static struct resource atmel_usart3_resource[] = {
548 PBMEM(0xffe01800), 564 PBMEM(0xffe01800),
549 IRQ(9), 565 IRQ(9),
550}; 566};
551DEFINE_DEV(atmel_usart, 3); 567DEFINE_DEV_DATA(atmel_usart, 3);
552DEV_CLK(usart, atmel_usart3, pba, 6); 568DEV_CLK(usart, atmel_usart3, pba, 6);
553 569
554static inline void configure_usart0_pins(void) 570static inline void configure_usart0_pins(void)
@@ -597,8 +613,13 @@ static struct platform_device *setup_usart(unsigned int id)
597 configure_usart3_pins(); 613 configure_usart3_pins();
598 break; 614 break;
599 default: 615 default:
600 pdev = NULL; 616 return NULL;
601 break; 617 }
618
619 if (PXSEG(pdev->resource[0].start) == P4SEG) {
620 /* Addresses in the P4 segment are permanently mapped 1:1 */
621 struct atmel_uart_data *data = pdev->dev.platform_data;
622 data->regs = (void __iomem *)pdev->resource[0].start;
602 } 623 }
603 624
604 return pdev; 625 return pdev;