Skip to content

Commit

Permalink
watchdog: sp805: replace readl/writel with lighter _relaxed variants
Browse files Browse the repository at this point in the history
readl/writel versions for ARM contain memory barrier instruction for
synchronizing DMA buffers.  These are not required at least on this
module.  So use lighter _relaxed variants.

Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
  • Loading branch information
Viresh Kumar authored and Wim Van Sebroeck committed Mar 27, 2012
1 parent bfae14b commit d2e8919
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions drivers/watchdog/sp805_wdt.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,10 @@ static u32 wdt_timeleft(void)
rate = clk_get_rate(wdt->clk);

spin_lock(&wdt->lock);
load = readl(wdt->base + WDTVALUE);
load = readl_relaxed(wdt->base + WDTVALUE);

/*If the interrupt is inactive then time left is WDTValue + WDTLoad. */
if (!(readl(wdt->base + WDTRIS) & INT_MASK))
if (!(readl_relaxed(wdt->base + WDTRIS) & INT_MASK))
load += wdt->load_val + 1;
spin_unlock(&wdt->lock);

Expand All @@ -128,14 +128,14 @@ static void wdt_enable(void)
{
spin_lock(&wdt->lock);

writel(UNLOCK, wdt->base + WDTLOCK);
writel(wdt->load_val, wdt->base + WDTLOAD);
writel(INT_MASK, wdt->base + WDTINTCLR);
writel(INT_ENABLE | RESET_ENABLE, wdt->base + WDTCONTROL);
writel(LOCK, wdt->base + WDTLOCK);
writel_relaxed(UNLOCK, wdt->base + WDTLOCK);
writel_relaxed(wdt->load_val, wdt->base + WDTLOAD);
writel_relaxed(INT_MASK, wdt->base + WDTINTCLR);
writel_relaxed(INT_ENABLE | RESET_ENABLE, wdt->base + WDTCONTROL);
writel_relaxed(LOCK, wdt->base + WDTLOCK);

/* Flush posted writes. */
readl(wdt->base + WDTLOCK);
readl_relaxed(wdt->base + WDTLOCK);
spin_unlock(&wdt->lock);
}

Expand All @@ -144,12 +144,12 @@ static void wdt_disable(void)
{
spin_lock(&wdt->lock);

writel(UNLOCK, wdt->base + WDTLOCK);
writel(0, wdt->base + WDTCONTROL);
writel(LOCK, wdt->base + WDTLOCK);
writel_relaxed(UNLOCK, wdt->base + WDTLOCK);
writel_relaxed(0, wdt->base + WDTCONTROL);
writel_relaxed(LOCK, wdt->base + WDTLOCK);

/* Flush posted writes. */
readl(wdt->base + WDTLOCK);
readl_relaxed(wdt->base + WDTLOCK);
spin_unlock(&wdt->lock);
}

Expand Down

0 comments on commit d2e8919

Please sign in to comment.