Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757138Ab3JIKFp (ORCPT ); Wed, 9 Oct 2013 06:05:45 -0400 Received: from eusmtp01.atmel.com ([212.144.249.242]:35035 "EHLO eusmtp01.atmel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757100Ab3JIKFn (ORCPT ); Wed, 9 Oct 2013 06:05:43 -0400 Message-ID: <52552A72.7080704@atmel.com> Date: Wed, 9 Oct 2013 12:05:38 +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 , Grant Likely , Rob Herring , Rob Landley , Andrew Victor , "Jean-Christophe Plagniol-Villard" , Russell King , Mike Turquette , "Felipe Balbi" , Greg Kroah-Hartman , Ludovic Desroches , Josh Wu , Richard Genoud CC: , , Subject: Re: [PATCH v3 02/19] ARM: at91: add Kconfig options for common clk support References: <1375937608-3773-1-git-send-email-b.brezillon@overkiz.com> <1375938174-3926-1-git-send-email-b.brezillon@overkiz.com> <5252CF78.2070509@atmel.com> <52552853.9000104@overkiz.com> In-Reply-To: <52552853.9000104@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: 9884 Lines: 294 On 09/10/2013 11:56, boris brezillon : > On 07/10/2013 17:12, Nicolas Ferre wrote: >> On 08/08/2013 07:02, 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 >> >> I would have prefered to keep "AT91" as a prefix => "AT91_COMMON_CLK" >> But it is not so important. >> > Now I remember why I choose this name. > Take a look at drivers/clk/Makefile, the chip specific clks are defined > this way: > > COMMON_CLK_XXX. > > Do you still want to rename it ? Nope! > >>> 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 >> >> Here also. >> > > I can change this one. No, let's stick to what you defined it will be fine. >>> 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 >>> --- >>> 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/