Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758507Ab3JPPdO (ORCPT ); Wed, 16 Oct 2013 11:33:14 -0400 Received: from eusmtp01.atmel.com ([212.144.249.243]:20894 "EHLO eusmtp01.atmel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752074Ab3JPPdM (ORCPT ); Wed, 16 Oct 2013 11:33:12 -0400 Message-ID: <525EB1B3.8070309@atmel.com> Date: Wed, 16 Oct 2013 17:33:07 +0200 From: Nicolas Ferre Organization: atmel User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.0 MIME-Version: 1.0 To: Boris BREZILLON , Rob Herring , Pawel Moll , Mark Rutland , Stephen Warren , Ian Campbell , Rob Landley , Andrew Victor , Jean-Christophe Plagniol-Villard , Russell King , "Mike Turquette" , Felipe Balbi , "Greg Kroah-Hartman" , Grant Likely , Ludovic Desroches , Josh Wu , Richard Genoud CC: , , , , Subject: Re: [PATCH v4 02/17] ARM: at91: add Kconfig options for common clk support References: <1381477081-6041-1-git-send-email-b.brezillon@overkiz.com> <1381477081-6041-3-git-send-email-b.brezillon@overkiz.com> In-Reply-To: <1381477081-6041-3-git-send-email-b.brezillon@overkiz.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.161.30.18] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 8545 Lines: 255 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 It seems that all cases are covered for a smooth transition to common clock framework. Acked-by: Nicolas Ferre 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/