From: Tony Lindgren <tony@atomide.com>
To: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
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: Re: [PATCH v2 1/7][RESEND] ARM: OMAP1: ams-delta: register latch dependent devices later
Date: Tue, 20 Dec 2011 10:06:11 -0800 [thread overview]
Message-ID: <20111220180610.GB24444@atomide.com> (raw)
In-Reply-To: <201112200028.32947.jkrzyszt@tis.icnet.pl>
* Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> [111219 14:57]:
> 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.
...
> --- 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");
This looks a bit odd.. I think these drivers should be converted to
a proper platform_driver so you can get rid of the machine_is_ams_delta
check in the init. Then you can rely on the probe to match the
device. To deal with the init order issues, you can pass a set_power
function pointer in platform_data that the driver can use. Or
set up a fixed regulator for it.
Regards,
Tony
WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 1/7][RESEND] ARM: OMAP1: ams-delta: register latch dependent devices later
Date: Tue, 20 Dec 2011 10:06:11 -0800 [thread overview]
Message-ID: <20111220180610.GB24444@atomide.com> (raw)
In-Reply-To: <201112200028.32947.jkrzyszt@tis.icnet.pl>
* Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> [111219 14:57]:
> 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.
...
> --- 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");
This looks a bit odd.. I think these drivers should be converted to
a proper platform_driver so you can get rid of the machine_is_ams_delta
check in the init. Then you can rely on the probe to match the
device. To deal with the init order issues, you can pass a set_power
function pointer in platform_data that the driver can use. Or
set up a fixed regulator for it.
Regards,
Tony
next prev parent reply other threads:[~2011-12-20 18:06 UTC|newest]
Thread overview: 167+ 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 ` Janusz Krzysztofik
2011-12-11 20:11 ` Janusz Krzysztofik
2011-12-11 20:11 ` Janusz Krzysztofik
2011-12-11 20:11 ` Janusz Krzysztofik
2011-12-11 20:11 ` [PATCH 01/10] GPIO: gpio-generic: Move initialization up to postcore Janusz Krzysztofik
2011-12-11 20:11 ` Janusz Krzysztofik
2011-12-11 20:11 ` Janusz Krzysztofik
2011-12-12 18:04 ` Tony Lindgren
2011-12-12 18:04 ` Tony Lindgren
2011-12-12 23:05 ` Janusz Krzysztofik
2011-12-12 23:05 ` Janusz Krzysztofik
2011-12-12 23:15 ` Tony Lindgren
2011-12-12 23:15 ` Tony Lindgren
2011-12-12 23:44 ` Janusz Krzysztofik
2011-12-12 23:44 ` Janusz Krzysztofik
2011-12-12 23:55 ` Tony Lindgren
2011-12-12 23:55 ` Tony Lindgren
2011-12-13 0:15 ` Janusz Krzysztofik
2011-12-13 0:15 ` Janusz Krzysztofik
2011-12-14 13:10 ` Janusz Krzysztofik
2011-12-14 13:10 ` Janusz Krzysztofik
2011-12-14 18:21 ` Tony Lindgren
2011-12-14 18:21 ` Tony Lindgren
2011-12-14 20:07 ` Janusz Krzysztofik
2011-12-14 20:07 ` Janusz Krzysztofik
2011-12-14 22:10 ` Tony Lindgren
2011-12-14 22:10 ` Tony Lindgren
2011-12-14 11:13 ` Janusz Krzysztofik
2011-12-14 11:13 ` Janusz Krzysztofik
2011-12-11 20:11 ` Janusz Krzysztofik
2011-12-11 20:11 ` 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 ` 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 ` Janusz Krzysztofik
2011-12-11 20:12 ` [PATCH 04/10] LED: Drop leds-ams-delta driver Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` 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 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` 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 ` 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-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-12 4:29 ` Mark Brown
2011-12-12 4:29 ` Mark Brown
2011-12-21 18:33 ` Liam Girdwood
2011-12-21 18:33 ` Liam Girdwood
2011-12-21 22:14 ` Janusz Krzysztofik
2011-12-21 22:14 ` Janusz Krzysztofik
2011-12-21 22:14 ` Janusz Krzysztofik
2011-12-22 9:25 ` Girdwood, Liam
2011-12-22 9:25 ` Girdwood, Liam
2011-12-22 9:25 ` Girdwood, Liam
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` [PATCH 08/10] omapfb: lcd_ams_delta: Drive control lines over GPIO Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-12 11:24 ` [PATCH 08/10] omapfb: lcd_ams_delta: Drive control lines over Tomi Valkeinen
2011-12-12 11:24 ` [PATCH 08/10] omapfb: lcd_ams_delta: Drive control lines over GPIO Tomi Valkeinen
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-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-11 20:12 ` Janusz Krzysztofik
2011-12-12 8:18 ` Dmitry Torokhov
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-11 20:12 ` Janusz Krzysztofik
2011-12-12 5:00 ` [PATCH 00/10] ARM: OMAP1: ams-delta: replace custom I/O with GPIO Jonathan McDowell
2011-12-12 5:00 ` Jonathan McDowell
2011-12-12 5:00 ` Jonathan McDowell
2011-12-12 5:00 ` [PATCH 00/10] ARM: OMAP1: ams-delta: replace custom I/O with Jonathan McDowell
2011-12-19 23:08 ` [PATCH v2 0/7] ARM: OMAP1: ams-delta: replace custom I/O with GPIO Janusz Krzysztofik
2011-12-19 23:08 ` Janusz Krzysztofik
2011-12-19 23:08 ` Janusz Krzysztofik
2011-12-19 23:08 ` 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-19 23:08 ` Janusz Krzysztofik
2011-12-20 0:06 ` Tony Lindgren
2011-12-20 0:06 ` Tony Lindgren
2011-12-20 0:59 ` Janusz Krzysztofik
2011-12-20 0:59 ` Janusz Krzysztofik
2011-12-20 1:04 ` Tony Lindgren
2011-12-20 1:04 ` Tony Lindgren
2011-12-20 1:18 ` Janusz Krzysztofik
2011-12-20 1:18 ` Janusz Krzysztofik
2011-12-20 2:13 ` Tony Lindgren
2011-12-20 2:13 ` Tony Lindgren
2011-12-20 2:13 ` Tony Lindgren
2011-12-20 2:24 ` [PATCH v2 2/7 v2] " Janusz Krzysztofik
2011-12-20 2:24 ` 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 ` Janusz Krzysztofik
2011-12-19 23:08 ` [PATCH v2 4/7] LED: drop leds-ams-delta driver Janusz Krzysztofik
2011-12-19 23:08 ` 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-19 23:08 ` Janusz Krzysztofik
2011-12-19 23:08 ` Janusz Krzysztofik
2011-12-21 19:12 ` Tony Lindgren
2011-12-21 19:12 ` Tony Lindgren
2011-12-21 19:12 ` Tony Lindgren
2011-12-21 19:45 ` Janusz Krzysztofik
2011-12-21 19:45 ` Janusz Krzysztofik
2011-12-21 19:45 ` Janusz Krzysztofik
2011-12-21 20:56 ` Artem Bityutskiy
2011-12-21 20:56 ` Artem Bityutskiy
2011-12-21 20:56 ` Artem Bityutskiy
2011-12-19 23:08 ` [PATCH v2 7/7] input: serio: ams-delta: toggle keyboard power over GPIO Janusz Krzysztofik
2011-12-19 23:08 ` Janusz Krzysztofik
2011-12-20 22:10 ` [PATCH] " Janusz Krzysztofik
2011-12-20 22:10 ` Janusz Krzysztofik
2011-12-21 19:09 ` Tony Lindgren
2011-12-21 19:09 ` Tony Lindgren
2011-12-21 19:55 ` Janusz Krzysztofik
2011-12-21 19:55 ` Janusz Krzysztofik
2011-12-22 17:45 ` Dmitry Torokhov
2011-12-22 17:45 ` Dmitry Torokhov
2011-12-22 18:06 ` Tony Lindgren
2011-12-22 18:06 ` Tony Lindgren
2011-12-19 23:08 ` [PATCH v2 6/7] omapfb: lcd_ams_delta: drive control lines " Janusz Krzysztofik
2011-12-19 23:08 ` Janusz Krzysztofik
2011-12-19 23:08 ` Janusz Krzysztofik
[not found] ` <83e934adfc691b347534edb7788a67ab2e6bd7e1.1324331816.git.jkrzyszt@tis.icnet.pl>
2011-12-19 23:28 ` [PATCH v2 1/7][RESEND] ARM: OMAP1: ams-delta: register latch dependent devices later Janusz Krzysztofik
2011-12-19 23:28 ` Janusz Krzysztofik
2011-12-20 18:06 ` Tony Lindgren [this message]
2011-12-20 18:06 ` Tony Lindgren
2011-12-20 20:34 ` Janusz Krzysztofik
2011-12-20 20:34 ` Janusz Krzysztofik
2011-12-20 20:57 ` Tony Lindgren
2011-12-20 20:57 ` Tony Lindgren
2011-12-20 20:40 ` Russell King - ARM Linux
2011-12-20 20:40 ` Russell King - ARM Linux
2011-12-20 20:40 ` Russell King - ARM Linux
2011-12-20 20:51 ` [alsa-devel] " Janusz Krzysztofik
2011-12-20 20:51 ` Janusz Krzysztofik
2011-12-20 21:54 ` [PATCH v2 1/7 v2] " Janusz Krzysztofik
2011-12-20 21:54 ` Janusz Krzysztofik
2011-12-21 19:08 ` Tony Lindgren
2011-12-21 19:08 ` Tony Lindgren
2011-12-21 19:08 ` Tony Lindgren
2011-12-21 19:51 ` Janusz Krzysztofik
2011-12-21 19:51 ` Janusz Krzysztofik
2011-12-21 19:51 ` Janusz Krzysztofik
2011-12-21 20:07 ` Tony Lindgren
2011-12-21 20:07 ` Tony Lindgren
2011-12-22 10:39 ` Janusz Krzysztofik
2011-12-22 10:39 ` Janusz Krzysztofik
2011-12-22 11:08 ` Jarkko Nikula
2011-12-22 11:08 ` Jarkko Nikula
2011-12-22 11:10 ` Mark Brown
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=20111220180610.GB24444@atomide.com \
--to=tony@atomide.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=dmitry.torokhov@gmail.com \
--cc=jarkko.nikula@bitmer.com \
--cc=jkrzyszt@tis.icnet.pl \
--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 \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.