Skip to contentSkip to conversation

aspeed: watchdog: Add status function

PATCH In review Eddie James 2 participants 3 messages Mar 26, 2018

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 aspeed: watchdog: Add status function

Populate the status watchdog operation to return the "timeout status" register of the ASPEED watchdog.

---
 drivers/watchdog/aspeed_wdt.c | 9 +++++++++
 1 file changed, 9 insertions(+)
drivers/watchdog/aspeed_wdt.c +9 -0
index a5b8eb2..d6dd5c9 100644
@@ -55,6 +55,7 @@ struct aspeed_wdt_config {
 #define   WDT_CTRL_WDT_INTR		BIT(2)
 #define   WDT_CTRL_RESET_SYSTEM		BIT(1)
 #define   WDT_CTRL_ENABLE		BIT(0)
+#define WDT_TIMEOUT_STATUS	0x10
 
 /*
  * WDT_RESET_WIDTH controls the characteristics of the external pulse (if
@@ -138,6 +139,13 @@ static int aspeed_wdt_ping(struct watchdog_device *wdd)
 	return 0;
 }
 
+static unsigned int aspeed_wdt_status(struct watchdog_device *wdd)
+{
+	struct aspeed_wdt *wdt = to_aspeed_wdt(wdd);
+
+	return readl(wdt->base + WDT_TIMEOUT_STATUS);
+}
+
 static int aspeed_wdt_set_timeout(struct watchdog_device *wdd,
 				  unsigned int timeout)
 {
@@ -171,6 +179,7 @@ static int aspeed_wdt_restart(struct watchdog_device *wdd,
 	.start		= aspeed_wdt_start,
 	.stop		= aspeed_wdt_stop,
 	.ping		= aspeed_wdt_ping,
+	.status		= aspeed_wdt_status,
 	.set_timeout	= aspeed_wdt_set_timeout,
 	.restart	= aspeed_wdt_restart,
 	.owner		= THIS_MODULE,
Signature · 1 line
1.8.3.1
maintainer
#1 lore raw
Quoted 21 lines · Eddie James

Populate the status watchdog operation to return the "timeout status" register of the ASPEED watchdog.

---
  drivers/watchdog/aspeed_wdt.c | 9 +++++++++
  1 file changed, 9 insertions(+)
drivers/watchdog/aspeed_wdt.c +1 -0
index a5b8eb2..d6dd5c9 100644
@@ -55,6 +55,7 @@ struct aspeed_wdt_config {
  #define   WDT_CTRL_WDT_INTR		BIT(2)
  #define   WDT_CTRL_RESET_SYSTEM		BIT(1)
  #define   WDT_CTRL_ENABLE		BIT(0)
+#define WDT_TIMEOUT_STATUS	0x10
 
  /*
   * WDT_RESET_WIDTH controls the characteristics of the external pulse (if

drivers/watchdog/aspeed_wdt.c static int aspeed_wdt_ping(struct watchdog_device *wdd) · line 147

Quoted 9 lines
drivers/watchdog/aspeed_wdt.c +6 -0
@@ -138,6 +139,13 @@ static int aspeed_wdt_ping(struct watchdog_device *wdd)
  	return 0;
  }
 
+static unsigned int aspeed_wdt_status(struct watchdog_device *wdd)
+{
+	struct aspeed_wdt *wdt = to_aspeed_wdt(wdd);
+
+	return readl(wdt->base + WDT_TIMEOUT_STATUS);
+}

Does the register report WDIOF_* status flags/bits as defined in the API ? This seems more than unlikely.

Guenter

Quoted 13 lines
drivers/watchdog/aspeed_wdt.c +2 -0
+
  static int aspeed_wdt_set_timeout(struct watchdog_device *wdd,
  				  unsigned int timeout)
  {
@@ -171,6 +179,7 @@ static int aspeed_wdt_restart(struct watchdog_device *wdd,
  	.start		= aspeed_wdt_start,
  	.stop		= aspeed_wdt_stop,
  	.ping		= aspeed_wdt_ping,
+	.status		= aspeed_wdt_status,
  	.set_timeout	= aspeed_wdt_set_timeout,
  	.restart	= aspeed_wdt_restart,
  	.owner		= THIS_MODULE,
#2 lore raw
Quoted 25 lines · Guenter Roeck
Quoted 24 lines · Eddie James

Populate the status watchdog operation to return the "timeout status" register of the ASPEED watchdog.

---
  drivers/watchdog/aspeed_wdt.c | 9 +++++++++

  1 file changed, 9 insertions(+)
drivers/watchdog/aspeed_wdt.c +1 -0
index a5b8eb2..d6dd5c9 100644
@@ -55,6 +55,7 @@ struct aspeed_wdt_config {
   #define   WDT_CTRL_WDT_INTR        BIT(2)
   #define   WDT_CTRL_RESET_SYSTEM        BIT(1)
   #define   WDT_CTRL_ENABLE        BIT(0)
+#define WDT_TIMEOUT_STATUS    0x10
     /*
    * WDT_RESET_WIDTH controls the characteristics of the external pulse (if
@@ -138,6 +139,13 @@ static int aspeed_wdt_ping(struct 
 watchdog_device *wdd)
       return 0;
   }
   +static unsigned int aspeed_wdt_status(struct watchdog_device *wdd)
Quoted 8 lines

drivers/watchdog/aspeed_wdt.c static int aspeed_wdt_ping(struct watchdog_device *wdd) · line 147

Quoted 5 lines
drivers/watchdog/aspeed_wdt.c +5 -0
+{
+    struct aspeed_wdt *wdt = to_aspeed_wdt(wdd);
+
+    return readl(wdt->base + WDT_TIMEOUT_STATUS);
+}

Does the register report WDIOF_* status flags/bits as defined in the API ? This seems more than unlikely.

Ah, I see I'm misusing the API. It does not... I will rework.

Thanks,
Eddie

Quoted 18 lines

Guenter

Quoted 14 lines
drivers/watchdog/aspeed_wdt.c +1 -0
+
   static int aspeed_wdt_set_timeout(struct watchdog_device *wdd,
                     unsigned int timeout)

  {

drivers/watchdog/aspeed_wdt.c +1 -0
@@ -171,6 +179,7 @@ static int aspeed_wdt_restart(struct 
 watchdog_device *wdd,
       .start        = aspeed_wdt_start,
       .stop        = aspeed_wdt_stop,
       .ping        = aspeed_wdt_ping,
+    .status        = aspeed_wdt_status,
       .set_timeout    = aspeed_wdt_set_timeout,
       .restart    = aspeed_wdt_restart,

      .owner        = THIS_MODULE,