lkml.org 
[lkml]   [2022]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v2] clocksource/drivers/sp804: avoid error on multiple instances
From
On 2022-05-06 17:25, Andre Przywara wrote:
> When a machine sports more than one SP804 timer instance, we only bring
> up the first one, since multiple timers of the same kind are not useful
> to Linux. As this is intentional behaviour, we should not return an
> error message, as we do today:
> ===============
> [ 0.000800] Failed to initialize '/bus@8000000/motherboard-bus@8000000/iofpga-bus@300000000/timer@120000': -22
> ===============
>
> Replace the -EINVAL return with a debug message and return 0 instead.
>
> Also we do not reach the init function anymore if the DT node is
> disabled (as this is now handled by OF_DECLARE), so remove the explicit
> check for that case.
>
> This fixes a long standing bogus error when booting ARM's fastmodels.

Reviewed-by: Robin Murphy <robin.murphy@arm.com>

> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
> Changelog v1 .. v2:
> - demote pr_info() to pr_debug(), to avoid output at all
> - use %pOF and reword message
>
> drivers/clocksource/timer-sp804.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/clocksource/timer-sp804.c b/drivers/clocksource/timer-sp804.c
> index 401d592e85f5a..e6a87f4af2b50 100644
> --- a/drivers/clocksource/timer-sp804.c
> +++ b/drivers/clocksource/timer-sp804.c
> @@ -259,6 +259,11 @@ static int __init sp804_of_init(struct device_node *np, struct sp804_timer *time
> struct clk *clk1, *clk2;
> const char *name = of_get_property(np, "compatible", NULL);
>
> + if (initialized) {
> + pr_debug("%pOF: skipping further SP804 timer device\n", np);
> + return 0;
> + }
> +
> base = of_iomap(np, 0);
> if (!base)
> return -ENXIO;
> @@ -270,11 +275,6 @@ static int __init sp804_of_init(struct device_node *np, struct sp804_timer *time
> writel(0, timer1_base + timer->ctrl);
> writel(0, timer2_base + timer->ctrl);
>
> - if (initialized || !of_device_is_available(np)) {
> - ret = -EINVAL;
> - goto err;
> - }
> -
> clk1 = of_clk_get(np, 0);
> if (IS_ERR(clk1))
> clk1 = NULL;

\
 
 \ /
  Last update: 2022-05-06 18:42    [W:0.063 / U:0.380 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site