Message ID | 20210928065735.548966-1-linux@weissschuh.net (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | watchdog: sp5100_tco: Add support for get_timeleft | expand |
On Tue, Sep 28, 2021 at 08:57:35AM +0200, Thomas Weißschuh wrote: > Tested on a Gigabyte X570 I AORUS PRO WIFI. > > Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > drivers/watchdog/sp5100_tco.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c > index a730ecbf78cd..dd9a744f82f8 100644 > --- a/drivers/watchdog/sp5100_tco.c > +++ b/drivers/watchdog/sp5100_tco.c > @@ -10,6 +10,7 @@ > * https://www.kernelconcepts.de > * > * See AMD Publication 43009 "AMD SB700/710/750 Register Reference Guide", > + * AMD Publication 44413 "AMD SP5100 Register Reference Guide" > * AMD Publication 45482 "AMD SB800-Series Southbridges Register > * Reference Guide" > * AMD Publication 48751 "BIOS and Kernel Developer’s Guide (BKDG) > @@ -144,6 +145,13 @@ static int tco_timer_set_timeout(struct watchdog_device *wdd, > return 0; > } > > +static unsigned int tco_timer_get_timeleft(struct watchdog_device *wdd) > +{ > + struct sp5100_tco *tco = watchdog_get_drvdata(wdd); > + > + return readl(SP5100_WDT_COUNT(tco->tcobase)); > +} > + > static u8 sp5100_tco_read_pm_reg8(u8 index) > { > outb(index, SP5100_IO_PM_INDEX_REG); > @@ -386,6 +394,7 @@ static const struct watchdog_ops sp5100_tco_wdt_ops = { > .stop = tco_timer_stop, > .ping = tco_timer_ping, > .set_timeout = tco_timer_set_timeout, > + .get_timeleft = tco_timer_get_timeleft, > }; > > static int sp5100_tco_probe(struct platform_device *pdev) > > base-commit: 41e73feb1024929e75eaf2f7cd93f35a3feb331b > -- > 2.33.0 >
diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c index a730ecbf78cd..dd9a744f82f8 100644 --- a/drivers/watchdog/sp5100_tco.c +++ b/drivers/watchdog/sp5100_tco.c @@ -10,6 +10,7 @@ * https://www.kernelconcepts.de * * See AMD Publication 43009 "AMD SB700/710/750 Register Reference Guide", + * AMD Publication 44413 "AMD SP5100 Register Reference Guide" * AMD Publication 45482 "AMD SB800-Series Southbridges Register * Reference Guide" * AMD Publication 48751 "BIOS and Kernel Developer’s Guide (BKDG) @@ -144,6 +145,13 @@ static int tco_timer_set_timeout(struct watchdog_device *wdd, return 0; } +static unsigned int tco_timer_get_timeleft(struct watchdog_device *wdd) +{ + struct sp5100_tco *tco = watchdog_get_drvdata(wdd); + + return readl(SP5100_WDT_COUNT(tco->tcobase)); +} + static u8 sp5100_tco_read_pm_reg8(u8 index) { outb(index, SP5100_IO_PM_INDEX_REG); @@ -386,6 +394,7 @@ static const struct watchdog_ops sp5100_tco_wdt_ops = { .stop = tco_timer_stop, .ping = tco_timer_ping, .set_timeout = tco_timer_set_timeout, + .get_timeleft = tco_timer_get_timeleft, }; static int sp5100_tco_probe(struct platform_device *pdev)
Tested on a Gigabyte X570 I AORUS PRO WIFI. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> --- drivers/watchdog/sp5100_tco.c | 9 +++++++++ 1 file changed, 9 insertions(+) base-commit: 41e73feb1024929e75eaf2f7cd93f35a3feb331b