1 From 0c361e9db10f9ec3598bf062a605a451857ee06e Mon Sep 17 00:00:00 2001
2 From: Bas van der Doorn <bas@doornvd.com>
3 Date: Tue, 11 Dec 2012 06:52:22 -0600
4 Subject: [PATCH 07/10] Beagle: expansion: add beaglefpga
6 Added SPI dev and McBSP 3 mux when FPGA is detected
8 Signed-off-by: Bas van der Doorn <bas@doornvd.com>
9 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
11 arch/arm/mach-omap2/board-omap3beagle.c | 76 +++++++++++++++++++++++++++++++
12 1 file changed, 76 insertions(+)
14 diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
15 index 2322d6c..c257f3c 100644
16 --- a/arch/arm/mach-omap2/board-omap3beagle.c
17 +++ b/arch/arm/mach-omap2/board-omap3beagle.c
19 #include <asm/mach/arch.h>
20 #include <asm/mach/map.h>
21 #include <asm/mach/flash.h>
22 +#include <linux/spi/spi.h>
24 #include <video/omapdss.h>
25 #include <video/omap-panel-data.h>
26 @@ -916,6 +917,68 @@ static int __init beagle_opp_init(void)
28 omap_device_initcall(beagle_opp_init);
30 +static void __init omap3_beagle_config_mcspi3_mux(void)
32 + /* NOTE: Clock pins need to be in input mode */
33 + omap_mux_init_signal("sdmmc2_clk.mcspi3_clk", OMAP_PIN_INPUT);
34 + omap_mux_init_signal("sdmmc2_cmd.mcspi3_simo", OMAP_PIN_OUTPUT);
35 + omap_mux_init_signal("sdmmc2_dat0.mcspi3_somi", OMAP_PIN_INPUT_PULLUP);
36 + omap_mux_init_signal("sdmmc2_dat2.mcspi3_cs1", OMAP_PIN_OUTPUT);
37 + omap_mux_init_signal("sdmmc2_dat3.mcspi3_cs0", OMAP_PIN_OUTPUT);
40 +static void __init omap3_beagle_config_mcspi4_mux(void)
42 + /* NOTE: Clock pins need to be in input mode */
43 + omap_mux_init_signal("mcbsp1_clkr.mcspi4_clk", OMAP_PIN_INPUT);
44 + omap_mux_init_signal("mcbsp1_dx.mcspi4_simo", OMAP_PIN_OUTPUT);
45 + omap_mux_init_signal("mcbsp1_dr.mcspi4_somi", OMAP_PIN_INPUT_PULLUP);
46 + omap_mux_init_signal("mcbsp1_fsx.mcspi4_cs0", OMAP_PIN_OUTPUT);
49 +static void __init omap3_beagle_config_mcbsp3_mux(void)
51 + omap_mux_init_signal("mcbsp3_fsx.uart2_rx", OMAP_PIN_INPUT);
52 + omap_mux_init_signal("uart2_cts.mcbsp3_dx", OMAP_PIN_OUTPUT);
53 + omap_mux_init_signal("uart2_rts.mcbsp3_dr", OMAP_PIN_INPUT);
54 + /* NOTE: Clock pins need to be in input mode */
55 + omap_mux_init_signal("uart2_tx.mcbsp3_clkx", OMAP_PIN_INPUT);
58 +static void __init omap3_beagle_config_fpga_mux(void)
60 + omap3_beagle_config_mcbsp3_mux();
61 + omap3_beagle_config_mcspi3_mux();
62 + omap3_beagle_config_mcspi4_mux();
65 +static struct spi_board_info beagle_mcspi_board_info[] = {
68 + .modalias = "spidev",
69 + .max_speed_hz = 48000000, //48 Mbps
76 + .modalias = "spidev",
77 + .max_speed_hz = 48000000, //48 Mbps
84 + .modalias = "spidev",
85 + .max_speed_hz = 48000000, //48 Mbps
92 static void __init omap3_beagle_init(void)
94 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
95 @@ -1041,6 +1104,19 @@ static void __init omap3_beagle_init(void)
99 + if (!strcmp(expansionboard_name, "beaglefpga"))
101 + #if IS_ENABLED(CONFIG_SPI_SPIDEV)
102 + pr_info("Beagle expansionboard: enabling SPIdev for McSPI3/4 and pin muxing for McBSP3 slave mode\n");
104 + /* FPGA pin settings configure McSPI 3, McSPI 4 and McBSP 3 */
105 + omap3_beagle_config_fpga_mux();
107 + /* register McSPI 3 and McSPI 4 for FPGA programming and control */
108 + spi_register_board_info(beagle_mcspi_board_info, ARRAY_SIZE(beagle_mcspi_board_info));
112 if (!strcmp(expansionboard2_name, "bbtoys-ulcd"))
114 #if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2007)