lkml.org 
[lkml]   [2013]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v3 02/19] ARM: at91: add Kconfig options for common clk support
    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 <b.brezillon@overkiz.com>
    >>> ---
    >>> 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


    \
     
     \ /
      Last update: 2013-10-09 12:21    [W:2.645 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site