diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-12-30 15:13:03 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-12-30 15:13:03 -0500 |
commit | 995b4103a78b9bef0ff834f9ecac42b2b56e01a8 (patch) | |
tree | 2914c6906dfbf9b9c5b8c0ca6699da0844939e0f | |
parent | 89307babf966165171547f105e2253dec261cfa5 (diff) | |
parent | 0d098587cec70048336a3809bcde8044c7e9aa08 (diff) |
Merge git://www.linux-watchdog.org/linux-watchdog
* git://www.linux-watchdog.org/linux-watchdog:
watchdog: iTCO_wdt.c - problems with newer hardware due to SMI clearing (part 2)
watchdog: hpwdt: Changes to handle NX secure bit in 32bit path
watchdog: sp805: Fix section mismatch in ID table.
watchdog: move coh901327 state holders
-rw-r--r-- | drivers/watchdog/coh901327_wdt.c | 6 | ||||
-rw-r--r-- | drivers/watchdog/hpwdt.c | 5 | ||||
-rw-r--r-- | drivers/watchdog/iTCO_wdt.c | 6 | ||||
-rw-r--r-- | drivers/watchdog/sp805_wdt.c | 2 |
4 files changed, 12 insertions, 7 deletions
diff --git a/drivers/watchdog/coh901327_wdt.c b/drivers/watchdog/coh901327_wdt.c index 03f449a430d..5b89f7d6cd0 100644 --- a/drivers/watchdog/coh901327_wdt.c +++ b/drivers/watchdog/coh901327_wdt.c | |||
@@ -76,8 +76,6 @@ static int irq; | |||
76 | static void __iomem *virtbase; | 76 | static void __iomem *virtbase; |
77 | static unsigned long coh901327_users; | 77 | static unsigned long coh901327_users; |
78 | static unsigned long boot_status; | 78 | static unsigned long boot_status; |
79 | static u16 wdogenablestore; | ||
80 | static u16 irqmaskstore; | ||
81 | static struct device *parent; | 79 | static struct device *parent; |
82 | 80 | ||
83 | /* | 81 | /* |
@@ -461,6 +459,10 @@ out: | |||
461 | } | 459 | } |
462 | 460 | ||
463 | #ifdef CONFIG_PM | 461 | #ifdef CONFIG_PM |
462 | |||
463 | static u16 wdogenablestore; | ||
464 | static u16 irqmaskstore; | ||
465 | |||
464 | static int coh901327_suspend(struct platform_device *pdev, pm_message_t state) | 466 | static int coh901327_suspend(struct platform_device *pdev, pm_message_t state) |
465 | { | 467 | { |
466 | irqmaskstore = readw(virtbase + U300_WDOG_IMR) & 0x0001U; | 468 | irqmaskstore = readw(virtbase + U300_WDOG_IMR) & 0x0001U; |
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c index 3774c9b8dac..8464ea1c36a 100644 --- a/drivers/watchdog/hpwdt.c +++ b/drivers/watchdog/hpwdt.c | |||
@@ -231,6 +231,7 @@ static int __devinit cru_detect(unsigned long map_entry, | |||
231 | 231 | ||
232 | cmn_regs.u1.reax = CRU_BIOS_SIGNATURE_VALUE; | 232 | cmn_regs.u1.reax = CRU_BIOS_SIGNATURE_VALUE; |
233 | 233 | ||
234 | set_memory_x((unsigned long)bios32_entrypoint, (2 * PAGE_SIZE)); | ||
234 | asminline_call(&cmn_regs, bios32_entrypoint); | 235 | asminline_call(&cmn_regs, bios32_entrypoint); |
235 | 236 | ||
236 | if (cmn_regs.u1.ral != 0) { | 237 | if (cmn_regs.u1.ral != 0) { |
@@ -248,8 +249,10 @@ static int __devinit cru_detect(unsigned long map_entry, | |||
248 | if ((physical_bios_base + physical_bios_offset)) { | 249 | if ((physical_bios_base + physical_bios_offset)) { |
249 | cru_rom_addr = | 250 | cru_rom_addr = |
250 | ioremap(cru_physical_address, cru_length); | 251 | ioremap(cru_physical_address, cru_length); |
251 | if (cru_rom_addr) | 252 | if (cru_rom_addr) { |
253 | set_memory_x((unsigned long)cru_rom_addr, cru_length); | ||
252 | retval = 0; | 254 | retval = 0; |
255 | } | ||
253 | } | 256 | } |
254 | 257 | ||
255 | printk(KERN_DEBUG "hpwdt: CRU Base Address: 0x%lx\n", | 258 | printk(KERN_DEBUG "hpwdt: CRU Base Address: 0x%lx\n", |
diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c index ba6ad662635..99796c5d913 100644 --- a/drivers/watchdog/iTCO_wdt.c +++ b/drivers/watchdog/iTCO_wdt.c | |||
@@ -384,10 +384,10 @@ MODULE_PARM_DESC(nowayout, | |||
384 | "Watchdog cannot be stopped once started (default=" | 384 | "Watchdog cannot be stopped once started (default=" |
385 | __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | 385 | __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); |
386 | 386 | ||
387 | static int turn_SMI_watchdog_clear_off = 0; | 387 | static int turn_SMI_watchdog_clear_off = 1; |
388 | module_param(turn_SMI_watchdog_clear_off, int, 0); | 388 | module_param(turn_SMI_watchdog_clear_off, int, 0); |
389 | MODULE_PARM_DESC(turn_SMI_watchdog_clear_off, | 389 | MODULE_PARM_DESC(turn_SMI_watchdog_clear_off, |
390 | "Turn off SMI clearing watchdog (default=0)"); | 390 | "Turn off SMI clearing watchdog (depends on TCO-version)(default=1)"); |
391 | 391 | ||
392 | /* | 392 | /* |
393 | * Some TCO specific functions | 393 | * Some TCO specific functions |
@@ -813,7 +813,7 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev, | |||
813 | ret = -EIO; | 813 | ret = -EIO; |
814 | goto out_unmap; | 814 | goto out_unmap; |
815 | } | 815 | } |
816 | if (turn_SMI_watchdog_clear_off) { | 816 | if (turn_SMI_watchdog_clear_off >= iTCO_wdt_private.iTCO_version) { |
817 | /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */ | 817 | /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */ |
818 | val32 = inl(SMI_EN); | 818 | val32 = inl(SMI_EN); |
819 | val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ | 819 | val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ |
diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c index cc2cfbe33b3..bfaf9bb1ee0 100644 --- a/drivers/watchdog/sp805_wdt.c +++ b/drivers/watchdog/sp805_wdt.c | |||
@@ -351,7 +351,7 @@ static int __devexit sp805_wdt_remove(struct amba_device *adev) | |||
351 | return 0; | 351 | return 0; |
352 | } | 352 | } |
353 | 353 | ||
354 | static struct amba_id sp805_wdt_ids[] __initdata = { | 354 | static struct amba_id sp805_wdt_ids[] = { |
355 | { | 355 | { |
356 | .id = 0x00141805, | 356 | .id = 0x00141805, |
357 | .mask = 0x00ffffff, | 357 | .mask = 0x00ffffff, |