linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 02/19] ARM: at91: add Kconfig options for common clk support
Date: Wed, 9 Oct 2013 12:05:38 +0200	[thread overview]
Message-ID: <52552A72.7080704@atmel.com> (raw)
In-Reply-To: <52552853.9000104@overkiz.com>

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

  reply	other threads:[~2013-10-09 10:05 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-08  4:53 [PATCH v3 00/19] ARM: at91: move to common clk framework Boris BREZILLON
2013-08-08  4:59 ` [PATCH v3 01/19] ARM: at91: move at91_pmc.h to include/linux/clk/at91_pmc.h Boris BREZILLON
2013-08-08  5:01 ` [PATCH v3 03/19] clk: at91: add PMC base support Boris BREZILLON
2013-10-07 15:07   ` Nicolas Ferre
2013-10-07 15:57     ` boris brezillon
2013-08-08  5:02 ` [PATCH v3 02/19] ARM: at91: add Kconfig options for common clk support Boris BREZILLON
2013-10-07 15:12   ` Nicolas Ferre
2013-10-07 16:05     ` boris brezillon
2013-10-09  9:56     ` boris brezillon
2013-10-09 10:05       ` Nicolas Ferre [this message]
2013-08-08  5:04 ` [PATCH v3 04/19] clk: at91: add PMC macro file for dt definitions Boris BREZILLON
2013-10-07 15:17   ` Nicolas Ferre
2013-10-07 16:06     ` boris brezillon
2013-08-08  5:06 ` [PATCH v3 05/19] clk: at91: add PMC main clock Boris BREZILLON
2013-10-07 16:51   ` Nicolas Ferre
2013-10-07 19:11     ` boris brezillon
2013-10-08  8:24       ` Nicolas Ferre
2013-10-08  9:00         ` boris brezillon
2013-08-08  6:07 ` [PATCH v3 06/19] clk: at91: add PMC pll clocks Boris BREZILLON
2013-10-08 10:28   ` Nicolas Ferre
2013-10-08 11:45     ` boris brezillon
2013-08-08  6:09 ` [PATCH v3 07/19] clk: at91: add pll id macros for pll dt bindings Boris BREZILLON
2013-10-08 10:30   ` Nicolas Ferre
2013-10-08 12:03     ` boris brezillon
2013-08-08  6:10 ` [PATCH v3 08/19] clk: at91: add PMC master clock Boris BREZILLON
2013-08-08  6:12 ` [PATCH v3 09/19] clk: at91: add PMC system clocks Boris BREZILLON
2013-10-08 15:32   ` Nicolas Ferre
2013-08-08  6:15 ` [PATCH v3 10/19] ARM: at91/dt: add system clk id definitions in dt-bindings include dir Boris BREZILLON
2013-10-08 15:36   ` Nicolas Ferre
2013-08-08  6:16 ` [PATCH v3 11/19] clk: at91: add PMC peripheral clocks Boris BREZILLON
2013-10-08 15:43   ` Nicolas Ferre
2013-08-08  7:10 ` [PATCH v3 12/19] clk: at91: add peripheral clk macros for peripheral clk dt bindings Boris BREZILLON
2013-10-08 15:44   ` Nicolas Ferre
2013-10-08 16:01     ` boris brezillon
2013-10-08 16:15       ` Nicolas Ferre
2013-10-08 16:19         ` boris brezillon
2013-08-08  7:12 ` [PATCH v3 13/19] clk: at91: add PMC programmable clocks Boris BREZILLON
2013-10-08 16:02   ` Nicolas Ferre
2013-10-08 16:06     ` Nicolas Ferre
2013-08-08  7:14 ` [PATCH v3 14/19] clk: at91: add PMC utmi clock Boris BREZILLON
2013-10-08 16:08   ` Nicolas Ferre
2013-08-08  7:15 ` [PATCH v3 15/19] clk: at91: add PMC usb clock Boris BREZILLON
2013-10-08 16:20   ` Nicolas Ferre
2013-08-08  7:17 ` [PATCH v3 16/19] clk: at91: add PMC smd clock Boris BREZILLON
2013-10-08 16:22   ` Nicolas Ferre
2013-08-08  7:19 ` [PATCH v3 17/19] clk: at91: add PMC clk device tree binding doc Boris BREZILLON
2013-10-08  9:44   ` Nicolas Ferre
2013-10-08 12:37     ` boris brezillon
2013-10-08 12:42       ` Nicolas Ferre
2013-08-08  8:17 ` [PATCH v3 18/19] ARM: at91: move pit timer to common clk framework Boris BREZILLON
2013-10-08 16:28   ` Nicolas Ferre
2013-08-08  8:19 ` [PATCH v3 19/19] ARM: at91: add new compatible strings for pmc driver Boris BREZILLON
2013-10-08 16:29   ` Nicolas Ferre
2013-08-20 10:21 ` [PATCH v3 00/19] ARM: at91: move to common clk framework boris brezillon
2013-10-07 20:06   ` 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=52552A72.7080704@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).