* [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late
@ 2016-09-19 1:36 Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 01/19] ARM: imx legacy: kzm: move peripheral initialization " Vladimir Zapolskiy
` (19 more replies)
0 siblings, 20 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:36 UTC (permalink / raw)
To: linux-arm-kernel
The series moves registrations and initializations of all peripherals
which are GPIO line consumers for all legacy (prior to DT) i.MX powered
boards from .init_machine to .init_late init level. This is needed to
proactively prevent boot time issues on the legacy boards due to the
deprioritized init level of the GPIO controller driver (set lower than
IOMUX controller driver init level), which is shared among all i.MX
SoCs. The problem was reported and discussed on
https://lkml.org/lkml/2016/9/13/810
The changes are based on v4.8.0-rc1, please let me know if the series
should be rebased or squashed. Some of the changes are quite simple,
e.g. a one line change for qong board, and some of them are more
sophisticated, thus to simplify review process and potential creation
of revert commits the changes are split into separate patches one per
board.
Uwe suggested to add necessary error checks for all gpio_request()
calls, which are missing on kzm, mx27-3ds, mx31lilly, mx31lite,
mx31moboard, mx35-3ds and pca100 targets, this is out of the scope
of this change, which is intended to move some registration and
initialization calls only from one place to another. Adding error
checks can be done later on, however for example -EPROBE_DEFER errors
won't be handled as expected, because .init_machine and .init_late
callbacks are one-shot.
Only two legacy targets are tested, i.MX31 kzm qemu machine and
changes for i.MX31 powered Logic PD mx31lite board. The rest of
the legacy boards are compilation tested only, probably some of
the proposed changes are excessive or may be insufficient.
Vladimir Zapolskiy (19):
ARM: imx legacy: kzm: move peripheral initialization to .init_late
ARM: imx legacy: mx31lite: move peripheral initialization to .init_late
ARM: imx legacy: mx31ads: move peripheral initialization to .init_late
ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late
ARM: imx legacy: pcm037: move peripheral initialization to .init_late
ARM: imx legacy: mx31-3ds: move peripheral initialization to .init_late
ARM: imx legacy: qong: move peripheral initialization to .init_late
ARM: imx legacy: armadillo5x0: move peripheral initialization to .init_late
ARM: imx legacy: mx31moboard: move peripheral initialization to .init_late
ARM: imx legacy: vpr200: move peripheral initialization to .init_late
ARM: imx legacy: imx27-visstrim-m10: move peripheral initialization to .init_late
ARM: imx legacy: mx27-3ds: move peripheral initialization to .init_late
ARM: imx legacy: mx35-3ds: move peripheral initialization to .init_late
ARM: imx legacy: apf9328: move peripheral initialization to .init_late
ARM: imx legacy: scb9328: move peripheral initialization to .init_late
ARM: imx legacy: pcm043: move peripheral initialization to .init_late
ARM: imx legacy: mx21ads: move peripheral initialization to .init_late
ARM: imx legacy: mx27ads: move peripheral initialization to .init_late
ARM: imx legacy: pca100: move peripheral initialization to .init_late
arch/arm/mach-imx/mach-apf9328.c | 6 ++-
arch/arm/mach-imx/mach-armadillo5x0.c | 39 ++++++++++-------
arch/arm/mach-imx/mach-imx27_visstrim_m10.c | 24 +++++++---
arch/arm/mach-imx/mach-kzm_arm11_01.c | 9 +++-
arch/arm/mach-imx/mach-mx21ads.c | 13 ++++--
arch/arm/mach-imx/mach-mx27_3ds.c | 30 ++++++++-----
arch/arm/mach-imx/mach-mx27ads.c | 13 ++++--
arch/arm/mach-imx/mach-mx31_3ds.c | 39 ++++++++++-------
arch/arm/mach-imx/mach-mx31ads.c | 18 ++++----
arch/arm/mach-imx/mach-mx31lilly.c | 50 +++++++++++++++------
arch/arm/mach-imx/mach-mx31lite.c | 68 ++++++++++++++++++++---------
arch/arm/mach-imx/mach-mx31moboard.c | 23 ++++++----
arch/arm/mach-imx/mach-mx35_3ds.c | 15 ++++---
arch/arm/mach-imx/mach-pca100.c | 26 ++++++-----
arch/arm/mach-imx/mach-pcm037.c | 67 ++++++++++++++--------------
arch/arm/mach-imx/mach-pcm043.c | 10 ++++-
arch/arm/mach-imx/mach-qong.c | 2 +-
arch/arm/mach-imx/mach-scb9328.c | 7 ++-
arch/arm/mach-imx/mach-vpr200.c | 29 +++++++-----
arch/arm/mach-imx/mx31lilly-db.c | 20 ---------
arch/arm/mach-imx/mx31lite-db.c | 33 --------------
21 files changed, 312 insertions(+), 229 deletions(-)
--
2.8.1
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 01/19] ARM: imx legacy: kzm: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 02/19] ARM: imx legacy: mx31lite: " Vladimir Zapolskiy
` (18 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
The change is tested on qemu kzm target.
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-kzm_arm11_01.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-imx/mach-kzm_arm11_01.c b/arch/arm/mach-imx/mach-kzm_arm11_01.c
index 31df436..8288acf 100644
--- a/arch/arm/mach-imx/mach-kzm_arm11_01.c
+++ b/arch/arm/mach-imx/mach-kzm_arm11_01.c
@@ -245,13 +245,17 @@ static void __init kzm_board_init(void)
mxc_iomux_setup_multiple_pins(kzm_pins,
ARRAY_SIZE(kzm_pins), "kzm");
- kzm_init_ext_uart();
- kzm_init_smsc9118();
kzm_init_imx_uart();
pr_info("Clock input source is 26MHz\n");
}
+static void __init kzm_late_init(void)
+{
+ kzm_init_ext_uart();
+ kzm_init_smsc9118();
+}
+
/*
* This structure defines static mappings for the kzm-arm11-01 board.
*/
@@ -291,5 +295,6 @@ MACHINE_START(KZM_ARM11_01, "Kyoto Microcomputer Co., Ltd. KZM-ARM11-01")
.init_irq = mx31_init_irq,
.init_time = kzm_timer_init,
.init_machine = kzm_board_init,
+ .init_late = kzm_late_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 02/19] ARM: imx legacy: mx31lite: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 01/19] ARM: imx legacy: kzm: move peripheral initialization " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 03/19] ARM: imx legacy: mx31ads: " Vladimir Zapolskiy
` (17 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-mx31lite.c | 68 +++++++++++++++++++++++++++------------
arch/arm/mach-imx/mx31lite-db.c | 33 -------------------
2 files changed, 48 insertions(+), 53 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx31lite.c b/arch/arm/mach-imx/mach-mx31lite.c
index 4822a17..f033a57 100644
--- a/arch/arm/mach-imx/mach-mx31lite.c
+++ b/arch/arm/mach-imx/mach-mx31lite.c
@@ -52,6 +52,19 @@
*/
static unsigned int mx31lite_pins[] = {
+ /* UART1 */
+ MX31_PIN_CTS1__CTS1,
+ MX31_PIN_RTS1__RTS1,
+ MX31_PIN_TXD1__TXD1,
+ MX31_PIN_RXD1__RXD1,
+ /* SPI 0 */
+ MX31_PIN_CSPI1_SCLK__SCLK,
+ MX31_PIN_CSPI1_MOSI__MOSI,
+ MX31_PIN_CSPI1_MISO__MISO,
+ MX31_PIN_CSPI1_SPI_RDY__SPI_RDY,
+ MX31_PIN_CSPI1_SS0__SS0,
+ MX31_PIN_CSPI1_SS1__SS1,
+ MX31_PIN_CSPI1_SS2__SS2,
/* LAN9117 IRQ pin */
IOMUX_MODE(MX31_PIN_SFS6, IOMUX_CONFIG_GPIO),
/* SPI 1 */
@@ -64,6 +77,23 @@ static unsigned int mx31lite_pins[] = {
MX31_PIN_CSPI2_SS2__SS2,
};
+/* UART */
+static const struct imxuart_platform_data uart_pdata __initconst = {
+ .flags = IMXUART_HAVE_RTSCTS,
+};
+
+/* SPI */
+static int spi0_internal_chipselect[] = {
+ MXC_SPI_CS(0),
+ MXC_SPI_CS(1),
+ MXC_SPI_CS(2),
+};
+
+static const struct spi_imx_master spi0_pdata __initconst = {
+ .chipselect = spi0_internal_chipselect,
+ .num_chipselect = ARRAY_SIZE(spi0_internal_chipselect),
+};
+
static const struct mxc_nand_platform_data
mx31lite_nand_board_info __initconst = {
.width = 1,
@@ -103,13 +133,13 @@ static struct platform_device smsc911x_device = {
* The MC13783 is the only hard-wired SPI device on the module.
*/
-static int spi_internal_chipselect[] = {
+static int spi1_internal_chipselect[] = {
MXC_SPI_CS(0),
};
static const struct spi_imx_master spi1_pdata __initconst = {
- .chipselect = spi_internal_chipselect,
- .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
+ .chipselect = spi1_internal_chipselect,
+ .num_chipselect = ARRAY_SIZE(spi1_internal_chipselect),
};
static struct mc13xxx_platform_data mc13783_pdata __initdata = {
@@ -200,8 +230,6 @@ static struct platform_device physmap_flash_device = {
.num_resources = 1,
};
-
-
/*
* This structure defines the MX31 memory map.
*/
@@ -233,29 +261,30 @@ static struct regulator_consumer_supply dummy_supplies[] = {
static void __init mx31lite_init(void)
{
- int ret;
-
imx31_soc_init();
- switch (mx31lite_baseboard) {
- case MX31LITE_NOBOARD:
- break;
- case MX31LITE_DB:
- mx31lite_db_init();
- break;
- default:
- printk(KERN_ERR "Illegal mx31lite_baseboard type %d\n",
- mx31lite_baseboard);
- }
-
mxc_iomux_setup_multiple_pins(mx31lite_pins, ARRAY_SIZE(mx31lite_pins),
"mx31lite");
+ imx31_add_imx_uart0(&uart_pdata);
+ imx31_add_spi_imx0(&spi0_pdata);
+
/* NOR and NAND flash */
platform_device_register(&physmap_flash_device);
imx31_add_mxc_nand(&mx31lite_nand_board_info);
imx31_add_spi_imx1(&spi1_pdata);
+
+ regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
+}
+
+static void __init mx31lite_late(void)
+{
+ int ret;
+
+ if (mx31lite_baseboard == MX31LITE_DB)
+ mx31lite_db_init();
+
mc13783_spi_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
spi_register_board_info(&mc13783_spi_dev, 1);
@@ -265,8 +294,6 @@ static void __init mx31lite_init(void)
if (usbh2_pdata.otg)
imx31_add_mxc_ehci_hs(2, &usbh2_pdata);
- regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
-
/* SMSC9117 IRQ pin */
ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_SFS6), "sms9117-irq");
if (ret)
@@ -294,5 +321,6 @@ MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")
.init_irq = mx31_init_irq,
.init_time = mx31lite_timer_init,
.init_machine = mx31lite_init,
+ .init_late = mx31lite_late,
.restart = mxc_restart,
MACHINE_END
diff --git a/arch/arm/mach-imx/mx31lite-db.c b/arch/arm/mach-imx/mx31lite-db.c
index 5a160b7..c66a006 100644
--- a/arch/arm/mach-imx/mx31lite-db.c
+++ b/arch/arm/mach-imx/mx31lite-db.c
@@ -45,19 +45,6 @@
*/
static unsigned int litekit_db_board_pins[] __initdata = {
- /* UART1 */
- MX31_PIN_CTS1__CTS1,
- MX31_PIN_RTS1__RTS1,
- MX31_PIN_TXD1__TXD1,
- MX31_PIN_RXD1__RXD1,
- /* SPI 0 */
- MX31_PIN_CSPI1_SCLK__SCLK,
- MX31_PIN_CSPI1_MOSI__MOSI,
- MX31_PIN_CSPI1_MISO__MISO,
- MX31_PIN_CSPI1_SPI_RDY__SPI_RDY,
- MX31_PIN_CSPI1_SS0__SS0,
- MX31_PIN_CSPI1_SS1__SS1,
- MX31_PIN_CSPI1_SS2__SS2,
/* SDHC1 */
MX31_PIN_SD1_DATA0__SD1_DATA0,
MX31_PIN_SD1_DATA1__SD1_DATA1,
@@ -67,11 +54,6 @@ static unsigned int litekit_db_board_pins[] __initdata = {
MX31_PIN_SD1_CMD__SD1_CMD,
};
-/* UART */
-static const struct imxuart_platform_data uart_pdata __initconst = {
- .flags = IMXUART_HAVE_RTSCTS,
-};
-
/* MMC */
static int gpio_det, gpio_wp;
@@ -146,19 +128,6 @@ static const struct imxmmc_platform_data mmc_pdata __initconst = {
.exit = mxc_mmc1_exit,
};
-/* SPI */
-
-static int spi_internal_chipselect[] = {
- MXC_SPI_CS(0),
- MXC_SPI_CS(1),
- MXC_SPI_CS(2),
-};
-
-static const struct spi_imx_master spi0_pdata __initconst = {
- .chipselect = spi_internal_chipselect,
- .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
-};
-
/* GPIO LEDs */
static const struct gpio_led litekit_leds[] __initconst = {
@@ -187,9 +156,7 @@ void __init mx31lite_db_init(void)
mxc_iomux_setup_multiple_pins(litekit_db_board_pins,
ARRAY_SIZE(litekit_db_board_pins),
"development board pins");
- imx31_add_imx_uart0(&uart_pdata);
imx31_add_mxc_mmc(0, &mmc_pdata);
- imx31_add_spi_imx0(&spi0_pdata);
gpio_led_register_device(-1, &litekit_led_platform_data);
imx31_add_imx2_wdt();
imx31_add_mxc_rtc();
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 03/19] ARM: imx legacy: mx31ads: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 01/19] ARM: imx legacy: kzm: move peripheral initialization " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 02/19] ARM: imx legacy: mx31lite: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 04/19] ARM: imx legacy: mx31lilly: " Vladimir Zapolskiy
` (16 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-mx31ads.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx31ads.c b/arch/arm/mach-imx/mach-mx31ads.c
index 4f2c56d..766b8b9 100644
--- a/arch/arm/mach-imx/mach-mx31ads.c
+++ b/arch/arm/mach-imx/mach-mx31ads.c
@@ -554,20 +554,19 @@ static void __init mx31ads_map_io(void)
iotable_init(mx31ads_io_desc, ARRAY_SIZE(mx31ads_io_desc));
}
-static void __init mx31ads_init_irq(void)
-{
- mx31_init_irq();
- mx31ads_init_expio();
-}
-
static void __init mx31ads_init(void)
{
imx31_soc_init();
- mxc_init_extuart();
mxc_init_imx_uart();
- mxc_init_i2c();
mxc_init_audio();
+}
+
+static void __init mx31ads_late(void)
+{
+ mx31ads_init_expio();
+ mxc_init_extuart();
+ mxc_init_i2c();
mxc_init_ext_ethernet();
}
@@ -581,8 +580,9 @@ MACHINE_START(MX31ADS, "Freescale MX31ADS")
.atag_offset = 0x100,
.map_io = mx31ads_map_io,
.init_early = imx31_init_early,
- .init_irq = mx31ads_init_irq,
+ .init_irq = mx31_init_irq,
.init_time = mx31ads_timer_init,
.init_machine = mx31ads_init,
+ .init_late = mx31ads_late,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 04/19] ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (2 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 03/19] ARM: imx legacy: mx31ads: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 05/19] ARM: imx legacy: pcm037: " Vladimir Zapolskiy
` (15 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-mx31lilly.c | 50 ++++++++++++++++++++++++++++----------
arch/arm/mach-imx/mx31lilly-db.c | 20 ---------------
2 files changed, 37 insertions(+), 33 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx31lilly.c b/arch/arm/mach-imx/mach-mx31lilly.c
index e9549a3..6fd4636 100644
--- a/arch/arm/mach-imx/mach-mx31lilly.c
+++ b/arch/arm/mach-imx/mach-mx31lilly.c
@@ -56,6 +56,26 @@
* appropriate baseboard support code.
*/
+static unsigned int mx31lilly_pins[] __initdata = {
+ MX31_PIN_CTS1__CTS1,
+ MX31_PIN_RTS1__RTS1,
+ MX31_PIN_TXD1__TXD1,
+ MX31_PIN_RXD1__RXD1,
+ MX31_PIN_CTS2__CTS2,
+ MX31_PIN_RTS2__RTS2,
+ MX31_PIN_TXD2__TXD2,
+ MX31_PIN_RXD2__RXD2,
+ MX31_PIN_CSPI3_MOSI__RXD3,
+ MX31_PIN_CSPI3_MISO__TXD3,
+ MX31_PIN_CSPI3_SCLK__RTS3,
+ MX31_PIN_CSPI3_SPI_RDY__CTS3,
+};
+
+/* UART */
+static const struct imxuart_platform_data uart_pdata __initconst = {
+ .flags = IMXUART_HAVE_RTSCTS,
+};
+
/* SMSC ethernet support */
static struct resource smsc91x_resources[] = {
@@ -252,16 +272,12 @@ static void __init mx31lilly_board_init(void)
{
imx31_soc_init();
- switch (mx31lilly_baseboard) {
- case MX31LILLY_NOBOARD:
- break;
- case MX31LILLY_DB:
- mx31lilly_db_init();
- break;
- default:
- printk(KERN_ERR "Illegal mx31lilly_baseboard type %d\n",
- mx31lilly_baseboard);
- }
+ mxc_iomux_setup_multiple_pins(mx31lilly_pins,
+ ARRAY_SIZE(mx31lilly_pins), "mx31lily");
+
+ imx31_add_imx_uart0(&uart_pdata);
+ imx31_add_imx_uart1(&uart_pdata);
+ imx31_add_imx_uart2(&uart_pdata);
mxc_iomux_alloc_pin(MX31_PIN_CS4__CS4, "Ethernet CS");
@@ -284,10 +300,17 @@ static void __init mx31lilly_board_init(void)
imx31_add_spi_imx0(&spi0_pdata);
imx31_add_spi_imx1(&spi1_pdata);
- mc13783_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
- spi_register_board_info(&mc13783_dev, 1);
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
+}
+
+static void __init mx31lilly_late_init(void)
+{
+ if (mx31lilly_baseboard == MX31LILLY_DB)
+ mx31lilly_db_init();
+
+ mc13783_dev.irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
+ spi_register_board_info(&mc13783_dev, 1);
smsc91x_resources[1].start =
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
@@ -310,6 +333,7 @@ MACHINE_START(LILLY1131, "INCO startec LILLY-1131")
.init_early = imx31_init_early,
.init_irq = mx31_init_irq,
.init_time = mx31lilly_timer_init,
- .init_machine = mx31lilly_board_init,
+ .init_machine = mx31lilly_board_init,
+ .init_late = mx31lilly_late_init,
.restart = mxc_restart,
MACHINE_END
diff --git a/arch/arm/mach-imx/mx31lilly-db.c b/arch/arm/mach-imx/mx31lilly-db.c
index 649fe49..231f900 100644
--- a/arch/arm/mach-imx/mx31lilly-db.c
+++ b/arch/arm/mach-imx/mx31lilly-db.c
@@ -43,18 +43,6 @@
*/
static unsigned int lilly_db_board_pins[] __initdata = {
- MX31_PIN_CTS1__CTS1,
- MX31_PIN_RTS1__RTS1,
- MX31_PIN_TXD1__TXD1,
- MX31_PIN_RXD1__RXD1,
- MX31_PIN_CTS2__CTS2,
- MX31_PIN_RTS2__RTS2,
- MX31_PIN_TXD2__TXD2,
- MX31_PIN_RXD2__RXD2,
- MX31_PIN_CSPI3_MOSI__RXD3,
- MX31_PIN_CSPI3_MISO__TXD3,
- MX31_PIN_CSPI3_SCLK__RTS3,
- MX31_PIN_CSPI3_SPI_RDY__CTS3,
MX31_PIN_SD1_DATA3__SD1_DATA3,
MX31_PIN_SD1_DATA2__SD1_DATA2,
MX31_PIN_SD1_DATA1__SD1_DATA1,
@@ -86,11 +74,6 @@ static unsigned int lilly_db_board_pins[] __initdata = {
MX31_PIN_CONTRAST__CONTRAST,
};
-/* UART */
-static const struct imxuart_platform_data uart_pdata __initconst = {
- .flags = IMXUART_HAVE_RTSCTS,
-};
-
/* MMC support */
static int mxc_mmc1_get_ro(struct device *dev)
@@ -203,9 +186,6 @@ void __init mx31lilly_db_init(void)
mxc_iomux_setup_multiple_pins(lilly_db_board_pins,
ARRAY_SIZE(lilly_db_board_pins),
"development board pins");
- imx31_add_imx_uart0(&uart_pdata);
- imx31_add_imx_uart1(&uart_pdata);
- imx31_add_imx_uart2(&uart_pdata);
imx31_add_mxc_mmc(0, &mmc_pdata);
mx31lilly_init_fb();
}
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 05/19] ARM: imx legacy: pcm037: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (3 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 04/19] ARM: imx legacy: mx31lilly: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 06/19] ARM: imx legacy: mx31-3ds: " Vladimir Zapolskiy
` (14 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-pcm037.c | 67 ++++++++++++++++++++---------------------
1 file changed, 33 insertions(+), 34 deletions(-)
diff --git a/arch/arm/mach-imx/mach-pcm037.c b/arch/arm/mach-imx/mach-pcm037.c
index 6d87941..d071ced 100644
--- a/arch/arm/mach-imx/mach-pcm037.c
+++ b/arch/arm/mach-imx/mach-pcm037.c
@@ -576,8 +576,6 @@ static struct regulator_consumer_supply dummy_supplies[] = {
*/
static void __init pcm037_init(void)
{
- int ret;
-
imx31_soc_init();
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
@@ -621,20 +619,6 @@ static void __init pcm037_init(void)
imx31_add_mxc_w1();
- /* LAN9217 IRQ pin */
- ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1), "lan9217-irq");
- if (ret)
- pr_warn("could not get LAN irq gpio\n");
- else {
- gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
- smsc911x_resources[1].start =
- gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
- smsc911x_resources[1].end =
- gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
- platform_device_register(&pcm037_eth);
- }
-
-
/* I2C adapters and devices */
i2c_register_board_info(1, pcm037_i2c_devices,
ARRAY_SIZE(pcm037_i2c_devices));
@@ -643,26 +627,9 @@ static void __init pcm037_init(void)
imx31_add_imx_i2c2(&pcm037_i2c2_data);
imx31_add_mxc_nand(&pcm037_nand_board_info);
- imx31_add_mxc_mmc(0, &sdhc_pdata);
imx31_add_ipu_core();
imx31_add_mx3_sdc_fb(&mx3fb_pdata);
- /* CSI */
- /* Camera power: default - off */
- ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), "mt9t031-power");
- if (!ret)
- gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), 1);
- else
- iclink_mt9t031.power = NULL;
-
- pcm037_init_camera();
-
- pcm970_sja1000_resources[1].start =
- gpio_to_irq(IOMUX_TO_GPIO(IOMUX_PIN(48, 105)));
- pcm970_sja1000_resources[1].end =
- gpio_to_irq(IOMUX_TO_GPIO(IOMUX_PIN(48, 105)));
- platform_device_register(&pcm970_sja1000);
-
if (otg_mode_host) {
otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
ULPI_OTG_DRVVBUS_EXT);
@@ -677,7 +644,6 @@ static void __init pcm037_init(void)
if (!otg_mode_host)
imx31_add_fsl_usb2_udc(&otg_device_pdata);
-
}
static void __init pcm037_timer_init(void)
@@ -694,6 +660,39 @@ static void __init pcm037_reserve(void)
static void __init pcm037_init_late(void)
{
+ int ret;
+
+ /* LAN9217 IRQ pin */
+ ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1), "lan9217-irq");
+ if (!ret) {
+ gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
+ smsc911x_resources[1].start =
+ gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
+ smsc911x_resources[1].end =
+ gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
+ platform_device_register(&pcm037_eth);
+ } else {
+ pr_warn("could not get LAN irq gpio\n");
+ }
+
+ imx31_add_mxc_mmc(0, &sdhc_pdata);
+
+ /* CSI */
+ /* Camera power: default - off */
+ ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), "mt9t031-power");
+ if (!ret)
+ gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CSI_D5), 1);
+ else
+ iclink_mt9t031.power = NULL;
+
+ pcm037_init_camera();
+
+ pcm970_sja1000_resources[1].start =
+ gpio_to_irq(IOMUX_TO_GPIO(IOMUX_PIN(48, 105)));
+ pcm970_sja1000_resources[1].end =
+ gpio_to_irq(IOMUX_TO_GPIO(IOMUX_PIN(48, 105)));
+ platform_device_register(&pcm970_sja1000);
+
pcm037_eet_init_devices();
}
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 06/19] ARM: imx legacy: mx31-3ds: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (4 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 05/19] ARM: imx legacy: pcm037: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 07/19] ARM: imx legacy: qong: " Vladimir Zapolskiy
` (13 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-mx31_3ds.c | 39 +++++++++++++++++++++++----------------
1 file changed, 23 insertions(+), 16 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx31_3ds.c b/arch/arm/mach-imx/mach-mx31_3ds.c
index 65a0dc0..12b8a52 100644
--- a/arch/arm/mach-imx/mach-mx31_3ds.c
+++ b/arch/arm/mach-imx/mach-mx31_3ds.c
@@ -694,8 +694,6 @@ static struct platform_device *devices[] __initdata = {
static void __init mx31_3ds_init(void)
{
- int ret;
-
imx31_soc_init();
/* Configure SPI1 IOMUX */
@@ -708,14 +706,31 @@ static void __init mx31_3ds_init(void)
imx31_add_mxc_nand(&mx31_3ds_nand_board_info);
imx31_add_spi_imx1(&spi1_pdata);
+
+ imx31_add_imx_keypad(&mx31_3ds_keymap_data);
+
+ imx31_add_imx2_wdt();
+ imx31_add_imx_i2c0(&mx31_3ds_i2c0_data);
+
+ imx31_add_spi_imx0(&spi0_pdata);
+ imx31_add_ipu_core();
+ imx31_add_mx3_sdc_fb(&mx3fb_pdata);
+
+ imx31_add_imx_ssi(0, &mx31_3ds_ssi_pdata);
+
+ imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
+}
+
+static void __init mx31_3ds_late(void)
+{
+ int ret;
+
mx31_3ds_spi_devs[0].irq = gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
spi_register_board_info(mx31_3ds_spi_devs,
- ARRAY_SIZE(mx31_3ds_spi_devs));
+ ARRAY_SIZE(mx31_3ds_spi_devs));
platform_add_devices(devices, ARRAY_SIZE(devices));
- imx31_add_imx_keypad(&mx31_3ds_keymap_data);
-
mx31_3ds_usbotg_init();
if (otg_mode_host) {
otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
@@ -733,14 +748,9 @@ static void __init mx31_3ds_init(void)
if (mxc_expio_init(MX31_CS5_BASE_ADDR, IOMUX_TO_GPIO(MX31_PIN_GPIO1_1)))
printk(KERN_WARNING "Init of the debug board failed, all "
- "devices on the debug board are unusable.\n");
- imx31_add_imx2_wdt();
- imx31_add_imx_i2c0(&mx31_3ds_i2c0_data);
- imx31_add_mxc_mmc(0, &sdhc1_pdata);
+ "devices on the debug board are unusable.\n");
- imx31_add_spi_imx0(&spi0_pdata);
- imx31_add_ipu_core();
- imx31_add_mx3_sdc_fb(&mx3fb_pdata);
+ imx31_add_mxc_mmc(0, &sdhc1_pdata);
/* CSI */
/* Camera power: default - off */
@@ -752,10 +762,6 @@ static void __init mx31_3ds_init(void)
}
mx31_3ds_init_camera();
-
- imx31_add_imx_ssi(0, &mx31_3ds_ssi_pdata);
-
- imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
}
static void __init mx31_3ds_timer_init(void)
@@ -778,6 +784,7 @@ MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)")
.init_irq = mx31_init_irq,
.init_time = mx31_3ds_timer_init,
.init_machine = mx31_3ds_init,
+ .init_late = mx31_3ds_late,
.reserve = mx31_3ds_reserve,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 07/19] ARM: imx legacy: qong: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (5 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 06/19] ARM: imx legacy: mx31-3ds: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 08/19] ARM: imx legacy: armadillo5x0: " Vladimir Zapolskiy
` (12 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-qong.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-imx/mach-qong.c b/arch/arm/mach-imx/mach-qong.c
index 34df64f..8c2cbd6 100644
--- a/arch/arm/mach-imx/mach-qong.c
+++ b/arch/arm/mach-imx/mach-qong.c
@@ -251,7 +251,6 @@ static void __init qong_init(void)
mxc_init_imx_uart();
qong_init_nor_mtd();
- qong_init_fpga();
imx31_add_imx2_wdt();
}
@@ -268,5 +267,6 @@ MACHINE_START(QONG, "Dave/DENX QongEVB-LITE")
.init_irq = mx31_init_irq,
.init_time = qong_timer_init,
.init_machine = qong_init,
+ .init_late = qong_init_fpga,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 08/19] ARM: imx legacy: armadillo5x0: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (6 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 07/19] ARM: imx legacy: qong: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 09/19] ARM: imx legacy: mx31moboard: " Vladimir Zapolskiy
` (11 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-armadillo5x0.c | 39 +++++++++++++++++++++--------------
1 file changed, 23 insertions(+), 16 deletions(-)
diff --git a/arch/arm/mach-imx/mach-armadillo5x0.c b/arch/arm/mach-imx/mach-armadillo5x0.c
index eaee47a..17a97ba 100644
--- a/arch/arm/mach-imx/mach-armadillo5x0.c
+++ b/arch/arm/mach-imx/mach-armadillo5x0.c
@@ -493,24 +493,12 @@ static void __init armadillo5x0_init(void)
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
- armadillo5x0_smc911x_resources[1].start =
- gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
- armadillo5x0_smc911x_resources[1].end =
- gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
- platform_add_devices(devices, ARRAY_SIZE(devices));
- imx_add_gpio_keys(&armadillo5x0_button_data);
imx31_add_imx_i2c1(NULL);
/* Register UART */
imx31_add_imx_uart0(&uart_pdata);
imx31_add_imx_uart1(&uart_pdata);
- /* SMSC9118 IRQ pin */
- gpio_direction_input(MX31_PIN_GPIO1_0);
-
- /* Register SDHC */
- imx31_add_mxc_mmc(0, &sdhc_pdata);
-
/* Register FB */
imx31_add_ipu_core();
imx31_add_mx3_sdc_fb(&mx3fb_pdata);
@@ -527,21 +515,39 @@ static void __init armadillo5x0_init(void)
/* set NAND page size to 2k if not configured via boot mode pins */
imx_writel(imx_readl(mx3_ccm_base + MXC_CCM_RCSR) | (1 << 30),
mx3_ccm_base + MXC_CCM_RCSR);
+}
+
+static void __init armadillo5x0_late(void)
+{
+ armadillo5x0_smc911x_resources[1].start =
+ gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
+ armadillo5x0_smc911x_resources[1].end =
+ gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+
+ imx_add_gpio_keys(&armadillo5x0_button_data);
+
+ /* SMSC9118 IRQ pin */
+ gpio_direction_input(MX31_PIN_GPIO1_0);
+
+ /* Register SDHC */
+ imx31_add_mxc_mmc(0, &sdhc_pdata);
/* RTC */
/* Get RTC IRQ and register the chip */
- if (gpio_request(ARMADILLO5X0_RTC_GPIO, "rtc") == 0) {
- if (gpio_direction_input(ARMADILLO5X0_RTC_GPIO) == 0)
- armadillo5x0_i2c_rtc.irq = gpio_to_irq(ARMADILLO5X0_RTC_GPIO);
+ if (!gpio_request(ARMADILLO5X0_RTC_GPIO, "rtc")) {
+ if (!gpio_direction_input(ARMADILLO5X0_RTC_GPIO))
+ armadillo5x0_i2c_rtc.irq =
+ gpio_to_irq(ARMADILLO5X0_RTC_GPIO);
else
gpio_free(ARMADILLO5X0_RTC_GPIO);
}
+
if (armadillo5x0_i2c_rtc.irq == 0)
pr_warn("armadillo5x0_init: failed to get RTC IRQ\n");
i2c_register_board_info(1, &armadillo5x0_i2c_rtc, 1);
/* USB */
-
usbotg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
ULPI_OTG_DRVVBUS_EXT);
if (usbotg_pdata.otg)
@@ -565,5 +571,6 @@ MACHINE_START(ARMADILLO5X0, "Armadillo-500")
.init_irq = mx31_init_irq,
.init_time = armadillo5x0_timer_init,
.init_machine = armadillo5x0_init,
+ .init_late = armadillo5x0_late,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 09/19] ARM: imx legacy: mx31moboard: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (7 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 08/19] ARM: imx legacy: armadillo5x0: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 10/19] ARM: imx legacy: vpr200: " Vladimir Zapolskiy
` (10 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-mx31moboard.c | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c
index 4f2d998..cc86768 100644
--- a/arch/arm/mach-imx/mach-mx31moboard.c
+++ b/arch/arm/mach-imx/mach-mx31moboard.c
@@ -526,11 +526,9 @@ static void __init mx31moboard_init(void)
"moboard");
platform_add_devices(devices, ARRAY_SIZE(devices));
- gpio_led_register_device(-1, &mx31moboard_led_pdata);
imx31_add_imx2_wdt();
- moboard_uart0_init();
imx31_add_imx_uart0(&uart0_pdata);
imx31_add_imx_uart4(&uart4_pdata);
@@ -540,6 +538,19 @@ static void __init mx31moboard_init(void)
imx31_add_spi_imx1(&moboard_spi1_pdata);
imx31_add_spi_imx2(&moboard_spi2_pdata);
+ mx31moboard_init_cam();
+
+ imx31_add_imx_ssi(0, &moboard_ssi_pdata);
+
+ pm_power_off = mx31moboard_poweroff;
+}
+
+static void __init mx31moboard_late(void)
+{
+ gpio_led_register_device(-1, &mx31moboard_led_pdata);
+
+ moboard_uart0_init();
+
gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3), "pmic-irq");
gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO1_3));
moboard_spi_board_info[0].irq =
@@ -549,18 +560,11 @@ static void __init mx31moboard_init(void)
imx31_add_mxc_mmc(0, &sdhc1_pdata);
- mx31moboard_init_cam();
-
usb_xcvr_reset();
-
moboard_usbh2_init();
- imx31_add_imx_ssi(0, &moboard_ssi_pdata);
-
imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
- pm_power_off = mx31moboard_poweroff;
-
switch (mx31moboard_baseboard) {
case MX31NOBOARD:
break;
@@ -601,5 +605,6 @@ MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard")
.init_irq = mx31_init_irq,
.init_time = mx31moboard_timer_init,
.init_machine = mx31moboard_init,
+ .init_late = mx31moboard_late,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 10/19] ARM: imx legacy: vpr200: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (8 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 09/19] ARM: imx legacy: mx31moboard: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 11/19] ARM: imx legacy: imx27-visstrim-m10: " Vladimir Zapolskiy
` (9 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-vpr200.c | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/arch/arm/mach-imx/mach-vpr200.c b/arch/arm/mach-imx/mach-vpr200.c
index 27a8f7e..5ff154c 100644
--- a/arch/arm/mach-imx/mach-vpr200.c
+++ b/arch/arm/mach-imx/mach-vpr200.c
@@ -268,6 +268,22 @@ static void __init vpr200_board_init(void)
imx35_add_fec(NULL);
imx35_add_imx2_wdt();
+
+ imx35_add_imx_uart0(NULL);
+ imx35_add_imx_uart2(NULL);
+
+ imx35_add_ipu_core();
+ imx35_add_mx3_sdc_fb(&mx3fb_pdata);
+
+ imx35_add_fsl_usb2_udc(&otg_device_pdata);
+ imx35_add_mxc_ehci_hs(&usb_host_pdata);
+
+ imx35_add_mxc_nand(&vpr200_nand_board_info);
+ imx35_add_sdhci_esdhc_imx(0, NULL);
+}
+
+static void __init vpr200_late_init(void)
+{
imx_add_gpio_keys(&vpr200_gpio_keys_data);
platform_add_devices(devices, ARRAY_SIZE(devices));
@@ -282,18 +298,6 @@ static void __init vpr200_board_init(void)
else
gpio_direction_input(GPIO_PMIC_INT);
- imx35_add_imx_uart0(NULL);
- imx35_add_imx_uart2(NULL);
-
- imx35_add_ipu_core();
- imx35_add_mx3_sdc_fb(&mx3fb_pdata);
-
- imx35_add_fsl_usb2_udc(&otg_device_pdata);
- imx35_add_mxc_ehci_hs(&usb_host_pdata);
-
- imx35_add_mxc_nand(&vpr200_nand_board_info);
- imx35_add_sdhci_esdhc_imx(0, NULL);
-
vpr200_i2c_devices[1].irq = gpio_to_irq(GPIO_PMIC_INT);
i2c_register_board_info(0, vpr200_i2c_devices,
ARRAY_SIZE(vpr200_i2c_devices));
@@ -313,5 +317,6 @@ MACHINE_START(VPR200, "VPR200")
.init_irq = mx35_init_irq,
.init_time = vpr200_timer_init,
.init_machine = vpr200_board_init,
+ .init_late = vpr200_late_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 11/19] ARM: imx legacy: imx27-visstrim-m10: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (9 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 10/19] ARM: imx legacy: vpr200: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 12/19] ARM: imx legacy: mx27-3ds: " Vladimir Zapolskiy
` (8 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-imx27_visstrim_m10.c | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
index ede2bdb..dd75a47 100644
--- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
+++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
@@ -540,7 +540,6 @@ static void __init visstrim_m10_revision(void)
static void __init visstrim_m10_board_init(void)
{
int ret;
- int mo_version;
imx27_soc_init();
visstrim_m10_revision();
@@ -550,11 +549,6 @@ static void __init visstrim_m10_board_init(void)
if (ret)
pr_err("Failed to setup pins (%d)\n", ret);
- ret = gpio_request_array(visstrim_m10_gpios,
- ARRAY_SIZE(visstrim_m10_gpios));
- if (ret)
- pr_err("Failed to request gpios (%d)\n", ret);
-
imx27_add_imx_ssi(0, &visstrim_m10_ssi_pdata);
imx27_add_imx_uart0(&uart_pdata);
@@ -566,12 +560,26 @@ static void __init visstrim_m10_board_init(void)
imx27_add_mxc_mmc(0, &visstrim_m10_sdhc_pdata);
imx27_add_mxc_ehci_otg(&visstrim_m10_usbotg_pdata);
imx27_add_fec(NULL);
- imx_add_gpio_keys(&visstrim_gpio_keys_platform_data);
+
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
+}
+
+static void __init visstrim_m10_late_init(void)
+{
+ int mo_version, ret;
+
+ ret = gpio_request_array(visstrim_m10_gpios,
+ ARRAY_SIZE(visstrim_m10_gpios));
+ if (ret)
+ pr_err("Failed to request gpios (%d)\n", ret);
+
+ imx_add_gpio_keys(&visstrim_gpio_keys_platform_data);
+
imx_add_platform_device("mx27vis", 0, NULL, 0, &snd_mx27vis_pdata,
sizeof(snd_mx27vis_pdata));
platform_device_register_resndata(NULL, "soc-camera-pdrv", 0, NULL, 0,
&iclink_tvp5150, sizeof(iclink_tvp5150));
+
gpio_led_register_device(0, &visstrim_m10_led_data);
/* Use mother board version to decide what video devices we shall use */
@@ -591,6 +599,7 @@ static void __init visstrim_m10_board_init(void)
visstrim_deinterlace_init();
visstrim_analog_camera_init();
}
+
visstrim_coda_init();
}
@@ -607,5 +616,6 @@ MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10")
.init_irq = mx27_init_irq,
.init_time = visstrim_m10_timer_init,
.init_machine = visstrim_m10_board_init,
+ .init_late = visstrim_m10_late_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 12/19] ARM: imx legacy: mx27-3ds: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (10 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 11/19] ARM: imx legacy: imx27-visstrim-m10: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 13/19] ARM: imx legacy: mx35-3ds: " Vladimir Zapolskiy
` (7 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-mx27_3ds.c | 30 ++++++++++++++++++++----------
1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
index 9ef4640..7ba651a 100644
--- a/arch/arm/mach-imx/mach-mx27_3ds.c
+++ b/arch/arm/mach-imx/mach-mx27_3ds.c
@@ -485,17 +485,32 @@ static const struct imxi2c_platform_data mx27_3ds_i2c0_data __initconst = {
static void __init mx27pdk_init(void)
{
- int ret;
imx27_soc_init();
mxc_gpio_setup_multiple_pins(mx27pdk_pins, ARRAY_SIZE(mx27pdk_pins),
"mx27pdk");
- mx27_3ds_sdhc1_enable_level_translator();
imx27_add_imx_uart0(&uart_pdata);
imx27_add_fec(NULL);
imx27_add_imx_keypad(&mx27_3ds_keymap_data);
- imx27_add_mxc_mmc(0, &sdhc1_pdata);
imx27_add_imx2_wdt();
+
+ imx27_add_spi_imx1(&spi2_pdata);
+ imx27_add_spi_imx0(&spi1_pdata);
+
+ imx27_add_imx_i2c(0, &mx27_3ds_i2c0_data);
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+ imx27_add_imx_fb(&mx27_3ds_fb_data);
+
+ imx27_add_imx_ssi(0, &mx27_3ds_ssi_pdata);
+}
+
+static void __init mx27pdk_late_init(void)
+{
+ int ret;
+
+ mx27_3ds_sdhc1_enable_level_translator();
+ imx27_add_mxc_mmc(0, &sdhc1_pdata);
+
otg_phy_init();
if (otg_mode_host) {
@@ -509,17 +524,12 @@ static void __init mx27pdk_init(void)
if (!otg_mode_host)
imx27_add_fsl_usb2_udc(&otg_device_pdata);
- imx27_add_spi_imx1(&spi2_pdata);
- imx27_add_spi_imx0(&spi1_pdata);
mx27_3ds_spi_devs[0].irq = gpio_to_irq(PMIC_INT);
spi_register_board_info(mx27_3ds_spi_devs,
- ARRAY_SIZE(mx27_3ds_spi_devs));
+ ARRAY_SIZE(mx27_3ds_spi_devs));
if (mxc_expio_init(MX27_CS5_BASE_ADDR, IMX_GPIO_NR(3, 28)))
pr_warn("Init of the debugboard failed, all devices on the debugboard are unusable.\n");
- imx27_add_imx_i2c(0, &mx27_3ds_i2c0_data);
- platform_add_devices(devices, ARRAY_SIZE(devices));
- imx27_add_imx_fb(&mx27_3ds_fb_data);
ret = gpio_request_array(mx27_3ds_camera_gpios,
ARRAY_SIZE(mx27_3ds_camera_gpios));
@@ -529,7 +539,6 @@ static void __init mx27pdk_init(void)
}
imx27_add_mx2_camera(&mx27_3ds_cam_pdata);
- imx27_add_imx_ssi(0, &mx27_3ds_ssi_pdata);
imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
}
@@ -547,5 +556,6 @@ MACHINE_START(MX27_3DS, "Freescale MX27PDK")
.init_irq = mx27_init_irq,
.init_time = mx27pdk_timer_init,
.init_machine = mx27pdk_init,
+ .init_late = mx27pdk_late_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 13/19] ARM: imx legacy: mx35-3ds: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (11 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 12/19] ARM: imx legacy: mx27-3ds: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 14/19] ARM: imx legacy: apf9328: " Vladimir Zapolskiy
` (6 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-mx35_3ds.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx35_3ds.c b/arch/arm/mach-imx/mach-mx35_3ds.c
index 7e315f0..c8c2e09 100644
--- a/arch/arm/mach-imx/mach-mx35_3ds.c
+++ b/arch/arm/mach-imx/mach-mx35_3ds.c
@@ -555,8 +555,6 @@ static const struct imxi2c_platform_data mx35_3ds_i2c0_data __initconst = {
*/
static void __init mx35_3ds_init(void)
{
- struct platform_device *imx35_fb_pdev;
-
imx35_soc_init();
mxc_iomux_v3_setup_multiple_pads(mx35pdk_pads, ARRAY_SIZE(mx35pdk_pads));
@@ -579,9 +577,6 @@ static void __init mx35_3ds_init(void)
imx35_add_mxc_nand(&mx35pdk_nand_board_info);
imx35_add_sdhci_esdhc_imx(0, NULL);
- if (mxc_expio_init(MX35_CS5_BASE_ADDR, IMX_GPIO_NR(1, 1)))
- pr_warn("Init of the debugboard failed, all "
- "devices on the debugboard are unusable.\n");
imx35_add_imx_i2c0(&mx35_3ds_i2c0_data);
i2c_register_board_info(
@@ -590,6 +585,15 @@ static void __init mx35_3ds_init(void)
imx35_add_ipu_core();
platform_device_register(&mx35_3ds_ov2640);
imx35_3ds_init_camera();
+}
+
+static void __init mx35_3ds_late_init(void)
+{
+ struct platform_device *imx35_fb_pdev;
+
+ if (mxc_expio_init(MX35_CS5_BASE_ADDR, IMX_GPIO_NR(1, 1)))
+ pr_warn("Init of the debugboard failed, all "
+ "devices on the debugboard are unusable.\n");
imx35_fb_pdev = imx35_add_mx3_sdc_fb(&mx3fb_pdata);
mx35_3ds_lcd.dev.parent = &imx35_fb_pdev->dev;
@@ -618,6 +622,7 @@ MACHINE_START(MX35_3DS, "Freescale MX35PDK")
.init_irq = mx35_init_irq,
.init_time = mx35pdk_timer_init,
.init_machine = mx35_3ds_init,
+ .init_late = mx35_3ds_late_init,
.reserve = mx35_3ds_reserve,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 14/19] ARM: imx legacy: apf9328: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (12 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 13/19] ARM: imx legacy: mx35-3ds: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 15/19] ARM: imx legacy: scb9328: " Vladimir Zapolskiy
` (5 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-apf9328.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-imx/mach-apf9328.c b/arch/arm/mach-imx/mach-apf9328.c
index ebbb5ab..3f3ab7f 100644
--- a/arch/arm/mach-imx/mach-apf9328.c
+++ b/arch/arm/mach-imx/mach-apf9328.c
@@ -126,7 +126,10 @@ static void __init apf9328_init(void)
imx1_add_imx_uart1(&uart1_pdata);
imx1_add_imx_i2c(&apf9328_i2c_data);
+}
+static void __init apf9328_late_init(void)
+{
dm9000_resources[2].start = gpio_to_irq(IMX_GPIO_NR(2, 14));
dm9000_resources[2].end = gpio_to_irq(IMX_GPIO_NR(2, 14));
platform_add_devices(devices, ARRAY_SIZE(devices));
@@ -143,6 +146,7 @@ MACHINE_START(APF9328, "Armadeus APF9328")
.init_early = imx1_init_early,
.init_irq = mx1_init_irq,
.init_time = apf9328_timer_init,
- .init_machine = apf9328_init,
+ .init_machine = apf9328_init,
+ .init_late = apf9328_late_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 15/19] ARM: imx legacy: scb9328: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (13 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 14/19] ARM: imx legacy: apf9328: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 16/19] ARM: imx legacy: pcm043: " Vladimir Zapolskiy
` (4 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-scb9328.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-imx/mach-scb9328.c b/arch/arm/mach-imx/mach-scb9328.c
index 1f6bc3f..8023769 100644
--- a/arch/arm/mach-imx/mach-scb9328.c
+++ b/arch/arm/mach-imx/mach-scb9328.c
@@ -119,8 +119,12 @@ static void __init scb9328_init(void)
ARRAY_SIZE(mxc_uart1_pins), "UART1");
imx1_add_imx_uart0(&uart_pdata);
+}
+static void __init scb9328_late_init(void)
+{
printk(KERN_INFO"Scb9328: Adding devices\n");
+
dm9000x_resources[2].start = gpio_to_irq(IMX_GPIO_NR(3, 3));
dm9000x_resources[2].end = gpio_to_irq(IMX_GPIO_NR(3, 3));
platform_add_devices(devices, ARRAY_SIZE(devices));
@@ -138,6 +142,7 @@ MACHINE_START(SCB9328, "Synertronixx scb9328")
.init_early = imx1_init_early,
.init_irq = mx1_init_irq,
.init_time = scb9328_timer_init,
- .init_machine = scb9328_init,
+ .init_machine = scb9328_init,
+ .init_late = scb9328_late_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 16/19] ARM: imx legacy: pcm043: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (14 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 15/19] ARM: imx legacy: scb9328: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 17/19] ARM: imx legacy: mx21ads: " Vladimir Zapolskiy
` (3 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-pcm043.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-imx/mach-pcm043.c b/arch/arm/mach-imx/mach-pcm043.c
index e447e59..78e2bf8 100644
--- a/arch/arm/mach-imx/mach-pcm043.c
+++ b/arch/arm/mach-imx/mach-pcm043.c
@@ -363,7 +363,6 @@ static void __init pcm043_init(void)
imx35_add_imx_uart0(&uart_pdata);
imx35_add_mxc_nand(&pcm037_nand_board_info);
- imx35_add_imx_ssi(0, &pcm043_ssi_pdata);
imx35_add_imx_uart1(&uart_pdata);
@@ -387,6 +386,12 @@ static void __init pcm043_init(void)
imx35_add_fsl_usb2_udc(&otg_device_pdata);
imx35_add_flexcan1();
+}
+
+static void __init pcm043_late_init(void)
+{
+ imx35_add_imx_ssi(0, &pcm043_ssi_pdata);
+
imx35_add_sdhci_esdhc_imx(0, &sd1_pdata);
}
@@ -402,6 +407,7 @@ MACHINE_START(PCM043, "Phytec Phycore pcm043")
.init_early = imx35_init_early,
.init_irq = mx35_init_irq,
.init_time = pcm043_timer_init,
- .init_machine = pcm043_init,
+ .init_machine = pcm043_init,
+ .init_late = pcm043_late_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 17/19] ARM: imx legacy: mx21ads: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (15 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 16/19] ARM: imx legacy: pcm043: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 18/19] ARM: imx legacy: mx27ads: " Vladimir Zapolskiy
` (2 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-mx21ads.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c
index 9986f9a..5e36682 100644
--- a/arch/arm/mach-imx/mach-mx21ads.c
+++ b/arch/arm/mach-imx/mach-mx21ads.c
@@ -302,12 +302,16 @@ static void __init mx21ads_board_init(void)
imx21_add_imx_uart0(&uart_pdata_rts);
imx21_add_imx_uart2(&uart_pdata_norts);
imx21_add_imx_uart3(&uart_pdata_rts);
- imx21_add_mxc_mmc(0, &mx21ads_sdhc_pdata);
imx21_add_mxc_nand(&mx21ads_nand_board_info);
- platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
-
imx21_add_imx_fb(&mx21ads_fb_data);
+}
+
+static void __init mx21ads_late_init(void)
+{
+ imx21_add_mxc_mmc(0, &mx21ads_sdhc_pdata);
+
+ platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
mx21ads_cs8900_resources[1].start =
gpio_to_irq(MX21ADS_CS8900A_IRQ_GPIO);
@@ -328,6 +332,7 @@ MACHINE_START(MX21ADS, "Freescale i.MX21ADS")
.init_early = imx21_init_early,
.init_irq = mx21_init_irq,
.init_time = mx21ads_timer_init,
- .init_machine = mx21ads_board_init,
+ .init_machine = mx21ads_board_init,
+ .init_late = mx21ads_late_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 18/19] ARM: imx legacy: mx27ads: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (16 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 17/19] ARM: imx legacy: mx21ads: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 19/19] ARM: imx legacy: pca100: " Vladimir Zapolskiy
2016-09-20 14:43 ` [PATCH 00/19] ARM: imx legacy: move peripheral initializations " Shawn Guo
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-mx27ads.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-imx/mach-mx27ads.c b/arch/arm/mach-imx/mach-mx27ads.c
index a4c389e..a04bb09 100644
--- a/arch/arm/mach-imx/mach-mx27ads.c
+++ b/arch/arm/mach-imx/mach-mx27ads.c
@@ -352,14 +352,20 @@ static void __init mx27ads_board_init(void)
i2c_register_board_info(1, mx27ads_i2c_devices,
ARRAY_SIZE(mx27ads_i2c_devices));
imx27_add_imx_i2c(1, &mx27ads_i2c1_data);
- mx27ads_regulator_init();
imx27_add_imx_fb(&mx27ads_fb_data);
+
+ imx27_add_fec(NULL);
+ imx27_add_mxc_w1();
+}
+
+static void __init mx27ads_late_init(void)
+{
+ mx27ads_regulator_init();
+
imx27_add_mxc_mmc(0, &sdhc1_pdata);
imx27_add_mxc_mmc(1, &sdhc2_pdata);
- imx27_add_fec(NULL);
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
- imx27_add_mxc_w1();
}
static void __init mx27ads_timer_init(void)
@@ -395,5 +401,6 @@ MACHINE_START(MX27ADS, "Freescale i.MX27ADS")
.init_irq = mx27_init_irq,
.init_time = mx27ads_timer_init,
.init_machine = mx27ads_board_init,
+ .init_late = mx27ads_late_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 19/19] ARM: imx legacy: pca100: move peripheral initialization to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (17 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 18/19] ARM: imx legacy: mx27ads: " Vladimir Zapolskiy
@ 2016-09-19 1:37 ` Vladimir Zapolskiy
2016-09-20 14:43 ` [PATCH 00/19] ARM: imx legacy: move peripheral initializations " Shawn Guo
19 siblings, 0 replies; 21+ messages in thread
From: Vladimir Zapolskiy @ 2016-09-19 1:37 UTC (permalink / raw)
To: linux-arm-kernel
The change moves some of peripheral registrations and initializations
(all peripherals dependent on GPIOs) from .init_machine to .init_late
level, this allows to safely shift the shared GPIO controller driver
initialization level after init level of i.MX IOMUXC driver.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
arch/arm/mach-imx/mach-pca100.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/arch/arm/mach-imx/mach-pca100.c b/arch/arm/mach-imx/mach-pca100.c
index 2d1c50b..ed67586 100644
--- a/arch/arm/mach-imx/mach-pca100.c
+++ b/arch/arm/mach-imx/mach-pca100.c
@@ -362,12 +362,8 @@ static void __init pca100_init(void)
if (ret)
printk(KERN_ERR "pca100: Failed to setup pins (%d)\n", ret);
- imx27_add_imx_ssi(0, &pca100_ssi_pdata);
-
imx27_add_imx_uart0(&uart_pdata);
- imx27_add_mxc_mmc(1, &sdhc_pdata);
-
imx27_add_mxc_nand(&pca100_nand_board_info);
/* only the i2c master 1 is used on this CPU card */
@@ -382,6 +378,19 @@ static void __init pca100_init(void)
ARRAY_SIZE(pca100_spi_board_info));
imx27_add_spi_imx0(&pca100_spi0_data);
+ imx27_add_imx_fb(&pca100_fb_data);
+
+ imx27_add_fec(NULL);
+ imx27_add_imx2_wdt();
+ imx27_add_mxc_w1();
+}
+
+static void __init pca100_late_init(void)
+{
+ imx27_add_imx_ssi(0, &pca100_ssi_pdata);
+
+ imx27_add_mxc_mmc(1, &sdhc_pdata);
+
gpio_request(OTG_PHY_CS_GPIO, "usb-otg-cs");
gpio_direction_output(OTG_PHY_CS_GPIO, 1);
gpio_request(USBH2_PHY_CS_GPIO, "usb-host2-cs");
@@ -403,12 +412,6 @@ static void __init pca100_init(void)
if (usbh2_pdata.otg)
imx27_add_mxc_ehci_hs(2, &usbh2_pdata);
-
- imx27_add_imx_fb(&pca100_fb_data);
-
- imx27_add_fec(NULL);
- imx27_add_imx2_wdt();
- imx27_add_mxc_w1();
}
static void __init pca100_timer_init(void)
@@ -421,7 +424,8 @@ MACHINE_START(PCA100, "phyCARD-i.MX27")
.map_io = mx27_map_io,
.init_early = imx27_init_early,
.init_irq = mx27_init_irq,
- .init_machine = pca100_init,
+ .init_machine = pca100_init,
+ .init_late = pca100_late_init,
.init_time = pca100_timer_init,
.restart = mxc_restart,
MACHINE_END
--
2.8.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
` (18 preceding siblings ...)
2016-09-19 1:37 ` [PATCH 19/19] ARM: imx legacy: pca100: " Vladimir Zapolskiy
@ 2016-09-20 14:43 ` Shawn Guo
19 siblings, 0 replies; 21+ messages in thread
From: Shawn Guo @ 2016-09-20 14:43 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Sep 19, 2016 at 04:36:28AM +0300, Vladimir Zapolskiy wrote:
> Vladimir Zapolskiy (19):
> ARM: imx legacy: kzm: move peripheral initialization to .init_late
> ARM: imx legacy: mx31lite: move peripheral initialization to .init_late
> ARM: imx legacy: mx31ads: move peripheral initialization to .init_late
> ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late
> ARM: imx legacy: pcm037: move peripheral initialization to .init_late
> ARM: imx legacy: mx31-3ds: move peripheral initialization to .init_late
> ARM: imx legacy: qong: move peripheral initialization to .init_late
> ARM: imx legacy: armadillo5x0: move peripheral initialization to .init_late
> ARM: imx legacy: mx31moboard: move peripheral initialization to .init_late
> ARM: imx legacy: vpr200: move peripheral initialization to .init_late
> ARM: imx legacy: imx27-visstrim-m10: move peripheral initialization to .init_late
> ARM: imx legacy: mx27-3ds: move peripheral initialization to .init_late
> ARM: imx legacy: mx35-3ds: move peripheral initialization to .init_late
> ARM: imx legacy: apf9328: move peripheral initialization to .init_late
> ARM: imx legacy: scb9328: move peripheral initialization to .init_late
> ARM: imx legacy: pcm043: move peripheral initialization to .init_late
> ARM: imx legacy: mx21ads: move peripheral initialization to .init_late
> ARM: imx legacy: mx27ads: move peripheral initialization to .init_late
> ARM: imx legacy: pca100: move peripheral initialization to .init_late
Applied all, except patch #14 (apf9328) and #15 (scb9328), which are
removed during this development cycle.
Shawn
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2016-09-20 14:43 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-19 1:36 [PATCH 00/19] ARM: imx legacy: move peripheral initializations to .init_late Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 01/19] ARM: imx legacy: kzm: move peripheral initialization " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 02/19] ARM: imx legacy: mx31lite: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 03/19] ARM: imx legacy: mx31ads: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 04/19] ARM: imx legacy: mx31lilly: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 05/19] ARM: imx legacy: pcm037: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 06/19] ARM: imx legacy: mx31-3ds: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 07/19] ARM: imx legacy: qong: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 08/19] ARM: imx legacy: armadillo5x0: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 09/19] ARM: imx legacy: mx31moboard: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 10/19] ARM: imx legacy: vpr200: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 11/19] ARM: imx legacy: imx27-visstrim-m10: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 12/19] ARM: imx legacy: mx27-3ds: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 13/19] ARM: imx legacy: mx35-3ds: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 14/19] ARM: imx legacy: apf9328: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 15/19] ARM: imx legacy: scb9328: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 16/19] ARM: imx legacy: pcm043: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 17/19] ARM: imx legacy: mx21ads: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 18/19] ARM: imx legacy: mx27ads: " Vladimir Zapolskiy
2016-09-19 1:37 ` [PATCH 19/19] ARM: imx legacy: pca100: " Vladimir Zapolskiy
2016-09-20 14:43 ` [PATCH 00/19] ARM: imx legacy: move peripheral initializations " Shawn Guo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).