Skip to contentSkip to conversation

watchdog: f71808e_wdt: Fix WDTMOUT_STS register read

PATCH Superseded Knud Poulsen 2 participants 3 messages Apr 25, 2016 – Apr 26, 2016 Watchdog device drivers

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 watchdog: f71808e_wdt: Fix WDTMOUT_STS register read

Tested and verified on Lanner LEC-3030 Industrial PC (with F81865)

Datasheet verified for
F71808, F71858, F71862, F71869, F71869A, F71882, F71889, F81865

Datasheet references:
F71808A:
http://www.electronicsdatasheets.com/download/534cf560e34e2406135f4658.pdf?format=pdf
F71858:
http://www.electronicsdatasheets.com/download/534cf55fe34e2406135f4635.pdf?format=pdf
F71862:
http://www.hardwaresecrets.com/datasheets/F71862_V027P.pdf
F71869:
http://www.clubedohardware.com.br/datasheets/366451_F71869.pdf
F71869A:
http://www.chipset-ic.com/datasheet/F71869AD.pdf
F71882:
http://www.digchip.com/datasheets/parts/datasheet/931/F71882-pdf.php
F71889:
http://pdf1.alldatasheet.com/datasheet-pdf/view/406312/FINTEK/F71889.html
F81865:
http://www.hardwaresecrets.com/datasheets/F81865_V028P.pdf
http://www.alldatasheet.com/datasheet-pdf/pdf/406317/FINTEK/F81865.html

---
 drivers/watchdog/f71808e_wdt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/watchdog/f71808e_wdt.c +2 -2
index 016bd93..6a9deac 100644
@@ -66,7 +66,7 @@
 
 #define F71808FG_FLAG_WDOUT_EN		7
 
-#define F71808FG_FLAG_WDTMOUT_STS	5
+#define F71808FG_FLAG_WDTMOUT_STS_BITMASK	0x40 /* Bit 6 */
 #define F71808FG_FLAG_WD_EN		5
 #define F71808FG_FLAG_WD_PULSE		4
 #define F71808FG_FLAG_WD_UNIT		3
@@ -655,7 +655,7 @@ static int __init watchdog_init(int sioaddr)
 	superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT);
 
 	wdt_conf = superio_inb(sioaddr, F71808FG_REG_WDT_CONF);
-	watchdog.caused_reboot = wdt_conf & F71808FG_FLAG_WDTMOUT_STS;
+	watchdog.caused_reboot = wdt_conf & F71808FG_FLAG_WDTMOUT_STS_BITMASK;
 
 	superio_exit(sioaddr);
 
Signature · 1 line
2.5.5
maintainer
#1 lore raw
Quoted 15 lines · Knud Poulsen

Tested and verified on Lanner LEC-3030 Industrial PC (with F81865)

Datasheet verified for
F71808, F71858, F71862, F71869, F71869A, F71882, F71889, F81865

Datasheet references:
F71808A:
http://www.electronicsdatasheets.com/download/534cf560e34e2406135f4658.pdf?format=pdf
F71858:
http://www.electronicsdatasheets.com/download/534cf55fe34e2406135f4635.pdf?format=pdf
F71862:
http://www.hardwaresecrets.com/datasheets/F71862_V027P.pdf
F71869:
http://www.clubedohardware.com.br/datasheets/366451_F71869.pdf
F71869A:

Quoted 8 lines

http://www.chipset-ic.com/datasheet/F71869AD.pdf
F71882:
http://www.digchip.com/datasheets/parts/datasheet/931/F71882-pdf.php
F71889:
http://pdf1.alldatasheet.com/datasheet-pdf/view/406312/FINTEK/F71889.html
F81865:
http://www.hardwaresecrets.com/datasheets/F81865_V028P.pdf
http://www.alldatasheet.com/datasheet-pdf/pdf/406317/FINTEK/F81865.html

Nice work tracking those down!

Quoted 11 lines
---
  drivers/watchdog/f71808e_wdt.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
drivers/watchdog/f71808e_wdt.c +0 -0
index 016bd93..6a9deac 100644

drivers/watchdog/f71808e_wdt.c line 69

Quoted 5 lines
drivers/watchdog/f71808e_wdt.c +1 -1
@@ -66,7 +66,7 @@
 
  #define F71808FG_FLAG_WDOUT_EN		7
 
-#define F71808FG_FLAG_WDTMOUT_STS	5
+#define F71808FG_FLAG_WDTMOUT_STS_BITMASK	0x40 /* Bit 6 */

For consistency with the rest of the code, please use F71808FG_FLAG_WDTMOUT_STS and later BIT(F71808FG_FLAG_WDTMOUT_STS).

If you care to send a patch, the usage of F71808FG_FLAG_WDOUT_EN is also wrong in one place (in watchdog_is_running()).

Thanks,
Guenter

Quoted 12 lines
drivers/watchdog/f71808e_wdt.c +1 -1
  #define F71808FG_FLAG_WD_EN		5
  #define F71808FG_FLAG_WD_PULSE		4
  #define F71808FG_FLAG_WD_UNIT		3
@@ -655,7 +655,7 @@ static int __init watchdog_init(int sioaddr)
  	superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT);
 
  	wdt_conf = superio_inb(sioaddr, F71808FG_REG_WDT_CONF);
-	watchdog.caused_reboot = wdt_conf & F71808FG_FLAG_WDTMOUT_STS;
+	watchdog.caused_reboot = wdt_conf & F71808FG_FLAG_WDTMOUT_STS_BITMASK;
 
  	superio_exit(sioaddr);
 
#2 lore raw
Quoted 25 lines · Guenter Roeck
Quoted 15 lines · Knud Poulsen

Tested and verified on Lanner LEC-3030 Industrial PC (with F81865)

Datasheet verified for
F71808, F71858, F71862, F71869, F71869A, F71882, F71889, F81865

Datasheet references:
F71808A:
http://www.electronicsdatasheets.com/download/534cf560e34e2406135f4658.pdf?format=pdf
F71858:
http://www.electronicsdatasheets.com/download/534cf55fe34e2406135f4635.pdf?format=pdf
F71862:
http://www.hardwaresecrets.com/datasheets/F71862_V027P.pdf
F71869:
http://www.clubedohardware.com.br/datasheets/366451_F71869.pdf
F71869A:

Quoted 8 lines

http://www.chipset-ic.com/datasheet/F71869AD.pdf
F71882:
http://www.digchip.com/datasheets/parts/datasheet/931/F71882-pdf.php
F71889:
http://pdf1.alldatasheet.com/datasheet-pdf/view/406312/FINTEK/F71889.html
F81865:
http://www.hardwaresecrets.com/datasheets/F81865_V028P.pdf
http://www.alldatasheet.com/datasheet-pdf/pdf/406317/FINTEK/F81865.html

Quoted 1 line

Nice work tracking those down!

Thanks :), took a while, and you're right: that register has never changed, I guess no one's ever actually used the WDTMOUT_STS feature, cause it's clearly never reported the correct state back.

Quoted 13 lines
Quoted 13 lines
---
  drivers/watchdog/f71808e_wdt.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
drivers/watchdog/f71808e_wdt.c +0 -0
index 016bd93..6a9deac 100644
@@ -66,7 +66,7 @@
 
Quoted 7 lines

drivers/watchdog/f71808e_wdt.c line 69

Quoted 4 lines
drivers/watchdog/f71808e_wdt.c +1 -1
  #define F71808FG_FLAG_WDOUT_EN		7
 
-#define F71808FG_FLAG_WDTMOUT_STS	5
+#define F71808FG_FLAG_WDTMOUT_STS_BITMASK	0x40 /* Bit 6 */

For consistency with the rest of the code, please use F71808FG_FLAG_WDTMOUT_STS and later BIT(F71808FG_FLAG_WDTMOUT_STS).

Ack

Quoted 3 lines

If you care to send a patch, the usage of F71808FG_FLAG_WDOUT_EN is also wrong in one place (in watchdog_is_running()).

No problem, will send separate patch

Quoted 17 lines

Thanks,
Guenter

Quoted 12 lines
drivers/watchdog/f71808e_wdt.c +1 -1
  #define F71808FG_FLAG_WD_EN		5
  #define F71808FG_FLAG_WD_PULSE		4
  #define F71808FG_FLAG_WD_UNIT		3
@@ -655,7 +655,7 @@ static int __init watchdog_init(int sioaddr)
  	superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT);
 
  	wdt_conf = superio_inb(sioaddr, F71808FG_REG_WDT_CONF);
-	watchdog.caused_reboot = wdt_conf & F71808FG_FLAG_WDTMOUT_STS;
+	watchdog.caused_reboot = wdt_conf & F71808FG_FLAG_WDTMOUT_STS_BITMASK;
 
  	superio_exit(sioaddr);