Merge git://www.linux-watchdog.org/linux-watchdog
* git://www.linux-watchdog.org/linux-watchdog: watchdog: iTCO_wdt: add Intel Lynx Point DeviceIDs watchdog: via_wdt: Set min_timeout and max_timeout for wdt_dev watchdog: Fix typo "unexpectdly" watchdog: wafer5823wdt: Fix handling WDIOS_DISABLECARD/WDIOS_ENABLECARD options watchdog: wm8350_wdt: Fix handling WDIOS_DISABLECARD/WDIOS_ENABLECARD options watchdog: Return proper error in nuc900wdt_probe if misc_register fails watchdog: Staticise nuc900_wdt watchdog: via_wdt: Staticise wdt_pci_table watchdog: omap_wdt.c: Fix the mismatch of pm_runtime enable and disable watchdog: dw_wdt.c: use devm_request_and_ioremap watchdog: imx2_wdt.c: use devm_request_and_ioremap
This commit is contained in:
commit
1c36ab1a31
10 changed files with 51 additions and 26 deletions
|
@ -300,11 +300,7 @@ static int __devinit dw_wdt_drv_probe(struct platform_device *pdev)
|
||||||
if (!mem)
|
if (!mem)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!devm_request_mem_region(&pdev->dev, mem->start, resource_size(mem),
|
dw_wdt.regs = devm_request_and_ioremap(&pdev->dev, mem);
|
||||||
"dw_wdt"))
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
dw_wdt.regs = devm_ioremap(&pdev->dev, mem->start, resource_size(mem));
|
|
||||||
if (!dw_wdt.regs)
|
if (!dw_wdt.regs)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
* document number TBD : Patsburg (PBG)
|
* document number TBD : Patsburg (PBG)
|
||||||
* document number TBD : DH89xxCC
|
* document number TBD : DH89xxCC
|
||||||
* document number TBD : Panther Point
|
* document number TBD : Panther Point
|
||||||
|
* document number TBD : Lynx Point
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -126,6 +127,7 @@ enum iTCO_chipsets {
|
||||||
TCO_PBG, /* Patsburg */
|
TCO_PBG, /* Patsburg */
|
||||||
TCO_DH89XXCC, /* DH89xxCC */
|
TCO_DH89XXCC, /* DH89xxCC */
|
||||||
TCO_PPT, /* Panther Point */
|
TCO_PPT, /* Panther Point */
|
||||||
|
TCO_LPT, /* Lynx Point */
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
|
@ -189,6 +191,7 @@ static struct {
|
||||||
{"Patsburg", 2},
|
{"Patsburg", 2},
|
||||||
{"DH89xxCC", 2},
|
{"DH89xxCC", 2},
|
||||||
{"Panther Point", 2},
|
{"Panther Point", 2},
|
||||||
|
{"Lynx Point", 2},
|
||||||
{NULL, 0}
|
{NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -331,6 +334,38 @@ static DEFINE_PCI_DEVICE_TABLE(iTCO_wdt_pci_tbl) = {
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e5d), TCO_PPT},
|
{ PCI_VDEVICE(INTEL, 0x1e5d), TCO_PPT},
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e5e), TCO_PPT},
|
{ PCI_VDEVICE(INTEL, 0x1e5e), TCO_PPT},
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e5f), TCO_PPT},
|
{ PCI_VDEVICE(INTEL, 0x1e5f), TCO_PPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c40), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c41), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c42), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c43), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c44), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c45), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c46), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c47), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c48), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c49), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c4a), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c4b), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c4c), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c4d), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c4e), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c4f), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c50), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c51), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c52), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c53), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c54), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c55), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c56), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c57), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c58), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c59), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c5a), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c5b), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c5c), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c5d), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c5e), TCO_LPT},
|
||||||
|
{ PCI_VDEVICE(INTEL, 0x8c5f), TCO_LPT},
|
||||||
{ 0, }, /* End of list */
|
{ 0, }, /* End of list */
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl);
|
MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl);
|
||||||
|
|
|
@ -247,7 +247,6 @@ static struct miscdevice imx2_wdt_miscdev = {
|
||||||
static int __init imx2_wdt_probe(struct platform_device *pdev)
|
static int __init imx2_wdt_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
int res_size;
|
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
@ -256,15 +255,7 @@ static int __init imx2_wdt_probe(struct platform_device *pdev)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
res_size = resource_size(res);
|
imx2_wdt.base = devm_request_and_ioremap(&pdev->dev, res);
|
||||||
if (!devm_request_mem_region(&pdev->dev, res->start, res_size,
|
|
||||||
res->name)) {
|
|
||||||
dev_err(&pdev->dev, "can't allocate %d bytes at %d address\n",
|
|
||||||
res_size, res->start);
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
imx2_wdt.base = devm_ioremap_nocache(&pdev->dev, res->start, res_size);
|
|
||||||
if (!imx2_wdt.base) {
|
if (!imx2_wdt.base) {
|
||||||
dev_err(&pdev->dev, "ioremap failed\n");
|
dev_err(&pdev->dev, "ioremap failed\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
|
@ -72,7 +72,7 @@ struct nuc900_wdt {
|
||||||
};
|
};
|
||||||
|
|
||||||
static unsigned long nuc900wdt_busy;
|
static unsigned long nuc900wdt_busy;
|
||||||
struct nuc900_wdt *nuc900_wdt;
|
static struct nuc900_wdt *nuc900_wdt;
|
||||||
|
|
||||||
static inline void nuc900_wdt_keepalive(void)
|
static inline void nuc900_wdt_keepalive(void)
|
||||||
{
|
{
|
||||||
|
@ -287,7 +287,8 @@ static int __devinit nuc900wdt_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
setup_timer(&nuc900_wdt->timer, nuc900_wdt_timer_ping, 0);
|
setup_timer(&nuc900_wdt->timer, nuc900_wdt_timer_ping, 0);
|
||||||
|
|
||||||
if (misc_register(&nuc900wdt_miscdev)) {
|
ret = misc_register(&nuc900wdt_miscdev);
|
||||||
|
if (ret) {
|
||||||
dev_err(&pdev->dev, "err register miscdev on minor=%d (%d)\n",
|
dev_err(&pdev->dev, "err register miscdev on minor=%d (%d)\n",
|
||||||
WATCHDOG_MINOR, ret);
|
WATCHDOG_MINOR, ret);
|
||||||
goto err_clk;
|
goto err_clk;
|
||||||
|
|
|
@ -339,6 +339,7 @@ static int __devinit omap_wdt_probe(struct platform_device *pdev)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_misc:
|
err_misc:
|
||||||
|
pm_runtime_disable(wdev->dev);
|
||||||
platform_set_drvdata(pdev, NULL);
|
platform_set_drvdata(pdev, NULL);
|
||||||
iounmap(wdev->base);
|
iounmap(wdev->base);
|
||||||
|
|
||||||
|
@ -371,6 +372,7 @@ static int __devexit omap_wdt_remove(struct platform_device *pdev)
|
||||||
struct omap_wdt_dev *wdev = platform_get_drvdata(pdev);
|
struct omap_wdt_dev *wdev = platform_get_drvdata(pdev);
|
||||||
struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
|
||||||
|
pm_runtime_disable(wdev->dev);
|
||||||
if (!res)
|
if (!res)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
|
|
|
@ -226,7 +226,7 @@ static long pnx4008_wdt_ioctl(struct file *file, unsigned int cmd,
|
||||||
static int pnx4008_wdt_release(struct inode *inode, struct file *file)
|
static int pnx4008_wdt_release(struct inode *inode, struct file *file)
|
||||||
{
|
{
|
||||||
if (!test_bit(WDT_OK_TO_CLOSE, &wdt_status))
|
if (!test_bit(WDT_OK_TO_CLOSE, &wdt_status))
|
||||||
printk(KERN_WARNING "WATCHDOG: Device closed unexpectdly\n");
|
printk(KERN_WARNING "WATCHDOG: Device closed unexpectedly\n");
|
||||||
|
|
||||||
wdt_disable();
|
wdt_disable();
|
||||||
clk_disable(wdt_clk);
|
clk_disable(wdt_clk);
|
||||||
|
|
|
@ -174,7 +174,7 @@ static int stmp3xxx_wdt_release(struct inode *inode, struct file *file)
|
||||||
if (!nowayout) {
|
if (!nowayout) {
|
||||||
if (!test_bit(WDT_OK_TO_CLOSE, &wdt_status)) {
|
if (!test_bit(WDT_OK_TO_CLOSE, &wdt_status)) {
|
||||||
wdt_ping();
|
wdt_ping();
|
||||||
pr_debug("%s: Device closed unexpectdly\n", __func__);
|
pr_debug("%s: Device closed unexpectedly\n", __func__);
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
} else {
|
} else {
|
||||||
wdt_disable();
|
wdt_disable();
|
||||||
|
|
|
@ -124,8 +124,6 @@ static int wdt_stop(struct watchdog_device *wdd)
|
||||||
static int wdt_set_timeout(struct watchdog_device *wdd,
|
static int wdt_set_timeout(struct watchdog_device *wdd,
|
||||||
unsigned int new_timeout)
|
unsigned int new_timeout)
|
||||||
{
|
{
|
||||||
if (new_timeout < 1 || new_timeout > WDT_TIMEOUT_MAX)
|
|
||||||
return -EINVAL;
|
|
||||||
writel(new_timeout, wdt_mem + VIA_WDT_COUNT);
|
writel(new_timeout, wdt_mem + VIA_WDT_COUNT);
|
||||||
timeout = new_timeout;
|
timeout = new_timeout;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -150,6 +148,8 @@ static const struct watchdog_ops wdt_ops = {
|
||||||
static struct watchdog_device wdt_dev = {
|
static struct watchdog_device wdt_dev = {
|
||||||
.info = &wdt_info,
|
.info = &wdt_info,
|
||||||
.ops = &wdt_ops,
|
.ops = &wdt_ops,
|
||||||
|
.min_timeout = 1,
|
||||||
|
.max_timeout = WDT_TIMEOUT_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __devinit wdt_probe(struct pci_dev *pdev,
|
static int __devinit wdt_probe(struct pci_dev *pdev,
|
||||||
|
@ -233,7 +233,7 @@ static void __devexit wdt_remove(struct pci_dev *pdev)
|
||||||
pci_disable_device(pdev);
|
pci_disable_device(pdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_PCI_DEVICE_TABLE(wdt_pci_table) = {
|
static DEFINE_PCI_DEVICE_TABLE(wdt_pci_table) = {
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_CX700) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_CX700) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VX800) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VX800) },
|
||||||
{ PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VX855) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VX855) },
|
||||||
|
|
|
@ -152,12 +152,12 @@ static long wafwdt_ioctl(struct file *file, unsigned int cmd,
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
if (options & WDIOS_DISABLECARD) {
|
if (options & WDIOS_DISABLECARD) {
|
||||||
wafwdt_start();
|
wafwdt_stop();
|
||||||
retval = 0;
|
retval = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options & WDIOS_ENABLECARD) {
|
if (options & WDIOS_ENABLECARD) {
|
||||||
wafwdt_stop();
|
wafwdt_start();
|
||||||
retval = 0;
|
retval = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -212,10 +212,10 @@ static long wm8350_wdt_ioctl(struct file *file, unsigned int cmd,
|
||||||
|
|
||||||
/* Setting both simultaneously means at least one must fail */
|
/* Setting both simultaneously means at least one must fail */
|
||||||
if (options == WDIOS_DISABLECARD)
|
if (options == WDIOS_DISABLECARD)
|
||||||
ret = wm8350_wdt_start(wm8350);
|
ret = wm8350_wdt_stop(wm8350);
|
||||||
|
|
||||||
if (options == WDIOS_ENABLECARD)
|
if (options == WDIOS_ENABLECARD)
|
||||||
ret = wm8350_wdt_stop(wm8350);
|
ret = wm8350_wdt_start(wm8350);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue