mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 10:31:48 +00:00
ARM: imx: dynamically register spi_imx devices (imx27)
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
This commit is contained in:
parent
63ddc5b016
commit
7536cf992f
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -37,9 +37,6 @@
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/iomux-mx27.h>
|
||||
#include <asm/mach/time.h>
|
||||
#if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE)
|
||||
#include <mach/spi.h>
|
||||
#endif
|
||||
#include <mach/imx-uart.h>
|
||||
#include <mach/audmux.h>
|
||||
#include <mach/ssi.h>
|
||||
@ -192,7 +189,7 @@ static struct spi_board_info pca100_spi_board_info[] __initdata = {
|
||||
|
||||
static int pca100_spi_cs[] = {GPIO_PORTD + 28, GPIO_PORTD + 27};
|
||||
|
||||
static struct spi_imx_master pca100_spi_0_data = {
|
||||
static const struct spi_imx_master pca100_spi0_data __initconst = {
|
||||
.chipselect = pca100_spi_cs,
|
||||
.num_chipselect = ARRAY_SIZE(pca100_spi_cs),
|
||||
};
|
||||
@ -347,7 +344,7 @@ static void __init pca100_init(void)
|
||||
#if defined(CONFIG_SPI_IMX) || defined(CONFIG_SPI_IMX_MODULE)
|
||||
spi_register_board_info(pca100_spi_board_info,
|
||||
ARRAY_SIZE(pca100_spi_board_info));
|
||||
mxc_register_device(&mxc_spi_device0, &pca100_spi_0_data);
|
||||
imx27_add_spi_imx0(&pca100_spi_0_data);
|
||||
#endif
|
||||
|
||||
gpio_request(OTG_PHY_CS_GPIO, "usb-otg-cs");
|
||||
|
@ -38,7 +38,6 @@
|
||||
#include <mach/iomux-mx27.h>
|
||||
#include <mach/imx-uart.h>
|
||||
#include <mach/mxc_nand.h>
|
||||
#include <mach/spi.h>
|
||||
#include <mach/mxc_ehci.h>
|
||||
#include <mach/ulpi.h>
|
||||
|
||||
@ -216,7 +215,7 @@ static struct i2c_board_info pcm038_i2c_devices[] = {
|
||||
|
||||
static int pcm038_spi_cs[] = {GPIO_PORTD + 28};
|
||||
|
||||
static struct spi_imx_master pcm038_spi_0_data = {
|
||||
static const struct spi_imx_master pcm038_spi0_data __initconst = {
|
||||
.chipselect = pcm038_spi_cs,
|
||||
.num_chipselect = ARRAY_SIZE(pcm038_spi_cs),
|
||||
};
|
||||
@ -327,7 +326,7 @@ static void __init pcm038_init(void)
|
||||
/* MC13783 IRQ */
|
||||
mxc_gpio_mode(GPIO_PORTB | 23 | GPIO_GPIO | GPIO_IN);
|
||||
|
||||
mxc_register_device(&mxc_spi_device0, &pcm038_spi_0_data);
|
||||
imx27_add_spi_imx0(&pcm038_spi0_data);
|
||||
spi_register_board_info(pcm038_spi_board_info,
|
||||
ARRAY_SIZE(pcm038_spi_board_info));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user