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 Original line Diff line number Diff line
@@ -92,6 +92,7 @@ config MACH_PCM038
	bool "Phytec phyCORE-i.MX27 CPU module (pcm038)"
	bool "Phytec phyCORE-i.MX27 CPU module (pcm038)"
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SPI_IMX
	select MXC_ULPI if USB_ULPI
	select MXC_ULPI if USB_ULPI
	help
	help
	  Include support for phyCORE-i.MX27 (aka pcm038) platform. This
	  Include support for phyCORE-i.MX27 (aka pcm038) platform. This
@@ -134,6 +135,7 @@ choice
config MACH_EUKREA_MBIMX27_BASEBOARD
config MACH_EUKREA_MBIMX27_BASEBOARD
	prompt "Eukrea MBIMX27 development board"
	prompt "Eukrea MBIMX27 development board"
	bool
	bool
	select IMX_HAVE_PLATFORM_SPI_IMX
	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
	  MBIMX27 evaluation board.
	  MBIMX27 evaluation board.
@@ -156,6 +158,7 @@ config MACH_PCA100
	bool "Phytec phyCARD-s (pca100)"
	bool "Phytec phyCARD-s (pca100)"
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SPI_IMX
	select MXC_ULPI if USB_ULPI
	select MXC_ULPI if USB_ULPI
	help
	help
	  Include support for phyCARD-s (aka pca100) platform. This
	  Include support for phyCARD-s (aka pca100) platform. This
+7 −0
Original line number Original line Diff line number Diff line
@@ -16,3 +16,10 @@


#define imx27_add_mxc_nand(pdata)	\
#define imx27_add_mxc_nand(pdata)	\
	imx_add_mxc_nand_v1(MX27_NFC_BASE_ADDR, MX27_INT_NANDFC, 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 Original line Diff line number Diff line
@@ -218,39 +218,6 @@ int __init imx1_register_gpios(void)
#endif
#endif


#if defined(CONFIG_MACH_MX21) || defined(CONFIG_MACH_MX27)
#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
 * General Purpose Timer
 * - i.MX21: 3 timers
 * - i.MX21: 3 timers
+0 −5
Original line number Original line 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_otg_host;
extern struct platform_device mxc_usbh1;
extern struct platform_device mxc_usbh1;
extern struct platform_device mxc_usbh2;
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 mx21_usbhc_device;
extern struct platform_device imx_ssi_device0;
extern struct platform_device imx_ssi_device0;
extern struct platform_device imx_ssi_device1;
extern struct platform_device imx_ssi_device1;
+3 −2
Original line number Original line Diff line number Diff line
@@ -34,6 +34,7 @@
#include <mach/mmc.h>
#include <mach/mmc.h>
#include <mach/imx-uart.h>
#include <mach/imx-uart.h>


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


static int eukrea_mbimx27_pins[] = {
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 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,
	.chipselect	= eukrea_mbimx27_spi_cs,
	.num_chipselect = ARRAY_SIZE(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 */
	/* SPI and ADS7846 Touchscreen controler init */
	mxc_gpio_mode(GPIO_PORTD | 28 | GPIO_GPIO | GPIO_OUT);
	mxc_gpio_mode(GPIO_PORTD | 28 | GPIO_GPIO | GPIO_OUT);
	mxc_gpio_mode(GPIO_PORTD | 25 | GPIO_GPIO | GPIO_IN);
	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,
	spi_register_board_info(eukrea_mbimx27_spi_board_info,
			ARRAY_SIZE(eukrea_mbimx27_spi_board_info));
			ARRAY_SIZE(eukrea_mbimx27_spi_board_info));
	ads7846_dev_init();
	ads7846_dev_init();
Loading