]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/patches/kernel/omap/beagle/expansion/0007-Beagle-expansion-add-beaglefpga.patch
Merge branch 'next' of ssh://git.ipfire.org/pub/git/ipfire-2.x into next
[people/teissler/ipfire-2.x.git] / src / patches / kernel / omap / beagle / expansion / 0007-Beagle-expansion-add-beaglefpga.patch
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
5
6 Added SPI dev and McBSP 3 mux when FPGA is detected
7
8 Signed-off-by: Bas van der Doorn <bas@doornvd.com>
9 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
10 ---
11 arch/arm/mach-omap2/board-omap3beagle.c | 76 +++++++++++++++++++++++++++++++
12 1 file changed, 76 insertions(+)
13
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
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 --
116 1.7.10.4
117