Pull thermal into release branch
[linux-drm-fsl-dcu.git] / arch / sh / kernel / cpu / sh3 / setup-sh7709.c
1 /*
2  * SH7707/SH7709 Setup
3  *
4  *  Copyright (C) 2006  Paul Mundt
5  *
6  * This file is subject to the terms and conditions of the GNU General Public
7  * License.  See the file "COPYING" in the main directory of this archive
8  * for more details.
9  */
10 #include <linux/platform_device.h>
11 #include <linux/init.h>
12 #include <linux/serial.h>
13 #include <asm/sci.h>
14
15 static struct plat_sci_port sci_platform_data[] = {
16         {
17                 .mapbase        = 0xfffffe80,
18                 .flags          = UPF_BOOT_AUTOCONF,
19                 .type           = PORT_SCI,
20                 .irqs           = { 23, 24, 25, 0 },
21         }, {
22                 .mapbase        = 0xa4000150,
23                 .flags          = UPF_BOOT_AUTOCONF,
24                 .type           = PORT_SCIF,
25                 .irqs           = { 56, 57, 59, 58 },
26         }, {
27                 .mapbase        = 0xa4000140,
28                 .flags          = UPF_BOOT_AUTOCONF,
29                 .type           = PORT_IRDA,
30                 .irqs           = { 52, 53, 55, 54 },
31         }, {
32                 .flags = 0,
33         }
34 };
35
36 static struct platform_device sci_device = {
37         .name           = "sh-sci",
38         .id             = -1,
39         .dev            = {
40                 .platform_data  = sci_platform_data,
41         },
42 };
43
44 static struct platform_device *sh7709_devices[] __initdata = {
45         &sci_device,
46 };
47
48 static int __init sh7709_devices_setup(void)
49 {
50         return platform_add_devices(sh7709_devices,
51                 ARRAY_SIZE(sh7709_devices));
52 }
53 __initcall(sh7709_devices_setup);
54
55 #define IPRx(A,N)       .addr=A, .shift=N
56 #define IPRA(N) IPRx(0xfffffee2UL,N)
57 #define IPRB(N) IPRx(0xfffffee4UL,N)
58 #define IPRC(N) IPRx(0xa4000016UL,N)
59 #define IPRD(N) IPRx(0xa4000018UL,N)
60 #define IPRE(N) IPRx(0xa400001aUL,N)
61
62 static struct ipr_data sh7709_ipr_map[] = {
63         [16]            = { IPRA(12), 2 }, /* TMU TUNI0 */
64         [17]            = { IPRA(8),  4 }, /* TMU TUNI1 */
65         [18 ... 19]     = { IPRA(4),  1 }, /* TMU TUNI1 */
66         [20 ... 22]     = { IPRA(0),  2 }, /* RTC CUI */
67         [23 ... 26]     = { IPRB(4),  3 }, /* SCI */
68         [27]            = { IPRB(12), 2 }, /* WDT ITI */
69         [32]            = { IPRC(0),  1 }, /* IRQ 0 */
70         [33]            = { IPRC(4),  1 }, /* IRQ 1 */
71         [34]            = { IPRC(8),  1 }, /* IRQ 2 APM */
72         [35]            = { IPRC(12), 1 }, /* IRQ 3 TOUCHSCREEN */
73         [36]            = { IPRD(0),  1 }, /* IRQ 4 */
74         [37]            = { IPRD(4),  1 }, /* IRQ 5 */
75         [48 ... 51]     = { IPRE(12), 7 }, /* DMA */
76         [52 ... 55]     = { IPRE(8),  3 }, /* IRDA */
77         [56 ... 59]     = { IPRE(4),  3 }, /* SCIF */
78 };
79
80 void __init init_IRQ_ipr()
81 {
82         make_ipr_irq(sh7709_ipr_map, ARRAY_SIZE(sh7709_ipr_map));
83 }