]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/kernel/omap/beagle/expansion/0007-Beagle-expansion-add-beaglefpga.patch
asterisk addon: update to 11.13.1
[ipfire-2.x.git] / src / patches / kernel / omap / beagle / expansion / 0007-Beagle-expansion-add-beaglefpga.patch
CommitLineData
d006af40
AF
1From 0c361e9db10f9ec3598bf062a605a451857ee06e Mon Sep 17 00:00:00 2001
2From: Bas van der Doorn <bas@doornvd.com>
3Date: Tue, 11 Dec 2012 06:52:22 -0600
4Subject: [PATCH 07/10] Beagle: expansion: add beaglefpga
5
6Added SPI dev and McBSP 3 mux when FPGA is detected
7
8Signed-off-by: Bas van der Doorn <bas@doornvd.com>
9Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
10---
11 arch/arm/mach-omap2/board-omap3beagle.c | 76 +++++++++++++++++++++++++++++++
12 1 file changed, 76 insertions(+)
13
14diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
15index 2322d6c..c257f3c 100644
16--- a/arch/arm/mach-omap2/board-omap3beagle.c
17+++ b/arch/arm/mach-omap2/board-omap3beagle.c
18@@ -44,6 +44,7 @@
19 #include <asm/mach/arch.h>
20 #include <asm/mach/map.h>
21 #include <asm/mach/flash.h>
22+#include <linux/spi/spi.h>
23
24 #include <video/omapdss.h>
25 #include <video/omap-panel-data.h>
26@@ -916,6 +917,68 @@ static int __init beagle_opp_init(void)
27 }
28 omap_device_initcall(beagle_opp_init);
29
30+static void __init omap3_beagle_config_mcspi3_mux(void)
31+{
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);
38+}
39+
40+static void __init omap3_beagle_config_mcspi4_mux(void)
41+{
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);
47+}
48+
49+static void __init omap3_beagle_config_mcbsp3_mux(void)
50+{
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);
56+}
57+
58+static void __init omap3_beagle_config_fpga_mux(void)
59+{
60+ omap3_beagle_config_mcbsp3_mux();
61+ omap3_beagle_config_mcspi3_mux();
62+ omap3_beagle_config_mcspi4_mux();
63+}
64+
65+static struct spi_board_info beagle_mcspi_board_info[] = {
66+ /* spi 3.0 */
67+ {
68+ .modalias = "spidev",
69+ .max_speed_hz = 48000000, //48 Mbps
70+ .bus_num = 3,
71+ .chip_select = 0,
72+ .mode = SPI_MODE_1,
73+ },
74+ /* spi 3.1 */
75+ {
76+ .modalias = "spidev",
77+ .max_speed_hz = 48000000, //48 Mbps
78+ .bus_num = 3,
79+ .chip_select = 1,
80+ .mode = SPI_MODE_1,
81+ },
82+ /* spi 4.0 */
83+ {
84+ .modalias = "spidev",
85+ .max_speed_hz = 48000000, //48 Mbps
86+ .bus_num = 4,
87+ .chip_select = 0,
88+ .mode = SPI_MODE_1,
89+ },
90+};
91+
92 static void __init omap3_beagle_init(void)
93 {
94 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
95@@ -1041,6 +1104,19 @@ static void __init omap3_beagle_init(void)
96 #endif
97 }
98
99+ if (!strcmp(expansionboard_name, "beaglefpga"))
100+ {
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");
103+
104+ /* FPGA pin settings configure McSPI 3, McSPI 4 and McBSP 3 */
105+ omap3_beagle_config_fpga_mux();
106+
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));
109+ #endif
110+ }
111+
112 if (!strcmp(expansionboard2_name, "bbtoys-ulcd"))
113 {
114 #if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2007)
115--
1161.7.10.4
117