File Index
Files and directories
Sign in
FILE

spear300.c

File preview with syntax highlighting.

linux-6.19.14/arch/arm/mach-spear/spear300.c C
  1// SPDX-License-Identifier: GPL-2.0-only
  2/*
  3 * arch/arm/mach-spear3xx/spear300.c
  4 *
  5 * SPEAr300 machine source file
  6 *
  7 * Copyright (C) 2009-2012 ST Microelectronics
  8 * Viresh Kumar <vireshk@kernel.org>
  9 */
 10
 11#define pr_fmt(fmt) "SPEAr300: " fmt
 12
 13#include <linux/amba/pl08x.h>
 14#include <linux/of_platform.h>
 15#include <asm/mach/arch.h>
 16#include "generic.h"
 17#include "spear.h"
 18
 19/* DMAC platform data's slave info */
 20struct pl08x_channel_data spear300_dma_info[] = {
 21	{
 22		.bus_id = "uart0_rx",
 23		.min_signal = 2,
 24		.max_signal = 2,
 25		.muxval = 0,
 26		.periph_buses = PL08X_AHB1,
 27	}, {
 28		.bus_id = "uart0_tx",
 29		.min_signal = 3,
 30		.max_signal = 3,
 31		.muxval = 0,
 32		.periph_buses = PL08X_AHB1,
 33	}, {
 34		.bus_id = "ssp0_rx",
 35		.min_signal = 8,
 36		.max_signal = 8,
 37		.muxval = 0,
 38		.periph_buses = PL08X_AHB1,
 39	}, {
 40		.bus_id = "ssp0_tx",
 41		.min_signal = 9,
 42		.max_signal = 9,
 43		.muxval = 0,
 44		.periph_buses = PL08X_AHB1,
 45	}, {
 46		.bus_id = "i2c_rx",
 47		.min_signal = 10,
 48		.max_signal = 10,
 49		.muxval = 0,
 50		.periph_buses = PL08X_AHB1,
 51	}, {
 52		.bus_id = "i2c_tx",
 53		.min_signal = 11,
 54		.max_signal = 11,
 55		.muxval = 0,
 56		.periph_buses = PL08X_AHB1,
 57	}, {
 58		.bus_id = "irda",
 59		.min_signal = 12,
 60		.max_signal = 12,
 61		.muxval = 0,
 62		.periph_buses = PL08X_AHB1,
 63	}, {
 64		.bus_id = "adc",
 65		.min_signal = 13,
 66		.max_signal = 13,
 67		.muxval = 0,
 68		.periph_buses = PL08X_AHB1,
 69	}, {
 70		.bus_id = "to_jpeg",
 71		.min_signal = 14,
 72		.max_signal = 14,
 73		.muxval = 0,
 74		.periph_buses = PL08X_AHB1,
 75	}, {
 76		.bus_id = "from_jpeg",
 77		.min_signal = 15,
 78		.max_signal = 15,
 79		.muxval = 0,
 80		.periph_buses = PL08X_AHB1,
 81	}, {
 82		.bus_id = "ras0_rx",
 83		.min_signal = 0,
 84		.max_signal = 0,
 85		.muxval = 1,
 86		.periph_buses = PL08X_AHB1,
 87	}, {
 88		.bus_id = "ras0_tx",
 89		.min_signal = 1,
 90		.max_signal = 1,
 91		.muxval = 1,
 92		.periph_buses = PL08X_AHB1,
 93	}, {
 94		.bus_id = "ras1_rx",
 95		.min_signal = 2,
 96		.max_signal = 2,
 97		.muxval = 1,
 98		.periph_buses = PL08X_AHB1,
 99	}, {
100		.bus_id = "ras1_tx",
101		.min_signal = 3,
102		.max_signal = 3,
103		.muxval = 1,
104		.periph_buses = PL08X_AHB1,
105	}, {
106		.bus_id = "ras2_rx",
107		.min_signal = 4,
108		.max_signal = 4,
109		.muxval = 1,
110		.periph_buses = PL08X_AHB1,
111	}, {
112		.bus_id = "ras2_tx",
113		.min_signal = 5,
114		.max_signal = 5,
115		.muxval = 1,
116		.periph_buses = PL08X_AHB1,
117	}, {
118		.bus_id = "ras3_rx",
119		.min_signal = 6,
120		.max_signal = 6,
121		.muxval = 1,
122		.periph_buses = PL08X_AHB1,
123	}, {
124		.bus_id = "ras3_tx",
125		.min_signal = 7,
126		.max_signal = 7,
127		.muxval = 1,
128		.periph_buses = PL08X_AHB1,
129	}, {
130		.bus_id = "ras4_rx",
131		.min_signal = 8,
132		.max_signal = 8,
133		.muxval = 1,
134		.periph_buses = PL08X_AHB1,
135	}, {
136		.bus_id = "ras4_tx",
137		.min_signal = 9,
138		.max_signal = 9,
139		.muxval = 1,
140		.periph_buses = PL08X_AHB1,
141	}, {
142		.bus_id = "ras5_rx",
143		.min_signal = 10,
144		.max_signal = 10,
145		.muxval = 1,
146		.periph_buses = PL08X_AHB1,
147	}, {
148		.bus_id = "ras5_tx",
149		.min_signal = 11,
150		.max_signal = 11,
151		.muxval = 1,
152		.periph_buses = PL08X_AHB1,
153	}, {
154		.bus_id = "ras6_rx",
155		.min_signal = 12,
156		.max_signal = 12,
157		.muxval = 1,
158		.periph_buses = PL08X_AHB1,
159	}, {
160		.bus_id = "ras6_tx",
161		.min_signal = 13,
162		.max_signal = 13,
163		.muxval = 1,
164		.periph_buses = PL08X_AHB1,
165	}, {
166		.bus_id = "ras7_rx",
167		.min_signal = 14,
168		.max_signal = 14,
169		.muxval = 1,
170		.periph_buses = PL08X_AHB1,
171	}, {
172		.bus_id = "ras7_tx",
173		.min_signal = 15,
174		.max_signal = 15,
175		.muxval = 1,
176		.periph_buses = PL08X_AHB1,
177	},
178};
179
180/* Add SPEAr300 auxdata to pass platform data */
181static struct of_dev_auxdata spear300_auxdata_lookup[] __initdata = {
182	OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL,
183			&pl022_plat_data),
184	OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL,
185			&pl080_plat_data),
186	{}
187};
188
189static void __init spear300_dt_init(void)
190{
191	pl080_plat_data.slave_channels = spear300_dma_info;
192	pl080_plat_data.num_slave_channels = ARRAY_SIZE(spear300_dma_info);
193
194	of_platform_default_populate(NULL, spear300_auxdata_lookup, NULL);
195}
196
197static const char * const spear300_dt_board_compat[] = {
198	"st,spear300",
199	"st,spear300-evb",
200	NULL,
201};
202
203static void __init spear300_map_io(void)
204{
205	spear3xx_map_io();
206}
207
208DT_MACHINE_START(SPEAR300_DT, "ST SPEAr300 SoC with Flattened Device Tree")
209	.map_io		=	spear300_map_io,
210	.init_time	=	spear3xx_timer_init,
211	.init_machine	=	spear300_dt_init,
212	.restart	=	spear_restart,
213	.dt_compat	=	spear300_dt_board_compat,
214MACHINE_END
~/ Read-only file preview.