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

Commit 7536cf99 authored by Uwe Kleine-König's avatar Uwe Kleine-König
Browse files

ARM: imx: dynamically register spi_imx devices (imx27)

parent 63ddc5b0
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ config MACH_PCM038
	bool "Phytec phyCORE-i.MX27 CPU module (pcm038)"
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SPI_IMX
	select MXC_ULPI if USB_ULPI
	help
	  Include support for phyCORE-i.MX27 (aka pcm038) platform. This
@@ -134,6 +135,7 @@ choice
config MACH_EUKREA_MBIMX27_BASEBOARD
	prompt "Eukrea MBIMX27 development board"
	bool
	select IMX_HAVE_PLATFORM_SPI_IMX
	help
	  This adds board specific devices that can be found on Eukrea's
	  MBIMX27 evaluation board.
@@ -156,6 +158,7 @@ config MACH_PCA100
	bool "Phytec phyCARD-s (pca100)"
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SPI_IMX
	select MXC_ULPI if USB_ULPI
	help
	  Include support for phyCARD-s (aka pca100) platform. This
+7 −0
Original line number Diff line number Diff line
@@ -16,3 +16,10 @@

#define imx27_add_mxc_nand(pdata)	\
	imx_add_mxc_nand_v1(MX27_NFC_BASE_ADDR, MX27_INT_NANDFC, pdata)

#define imx27_add_spi_imx0(pdata)	\
	imx_add_spi_imx(0, MX27_CSPI1_BASE_ADDR, SZ_4K, MX27_INT_CSPI1, pdata)
#define imx27_add_spi_imx1(pdata)	\
	imx_add_spi_imx(1, MX27_CSPI2_BASE_ADDR, SZ_4K, MX27_INT_CSPI2, pdata)
#define imx27_add_spi_imx2(pdata)	\
	imx_add_spi_imx(2, MX27_CSPI3_BASE_ADDR, SZ_4K, MX27_INT_CSPI3, pdata)
+0 −33
Original line number Diff line number Diff line
@@ -218,39 +218,6 @@ int __init imx1_register_gpios(void)
#endif

#if defined(CONFIG_MACH_MX21) || defined(CONFIG_MACH_MX27)
/*
 * SPI master controller
 *
 * - i.MX1: 2 channel (slighly different register setting)
 * - i.MX21: 2 channel
 * - i.MX27: 3 channel
 */
#ifdef CONFIG_MACH_MX27
#define DEFINE_IMX_SPI_DEVICE(n, baseaddr, irq)					\
	static struct resource mxc_spi_resources ## n[] = {			\
		{								\
			.start = baseaddr,					\
			.end = baseaddr + SZ_4K - 1,				\
			.flags = IORESOURCE_MEM,				\
		}, {								\
			.start = irq,						\
			.end = irq,						\
			.flags = IORESOURCE_IRQ,				\
		},								\
	};									\
										\
	struct platform_device mxc_spi_device ## n = {				\
		.name = "spi_imx",						\
		.id = n,							\
		.num_resources = ARRAY_SIZE(mxc_spi_resources ## n),		\
		.resource = mxc_spi_resources ## n,				\
	}

DEFINE_IMX_SPI_DEVICE(0, MX2x_CSPI1_BASE_ADDR, MX2x_INT_CSPI1);
DEFINE_IMX_SPI_DEVICE(1, MX2x_CSPI2_BASE_ADDR, MX2x_INT_CSPI2);
DEFINE_IMX_SPI_DEVICE(2, MX27_CSPI3_BASE_ADDR, MX27_INT_CSPI3);
#endif

/*
 * General Purpose Timer
 * - i.MX21: 3 timers
+0 −5
Original line number Diff line number Diff line
@@ -34,11 +34,6 @@ extern struct platform_device mxc_otg_udc_device;
extern struct platform_device mxc_otg_host;
extern struct platform_device mxc_usbh1;
extern struct platform_device mxc_usbh2;
#ifdef CONFIG_MACH_MX27
extern struct platform_device mxc_spi_device0;
extern struct platform_device mxc_spi_device1;
extern struct platform_device mxc_spi_device2;
#endif
extern struct platform_device mx21_usbhc_device;
extern struct platform_device imx_ssi_device0;
extern struct platform_device imx_ssi_device1;
+3 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@
#include <mach/mmc.h>
#include <mach/imx-uart.h>

#include "devices-imx27.h"
#include "devices.h"

static int eukrea_mbimx27_pins[] = {
@@ -201,7 +202,7 @@ static struct spi_board_info eukrea_mbimx27_spi_board_info[] __initdata = {

static int eukrea_mbimx27_spi_cs[] = {GPIO_PORTD | 28};

static struct spi_imx_master eukrea_mbimx27_spi_0_data = {
static const struct spi_imx_master eukrea_mbimx27_spi0_data __initconst = {
	.chipselect	= eukrea_mbimx27_spi_cs,
	.num_chipselect = ARRAY_SIZE(eukrea_mbimx27_spi_cs),
};
@@ -233,7 +234,7 @@ void __init eukrea_mbimx27_baseboard_init(void)
	/* SPI and ADS7846 Touchscreen controler init */
	mxc_gpio_mode(GPIO_PORTD | 28 | GPIO_GPIO | GPIO_OUT);
	mxc_gpio_mode(GPIO_PORTD | 25 | GPIO_GPIO | GPIO_IN);
	mxc_register_device(&mxc_spi_device0, &eukrea_mbimx27_spi_0_data);
	imx27_add_spi_imx0(&eukrea_mbimx27_spi0_data);
	spi_register_board_info(eukrea_mbimx27_spi_board_info,
			ARRAY_SIZE(eukrea_mbimx27_spi_board_info));
	ads7846_dev_init();
Loading