[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140508154912.GA6776@localhost>
Date: Thu, 8 May 2014 17:49:12 +0200
From: Johan Hovold <johan@...old.com>
To: Boris BREZILLON <boris.brezillon@...e-electrons.com>
Cc: Bryan Evenson <bevenson@...inkcorp.com>,
Andrew Victor <linux@...im.org.za>,
Nicolas Ferre <nicolas.ferre@...el.com>,
Jean-Christophe Plagniol-Villard <plagnioj@...osoft.com>,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] ARM: at91: fix rtc irq mask for sam9x5 SoCs
On Wed, May 07, 2014 at 06:20:49PM +0200, Boris BREZILLON wrote:
> The RTC IMR register is not reliable on sam9x5 SoCs, hence why me have to
> mask all interrupts no matter what IMR claims about already masked irqs.
Crap, I totally forgot about this. Doug reported the problem off-list
back in December, but it got lost somehow. Sorry.
> Signed-off-by: Boris BREZILLON <boris.brezillon@...e-electrons.com>
> Reported-by: Bryan Evenson <bevenson@...inkcorp.com>
> ---
> Hello Bryan,
>
> Yet another patch for you ;-).
>
> As usual, could you tell me if it fixes your bug.
>
> BTW, thanks for your tests.
>
> Best Regards,
>
> Boris
>
> arch/arm/mach-at91/sysirq_mask.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/arch/arm/mach-at91/sysirq_mask.c b/arch/arm/mach-at91/sysirq_mask.c
> index 2ba694f..eb3d2a5 100644
> --- a/arch/arm/mach-at91/sysirq_mask.c
> +++ b/arch/arm/mach-at91/sysirq_mask.c
> @@ -37,12 +37,7 @@ void __init at91_sysirq_mask_rtc(u32 rtc_base)
> if (!base)
> return;
>
> - mask = readl_relaxed(base + AT91_RTC_IMR);
> - if (mask) {
> - pr_info("AT91: Disabling rtc irq\n");
> - writel_relaxed(mask, base + AT91_RTC_IDR);
> - (void)readl_relaxed(base + AT91_RTC_IMR); /* flush */
> - }
> + writel_relaxed(0x1f, base + AT91_RTC_IDR);
I believe this is the right way to handle this hardware bug (IMR is
always read as 0 on one particular SoC), but please document this in a
comment.
You should also keep the flush (read of IMR) regardless (to make sure
the write has reached the peripheral), and remember to remove the now
unused mask variable.
> iounmap(base);
> }
Thanks,
Johan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists