| From 7366b52c44b46c073a4bf1285ca09ca6ce5d9b39 Mon Sep 17 00:00:00 2001 | 
 | From: Linus Walleij <linus.walleij@linaro.org> | 
 | Date: Tue, 12 Feb 2013 13:46:19 -0800 | 
 | Subject: drivers/rtc/rtc-pl031.c: restore ST variant functionality | 
 |  | 
 | From: Linus Walleij <linus.walleij@linaro.org> | 
 |  | 
 | commit 3399cfb5df9594495b876d1843a7165f77366b2b upstream. | 
 |  | 
 | Commit e7e034e18a0a ("drivers/rtc/rtc-pl031.c: fix the missing operation | 
 | on enable") accidentally broke the ST variants of PL031. | 
 |  | 
 | The bit that is being poked as "clockwatch" enable bit for the ST | 
 | variants does the work of bit 0 on this variant.  Bit 0 is used for a | 
 | clock divider on the ST variants, and setting it to 1 will affect | 
 | timekeeping in a very bad way. | 
 |  | 
 | Signed-off-by: Linus Walleij <linus.walleij@linaro.org> | 
 | Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com> | 
 | Cc: Mian Yousaf KAUKAB <mian.yousaf.kaukab@stericsson.com> | 
 | Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> | 
 | Cc: Alessandro Zummo <a.zummo@towertech.it> | 
 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | 
 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | 
 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | 
 | Cc: Qiang Huang <h.huangqiang@huawei.com> | 
 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 
 |  | 
 | --- | 
 |  drivers/rtc/rtc-pl031.c |    4 +++- | 
 |  1 file changed, 3 insertions(+), 1 deletion(-) | 
 |  | 
 | --- a/drivers/rtc/rtc-pl031.c | 
 | +++ b/drivers/rtc/rtc-pl031.c | 
 | @@ -344,7 +344,9 @@ static int pl031_probe(struct amba_devic | 
 |  	/* Enable the clockwatch on ST Variants */ | 
 |  	if (ldata->hw_designer == AMBA_VENDOR_ST) | 
 |  		data |= RTC_CR_CWEN; | 
 | -	writel(data | RTC_CR_EN, ldata->base + RTC_CR); | 
 | +	else | 
 | +		data |= RTC_CR_EN; | 
 | +	writel(data, ldata->base + RTC_CR); | 
 |   | 
 |  	/* | 
 |  	 * On ST PL031 variants, the RTC reset value does not provide correct |