Patchwork rtc-cmos: fix broken NVRAM bank 2 writing

login
register
mail settings
Submitter Ondrej Zary
Date Nov. 13, 2011, 10:20 p.m.
Message ID <201111132320.34420.linux@rainbow-software.org>
Download mbox | patch
Permalink /patch/125455/
State New
Headers show

Comments

Ondrej Zary - Nov. 13, 2011, 10:20 p.m.
Fix writing to NVRAM bank 2 in rtc-cmos driver. It never worked since its
introduction in 2.6.28 because of a typo.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Andrew Morton - Nov. 22, 2011, 11:16 p.m.
On Sun, 13 Nov 2011 23:20:31 +0100
Ondrej Zary <linux@rainbow-software.org> wrote:

> Fix writing to NVRAM bank 2 in rtc-cmos driver. It never worked since its
> introduction in 2.6.28 because of a typo.
> 
> Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
> 
> --- linux-3.1-orig/drivers/rtc/rtc-cmos.c	2011-10-24 09:10:05.000000000 +0200
> +++ linux-3.1/drivers/rtc/rtc-cmos.c	2011-11-08 17:43:29.000000000 +0100
> @@ -164,7 +164,7 @@ static inline unsigned char cmos_read_ba
>  static inline void cmos_write_bank2(unsigned char val, unsigned char addr)
>  {
>  	outb(addr, RTC_PORT(2));
> -	outb(val, RTC_PORT(2));
> +	outb(val, RTC_PORT(3));
>  }
>  
>  #else

Strange.  Can you suggest why this bug has lived for so long without anyone
noticing it?
Ondrej Zary - Nov. 23, 2011, 7:29 a.m.
On Wednesday 23 November 2011, Andrew Morton wrote:
> On Sun, 13 Nov 2011 23:20:31 +0100
>
> Ondrej Zary <linux@rainbow-software.org> wrote:
> > Fix writing to NVRAM bank 2 in rtc-cmos driver. It never worked since its
> > introduction in 2.6.28 because of a typo.
> >
> > Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
> >
> > --- linux-3.1-orig/drivers/rtc/rtc-cmos.c	2011-10-24 09:10:05.000000000
> > +0200 +++ linux-3.1/drivers/rtc/rtc-cmos.c	2011-11-08 17:43:29.000000000
> > +0100 @@ -164,7 +164,7 @@ static inline unsigned char cmos_read_ba
> >  static inline void cmos_write_bank2(unsigned char val, unsigned char
> > addr) {
> >  	outb(addr, RTC_PORT(2));
> > -	outb(val, RTC_PORT(2));
> > +	outb(val, RTC_PORT(3));
> >  }
> >
> >  #else
>
> Strange.  Can you suggest why this bug has lived for so long without anyone
> noticing it?

Probably because nobody uses it. It's hidden in sysfs 
(/sys/class/rtc/rtc0/device/nvram) and there's another (old) module "nvram" 
that does (mostly) the same thing (except there's no bank 2 support).

Patch

--- linux-3.1-orig/drivers/rtc/rtc-cmos.c	2011-10-24 09:10:05.000000000 +0200
+++ linux-3.1/drivers/rtc/rtc-cmos.c	2011-11-08 17:43:29.000000000 +0100
@@ -164,7 +164,7 @@  static inline unsigned char cmos_read_ba
 static inline void cmos_write_bank2(unsigned char val, unsigned char addr)
 {
 	outb(addr, RTC_PORT(2));
-	outb(val, RTC_PORT(2));
+	outb(val, RTC_PORT(3));
 }
 
 #else