17d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda/*
27d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda * SH7763 Setup
37d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda *
47d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda *  Copyright (C) 2006  Paul Mundt
57d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda *  Copyright (C) 2007  Yoshihiro Shimoda
6a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu *  Copyright (C) 2008, 2009  Nobuhiro Iwamatsu
77d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda *
87d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda * This file is subject to the terms and conditions of the GNU General Public
97d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda * License.  See the file "COPYING" in the main directory of this archive
107d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda * for more details.
117d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda */
127d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#include <linux/platform_device.h>
137d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#include <linux/init.h>
147d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#include <linux/serial.h>
150ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm#include <linux/sh_timer.h>
167d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#include <linux/io.h>
1796de1a8f0275bd67f243833e7088baced518f873Paul Mundt#include <linux/serial_sci.h>
187d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
19a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Dammstatic struct plat_sci_port scif0_platform_data = {
20a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.mapbase	= 0xffe00000,
21a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.flags		= UPF_BOOT_AUTOCONF,
22f43dc23d5ea91fca257be02138a255f02d98e806Paul Mundt	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE,
23f43dc23d5ea91fca257be02138a255f02d98e806Paul Mundt	.scbrr_algo_id	= SCBRR_ALGO_2,
24a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.type		= PORT_SCIF,
25a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.irqs		= { 40, 40, 40, 40 },
2661a6976bf19a6cf5dfcf37c3536665b316f22d49Paul Mundt	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,
27a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm};
28a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm
29a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Dammstatic struct platform_device scif0_device = {
30a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.name		= "sh-sci",
31a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.id		= 0,
32a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.dev		= {
33a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm		.platform_data	= &scif0_platform_data,
34a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	},
35a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm};
36a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm
37a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Dammstatic struct plat_sci_port scif1_platform_data = {
38a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.mapbase	= 0xffe08000,
39a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.flags		= UPF_BOOT_AUTOCONF,
40f43dc23d5ea91fca257be02138a255f02d98e806Paul Mundt	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE,
41f43dc23d5ea91fca257be02138a255f02d98e806Paul Mundt	.scbrr_algo_id	= SCBRR_ALGO_2,
42a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.type		= PORT_SCIF,
43a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.irqs		= { 76, 76, 76, 76 },
4461a6976bf19a6cf5dfcf37c3536665b316f22d49Paul Mundt	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,
45a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm};
46a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm
47a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Dammstatic struct platform_device scif1_device = {
48a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.name		= "sh-sci",
49a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.id		= 1,
50a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.dev		= {
51a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm		.platform_data	= &scif1_platform_data,
52a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	},
53a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm};
54a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm
55a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Dammstatic struct plat_sci_port scif2_platform_data = {
56a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.mapbase	= 0xffe10000,
57a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.flags		= UPF_BOOT_AUTOCONF,
58f43dc23d5ea91fca257be02138a255f02d98e806Paul Mundt	.scscr		= SCSCR_RE | SCSCR_TE | SCSCR_REIE,
59f43dc23d5ea91fca257be02138a255f02d98e806Paul Mundt	.scbrr_algo_id	= SCBRR_ALGO_2,
60a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.type		= PORT_SCIF,
61a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.irqs		= { 104, 104, 104, 104 },
6261a6976bf19a6cf5dfcf37c3536665b316f22d49Paul Mundt	.regtype	= SCIx_SH4_SCIF_FIFODATA_REGTYPE,
63a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm};
64a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm
65a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Dammstatic struct platform_device scif2_device = {
66a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.name		= "sh-sci",
67a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.id		= 2,
68a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	.dev		= {
69a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm		.platform_data	= &scif2_platform_data,
70a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	},
71a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm};
72a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm
737d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct resource rtc_resources[] = {
747d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	[0] = {
757d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.start	= 0xffe80000,
767d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.end	= 0xffe80000 + 0x58 - 1,
777d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.flags	= IORESOURCE_IO,
787d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	},
797d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	[1] = {
80a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu		/* Shared Period/Carry/Alarm IRQ */
81075901af281b2afb47b1423ac488e713844db396Nobuhiro Iwamatsu		.start  = 20,
827d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.flags	= IORESOURCE_IRQ,
837d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	},
847d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
857d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
867d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct platform_device rtc_device = {
877d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.name		= "sh-rtc",
887d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.id		= -1,
897d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.num_resources	= ARRAY_SIZE(rtc_resources),
907d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.resource	= rtc_resources,
917d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
927d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
937d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct resource usb_ohci_resources[] = {
947d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	[0] = {
957d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.start	= 0xffec8000,
967d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.end	= 0xffec80ff,
977d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.flags	= IORESOURCE_MEM,
987d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	},
997d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	[1] = {
1007d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.start	= 83,
1017d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.end	= 83,
1027d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.flags	= IORESOURCE_IRQ,
1037d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	},
1047d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
1057d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
1067d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic u64 usb_ohci_dma_mask = 0xffffffffUL;
1077d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct platform_device usb_ohci_device = {
1087d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.name		= "sh_ohci",
1097d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.id		= -1,
1107d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.dev = {
1117d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.dma_mask		= &usb_ohci_dma_mask,
1127d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.coherent_dma_mask	= 0xffffffff,
1137d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	},
1147d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.num_resources	= ARRAY_SIZE(usb_ohci_resources),
1157d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.resource	= usb_ohci_resources,
1167d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
1177d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
1187d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct resource usbf_resources[] = {
1197d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	[0] = {
1207d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.start	= 0xffec0000,
1217d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.end	= 0xffec00ff,
1227d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.flags	= IORESOURCE_MEM,
1237d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	},
1247d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	[1] = {
1257d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.start	= 84,
1267d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.end	= 84,
1277d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.flags	= IORESOURCE_IRQ,
1287d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	},
1297d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
1307d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
1317d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct platform_device usbf_device = {
1327d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.name		= "sh_udc",
1337d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.id		= -1,
1347d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.dev = {
1357d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.dma_mask		= NULL,
1367d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		.coherent_dma_mask	= 0xffffffff,
1377d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	},
1387d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.num_resources	= ARRAY_SIZE(usbf_resources),
1397d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	.resource	= usbf_resources,
1407d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
1417d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
1420ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct sh_timer_config tmu0_platform_data = {
1430ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.channel_offset = 0x04,
1440ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.timer_bit = 0,
1450ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.clockevent_rating = 200,
1460ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
1470ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
1480ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct resource tmu0_resources[] = {
1490ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[0] = {
1500ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 0xffd80008,
1510ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.end	= 0xffd80013,
1520ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_MEM,
1530ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
1540ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[1] = {
1550ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 28,
1560ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_IRQ,
1570ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
1580ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
1590ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
1600ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct platform_device tmu0_device = {
1610ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.name		= "sh_tmu",
1620ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.id		= 0,
1630ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.dev = {
1640ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.platform_data	= &tmu0_platform_data,
1650ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
1660ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.resource	= tmu0_resources,
1670ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.num_resources	= ARRAY_SIZE(tmu0_resources),
1680ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
1690ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
1700ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct sh_timer_config tmu1_platform_data = {
1710ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.channel_offset = 0x10,
1720ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.timer_bit = 1,
1730ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.clocksource_rating = 200,
1740ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
1750ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
1760ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct resource tmu1_resources[] = {
1770ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[0] = {
1780ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 0xffd80014,
1790ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.end	= 0xffd8001f,
1800ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_MEM,
1810ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
1820ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[1] = {
1830ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 29,
1840ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_IRQ,
1850ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
1860ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
1870ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
1880ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct platform_device tmu1_device = {
1890ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.name		= "sh_tmu",
1900ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.id		= 1,
1910ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.dev = {
1920ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.platform_data	= &tmu1_platform_data,
1930ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
1940ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.resource	= tmu1_resources,
1950ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.num_resources	= ARRAY_SIZE(tmu1_resources),
1960ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
1970ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
1980ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct sh_timer_config tmu2_platform_data = {
1990ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.channel_offset = 0x1c,
2000ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.timer_bit = 2,
2010ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2020ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2030ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct resource tmu2_resources[] = {
2040ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[0] = {
2050ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 0xffd80020,
2060ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.end	= 0xffd8002f,
2070ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_MEM,
2080ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2090ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[1] = {
2100ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 30,
2110ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_IRQ,
2120ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2130ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2140ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2150ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct platform_device tmu2_device = {
2160ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.name		= "sh_tmu",
2170ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.id		= 2,
2180ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.dev = {
2190ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.platform_data	= &tmu2_platform_data,
2200ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2210ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.resource	= tmu2_resources,
2220ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.num_resources	= ARRAY_SIZE(tmu2_resources),
2230ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2240ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2250ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct sh_timer_config tmu3_platform_data = {
2260ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.channel_offset = 0x04,
2270ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.timer_bit = 0,
2280ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2290ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2300ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct resource tmu3_resources[] = {
2310ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[0] = {
2320ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 0xffd88008,
2330ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.end	= 0xffd88013,
2340ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_MEM,
2350ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2360ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[1] = {
2370ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 96,
2380ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_IRQ,
2390ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2400ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2410ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2420ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct platform_device tmu3_device = {
2430ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.name		= "sh_tmu",
2440ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.id		= 3,
2450ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.dev = {
2460ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.platform_data	= &tmu3_platform_data,
2470ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2480ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.resource	= tmu3_resources,
2490ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.num_resources	= ARRAY_SIZE(tmu3_resources),
2500ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2510ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2520ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct sh_timer_config tmu4_platform_data = {
2530ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.channel_offset = 0x10,
2540ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.timer_bit = 1,
2550ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2560ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2570ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct resource tmu4_resources[] = {
2580ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[0] = {
2590ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 0xffd88014,
2600ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.end	= 0xffd8801f,
2610ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_MEM,
2620ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2630ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[1] = {
2640ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 97,
2650ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_IRQ,
2660ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2670ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2680ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2690ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct platform_device tmu4_device = {
2700ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.name		= "sh_tmu",
2710ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.id		= 4,
2720ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.dev = {
2730ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.platform_data	= &tmu4_platform_data,
2740ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2750ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.resource	= tmu4_resources,
2760ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.num_resources	= ARRAY_SIZE(tmu4_resources),
2770ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2780ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2790ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct sh_timer_config tmu5_platform_data = {
2800ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.channel_offset = 0x1c,
2810ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.timer_bit = 2,
2820ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2830ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2840ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct resource tmu5_resources[] = {
2850ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[0] = {
2860ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 0xffd88020,
2870ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.end	= 0xffd8802b,
2880ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_MEM,
2890ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2900ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	[1] = {
2910ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.start	= 98,
2920ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.flags	= IORESOURCE_IRQ,
2930ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
2940ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
2950ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
2960ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct platform_device tmu5_device = {
2970ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.name		= "sh_tmu",
2980ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.id		= 5,
2990ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.dev = {
3000ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm		.platform_data	= &tmu5_platform_data,
3010ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	},
3020ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.resource	= tmu5_resources,
3030ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	.num_resources	= ARRAY_SIZE(tmu5_resources),
3040ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
3050ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
3067d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct platform_device *sh7763_devices[] __initdata = {
307a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	&scif0_device,
308a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	&scif1_device,
309a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	&scif2_device,
3100ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu0_device,
3110ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu1_device,
3120ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu2_device,
3130ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu3_device,
3140ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu4_device,
3150ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu5_device,
3167d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	&rtc_device,
3177d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	&usb_ohci_device,
3187d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	&usbf_device,
3197d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
3207d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
3217d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic int __init sh7763_devices_setup(void)
3227d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda{
3237d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	return platform_add_devices(sh7763_devices,
3247d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda				    ARRAY_SIZE(sh7763_devices));
3257d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda}
326ba9a633787eed1e90d587282642580ad3d44f7fdMagnus Dammarch_initcall(sh7763_devices_setup);
3277d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
3280ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammstatic struct platform_device *sh7763_early_devices[] __initdata = {
329a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	&scif0_device,
330a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	&scif1_device,
331a9571d7b045eb3b38d856c6dfda1798fb67ca44cMagnus Damm	&scif2_device,
3320ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu0_device,
3330ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu1_device,
3340ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu2_device,
3350ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu3_device,
3360ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu4_device,
3370ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	&tmu5_device,
3380ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm};
3390ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
3400ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Dammvoid __init plat_early_device_setup(void)
3410ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm{
3420ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm	early_platform_add_devices(sh7763_early_devices,
3430ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm				   ARRAY_SIZE(sh7763_early_devices));
3440ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm}
3450ee8b4d7c7d39d9a9913e27686ef786642c3ccbbMagnus Damm
3467d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodaenum {
3477d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	UNUSED = 0,
3487d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
3497d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	/* interrupt sources */
3507d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
3517d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH,
3527d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH,
3537d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	IRL_HLLL, IRL_HLLH, IRL_HLHL, IRL_HLHH,
3547d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	IRL_HHLL, IRL_HHLH, IRL_HHHL,
3557d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
3567d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7,
357a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	RTC, WDT, TMU0, TMU1, TMU2, TMU2_TICPI,
358a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	HUDI, LCDC, DMAC, SCIF0, IIC0, IIC1, CMT, GETHER, HAC,
359a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	PCISERR, PCIINTA, PCIINTB, PCIINTC, PCIINTD, PCIC5,
360a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	STIF0, STIF1, SCIF1, SIOF0, SIOF1, SIOF2,
361a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	USBH, USBF, TPU, PCC, MMCIF, SIM,
3627d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	TMU3, TMU4, TMU5, ADC, SSI0, SSI1, SSI2, SSI3,
363a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	SCIF2, GPIO,
3647d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
3657d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	/* interrupt groups */
3667d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
367a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	TMU012, TMU345,
3687d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
3697d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
3707d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_vect vectors[] __initdata = {
371a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(RTC, 0x480), INTC_VECT(RTC, 0x4a0),
372a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(RTC, 0x4c0),
3737d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(WDT, 0x560), INTC_VECT(TMU0, 0x580),
3747d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(TMU1, 0x5a0), INTC_VECT(TMU2, 0x5c0),
3757d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(TMU2_TICPI, 0x5e0), INTC_VECT(HUDI, 0x600),
3767d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(LCDC, 0x620),
377a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(DMAC, 0x640), INTC_VECT(DMAC, 0x660),
378a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(DMAC, 0x680), INTC_VECT(DMAC, 0x6a0),
379a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(DMAC, 0x6c0),
380a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(SCIF0, 0x700), INTC_VECT(SCIF0, 0x720),
381a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(SCIF0, 0x740), INTC_VECT(SCIF0, 0x760),
382a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(DMAC, 0x780), INTC_VECT(DMAC, 0x7a0),
3837d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IIC0, 0x8A0), INTC_VECT(IIC1, 0x8C0),
384a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(CMT, 0x900), INTC_VECT(GETHER, 0x920),
385a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(GETHER, 0x940), INTC_VECT(GETHER, 0x960),
3867d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(HAC, 0x980),
3877d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(PCISERR, 0xa00), INTC_VECT(PCIINTA, 0xa20),
3887d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(PCIINTB, 0xa40), INTC_VECT(PCIINTC, 0xa60),
389a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(PCIINTD, 0xa80), INTC_VECT(PCIC5, 0xaa0),
390a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(PCIC5, 0xac0), INTC_VECT(PCIC5, 0xae0),
391a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(PCIC5, 0xb00), INTC_VECT(PCIC5, 0xb20),
3927d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(STIF0, 0xb40), INTC_VECT(STIF1, 0xb60),
393a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(SCIF1, 0xb80), INTC_VECT(SCIF1, 0xba0),
394a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(SCIF1, 0xbc0), INTC_VECT(SCIF1, 0xbe0),
3957d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(SIOF0, 0xc00), INTC_VECT(SIOF1, 0xc20),
396a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(USBH, 0xc60), INTC_VECT(USBF, 0xc80),
397a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(USBF, 0xca0),
3987d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(TPU, 0xcc0), INTC_VECT(PCC, 0xce0),
399a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(MMCIF, 0xd00), INTC_VECT(MMCIF, 0xd20),
400a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(MMCIF, 0xd40), INTC_VECT(MMCIF, 0xd60),
401a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(SIM, 0xd80), INTC_VECT(SIM, 0xda0),
402a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(SIM, 0xdc0), INTC_VECT(SIM, 0xde0),
4037d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(TMU3, 0xe00), INTC_VECT(TMU4, 0xe20),
4047d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(TMU5, 0xe40), INTC_VECT(ADC, 0xe60),
4057d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(SSI0, 0xe80), INTC_VECT(SSI1, 0xea0),
4067d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(SSI2, 0xec0), INTC_VECT(SSI3, 0xee0),
407a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(SCIF2, 0xf00), INTC_VECT(SCIF2, 0xf20),
408a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(SCIF2, 0xf40), INTC_VECT(SCIF2, 0xf60),
409a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(GPIO, 0xf80), INTC_VECT(GPIO, 0xfa0),
410a6bc77241d79d39ad2ad8010a82ce7e0f437ae05Nobuhiro Iwamatsu	INTC_VECT(GPIO, 0xfc0), INTC_VECT(GPIO, 0xfe0),
4117d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
4127d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4137d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_group groups[] __initdata = {
4147d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_GROUP(TMU012, TMU0, TMU1, TMU2, TMU2_TICPI),
4157d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_GROUP(TMU345, TMU3, TMU4, TMU5),
4167d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
4177d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4187d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_mask_reg mask_registers[] __initdata = {
4197d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd40038, 0xffd4003c, 32, /* INT2MSKR / INT2MSKCR */
4207d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	  { 0, 0, 0, 0, 0, 0, GPIO, 0,
4217d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    SSI0, MMCIF, 0, SIOF0, PCIC5, PCIINTD, PCIINTC, PCIINTB,
4227d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    PCIINTA, PCISERR, HAC, CMT, 0, 0, 0, DMAC,
4237d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    HUDI, 0, WDT, SCIF1, SCIF0, RTC, TMU345, TMU012 } },
4247d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd400d0, 0xffd400d4, 32, /* INT2MSKR1 / INT2MSKCR1 */
4257d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	  { 0, 0, 0, 0, 0, 0, SCIF2, USBF,
4267d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    0, 0, STIF1, STIF0, 0, 0, USBH, GETHER,
4277d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    PCC, 0, 0, ADC, TPU, SIM, SIOF2, SIOF1,
4287d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    LCDC, 0, IIC1, IIC0, SSI3, SSI2, SSI1, 0 } },
4297d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
4307d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4317d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_prio_reg prio_registers[] __initdata = {
4327d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd40000, 0, 32, 8, /* INT2PRI0 */ { TMU0, TMU1,
4337d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda						 TMU2, TMU2_TICPI } },
4347d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd40004, 0, 32, 8, /* INT2PRI1 */ { TMU3, TMU4, TMU5, RTC } },
4357d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd40008, 0, 32, 8, /* INT2PRI2 */ { SCIF0, SCIF1, WDT } },
4367d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd4000c, 0, 32, 8, /* INT2PRI3 */ { HUDI, DMAC, ADC } },
4377d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd40010, 0, 32, 8, /* INT2PRI4 */ { CMT, HAC,
4387d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda						 PCISERR, PCIINTA } },
4397d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd40014, 0, 32, 8, /* INT2PRI5 */ { PCIINTB, PCIINTC,
4407d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda						 PCIINTD, PCIC5 } },
4417d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd40018, 0, 32, 8, /* INT2PRI6 */ { SIOF0, USBF, MMCIF, SSI0 } },
4427d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd4001c, 0, 32, 8, /* INT2PRI7 */ { SCIF2, GPIO } },
4437d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd400a0, 0, 32, 8, /* INT2PRI8 */ { SSI3, SSI2, SSI1, 0 } },
4447d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd400a4, 0, 32, 8, /* INT2PRI9 */ { LCDC, 0, IIC1, IIC0 } },
4457d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd400a8, 0, 32, 8, /* INT2PRI10 */ { TPU, SIM, SIOF2, SIOF1 } },
4467d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd400ac, 0, 32, 8, /* INT2PRI11 */ { PCC } },
4477d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd400b0, 0, 32, 8, /* INT2PRI12 */ { 0, 0, USBH, GETHER } },
4487d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd400b4, 0, 32, 8, /* INT2PRI13 */ { 0, 0, STIF1, STIF0 } },
4497d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
4507d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
45147aa8f493f94c6f60ebc5aa70eec90cc83f499f3Paul Mundtstatic DECLARE_INTC_DESC(intc_desc, "sh7763", vectors, groups,
4527d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda			 mask_registers, prio_registers, NULL);
4537d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4547d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda/* Support for external interrupt pins in IRQ mode */
4557d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_vect irq_vectors[] __initdata = {
4567d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRQ0, 0x240), INTC_VECT(IRQ1, 0x280),
4577d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRQ2, 0x2c0), INTC_VECT(IRQ3, 0x300),
4587d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRQ4, 0x340), INTC_VECT(IRQ5, 0x380),
4597d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRQ6, 0x3c0), INTC_VECT(IRQ7, 0x200),
4607d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
4617d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4627d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_mask_reg irq_mask_registers[] __initdata = {
4637d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd00044, 0xffd00064, 32, /* INTMSK0 / INTMSKCLR0 */
4647d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	  { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } },
4657d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
4667d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4677d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_prio_reg irq_prio_registers[] __initdata = {
4687d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd00010, 0, 32, 4, /* INTPRI */ { IRQ0, IRQ1, IRQ2, IRQ3,
4697d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda					       IRQ4, IRQ5, IRQ6, IRQ7 } },
4707d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
4717d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4727d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_sense_reg irq_sense_registers[] __initdata = {
4737d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd0001c, 32, 2, /* ICR1 */   { IRQ0, IRQ1, IRQ2, IRQ3,
4747d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda					    IRQ4, IRQ5, IRQ6, IRQ7 } },
4757d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
4767d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4776bdfb22a8e1ffa37ae4ad35b87cb02958d1901e5Yoshihiro Shimodastatic struct intc_mask_reg irq_ack_registers[] __initdata = {
4786bdfb22a8e1ffa37ae4ad35b87cb02958d1901e5Yoshihiro Shimoda	{ 0xffd00024, 0, 32, /* INTREQ */
4796bdfb22a8e1ffa37ae4ad35b87cb02958d1901e5Yoshihiro Shimoda	  { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } },
4806bdfb22a8e1ffa37ae4ad35b87cb02958d1901e5Yoshihiro Shimoda};
4816bdfb22a8e1ffa37ae4ad35b87cb02958d1901e5Yoshihiro Shimoda
4826bdfb22a8e1ffa37ae4ad35b87cb02958d1901e5Yoshihiro Shimodastatic DECLARE_INTC_DESC_ACK(intc_irq_desc, "sh7763-irq", irq_vectors,
4836bdfb22a8e1ffa37ae4ad35b87cb02958d1901e5Yoshihiro Shimoda			     NULL, irq_mask_registers, irq_prio_registers,
4846bdfb22a8e1ffa37ae4ad35b87cb02958d1901e5Yoshihiro Shimoda			     irq_sense_registers, irq_ack_registers);
4855bde47bc63a9e8ccf9b1542498e266196b307cc2Nobuhiro Iwamatsu
4867d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4877d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda/* External interrupt pins in IRL mode */
4887d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_vect irl_vectors[] __initdata = {
4897d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRL_LLLL, 0x200), INTC_VECT(IRL_LLLH, 0x220),
4907d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRL_LLHL, 0x240), INTC_VECT(IRL_LLHH, 0x260),
4917d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRL_LHLL, 0x280), INTC_VECT(IRL_LHLH, 0x2a0),
4927d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRL_LHHL, 0x2c0), INTC_VECT(IRL_LHHH, 0x2e0),
4937d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRL_HLLL, 0x300), INTC_VECT(IRL_HLLH, 0x320),
4947d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRL_HLHL, 0x340), INTC_VECT(IRL_HLHH, 0x360),
4957d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRL_HHLL, 0x380), INTC_VECT(IRL_HHLH, 0x3a0),
4967d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	INTC_VECT(IRL_HHHL, 0x3c0),
4977d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
4987d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
4997d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_mask_reg irl3210_mask_registers[] __initdata = {
5007d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd40080, 0xffd40084, 32, /* INTMSK2 / INTMSKCLR2 */
5017d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	  { IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH,
5027d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH,
5037d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    IRL_HLLL, IRL_HLLH, IRL_HLHL, IRL_HLHH,
5047d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    IRL_HHLL, IRL_HHLH, IRL_HHHL, } },
5057d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
5067d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
5077d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic struct intc_mask_reg irl7654_mask_registers[] __initdata = {
5087d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	{ 0xffd40080, 0xffd40084, 32, /* INTMSK2 / INTMSKCLR2 */
5097d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5107d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH,
5117d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH,
5127d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    IRL_HLLL, IRL_HLLH, IRL_HLHL, IRL_HLHH,
5137d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	    IRL_HHLL, IRL_HHLH, IRL_HHHL, } },
5147d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda};
5157d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
5167d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic DECLARE_INTC_DESC(intc_irl7654_desc, "sh7763-irl7654", irl_vectors,
5175bde47bc63a9e8ccf9b1542498e266196b307cc2Nobuhiro Iwamatsu			NULL, irl7654_mask_registers, NULL, NULL);
5187d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
5197d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodastatic DECLARE_INTC_DESC(intc_irl3210_desc, "sh7763-irl3210", irl_vectors,
5205bde47bc63a9e8ccf9b1542498e266196b307cc2Nobuhiro Iwamatsu			NULL, irl3210_mask_registers, NULL, NULL);
5217d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
5227d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#define INTC_ICR0	0xffd00000
5237d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#define INTC_INTMSK0	0xffd00044
5247d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#define INTC_INTMSK1	0xffd00048
5257d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#define INTC_INTMSK2	0xffd40080
5267d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#define INTC_INTMSKCLR1	0xffd00068
5277d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda#define INTC_INTMSKCLR2	0xffd40084
5287d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
5297d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodavoid __init plat_irq_setup(void)
5307d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda{
5317d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	/* disable IRQ7-0 */
5329d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt	__raw_writel(0xff000000, INTC_INTMSK0);
5337d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
5347d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	/* disable IRL3-0 + IRL7-4 */
5359d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt	__raw_writel(0xc0000000, INTC_INTMSK1);
5369d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt	__raw_writel(0xfffefffe, INTC_INTMSK2);
5377d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
5387d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	register_intc_controller(&intc_desc);
5397d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda}
5407d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda
5417d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimodavoid __init plat_irq_setup_pins(int mode)
5427d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda{
5437d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	switch (mode) {
5447d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	case IRQ_MODE_IRQ:
5457d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		/* select IRQ mode for IRL3-0 + IRL7-4 */
5469d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt		__raw_writel(__raw_readl(INTC_ICR0) | 0x00c00000, INTC_ICR0);
5477d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		register_intc_controller(&intc_irq_desc);
5487d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		break;
5497d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	case IRQ_MODE_IRL7654:
5507d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		/* enable IRL7-4 but don't provide any masking */
5519d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt		__raw_writel(0x40000000, INTC_INTMSKCLR1);
5529d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt		__raw_writel(0x0000fffe, INTC_INTMSKCLR2);
5537d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		break;
5547d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	case IRQ_MODE_IRL3210:
5557d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		/* enable IRL0-3 but don't provide any masking */
5569d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt		__raw_writel(0x80000000, INTC_INTMSKCLR1);
5579d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt		__raw_writel(0xfffe0000, INTC_INTMSKCLR2);
5587d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		break;
5597d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	case IRQ_MODE_IRL7654_MASK:
5607d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		/* enable IRL7-4 and mask using cpu intc controller */
5619d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt		__raw_writel(0x40000000, INTC_INTMSKCLR1);
5627d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		register_intc_controller(&intc_irl7654_desc);
5637d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		break;
5647d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	case IRQ_MODE_IRL3210_MASK:
5657d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		/* enable IRL0-3 and mask using cpu intc controller */
5669d56dd3b083a3bec56e9da35ce07baca81030b03Paul Mundt		__raw_writel(0x80000000, INTC_INTMSKCLR1);
5677d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		register_intc_controller(&intc_irl3210_desc);
5687d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		break;
5697d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	default:
5707d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda		BUG();
5717d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda	}
5727d740a066fb9c6681c2898c7977209725c9e552fYoshihiro Shimoda}
573