From: Hartley Sweeten <hartleys@visionengravers.com>
Date: Mon, 14 Jun 2010 15:54:16 +0000 (+0100)
Subject: ARM: 6174/1: ep93xx: clear devcfg bits before setting them
X-Git-Tag: v2.6.36-rc1~591^2~2^3
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a0fb007bf0c7de9ae361a9ad3821df4c69d4d2d9;p=users%2Fjedix%2Flinux-maple.git

ARM: 6174/1: ep93xx: clear devcfg bits before setting them

The ep93xx core helper function ep93xx_devcfg_set_clear should mask the
clear_bits before setting the new set_bits in case the clear_bits are a
mask value that also includes the set_bits.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Acked-by: Ryan Mallon <ryan@bluewatersys.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---

diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index f4b25bf00b64..8e37a045188c 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -216,8 +216,8 @@ void ep93xx_devcfg_set_clear(unsigned int set_bits, unsigned int clear_bits)
 	spin_lock_irqsave(&syscon_swlock, flags);
 
 	val = __raw_readl(EP93XX_SYSCON_DEVCFG);
-	val |= set_bits;
 	val &= ~clear_bits;
+	val |= set_bits;
 	__raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
 	__raw_writel(val, EP93XX_SYSCON_DEVCFG);