xref: /linux/arch/sh/kernel/cpu/sh2a/setup-sh7269.c (revision d850acf975bee46e43c3cd80d2d287010195c63b)
10b25b7c8SPhil Edworthy /*
20b25b7c8SPhil Edworthy  * SH7269 Setup
30b25b7c8SPhil Edworthy  *
40b25b7c8SPhil Edworthy  * Copyright (C) 2012  Renesas Electronics Europe Ltd
50b25b7c8SPhil Edworthy  * Copyright (C) 2012  Phil Edworthy
60b25b7c8SPhil Edworthy  *
70b25b7c8SPhil Edworthy  * This file is subject to the terms and conditions of the GNU General Public
80b25b7c8SPhil Edworthy  * License.  See the file "COPYING" in the main directory of this archive
90b25b7c8SPhil Edworthy  * for more details.
100b25b7c8SPhil Edworthy  */
110b25b7c8SPhil Edworthy #include <linux/platform_device.h>
120b25b7c8SPhil Edworthy #include <linux/init.h>
130b25b7c8SPhil Edworthy #include <linux/serial.h>
140b25b7c8SPhil Edworthy #include <linux/serial_sci.h>
150b25b7c8SPhil Edworthy #include <linux/usb/r8a66597.h>
160b25b7c8SPhil Edworthy #include <linux/sh_timer.h>
170b25b7c8SPhil Edworthy #include <linux/io.h>
180b25b7c8SPhil Edworthy 
190b25b7c8SPhil Edworthy enum {
200b25b7c8SPhil Edworthy 	UNUSED = 0,
210b25b7c8SPhil Edworthy 
220b25b7c8SPhil Edworthy 	/* interrupt sources */
230b25b7c8SPhil Edworthy 	IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7,
240b25b7c8SPhil Edworthy 	PINT0, PINT1, PINT2, PINT3, PINT4, PINT5, PINT6, PINT7,
250b25b7c8SPhil Edworthy 
260b25b7c8SPhil Edworthy 	DMAC0, DMAC1, DMAC2, DMAC3, DMAC4, DMAC5, DMAC6, DMAC7,
270b25b7c8SPhil Edworthy 	DMAC8, DMAC9, DMAC10, DMAC11, DMAC12, DMAC13, DMAC14, DMAC15,
280b25b7c8SPhil Edworthy 	USB, VDC4, CMT0, CMT1, BSC, WDT,
290b25b7c8SPhil Edworthy 	MTU0_ABCD, MTU0_VEF, MTU1_AB, MTU1_VU, MTU2_AB, MTU2_VU,
300b25b7c8SPhil Edworthy 	MTU3_ABCD, MTU3_TCI3V, MTU4_ABCD, MTU4_TCI4V,
310b25b7c8SPhil Edworthy 	PWMT1, PWMT2, ADC_ADI,
320b25b7c8SPhil Edworthy 	SSIF0, SSII1, SSII2, SSII3, SSII4, SSII5,
330b25b7c8SPhil Edworthy 	RSPDIF,
340b25b7c8SPhil Edworthy 	IIC30, IIC31, IIC32, IIC33,
350b25b7c8SPhil Edworthy 	SCIF0_BRI, SCIF0_ERI, SCIF0_RXI, SCIF0_TXI,
360b25b7c8SPhil Edworthy 	SCIF1_BRI, SCIF1_ERI, SCIF1_RXI, SCIF1_TXI,
370b25b7c8SPhil Edworthy 	SCIF2_BRI, SCIF2_ERI, SCIF2_RXI, SCIF2_TXI,
380b25b7c8SPhil Edworthy 	SCIF3_BRI, SCIF3_ERI, SCIF3_RXI, SCIF3_TXI,
390b25b7c8SPhil Edworthy 	SCIF4_BRI, SCIF4_ERI, SCIF4_RXI, SCIF4_TXI,
400b25b7c8SPhil Edworthy 	SCIF5_BRI, SCIF5_ERI, SCIF5_RXI, SCIF5_TXI,
410b25b7c8SPhil Edworthy 	SCIF6_BRI, SCIF6_ERI, SCIF6_RXI, SCIF6_TXI,
420b25b7c8SPhil Edworthy 	SCIF7_BRI, SCIF7_ERI, SCIF7_RXI, SCIF7_TXI,
430b25b7c8SPhil Edworthy 	RCAN0, RCAN1, RCAN2,
440b25b7c8SPhil Edworthy 	RSPIC0, RSPIC1,
450b25b7c8SPhil Edworthy 	IEBC, CD_ROMD,
460b25b7c8SPhil Edworthy 	NFMC,
470b25b7c8SPhil Edworthy 	SDHI0, SDHI1,
480b25b7c8SPhil Edworthy 	RTC,
490b25b7c8SPhil Edworthy 	SRCC0, SRCC1, SRCC2,
500b25b7c8SPhil Edworthy 
510b25b7c8SPhil Edworthy 	/* interrupt groups */
520b25b7c8SPhil Edworthy 	PINT, SCIF0, SCIF1, SCIF2, SCIF3, SCIF4, SCIF5, SCIF6, SCIF7,
530b25b7c8SPhil Edworthy };
540b25b7c8SPhil Edworthy 
550b25b7c8SPhil Edworthy static struct intc_vect vectors[] __initdata = {
560b25b7c8SPhil Edworthy 	INTC_IRQ(IRQ0, 64), INTC_IRQ(IRQ1, 65),
570b25b7c8SPhil Edworthy 	INTC_IRQ(IRQ2, 66), INTC_IRQ(IRQ3, 67),
580b25b7c8SPhil Edworthy 	INTC_IRQ(IRQ4, 68), INTC_IRQ(IRQ5, 69),
590b25b7c8SPhil Edworthy 	INTC_IRQ(IRQ6, 70), INTC_IRQ(IRQ7, 71),
600b25b7c8SPhil Edworthy 
610b25b7c8SPhil Edworthy 	INTC_IRQ(PINT0, 80), INTC_IRQ(PINT1, 81),
620b25b7c8SPhil Edworthy 	INTC_IRQ(PINT2, 82), INTC_IRQ(PINT3, 83),
630b25b7c8SPhil Edworthy 	INTC_IRQ(PINT4, 84), INTC_IRQ(PINT5, 85),
640b25b7c8SPhil Edworthy 	INTC_IRQ(PINT6, 86), INTC_IRQ(PINT7, 87),
650b25b7c8SPhil Edworthy 
660b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC0, 108), INTC_IRQ(DMAC0, 109),
670b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC1, 112), INTC_IRQ(DMAC1, 113),
680b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC2, 116), INTC_IRQ(DMAC2, 117),
690b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC3, 120), INTC_IRQ(DMAC3, 121),
700b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC4, 124), INTC_IRQ(DMAC4, 125),
710b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC5, 128), INTC_IRQ(DMAC5, 129),
720b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC6, 132), INTC_IRQ(DMAC6, 133),
730b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC7, 136), INTC_IRQ(DMAC7, 137),
740b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC8, 140), INTC_IRQ(DMAC8, 141),
750b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC9, 144), INTC_IRQ(DMAC9, 145),
760b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC10, 148), INTC_IRQ(DMAC10, 149),
770b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC11, 152), INTC_IRQ(DMAC11, 153),
780b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC12, 156), INTC_IRQ(DMAC12, 157),
790b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC13, 160), INTC_IRQ(DMAC13, 161),
800b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC14, 164), INTC_IRQ(DMAC14, 165),
810b25b7c8SPhil Edworthy 	INTC_IRQ(DMAC15, 168), INTC_IRQ(DMAC15, 169),
820b25b7c8SPhil Edworthy 
830b25b7c8SPhil Edworthy 	INTC_IRQ(USB, 170),
840b25b7c8SPhil Edworthy 
850b25b7c8SPhil Edworthy 	INTC_IRQ(VDC4, 171), INTC_IRQ(VDC4, 172),
860b25b7c8SPhil Edworthy 	INTC_IRQ(VDC4, 173), INTC_IRQ(VDC4, 174),
870b25b7c8SPhil Edworthy 	INTC_IRQ(VDC4, 175), INTC_IRQ(VDC4, 176),
880b25b7c8SPhil Edworthy 	INTC_IRQ(VDC4, 177), INTC_IRQ(VDC4, 177),
890b25b7c8SPhil Edworthy 
900b25b7c8SPhil Edworthy 	INTC_IRQ(CMT0, 188), INTC_IRQ(CMT1, 189),
910b25b7c8SPhil Edworthy 
920b25b7c8SPhil Edworthy 	INTC_IRQ(BSC, 190), INTC_IRQ(WDT, 191),
930b25b7c8SPhil Edworthy 
940b25b7c8SPhil Edworthy 	INTC_IRQ(MTU0_ABCD, 192), INTC_IRQ(MTU0_ABCD, 193),
950b25b7c8SPhil Edworthy 	INTC_IRQ(MTU0_ABCD, 194), INTC_IRQ(MTU0_ABCD, 195),
960b25b7c8SPhil Edworthy 	INTC_IRQ(MTU0_VEF, 196), INTC_IRQ(MTU0_VEF, 197),
970b25b7c8SPhil Edworthy 	INTC_IRQ(MTU0_VEF, 198),
980b25b7c8SPhil Edworthy 	INTC_IRQ(MTU1_AB, 199), INTC_IRQ(MTU1_AB, 200),
990b25b7c8SPhil Edworthy 	INTC_IRQ(MTU1_VU, 201), INTC_IRQ(MTU1_VU, 202),
1000b25b7c8SPhil Edworthy 	INTC_IRQ(MTU2_AB, 203), INTC_IRQ(MTU2_AB, 204),
1010b25b7c8SPhil Edworthy 	INTC_IRQ(MTU2_VU, 205), INTC_IRQ(MTU2_VU, 206),
1020b25b7c8SPhil Edworthy 	INTC_IRQ(MTU3_ABCD, 207), INTC_IRQ(MTU3_ABCD, 208),
1030b25b7c8SPhil Edworthy 	INTC_IRQ(MTU3_ABCD, 209), INTC_IRQ(MTU3_ABCD, 210),
1040b25b7c8SPhil Edworthy 	INTC_IRQ(MTU3_TCI3V, 211),
1050b25b7c8SPhil Edworthy 	INTC_IRQ(MTU4_ABCD, 212), INTC_IRQ(MTU4_ABCD, 213),
1060b25b7c8SPhil Edworthy 	INTC_IRQ(MTU4_ABCD, 214), INTC_IRQ(MTU4_ABCD, 215),
1070b25b7c8SPhil Edworthy 	INTC_IRQ(MTU4_TCI4V, 216),
1080b25b7c8SPhil Edworthy 
1090b25b7c8SPhil Edworthy 	INTC_IRQ(PWMT1, 217), INTC_IRQ(PWMT2, 218),
1100b25b7c8SPhil Edworthy 
1110b25b7c8SPhil Edworthy 	INTC_IRQ(ADC_ADI, 223),
1120b25b7c8SPhil Edworthy 
1130b25b7c8SPhil Edworthy 	INTC_IRQ(SSIF0, 224), INTC_IRQ(SSIF0, 225),
1140b25b7c8SPhil Edworthy 	INTC_IRQ(SSIF0, 226),
1150b25b7c8SPhil Edworthy 	INTC_IRQ(SSII1, 227), INTC_IRQ(SSII1, 228),
1160b25b7c8SPhil Edworthy 	INTC_IRQ(SSII2, 229), INTC_IRQ(SSII2, 230),
1170b25b7c8SPhil Edworthy 	INTC_IRQ(SSII3, 231), INTC_IRQ(SSII3, 232),
1180b25b7c8SPhil Edworthy 	INTC_IRQ(SSII4, 233), INTC_IRQ(SSII4, 234),
1190b25b7c8SPhil Edworthy 	INTC_IRQ(SSII5, 235), INTC_IRQ(SSII5, 236),
1200b25b7c8SPhil Edworthy 
1210b25b7c8SPhil Edworthy 	INTC_IRQ(RSPDIF, 237),
1220b25b7c8SPhil Edworthy 
1230b25b7c8SPhil Edworthy 	INTC_IRQ(IIC30, 238), INTC_IRQ(IIC30, 239),
1240b25b7c8SPhil Edworthy 	INTC_IRQ(IIC30, 240), INTC_IRQ(IIC30, 241),
1250b25b7c8SPhil Edworthy 	INTC_IRQ(IIC30, 242),
1260b25b7c8SPhil Edworthy 	INTC_IRQ(IIC31, 243), INTC_IRQ(IIC31, 244),
1270b25b7c8SPhil Edworthy 	INTC_IRQ(IIC31, 245), INTC_IRQ(IIC31, 246),
1280b25b7c8SPhil Edworthy 	INTC_IRQ(IIC31, 247),
1290b25b7c8SPhil Edworthy 	INTC_IRQ(IIC32, 248), INTC_IRQ(IIC32, 249),
1300b25b7c8SPhil Edworthy 	INTC_IRQ(IIC32, 250), INTC_IRQ(IIC32, 251),
1310b25b7c8SPhil Edworthy 	INTC_IRQ(IIC32, 252),
1320b25b7c8SPhil Edworthy 	INTC_IRQ(IIC33, 253), INTC_IRQ(IIC33, 254),
1330b25b7c8SPhil Edworthy 	INTC_IRQ(IIC33, 255), INTC_IRQ(IIC33, 256),
1340b25b7c8SPhil Edworthy 	INTC_IRQ(IIC33, 257),
1350b25b7c8SPhil Edworthy 
1360b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF0_BRI, 258), INTC_IRQ(SCIF0_ERI, 259),
1370b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF0_RXI, 260), INTC_IRQ(SCIF0_TXI, 261),
1380b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF1_BRI, 262), INTC_IRQ(SCIF1_ERI, 263),
1390b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF1_RXI, 264), INTC_IRQ(SCIF1_TXI, 265),
1400b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF2_BRI, 266), INTC_IRQ(SCIF2_ERI, 267),
1410b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF2_RXI, 268), INTC_IRQ(SCIF2_TXI, 269),
1420b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF3_BRI, 270), INTC_IRQ(SCIF3_ERI, 271),
1430b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF3_RXI, 272), INTC_IRQ(SCIF3_TXI, 273),
1440b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF4_BRI, 274), INTC_IRQ(SCIF4_ERI, 275),
1450b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF4_RXI, 276), INTC_IRQ(SCIF4_TXI, 277),
1460b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF5_BRI, 278), INTC_IRQ(SCIF5_ERI, 279),
1470b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF5_RXI, 280), INTC_IRQ(SCIF5_TXI, 281),
1480b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF6_BRI, 282), INTC_IRQ(SCIF6_ERI, 283),
1490b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF6_RXI, 284), INTC_IRQ(SCIF6_TXI, 285),
1500b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF7_BRI, 286), INTC_IRQ(SCIF7_ERI, 287),
1510b25b7c8SPhil Edworthy 	INTC_IRQ(SCIF7_RXI, 288), INTC_IRQ(SCIF7_TXI, 289),
1520b25b7c8SPhil Edworthy 
1530b25b7c8SPhil Edworthy 	INTC_IRQ(RCAN0, 291), INTC_IRQ(RCAN0, 292),
1540b25b7c8SPhil Edworthy 	INTC_IRQ(RCAN0, 293), INTC_IRQ(RCAN0, 294),
1550b25b7c8SPhil Edworthy 	INTC_IRQ(RCAN0, 295),
1560b25b7c8SPhil Edworthy 	INTC_IRQ(RCAN1, 296), INTC_IRQ(RCAN1, 297),
1570b25b7c8SPhil Edworthy 	INTC_IRQ(RCAN1, 298), INTC_IRQ(RCAN1, 299),
1580b25b7c8SPhil Edworthy 	INTC_IRQ(RCAN1, 300),
1590b25b7c8SPhil Edworthy 	INTC_IRQ(RCAN2, 301), INTC_IRQ(RCAN2, 302),
1600b25b7c8SPhil Edworthy 	INTC_IRQ(RCAN2, 303), INTC_IRQ(RCAN2, 304),
1610b25b7c8SPhil Edworthy 	INTC_IRQ(RCAN2, 305),
1620b25b7c8SPhil Edworthy 
1630b25b7c8SPhil Edworthy 	INTC_IRQ(RSPIC0, 306), INTC_IRQ(RSPIC0, 307),
1640b25b7c8SPhil Edworthy 	INTC_IRQ(RSPIC0, 308),
1650b25b7c8SPhil Edworthy 	INTC_IRQ(RSPIC1, 309), INTC_IRQ(RSPIC1, 310),
1660b25b7c8SPhil Edworthy 	INTC_IRQ(RSPIC1, 311),
1670b25b7c8SPhil Edworthy 
1680b25b7c8SPhil Edworthy 	INTC_IRQ(IEBC, 318),
1690b25b7c8SPhil Edworthy 
1700b25b7c8SPhil Edworthy 	INTC_IRQ(CD_ROMD, 319), INTC_IRQ(CD_ROMD, 320),
1710b25b7c8SPhil Edworthy 	INTC_IRQ(CD_ROMD, 321), INTC_IRQ(CD_ROMD, 322),
1720b25b7c8SPhil Edworthy 	INTC_IRQ(CD_ROMD, 323), INTC_IRQ(CD_ROMD, 324),
1730b25b7c8SPhil Edworthy 
1740b25b7c8SPhil Edworthy 	INTC_IRQ(NFMC, 325), INTC_IRQ(NFMC, 326),
1750b25b7c8SPhil Edworthy 	INTC_IRQ(NFMC, 327), INTC_IRQ(NFMC, 328),
1760b25b7c8SPhil Edworthy 
1770b25b7c8SPhil Edworthy 	INTC_IRQ(SDHI0, 332), INTC_IRQ(SDHI0, 333),
1780b25b7c8SPhil Edworthy 	INTC_IRQ(SDHI0, 334),
1790b25b7c8SPhil Edworthy 	INTC_IRQ(SDHI1, 335), INTC_IRQ(SDHI1, 336),
1800b25b7c8SPhil Edworthy 	INTC_IRQ(SDHI1, 337),
1810b25b7c8SPhil Edworthy 
1820b25b7c8SPhil Edworthy 	INTC_IRQ(RTC, 338), INTC_IRQ(RTC, 339),
1830b25b7c8SPhil Edworthy 	INTC_IRQ(RTC, 340),
1840b25b7c8SPhil Edworthy 
1850b25b7c8SPhil Edworthy 	INTC_IRQ(SRCC0, 341), INTC_IRQ(SRCC0, 342),
1860b25b7c8SPhil Edworthy 	INTC_IRQ(SRCC0, 343), INTC_IRQ(SRCC0, 344),
1870b25b7c8SPhil Edworthy 	INTC_IRQ(SRCC0, 345),
1880b25b7c8SPhil Edworthy 	INTC_IRQ(SRCC1, 346), INTC_IRQ(SRCC1, 347),
1890b25b7c8SPhil Edworthy 	INTC_IRQ(SRCC1, 348), INTC_IRQ(SRCC1, 349),
1900b25b7c8SPhil Edworthy 	INTC_IRQ(SRCC1, 350),
1910b25b7c8SPhil Edworthy 	INTC_IRQ(SRCC2, 351), INTC_IRQ(SRCC2, 352),
1920b25b7c8SPhil Edworthy 	INTC_IRQ(SRCC2, 353), INTC_IRQ(SRCC2, 354),
1930b25b7c8SPhil Edworthy 	INTC_IRQ(SRCC2, 355),
1940b25b7c8SPhil Edworthy };
1950b25b7c8SPhil Edworthy 
1960b25b7c8SPhil Edworthy static struct intc_group groups[] __initdata = {
1970b25b7c8SPhil Edworthy 	INTC_GROUP(PINT, PINT0, PINT1, PINT2, PINT3,
1980b25b7c8SPhil Edworthy 		   PINT4, PINT5, PINT6, PINT7),
1990b25b7c8SPhil Edworthy 	INTC_GROUP(SCIF0, SCIF0_BRI, SCIF0_ERI, SCIF0_RXI, SCIF0_TXI),
2000b25b7c8SPhil Edworthy 	INTC_GROUP(SCIF1, SCIF1_BRI, SCIF1_ERI, SCIF1_RXI, SCIF1_TXI),
2010b25b7c8SPhil Edworthy 	INTC_GROUP(SCIF2, SCIF2_BRI, SCIF2_ERI, SCIF2_RXI, SCIF2_TXI),
2020b25b7c8SPhil Edworthy 	INTC_GROUP(SCIF3, SCIF3_BRI, SCIF3_ERI, SCIF3_RXI, SCIF3_TXI),
2030b25b7c8SPhil Edworthy 	INTC_GROUP(SCIF4, SCIF4_BRI, SCIF4_ERI, SCIF4_RXI, SCIF4_TXI),
2040b25b7c8SPhil Edworthy 	INTC_GROUP(SCIF5, SCIF5_BRI, SCIF5_ERI, SCIF5_RXI, SCIF5_TXI),
2050b25b7c8SPhil Edworthy 	INTC_GROUP(SCIF6, SCIF6_BRI, SCIF6_ERI, SCIF6_RXI, SCIF6_TXI),
2060b25b7c8SPhil Edworthy 	INTC_GROUP(SCIF7, SCIF7_BRI, SCIF7_ERI, SCIF7_RXI, SCIF7_TXI),
2070b25b7c8SPhil Edworthy };
2080b25b7c8SPhil Edworthy 
2090b25b7c8SPhil Edworthy static struct intc_prio_reg prio_registers[] __initdata = {
2100b25b7c8SPhil Edworthy 	{ 0xfffe0818, 0, 16, 4, /* IPR01 */ { IRQ0, IRQ1, IRQ2, IRQ3 } },
2110b25b7c8SPhil Edworthy 	{ 0xfffe081a, 0, 16, 4, /* IPR02 */ { IRQ4, IRQ5, IRQ6, IRQ7 } },
2120b25b7c8SPhil Edworthy 	{ 0xfffe0820, 0, 16, 4, /* IPR05 */ { PINT, 0, 0, 0 } },
2130b25b7c8SPhil Edworthy 	{ 0xfffe0c00, 0, 16, 4, /* IPR06 */ { DMAC0,  DMAC1, DMAC2,  DMAC3 } },
2140b25b7c8SPhil Edworthy 	{ 0xfffe0c02, 0, 16, 4, /* IPR07 */ { DMAC4,  DMAC5, DMAC6,  DMAC7 } },
2150b25b7c8SPhil Edworthy 	{ 0xfffe0c04, 0, 16, 4, /* IPR08 */ { DMAC8,  DMAC9,
2160b25b7c8SPhil Edworthy 					      DMAC10, DMAC11 } },
2170b25b7c8SPhil Edworthy 	{ 0xfffe0c06, 0, 16, 4, /* IPR09 */ { DMAC12, DMAC13,
2180b25b7c8SPhil Edworthy 					      DMAC14, DMAC15 } },
2190b25b7c8SPhil Edworthy 	{ 0xfffe0c08, 0, 16, 4, /* IPR10 */ { USB, VDC4, VDC4, VDC4 } },
2200b25b7c8SPhil Edworthy 	{ 0xfffe0c0a, 0, 16, 4, /* IPR11 */ { 0, 0, 0, 0 } },
2210b25b7c8SPhil Edworthy 	{ 0xfffe0c0c, 0, 16, 4, /* IPR12 */ { CMT0, CMT1, BSC, WDT } },
2220b25b7c8SPhil Edworthy 	{ 0xfffe0c0e, 0, 16, 4, /* IPR13 */ { MTU0_ABCD, MTU0_VEF,
2230b25b7c8SPhil Edworthy 					      MTU1_AB, MTU1_VU } },
2240b25b7c8SPhil Edworthy 	{ 0xfffe0c10, 0, 16, 4, /* IPR14 */ { MTU2_AB, MTU2_VU,
2250b25b7c8SPhil Edworthy 					      MTU3_ABCD, MTU3_TCI3V } },
2260b25b7c8SPhil Edworthy 	{ 0xfffe0c12, 0, 16, 4, /* IPR15 */ { MTU4_ABCD, MTU4_TCI4V,
2270b25b7c8SPhil Edworthy 					      PWMT1, PWMT2 } },
2280b25b7c8SPhil Edworthy 	{ 0xfffe0c14, 0, 16, 4, /* IPR16 */ { 0, 0, 0, 0 } },
2290b25b7c8SPhil Edworthy 	{ 0xfffe0c16, 0, 16, 4, /* IPR17 */ { ADC_ADI, SSIF0, SSII1, SSII2 } },
2300b25b7c8SPhil Edworthy 	{ 0xfffe0c18, 0, 16, 4, /* IPR18 */ { SSII3, SSII4, SSII5,  RSPDIF} },
2310b25b7c8SPhil Edworthy 	{ 0xfffe0c1a, 0, 16, 4, /* IPR19 */ { IIC30, IIC31, IIC32, IIC33 } },
2320b25b7c8SPhil Edworthy 	{ 0xfffe0c1c, 0, 16, 4, /* IPR20 */ { SCIF0, SCIF1, SCIF2, SCIF3 } },
2330b25b7c8SPhil Edworthy 	{ 0xfffe0c1e, 0, 16, 4, /* IPR21 */ { SCIF4, SCIF5, SCIF6, SCIF7 } },
2340b25b7c8SPhil Edworthy 	{ 0xfffe0c20, 0, 16, 4, /* IPR22 */ { 0, RCAN0, RCAN1, RCAN2 } },
2350b25b7c8SPhil Edworthy 	{ 0xfffe0c22, 0, 16, 4, /* IPR23 */ { RSPIC0, RSPIC1, 0, 0 } },
2360b25b7c8SPhil Edworthy 	{ 0xfffe0c24, 0, 16, 4, /* IPR24 */ { IEBC, CD_ROMD, NFMC, 0 } },
2370b25b7c8SPhil Edworthy 	{ 0xfffe0c26, 0, 16, 4, /* IPR25 */ { SDHI0, SDHI1, RTC, 0 } },
2380b25b7c8SPhil Edworthy 	{ 0xfffe0c28, 0, 16, 4, /* IPR26 */ { SRCC0, SRCC1, SRCC2, 0 } },
2390b25b7c8SPhil Edworthy };
2400b25b7c8SPhil Edworthy 
2410b25b7c8SPhil Edworthy static struct intc_mask_reg mask_registers[] __initdata = {
2420b25b7c8SPhil Edworthy 	{ 0xfffe0808, 0, 16, /* PINTER */
2430b25b7c8SPhil Edworthy 	  { 0, 0, 0, 0, 0, 0, 0, 0,
2440b25b7c8SPhil Edworthy 	    PINT7, PINT6, PINT5, PINT4, PINT3, PINT2, PINT1, PINT0 } },
2450b25b7c8SPhil Edworthy };
2460b25b7c8SPhil Edworthy 
2470b25b7c8SPhil Edworthy static DECLARE_INTC_DESC(intc_desc, "sh7269", vectors, groups,
2480b25b7c8SPhil Edworthy 			 mask_registers, prio_registers, NULL);
2490b25b7c8SPhil Edworthy 
2500b25b7c8SPhil Edworthy static struct plat_sci_port scif0_platform_data = {
2510b25b7c8SPhil Edworthy 	.flags		= UPF_BOOT_AUTOCONF,
2520b25b7c8SPhil Edworthy 	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |
2530b25b7c8SPhil Edworthy 			  SCSCR_REIE | SCSCR_TOIE,
2540b25b7c8SPhil Edworthy 	.scbrr_algo_id	= SCBRR_ALGO_2,
2550b25b7c8SPhil Edworthy 	.type		= PORT_SCIF,
2560b25b7c8SPhil Edworthy 	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,
2570b25b7c8SPhil Edworthy };
2580b25b7c8SPhil Edworthy 
259*d850acf9SLaurent Pinchart static struct resource scif0_resources[] = {
260*d850acf9SLaurent Pinchart 	DEFINE_RES_MEM(0xe8007000, 0x100),
261*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(259),
262*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(260),
263*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(261),
264*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(258),
265*d850acf9SLaurent Pinchart };
266*d850acf9SLaurent Pinchart 
2670b25b7c8SPhil Edworthy static struct platform_device scif0_device = {
2680b25b7c8SPhil Edworthy 	.name		= "sh-sci",
2690b25b7c8SPhil Edworthy 	.id		= 0,
270*d850acf9SLaurent Pinchart 	.resource	= scif0_resources,
271*d850acf9SLaurent Pinchart 	.num_resources	= ARRAY_SIZE(scif0_resources),
2720b25b7c8SPhil Edworthy 	.dev		= {
2730b25b7c8SPhil Edworthy 		.platform_data	= &scif0_platform_data,
2740b25b7c8SPhil Edworthy 	},
2750b25b7c8SPhil Edworthy };
2760b25b7c8SPhil Edworthy 
2770b25b7c8SPhil Edworthy static struct plat_sci_port scif1_platform_data = {
2780b25b7c8SPhil Edworthy 	.flags		= UPF_BOOT_AUTOCONF,
2790b25b7c8SPhil Edworthy 	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |
2800b25b7c8SPhil Edworthy 			  SCSCR_REIE | SCSCR_TOIE,
2810b25b7c8SPhil Edworthy 	.scbrr_algo_id	= SCBRR_ALGO_2,
2820b25b7c8SPhil Edworthy 	.type		= PORT_SCIF,
2830b25b7c8SPhil Edworthy 	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,
2840b25b7c8SPhil Edworthy };
2850b25b7c8SPhil Edworthy 
286*d850acf9SLaurent Pinchart static struct resource scif1_resources[] = {
287*d850acf9SLaurent Pinchart 	DEFINE_RES_MEM(0xe8007800, 0x100),
288*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(263),
289*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(264),
290*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(265),
291*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(262),
292*d850acf9SLaurent Pinchart };
293*d850acf9SLaurent Pinchart 
2940b25b7c8SPhil Edworthy static struct platform_device scif1_device = {
2950b25b7c8SPhil Edworthy 	.name		= "sh-sci",
2960b25b7c8SPhil Edworthy 	.id		= 1,
297*d850acf9SLaurent Pinchart 	.resource	= scif1_resources,
298*d850acf9SLaurent Pinchart 	.num_resources	= ARRAY_SIZE(scif1_resources),
2990b25b7c8SPhil Edworthy 	.dev		= {
3000b25b7c8SPhil Edworthy 		.platform_data	= &scif1_platform_data,
3010b25b7c8SPhil Edworthy 	},
3020b25b7c8SPhil Edworthy };
3030b25b7c8SPhil Edworthy 
3040b25b7c8SPhil Edworthy static struct plat_sci_port scif2_platform_data = {
3050b25b7c8SPhil Edworthy 	.flags		= UPF_BOOT_AUTOCONF,
3060b25b7c8SPhil Edworthy 	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |
3070b25b7c8SPhil Edworthy 			  SCSCR_REIE | SCSCR_TOIE,
3080b25b7c8SPhil Edworthy 	.scbrr_algo_id	= SCBRR_ALGO_2,
3090b25b7c8SPhil Edworthy 	.type		= PORT_SCIF,
3100b25b7c8SPhil Edworthy 	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,
3110b25b7c8SPhil Edworthy };
3120b25b7c8SPhil Edworthy 
313*d850acf9SLaurent Pinchart static struct resource scif2_resources[] = {
314*d850acf9SLaurent Pinchart 	DEFINE_RES_MEM(0xe8008000, 0x100),
315*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(267),
316*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(268),
317*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(269),
318*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(266),
319*d850acf9SLaurent Pinchart };
320*d850acf9SLaurent Pinchart 
3210b25b7c8SPhil Edworthy static struct platform_device scif2_device = {
3220b25b7c8SPhil Edworthy 	.name		= "sh-sci",
3230b25b7c8SPhil Edworthy 	.id		= 2,
324*d850acf9SLaurent Pinchart 	.resource	= scif2_resources,
325*d850acf9SLaurent Pinchart 	.num_resources	= ARRAY_SIZE(scif2_resources),
3260b25b7c8SPhil Edworthy 	.dev		= {
3270b25b7c8SPhil Edworthy 		.platform_data	= &scif2_platform_data,
3280b25b7c8SPhil Edworthy 	},
3290b25b7c8SPhil Edworthy };
3300b25b7c8SPhil Edworthy 
3310b25b7c8SPhil Edworthy static struct plat_sci_port scif3_platform_data = {
3320b25b7c8SPhil Edworthy 	.flags		= UPF_BOOT_AUTOCONF,
3330b25b7c8SPhil Edworthy 	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |
3340b25b7c8SPhil Edworthy 			  SCSCR_REIE | SCSCR_TOIE,
3350b25b7c8SPhil Edworthy 	.scbrr_algo_id	= SCBRR_ALGO_2,
3360b25b7c8SPhil Edworthy 	.type		= PORT_SCIF,
3370b25b7c8SPhil Edworthy 	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,
3380b25b7c8SPhil Edworthy };
3390b25b7c8SPhil Edworthy 
340*d850acf9SLaurent Pinchart static struct resource scif3_resources[] = {
341*d850acf9SLaurent Pinchart 	DEFINE_RES_MEM(0xe8008800, 0x100),
342*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(271),
343*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(272),
344*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(273),
345*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(270),
346*d850acf9SLaurent Pinchart };
347*d850acf9SLaurent Pinchart 
3480b25b7c8SPhil Edworthy static struct platform_device scif3_device = {
3490b25b7c8SPhil Edworthy 	.name		= "sh-sci",
3500b25b7c8SPhil Edworthy 	.id		= 3,
351*d850acf9SLaurent Pinchart 	.resource	= scif3_resources,
352*d850acf9SLaurent Pinchart 	.num_resources	= ARRAY_SIZE(scif3_resources),
3530b25b7c8SPhil Edworthy 	.dev		= {
3540b25b7c8SPhil Edworthy 		.platform_data	= &scif3_platform_data,
3550b25b7c8SPhil Edworthy 	},
3560b25b7c8SPhil Edworthy };
3570b25b7c8SPhil Edworthy 
3580b25b7c8SPhil Edworthy static struct plat_sci_port scif4_platform_data = {
3590b25b7c8SPhil Edworthy 	.flags		= UPF_BOOT_AUTOCONF,
3600b25b7c8SPhil Edworthy 	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |
3610b25b7c8SPhil Edworthy 			  SCSCR_REIE | SCSCR_TOIE,
3620b25b7c8SPhil Edworthy 	.scbrr_algo_id	= SCBRR_ALGO_2,
3630b25b7c8SPhil Edworthy 	.type		= PORT_SCIF,
3640b25b7c8SPhil Edworthy 	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,
3650b25b7c8SPhil Edworthy };
3660b25b7c8SPhil Edworthy 
367*d850acf9SLaurent Pinchart static struct resource scif4_resources[] = {
368*d850acf9SLaurent Pinchart 	DEFINE_RES_MEM(0xe8009000, 0x100),
369*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(275),
370*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(276),
371*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(277),
372*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(274),
373*d850acf9SLaurent Pinchart };
374*d850acf9SLaurent Pinchart 
3750b25b7c8SPhil Edworthy static struct platform_device scif4_device = {
3760b25b7c8SPhil Edworthy 	.name		= "sh-sci",
3770b25b7c8SPhil Edworthy 	.id		= 4,
378*d850acf9SLaurent Pinchart 	.resource	= scif4_resources,
379*d850acf9SLaurent Pinchart 	.num_resources	= ARRAY_SIZE(scif4_resources),
3800b25b7c8SPhil Edworthy 	.dev		= {
3810b25b7c8SPhil Edworthy 		.platform_data	= &scif4_platform_data,
3820b25b7c8SPhil Edworthy 	},
3830b25b7c8SPhil Edworthy };
3840b25b7c8SPhil Edworthy 
3850b25b7c8SPhil Edworthy static struct plat_sci_port scif5_platform_data = {
3860b25b7c8SPhil Edworthy 	.flags		= UPF_BOOT_AUTOCONF,
3870b25b7c8SPhil Edworthy 	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |
3880b25b7c8SPhil Edworthy 			  SCSCR_REIE | SCSCR_TOIE,
3890b25b7c8SPhil Edworthy 	.scbrr_algo_id	= SCBRR_ALGO_2,
3900b25b7c8SPhil Edworthy 	.type		= PORT_SCIF,
3910b25b7c8SPhil Edworthy 	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,
3920b25b7c8SPhil Edworthy };
3930b25b7c8SPhil Edworthy 
394*d850acf9SLaurent Pinchart static struct resource scif5_resources[] = {
395*d850acf9SLaurent Pinchart 	DEFINE_RES_MEM(0xe8009800, 0x100),
396*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(279),
397*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(280),
398*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(281),
399*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(278),
400*d850acf9SLaurent Pinchart };
401*d850acf9SLaurent Pinchart 
4020b25b7c8SPhil Edworthy static struct platform_device scif5_device = {
4030b25b7c8SPhil Edworthy 	.name		= "sh-sci",
4040b25b7c8SPhil Edworthy 	.id		= 5,
405*d850acf9SLaurent Pinchart 	.resource	= scif5_resources,
406*d850acf9SLaurent Pinchart 	.num_resources	= ARRAY_SIZE(scif5_resources),
4070b25b7c8SPhil Edworthy 	.dev		= {
4080b25b7c8SPhil Edworthy 		.platform_data	= &scif5_platform_data,
4090b25b7c8SPhil Edworthy 	},
4100b25b7c8SPhil Edworthy };
4110b25b7c8SPhil Edworthy 
4120b25b7c8SPhil Edworthy static struct plat_sci_port scif6_platform_data = {
4130b25b7c8SPhil Edworthy 	.flags		= UPF_BOOT_AUTOCONF,
4140b25b7c8SPhil Edworthy 	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |
4150b25b7c8SPhil Edworthy 			  SCSCR_REIE | SCSCR_TOIE,
4160b25b7c8SPhil Edworthy 	.scbrr_algo_id	= SCBRR_ALGO_2,
4170b25b7c8SPhil Edworthy 	.type		= PORT_SCIF,
4180b25b7c8SPhil Edworthy 	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,
4190b25b7c8SPhil Edworthy };
4200b25b7c8SPhil Edworthy 
421*d850acf9SLaurent Pinchart static struct resource scif6_resources[] = {
422*d850acf9SLaurent Pinchart 	DEFINE_RES_MEM(0xe800a000, 0x100),
423*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(283),
424*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(284),
425*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(285),
426*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(282),
427*d850acf9SLaurent Pinchart };
428*d850acf9SLaurent Pinchart 
4290b25b7c8SPhil Edworthy static struct platform_device scif6_device = {
4300b25b7c8SPhil Edworthy 	.name		= "sh-sci",
4310b25b7c8SPhil Edworthy 	.id		= 6,
432*d850acf9SLaurent Pinchart 	.resource	= scif6_resources,
433*d850acf9SLaurent Pinchart 	.num_resources	= ARRAY_SIZE(scif6_resources),
4340b25b7c8SPhil Edworthy 	.dev		= {
4350b25b7c8SPhil Edworthy 		.platform_data	= &scif6_platform_data,
4360b25b7c8SPhil Edworthy 	},
4370b25b7c8SPhil Edworthy };
4380b25b7c8SPhil Edworthy 
4390b25b7c8SPhil Edworthy static struct plat_sci_port scif7_platform_data = {
4400b25b7c8SPhil Edworthy 	.flags		= UPF_BOOT_AUTOCONF,
4410b25b7c8SPhil Edworthy 	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |
4420b25b7c8SPhil Edworthy 			  SCSCR_REIE | SCSCR_TOIE,
4430b25b7c8SPhil Edworthy 	.scbrr_algo_id	= SCBRR_ALGO_2,
4440b25b7c8SPhil Edworthy 	.type		= PORT_SCIF,
4450b25b7c8SPhil Edworthy 	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,
4460b25b7c8SPhil Edworthy };
4470b25b7c8SPhil Edworthy 
448*d850acf9SLaurent Pinchart static struct resource scif7_resources[] = {
449*d850acf9SLaurent Pinchart 	DEFINE_RES_MEM(0xe800a800, 0x100),
450*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(287),
451*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(288),
452*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(289),
453*d850acf9SLaurent Pinchart 	DEFINE_RES_IRQ(286),
454*d850acf9SLaurent Pinchart };
455*d850acf9SLaurent Pinchart 
4560b25b7c8SPhil Edworthy static struct platform_device scif7_device = {
4570b25b7c8SPhil Edworthy 	.name		= "sh-sci",
4580b25b7c8SPhil Edworthy 	.id		= 7,
459*d850acf9SLaurent Pinchart 	.resource	= scif7_resources,
460*d850acf9SLaurent Pinchart 	.num_resources	= ARRAY_SIZE(scif7_resources),
4610b25b7c8SPhil Edworthy 	.dev		= {
4620b25b7c8SPhil Edworthy 		.platform_data	= &scif7_platform_data,
4630b25b7c8SPhil Edworthy 	},
4640b25b7c8SPhil Edworthy };
4650b25b7c8SPhil Edworthy 
4660b25b7c8SPhil Edworthy static struct sh_timer_config cmt0_platform_data = {
4670b25b7c8SPhil Edworthy 	.channel_offset = 0x02,
4680b25b7c8SPhil Edworthy 	.timer_bit = 0,
4690b25b7c8SPhil Edworthy 	.clockevent_rating = 125,
4700b25b7c8SPhil Edworthy 	.clocksource_rating = 0, /* disabled due to code generation issues */
4710b25b7c8SPhil Edworthy };
4720b25b7c8SPhil Edworthy 
4730b25b7c8SPhil Edworthy static struct resource cmt0_resources[] = {
4740b25b7c8SPhil Edworthy 	[0] = {
4750b25b7c8SPhil Edworthy 		.start	= 0xfffec002,
4760b25b7c8SPhil Edworthy 		.end	= 0xfffec007,
4770b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_MEM,
4780b25b7c8SPhil Edworthy 	},
4790b25b7c8SPhil Edworthy 	[1] = {
4800b25b7c8SPhil Edworthy 		.start	= 188,
4810b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_IRQ,
4820b25b7c8SPhil Edworthy 	},
4830b25b7c8SPhil Edworthy };
4840b25b7c8SPhil Edworthy 
4850b25b7c8SPhil Edworthy static struct platform_device cmt0_device = {
4860b25b7c8SPhil Edworthy 	.name		= "sh_cmt",
4870b25b7c8SPhil Edworthy 	.id		= 0,
4880b25b7c8SPhil Edworthy 	.dev = {
4890b25b7c8SPhil Edworthy 		.platform_data	= &cmt0_platform_data,
4900b25b7c8SPhil Edworthy 	},
4910b25b7c8SPhil Edworthy 	.resource	= cmt0_resources,
4920b25b7c8SPhil Edworthy 	.num_resources	= ARRAY_SIZE(cmt0_resources),
4930b25b7c8SPhil Edworthy };
4940b25b7c8SPhil Edworthy 
4950b25b7c8SPhil Edworthy static struct sh_timer_config cmt1_platform_data = {
4960b25b7c8SPhil Edworthy 	.channel_offset = 0x08,
4970b25b7c8SPhil Edworthy 	.timer_bit = 1,
4980b25b7c8SPhil Edworthy 	.clockevent_rating = 125,
4990b25b7c8SPhil Edworthy 	.clocksource_rating = 0, /* disabled due to code generation issues */
5000b25b7c8SPhil Edworthy };
5010b25b7c8SPhil Edworthy 
5020b25b7c8SPhil Edworthy static struct resource cmt1_resources[] = {
5030b25b7c8SPhil Edworthy 	[0] = {
5040b25b7c8SPhil Edworthy 		.start	= 0xfffec008,
5050b25b7c8SPhil Edworthy 		.end	= 0xfffec00d,
5060b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_MEM,
5070b25b7c8SPhil Edworthy 	},
5080b25b7c8SPhil Edworthy 	[1] = {
5090b25b7c8SPhil Edworthy 		.start	= 189,
5100b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_IRQ,
5110b25b7c8SPhil Edworthy 	},
5120b25b7c8SPhil Edworthy };
5130b25b7c8SPhil Edworthy 
5140b25b7c8SPhil Edworthy static struct platform_device cmt1_device = {
5150b25b7c8SPhil Edworthy 	.name		= "sh_cmt",
5160b25b7c8SPhil Edworthy 	.id		= 1,
5170b25b7c8SPhil Edworthy 	.dev = {
5180b25b7c8SPhil Edworthy 		.platform_data	= &cmt1_platform_data,
5190b25b7c8SPhil Edworthy 	},
5200b25b7c8SPhil Edworthy 	.resource	= cmt1_resources,
5210b25b7c8SPhil Edworthy 	.num_resources	= ARRAY_SIZE(cmt1_resources),
5220b25b7c8SPhil Edworthy };
5230b25b7c8SPhil Edworthy 
5240b25b7c8SPhil Edworthy static struct sh_timer_config mtu2_0_platform_data = {
5250b25b7c8SPhil Edworthy 	.channel_offset = -0x80,
5260b25b7c8SPhil Edworthy 	.timer_bit = 0,
5270b25b7c8SPhil Edworthy 	.clockevent_rating = 200,
5280b25b7c8SPhil Edworthy };
5290b25b7c8SPhil Edworthy 
5300b25b7c8SPhil Edworthy static struct resource mtu2_0_resources[] = {
5310b25b7c8SPhil Edworthy 	[0] = {
5320b25b7c8SPhil Edworthy 		.start	= 0xfffe4300,
5330b25b7c8SPhil Edworthy 		.end	= 0xfffe4326,
5340b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_MEM,
5350b25b7c8SPhil Edworthy 	},
5360b25b7c8SPhil Edworthy 	[1] = {
5370b25b7c8SPhil Edworthy 		.start	= 192,
5380b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_IRQ,
5390b25b7c8SPhil Edworthy 	},
5400b25b7c8SPhil Edworthy };
5410b25b7c8SPhil Edworthy 
5420b25b7c8SPhil Edworthy static struct platform_device mtu2_0_device = {
5430b25b7c8SPhil Edworthy 	.name		= "sh_mtu2",
5440b25b7c8SPhil Edworthy 	.id		= 0,
5450b25b7c8SPhil Edworthy 	.dev = {
5460b25b7c8SPhil Edworthy 		.platform_data	= &mtu2_0_platform_data,
5470b25b7c8SPhil Edworthy 	},
5480b25b7c8SPhil Edworthy 	.resource	= mtu2_0_resources,
5490b25b7c8SPhil Edworthy 	.num_resources	= ARRAY_SIZE(mtu2_0_resources),
5500b25b7c8SPhil Edworthy };
5510b25b7c8SPhil Edworthy 
5520b25b7c8SPhil Edworthy static struct sh_timer_config mtu2_1_platform_data = {
5530b25b7c8SPhil Edworthy 	.channel_offset = -0x100,
5540b25b7c8SPhil Edworthy 	.timer_bit = 1,
5550b25b7c8SPhil Edworthy 	.clockevent_rating = 200,
5560b25b7c8SPhil Edworthy };
5570b25b7c8SPhil Edworthy 
5580b25b7c8SPhil Edworthy static struct resource mtu2_1_resources[] = {
5590b25b7c8SPhil Edworthy 	[0] = {
5600b25b7c8SPhil Edworthy 		.start	= 0xfffe4380,
5610b25b7c8SPhil Edworthy 		.end	= 0xfffe4390,
5620b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_MEM,
5630b25b7c8SPhil Edworthy 	},
5640b25b7c8SPhil Edworthy 	[1] = {
5650b25b7c8SPhil Edworthy 		.start	= 203,
5660b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_IRQ,
5670b25b7c8SPhil Edworthy 	},
5680b25b7c8SPhil Edworthy };
5690b25b7c8SPhil Edworthy 
5700b25b7c8SPhil Edworthy static struct platform_device mtu2_1_device = {
5710b25b7c8SPhil Edworthy 	.name		= "sh_mtu2",
5720b25b7c8SPhil Edworthy 	.id		= 1,
5730b25b7c8SPhil Edworthy 	.dev = {
5740b25b7c8SPhil Edworthy 		.platform_data	= &mtu2_1_platform_data,
5750b25b7c8SPhil Edworthy 	},
5760b25b7c8SPhil Edworthy 	.resource	= mtu2_1_resources,
5770b25b7c8SPhil Edworthy 	.num_resources	= ARRAY_SIZE(mtu2_1_resources),
5780b25b7c8SPhil Edworthy };
5790b25b7c8SPhil Edworthy 
5800b25b7c8SPhil Edworthy static struct resource rtc_resources[] = {
5810b25b7c8SPhil Edworthy 	[0] = {
5820b25b7c8SPhil Edworthy 		.start	= 0xfffe6000,
5830b25b7c8SPhil Edworthy 		.end	= 0xfffe6000 + 0x30 - 1,
5840b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_IO,
5850b25b7c8SPhil Edworthy 	},
5860b25b7c8SPhil Edworthy 	[1] = {
5870b25b7c8SPhil Edworthy 		/* Shared Period/Carry/Alarm IRQ */
5880b25b7c8SPhil Edworthy 		.start	= 338,
5890b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_IRQ,
5900b25b7c8SPhil Edworthy 	},
5910b25b7c8SPhil Edworthy };
5920b25b7c8SPhil Edworthy 
5930b25b7c8SPhil Edworthy static struct platform_device rtc_device = {
5940b25b7c8SPhil Edworthy 	.name		= "sh-rtc",
5950b25b7c8SPhil Edworthy 	.id		= -1,
5960b25b7c8SPhil Edworthy 	.num_resources	= ARRAY_SIZE(rtc_resources),
5970b25b7c8SPhil Edworthy 	.resource	= rtc_resources,
5980b25b7c8SPhil Edworthy };
5990b25b7c8SPhil Edworthy 
6000b25b7c8SPhil Edworthy /* USB Host */
6010b25b7c8SPhil Edworthy static struct r8a66597_platdata r8a66597_data = {
6020b25b7c8SPhil Edworthy 	.on_chip = 1,
6030b25b7c8SPhil Edworthy 	.endian = 1,
6040b25b7c8SPhil Edworthy };
6050b25b7c8SPhil Edworthy 
6060b25b7c8SPhil Edworthy static struct resource r8a66597_usb_host_resources[] = {
6070b25b7c8SPhil Edworthy 	[0] = {
6080b25b7c8SPhil Edworthy 		.start	= 0xe8010000,
6090b25b7c8SPhil Edworthy 		.end	= 0xe80100e4,
6100b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_MEM,
6110b25b7c8SPhil Edworthy 	},
6120b25b7c8SPhil Edworthy 	[1] = {
6130b25b7c8SPhil Edworthy 		.start	= 170,
6140b25b7c8SPhil Edworthy 		.end	= 170,
6150b25b7c8SPhil Edworthy 		.flags	= IORESOURCE_IRQ | IRQF_TRIGGER_LOW,
6160b25b7c8SPhil Edworthy 	},
6170b25b7c8SPhil Edworthy };
6180b25b7c8SPhil Edworthy 
6190b25b7c8SPhil Edworthy static struct platform_device r8a66597_usb_host_device = {
6200b25b7c8SPhil Edworthy 	.name		= "r8a66597_hcd",
6210b25b7c8SPhil Edworthy 	.id		= 0,
6220b25b7c8SPhil Edworthy 	.dev = {
6230b25b7c8SPhil Edworthy 		.dma_mask		= NULL,         /*  not use dma */
6240b25b7c8SPhil Edworthy 		.coherent_dma_mask	= 0xffffffff,
6250b25b7c8SPhil Edworthy 		.platform_data		= &r8a66597_data,
6260b25b7c8SPhil Edworthy 	},
6270b25b7c8SPhil Edworthy 	.num_resources	= ARRAY_SIZE(r8a66597_usb_host_resources),
6280b25b7c8SPhil Edworthy 	.resource	= r8a66597_usb_host_resources,
6290b25b7c8SPhil Edworthy };
6300b25b7c8SPhil Edworthy 
6310b25b7c8SPhil Edworthy static struct platform_device *sh7269_devices[] __initdata = {
6320b25b7c8SPhil Edworthy 	&scif0_device,
6330b25b7c8SPhil Edworthy 	&scif1_device,
6340b25b7c8SPhil Edworthy 	&scif2_device,
6350b25b7c8SPhil Edworthy 	&scif3_device,
6360b25b7c8SPhil Edworthy 	&scif4_device,
6370b25b7c8SPhil Edworthy 	&scif5_device,
6380b25b7c8SPhil Edworthy 	&scif6_device,
6390b25b7c8SPhil Edworthy 	&scif7_device,
6400b25b7c8SPhil Edworthy 	&cmt0_device,
6410b25b7c8SPhil Edworthy 	&cmt1_device,
6420b25b7c8SPhil Edworthy 	&mtu2_0_device,
6430b25b7c8SPhil Edworthy 	&mtu2_1_device,
6440b25b7c8SPhil Edworthy 	&rtc_device,
6450b25b7c8SPhil Edworthy 	&r8a66597_usb_host_device,
6460b25b7c8SPhil Edworthy };
6470b25b7c8SPhil Edworthy 
6480b25b7c8SPhil Edworthy static int __init sh7269_devices_setup(void)
6490b25b7c8SPhil Edworthy {
6500b25b7c8SPhil Edworthy 	return platform_add_devices(sh7269_devices,
6510b25b7c8SPhil Edworthy 				    ARRAY_SIZE(sh7269_devices));
6520b25b7c8SPhil Edworthy }
6530b25b7c8SPhil Edworthy arch_initcall(sh7269_devices_setup);
6540b25b7c8SPhil Edworthy 
6550b25b7c8SPhil Edworthy void __init plat_irq_setup(void)
6560b25b7c8SPhil Edworthy {
6570b25b7c8SPhil Edworthy 	register_intc_controller(&intc_desc);
6580b25b7c8SPhil Edworthy }
6590b25b7c8SPhil Edworthy 
6600b25b7c8SPhil Edworthy static struct platform_device *sh7269_early_devices[] __initdata = {
6610b25b7c8SPhil Edworthy 	&scif0_device,
6620b25b7c8SPhil Edworthy 	&scif1_device,
6630b25b7c8SPhil Edworthy 	&scif2_device,
6640b25b7c8SPhil Edworthy 	&scif3_device,
6650b25b7c8SPhil Edworthy 	&scif4_device,
6660b25b7c8SPhil Edworthy 	&scif5_device,
6670b25b7c8SPhil Edworthy 	&scif6_device,
6680b25b7c8SPhil Edworthy 	&scif7_device,
6690b25b7c8SPhil Edworthy 	&cmt0_device,
6700b25b7c8SPhil Edworthy 	&cmt1_device,
6710b25b7c8SPhil Edworthy 	&mtu2_0_device,
6720b25b7c8SPhil Edworthy 	&mtu2_1_device,
6730b25b7c8SPhil Edworthy };
6740b25b7c8SPhil Edworthy 
6750b25b7c8SPhil Edworthy void __init plat_early_device_setup(void)
6760b25b7c8SPhil Edworthy {
6770b25b7c8SPhil Edworthy 	early_platform_add_devices(sh7269_early_devices,
6780b25b7c8SPhil Edworthy 				   ARRAY_SIZE(sh7269_early_devices));
6790b25b7c8SPhil Edworthy }
680