Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit afeb36f1 authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'imx-eukrea' of git://git.pengutronix.de/git/imx/linux-2.6 into next/boards

ARM i.MX Eukrea Patches for 3.5

By Eric Bénard (11) and Denis Carikli (1)
via Sascha Hauer
* tag 'imx-eukrea' of git://git.pengutronix.de/git/imx/linux-2.6:
  ARM: imx: eukrea_mbimxsd rename to eukrea_mbimxsd51
  ARM: imx: eukrea_mbimxsd25: use IMX_GPIO_NR
  ARM: imx: eukrea_mbimxsd25: don't free twice GPIO_SWITCH1
  ARM: imx: eukrea_mbimxsd: add backlight and lcd support
  ARM: imx: eukrea_cpuimx51sd: support rev2 PCB
  ARM: imx: eukrea_mbimxsd: add audio support
  ARM: imx: eukrea_cpuimx51sd: add watchdog support
  ARM: imx: eukrea-cpuimx51: remove board
  ARM: imx: eukrea_mbimxsd35: add spi controler and spidev support
  ARM: imx: eukrea_cpuimx25: add watchdog support
  ARM: imx: eukrea_mbimxsd25: add spi controler and spidev support
  ARM: imx: eukrea_cpuimx25: enable workaround ENGcm09152
parents f1a9fa23 53a02d11
Loading
Loading
Loading
Loading
+5 −30
Original line number Original line Diff line number Diff line
@@ -163,6 +163,7 @@ config MACH_EUKREA_CPUIMX25SD
	select SOC_IMX25
	select SOC_IMX25
	select IMX_HAVE_PLATFORM_FLEXCAN
	select IMX_HAVE_PLATFORM_FLEXCAN
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMXDI_RTC
	select IMX_HAVE_PLATFORM_IMXDI_RTC
	select IMX_HAVE_PLATFORM_IMX_FB
	select IMX_HAVE_PLATFORM_IMX_FB
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_I2C
@@ -181,6 +182,7 @@ config MACH_EUKREA_MBIMXSD25_BASEBOARD
	bool "Eukrea MBIMXSD development board"
	bool "Eukrea MBIMXSD development board"
	select IMX_HAVE_PLATFORM_GPIO_KEYS
	select IMX_HAVE_PLATFORM_GPIO_KEYS
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_SPI_IMX
	select LEDS_GPIO_REGISTER
	select LEDS_GPIO_REGISTER
	help
	help
	  This adds board specific devices that can be found on Eukrea's
	  This adds board specific devices that can be found on Eukrea's
@@ -606,6 +608,7 @@ config MACH_EUKREA_MBIMXSD35_BASEBOARD
	select IMX_HAVE_PLATFORM_GPIO_KEYS
	select IMX_HAVE_PLATFORM_GPIO_KEYS
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_SPI_IMX
	select LEDS_GPIO_REGISTER
	select LEDS_GPIO_REGISTER
	help
	help
	  This adds board specific devices that can be found on Eukrea's
	  This adds board specific devices that can be found on Eukrea's
@@ -682,42 +685,13 @@ config MACH_MX51_3DS
	  Include support for MX51PDK (3DS) platform. This includes specific
	  Include support for MX51PDK (3DS) platform. This includes specific
	  configurations for the board and its peripherals.
	  configurations for the board and its peripherals.


config MACH_EUKREA_CPUIMX51
	bool "Support Eukrea CPUIMX51 module"
	select SOC_IMX51
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SPI_IMX
	help
	  Include support for Eukrea CPUIMX51 platform. This includes
	  specific configurations for the module and its peripherals.

choice
	prompt "Baseboard"
	depends on MACH_EUKREA_CPUIMX51
	default MACH_EUKREA_MBIMX51_BASEBOARD

config MACH_EUKREA_MBIMX51_BASEBOARD
	prompt "Eukrea MBIMX51 development board"
	bool
	select IMX_HAVE_PLATFORM_IMX_KEYPAD
	select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
	select LEDS_GPIO_REGISTER
	help
	  This adds board specific devices that can be found on Eukrea's
	  MBIMX51 evaluation board.

endchoice

config MACH_EUKREA_CPUIMX51SD
config MACH_EUKREA_CPUIMX51SD
	bool "Support Eukrea CPUIMX51SD module"
	bool "Support Eukrea CPUIMX51SD module"
	select SOC_IMX51
	select SOC_IMX51
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SPI_IMX
	select IMX_HAVE_PLATFORM_SPI_IMX
@@ -733,6 +707,7 @@ choice
config MACH_EUKREA_MBIMXSD51_BASEBOARD
config MACH_EUKREA_MBIMXSD51_BASEBOARD
	prompt "Eukrea MBIMXSD development board"
	prompt "Eukrea MBIMXSD development board"
	bool
	bool
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
	select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
	select LEDS_GPIO_REGISTER
	select LEDS_GPIO_REGISTER
	help
	help
+1 −3
Original line number Original line Diff line number Diff line
@@ -83,10 +83,8 @@ obj-$(CONFIG_MACH_MX53_EVK) += mach-mx53_evk.o
obj-$(CONFIG_MACH_MX53_SMD) += mach-mx53_smd.o
obj-$(CONFIG_MACH_MX53_SMD) += mach-mx53_smd.o
obj-$(CONFIG_MACH_MX53_LOCO) += mach-mx53_loco.o
obj-$(CONFIG_MACH_MX53_LOCO) += mach-mx53_loco.o
obj-$(CONFIG_MACH_MX53_ARD) += mach-mx53_ard.o
obj-$(CONFIG_MACH_MX53_ARD) += mach-mx53_ard.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += mach-cpuimx51.o
obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += mach-cpuimx51sd.o
obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += mach-cpuimx51sd.o
obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd-baseboard.o
obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd51-baseboard.o
obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o
obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o
obj-$(CONFIG_MACH_MX51_EFIKAMX) += mach-mx51_efikamx.o
obj-$(CONFIG_MACH_MX51_EFIKAMX) += mach-mx51_efikamx.o
obj-$(CONFIG_MACH_MX51_EFIKASB) += mach-mx51_efikasb.o
obj-$(CONFIG_MACH_MX51_EFIKASB) += mach-mx51_efikasb.o
+0 −206
Original line number Original line Diff line number Diff line
/*
 *
 * Copyright (C) 2010 Eric Bénard <eric@eukrea.com>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/serial_8250.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
#include <linux/io.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/i2c/tsc2007.h>
#include <linux/leds.h>

#include <mach/common.h>
#include <mach/hardware.h>
#include <mach/iomux-mx51.h>

#include <asm/mach/arch.h>

#include "devices-imx51.h"

#define MBIMX51_TSC2007_GPIO	IMX_GPIO_NR(3, 30)
#define MBIMX51_LED0		IMX_GPIO_NR(3, 5)
#define MBIMX51_LED1		IMX_GPIO_NR(3, 6)
#define MBIMX51_LED2		IMX_GPIO_NR(3, 7)
#define MBIMX51_LED3		IMX_GPIO_NR(3, 8)

static const struct gpio_led mbimx51_leds[] __initconst = {
	{
		.name			= "led0",
		.default_trigger	= "heartbeat",
		.active_low		= 1,
		.gpio			= MBIMX51_LED0,
	},
	{
		.name			= "led1",
		.default_trigger	= "nand-disk",
		.active_low		= 1,
		.gpio			= MBIMX51_LED1,
	},
	{
		.name			= "led2",
		.default_trigger	= "mmc0",
		.active_low		= 1,
		.gpio			= MBIMX51_LED2,
	},
	{
		.name			= "led3",
		.default_trigger	= "default-on",
		.active_low		= 1,
		.gpio			= MBIMX51_LED3,
	},
};

static const struct gpio_led_platform_data mbimx51_leds_info __initconst = {
	.leds		= mbimx51_leds,
	.num_leds	= ARRAY_SIZE(mbimx51_leds),
};

static iomux_v3_cfg_t mbimx51_pads[] = {
	/* UART2 */
	MX51_PAD_UART2_RXD__UART2_RXD,
	MX51_PAD_UART2_TXD__UART2_TXD,

	/* UART3 */
	MX51_PAD_UART3_RXD__UART3_RXD,
	MX51_PAD_UART3_TXD__UART3_TXD,
	MX51_PAD_KEY_COL4__UART3_RTS,
	MX51_PAD_KEY_COL5__UART3_CTS,

	/* TSC2007 IRQ */
	MX51_PAD_NANDF_D10__GPIO3_30,

	/* LEDS */
	MX51_PAD_DISPB2_SER_DIN__GPIO3_5,
	MX51_PAD_DISPB2_SER_DIO__GPIO3_6,
	MX51_PAD_DISPB2_SER_CLK__GPIO3_7,
	MX51_PAD_DISPB2_SER_RS__GPIO3_8,

	/* KPP */
	MX51_PAD_KEY_ROW0__KEY_ROW0,
	MX51_PAD_KEY_ROW1__KEY_ROW1,
	MX51_PAD_KEY_ROW2__KEY_ROW2,
	MX51_PAD_KEY_ROW3__KEY_ROW3,
	MX51_PAD_KEY_COL0__KEY_COL0,
	MX51_PAD_KEY_COL1__KEY_COL1,
	MX51_PAD_KEY_COL2__KEY_COL2,
	MX51_PAD_KEY_COL3__KEY_COL3,

	/* SD 1 */
	MX51_PAD_SD1_CMD__SD1_CMD,
	MX51_PAD_SD1_CLK__SD1_CLK,
	MX51_PAD_SD1_DATA0__SD1_DATA0,
	MX51_PAD_SD1_DATA1__SD1_DATA1,
	MX51_PAD_SD1_DATA2__SD1_DATA2,
	MX51_PAD_SD1_DATA3__SD1_DATA3,

	/* SD 2 */
	MX51_PAD_SD2_CMD__SD2_CMD,
	MX51_PAD_SD2_CLK__SD2_CLK,
	MX51_PAD_SD2_DATA0__SD2_DATA0,
	MX51_PAD_SD2_DATA1__SD2_DATA1,
	MX51_PAD_SD2_DATA2__SD2_DATA2,
	MX51_PAD_SD2_DATA3__SD2_DATA3,
};

static const struct imxuart_platform_data uart_pdata __initconst = {
	.flags = IMXUART_HAVE_RTSCTS,
};

static int mbimx51_keymap[] = {
	KEY(0, 0, KEY_1),
	KEY(0, 1, KEY_2),
	KEY(0, 2, KEY_3),
	KEY(0, 3, KEY_UP),

	KEY(1, 0, KEY_4),
	KEY(1, 1, KEY_5),
	KEY(1, 2, KEY_6),
	KEY(1, 3, KEY_LEFT),

	KEY(2, 0, KEY_7),
	KEY(2, 1, KEY_8),
	KEY(2, 2, KEY_9),
	KEY(2, 3, KEY_RIGHT),

	KEY(3, 0, KEY_0),
	KEY(3, 1, KEY_DOWN),
	KEY(3, 2, KEY_ESC),
	KEY(3, 3, KEY_ENTER),
};

static const struct matrix_keymap_data mbimx51_map_data __initconst = {
	.keymap		= mbimx51_keymap,
	.keymap_size	= ARRAY_SIZE(mbimx51_keymap),
};

static int tsc2007_get_pendown_state(void)
{
	return !gpio_get_value(MBIMX51_TSC2007_GPIO);
}

struct tsc2007_platform_data tsc2007_data = {
	.model = 2007,
	.x_plate_ohms = 180,
	.get_pendown_state = tsc2007_get_pendown_state,
};

static struct i2c_board_info mbimx51_i2c_devices[] = {
	{
		I2C_BOARD_INFO("tsc2007", 0x49),
		.irq  = IMX_GPIO_TO_IRQ(MBIMX51_TSC2007_GPIO),
		.platform_data = &tsc2007_data,
	}, {
		I2C_BOARD_INFO("tlv320aic23", 0x1a),
	},
};

/*
 * baseboard initialization.
 */
void __init eukrea_mbimx51_baseboard_init(void)
{
	mxc_iomux_v3_setup_multiple_pads(mbimx51_pads,
					ARRAY_SIZE(mbimx51_pads));

	imx51_add_imx_uart(1, NULL);
	imx51_add_imx_uart(2, &uart_pdata);

	gpio_request(MBIMX51_LED0, "LED0");
	gpio_direction_output(MBIMX51_LED0, 1);
	gpio_free(MBIMX51_LED0);
	gpio_request(MBIMX51_LED1, "LED1");
	gpio_direction_output(MBIMX51_LED1, 1);
	gpio_free(MBIMX51_LED1);
	gpio_request(MBIMX51_LED2, "LED2");
	gpio_direction_output(MBIMX51_LED2, 1);
	gpio_free(MBIMX51_LED2);
	gpio_request(MBIMX51_LED3, "LED3");
	gpio_direction_output(MBIMX51_LED3, 1);
	gpio_free(MBIMX51_LED3);

	gpio_led_register_device(-1, &mbimx51_leds_info);

	imx51_add_imx_keypad(&mbimx51_map_data);

	gpio_request(MBIMX51_TSC2007_GPIO, "tsc2007_irq");
	gpio_direction_input(MBIMX51_TSC2007_GPIO);
	irq_set_irq_type(gpio_to_irq(MBIMX51_TSC2007_GPIO),
					IRQF_TRIGGER_FALLING);
	i2c_register_board_info(1, mbimx51_i2c_devices,
				ARRAY_SIZE(mbimx51_i2c_devices));

	imx51_add_sdhci_esdhc_imx(0, NULL);
	imx51_add_sdhci_esdhc_imx(1, NULL);
}
+46 −5
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@
#include <linux/leds.h>
#include <linux/leds.h>
#include <linux/platform_device.h>
#include <linux/platform_device.h>
#include <linux/input.h>
#include <linux/input.h>
#include <linux/spi/spi.h>
#include <video/platform_lcd.h>
#include <video/platform_lcd.h>


#include <mach/hardware.h>
#include <mach/hardware.h>
@@ -87,12 +88,22 @@ static iomux_v3_cfg_t eukrea_mbimxsd_pads[] = {
	/* CAN */
	/* CAN */
	MX25_PAD_GPIO_D__CAN2_RX,
	MX25_PAD_GPIO_D__CAN2_RX,
	MX25_PAD_GPIO_C__CAN2_TX,
	MX25_PAD_GPIO_C__CAN2_TX,
	/* SPI1 */
	MX25_PAD_CSPI1_MOSI__CSPI1_MOSI,
	MX25_PAD_CSPI1_MISO__CSPI1_MISO,
	MX25_PAD_CSPI1_SS0__GPIO_1_16,
	MX25_PAD_CSPI1_SS1__GPIO_1_17,
	MX25_PAD_CSPI1_SCLK__CSPI1_SCLK,
	MX25_PAD_CSPI1_RDY__GPIO_2_22,
};
};


#define GPIO_LED1	83
#define GPIO_LED1		IMX_GPIO_NR(3, 19)
#define GPIO_SWITCH1	82
#define GPIO_SWITCH1	IMX_GPIO_NR(3, 18)
#define GPIO_SD1CD	52
#define GPIO_SD1CD		IMX_GPIO_NR(2, 20)
#define GPIO_LCDPWR	26
#define GPIO_LCDPWR		IMX_GPIO_NR(1, 26)
#define	GPIO_SPI1_SS0	IMX_GPIO_NR(1, 16)
#define	GPIO_SPI1_SS1	IMX_GPIO_NR(1, 17)
#define	GPIO_SPI1_IRQ	IMX_GPIO_NR(2, 22)


static struct imx_fb_videomode eukrea_mximxsd_modes[] = {
static struct imx_fb_videomode eukrea_mximxsd_modes[] = {
	{
	{
@@ -228,6 +239,30 @@ static struct esdhc_platform_data sd1_pdata = {
	.wp_type = ESDHC_WP_NONE,
	.wp_type = ESDHC_WP_NONE,
};
};


static struct spi_board_info eukrea_mbimxsd25_spi_board_info[] __initdata = {
	{
		.modalias = "spidev",
		.max_speed_hz = 20000000,
		.bus_num = 0,
		.chip_select = 0,
		.mode = SPI_MODE_0,
	},
	{
		.modalias = "spidev",
		.max_speed_hz = 20000000,
		.bus_num = 0,
		.chip_select = 1,
		.mode = SPI_MODE_0,
	},
};

static int eukrea_mbimxsd25_spi_cs[] = {GPIO_SPI1_SS0, GPIO_SPI1_SS1};

static const struct spi_imx_master eukrea_mbimxsd25_spi0_data __initconst = {
	.chipselect     = eukrea_mbimxsd25_spi_cs,
	.num_chipselect = ARRAY_SIZE(eukrea_mbimxsd25_spi_cs),
};

/*
/*
 * system init for baseboard usage. Will be called by cpuimx25 init.
 * system init for baseboard usage. Will be called by cpuimx25 init.
 *
 *
@@ -257,11 +292,17 @@ void __init eukrea_mbimxsd25_baseboard_init(void)


	gpio_request(GPIO_LCDPWR, "LCDPWR");
	gpio_request(GPIO_LCDPWR, "LCDPWR");
	gpio_direction_output(GPIO_LCDPWR, 1);
	gpio_direction_output(GPIO_LCDPWR, 1);
	gpio_free(GPIO_SWITCH1);


	i2c_register_board_info(0, eukrea_mbimxsd_i2c_devices,
	i2c_register_board_info(0, eukrea_mbimxsd_i2c_devices,
				ARRAY_SIZE(eukrea_mbimxsd_i2c_devices));
				ARRAY_SIZE(eukrea_mbimxsd_i2c_devices));


	gpio_request(GPIO_SPI1_IRQ, "SPI1_IRQ");
	gpio_direction_input(GPIO_SPI1_IRQ);
	gpio_free(GPIO_SPI1_IRQ);
	imx25_add_spi_imx0(&eukrea_mbimxsd25_spi0_data);
	spi_register_board_info(eukrea_mbimxsd25_spi_board_info,
		ARRAY_SIZE(eukrea_mbimxsd25_spi_board_info));

	platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
	platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
	gpio_led_register_device(-1, &eukrea_mbimxsd_led_info);
	gpio_led_register_device(-1, &eukrea_mbimxsd_led_info);
	imx_add_gpio_keys(&eukrea_mbimxsd_button_data);
	imx_add_gpio_keys(&eukrea_mbimxsd_button_data);
+42 −0
Original line number Original line Diff line number Diff line
@@ -27,6 +27,7 @@
#include <linux/leds.h>
#include <linux/leds.h>
#include <linux/platform_device.h>
#include <linux/platform_device.h>
#include <linux/input.h>
#include <linux/input.h>
#include <linux/spi/spi.h>
#include <video/platform_lcd.h>
#include <video/platform_lcd.h>
#include <linux/i2c.h>
#include <linux/i2c.h>


@@ -158,12 +159,22 @@ static iomux_v3_cfg_t eukrea_mbimxsd_pads[] = {
	MX35_PAD_SD1_DATA3__ESDHC1_DAT3,
	MX35_PAD_SD1_DATA3__ESDHC1_DAT3,
	/* SD1 CD */
	/* SD1 CD */
	MX35_PAD_LD18__GPIO3_24,
	MX35_PAD_LD18__GPIO3_24,
	/* SPI */
	MX35_PAD_CSPI1_MOSI__CSPI1_MOSI,
	MX35_PAD_CSPI1_MISO__CSPI1_MISO,
	MX35_PAD_CSPI1_SS0__GPIO1_18,
	MX35_PAD_CSPI1_SS1__GPIO1_19,
	MX35_PAD_CSPI1_SCLK__CSPI1_SCLK,
	MX35_PAD_CSPI1_SPI_RDY__GPIO3_5,
};
};


#define GPIO_LED1	IMX_GPIO_NR(3, 29)
#define GPIO_LED1	IMX_GPIO_NR(3, 29)
#define GPIO_SWITCH1	IMX_GPIO_NR(3, 25)
#define GPIO_SWITCH1	IMX_GPIO_NR(3, 25)
#define GPIO_LCDPWR	IMX_GPIO_NR(1, 4)
#define GPIO_LCDPWR	IMX_GPIO_NR(1, 4)
#define GPIO_SD1CD	IMX_GPIO_NR(3, 24)
#define GPIO_SD1CD	IMX_GPIO_NR(3, 24)
#define	GPIO_SPI1_SS0	IMX_GPIO_NR(1, 18)
#define	GPIO_SPI1_SS1	IMX_GPIO_NR(1, 19)
#define	GPIO_SPI1_IRQ	IMX_GPIO_NR(3, 5)


static void eukrea_mbimxsd_lcd_power_set(struct plat_lcd_data *pd,
static void eukrea_mbimxsd_lcd_power_set(struct plat_lcd_data *pd,
				   unsigned int power)
				   unsigned int power)
@@ -239,6 +250,30 @@ static struct esdhc_platform_data sd1_pdata = {
	.wp_type = ESDHC_WP_NONE,
	.wp_type = ESDHC_WP_NONE,
};
};


static struct spi_board_info eukrea_mbimxsd35_spi_board_info[] __initdata = {
	{
		.modalias = "spidev",
		.max_speed_hz = 20000000,
		.bus_num = 0,
		.chip_select = 0,
		.mode = SPI_MODE_0,
	},
	{
		.modalias = "spidev",
		.max_speed_hz = 20000000,
		.bus_num = 0,
		.chip_select = 1,
		.mode = SPI_MODE_0,
	},
};

static int eukrea_mbimxsd35_spi_cs[] = {GPIO_SPI1_SS0, GPIO_SPI1_SS1};

static const struct spi_imx_master eukrea_mbimxsd35_spi0_data __initconst = {
	.chipselect     = eukrea_mbimxsd35_spi_cs,
	.num_chipselect = ARRAY_SIZE(eukrea_mbimxsd35_spi_cs),
};

/*
/*
 * system init for baseboard usage. Will be called by cpuimx35 init.
 * system init for baseboard usage. Will be called by cpuimx35 init.
 *
 *
@@ -274,6 +309,13 @@ void __init eukrea_mbimxsd35_baseboard_init(void)
	i2c_register_board_info(0, eukrea_mbimxsd_i2c_devices,
	i2c_register_board_info(0, eukrea_mbimxsd_i2c_devices,
				ARRAY_SIZE(eukrea_mbimxsd_i2c_devices));
				ARRAY_SIZE(eukrea_mbimxsd_i2c_devices));


	gpio_request(GPIO_SPI1_IRQ, "SPI1_IRQ");
	gpio_direction_input(GPIO_SPI1_IRQ);
	gpio_free(GPIO_SPI1_IRQ);
	imx35_add_spi_imx0(&eukrea_mbimxsd35_spi0_data);
	spi_register_board_info(eukrea_mbimxsd35_spi_board_info,
		ARRAY_SIZE(eukrea_mbimxsd35_spi_board_info));

	platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
	platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
	gpio_led_register_device(-1, &eukrea_mbimxsd_led_info);
	gpio_led_register_device(-1, &eukrea_mbimxsd_led_info);
	imx_add_gpio_keys(&eukrea_mbimxsd_button_data);
	imx_add_gpio_keys(&eukrea_mbimxsd_button_data);
Loading