get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2215574/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2215574,
    "url": "http://patchwork.ozlabs.org/api/patches/2215574/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260324-dev-b4-aaeon-mcu-driver-v4-5-afb011df4794@bootlin.com/",
    "project": {
        "id": 42,
        "url": "http://patchwork.ozlabs.org/api/projects/42/?format=api",
        "name": "Linux GPIO development",
        "link_name": "linux-gpio",
        "list_id": "linux-gpio.vger.kernel.org",
        "list_email": "linux-gpio@vger.kernel.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260324-dev-b4-aaeon-mcu-driver-v4-5-afb011df4794@bootlin.com>",
    "list_archive_url": null,
    "date": "2026-03-24T19:24:31",
    "name": "[v4,5/5] watchdog: aaeon: Add watchdog driver for SRG-IMX8P MCU",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "bc3347e408926f0144d0af3c22c4d535e27bf79e",
    "submitter": {
        "id": 82054,
        "url": "http://patchwork.ozlabs.org/api/people/82054/?format=api",
        "name": "Thomas Perrot (Schneider Electric)",
        "email": "thomas.perrot@bootlin.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260324-dev-b4-aaeon-mcu-driver-v4-5-afb011df4794@bootlin.com/mbox/",
    "series": [
        {
            "id": 497335,
            "url": "http://patchwork.ozlabs.org/api/series/497335/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/list/?series=497335",
            "date": "2026-03-24T19:24:29",
            "name": "Add support for AAEON SRG-IMX8P MCU",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/497335/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2215574/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2215574/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-gpio+bounces-34105-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-gpio@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256\n header.s=dkim header.b=P9lL39LB;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-gpio+bounces-34105-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com\n header.b=\"P9lL39LB\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=185.171.202.116",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=bootlin.com",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=bootlin.com"
        ],
        "Received": [
            "from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fgKt556qSz20Hg\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 06:31:57 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id CD8C730E2C73\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 24 Mar 2026 19:25:29 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 29053301460;\n\tTue, 24 Mar 2026 19:25:02 +0000 (UTC)",
            "from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 2408F312819;\n\tTue, 24 Mar 2026 19:24:59 +0000 (UTC)",
            "from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233])\n\tby smtpout-04.galae.net (Postfix) with ESMTPS id 12D39C5809E;\n\tTue, 24 Mar 2026 19:25:26 +0000 (UTC)",
            "from mail.galae.net (mail.galae.net [212.83.136.155])\n\tby smtpout-01.galae.net (Postfix) with ESMTPS id A5362601A0;\n\tTue, 24 Mar 2026 19:24:58 +0000 (UTC)",
            "from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon)\n with ESMTPSA id 965F410451131;\n\tTue, 24 Mar 2026 20:24:55 +0100 (CET)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774380301; cv=none;\n b=Eqms9czEKEqRDsm7UJhtayAw4n1mRLvr5bR0CuM/1mgeJa2fMBR5t5HXYneqsGjuWTF/CPEX6aCPkJxltquaYeNqsNOIV/cgJ9r21Bdi/J4E/cMpsU0W4U6ubD7nLisBD1Uc5bJug2psPVTvx+lSaaxZAa+gXMAKEfoZgItWaUs=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774380301; c=relaxed/simple;\n\tbh=wPhgCjwQeSn+BRAqoO5C5GaoqnCQLTgwDb2zWF3xTM4=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:\n\t In-Reply-To:To:Cc;\n b=nXIEcSEf6EVEhtKbG5hlbgK9kdlEqfihgLjORRfJC52pg3EDrdaajVlCEw2HbU1I8ANAtW9nDUWSFEixLBqD3o9zuA3RtqCEBJBdZu8z0UmIVSuILtKiYg5mrTy0kZI14WtsWNEW/PT7SxrhMfqLSz8D9m0uEFHxFcVrO/y7Jms=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=bootlin.com;\n spf=pass smtp.mailfrom=bootlin.com;\n dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com\n header.b=P9lL39LB; arc=none smtp.client-ip=185.171.202.116",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim;\n\tt=1774380297; h=from:subject:date:message-id:to:cc:mime-version:content-type:\n\t content-transfer-encoding:in-reply-to:references;\n\tbh=1q0RfS1aGG0lt8SxBmxfpAMO/VATuKtCz+N6YMM1DZo=;\n\tb=P9lL39LBq8Hpic2d2kTOq1A50ORaO2tfnv4QJtnyolkztW8KFPRi6TAB7le3ipL7mzoYtR\n\t05MzCY9tvSoH6XuteTaMIaWBOh+htIYzUoYR12OKpvrGoOTGH1ssxVRL6i8Bp9KLj95crJ\n\tx/JvXtdU1/89Ls5oQ75ldw+YVmXmwKUKN9iZw85XgTa/6n5mk9Zu8hZYarYPmafvoQW7cc\n\tIK/B3T5JPu3yTLE/qOX2gwxYpn3svLJr5jWBbcY1OMqts5vnHo973XCY3v+xHti0R3H6hl\n\ttuqJxrLuQAagaXIUg4JGEBD7wgS6pLx6SjFs05HbwG/x/Yx+YUjK8YYw0UAsYA==",
        "From": "\"Thomas Perrot (Schneider Electric)\" <thomas.perrot@bootlin.com>",
        "Date": "Tue, 24 Mar 2026 20:24:31 +0100",
        "Subject": "[PATCH v4 5/5] watchdog: aaeon: Add watchdog driver for SRG-IMX8P\n MCU",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-gpio@vger.kernel.org",
        "List-Id": "<linux-gpio.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-gpio+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-gpio+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "8bit",
        "Message-Id": "<20260324-dev-b4-aaeon-mcu-driver-v4-5-afb011df4794@bootlin.com>",
        "References": "<20260324-dev-b4-aaeon-mcu-driver-v4-0-afb011df4794@bootlin.com>",
        "In-Reply-To": "<20260324-dev-b4-aaeon-mcu-driver-v4-0-afb011df4794@bootlin.com>",
        "To": "Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzk+dt@kernel.org>,\n  Conor Dooley <conor+dt@kernel.org>, Linus Walleij <linusw@kernel.org>,\n  Bartosz Golaszewski <brgl@kernel.org>, Shawn Guo <shawnguo@kernel.org>,\n  Sascha Hauer <s.hauer@pengutronix.de>,\n  Pengutronix Kernel Team <kernel@pengutronix.de>,\n  Fabio Estevam <festevam@gmail.com>,\n =?utf-8?b?SsOpcsOpbWllIERhdXRoZXJpYmVz?= <jeremie.dautheribes@bootlin.com>,\n  Wim Van Sebroeck <wim@linux-watchdog.org>,\n  Guenter Roeck <linux@roeck-us.net>, Lee Jones <lee@kernel.org>",
        "Cc": "devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,\n linux-gpio@vger.kernel.org, imx@lists.linux.dev,\n linux-arm-kernel@lists.infradead.org, linux-watchdog@vger.kernel.org,\n Thomas Petazzoni <thomas.petazzoni@bootlin.com>,\n Miquel Raynal <miquel.raynal@bootlin.com>,\n \"Thomas Perrot (Schneider Electric)\" <thomas.perrot@bootlin.com>",
        "X-Mailer": "b4 0.14.2",
        "X-Developer-Signature": "v=1; a=openpgp-sha256; l=6725;\n i=thomas.perrot@bootlin.com; h=from:subject:message-id;\n bh=wPhgCjwQeSn+BRAqoO5C5GaoqnCQLTgwDb2zWF3xTM4=;\n b=owEB7QES/pANAwAKAZ/ACwVx/grtAcsmYgBpwuT27JsW8/YHaUMPDqgCojJdgL89bJwEQd9x4\n cly+1EmiH+JAbMEAAEKAB0WIQSHQHfGpqMKIwOoEiGfwAsFcf4K7QUCacLk9gAKCRCfwAsFcf4K\n 7UhvC/0UM418wlXqO3GCW341kENa5EIpae1YpssVqwzEhaf+0gDrlvNyNW5D4GWWsnK51zJlnzM\n 08fPq7tmk7sp9/Pf4DdFHoaAWPJ4imB8JPbXO5FlMomguIVdmSp35VCvbBkGr1Bai16ZEl7KdrT\n 9xBOfeb8PJDsFlrLoT2dJ91bQS7ZdiAp12NjZ6xO/8UhfdoAPzOVu5BUEQfXa4O64SQLD72P6mJ\n fTQJwjVmsPMGLg4giGEhDZkLhcZ+p0MKkcqNqHBN1L4ELUvMT+L5Ox8XRcberjiEOM8FIG2nMK4\n lchewQwOIFJF6mj7WQlMtszE53Eci1gsnaKx7V91djJkpI8lGqq/aCagdjP1RrLW2e7K69zAE+w\n LocOuwnEDaRN5t+KJMpIP/nvLmd7vDRb+nMdWIecysAybdracX/J8pn7gdGIXJRGuX3wNYFFunP\n w16aBXCnUhtQOeTmj293cxeOXjChM41pUMZO7VMhctcoMoInbC8S2Xw8PivPI+ktiCcKc=",
        "X-Developer-Key": "i=thomas.perrot@bootlin.com; a=openpgp;\n fpr=874077C6A6A30A2303A812219FC00B0571FE0AED",
        "X-Last-TLS-Session-Version": "TLSv1.3"
    },
    "content": "Add watchdog driver for the Aaeon SRG-IMX8P embedded controller.\nThis driver provides system monitoring and recovery capabilities\nthrough the MCU's watchdog timer.\n\nThe watchdog supports start, stop, and ping operations with a maximum\nhardware heartbeat of 25 seconds and a default timeout of 240 seconds.\n\nCo-developed-by: Jérémie Dautheribes (Schneider Electric) <jeremie.dautheribes@bootlin.com>\nSigned-off-by: Jérémie Dautheribes (Schneider Electric) <jeremie.dautheribes@bootlin.com>\nSigned-off-by: Thomas Perrot (Schneider Electric) <thomas.perrot@bootlin.com>\n---\n MAINTAINERS                      |   1 +\n drivers/watchdog/Kconfig         |  10 +++\n drivers/watchdog/Makefile        |   1 +\n drivers/watchdog/aaeon_mcu_wdt.c | 134 +++++++++++++++++++++++++++++++++++++++\n 4 files changed, 146 insertions(+)",
    "diff": "diff --git a/MAINTAINERS b/MAINTAINERS\nindex 2538f8c4bc1482b139e18243a68f0a21b9be3704..7b92af42c9fdc17a69a4e7a2fe50f9e199c8b144 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -193,6 +193,7 @@ S:\tMaintained\n F:\tDocumentation/devicetree/bindings/mfd/aaeon,srg-imx8p-mcu.yaml\n F:\tdrivers/gpio/gpio-aaeon-mcu.c\n F:\tdrivers/mfd/aaeon-mcu.c\n+F:\tdrivers/watchdog/aaeon_mcu_wdt.c\n F:\tinclude/linux/mfd/aaeon-mcu.h\n \n AAEON UPBOARD FPGA MFD DRIVER\ndiff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig\nindex d3b9df7d466b0b7215ee87b3040811d44ee53d2a..da54e6a641d7af343e4f0ae84f96f150979f8348 100644\n--- a/drivers/watchdog/Kconfig\n+++ b/drivers/watchdog/Kconfig\n@@ -168,6 +168,16 @@ config SOFT_WATCHDOG_PRETIMEOUT\n \t  watchdog. Be aware that governors might affect the watchdog because it\n \t  is purely software, e.g. the panic governor will stall it!\n \n+config AAEON_MCU_WATCHDOG\n+\ttristate \"Aaeon MCU Watchdog\"\n+\tdepends on MFD_AAEON_MCU\n+\tselect WATCHDOG_CORE\n+\thelp\n+\t  Select this option to enable watchdog timer support for the Aaeon\n+\t  SRG-IMX8P onboard microcontroller (MCU). This driver provides\n+\t  watchdog functionality through the MCU, allowing system monitoring\n+\t  and automatic recovery from system hangs.\n+\n config BD957XMUF_WATCHDOG\n \ttristate \"ROHM BD9576MUF and BD9573MUF PMIC Watchdog\"\n \tdepends on MFD_ROHM_BD957XMUF\ndiff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile\nindex ba52099b125398a32f80dad23317e223cc4af028..2deec425d3eafb6b208e061fda9f216f4baa8ecc 100644\n--- a/drivers/watchdog/Makefile\n+++ b/drivers/watchdog/Makefile\n@@ -37,6 +37,7 @@ obj-$(CONFIG_USBPCWATCHDOG) += pcwd_usb.o\n # ALPHA Architecture\n \n # ARM Architecture\n+obj-$(CONFIG_AAEON_MCU_WATCHDOG) += aaeon_mcu_wdt.o\n obj-$(CONFIG_ARM_SP805_WATCHDOG) += sp805_wdt.o\n obj-$(CONFIG_ARM_SBSA_WATCHDOG) += sbsa_gwdt.o\n obj-$(CONFIG_ARMADA_37XX_WATCHDOG) += armada_37xx_wdt.o\ndiff --git a/drivers/watchdog/aaeon_mcu_wdt.c b/drivers/watchdog/aaeon_mcu_wdt.c\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..f01571cf0036d252f9bebd3a9d6a1c2e7a83e42c\n--- /dev/null\n+++ b/drivers/watchdog/aaeon_mcu_wdt.c\n@@ -0,0 +1,134 @@\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+/*\n+ * Aaeon MCU Watchdog driver\n+ *\n+ * Copyright (C) 2025 Bootlin\n+ * Author: Jérémie Dautheribes <jeremie.dautheribes@bootlin.com>\n+ * Author: Thomas Perrot <thomas.perrot@bootlin.com>\n+ */\n+\n+#include <linux/mfd/aaeon-mcu.h>\n+#include <linux/module.h>\n+#include <linux/platform_device.h>\n+#include <linux/regmap.h>\n+#include <linux/watchdog.h>\n+\n+#define AAEON_MCU_CONTROL_WDT\t0x63\n+#define AAEON_MCU_PING_WDT\t0x73\n+\n+#define AAEON_MCU_WDT_TIMEOUT         240\n+#define AAEON_MCU_WDT_HEARTBEAT_MS    25000\n+\n+struct aaeon_mcu_wdt {\n+\tstruct watchdog_device wdt;\n+\tstruct regmap *regmap;\n+};\n+\n+static int aaeon_mcu_wdt_cmd(struct aaeon_mcu_wdt *data, u8 opcode, u8 arg)\n+{\n+\t/* The MCU always sends a response byte after each command; discard it. */\n+\treturn regmap_write(data->regmap, AAEON_MCU_REG(opcode, arg), 0);\n+}\n+\n+static int aaeon_mcu_wdt_start(struct watchdog_device *wdt)\n+{\n+\tstruct aaeon_mcu_wdt *data = watchdog_get_drvdata(wdt);\n+\n+\treturn aaeon_mcu_wdt_cmd(data, AAEON_MCU_CONTROL_WDT, 0x01);\n+}\n+\n+static int aaeon_mcu_wdt_status(struct watchdog_device *wdt, bool *enabled)\n+{\n+\tstruct aaeon_mcu_wdt *data = watchdog_get_drvdata(wdt);\n+\tunsigned int rsp;\n+\tint ret;\n+\n+\tret = regmap_read(data->regmap,\n+\t\t\t  AAEON_MCU_REG(AAEON_MCU_CONTROL_WDT, 0x02),\n+\t\t\t  &rsp);\n+\tif (ret)\n+\t\treturn ret;\n+\n+\t*enabled = rsp == 0x01;\n+\treturn 0;\n+}\n+\n+static int aaeon_mcu_wdt_stop(struct watchdog_device *wdt)\n+{\n+\tstruct aaeon_mcu_wdt *data = watchdog_get_drvdata(wdt);\n+\n+\treturn aaeon_mcu_wdt_cmd(data, AAEON_MCU_CONTROL_WDT, 0x00);\n+}\n+\n+static int aaeon_mcu_wdt_ping(struct watchdog_device *wdt)\n+{\n+\tstruct aaeon_mcu_wdt *data = watchdog_get_drvdata(wdt);\n+\n+\treturn aaeon_mcu_wdt_cmd(data, AAEON_MCU_PING_WDT, 0x00);\n+}\n+\n+static const struct watchdog_info aaeon_mcu_wdt_info = {\n+\t.identity\t= \"Aaeon MCU Watchdog\",\n+\t.options\t= WDIOF_KEEPALIVEPING\n+};\n+\n+static const struct watchdog_ops aaeon_mcu_wdt_ops = {\n+\t.owner\t\t= THIS_MODULE,\n+\t.start\t\t= aaeon_mcu_wdt_start,\n+\t.stop\t\t= aaeon_mcu_wdt_stop,\n+\t.ping\t\t= aaeon_mcu_wdt_ping,\n+};\n+\n+static int aaeon_mcu_wdt_probe(struct platform_device *pdev)\n+{\n+\tstruct device *dev = &pdev->dev;\n+\tstruct watchdog_device *wdt;\n+\tstruct aaeon_mcu_wdt *data;\n+\tbool enabled;\n+\tint ret;\n+\n+\tdata = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);\n+\tif (!data)\n+\t\treturn -ENOMEM;\n+\n+\tdata->regmap = dev_get_regmap(dev->parent, NULL);\n+\tif (!data->regmap)\n+\t\treturn -ENODEV;\n+\n+\twdt = &data->wdt;\n+\twdt->parent = dev;\n+\twdt->info = &aaeon_mcu_wdt_info;\n+\twdt->ops = &aaeon_mcu_wdt_ops;\n+\t/*\n+\t * The MCU firmware has a fixed hardware timeout of 25 seconds that\n+\t * cannot be changed. The watchdog core will handle automatic pinging\n+\t * to support longer timeouts. The software timeout of 240 seconds is\n+\t * chosen arbitrarily as a reasonable value and is not user-configurable.\n+\t */\n+\twdt->timeout = AAEON_MCU_WDT_TIMEOUT;\n+\twdt->max_hw_heartbeat_ms = AAEON_MCU_WDT_HEARTBEAT_MS;\n+\n+\twatchdog_set_drvdata(wdt, data);\n+\n+\tret = aaeon_mcu_wdt_status(wdt, &enabled);\n+\tif (ret)\n+\t\treturn ret;\n+\n+\tif (enabled)\n+\t\tset_bit(WDOG_HW_RUNNING, &wdt->status);\n+\n+\treturn devm_watchdog_register_device(dev, wdt);\n+}\n+\n+static struct platform_driver aaeon_mcu_wdt_driver = {\n+\t.driver\t\t= {\n+\t\t.name\t= \"aaeon-mcu-wdt\",\n+\t},\n+\t.probe\t\t= aaeon_mcu_wdt_probe,\n+};\n+\n+module_platform_driver(aaeon_mcu_wdt_driver);\n+\n+MODULE_DESCRIPTION(\"Aaeon MCU Watchdog Driver\");\n+MODULE_AUTHOR(\"Jérémie Dautheribes <jeremie.dautheribes@bootlin.com>\");\n+MODULE_LICENSE(\"GPL\");\n",
    "prefixes": [
        "v4",
        "5/5"
    ]
}