~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/mach-spear/spear310.c

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0-only
  2 /*
  3  * arch/arm/mach-spear3xx/spear310.c
  4  *
  5  * SPEAr310 machine source file
  6  *
  7  * Copyright (C) 2009-2012 ST Microelectronics
  8  * Viresh Kumar <vireshk@kernel.org>
  9  */
 10 
 11 #define pr_fmt(fmt) "SPEAr310: " fmt
 12 
 13 #include <linux/amba/pl08x.h>
 14 #include <linux/amba/serial.h>
 15 #include <linux/of_platform.h>
 16 #include <asm/mach/arch.h>
 17 #include "generic.h"
 18 #include "spear.h"
 19 
 20 #define SPEAR310_UART1_BASE             UL(0xB2000000)
 21 #define SPEAR310_UART2_BASE             UL(0xB2080000)
 22 #define SPEAR310_UART3_BASE             UL(0xB2100000)
 23 #define SPEAR310_UART4_BASE             UL(0xB2180000)
 24 #define SPEAR310_UART5_BASE             UL(0xB2200000)
 25 
 26 /* DMAC platform data's slave info */
 27 struct pl08x_channel_data spear310_dma_info[] = {
 28         {
 29                 .bus_id = "uart0_rx",
 30                 .min_signal = 2,
 31                 .max_signal = 2,
 32                 .muxval = 0,
 33                 .periph_buses = PL08X_AHB1,
 34         }, {
 35                 .bus_id = "uart0_tx",
 36                 .min_signal = 3,
 37                 .max_signal = 3,
 38                 .muxval = 0,
 39                 .periph_buses = PL08X_AHB1,
 40         }, {
 41                 .bus_id = "ssp0_rx",
 42                 .min_signal = 8,
 43                 .max_signal = 8,
 44                 .muxval = 0,
 45                 .periph_buses = PL08X_AHB1,
 46         }, {
 47                 .bus_id = "ssp0_tx",
 48                 .min_signal = 9,
 49                 .max_signal = 9,
 50                 .muxval = 0,
 51                 .periph_buses = PL08X_AHB1,
 52         }, {
 53                 .bus_id = "i2c_rx",
 54                 .min_signal = 10,
 55                 .max_signal = 10,
 56                 .muxval = 0,
 57                 .periph_buses = PL08X_AHB1,
 58         }, {
 59                 .bus_id = "i2c_tx",
 60                 .min_signal = 11,
 61                 .max_signal = 11,
 62                 .muxval = 0,
 63                 .periph_buses = PL08X_AHB1,
 64         }, {
 65                 .bus_id = "irda",
 66                 .min_signal = 12,
 67                 .max_signal = 12,
 68                 .muxval = 0,
 69                 .periph_buses = PL08X_AHB1,
 70         }, {
 71                 .bus_id = "adc",
 72                 .min_signal = 13,
 73                 .max_signal = 13,
 74                 .muxval = 0,
 75                 .periph_buses = PL08X_AHB1,
 76         }, {
 77                 .bus_id = "to_jpeg",
 78                 .min_signal = 14,
 79                 .max_signal = 14,
 80                 .muxval = 0,
 81                 .periph_buses = PL08X_AHB1,
 82         }, {
 83                 .bus_id = "from_jpeg",
 84                 .min_signal = 15,
 85                 .max_signal = 15,
 86                 .muxval = 0,
 87                 .periph_buses = PL08X_AHB1,
 88         }, {
 89                 .bus_id = "uart1_rx",
 90                 .min_signal = 0,
 91                 .max_signal = 0,
 92                 .muxval = 1,
 93                 .periph_buses = PL08X_AHB1,
 94         }, {
 95                 .bus_id = "uart1_tx",
 96                 .min_signal = 1,
 97                 .max_signal = 1,
 98                 .muxval = 1,
 99                 .periph_buses = PL08X_AHB1,
100         }, {
101                 .bus_id = "uart2_rx",
102                 .min_signal = 2,
103                 .max_signal = 2,
104                 .muxval = 1,
105                 .periph_buses = PL08X_AHB1,
106         }, {
107                 .bus_id = "uart2_tx",
108                 .min_signal = 3,
109                 .max_signal = 3,
110                 .muxval = 1,
111                 .periph_buses = PL08X_AHB1,
112         }, {
113                 .bus_id = "uart3_rx",
114                 .min_signal = 4,
115                 .max_signal = 4,
116                 .muxval = 1,
117                 .periph_buses = PL08X_AHB1,
118         }, {
119                 .bus_id = "uart3_tx",
120                 .min_signal = 5,
121                 .max_signal = 5,
122                 .muxval = 1,
123                 .periph_buses = PL08X_AHB1,
124         }, {
125                 .bus_id = "uart4_rx",
126                 .min_signal = 6,
127                 .max_signal = 6,
128                 .muxval = 1,
129                 .periph_buses = PL08X_AHB1,
130         }, {
131                 .bus_id = "uart4_tx",
132                 .min_signal = 7,
133                 .max_signal = 7,
134                 .muxval = 1,
135                 .periph_buses = PL08X_AHB1,
136         }, {
137                 .bus_id = "uart5_rx",
138                 .min_signal = 8,
139                 .max_signal = 8,
140                 .muxval = 1,
141                 .periph_buses = PL08X_AHB1,
142         }, {
143                 .bus_id = "uart5_tx",
144                 .min_signal = 9,
145                 .max_signal = 9,
146                 .muxval = 1,
147                 .periph_buses = PL08X_AHB1,
148         }, {
149                 .bus_id = "ras5_rx",
150                 .min_signal = 10,
151                 .max_signal = 10,
152                 .muxval = 1,
153                 .periph_buses = PL08X_AHB1,
154         }, {
155                 .bus_id = "ras5_tx",
156                 .min_signal = 11,
157                 .max_signal = 11,
158                 .muxval = 1,
159                 .periph_buses = PL08X_AHB1,
160         }, {
161                 .bus_id = "ras6_rx",
162                 .min_signal = 12,
163                 .max_signal = 12,
164                 .muxval = 1,
165                 .periph_buses = PL08X_AHB1,
166         }, {
167                 .bus_id = "ras6_tx",
168                 .min_signal = 13,
169                 .max_signal = 13,
170                 .muxval = 1,
171                 .periph_buses = PL08X_AHB1,
172         }, {
173                 .bus_id = "ras7_rx",
174                 .min_signal = 14,
175                 .max_signal = 14,
176                 .muxval = 1,
177                 .periph_buses = PL08X_AHB1,
178         }, {
179                 .bus_id = "ras7_tx",
180                 .min_signal = 15,
181                 .max_signal = 15,
182                 .muxval = 1,
183                 .periph_buses = PL08X_AHB1,
184         },
185 };
186 
187 /* uart devices plat data */
188 static struct amba_pl011_data spear310_uart_data[] = {
189         {
190                 .dma_filter = pl08x_filter_id,
191                 .dma_tx_param = "uart1_tx",
192                 .dma_rx_param = "uart1_rx",
193         }, {
194                 .dma_filter = pl08x_filter_id,
195                 .dma_tx_param = "uart2_tx",
196                 .dma_rx_param = "uart2_rx",
197         }, {
198                 .dma_filter = pl08x_filter_id,
199                 .dma_tx_param = "uart3_tx",
200                 .dma_rx_param = "uart3_rx",
201         }, {
202                 .dma_filter = pl08x_filter_id,
203                 .dma_tx_param = "uart4_tx",
204                 .dma_rx_param = "uart4_rx",
205         }, {
206                 .dma_filter = pl08x_filter_id,
207                 .dma_tx_param = "uart5_tx",
208                 .dma_rx_param = "uart5_rx",
209         },
210 };
211 
212 /* Add SPEAr310 auxdata to pass platform data */
213 static struct of_dev_auxdata spear310_auxdata_lookup[] __initdata = {
214         OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL,
215                         &pl022_plat_data),
216         OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL,
217                         &pl080_plat_data),
218         OF_DEV_AUXDATA("arm,pl011", SPEAR310_UART1_BASE, NULL,
219                         &spear310_uart_data[0]),
220         OF_DEV_AUXDATA("arm,pl011", SPEAR310_UART2_BASE, NULL,
221                         &spear310_uart_data[1]),
222         OF_DEV_AUXDATA("arm,pl011", SPEAR310_UART3_BASE, NULL,
223                         &spear310_uart_data[2]),
224         OF_DEV_AUXDATA("arm,pl011", SPEAR310_UART4_BASE, NULL,
225                         &spear310_uart_data[3]),
226         OF_DEV_AUXDATA("arm,pl011", SPEAR310_UART5_BASE, NULL,
227                         &spear310_uart_data[4]),
228         {}
229 };
230 
231 static void __init spear310_dt_init(void)
232 {
233         pl080_plat_data.slave_channels = spear310_dma_info;
234         pl080_plat_data.num_slave_channels = ARRAY_SIZE(spear310_dma_info);
235 
236         of_platform_default_populate(NULL, spear310_auxdata_lookup, NULL);
237 }
238 
239 static const char * const spear310_dt_board_compat[] = {
240         "st,spear310",
241         "st,spear310-evb",
242         NULL,
243 };
244 
245 static void __init spear310_map_io(void)
246 {
247         spear3xx_map_io();
248 }
249 
250 DT_MACHINE_START(SPEAR310_DT, "ST SPEAr310 SoC with Flattened Device Tree")
251         .map_io         =       spear310_map_io,
252         .init_time      =       spear3xx_timer_init,
253         .init_machine   =       spear310_dt_init,
254         .restart        =       spear_restart,
255         .dt_compat      =       spear310_dt_board_compat,
256 MACHINE_END
257 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php