]> Git Repo - linux.git/blob - arch/sh/kernel/cpu/sh5/setup-sh5.c
dma-mapping: implement dma_map_single_attrs using dma_map_page_attrs
[linux.git] / arch / sh / kernel / cpu / sh5 / setup-sh5.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * SH5-101/SH5-103 CPU Setup
4  *
5  *  Copyright (C) 2009  Paul Mundt
6  */
7 #include <linux/platform_device.h>
8 #include <linux/init.h>
9 #include <linux/serial.h>
10 #include <linux/serial_sci.h>
11 #include <linux/io.h>
12 #include <linux/mm.h>
13 #include <linux/sh_timer.h>
14 #include <asm/addrspace.h>
15
16 static struct plat_sci_port scif0_platform_data = {
17         .flags          = UPF_IOREMAP,
18         .scscr          = SCSCR_REIE,
19         .type           = PORT_SCIF,
20 };
21
22 static struct resource scif0_resources[] = {
23         DEFINE_RES_MEM(PHYS_PERIPHERAL_BLOCK + 0x01030000, 0x100),
24         DEFINE_RES_IRQ(39),
25         DEFINE_RES_IRQ(40),
26         DEFINE_RES_IRQ(42),
27 };
28
29 static struct platform_device scif0_device = {
30         .name           = "sh-sci",
31         .id             = 0,
32         .resource       = scif0_resources,
33         .num_resources  = ARRAY_SIZE(scif0_resources),
34         .dev            = {
35                 .platform_data  = &scif0_platform_data,
36         },
37 };
38
39 static struct resource rtc_resources[] = {
40         [0] = {
41                 .start  = PHYS_PERIPHERAL_BLOCK + 0x01040000,
42                 .end    = PHYS_PERIPHERAL_BLOCK + 0x01040000 + 0x58 - 1,
43                 .flags  = IORESOURCE_IO,
44         },
45         [1] = {
46                 /* Period IRQ */
47                 .start  = IRQ_PRI,
48                 .flags  = IORESOURCE_IRQ,
49         },
50         [2] = {
51                 /* Carry IRQ */
52                 .start  = IRQ_CUI,
53                 .flags  = IORESOURCE_IRQ,
54         },
55         [3] = {
56                 /* Alarm IRQ */
57                 .start  = IRQ_ATI,
58                 .flags  = IORESOURCE_IRQ,
59         },
60 };
61
62 static struct platform_device rtc_device = {
63         .name           = "sh-rtc",
64         .id             = -1,
65         .num_resources  = ARRAY_SIZE(rtc_resources),
66         .resource       = rtc_resources,
67 };
68
69 #define TMU_BLOCK_OFF   0x01020000
70 #define TMU_BASE        PHYS_PERIPHERAL_BLOCK + TMU_BLOCK_OFF
71
72 static struct sh_timer_config tmu0_platform_data = {
73         .channels_mask = 7,
74 };
75
76 static struct resource tmu0_resources[] = {
77         DEFINE_RES_MEM(TMU_BASE, 0x30),
78         DEFINE_RES_IRQ(IRQ_TUNI0),
79         DEFINE_RES_IRQ(IRQ_TUNI1),
80         DEFINE_RES_IRQ(IRQ_TUNI2),
81 };
82
83 static struct platform_device tmu0_device = {
84         .name           = "sh-tmu",
85         .id             = 0,
86         .dev = {
87                 .platform_data  = &tmu0_platform_data,
88         },
89         .resource       = tmu0_resources,
90         .num_resources  = ARRAY_SIZE(tmu0_resources),
91 };
92
93 static struct platform_device *sh5_early_devices[] __initdata = {
94         &scif0_device,
95         &tmu0_device,
96 };
97
98 static struct platform_device *sh5_devices[] __initdata = {
99         &rtc_device,
100 };
101
102 static int __init sh5_devices_setup(void)
103 {
104         int ret;
105
106         ret = platform_add_devices(sh5_early_devices,
107                                    ARRAY_SIZE(sh5_early_devices));
108         if (unlikely(ret != 0))
109                 return ret;
110
111         return platform_add_devices(sh5_devices,
112                                     ARRAY_SIZE(sh5_devices));
113 }
114 arch_initcall(sh5_devices_setup);
115
116 void __init plat_early_device_setup(void)
117 {
118         early_platform_add_devices(sh5_early_devices,
119                                    ARRAY_SIZE(sh5_early_devices));
120 }
This page took 0.038385 seconds and 4 git commands to generate.