Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * arch/arm/mach-spear3xx/spear300.c
0004  *
0005  * SPEAr300 machine source file
0006  *
0007  * Copyright (C) 2009-2012 ST Microelectronics
0008  * Viresh Kumar <vireshk@kernel.org>
0009  */
0010 
0011 #define pr_fmt(fmt) "SPEAr300: " fmt
0012 
0013 #include <linux/amba/pl08x.h>
0014 #include <linux/of_platform.h>
0015 #include <asm/mach/arch.h>
0016 #include "generic.h"
0017 #include "spear.h"
0018 
0019 /* DMAC platform data's slave info */
0020 struct pl08x_channel_data spear300_dma_info[] = {
0021     {
0022         .bus_id = "uart0_rx",
0023         .min_signal = 2,
0024         .max_signal = 2,
0025         .muxval = 0,
0026         .periph_buses = PL08X_AHB1,
0027     }, {
0028         .bus_id = "uart0_tx",
0029         .min_signal = 3,
0030         .max_signal = 3,
0031         .muxval = 0,
0032         .periph_buses = PL08X_AHB1,
0033     }, {
0034         .bus_id = "ssp0_rx",
0035         .min_signal = 8,
0036         .max_signal = 8,
0037         .muxval = 0,
0038         .periph_buses = PL08X_AHB1,
0039     }, {
0040         .bus_id = "ssp0_tx",
0041         .min_signal = 9,
0042         .max_signal = 9,
0043         .muxval = 0,
0044         .periph_buses = PL08X_AHB1,
0045     }, {
0046         .bus_id = "i2c_rx",
0047         .min_signal = 10,
0048         .max_signal = 10,
0049         .muxval = 0,
0050         .periph_buses = PL08X_AHB1,
0051     }, {
0052         .bus_id = "i2c_tx",
0053         .min_signal = 11,
0054         .max_signal = 11,
0055         .muxval = 0,
0056         .periph_buses = PL08X_AHB1,
0057     }, {
0058         .bus_id = "irda",
0059         .min_signal = 12,
0060         .max_signal = 12,
0061         .muxval = 0,
0062         .periph_buses = PL08X_AHB1,
0063     }, {
0064         .bus_id = "adc",
0065         .min_signal = 13,
0066         .max_signal = 13,
0067         .muxval = 0,
0068         .periph_buses = PL08X_AHB1,
0069     }, {
0070         .bus_id = "to_jpeg",
0071         .min_signal = 14,
0072         .max_signal = 14,
0073         .muxval = 0,
0074         .periph_buses = PL08X_AHB1,
0075     }, {
0076         .bus_id = "from_jpeg",
0077         .min_signal = 15,
0078         .max_signal = 15,
0079         .muxval = 0,
0080         .periph_buses = PL08X_AHB1,
0081     }, {
0082         .bus_id = "ras0_rx",
0083         .min_signal = 0,
0084         .max_signal = 0,
0085         .muxval = 1,
0086         .periph_buses = PL08X_AHB1,
0087     }, {
0088         .bus_id = "ras0_tx",
0089         .min_signal = 1,
0090         .max_signal = 1,
0091         .muxval = 1,
0092         .periph_buses = PL08X_AHB1,
0093     }, {
0094         .bus_id = "ras1_rx",
0095         .min_signal = 2,
0096         .max_signal = 2,
0097         .muxval = 1,
0098         .periph_buses = PL08X_AHB1,
0099     }, {
0100         .bus_id = "ras1_tx",
0101         .min_signal = 3,
0102         .max_signal = 3,
0103         .muxval = 1,
0104         .periph_buses = PL08X_AHB1,
0105     }, {
0106         .bus_id = "ras2_rx",
0107         .min_signal = 4,
0108         .max_signal = 4,
0109         .muxval = 1,
0110         .periph_buses = PL08X_AHB1,
0111     }, {
0112         .bus_id = "ras2_tx",
0113         .min_signal = 5,
0114         .max_signal = 5,
0115         .muxval = 1,
0116         .periph_buses = PL08X_AHB1,
0117     }, {
0118         .bus_id = "ras3_rx",
0119         .min_signal = 6,
0120         .max_signal = 6,
0121         .muxval = 1,
0122         .periph_buses = PL08X_AHB1,
0123     }, {
0124         .bus_id = "ras3_tx",
0125         .min_signal = 7,
0126         .max_signal = 7,
0127         .muxval = 1,
0128         .periph_buses = PL08X_AHB1,
0129     }, {
0130         .bus_id = "ras4_rx",
0131         .min_signal = 8,
0132         .max_signal = 8,
0133         .muxval = 1,
0134         .periph_buses = PL08X_AHB1,
0135     }, {
0136         .bus_id = "ras4_tx",
0137         .min_signal = 9,
0138         .max_signal = 9,
0139         .muxval = 1,
0140         .periph_buses = PL08X_AHB1,
0141     }, {
0142         .bus_id = "ras5_rx",
0143         .min_signal = 10,
0144         .max_signal = 10,
0145         .muxval = 1,
0146         .periph_buses = PL08X_AHB1,
0147     }, {
0148         .bus_id = "ras5_tx",
0149         .min_signal = 11,
0150         .max_signal = 11,
0151         .muxval = 1,
0152         .periph_buses = PL08X_AHB1,
0153     }, {
0154         .bus_id = "ras6_rx",
0155         .min_signal = 12,
0156         .max_signal = 12,
0157         .muxval = 1,
0158         .periph_buses = PL08X_AHB1,
0159     }, {
0160         .bus_id = "ras6_tx",
0161         .min_signal = 13,
0162         .max_signal = 13,
0163         .muxval = 1,
0164         .periph_buses = PL08X_AHB1,
0165     }, {
0166         .bus_id = "ras7_rx",
0167         .min_signal = 14,
0168         .max_signal = 14,
0169         .muxval = 1,
0170         .periph_buses = PL08X_AHB1,
0171     }, {
0172         .bus_id = "ras7_tx",
0173         .min_signal = 15,
0174         .max_signal = 15,
0175         .muxval = 1,
0176         .periph_buses = PL08X_AHB1,
0177     },
0178 };
0179 
0180 /* Add SPEAr300 auxdata to pass platform data */
0181 static struct of_dev_auxdata spear300_auxdata_lookup[] __initdata = {
0182     OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL,
0183             &pl022_plat_data),
0184     OF_DEV_AUXDATA("arm,pl080", SPEAR_ICM3_DMA_BASE, NULL,
0185             &pl080_plat_data),
0186     {}
0187 };
0188 
0189 static void __init spear300_dt_init(void)
0190 {
0191     pl080_plat_data.slave_channels = spear300_dma_info;
0192     pl080_plat_data.num_slave_channels = ARRAY_SIZE(spear300_dma_info);
0193 
0194     of_platform_default_populate(NULL, spear300_auxdata_lookup, NULL);
0195 }
0196 
0197 static const char * const spear300_dt_board_compat[] = {
0198     "st,spear300",
0199     "st,spear300-evb",
0200     NULL,
0201 };
0202 
0203 static void __init spear300_map_io(void)
0204 {
0205     spear3xx_map_io();
0206 }
0207 
0208 DT_MACHINE_START(SPEAR300_DT, "ST SPEAr300 SoC with Flattened Device Tree")
0209     .map_io     =   spear300_map_io,
0210     .init_time  =   spear3xx_timer_init,
0211     .init_machine   =   spear300_dt_init,
0212     .restart    =   spear_restart,
0213     .dt_compat  =   spear300_dt_board_compat,
0214 MACHINE_END