mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
To: Tony Lindgren <tony@atomide.com>
Cc: alsa-devel@alsa-project.org, linux-omap@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Jarkko Nikula <jarkko.nikula@bitmer.com>,
	Liam Girdwood <lrg@ti.com>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	linux-input@vger.kernel.org
Subject: [PATCH v2 1/7][RESEND] ARM: OMAP1: ams-delta: register latch dependent devices later
Date: Tue, 20 Dec 2011 00:28:32 +0100	[thread overview]
Message-ID: <201112200028.32947.jkrzyszt@tis.icnet.pl> (raw)
In-Reply-To: <83e934adfc691b347534edb7788a67ab2e6bd7e1.1324331816.git.jkrzyszt@tis.icnet.pl>

Resending because of a typo in the Cc: list, sorry.

8<--------------------------

In preparation to converting Amstrad Delta on-board latches to
basic_mmio_gpio devices, registration of platform devices which depend
on latches and will require initialization of their GPIO pins first,
should be moved out of .machine_init down to late_initcall level, as the
gpio-generic driver is not available until device_initcall time.  The
latch reset operation, which will be replaced with GPIO initialization,
must also be moved to late_initcall for the same reason.

Since there was already another, separate arch_initcall function for
setting up one of those latch dependent devices, the on-board modem
device, reuse that function, i.e., rename it to a name that matches the
new purpose, extend with other device setup relocated from
.machine_init, and move down to the late_initcall level.

While being at it, add missing gpio_free() in case the modem platform
device registration fails.

In addition, defer registration of the Amstrad Delta ASoC and serio
devices, done from their device driver files, until late_initcall time,
as those drivers will depend on their GPIO pins already requested from
the board late_init() function until updated to register their GPIO pins
themselves.

Thanks to Tony Lindgren <tony@atomide.com> who suggested this approach
instead of shifting up the gpio-generic driver initialization.

Created and tested against linux-3.2-rc6.

Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
---
This patch was not present in the initial submission, it replaces the
old patch 1/10, providing an alternative solution not touching the
gpio-generic driver.

Thanks,
Janusz


 arch/arm/mach-omap1/board-ams-delta.c |   28 ++++++++++++++++++++--------
 drivers/input/serio/ams_delta_serio.c |    4 ++++
 sound/soc/omap/ams-delta.c            |    4 ++++
 3 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index b0f15d2..50987c9 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -275,11 +275,14 @@ static struct omap1_cam_platform_data ams_delta_camera_platform_data = {
 };
 
 static struct platform_device *ams_delta_devices[] __initdata = {
-	&ams_delta_nand_device,
 	&ams_delta_kp_device,
+	&ams_delta_camera_device,
+};
+
+static struct platform_device *late_devices[] __initdata = {
+	&ams_delta_nand_device,
 	&ams_delta_lcd_device,
 	&ams_delta_led_device,
-	&ams_delta_camera_device,
 };
 
 static void __init ams_delta_init(void)
@@ -307,9 +310,6 @@ static void __init ams_delta_init(void)
 	omap_serial_init();
 	omap_register_i2c_bus(1, 100, NULL, 0);
 
-	/* Clear latch2 (NAND, LCD, modem enable) */
-	ams_delta_latch2_write(~0, 0);
-
 	omap1_usb_init(&ams_delta_usb_config);
 	omap1_set_camera_info(&ams_delta_camera_platform_data);
 #ifdef CONFIG_LEDS_TRIGGERS
@@ -345,13 +345,18 @@ static struct platform_device ams_delta_modem_device = {
 	},
 };
 
-static int __init ams_delta_modem_init(void)
+static int __init late_init(void)
 {
 	int err;
 
 	if (!machine_is_ams_delta())
 		return -ENODEV;
 
+	/* Clear latch2 (NAND, LCD, modem enable) */
+	ams_delta_latch2_write(~0, 0);
+
+	platform_add_devices(late_devices, ARRAY_SIZE(late_devices));
+
 	omap_cfg_reg(M14_1510_GPIO2);
 	ams_delta_modem_ports[0].irq =
 			gpio_to_irq(AMS_DELTA_GPIO_PIN_MODEM_IRQ);
@@ -367,9 +372,16 @@ static int __init ams_delta_modem_init(void)
 		AMS_DELTA_LATCH2_MODEM_NRESET | AMS_DELTA_LATCH2_MODEM_CODEC,
 		AMS_DELTA_LATCH2_MODEM_NRESET | AMS_DELTA_LATCH2_MODEM_CODEC);
 
-	return platform_device_register(&ams_delta_modem_device);
+	err = platform_device_register(&ams_delta_modem_device);
+	if (err)
+		goto gpio_free;
+	return 0;
+
+gpio_free:
+	gpio_free(AMS_DELTA_GPIO_PIN_MODEM_IRQ);
+	return err;
 }
-arch_initcall(ams_delta_modem_init);
+late_initcall(late_init);
 
 static void __init ams_delta_map_io(void)
 {
diff --git a/drivers/input/serio/ams_delta_serio.c b/drivers/input/serio/ams_delta_serio.c
index d4d08bd..56ffd7c 100644
--- a/drivers/input/serio/ams_delta_serio.c
+++ b/drivers/input/serio/ams_delta_serio.c
@@ -165,6 +165,9 @@ serio:
 	kfree(ams_delta_serio);
 	return err;
 }
+#ifndef MODULE
+late_initcall(ams_delta_serio_init);
+#else
 module_init(ams_delta_serio_init);
 
 static void __exit ams_delta_serio_exit(void)
@@ -175,3 +178,4 @@ static void __exit ams_delta_serio_exit(void)
 	gpio_free(AMS_DELTA_GPIO_PIN_KEYBRD_DATA);
 }
 module_exit(ams_delta_serio_exit);
+#endif
diff --git a/sound/soc/omap/ams-delta.c b/sound/soc/omap/ams-delta.c
index ccb8a6a..1764a3b 100644
--- a/sound/soc/omap/ams-delta.c
+++ b/sound/soc/omap/ams-delta.c
@@ -636,6 +636,9 @@ err:
 	platform_device_put(ams_delta_audio_platform_device);
 	return ret;
 }
+#ifndef MODULE
+late_initcall(ams_delta_module_init);
+#else
 module_init(ams_delta_module_init);
 
 static void __exit ams_delta_module_exit(void)
@@ -657,6 +660,7 @@ static void __exit ams_delta_module_exit(void)
 	platform_device_unregister(ams_delta_audio_platform_device);
 }
 module_exit(ams_delta_module_exit);
+#endif
 
 MODULE_AUTHOR("Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>");
 MODULE_DESCRIPTION("ALSA SoC driver for Amstrad E3 (Delta) videophone");
-- 
1.7.3.4


  parent reply	other threads:[~2011-12-19 23:29 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-11 20:11 [PATCH 00/10] ARM: OMAP1: ams-delta: replace custom I/O with GPIO Janusz Krzysztofik
2011-12-11 20:11 ` [PATCH 01/10] GPIO: gpio-generic: Move initialization up to postcore Janusz Krzysztofik
2011-12-12 18:04   ` Tony Lindgren
2011-12-12 23:05     ` Janusz Krzysztofik
2011-12-12 23:15       ` Tony Lindgren
2011-12-12 23:44         ` Janusz Krzysztofik
2011-12-12 23:55           ` Tony Lindgren
2011-12-13  0:15             ` Janusz Krzysztofik
2011-12-14 13:10             ` Janusz Krzysztofik
2011-12-14 18:21               ` Tony Lindgren
2011-12-14 20:07                 ` Janusz Krzysztofik
2011-12-14 22:10                   ` Tony Lindgren
2011-12-14 11:13   ` Janusz Krzysztofik
2011-12-11 20:12 ` [PATCH 02/10] ARM: OMAP1: ams-delta: Convert latches to basic_mmio_gpio Janusz Krzysztofik
2011-12-11 20:12 ` [PATCH 03/10] ARM: OMAP1: ams-delta: Supersede custom led device by leds-gpio Janusz Krzysztofik
2011-12-11 20:12 ` [PATCH 04/10] LED: Drop leds-ams-delta driver Janusz Krzysztofik
2011-12-11 20:12 ` [PATCH 05/10] MTD: NAND: ams-delta: Use GPIO instead of custom I/O Janusz Krzysztofik
2011-12-11 20:12 ` [PATCH 06/10] ARM: OMAP1: ams-delta: Use GPIO API in modem setup Janusz Krzysztofik
2011-12-11 20:12 ` [PATCH 07/10] ASoC: OMAP: ams-delta: Drive modem/codec pins over GPIO API Janusz Krzysztofik
2011-12-12  4:29   ` Mark Brown
2011-12-21 18:33   ` Liam Girdwood
2011-12-21 22:14     ` Janusz Krzysztofik
2011-12-22  9:25       ` Girdwood, Liam
2011-12-11 20:12 ` [PATCH 08/10] omapfb: lcd_ams_delta: Drive control lines over GPIO Janusz Krzysztofik
2011-12-12 11:24   ` Tomi Valkeinen
2011-12-11 20:12 ` [PATCH 09/10] input: serio: ams-delta: Toggle keyboard power " Janusz Krzysztofik
2011-12-12  8:18   ` Dmitry Torokhov
2011-12-11 20:12 ` [PATCH 10/10] ARM: OMAP1: ams-delta: Drop custom I/O functions Janusz Krzysztofik
2011-12-12  5:00 ` [PATCH 00/10] ARM: OMAP1: ams-delta: replace custom I/O with GPIO Jonathan McDowell
2011-12-19 23:08 ` [PATCH v2 0/7] " Janusz Krzysztofik
2011-12-19 23:08   ` [PATCH v2 2/7] ARM: OMAP1: ams-delta: convert latches to basic_mmio_gpio Janusz Krzysztofik
2011-12-20  0:06     ` Tony Lindgren
2011-12-20  0:59       ` Janusz Krzysztofik
2011-12-20  1:04         ` Tony Lindgren
2011-12-20  1:18           ` Janusz Krzysztofik
2011-12-20  2:13             ` Tony Lindgren
2011-12-20  2:24           ` [PATCH v2 2/7 v2] " Janusz Krzysztofik
2011-12-19 23:08   ` [PATCH v2 3/7] ARM: OMAP1: ams-delta: supersede custom led device by leds-gpio Janusz Krzysztofik
2011-12-19 23:08   ` [PATCH v2 4/7] LED: drop leds-ams-delta driver Janusz Krzysztofik
2011-12-19 23:08   ` [PATCH v2 5/7] MTD: NAND: ams-delta: use GPIO instead of custom I/O Janusz Krzysztofik
2011-12-21 19:12     ` Tony Lindgren
2011-12-21 19:45       ` Janusz Krzysztofik
2011-12-21 20:56     ` Artem Bityutskiy
2011-12-19 23:08   ` [PATCH v2 6/7] omapfb: lcd_ams_delta: drive control lines over GPIO Janusz Krzysztofik
2011-12-19 23:08   ` [PATCH v2 7/7] input: serio: ams-delta: toggle keyboard power " Janusz Krzysztofik
2011-12-20 22:10     ` [PATCH] " Janusz Krzysztofik
2011-12-21 19:09       ` Tony Lindgren
2011-12-21 19:55         ` Janusz Krzysztofik
2011-12-22 17:45           ` Dmitry Torokhov
2011-12-22 18:06             ` Tony Lindgren
     [not found] ` <83e934adfc691b347534edb7788a67ab2e6bd7e1.1324331816.git.jkrzyszt@tis.icnet.pl>
2011-12-19 23:28   ` Janusz Krzysztofik [this message]
2011-12-20 18:06     ` [PATCH v2 1/7][RESEND] ARM: OMAP1: ams-delta: register latch dependent devices later Tony Lindgren
2011-12-20 20:34       ` Janusz Krzysztofik
2011-12-20 20:57         ` Tony Lindgren
2011-12-20 20:40     ` Russell King - ARM Linux
2011-12-20 20:51       ` [alsa-devel] " Janusz Krzysztofik
2011-12-20 21:54     ` [PATCH v2 1/7 v2] " Janusz Krzysztofik
2011-12-21 19:08       ` Tony Lindgren
2011-12-21 19:51         ` Janusz Krzysztofik
2011-12-21 20:07           ` Tony Lindgren
2011-12-22 10:39             ` Janusz Krzysztofik
2011-12-22 11:08               ` Jarkko Nikula
2011-12-22 11:10                 ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201112200028.32947.jkrzyszt@tis.icnet.pl \
    --to=jkrzyszt@tis.icnet.pl \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jarkko.nikula@bitmer.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=lrg@ti.com \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®