Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 107863
b: refs/heads/master
c: 0d7b101
h: refs/heads/master
i:
  107861: 212276a
  107859: 29b9091
  107855: d5ac4f4
v: v3
  • Loading branch information
Anton Vorontsov authored and Wim Van Sebroeck committed Aug 6, 2008
1 parent d2e767d commit c963f25
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cb55d282a0d2156e7d40ee81726ab16b569e96d7
refs/heads/master: 0d7b101404f7bedcf3f448c1667c3744551cd9ee
3 changes: 2 additions & 1 deletion trunk/drivers/watchdog/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -697,10 +697,11 @@ config 8xx_WDT

config 8xxx_WDT
tristate "MPC8xxx Platform Watchdog Timer"
depends on PPC_83xx || PPC_86xx
depends on PPC_8xx || PPC_83xx || PPC_86xx
help
This driver is for a SoC level watchdog that exists on some
Freescale PowerPC processors. So far this driver supports:
- MPC8xx watchdogs
- MPC83xx watchdogs
- MPC86xx watchdogs

Expand Down
44 changes: 33 additions & 11 deletions trunk/drivers/watchdog/mpc8xxx_wdt.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* mpc8xxx_wdt.c - MPC83xx/MPC86xx watchdog userspace interface
* mpc8xxx_wdt.c - MPC8xx/MPC83xx/MPC86xx watchdog userspace interface
*
* Authors: Dave Updegraff <dave@cray.org>
* Kumar Gala <galak@kernel.crashing.org>
Expand Down Expand Up @@ -207,13 +207,6 @@ static int __devinit mpc8xxx_wdt_probe(struct of_device *ofdev,
goto err_unmap;
}

ret = misc_register(&mpc8xxx_wdt_miscdev);
if (ret) {
pr_err("cannot register miscdev on minor=%d (err=%d)\n",
WATCHDOG_MINOR, ret);
goto err_unmap;
}

/* Calculate the timeout in seconds */
if (prescale)
timeout_sec = (timeout * wdt_type->prescaler) / freq;
Expand All @@ -234,6 +227,7 @@ static int __devinit mpc8xxx_wdt_probe(struct of_device *ofdev,
return 0;
err_unmap:
iounmap(wd_base);
wd_base = NULL;
return ret;
}

Expand Down Expand Up @@ -261,6 +255,12 @@ static const struct of_device_id mpc8xxx_wdt_match[] = {
.hw_enabled = true,
},
},
{
.compatible = "fsl,mpc823-wdt",
.data = &(struct mpc8xxx_wdt_type) {
.prescaler = 0x800,
},
},
{},
};
MODULE_DEVICE_TABLE(of, mpc8xxx_wdt_match);
Expand All @@ -275,20 +275,42 @@ static struct of_platform_driver mpc8xxx_wdt_driver = {
},
};

/*
* We do wdt initialization in two steps: arch_initcall probes the wdt
* very early to start pinging the watchdog (misc devices are not yet
* available), and later module_init() just registers the misc device.
*/
static int __init mpc8xxx_wdt_init_late(void)
{
int ret;

if (!wd_base)
return -ENODEV;

ret = misc_register(&mpc8xxx_wdt_miscdev);
if (ret) {
pr_err("cannot register miscdev on minor=%d (err=%d)\n",
WATCHDOG_MINOR, ret);
return ret;
}
return 0;
}
module_init(mpc8xxx_wdt_init_late);

static int __init mpc8xxx_wdt_init(void)
{
return of_register_platform_driver(&mpc8xxx_wdt_driver);
}
arch_initcall(mpc8xxx_wdt_init);

static void __exit mpc8xxx_wdt_exit(void)
{
of_unregister_platform_driver(&mpc8xxx_wdt_driver);
}

subsys_initcall(mpc8xxx_wdt_init);
module_exit(mpc8xxx_wdt_exit);

MODULE_AUTHOR("Dave Updegraff, Kumar Gala");
MODULE_DESCRIPTION("Driver for watchdog timer in MPC83xx/MPC86xx uProcessors");
MODULE_DESCRIPTION("Driver for watchdog timer in MPC8xx/MPC83xx/MPC86xx "
"uProcessors");
MODULE_LICENSE("GPL");
MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);

0 comments on commit c963f25

Please sign in to comment.