diff mbox

clk: samsung: Allow modular build of the Audio Subsystem CLKCON driver

Message ID 1467987300-31450-1-git-send-email-s.nawrocki@samsung.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Any clock dependencies can be properly handled with deferred probing
so we can remove core_initcall and switch to a proper loadable platform
driver module.
This change has been tested on Exynos4412 Odroid U3 based board.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
---
 drivers/clk/samsung/Kconfig            |  9 +++++++++
 drivers/clk/samsung/Makefile           |  2 +-
 drivers/clk/samsung/clk-exynos-audss.c | 12 +-----------
 3 files changed, 11 insertions(+), 12 deletions(-)

Comments

Michael Turquette July 8, 2016, 4:56 p.m. UTC | #1
Quoting Sylwester Nawrocki (2016-07-08 07:15:00)
> Any clock dependencies can be properly handled with deferred probing
> so we can remove core_initcall and switch to a proper loadable platform
> driver module.
> This change has been tested on Exynos4412 Odroid U3 based board.
> 
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>

Looks good to me.

Regards,
Mike

> ---
>  drivers/clk/samsung/Kconfig            |  9 +++++++++
>  drivers/clk/samsung/Makefile           |  2 +-
>  drivers/clk/samsung/clk-exynos-audss.c | 12 +-----------
>  3 files changed, 11 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/clk/samsung/Kconfig b/drivers/clk/samsung/Kconfig
> index 20c5fe9..addc652 100644
> --- a/drivers/clk/samsung/Kconfig
> +++ b/drivers/clk/samsung/Kconfig
> @@ -9,6 +9,15 @@ config EXYNOS_ARM64_COMMON_CLK
>         bool "Samsung Exynos ARMv8-family clock controller support" if COMPILE_TEST
>         depends on COMMON_CLK_SAMSUNG
>  
> +config EXYNOS_AUDSS_CLK_CON
> +       tristate "Samsung Exynos AUDSS clock controller support"
> +       depends on COMMON_CLK_SAMSUNG
> +       default y if ARCH_EXYNOS
> +       help
> +         Support for the Audio Subsystem CLKCON clock controller present
> +         on some Exynos SoC variants. Choose M or Y here if you want to
> +         use audio devices such as I2S, PCM, etc.
> +
>  # For S3C24XX platforms, select following symbols:
>  config S3C2410_COMMON_CLK
>         bool "Samsung S3C2410 clock controller support" if COMPILE_TEST
> diff --git a/drivers/clk/samsung/Makefile b/drivers/clk/samsung/Makefile
> index fc367d4..57f4dc6 100644
> --- a/drivers/clk/samsung/Makefile
> +++ b/drivers/clk/samsung/Makefile
> @@ -12,7 +12,7 @@ obj-$(CONFIG_SOC_EXYNOS5410)  += clk-exynos5410.o
>  obj-$(CONFIG_SOC_EXYNOS5420)   += clk-exynos5420.o
>  obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)  += clk-exynos5433.o
>  obj-$(CONFIG_SOC_EXYNOS5440)   += clk-exynos5440.o
> -obj-$(CONFIG_ARCH_EXYNOS)      += clk-exynos-audss.o
> +obj-$(CONFIG_EXYNOS_AUDSS_CLK_CON) += clk-exynos-audss.o
>  obj-$(CONFIG_ARCH_EXYNOS)      += clk-exynos-clkout.o
>  obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)  += clk-exynos7.o
>  obj-$(CONFIG_S3C2410_COMMON_CLK)+= clk-s3c2410.o
> diff --git a/drivers/clk/samsung/clk-exynos-audss.c b/drivers/clk/samsung/clk-exynos-audss.c
> index 4e9584d..bdf8b97 100644
> --- a/drivers/clk/samsung/clk-exynos-audss.c
> +++ b/drivers/clk/samsung/clk-exynos-audss.c
> @@ -273,17 +273,7 @@ static struct platform_driver exynos_audss_clk_driver = {
>         .remove = exynos_audss_clk_remove,
>  };
>  
> -static int __init exynos_audss_clk_init(void)
> -{
> -       return platform_driver_register(&exynos_audss_clk_driver);
> -}
> -core_initcall(exynos_audss_clk_init);
> -
> -static void __exit exynos_audss_clk_exit(void)
> -{
> -       platform_driver_unregister(&exynos_audss_clk_driver);
> -}
> -module_exit(exynos_audss_clk_exit);
> +module_platform_driver(exynos_audss_clk_driver);
>  
>  MODULE_AUTHOR("Padmavathi Venna <padma.v@samsung.com>");
>  MODULE_DESCRIPTION("Exynos Audio Subsystem Clock Controller");
> -- 
> 1.9.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-clk" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Krzysztof Kozlowski July 11, 2016, 8:14 a.m. UTC | #2
On Fri, Jul 8, 2016 at 4:15 PM, Sylwester Nawrocki
<s.nawrocki@samsung.com> wrote:
> Any clock dependencies can be properly handled with deferred probing
> so we can remove core_initcall and switch to a proper loadable platform
> driver module.
> This change has been tested on Exynos4412 Odroid U3 based board.
>
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> ---
>  drivers/clk/samsung/Kconfig            |  9 +++++++++
>  drivers/clk/samsung/Makefile           |  2 +-
>  drivers/clk/samsung/clk-exynos-audss.c | 12 +-----------
>  3 files changed, 11 insertions(+), 12 deletions(-)
>

Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>

Best regards,
Krzysztof
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
On 07/08/2016 06:56 PM, Michael Turquette wrote:
> Quoting Sylwester Nawrocki (2016-07-08 07:15:00)
>> > Any clock dependencies can be properly handled with deferred probing
>> > so we can remove core_initcall and switch to a proper loadable platform
>> > driver module.
>> > This change has been tested on Exynos4412 Odroid U3 based board.
>> > 
>> > Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
>
> Looks good to me.

Thanks, I have added this patch to my tree, however at the moment
I have only two patches queued there. Please feel free to apply
this patch directly to clk-next.
Krzysztof Kozłowski July 19, 2016, 9:26 a.m. UTC | #4
On Wed, Jul 13, 2016 at 12:23 PM, Sylwester Nawrocki
<s.nawrocki@samsung.com> wrote:
> On 07/08/2016 06:56 PM, Michael Turquette wrote:
>> Quoting Sylwester Nawrocki (2016-07-08 07:15:00)
>>> > Any clock dependencies can be properly handled with deferred probing
>>> > so we can remove core_initcall and switch to a proper loadable platform
>>> > driver module.
>>> > This change has been tested on Exynos4412 Odroid U3 based board.
>>> >
>>> > Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
>>
>> Looks good to me.
>
> Thanks, I have added this patch to my tree, however at the moment
> I have only two patches queued there. Please feel free to apply
> this patch directly to clk-next.


Unfortunately this breaks the audio on Odroid XU3 (simple-card). There
is no sound from:
$ aplay /usr/share/sounds/alsa/Front_Right.wav
and the command does not exit.

Sylwester,
Are you going to look at this?

Best regards,
Krzysztof
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
On 07/19/2016 11:26 AM, Krzysztof Kozłowski wrote:
> On Wed, Jul 13, 2016 at 12:23 PM, Sylwester Nawrocki
> <s.nawrocki@samsung.com> wrote:
>> > On 07/08/2016 06:56 PM, Michael Turquette wrote:
>>> >> Quoting Sylwester Nawrocki (2016-07-08 07:15:00)
>>>>> >>> > Any clock dependencies can be properly handled with deferred probing
>>>>> >>> > so we can remove core_initcall and switch to a proper loadable platform
>>>>> >>> > driver module.
>>>>> >>> > This change has been tested on Exynos4412 Odroid U3 based board.
>>>>> >>> >
>>>>> >>> > Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
>>> >>
>>> >> Looks good to me.
>> >
>> > Thanks, I have added this patch to my tree, however at the moment
>> > I have only two patches queued there. Please feel free to apply
>> > this patch directly to clk-next.
> 
> Unfortunately this breaks the audio on Odroid XU3 (simple-card). There
> is no sound from:
> $ aplay /usr/share/sounds/alsa/Front_Right.wav
> and the command does not exit.
> 
> Sylwester,
> Are you going to look at this?

Thanks for the bug report, I will check what's the problem here.
Odroid U3 also uses simple card and same codec and it all works there.

--
Regards,
Sylwester
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
On 07/19/2016 11:55 AM, Sylwester Nawrocki wrote:
>> Unfortunately this breaks the audio on Odroid XU3 (simple-card). There
>> > is no sound from:
>> > $ aplay /usr/share/sounds/alsa/Front_Right.wav
>> > and the command does not exit.
>> > 
>> > Sylwester,
>> > Are you going to look at this?
>
> Thanks for the bug report, I will check what's the problem here.
> Odroid U3 also uses simple card and same codec and it all works there.

It turned out that the difference was using ADMA on XU3 vs. PDMA on U3.
AUDSS clock controller provides a clock for ADMA and converting the AUDSS
clk driver to a loadable module causes deferring ADMA's controller
initialization, which was not handled properly by the sound component
drivers.
I've sent a patch to fix the issue, added you at Cc.
diff mbox

Patch

diff --git a/drivers/clk/samsung/Kconfig b/drivers/clk/samsung/Kconfig
index 20c5fe9..addc652 100644
--- a/drivers/clk/samsung/Kconfig
+++ b/drivers/clk/samsung/Kconfig
@@ -9,6 +9,15 @@  config EXYNOS_ARM64_COMMON_CLK
 	bool "Samsung Exynos ARMv8-family clock controller support" if COMPILE_TEST
 	depends on COMMON_CLK_SAMSUNG
 
+config EXYNOS_AUDSS_CLK_CON
+	tristate "Samsung Exynos AUDSS clock controller support"
+	depends on COMMON_CLK_SAMSUNG
+	default y if ARCH_EXYNOS
+	help
+	  Support for the Audio Subsystem CLKCON clock controller present
+	  on some Exynos SoC variants. Choose M or Y here if you want to
+	  use audio devices such as I2S, PCM, etc.
+
 # For S3C24XX platforms, select following symbols:
 config S3C2410_COMMON_CLK
 	bool "Samsung S3C2410 clock controller support" if COMPILE_TEST
diff --git a/drivers/clk/samsung/Makefile b/drivers/clk/samsung/Makefile
index fc367d4..57f4dc6 100644
--- a/drivers/clk/samsung/Makefile
+++ b/drivers/clk/samsung/Makefile
@@ -12,7 +12,7 @@  obj-$(CONFIG_SOC_EXYNOS5410)	+= clk-exynos5410.o
 obj-$(CONFIG_SOC_EXYNOS5420)	+= clk-exynos5420.o
 obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)	+= clk-exynos5433.o
 obj-$(CONFIG_SOC_EXYNOS5440)	+= clk-exynos5440.o
-obj-$(CONFIG_ARCH_EXYNOS)	+= clk-exynos-audss.o
+obj-$(CONFIG_EXYNOS_AUDSS_CLK_CON) += clk-exynos-audss.o
 obj-$(CONFIG_ARCH_EXYNOS)	+= clk-exynos-clkout.o
 obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK)	+= clk-exynos7.o
 obj-$(CONFIG_S3C2410_COMMON_CLK)+= clk-s3c2410.o
diff --git a/drivers/clk/samsung/clk-exynos-audss.c b/drivers/clk/samsung/clk-exynos-audss.c
index 4e9584d..bdf8b97 100644
--- a/drivers/clk/samsung/clk-exynos-audss.c
+++ b/drivers/clk/samsung/clk-exynos-audss.c
@@ -273,17 +273,7 @@  static struct platform_driver exynos_audss_clk_driver = {
 	.remove = exynos_audss_clk_remove,
 };
 
-static int __init exynos_audss_clk_init(void)
-{
-	return platform_driver_register(&exynos_audss_clk_driver);
-}
-core_initcall(exynos_audss_clk_init);
-
-static void __exit exynos_audss_clk_exit(void)
-{
-	platform_driver_unregister(&exynos_audss_clk_driver);
-}
-module_exit(exynos_audss_clk_exit);
+module_platform_driver(exynos_audss_clk_driver);
 
 MODULE_AUTHOR("Padmavathi Venna <padma.v@samsung.com>");
 MODULE_DESCRIPTION("Exynos Audio Subsystem Clock Controller");