Re: [PATCH v10 25/27] ARM: davinci: add device tree support to timer
On 05/18/2018 01:05 AM, Sekhar Nori wrote: On Thursday 17 May 2018 08:39 PM, David Lechner wrote: On 05/17/2018 09:35 AM, Sekhar Nori wrote: Hi David, On Wednesday 09 May 2018 10:56 PM, David Lechner wrote: This adds device tree support to the davinci timer so that when clocks are moved to device tree, the timer will still work. Signed-off-by: David Lechner--- +static int __init of_davinci_timer_init(struct device_node *np) +{ + struct clk *clk; + + clk = of_clk_get(np, 0); + if (IS_ERR(clk)) { + struct of_phandle_args clkspec; + + /* + * Fall back to using ref_clk if the actual clock is not + * available. There will be problems later if the real clock + * source is disabled. + */ + + pr_warn("%s: falling back to ref_clk\n", __func__); + + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); + if (IS_ERR(clkspec.np)) { + pr_err("%s: No clock available for timer!\n", __func__); + return PTR_ERR(clkspec.np); + } + clk = of_clk_get_from_provider(); + of_node_put(clkspec.np); + } Do we need this error path now? Thanks, Sekhar No, not really. Then lets just print an error and return the error number. OK. FYI, timer_probe() prints the error if we return and error, so I will just return the error.
Re: [PATCH v10 25/27] ARM: davinci: add device tree support to timer
On 05/18/2018 01:05 AM, Sekhar Nori wrote: On Thursday 17 May 2018 08:39 PM, David Lechner wrote: On 05/17/2018 09:35 AM, Sekhar Nori wrote: Hi David, On Wednesday 09 May 2018 10:56 PM, David Lechner wrote: This adds device tree support to the davinci timer so that when clocks are moved to device tree, the timer will still work. Signed-off-by: David Lechner --- +static int __init of_davinci_timer_init(struct device_node *np) +{ + struct clk *clk; + + clk = of_clk_get(np, 0); + if (IS_ERR(clk)) { + struct of_phandle_args clkspec; + + /* + * Fall back to using ref_clk if the actual clock is not + * available. There will be problems later if the real clock + * source is disabled. + */ + + pr_warn("%s: falling back to ref_clk\n", __func__); + + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); + if (IS_ERR(clkspec.np)) { + pr_err("%s: No clock available for timer!\n", __func__); + return PTR_ERR(clkspec.np); + } + clk = of_clk_get_from_provider(); + of_node_put(clkspec.np); + } Do we need this error path now? Thanks, Sekhar No, not really. Then lets just print an error and return the error number. OK. FYI, timer_probe() prints the error if we return and error, so I will just return the error.
Re: [PATCH v10 25/27] ARM: davinci: add device tree support to timer
On Thursday 17 May 2018 08:39 PM, David Lechner wrote: > On 05/17/2018 09:35 AM, Sekhar Nori wrote: >> Hi David, >> >> On Wednesday 09 May 2018 10:56 PM, David Lechner wrote: >>> This adds device tree support to the davinci timer so that when clocks >>> are moved to device tree, the timer will still work. >>> >>> Signed-off-by: David Lechner>>> --- >> >>> +static int __init of_davinci_timer_init(struct device_node *np) >>> +{ >>> + struct clk *clk; >>> + >>> + clk = of_clk_get(np, 0); >>> + if (IS_ERR(clk)) { >>> + struct of_phandle_args clkspec; >>> + >>> + /* >>> + * Fall back to using ref_clk if the actual clock is not >>> + * available. There will be problems later if the real clock >>> + * source is disabled. >>> + */ >>> + >>> + pr_warn("%s: falling back to ref_clk\n", __func__); >>> + >>> + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); >>> + if (IS_ERR(clkspec.np)) { >>> + pr_err("%s: No clock available for timer!\n", __func__); >>> + return PTR_ERR(clkspec.np); >>> + } >>> + clk = of_clk_get_from_provider(); >>> + of_node_put(clkspec.np); >>> + } >> >> Do we need this error path now? >> >> Thanks, >> Sekhar >> > > No, not really. Then lets just print an error and return the error number. Thanks, Sekhar
Re: [PATCH v10 25/27] ARM: davinci: add device tree support to timer
On Thursday 17 May 2018 08:39 PM, David Lechner wrote: > On 05/17/2018 09:35 AM, Sekhar Nori wrote: >> Hi David, >> >> On Wednesday 09 May 2018 10:56 PM, David Lechner wrote: >>> This adds device tree support to the davinci timer so that when clocks >>> are moved to device tree, the timer will still work. >>> >>> Signed-off-by: David Lechner >>> --- >> >>> +static int __init of_davinci_timer_init(struct device_node *np) >>> +{ >>> + struct clk *clk; >>> + >>> + clk = of_clk_get(np, 0); >>> + if (IS_ERR(clk)) { >>> + struct of_phandle_args clkspec; >>> + >>> + /* >>> + * Fall back to using ref_clk if the actual clock is not >>> + * available. There will be problems later if the real clock >>> + * source is disabled. >>> + */ >>> + >>> + pr_warn("%s: falling back to ref_clk\n", __func__); >>> + >>> + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); >>> + if (IS_ERR(clkspec.np)) { >>> + pr_err("%s: No clock available for timer!\n", __func__); >>> + return PTR_ERR(clkspec.np); >>> + } >>> + clk = of_clk_get_from_provider(); >>> + of_node_put(clkspec.np); >>> + } >> >> Do we need this error path now? >> >> Thanks, >> Sekhar >> > > No, not really. Then lets just print an error and return the error number. Thanks, Sekhar
Re: [PATCH v10 25/27] ARM: davinci: add device tree support to timer
On 05/17/2018 09:35 AM, Sekhar Nori wrote: Hi David, On Wednesday 09 May 2018 10:56 PM, David Lechner wrote: This adds device tree support to the davinci timer so that when clocks are moved to device tree, the timer will still work. Signed-off-by: David Lechner--- +static int __init of_davinci_timer_init(struct device_node *np) +{ + struct clk *clk; + + clk = of_clk_get(np, 0); + if (IS_ERR(clk)) { + struct of_phandle_args clkspec; + + /* +* Fall back to using ref_clk if the actual clock is not +* available. There will be problems later if the real clock +* source is disabled. +*/ + + pr_warn("%s: falling back to ref_clk\n", __func__); + + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); + if (IS_ERR(clkspec.np)) { + pr_err("%s: No clock available for timer!\n", __func__); + return PTR_ERR(clkspec.np); + } + clk = of_clk_get_from_provider(); + of_node_put(clkspec.np); + } Do we need this error path now? Thanks, Sekhar No, not really.
Re: [PATCH v10 25/27] ARM: davinci: add device tree support to timer
On 05/17/2018 09:35 AM, Sekhar Nori wrote: Hi David, On Wednesday 09 May 2018 10:56 PM, David Lechner wrote: This adds device tree support to the davinci timer so that when clocks are moved to device tree, the timer will still work. Signed-off-by: David Lechner --- +static int __init of_davinci_timer_init(struct device_node *np) +{ + struct clk *clk; + + clk = of_clk_get(np, 0); + if (IS_ERR(clk)) { + struct of_phandle_args clkspec; + + /* +* Fall back to using ref_clk if the actual clock is not +* available. There will be problems later if the real clock +* source is disabled. +*/ + + pr_warn("%s: falling back to ref_clk\n", __func__); + + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); + if (IS_ERR(clkspec.np)) { + pr_err("%s: No clock available for timer!\n", __func__); + return PTR_ERR(clkspec.np); + } + clk = of_clk_get_from_provider(); + of_node_put(clkspec.np); + } Do we need this error path now? Thanks, Sekhar No, not really.
Re: [PATCH v10 25/27] ARM: davinci: add device tree support to timer
Hi David, On Wednesday 09 May 2018 10:56 PM, David Lechner wrote: > This adds device tree support to the davinci timer so that when clocks > are moved to device tree, the timer will still work. > > Signed-off-by: David Lechner> --- > +static int __init of_davinci_timer_init(struct device_node *np) > +{ > + struct clk *clk; > + > + clk = of_clk_get(np, 0); > + if (IS_ERR(clk)) { > + struct of_phandle_args clkspec; > + > + /* > + * Fall back to using ref_clk if the actual clock is not > + * available. There will be problems later if the real clock > + * source is disabled. > + */ > + > + pr_warn("%s: falling back to ref_clk\n", __func__); > + > + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); > + if (IS_ERR(clkspec.np)) { > + pr_err("%s: No clock available for timer!\n", __func__); > + return PTR_ERR(clkspec.np); > + } > + clk = of_clk_get_from_provider(); > + of_node_put(clkspec.np); > + } Do we need this error path now? Thanks, Sekhar
Re: [PATCH v10 25/27] ARM: davinci: add device tree support to timer
Hi David, On Wednesday 09 May 2018 10:56 PM, David Lechner wrote: > This adds device tree support to the davinci timer so that when clocks > are moved to device tree, the timer will still work. > > Signed-off-by: David Lechner > --- > +static int __init of_davinci_timer_init(struct device_node *np) > +{ > + struct clk *clk; > + > + clk = of_clk_get(np, 0); > + if (IS_ERR(clk)) { > + struct of_phandle_args clkspec; > + > + /* > + * Fall back to using ref_clk if the actual clock is not > + * available. There will be problems later if the real clock > + * source is disabled. > + */ > + > + pr_warn("%s: falling back to ref_clk\n", __func__); > + > + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); > + if (IS_ERR(clkspec.np)) { > + pr_err("%s: No clock available for timer!\n", __func__); > + return PTR_ERR(clkspec.np); > + } > + clk = of_clk_get_from_provider(); > + of_node_put(clkspec.np); > + } Do we need this error path now? Thanks, Sekhar
[PATCH v10 25/27] ARM: davinci: add device tree support to timer
This adds device tree support to the davinci timer so that when clocks are moved to device tree, the timer will still work. Signed-off-by: David Lechner--- v10 changes: - change compatible to "ti,da830-timer" - remove comment clocks as platform devices v9 changes: - none (there were supposed to be changed, but apparently they got squashed into the next commit - will fix on the next round) v8 changes: - none v7 changes: - rebased - add davinci prefix to commit message v6 changes: - rebased arch/arm/mach-davinci/Kconfig | 1 + arch/arm/mach-davinci/time.c | 32 2 files changed, 33 insertions(+) diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig index ba9912b4dfab..da8a039d65f9 100644 --- a/arch/arm/mach-davinci/Kconfig +++ b/arch/arm/mach-davinci/Kconfig @@ -59,6 +59,7 @@ config MACH_DA8XX_DT default y depends on ARCH_DAVINCI_DA850 select PINCTRL + select TIMER_OF help Say y here to include support for TI DaVinci DA850 based using Flattened Device Tree. More information at Documentation/devicetree diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c index 7ea3db0ff062..184e72922cc1 100644 --- a/arch/arm/mach-davinci/time.c +++ b/arch/arm/mach-davinci/time.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -397,3 +398,34 @@ void __init davinci_timer_init(struct clk *timer_clk) for (i=0; i< ARRAY_SIZE(timers); i++) timer32_config([i]); } + +static int __init of_davinci_timer_init(struct device_node *np) +{ + struct clk *clk; + + clk = of_clk_get(np, 0); + if (IS_ERR(clk)) { + struct of_phandle_args clkspec; + + /* +* Fall back to using ref_clk if the actual clock is not +* available. There will be problems later if the real clock +* source is disabled. +*/ + + pr_warn("%s: falling back to ref_clk\n", __func__); + + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); + if (IS_ERR(clkspec.np)) { + pr_err("%s: No clock available for timer!\n", __func__); + return PTR_ERR(clkspec.np); + } + clk = of_clk_get_from_provider(); + of_node_put(clkspec.np); + } + + davinci_timer_init(clk); + + return 0; +} +TIMER_OF_DECLARE(davinci_timer, "ti,da830-timer", of_davinci_timer_init); -- 2.17.0
[PATCH v10 25/27] ARM: davinci: add device tree support to timer
This adds device tree support to the davinci timer so that when clocks are moved to device tree, the timer will still work. Signed-off-by: David Lechner --- v10 changes: - change compatible to "ti,da830-timer" - remove comment clocks as platform devices v9 changes: - none (there were supposed to be changed, but apparently they got squashed into the next commit - will fix on the next round) v8 changes: - none v7 changes: - rebased - add davinci prefix to commit message v6 changes: - rebased arch/arm/mach-davinci/Kconfig | 1 + arch/arm/mach-davinci/time.c | 32 2 files changed, 33 insertions(+) diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig index ba9912b4dfab..da8a039d65f9 100644 --- a/arch/arm/mach-davinci/Kconfig +++ b/arch/arm/mach-davinci/Kconfig @@ -59,6 +59,7 @@ config MACH_DA8XX_DT default y depends on ARCH_DAVINCI_DA850 select PINCTRL + select TIMER_OF help Say y here to include support for TI DaVinci DA850 based using Flattened Device Tree. More information at Documentation/devicetree diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c index 7ea3db0ff062..184e72922cc1 100644 --- a/arch/arm/mach-davinci/time.c +++ b/arch/arm/mach-davinci/time.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -397,3 +398,34 @@ void __init davinci_timer_init(struct clk *timer_clk) for (i=0; i< ARRAY_SIZE(timers); i++) timer32_config([i]); } + +static int __init of_davinci_timer_init(struct device_node *np) +{ + struct clk *clk; + + clk = of_clk_get(np, 0); + if (IS_ERR(clk)) { + struct of_phandle_args clkspec; + + /* +* Fall back to using ref_clk if the actual clock is not +* available. There will be problems later if the real clock +* source is disabled. +*/ + + pr_warn("%s: falling back to ref_clk\n", __func__); + + clkspec.np = of_find_node_by_name(NULL, "ref_clk"); + if (IS_ERR(clkspec.np)) { + pr_err("%s: No clock available for timer!\n", __func__); + return PTR_ERR(clkspec.np); + } + clk = of_clk_get_from_provider(); + of_node_put(clkspec.np); + } + + davinci_timer_init(clk); + + return 0; +} +TIMER_OF_DECLARE(davinci_timer, "ti,da830-timer", of_davinci_timer_init); -- 2.17.0