clkdev: add possibility to get a clock based on the device name
[linux-2.6] / arch / arm / mach-mx2 / serial.c
1 /*
2  * Copyright 2006-2007 Freescale Semiconductor, Inc. All Rights Reserved.
3  * Copyright 2008 Juergen Beisert, kernel@pengutronix.de
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17  * MA 02110-1301, USA.
18  */
19
20 #include <linux/module.h>
21 #include <linux/platform_device.h>
22 #include <linux/serial.h>
23 #include <mach/hardware.h>
24 #include <mach/imx-uart.h>
25 #include "devices.h"
26
27 static struct resource uart0[] = {
28         {
29                 .start = UART1_BASE_ADDR,
30                 .end = UART1_BASE_ADDR + 0x0B5,
31                 .flags = IORESOURCE_MEM,
32         }, {
33                 .start = MXC_INT_UART1,
34                 .end = MXC_INT_UART1,
35                 .flags = IORESOURCE_IRQ,
36         },
37 };
38
39 struct platform_device mxc_uart_device0 = {
40         .name = "imx-uart",
41         .id = 0,
42         .resource = uart0,
43         .num_resources = ARRAY_SIZE(uart0),
44 };
45
46 static struct resource uart1[] = {
47         {
48                 .start = UART2_BASE_ADDR,
49                 .end = UART2_BASE_ADDR + 0x0B5,
50                 .flags = IORESOURCE_MEM,
51         }, {
52                 .start = MXC_INT_UART2,
53                 .end = MXC_INT_UART2,
54                 .flags = IORESOURCE_IRQ,
55         },
56 };
57
58 struct platform_device mxc_uart_device1 = {
59         .name = "imx-uart",
60         .id = 1,
61         .resource = uart1,
62         .num_resources = ARRAY_SIZE(uart1),
63 };
64
65 static struct resource uart2[] = {
66         {
67                 .start = UART3_BASE_ADDR,
68                 .end = UART3_BASE_ADDR + 0x0B5,
69                 .flags = IORESOURCE_MEM,
70         }, {
71                 .start = MXC_INT_UART3,
72                 .end = MXC_INT_UART3,
73                 .flags = IORESOURCE_IRQ,
74         },
75 };
76
77 struct platform_device mxc_uart_device2 = {
78         .name = "imx-uart",
79         .id = 2,
80         .resource = uart2,
81         .num_resources = ARRAY_SIZE(uart2),
82 };
83
84 static struct resource uart3[] = {
85         {
86                 .start = UART4_BASE_ADDR,
87                 .end = UART4_BASE_ADDR + 0x0B5,
88                 .flags = IORESOURCE_MEM,
89         }, {
90                 .start = MXC_INT_UART4,
91                 .end = MXC_INT_UART4,
92                 .flags = IORESOURCE_IRQ,
93         },
94 };
95
96 struct platform_device mxc_uart_device3 = {
97         .name = "imx-uart",
98         .id = 3,
99         .resource = uart3,
100         .num_resources = ARRAY_SIZE(uart3),
101 };
102
103 #ifdef CONFIG_MACH_MX27
104 static struct resource uart4[] = {
105         {
106                 .start = UART5_BASE_ADDR,
107                 .end = UART5_BASE_ADDR + 0x0B5,
108                 .flags = IORESOURCE_MEM,
109         }, {
110                 .start = MXC_INT_UART5,
111                 .end = MXC_INT_UART5,
112                 .flags = IORESOURCE_IRQ,
113         },
114 };
115
116 struct platform_device mxc_uart_device4 = {
117         .name = "imx-uart",
118         .id = 4,
119         .resource = uart4,
120         .num_resources = ARRAY_SIZE(uart4),
121 };
122
123 static struct resource uart5[] = {
124         {
125                 .start = UART6_BASE_ADDR,
126                 .end = UART6_BASE_ADDR + 0x0B5,
127                 .flags = IORESOURCE_MEM,
128         }, {
129                 .start = MXC_INT_UART6,
130                 .end = MXC_INT_UART6,
131                 .flags = IORESOURCE_IRQ,
132         },
133 };
134
135 struct platform_device mxc_uart_device5 = {
136         .name = "imx-uart",
137         .id = 5,
138         .resource = uart5,
139         .num_resources = ARRAY_SIZE(uart5),
140 };
141 #endif