Open main menu

DAVE Developer's Wiki β

Changes

Enabling SPI1 on Linux (Diva)

3,574 bytes added, 07:33, 1 July 2013
m
Linux kernel patches
{{ImportantMessage|text=The patches below applies to DIVELK 1.0.0 Linux source tree.}}
 
==== Option 1 ====
The files <code>arch/arm/mach-omap2/board-diva.c</code> and <code>arch/arm/mach-omap2/diva_pinmux_table.h</code> must be modified according to the following patches:
* the following mux configurations are un-tested but are left here for
* reference. They are all comment-out to avoid "defined but not used" warning
</diff>
 
The kernel must be rebuilt to make these modifications effective.
 
 
==== Option 2 ====
 
The files <code>arch/arm/mach-omap2/board-diva.c</code> and <code>arch/arm/mach-omap2/diva_pinmux_table.h</code> must be modified according to the following patches:
 
<diff>
diff --git a/arch/arm/mach-omap2/board-diva.c b/arch/arm/mach-omap2/board-diva.c
index 42898e9..8f7810d 100644
--- a/arch/arm/mach-omap2/board-diva.c
+++ b/arch/arm/mach-omap2/board-diva.c
@@ -356,6 +356,30 @@ static void spi0_init(int evm_id, int profile)
ARRAY_SIZE(diva_spi0_slave_info));
}
+/* -------------- SPI 1 Platform Data -----------------------------*/
+struct spi_board_info __initdata diva_spi1_slave_info[] = {
+ {
+ .modalias = "spidev",
+ .max_speed_hz = 2000000, /* max spi clock (SCK) speed in HZ */
+ .bus_num = 2,
+ .chip_select = 0,
+ },
+ {
+ .modalias = "spidev",
+ .max_speed_hz = 2000000, /* max spi clock (SCK) speed in HZ */
+ .bus_num = 2,
+ .chip_select = 1,
+ },
+};
+
+/* setup spi1 */
+
+static void spi1_init(int evm_id, int profile)
+{
+ setup_pin_mux(spi1_pin_mux);
+ spi_register_board_info(diva_spi1_slave_info,
+ ARRAY_SIZE(diva_spi1_slave_info));
+}
/* ----------- NAND Init ---------------------------------------*/
@@ -872,11 +896,12 @@ static struct evm_dev_cfg diva_dev_cfg[] = {
{mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{rmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{spi0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
+ {spi1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mfd_tscadc_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {mcasp0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
+ //{mcasp0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{w1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
</diff>
 
<diff>
diff --git a/arch/arm/mach-omap2/diva_pinmux_table.h b/arch/arm/mach-omap2/diva_pinmux_table.h
index f6647b0..d2722a3 100644
--- a/arch/arm/mach-omap2/diva_pinmux_table.h
+++ b/arch/arm/mach-omap2/diva_pinmux_table.h
@@ -179,6 +179,19 @@ static struct pinmux_config w1_gpio_pin_mux[] = {
{NULL, 0},
};
+/* Module pin mux for SPI1 */
+
+
+static struct pinmux_config spi1_pin_mux[] = {
+ {"mcasp0_aclkx.spi1_sclk", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL | AM33XX_INPUT_EN}, // clock
+ {"mcasp0_fsx.spi1_d0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL | AM33XX_PULL_UP | AM33XX_INPUT_EN}, // d0
+ {"mcasp0_axr0.spi1_d1", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL | AM33XX_INPUT_EN}, // d1
+ {"mcasp0_ahclkr.spi1_cs0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL | AM33XX_PULL_UP | AM33XX_INPUT_EN}, // cs0
+ {"xdma_event_intr0.spi1_cs1", OMAP_MUX_MODE4 | AM33XX_PULL_ENBL | AM33XX_PULL_UP | AM33XX_INPUT_EN}, // cs1
+ {NULL, 0},
+};
+
+
/*
* the following mux configurations are un-tested but are left here for
* reference. They are all comment-out to avoid "defined but not used" warning
@@ -187,7 +200,7 @@ static struct pinmux_config w1_gpio_pin_mux[] = {
#ifdef UNUSED_DIVA_PINMUX
/* Module pin mux for SPI flash */
-static struct pinmux_config spi1_pin_mux[] = {
+/*static struct pinmux_config spi1_pin_mux[] = {
{"mcasp0_aclkx.spi1_sclk", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL
| AM33XX_INPUT_EN},
{"mcasp0_fsx.spi1_d0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL
@@ -197,7 +210,7 @@ static struct pinmux_config spi1_pin_mux[] = {
{"mcasp0_ahclkr.spi1_cs0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL
| AM33XX_PULL_UP | AM33XX_INPUT_EN},
{NULL, 0},
-};
+};*/
/* Module pin mux for rgmii1 */
static struct pinmux_config rgmii1_pin_mux[] = {
</diff>