Merge git://www.linux-watchdog.org/linux-watchdog
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
This commit is contained in:
commit
1f033c1a6e
6 changed files with 42 additions and 32 deletions
|
@ -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/
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -408,23 +410,26 @@ 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;
|
||||
}
|
||||
|
||||
|
@ -432,18 +437,18 @@ 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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue