aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile/setup-r8a7779.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-shmobile/setup-r8a7779.c')
-rw-r--r--arch/arm/mach-shmobile/setup-r8a7779.c48
1 files changed, 32 insertions, 16 deletions
diff --git a/arch/arm/mach-shmobile/setup-r8a7779.c b/arch/arm/mach-shmobile/setup-r8a7779.c
index 7a1ad4f38539..c54ff9b29fe5 100644
--- a/arch/arm/mach-shmobile/setup-r8a7779.c
+++ b/arch/arm/mach-shmobile/setup-r8a7779.c
@@ -60,14 +60,38 @@ void __init r8a7779_map_io(void)
60 iotable_init(r8a7779_io_desc, ARRAY_SIZE(r8a7779_io_desc)); 60 iotable_init(r8a7779_io_desc, ARRAY_SIZE(r8a7779_io_desc));
61} 61}
62 62
63static struct resource r8a7779_pfc_resources[] = {
64 [0] = {
65 .start = 0xfffc0000,
66 .end = 0xfffc023b,
67 .flags = IORESOURCE_MEM,
68 },
69 [1] = {
70 .start = 0xffc40000,
71 .end = 0xffc46fff,
72 .flags = IORESOURCE_MEM,
73 }
74};
75
76static struct platform_device r8a7779_pfc_device = {
77 .name = "pfc-r8a7779",
78 .id = -1,
79 .resource = r8a7779_pfc_resources,
80 .num_resources = ARRAY_SIZE(r8a7779_pfc_resources),
81};
82
83void __init r8a7779_pinmux_init(void)
84{
85 platform_device_register(&r8a7779_pfc_device);
86}
87
63static struct plat_sci_port scif0_platform_data = { 88static struct plat_sci_port scif0_platform_data = {
64 .mapbase = 0xffe40000, 89 .mapbase = 0xffe40000,
65 .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP, 90 .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
66 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, 91 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
67 .scbrr_algo_id = SCBRR_ALGO_2, 92 .scbrr_algo_id = SCBRR_ALGO_2,
68 .type = PORT_SCIF, 93 .type = PORT_SCIF,
69 .irqs = { gic_spi(88), gic_spi(88), 94 .irqs = SCIx_IRQ_MUXED(gic_spi(88)),
70 gic_spi(88), gic_spi(88) },
71}; 95};
72 96
73static struct platform_device scif0_device = { 97static struct platform_device scif0_device = {
@@ -84,8 +108,7 @@ static struct plat_sci_port scif1_platform_data = {
84 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, 108 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
85 .scbrr_algo_id = SCBRR_ALGO_2, 109 .scbrr_algo_id = SCBRR_ALGO_2,
86 .type = PORT_SCIF, 110 .type = PORT_SCIF,
87 .irqs = { gic_spi(89), gic_spi(89), 111 .irqs = SCIx_IRQ_MUXED(gic_spi(89)),
88 gic_spi(89), gic_spi(89) },
89}; 112};
90 113
91static struct platform_device scif1_device = { 114static struct platform_device scif1_device = {
@@ -102,8 +125,7 @@ static struct plat_sci_port scif2_platform_data = {
102 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, 125 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
103 .scbrr_algo_id = SCBRR_ALGO_2, 126 .scbrr_algo_id = SCBRR_ALGO_2,
104 .type = PORT_SCIF, 127 .type = PORT_SCIF,
105 .irqs = { gic_spi(90), gic_spi(90), 128 .irqs = SCIx_IRQ_MUXED(gic_spi(90)),
106 gic_spi(90), gic_spi(90) },
107}; 129};
108 130
109static struct platform_device scif2_device = { 131static struct platform_device scif2_device = {
@@ -120,8 +142,7 @@ static struct plat_sci_port scif3_platform_data = {
120 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, 142 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
121 .scbrr_algo_id = SCBRR_ALGO_2, 143 .scbrr_algo_id = SCBRR_ALGO_2,
122 .type = PORT_SCIF, 144 .type = PORT_SCIF,
123 .irqs = { gic_spi(91), gic_spi(91), 145 .irqs = SCIx_IRQ_MUXED(gic_spi(91)),
124 gic_spi(91), gic_spi(91) },
125}; 146};
126 147
127static struct platform_device scif3_device = { 148static struct platform_device scif3_device = {
@@ -138,8 +159,7 @@ static struct plat_sci_port scif4_platform_data = {
138 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, 159 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
139 .scbrr_algo_id = SCBRR_ALGO_2, 160 .scbrr_algo_id = SCBRR_ALGO_2,
140 .type = PORT_SCIF, 161 .type = PORT_SCIF,
141 .irqs = { gic_spi(92), gic_spi(92), 162 .irqs = SCIx_IRQ_MUXED(gic_spi(92)),
142 gic_spi(92), gic_spi(92) },
143}; 163};
144 164
145static struct platform_device scif4_device = { 165static struct platform_device scif4_device = {
@@ -156,8 +176,7 @@ static struct plat_sci_port scif5_platform_data = {
156 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, 176 .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
157 .scbrr_algo_id = SCBRR_ALGO_2, 177 .scbrr_algo_id = SCBRR_ALGO_2,
158 .type = PORT_SCIF, 178 .type = PORT_SCIF,
159 .irqs = { gic_spi(93), gic_spi(93), 179 .irqs = SCIx_IRQ_MUXED(gic_spi(93)),
160 gic_spi(93), gic_spi(93) },
161}; 180};
162 181
163static struct platform_device scif5_device = { 182static struct platform_device scif5_device = {
@@ -339,7 +358,7 @@ void __init r8a7779_add_standard_devices(void)
339/* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ 358/* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */
340void __init __weak r8a7779_register_twd(void) { } 359void __init __weak r8a7779_register_twd(void) { }
341 360
342static void __init r8a7779_earlytimer_init(void) 361void __init r8a7779_earlytimer_init(void)
343{ 362{
344 r8a7779_clock_init(); 363 r8a7779_clock_init();
345 shmobile_earlytimer_init(); 364 shmobile_earlytimer_init();
@@ -366,7 +385,4 @@ void __init r8a7779_add_early_devices(void)
366 * As a final step pass earlyprint=sh-sci.2,115200 on the kernel 385 * As a final step pass earlyprint=sh-sci.2,115200 on the kernel
367 * command line in case of the marzen board. 386 * command line in case of the marzen board.
368 */ 387 */
369
370 /* override timer setup with soc-specific code */
371 shmobile_timer.init = r8a7779_earlytimer_init;
372} 388}