From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 02/17] ARM: at91: add Kconfig options for common clk support
Date: Wed, 16 Oct 2013 17:33:07 +0200 [thread overview]
Message-ID: <525EB1B3.8070309@atmel.com> (raw)
In-Reply-To: <1381477081-6041-3-git-send-email-b.brezillon@overkiz.com>
On 11/10/2013 09:37, Boris BREZILLON :
> This patch adds the following Kconfig options to prepare the transition to
> common clk framework:
>
> - AT91_USE_OLD_CLK: this option is selected by every SoC which does not
> support new at91 clks based on common clk framework (SoC which does not
> define the clock tree in its device tree).
> This options is also selected when the user choose non dt boards support
> (new at91 clks can only be registered from a device tree definition).
>
> - COMMON_CLK_AT91: this option cannot be selected directly. Instead it is
> enabled if these 3 conditions are met:
> * at least one of the selected SoCs have a PMC (Power Management
> Controller) Unit
> * device tree support is enabled
> * the old at91 clk implementation is disabled (every selected SoC define
> its clks in its device tree and non dt boards support is disabled)
>
> - OLD_CLK_AT91: this option cannot be selected directly. Instead it is
> enabled if these 2 conditions are met:
> * at least one of the selected SoCs have a PMC (Power Management
> Controller) Unit
> * at least one of the selected SoCs does not define its clks in its
> device tree or non dt-boards support is enabled
>
> This patch selects AT91_USE_OLD_CLK in all currently supported SoCs. These
> selects will be removed after clk definitions are properly added in each
> soc's device tree.
> It also selects AT91_USE_OLD_CLK in all non-dt boards support.
>
> AT91_PMC_UNIT references are replaced by OLD_CLK_AT91, because PMC Unit is
> enabled for both old and common clk implementations, and old clk
> implementation should not be compiled if COMMON_CLK is enabled.
>
> To avoid future link errors, a new stub is created for at91_dt_clock_init
> function if OLD_CLK_AT91 is disabled.
>
> A new check is added in dt init functions (setup.c) to prepare for SoCs
> supporting new clk implementation. These SoCs won't setup the
> register_clocks callback (clk registration is done using of_clk_init).
>
> Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
It seems that all cases are covered for a smooth transition to common
clock framework.
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Thanks
> ---
> arch/arm/mach-at91/Kconfig | 21 +++++++++++++++++++++
> arch/arm/mach-at91/Kconfig.non_dt | 6 ++++++
> arch/arm/mach-at91/Makefile | 2 +-
> arch/arm/mach-at91/generic.h | 3 ++-
> arch/arm/mach-at91/setup.c | 6 ++++--
> 5 files changed, 34 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
> index 699b71e..85b53a4 100644
> --- a/arch/arm/mach-at91/Kconfig
> +++ b/arch/arm/mach-at91/Kconfig
> @@ -6,10 +6,22 @@ config HAVE_AT91_DBGU0
> config HAVE_AT91_DBGU1
> bool
>
> +config AT91_USE_OLD_CLK
> + bool
> +
> config AT91_PMC_UNIT
> bool
> default !ARCH_AT91X40
>
> +config COMMON_CLK_AT91
> + bool
> + default AT91_PMC_UNIT && USE_OF && !AT91_USE_OLD_CLK
> + select COMMON_CLK
> +
> +config OLD_CLK_AT91
> + bool
> + default AT91_PMC_UNIT && AT91_USE_OLD_CLK
> +
> config AT91_SAM9_ALT_RESET
> bool
> default !ARCH_AT91X40
> @@ -65,6 +77,7 @@ config SOC_SAMA5D3
> select SOC_SAMA5
> select HAVE_FB_ATMEL
> select HAVE_AT91_DBGU1
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's SAMA5D3 family SoC.
> This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35.
> @@ -78,11 +91,13 @@ config SOC_AT91RM9200
> select HAVE_AT91_DBGU0
> select MULTI_IRQ_HANDLER
> select SPARSE_IRQ
> + select AT91_USE_OLD_CLK
>
> config SOC_AT91SAM9260
> bool "AT91SAM9260, AT91SAM9XE or AT91SAM9G20"
> select HAVE_AT91_DBGU0
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9260, AT91SAM9XE
> or AT91SAM9G20 SoC.
> @@ -92,6 +107,7 @@ config SOC_AT91SAM9261
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC.
>
> @@ -100,18 +116,21 @@ config SOC_AT91SAM9263
> select HAVE_AT91_DBGU1
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
>
> config SOC_AT91SAM9RL
> bool "AT91SAM9RL"
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
>
> config SOC_AT91SAM9G45
> bool "AT91SAM9G45 or AT91SAM9M10 families"
> select HAVE_AT91_DBGU1
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9G45 family SoC.
> This support covers AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11.
> @@ -121,6 +140,7 @@ config SOC_AT91SAM9X5
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9x5 family SoC.
> This means that your SAM9 name finishes with a '5' (except if it is
> @@ -133,6 +153,7 @@ config SOC_AT91SAM9N12
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using Atmel's AT91SAM9N12 SoC.
>
> diff --git a/arch/arm/mach-at91/Kconfig.non_dt b/arch/arm/mach-at91/Kconfig.non_dt
> index ca900be..b736b57 100644
> --- a/arch/arm/mach-at91/Kconfig.non_dt
> +++ b/arch/arm/mach-at91/Kconfig.non_dt
> @@ -12,26 +12,32 @@ config ARCH_AT91_NONE
> config ARCH_AT91RM9200
> bool "AT91RM9200"
> select SOC_AT91RM9200
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9260
> bool "AT91SAM9260 or AT91SAM9XE or AT91SAM9G20"
> select SOC_AT91SAM9260
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9261
> bool "AT91SAM9261 or AT91SAM9G10"
> select SOC_AT91SAM9261
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9263
> bool "AT91SAM9263"
> select SOC_AT91SAM9263
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9RL
> bool "AT91SAM9RL"
> select SOC_AT91SAM9RL
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9G45
> bool "AT91SAM9G45"
> select SOC_AT91SAM9G45
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91X40
> bool "AT91x40"
> diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
> index 3b0a953..8539411 100644
> --- a/arch/arm/mach-at91/Makefile
> +++ b/arch/arm/mach-at91/Makefile
> @@ -7,7 +7,7 @@ obj-m :=
> obj-n :=
> obj- :=
>
> -obj-$(CONFIG_AT91_PMC_UNIT) += clock.o
> +obj-$(CONFIG_OLD_CLK_AT91) += clock.o
> obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o
> obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o
> obj-$(CONFIG_AT91_SAM9_TIME) += at91sam926x_time.o
> diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h
> index dc6e2f5..375c42e 100644
> --- a/arch/arm/mach-at91/generic.h
> +++ b/arch/arm/mach-at91/generic.h
> @@ -44,11 +44,12 @@ extern void at91sam926x_pit_init(void);
> extern void at91x40_timer_init(void);
>
> /* Clocks */
> -#ifdef CONFIG_AT91_PMC_UNIT
> +#ifdef CONFIG_OLD_CLK_AT91
> extern int __init at91_clock_init(unsigned long main_clock);
> extern int __init at91_dt_clock_init(void);
> #else
> static int inline at91_clock_init(unsigned long main_clock) { return 0; }
> +static int inline at91_dt_clock_init(void) { return 0; }
> #endif
> struct device;
>
> diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
> index 41aa68b..06052fc 100644
> --- a/arch/arm/mach-at91/setup.c
> +++ b/arch/arm/mach-at91/setup.c
> @@ -483,7 +483,8 @@ void __init at91rm9200_dt_initialize(void)
> at91_dt_clock_init();
>
> /* Register the processor-specific clocks */
> - at91_boot_soc.register_clocks();
> + if (at91_boot_soc.register_clocks)
> + at91_boot_soc.register_clocks();
>
> at91_boot_soc.init();
> }
> @@ -498,7 +499,8 @@ void __init at91_dt_initialize(void)
> at91_dt_clock_init();
>
> /* Register the processor-specific clocks */
> - at91_boot_soc.register_clocks();
> + if (at91_boot_soc.register_clocks)
> + at91_boot_soc.register_clocks();
>
> if (at91_boot_soc.init)
> at91_boot_soc.init();
>
--
Nicolas Ferre
WARNING: multiple messages have this Message-ID (diff)
From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: Boris BREZILLON <b.brezillon@overkiz.com>,
Rob Herring <rob.herring@calxeda.com>,
Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Stephen Warren <swarren@wwwdotorg.org>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Rob Landley <rob@landley.net>, Andrew Victor <linux@maxim.org.za>,
Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
Russell King <linux@arm.linux.org.uk>,
Mike Turquette <mturquette@linaro.org>,
Felipe Balbi <balbi@ti.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Grant Likely <grant.likely@linaro.org>,
Ludovic Desroches <ludovic.desroches@atmel.com>,
Josh Wu <josh.wu@atmel.com>,
Richard Genoud <richard.genoud@gmail.com>
Cc: devicetree@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-usb@vger.kernel.org
Subject: Re: [PATCH v4 02/17] ARM: at91: add Kconfig options for common clk support
Date: Wed, 16 Oct 2013 17:33:07 +0200 [thread overview]
Message-ID: <525EB1B3.8070309@atmel.com> (raw)
In-Reply-To: <1381477081-6041-3-git-send-email-b.brezillon@overkiz.com>
On 11/10/2013 09:37, Boris BREZILLON :
> This patch adds the following Kconfig options to prepare the transition to
> common clk framework:
>
> - AT91_USE_OLD_CLK: this option is selected by every SoC which does not
> support new at91 clks based on common clk framework (SoC which does not
> define the clock tree in its device tree).
> This options is also selected when the user choose non dt boards support
> (new at91 clks can only be registered from a device tree definition).
>
> - COMMON_CLK_AT91: this option cannot be selected directly. Instead it is
> enabled if these 3 conditions are met:
> * at least one of the selected SoCs have a PMC (Power Management
> Controller) Unit
> * device tree support is enabled
> * the old at91 clk implementation is disabled (every selected SoC define
> its clks in its device tree and non dt boards support is disabled)
>
> - OLD_CLK_AT91: this option cannot be selected directly. Instead it is
> enabled if these 2 conditions are met:
> * at least one of the selected SoCs have a PMC (Power Management
> Controller) Unit
> * at least one of the selected SoCs does not define its clks in its
> device tree or non dt-boards support is enabled
>
> This patch selects AT91_USE_OLD_CLK in all currently supported SoCs. These
> selects will be removed after clk definitions are properly added in each
> soc's device tree.
> It also selects AT91_USE_OLD_CLK in all non-dt boards support.
>
> AT91_PMC_UNIT references are replaced by OLD_CLK_AT91, because PMC Unit is
> enabled for both old and common clk implementations, and old clk
> implementation should not be compiled if COMMON_CLK is enabled.
>
> To avoid future link errors, a new stub is created for at91_dt_clock_init
> function if OLD_CLK_AT91 is disabled.
>
> A new check is added in dt init functions (setup.c) to prepare for SoCs
> supporting new clk implementation. These SoCs won't setup the
> register_clocks callback (clk registration is done using of_clk_init).
>
> Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
It seems that all cases are covered for a smooth transition to common
clock framework.
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Thanks
> ---
> arch/arm/mach-at91/Kconfig | 21 +++++++++++++++++++++
> arch/arm/mach-at91/Kconfig.non_dt | 6 ++++++
> arch/arm/mach-at91/Makefile | 2 +-
> arch/arm/mach-at91/generic.h | 3 ++-
> arch/arm/mach-at91/setup.c | 6 ++++--
> 5 files changed, 34 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
> index 699b71e..85b53a4 100644
> --- a/arch/arm/mach-at91/Kconfig
> +++ b/arch/arm/mach-at91/Kconfig
> @@ -6,10 +6,22 @@ config HAVE_AT91_DBGU0
> config HAVE_AT91_DBGU1
> bool
>
> +config AT91_USE_OLD_CLK
> + bool
> +
> config AT91_PMC_UNIT
> bool
> default !ARCH_AT91X40
>
> +config COMMON_CLK_AT91
> + bool
> + default AT91_PMC_UNIT && USE_OF && !AT91_USE_OLD_CLK
> + select COMMON_CLK
> +
> +config OLD_CLK_AT91
> + bool
> + default AT91_PMC_UNIT && AT91_USE_OLD_CLK
> +
> config AT91_SAM9_ALT_RESET
> bool
> default !ARCH_AT91X40
> @@ -65,6 +77,7 @@ config SOC_SAMA5D3
> select SOC_SAMA5
> select HAVE_FB_ATMEL
> select HAVE_AT91_DBGU1
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's SAMA5D3 family SoC.
> This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35.
> @@ -78,11 +91,13 @@ config SOC_AT91RM9200
> select HAVE_AT91_DBGU0
> select MULTI_IRQ_HANDLER
> select SPARSE_IRQ
> + select AT91_USE_OLD_CLK
>
> config SOC_AT91SAM9260
> bool "AT91SAM9260, AT91SAM9XE or AT91SAM9G20"
> select HAVE_AT91_DBGU0
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9260, AT91SAM9XE
> or AT91SAM9G20 SoC.
> @@ -92,6 +107,7 @@ config SOC_AT91SAM9261
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC.
>
> @@ -100,18 +116,21 @@ config SOC_AT91SAM9263
> select HAVE_AT91_DBGU1
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
>
> config SOC_AT91SAM9RL
> bool "AT91SAM9RL"
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
>
> config SOC_AT91SAM9G45
> bool "AT91SAM9G45 or AT91SAM9M10 families"
> select HAVE_AT91_DBGU1
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9G45 family SoC.
> This support covers AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11.
> @@ -121,6 +140,7 @@ config SOC_AT91SAM9X5
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9x5 family SoC.
> This means that your SAM9 name finishes with a '5' (except if it is
> @@ -133,6 +153,7 @@ config SOC_AT91SAM9N12
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using Atmel's AT91SAM9N12 SoC.
>
> diff --git a/arch/arm/mach-at91/Kconfig.non_dt b/arch/arm/mach-at91/Kconfig.non_dt
> index ca900be..b736b57 100644
> --- a/arch/arm/mach-at91/Kconfig.non_dt
> +++ b/arch/arm/mach-at91/Kconfig.non_dt
> @@ -12,26 +12,32 @@ config ARCH_AT91_NONE
> config ARCH_AT91RM9200
> bool "AT91RM9200"
> select SOC_AT91RM9200
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9260
> bool "AT91SAM9260 or AT91SAM9XE or AT91SAM9G20"
> select SOC_AT91SAM9260
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9261
> bool "AT91SAM9261 or AT91SAM9G10"
> select SOC_AT91SAM9261
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9263
> bool "AT91SAM9263"
> select SOC_AT91SAM9263
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9RL
> bool "AT91SAM9RL"
> select SOC_AT91SAM9RL
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9G45
> bool "AT91SAM9G45"
> select SOC_AT91SAM9G45
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91X40
> bool "AT91x40"
> diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
> index 3b0a953..8539411 100644
> --- a/arch/arm/mach-at91/Makefile
> +++ b/arch/arm/mach-at91/Makefile
> @@ -7,7 +7,7 @@ obj-m :=
> obj-n :=
> obj- :=
>
> -obj-$(CONFIG_AT91_PMC_UNIT) += clock.o
> +obj-$(CONFIG_OLD_CLK_AT91) += clock.o
> obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o
> obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o
> obj-$(CONFIG_AT91_SAM9_TIME) += at91sam926x_time.o
> diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h
> index dc6e2f5..375c42e 100644
> --- a/arch/arm/mach-at91/generic.h
> +++ b/arch/arm/mach-at91/generic.h
> @@ -44,11 +44,12 @@ extern void at91sam926x_pit_init(void);
> extern void at91x40_timer_init(void);
>
> /* Clocks */
> -#ifdef CONFIG_AT91_PMC_UNIT
> +#ifdef CONFIG_OLD_CLK_AT91
> extern int __init at91_clock_init(unsigned long main_clock);
> extern int __init at91_dt_clock_init(void);
> #else
> static int inline at91_clock_init(unsigned long main_clock) { return 0; }
> +static int inline at91_dt_clock_init(void) { return 0; }
> #endif
> struct device;
>
> diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
> index 41aa68b..06052fc 100644
> --- a/arch/arm/mach-at91/setup.c
> +++ b/arch/arm/mach-at91/setup.c
> @@ -483,7 +483,8 @@ void __init at91rm9200_dt_initialize(void)
> at91_dt_clock_init();
>
> /* Register the processor-specific clocks */
> - at91_boot_soc.register_clocks();
> + if (at91_boot_soc.register_clocks)
> + at91_boot_soc.register_clocks();
>
> at91_boot_soc.init();
> }
> @@ -498,7 +499,8 @@ void __init at91_dt_initialize(void)
> at91_dt_clock_init();
>
> /* Register the processor-specific clocks */
> - at91_boot_soc.register_clocks();
> + if (at91_boot_soc.register_clocks)
> + at91_boot_soc.register_clocks();
>
> if (at91_boot_soc.init)
> at91_boot_soc.init();
>
--
Nicolas Ferre
WARNING: multiple messages have this Message-ID (diff)
From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: Boris BREZILLON <b.brezillon@overkiz.com>,
Rob Herring <rob.herring@calxeda.com>,
Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Stephen Warren <swarren@wwwdotorg.org>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Rob Landley <rob@landley.net>, Andrew Victor <linux@maxim.org.za>,
Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
Russell King <linux@arm.linux.org.uk>,
"Mike Turquette" <mturquette@linaro.org>,
Felipe Balbi <balbi@ti.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
Grant Likely <grant.likely@linaro.org>,
Ludovic Desroches <ludovic.desroches@atmel.com>,
Josh Wu <josh.wu@atmel.com>,
Richard Genoud <richard.genoud@gmail.com>
Cc: <devicetree@vger.kernel.org>, <linux-doc@vger.kernel.org>,
<linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-usb@vger.kernel.org>
Subject: Re: [PATCH v4 02/17] ARM: at91: add Kconfig options for common clk support
Date: Wed, 16 Oct 2013 17:33:07 +0200 [thread overview]
Message-ID: <525EB1B3.8070309@atmel.com> (raw)
In-Reply-To: <1381477081-6041-3-git-send-email-b.brezillon@overkiz.com>
On 11/10/2013 09:37, Boris BREZILLON :
> This patch adds the following Kconfig options to prepare the transition to
> common clk framework:
>
> - AT91_USE_OLD_CLK: this option is selected by every SoC which does not
> support new at91 clks based on common clk framework (SoC which does not
> define the clock tree in its device tree).
> This options is also selected when the user choose non dt boards support
> (new at91 clks can only be registered from a device tree definition).
>
> - COMMON_CLK_AT91: this option cannot be selected directly. Instead it is
> enabled if these 3 conditions are met:
> * at least one of the selected SoCs have a PMC (Power Management
> Controller) Unit
> * device tree support is enabled
> * the old at91 clk implementation is disabled (every selected SoC define
> its clks in its device tree and non dt boards support is disabled)
>
> - OLD_CLK_AT91: this option cannot be selected directly. Instead it is
> enabled if these 2 conditions are met:
> * at least one of the selected SoCs have a PMC (Power Management
> Controller) Unit
> * at least one of the selected SoCs does not define its clks in its
> device tree or non dt-boards support is enabled
>
> This patch selects AT91_USE_OLD_CLK in all currently supported SoCs. These
> selects will be removed after clk definitions are properly added in each
> soc's device tree.
> It also selects AT91_USE_OLD_CLK in all non-dt boards support.
>
> AT91_PMC_UNIT references are replaced by OLD_CLK_AT91, because PMC Unit is
> enabled for both old and common clk implementations, and old clk
> implementation should not be compiled if COMMON_CLK is enabled.
>
> To avoid future link errors, a new stub is created for at91_dt_clock_init
> function if OLD_CLK_AT91 is disabled.
>
> A new check is added in dt init functions (setup.c) to prepare for SoCs
> supporting new clk implementation. These SoCs won't setup the
> register_clocks callback (clk registration is done using of_clk_init).
>
> Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
It seems that all cases are covered for a smooth transition to common
clock framework.
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Thanks
> ---
> arch/arm/mach-at91/Kconfig | 21 +++++++++++++++++++++
> arch/arm/mach-at91/Kconfig.non_dt | 6 ++++++
> arch/arm/mach-at91/Makefile | 2 +-
> arch/arm/mach-at91/generic.h | 3 ++-
> arch/arm/mach-at91/setup.c | 6 ++++--
> 5 files changed, 34 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
> index 699b71e..85b53a4 100644
> --- a/arch/arm/mach-at91/Kconfig
> +++ b/arch/arm/mach-at91/Kconfig
> @@ -6,10 +6,22 @@ config HAVE_AT91_DBGU0
> config HAVE_AT91_DBGU1
> bool
>
> +config AT91_USE_OLD_CLK
> + bool
> +
> config AT91_PMC_UNIT
> bool
> default !ARCH_AT91X40
>
> +config COMMON_CLK_AT91
> + bool
> + default AT91_PMC_UNIT && USE_OF && !AT91_USE_OLD_CLK
> + select COMMON_CLK
> +
> +config OLD_CLK_AT91
> + bool
> + default AT91_PMC_UNIT && AT91_USE_OLD_CLK
> +
> config AT91_SAM9_ALT_RESET
> bool
> default !ARCH_AT91X40
> @@ -65,6 +77,7 @@ config SOC_SAMA5D3
> select SOC_SAMA5
> select HAVE_FB_ATMEL
> select HAVE_AT91_DBGU1
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's SAMA5D3 family SoC.
> This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35.
> @@ -78,11 +91,13 @@ config SOC_AT91RM9200
> select HAVE_AT91_DBGU0
> select MULTI_IRQ_HANDLER
> select SPARSE_IRQ
> + select AT91_USE_OLD_CLK
>
> config SOC_AT91SAM9260
> bool "AT91SAM9260, AT91SAM9XE or AT91SAM9G20"
> select HAVE_AT91_DBGU0
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9260, AT91SAM9XE
> or AT91SAM9G20 SoC.
> @@ -92,6 +107,7 @@ config SOC_AT91SAM9261
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC.
>
> @@ -100,18 +116,21 @@ config SOC_AT91SAM9263
> select HAVE_AT91_DBGU1
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
>
> config SOC_AT91SAM9RL
> bool "AT91SAM9RL"
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
>
> config SOC_AT91SAM9G45
> bool "AT91SAM9G45 or AT91SAM9M10 families"
> select HAVE_AT91_DBGU1
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9G45 family SoC.
> This support covers AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11.
> @@ -121,6 +140,7 @@ config SOC_AT91SAM9X5
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using one of Atmel's AT91SAM9x5 family SoC.
> This means that your SAM9 name finishes with a '5' (except if it is
> @@ -133,6 +153,7 @@ config SOC_AT91SAM9N12
> select HAVE_AT91_DBGU0
> select HAVE_FB_ATMEL
> select SOC_AT91SAM9
> + select AT91_USE_OLD_CLK
> help
> Select this if you are using Atmel's AT91SAM9N12 SoC.
>
> diff --git a/arch/arm/mach-at91/Kconfig.non_dt b/arch/arm/mach-at91/Kconfig.non_dt
> index ca900be..b736b57 100644
> --- a/arch/arm/mach-at91/Kconfig.non_dt
> +++ b/arch/arm/mach-at91/Kconfig.non_dt
> @@ -12,26 +12,32 @@ config ARCH_AT91_NONE
> config ARCH_AT91RM9200
> bool "AT91RM9200"
> select SOC_AT91RM9200
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9260
> bool "AT91SAM9260 or AT91SAM9XE or AT91SAM9G20"
> select SOC_AT91SAM9260
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9261
> bool "AT91SAM9261 or AT91SAM9G10"
> select SOC_AT91SAM9261
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9263
> bool "AT91SAM9263"
> select SOC_AT91SAM9263
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9RL
> bool "AT91SAM9RL"
> select SOC_AT91SAM9RL
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91SAM9G45
> bool "AT91SAM9G45"
> select SOC_AT91SAM9G45
> + select AT91_USE_OLD_CLK
>
> config ARCH_AT91X40
> bool "AT91x40"
> diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
> index 3b0a953..8539411 100644
> --- a/arch/arm/mach-at91/Makefile
> +++ b/arch/arm/mach-at91/Makefile
> @@ -7,7 +7,7 @@ obj-m :=
> obj-n :=
> obj- :=
>
> -obj-$(CONFIG_AT91_PMC_UNIT) += clock.o
> +obj-$(CONFIG_OLD_CLK_AT91) += clock.o
> obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o
> obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o
> obj-$(CONFIG_AT91_SAM9_TIME) += at91sam926x_time.o
> diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h
> index dc6e2f5..375c42e 100644
> --- a/arch/arm/mach-at91/generic.h
> +++ b/arch/arm/mach-at91/generic.h
> @@ -44,11 +44,12 @@ extern void at91sam926x_pit_init(void);
> extern void at91x40_timer_init(void);
>
> /* Clocks */
> -#ifdef CONFIG_AT91_PMC_UNIT
> +#ifdef CONFIG_OLD_CLK_AT91
> extern int __init at91_clock_init(unsigned long main_clock);
> extern int __init at91_dt_clock_init(void);
> #else
> static int inline at91_clock_init(unsigned long main_clock) { return 0; }
> +static int inline at91_dt_clock_init(void) { return 0; }
> #endif
> struct device;
>
> diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
> index 41aa68b..06052fc 100644
> --- a/arch/arm/mach-at91/setup.c
> +++ b/arch/arm/mach-at91/setup.c
> @@ -483,7 +483,8 @@ void __init at91rm9200_dt_initialize(void)
> at91_dt_clock_init();
>
> /* Register the processor-specific clocks */
> - at91_boot_soc.register_clocks();
> + if (at91_boot_soc.register_clocks)
> + at91_boot_soc.register_clocks();
>
> at91_boot_soc.init();
> }
> @@ -498,7 +499,8 @@ void __init at91_dt_initialize(void)
> at91_dt_clock_init();
>
> /* Register the processor-specific clocks */
> - at91_boot_soc.register_clocks();
> + if (at91_boot_soc.register_clocks)
> + at91_boot_soc.register_clocks();
>
> if (at91_boot_soc.init)
> at91_boot_soc.init();
>
--
Nicolas Ferre
next prev parent reply other threads:[~2013-10-16 15:33 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-11 7:37 [PATCH v4 00/17] ARM: at91: move to common clk framework Boris BREZILLON
2013-10-11 7:37 ` Boris BREZILLON
2013-10-11 7:37 ` Boris BREZILLON
2013-10-11 7:37 ` [PATCH v4 01/17] ARM: at91: move at91_pmc.h to include/linux/clk/at91_pmc.h Boris BREZILLON
2013-10-11 7:37 ` Boris BREZILLON
2013-10-11 16:05 ` Felipe Balbi
2013-10-11 16:05 ` Felipe Balbi
2013-10-11 16:05 ` Felipe Balbi
2013-10-16 15:29 ` Nicolas Ferre
2013-10-16 15:29 ` Nicolas Ferre
2013-10-16 15:29 ` Nicolas Ferre
2013-10-11 7:37 ` [PATCH v4 02/17] ARM: at91: add Kconfig options for common clk support Boris BREZILLON
2013-10-11 7:37 ` Boris BREZILLON
2013-10-16 15:33 ` Nicolas Ferre [this message]
2013-10-16 15:33 ` Nicolas Ferre
2013-10-16 15:33 ` Nicolas Ferre
2013-10-11 7:37 ` [PATCH v4 03/17] clk: at91: add PMC base support Boris BREZILLON
2013-10-11 7:37 ` Boris BREZILLON
2013-10-17 15:46 ` Nicolas Ferre
2013-10-17 15:46 ` Nicolas Ferre
2013-10-17 15:46 ` Nicolas Ferre
2013-10-11 8:41 ` [PATCH v4 04/17] clk: at91: add PMC macro file for dt definitions Boris BREZILLON
2013-10-11 8:41 ` Boris BREZILLON
2013-10-17 15:47 ` Nicolas Ferre
2013-10-17 15:47 ` Nicolas Ferre
2013-10-17 15:47 ` Nicolas Ferre
2013-10-11 8:44 ` [PATCH v4 05/17] clk: at91: add PMC main clock Boris BREZILLON
2013-10-11 8:44 ` Boris BREZILLON
2013-10-11 8:44 ` Boris BREZILLON
2013-10-17 15:58 ` Nicolas Ferre
2013-10-17 15:58 ` Nicolas Ferre
2013-10-17 15:58 ` Nicolas Ferre
2013-10-11 8:48 ` [PATCH v4 06/17] clk: at91: add PMC pll clocks Boris BREZILLON
2013-10-11 8:48 ` Boris BREZILLON
2013-10-11 8:48 ` Boris BREZILLON
2013-10-17 15:59 ` Nicolas Ferre
2013-10-17 15:59 ` Nicolas Ferre
2013-10-17 15:59 ` Nicolas Ferre
2013-10-11 8:51 ` [PATCH v4 07/17] clk: at91: add PMC master clock Boris BREZILLON
2013-10-11 8:51 ` Boris BREZILLON
2013-10-17 15:59 ` Nicolas Ferre
2013-10-17 15:59 ` Nicolas Ferre
2013-10-17 15:59 ` Nicolas Ferre
2013-10-11 9:41 ` [PATCH v4 08/17] clk: at91: add PMC system clocks Boris BREZILLON
2013-10-11 9:41 ` Boris BREZILLON
2013-10-11 9:41 ` Boris BREZILLON
2013-10-17 15:59 ` Nicolas Ferre
2013-10-17 15:59 ` Nicolas Ferre
2013-10-17 15:59 ` Nicolas Ferre
2013-10-11 9:44 ` [PATCH v4 09/17] clk: at91: add PMC peripheral clocks Boris BREZILLON
2013-10-11 9:44 ` Boris BREZILLON
2013-10-17 16:02 ` Nicolas Ferre
2013-10-17 16:02 ` Nicolas Ferre
2013-10-17 16:02 ` Nicolas Ferre
2013-10-11 9:53 ` [PATCH v4 10/17] clk: at91: add peripheral clk macros for peripheral clk dt bindings Boris BREZILLON
2013-10-11 9:53 ` Boris BREZILLON
2013-10-11 9:53 ` Boris BREZILLON
2013-10-17 16:03 ` Nicolas Ferre
2013-10-17 16:03 ` Nicolas Ferre
2013-10-17 16:03 ` Nicolas Ferre
2013-10-11 9:57 ` [PATCH v4 11/17] clk: at91: add PMC programmable clocks Boris BREZILLON
2013-10-11 9:57 ` Boris BREZILLON
2013-10-11 9:57 ` Boris BREZILLON
2013-10-17 16:08 ` Nicolas Ferre
2013-10-17 16:08 ` Nicolas Ferre
2013-10-17 16:08 ` Nicolas Ferre
2013-10-11 10:22 ` [PATCH v4 12/17] clk: at91: add PMC utmi clock Boris BREZILLON
2013-10-11 10:22 ` Boris BREZILLON
2013-10-17 16:10 ` Nicolas Ferre
2013-10-17 16:10 ` Nicolas Ferre
2013-10-17 16:10 ` Nicolas Ferre
2013-10-11 11:15 ` [PATCH v4 13/17] clk: at91: add PMC usb clock Boris BREZILLON
2013-10-11 11:15 ` Boris BREZILLON
2013-10-17 16:18 ` Nicolas Ferre
2013-10-17 16:18 ` Nicolas Ferre
2013-10-17 16:18 ` Nicolas Ferre
2013-10-11 11:27 ` [PATCH v4 14/17] clk: at91: add PMC smd clock Boris BREZILLON
2013-10-11 11:27 ` Boris BREZILLON
2013-10-17 16:27 ` Nicolas Ferre
2013-10-17 16:27 ` Nicolas Ferre
2013-10-17 16:27 ` Nicolas Ferre
2013-10-17 16:55 ` [PATCH v5 13/17] clk: at91: add PMC usb clock Boris BREZILLON
2013-10-17 16:55 ` Boris BREZILLON
2013-10-17 16:55 ` Boris BREZILLON
2013-10-18 7:53 ` Nicolas Ferre
2013-10-18 7:53 ` Nicolas Ferre
2013-10-18 7:53 ` Nicolas Ferre
2013-10-11 11:38 ` [PATCH v4 15/17] clk: at91: add PMC clk device tree binding doc Boris BREZILLON
2013-10-11 11:38 ` Boris BREZILLON
2013-10-17 16:37 ` Nicolas Ferre
2013-10-17 16:37 ` Nicolas Ferre
2013-10-17 16:37 ` Nicolas Ferre
2013-10-11 11:46 ` [PATCH v4 16/17] ARM: at91: move pit timer to common clk framework Boris BREZILLON
2013-10-11 11:46 ` Boris BREZILLON
2013-10-11 11:49 ` [PATCH v4 17/17] ARM: at91: add new compatible strings for pmc driver Boris BREZILLON
2013-10-11 11:49 ` Boris BREZILLON
2013-10-11 11:49 ` Boris BREZILLON
2013-10-18 8:18 ` [PATCH v4 00/17] ARM: at91: move to common clk framework Nicolas Ferre
2013-10-18 8:18 ` Nicolas Ferre
2013-10-18 8:18 ` Nicolas Ferre
2013-11-07 23:29 ` Mike Turquette
2013-11-07 23:29 ` Mike Turquette
2013-11-07 23:29 ` Mike Turquette
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=525EB1B3.8070309@atmel.com \
--to=nicolas.ferre@atmel.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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.