Pull sony into release branch
[pandora-kernel.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=0*N*-1
56 #define IPRA(N) IPRx(0xfffffee2UL,N)
57 #define IPRB(N) IPRx(0xfffffee4UL,N)
58 #define IPRE(N) IPRx(0xa400001aUL,N)
59
60 static struct ipr_data sh7709_ipr_map[] = {
61         [16]            = { IPRA(15-12), 2 }, /* TMU TUNI0 */
62         [17]            = { IPRA(11-8),  4 }, /* TMU TUNI1 */
63         [22]            = { IPRA(3-0),   2 }, /* RTC CUI */
64         [23 ... 26]     = { IPRB(7-4),   3 }, /* SCI */
65         [27]            = { IPRB(15-12), 2 }, /* WDT ITI */
66         [48 ... 51]     = { IPRE(15-12), 7 }, /* DMA */
67         [52 ... 55]     = { IPRE(11-8),  3 }, /* IRDA */
68         [56 ... 59]     = { IPRE(7-4),   3 }, /* SCIF */
69 };
70
71 void __init init_IRQ_ipr()
72 {
73         make_ipr_irq(sh7709_ipr_map, ARRAY_SIZE(sh7709_ipr_map));
74 }