Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Watchdog updates from Wim Van Sebroeck:

* git://www.linux-watchdog.org/linux-watchdog:
  watchdog: fix GETTIMEOUT ioctl in booke_wdt
  watchdog: update maintainers git entry
  watchdog: Fix typo in pnx4008_wdt.c
  watchdog: Fix typo in Kconfig
  watchdog: fix error in probe() of s3c2410_wdt (reset at booting)
  watchdog: hpwdt: clean up set_memory_x call for 32 bit
  • Loading branch information
Linus Torvalds committed Mar 2, 2012
2 parents 13fb2d1 + 741b9c7 commit 1f033c1
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 32 deletions.
2 changes: 1 addition & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -7271,7 +7271,7 @@ WATCHDOG DEVICE DRIVERS
M: Wim Van Sebroeck <wim@iguana.be>
L: linux-watchdog@vger.kernel.org
W: http://www.linux-watchdog.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog.git
T: git git://www.linux-watchdog.org/linux-watchdog.git
S: Maintained
F: Documentation/watchdog/
F: drivers/watchdog/
Expand Down
2 changes: 1 addition & 1 deletion drivers/watchdog/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1098,7 +1098,7 @@ config BOOKE_WDT_DEFAULT_TIMEOUT
For Freescale Book-E processors, this is a number between 0 and 63.
For other Book-E processors, this is a number between 0 and 3.

The value can be overidden by the wdt_period command-line parameter.
The value can be overridden by the wdt_period command-line parameter.

# PPC64 Architecture

Expand Down
6 changes: 5 additions & 1 deletion drivers/watchdog/booke_wdt.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,13 @@ static long booke_wdt_ioctl(struct file *file,
booke_wdt_period = tmp;
#endif
booke_wdt_set();
return 0;
/* Fall */
case WDIOC_GETTIMEOUT:
#ifdef CONFIG_FSL_BOOKE
return put_user(period_to_sec(booke_wdt_period), p);
#else
return put_user(booke_wdt_period, p);
#endif
default:
return -ENOTTY;
}
Expand Down
5 changes: 3 additions & 2 deletions drivers/watchdog/hpwdt.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ static int __devinit cru_detect(unsigned long map_entry,

cmn_regs.u1.reax = CRU_BIOS_SIGNATURE_VALUE;

set_memory_x((unsigned long)bios32_entrypoint, (2 * PAGE_SIZE));
set_memory_x((unsigned long)bios32_map, 2);
asminline_call(&cmn_regs, bios32_entrypoint);

if (cmn_regs.u1.ral != 0) {
Expand All @@ -250,7 +250,8 @@ static int __devinit cru_detect(unsigned long map_entry,
cru_rom_addr =
ioremap(cru_physical_address, cru_length);
if (cru_rom_addr) {
set_memory_x((unsigned long)cru_rom_addr, cru_length);
set_memory_x((unsigned long)cru_rom_addr & PAGE_MASK,
(cru_length + PAGE_SIZE - 1) >> PAGE_SHIFT);
retval = 0;
}
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/watchdog/pnx4008_wdt.c
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ static int __devinit pnx4008_wdt_probe(struct platform_device *pdev)
wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (wdt_mem == NULL) {
printk(KERN_INFO MODULE_NAME
"failed to get memory region resouce\n");
"failed to get memory region resource\n");
return -ENOENT;
}

Expand Down
57 changes: 31 additions & 26 deletions drivers/watchdog/s3c2410_wdt.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,18 +312,26 @@ static int __devinit s3c2410wdt_probe(struct platform_device *pdev)
dev = &pdev->dev;
wdt_dev = &pdev->dev;

/* get the memory region for the watchdog timer */

wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (wdt_mem == NULL) {
dev_err(dev, "no memory resource specified\n");
return -ENOENT;
}

wdt_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (wdt_irq == NULL) {
dev_err(dev, "no irq resource specified\n");
ret = -ENOENT;
goto err;
}

/* get the memory region for the watchdog timer */

size = resource_size(wdt_mem);
if (!request_mem_region(wdt_mem->start, size, pdev->name)) {
dev_err(dev, "failed to get memory region\n");
return -EBUSY;
ret = -EBUSY;
goto err;
}

wdt_base = ioremap(wdt_mem->start, size);
Expand All @@ -335,29 +343,17 @@ static int __devinit s3c2410wdt_probe(struct platform_device *pdev)

DBG("probe: mapped wdt_base=%p\n", wdt_base);

wdt_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (wdt_irq == NULL) {
dev_err(dev, "no irq resource specified\n");
ret = -ENOENT;
goto err_map;
}

ret = request_irq(wdt_irq->start, s3c2410wdt_irq, 0, pdev->name, pdev);
if (ret != 0) {
dev_err(dev, "failed to install irq (%d)\n", ret);
goto err_map;
}

wdt_clock = clk_get(&pdev->dev, "watchdog");
if (IS_ERR(wdt_clock)) {
dev_err(dev, "failed to find watchdog clock source\n");
ret = PTR_ERR(wdt_clock);
goto err_irq;
goto err_map;
}

clk_enable(wdt_clock);

if (s3c2410wdt_cpufreq_register() < 0) {
ret = s3c2410wdt_cpufreq_register();
if (ret < 0) {
printk(KERN_ERR PFX "failed to register cpufreq\n");
goto err_clk;
}
Expand All @@ -378,12 +374,18 @@ static int __devinit s3c2410wdt_probe(struct platform_device *pdev)
"cannot start\n");
}

ret = request_irq(wdt_irq->start, s3c2410wdt_irq, 0, pdev->name, pdev);
if (ret != 0) {
dev_err(dev, "failed to install irq (%d)\n", ret);
goto err_cpufreq;
}

watchdog_set_nowayout(&s3c2410_wdd, nowayout);

ret = watchdog_register_device(&s3c2410_wdd);
if (ret) {
dev_err(dev, "cannot register watchdog (%d)\n", ret);
goto err_cpufreq;
goto err_irq;
}

if (tmr_atboot && started == 0) {
Expand All @@ -408,42 +410,45 @@ static int __devinit s3c2410wdt_probe(struct platform_device *pdev)

return 0;

err_irq:
free_irq(wdt_irq->start, pdev);

err_cpufreq:
s3c2410wdt_cpufreq_deregister();

err_clk:
clk_disable(wdt_clock);
clk_put(wdt_clock);

err_irq:
free_irq(wdt_irq->start, pdev);
wdt_clock = NULL;

err_map:
iounmap(wdt_base);

err_req:
release_mem_region(wdt_mem->start, size);
wdt_mem = NULL;

err:
wdt_irq = NULL;
wdt_mem = NULL;
return ret;
}

static int __devexit s3c2410wdt_remove(struct platform_device *dev)
{
watchdog_unregister_device(&s3c2410_wdd);

free_irq(wdt_irq->start, dev);

s3c2410wdt_cpufreq_deregister();

clk_disable(wdt_clock);
clk_put(wdt_clock);
wdt_clock = NULL;

free_irq(wdt_irq->start, dev);
wdt_irq = NULL;

iounmap(wdt_base);

release_mem_region(wdt_mem->start, resource_size(wdt_mem));
wdt_irq = NULL;
wdt_mem = NULL;
return 0;
}
Expand Down

0 comments on commit 1f033c1

Please sign in to comment.