ARM: imx: dynamically register spi_imx devices (imx31)

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
This commit is contained in:
Uwe Kleine-König 2010-06-22 10:09:14 +02:00
parent 7536cf992f
commit 06606ff130
9 changed files with 30 additions and 19 deletions

View file

@ -55,6 +55,7 @@ config MACH_MX31LITE
select ARCH_MX31 select ARCH_MX31
select MXC_ULPI if USB_ULPI select MXC_ULPI if USB_ULPI
select IMX_HAVE_PLATFORM_MXC_NAND select IMX_HAVE_PLATFORM_MXC_NAND
select IMX_HAVE_PLATFORM_SPI_IMX
help help
Include support for MX31 LITEKIT platform. This includes specific Include support for MX31 LITEKIT platform. This includes specific
configurations for the board and its peripherals. configurations for the board and its peripherals.
@ -63,6 +64,7 @@ config MACH_MX31_3DS
bool "Support MX31PDK (3DS)" bool "Support MX31PDK (3DS)"
select ARCH_MX31 select ARCH_MX31
select IMX_HAVE_PLATFORM_MXC_NAND select IMX_HAVE_PLATFORM_MXC_NAND
select IMX_HAVE_PLATFORM_SPI_IMX
help help
Include support for MX31PDK (3DS) platform. This includes specific Include support for MX31PDK (3DS) platform. This includes specific
configurations for the board and its peripherals. configurations for the board and its peripherals.
@ -80,6 +82,7 @@ config MACH_MX31MOBOARD
bool "Support mx31moboard platforms (EPFL Mobots group)" bool "Support mx31moboard platforms (EPFL Mobots group)"
select ARCH_MX31 select ARCH_MX31
select IMX_HAVE_PLATFORM_IMX_I2C select IMX_HAVE_PLATFORM_IMX_I2C
select IMX_HAVE_PLATFORM_SPI_IMX
select MXC_ULPI if USB_ULPI select MXC_ULPI if USB_ULPI
help help
Include support for mx31moboard platform. This includes specific Include support for mx31moboard platform. This includes specific
@ -88,6 +91,7 @@ config MACH_MX31MOBOARD
config MACH_MX31LILLY config MACH_MX31LILLY
bool "Support MX31 LILLY-1131 platforms (INCO startec)" bool "Support MX31 LILLY-1131 platforms (INCO startec)"
select ARCH_MX31 select ARCH_MX31
select IMX_HAVE_PLATFORM_SPI_IMX
select MXC_ULPI if USB_ULPI select MXC_ULPI if USB_ULPI
help help
Include support for mx31 based LILLY1131 modules. This includes Include support for mx31 based LILLY1131 modules. This includes

View file

@ -18,3 +18,10 @@
#define imx31_add_mxc_nand(pdata) \ #define imx31_add_mxc_nand(pdata) \
imx_add_mxc_nand_v1(MX31_NFC_BASE_ADDR, MX31_INT_NANDFC, pdata) imx_add_mxc_nand_v1(MX31_NFC_BASE_ADDR, MX31_INT_NANDFC, pdata)
#define imx31_add_spi_imx0(pdata) \
imx_add_spi_imx(0, MX31_CSPI1_BASE_ADDR, SZ_4K, MX31_INT_CSPI1, pdata)
#define imx31_add_spi_imx1(pdata) \
imx_add_spi_imx(1, MX31_CSPI2_BASE_ADDR, SZ_4K, MX31_INT_CSPI2, pdata)
#define imx31_add_spi_imx2(pdata) \
imx_add_spi_imx(2, MX31_CSPI3_BASE_ADDR, SZ_4K, MX31_INT_CSPI3, pdata)

View file

@ -379,6 +379,7 @@ struct platform_device mxc_usbh2 = {
.num_resources = ARRAY_SIZE(mxc_usbh2_resources), .num_resources = ARRAY_SIZE(mxc_usbh2_resources),
}; };
#if defined(CONFIG_ARCH_MX35)
/* /*
* SPI master controller * SPI master controller
* 3 channels * 3 channels
@ -440,7 +441,6 @@ struct platform_device mxc_spi_device2 = {
.resource = mxc_spi_2_resources, .resource = mxc_spi_2_resources,
}; };
#ifdef CONFIG_ARCH_MX35
static struct resource mxc_fec_resources[] = { static struct resource mxc_fec_resources[] = {
{ {
.start = MXC_FEC_BASE_ADDR, .start = MXC_FEC_BASE_ADDR,

View file

@ -16,9 +16,11 @@ 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;
extern struct platform_device mxc_rnga_device; extern struct platform_device mxc_rnga_device;
#if defined(CONFIG_ARCH_MX35)
extern struct platform_device mxc_spi_device0; extern struct platform_device mxc_spi_device0;
extern struct platform_device mxc_spi_device1; extern struct platform_device mxc_spi_device1;
extern struct platform_device mxc_spi_device2; extern struct platform_device mxc_spi_device2;
#endif
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;
extern struct platform_device imx_ssi_device1; extern struct platform_device imx_ssi_device1;

View file

@ -35,7 +35,6 @@
#include <mach/common.h> #include <mach/common.h>
#include <mach/imx-uart.h> #include <mach/imx-uart.h>
#include <mach/iomux-mx3.h> #include <mach/iomux-mx3.h>
#include <mach/spi.h>
#include "devices-imx31.h" #include "devices-imx31.h"
#include "devices.h" #include "devices.h"
@ -170,7 +169,7 @@ static int spi1_internal_chipselect[] = {
MXC_SPI_CS(2), MXC_SPI_CS(2),
}; };
static struct spi_imx_master spi1_pdata = { static const struct spi_imx_master spi1_pdata __initconst = {
.chipselect = spi1_internal_chipselect, .chipselect = spi1_internal_chipselect,
.num_chipselect = ARRAY_SIZE(spi1_internal_chipselect), .num_chipselect = ARRAY_SIZE(spi1_internal_chipselect),
}; };
@ -419,7 +418,7 @@ static void __init mxc_board_init(void)
mxc_register_device(&mxc_uart_device0, &uart_pdata); mxc_register_device(&mxc_uart_device0, &uart_pdata);
imx31_add_mxc_nand(&mx31_3ds_nand_board_info); imx31_add_mxc_nand(&mx31_3ds_nand_board_info);
mxc_register_device(&mxc_spi_device1, &spi1_pdata); imx31_add_spi_imx0(&spi1_pdata);
spi_register_board_info(mx31_3ds_spi_devs, spi_register_board_info(mx31_3ds_spi_devs,
ARRAY_SIZE(mx31_3ds_spi_devs)); ARRAY_SIZE(mx31_3ds_spi_devs));

View file

@ -42,10 +42,10 @@
#include <mach/common.h> #include <mach/common.h>
#include <mach/iomux-mx3.h> #include <mach/iomux-mx3.h>
#include <mach/board-mx31lilly.h> #include <mach/board-mx31lilly.h>
#include <mach/spi.h>
#include <mach/mxc_ehci.h> #include <mach/mxc_ehci.h>
#include <mach/ulpi.h> #include <mach/ulpi.h>
#include "devices-imx31.h"
#include "devices.h" #include "devices.h"
/* /*
@ -253,12 +253,12 @@ static int spi_internal_chipselect[] = {
MXC_SPI_CS(2), MXC_SPI_CS(2),
}; };
static struct spi_imx_master spi0_pdata = { static const struct spi_imx_master spi0_pdata __initconst = {
.chipselect = spi_internal_chipselect, .chipselect = spi_internal_chipselect,
.num_chipselect = ARRAY_SIZE(spi_internal_chipselect), .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
}; };
static struct spi_imx_master spi1_pdata = { static const struct spi_imx_master spi1_pdata __initconst = {
.chipselect = spi_internal_chipselect, .chipselect = spi_internal_chipselect,
.num_chipselect = ARRAY_SIZE(spi_internal_chipselect), .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
}; };
@ -310,8 +310,8 @@ static void __init mx31lilly_board_init(void)
mxc_iomux_alloc_pin(MX31_PIN_CSPI2_SS1__SS1, "SPI2_SS1"); mxc_iomux_alloc_pin(MX31_PIN_CSPI2_SS1__SS1, "SPI2_SS1");
mxc_iomux_alloc_pin(MX31_PIN_CSPI2_SS2__SS2, "SPI2_SS2"); mxc_iomux_alloc_pin(MX31_PIN_CSPI2_SS2__SS2, "SPI2_SS2");
mxc_register_device(&mxc_spi_device0, &spi0_pdata); imx31_add_spi_imx0(&spi0_pdata);
mxc_register_device(&mxc_spi_device1, &spi1_pdata); imx31_add_spi_imx1(&spi1_pdata);
spi_register_board_info(&mc13783_dev, 1); spi_register_board_info(&mc13783_dev, 1);
platform_add_devices(devices, ARRAY_SIZE(devices)); platform_add_devices(devices, ARRAY_SIZE(devices));

View file

@ -41,7 +41,6 @@
#include <mach/imx-uart.h> #include <mach/imx-uart.h>
#include <mach/iomux-mx3.h> #include <mach/iomux-mx3.h>
#include <mach/irqs.h> #include <mach/irqs.h>
#include <mach/spi.h>
#include <mach/mxc_ehci.h> #include <mach/mxc_ehci.h>
#include <mach/ulpi.h> #include <mach/ulpi.h>
@ -109,7 +108,7 @@ static int spi_internal_chipselect[] = {
MXC_SPI_CS(0), MXC_SPI_CS(0),
}; };
static struct spi_imx_master spi1_pdata = { static const struct spi_imx_master spi1_pdata __initconst = {
.chipselect = spi_internal_chipselect, .chipselect = spi_internal_chipselect,
.num_chipselect = ARRAY_SIZE(spi_internal_chipselect), .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
}; };
@ -252,7 +251,7 @@ static void __init mxc_board_init(void)
platform_device_register(&physmap_flash_device); platform_device_register(&physmap_flash_device);
imx31_add_mxc_nand(&mx31lite_nand_board_info); imx31_add_mxc_nand(&mx31lite_nand_board_info);
mxc_register_device(&mxc_spi_device1, &spi1_pdata); imx31_add_spi_imx1(&spi1_pdata);
spi_register_board_info(&mc13783_spi_dev, 1); spi_register_board_info(&mc13783_spi_dev, 1);
#if defined(CONFIG_USB_ULPI) #if defined(CONFIG_USB_ULPI)

View file

@ -152,7 +152,7 @@ static int moboard_spi1_cs[] = {
MXC_SPI_CS(2), MXC_SPI_CS(2),
}; };
static struct spi_imx_master moboard_spi1_master = { static const struct spi_imx_master moboard_spi1_pdata __initconst = {
.chipselect = moboard_spi1_cs, .chipselect = moboard_spi1_cs,
.num_chipselect = ARRAY_SIZE(moboard_spi1_cs), .num_chipselect = ARRAY_SIZE(moboard_spi1_cs),
}; };
@ -282,7 +282,7 @@ static int moboard_spi2_cs[] = {
MXC_SPI_CS(1), MXC_SPI_CS(1),
}; };
static struct spi_imx_master moboard_spi2_master = { static const struct spi_imx_master moboard_spi2_pdata __initconst = {
.chipselect = moboard_spi2_cs, .chipselect = moboard_spi2_cs,
.num_chipselect = ARRAY_SIZE(moboard_spi2_cs), .num_chipselect = ARRAY_SIZE(moboard_spi2_cs),
}; };
@ -502,8 +502,8 @@ static void __init mxc_board_init(void)
imx31_add_imx_i2c0(&moboard_i2c0_data); imx31_add_imx_i2c0(&moboard_i2c0_data);
imx31_add_imx_i2c1(&moboard_i2c1_data); imx31_add_imx_i2c1(&moboard_i2c1_data);
mxc_register_device(&mxc_spi_device1, &moboard_spi1_master); imx31_add_spi_imx1(&moboard_spi1_pdata);
mxc_register_device(&mxc_spi_device2, &moboard_spi2_master); imx31_add_spi_imx2(&moboard_spi2_pdata);
gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3), "pmic-irq"); gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3), "pmic-irq");
gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3)); gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));

View file

@ -37,8 +37,8 @@
#include <mach/iomux-mx3.h> #include <mach/iomux-mx3.h>
#include <mach/board-mx31lite.h> #include <mach/board-mx31lite.h>
#include <mach/mmc.h> #include <mach/mmc.h>
#include <mach/spi.h>
#include "devices-imx31.h"
#include "devices.h" #include "devices.h"
/* /*
@ -157,7 +157,7 @@ static int spi_internal_chipselect[] = {
MXC_SPI_CS(2), MXC_SPI_CS(2),
}; };
static struct spi_imx_master spi0_pdata = { static const struct spi_imx_master spi0_pdata __initconst = {
.chipselect = spi_internal_chipselect, .chipselect = spi_internal_chipselect,
.num_chipselect = ARRAY_SIZE(spi_internal_chipselect), .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
}; };
@ -199,7 +199,7 @@ void __init mx31lite_db_init(void)
"development board pins"); "development board pins");
mxc_register_device(&mxc_uart_device0, &uart_pdata); mxc_register_device(&mxc_uart_device0, &uart_pdata);
mxc_register_device(&mxcsdhc_device0, &mmc_pdata); mxc_register_device(&mxcsdhc_device0, &mmc_pdata);
mxc_register_device(&mxc_spi_device0, &spi0_pdata); imx31_add_spi_imx0(&spi0_pdata);
platform_device_register(&litekit_led_device); platform_device_register(&litekit_led_device);
mxc_register_device(&imx_wdt_device0, NULL); mxc_register_device(&imx_wdt_device0, NULL);
mxc_register_device(&imx_rtc_device0, NULL); mxc_register_device(&imx_rtc_device0, NULL);