1/* linux/arch/arm/plat-s5p/dev-uart.c 2 * 3 * Copyright (c) 2009 Samsung Electronics Co., Ltd. 4 * http://www.samsung.com/ 5 * 6 * Base S5P UART resource and device definitions 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License version 2 as 10 * published by the Free Software Foundation. 11*/ 12 13#include <linux/kernel.h> 14#include <linux/types.h> 15#include <linux/interrupt.h> 16#include <linux/list.h> 17#include <linux/platform_device.h> 18 19#include <asm/mach/arch.h> 20#include <asm/mach/irq.h> 21#include <mach/hardware.h> 22#include <mach/map.h> 23 24#include <plat/devs.h> 25 26 /* Serial port registrations */ 27 28static struct resource s5p_uart0_resource[] = { 29 [0] = { 30 .start = S5P_PA_UART0, 31 .end = S5P_PA_UART0 + S5P_SZ_UART, 32 .flags = IORESOURCE_MEM, 33 }, 34 [1] = { 35 .start = IRQ_S5P_UART_RX0, 36 .end = IRQ_S5P_UART_RX0, 37 .flags = IORESOURCE_IRQ, 38 }, 39 [2] = { 40 .start = IRQ_S5P_UART_TX0, 41 .end = IRQ_S5P_UART_TX0, 42 .flags = IORESOURCE_IRQ, 43 }, 44 [3] = { 45 .start = IRQ_S5P_UART_ERR0, 46 .end = IRQ_S5P_UART_ERR0, 47 .flags = IORESOURCE_IRQ, 48 } 49}; 50 51static struct resource s5p_uart1_resource[] = { 52 [0] = { 53 .start = S5P_PA_UART1, 54 .end = S5P_PA_UART1 + S5P_SZ_UART, 55 .flags = IORESOURCE_MEM, 56 }, 57 [1] = { 58 .start = IRQ_S5P_UART_RX1, 59 .end = IRQ_S5P_UART_RX1, 60 .flags = IORESOURCE_IRQ, 61 }, 62 [2] = { 63 .start = IRQ_S5P_UART_TX1, 64 .end = IRQ_S5P_UART_TX1, 65 .flags = IORESOURCE_IRQ, 66 }, 67 [3] = { 68 .start = IRQ_S5P_UART_ERR1, 69 .end = IRQ_S5P_UART_ERR1, 70 .flags = IORESOURCE_IRQ, 71 }, 72}; 73 74static struct resource s5p_uart2_resource[] = { 75 [0] = { 76 .start = S5P_PA_UART2, 77 .end = S5P_PA_UART2 + S5P_SZ_UART, 78 .flags = IORESOURCE_MEM, 79 }, 80 [1] = { 81 .start = IRQ_S5P_UART_RX2, 82 .end = IRQ_S5P_UART_RX2, 83 .flags = IORESOURCE_IRQ, 84 }, 85 [2] = { 86 .start = IRQ_S5P_UART_TX2, 87 .end = IRQ_S5P_UART_TX2, 88 .flags = IORESOURCE_IRQ, 89 }, 90 [3] = { 91 .start = IRQ_S5P_UART_ERR2, 92 .end = IRQ_S5P_UART_ERR2, 93 .flags = IORESOURCE_IRQ, 94 }, 95}; 96 97static struct resource s5p_uart3_resource[] = { 98#if CONFIG_SERIAL_SAMSUNG_UARTS > 3 99 [0] = { 100 .start = S5P_PA_UART3, 101 .end = S5P_PA_UART3 + S5P_SZ_UART, 102 .flags = IORESOURCE_MEM, 103 }, 104 [1] = { 105 .start = IRQ_S5P_UART_RX3, 106 .end = IRQ_S5P_UART_RX3, 107 .flags = IORESOURCE_IRQ, 108 }, 109 [2] = { 110 .start = IRQ_S5P_UART_TX3, 111 .end = IRQ_S5P_UART_TX3, 112 .flags = IORESOURCE_IRQ, 113 }, 114 [3] = { 115 .start = IRQ_S5P_UART_ERR3, 116 .end = IRQ_S5P_UART_ERR3, 117 .flags = IORESOURCE_IRQ, 118 }, 119#endif 120}; 121 122struct s3c24xx_uart_resources s5p_uart_resources[] __initdata = { 123 [0] = { 124 .resources = s5p_uart0_resource, 125 .nr_resources = ARRAY_SIZE(s5p_uart0_resource), 126 }, 127 [1] = { 128 .resources = s5p_uart1_resource, 129 .nr_resources = ARRAY_SIZE(s5p_uart1_resource), 130 }, 131 [2] = { 132 .resources = s5p_uart2_resource, 133 .nr_resources = ARRAY_SIZE(s5p_uart2_resource), 134 }, 135 [3] = { 136 .resources = s5p_uart3_resource, 137 .nr_resources = ARRAY_SIZE(s5p_uart3_resource), 138 }, 139}; 140