get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 809871,
    "url": "http://patchwork.ozlabs.org/api/patches/809871/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-imx/patch/20170904231602.29787-3-afaerber@suse.de/",
    "project": {
        "id": 19,
        "url": "http://patchwork.ozlabs.org/api/projects/19/?format=api",
        "name": "Linux IMX development",
        "link_name": "linux-imx",
        "list_id": "linux-imx-kernel.lists.patchwork.ozlabs.org",
        "list_email": "linux-imx-kernel@lists.patchwork.ozlabs.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20170904231602.29787-3-afaerber@suse.de>",
    "list_archive_url": null,
    "date": "2017-09-04T23:16:01",
    "name": "[v2,2/3] watchdog: Add Realtek RTD1295",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "6bd5c84da52ad163a3f6e8b5c25cc3fb24a32e7f",
    "submitter": {
        "id": 9542,
        "url": "http://patchwork.ozlabs.org/api/people/9542/?format=api",
        "name": "Andreas Färber",
        "email": "afaerber@suse.de"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-imx/patch/20170904231602.29787-3-afaerber@suse.de/mbox/",
    "series": [
        {
            "id": 1467,
            "url": "http://patchwork.ozlabs.org/api/series/1467/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-imx/list/?series=1467",
            "date": "2017-09-04T23:16:02",
            "name": "arm64: Realtek RTD1295 watchdog",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/1467/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/809871/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/809871/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>",
        "X-Original-To": "incoming-imx@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming-imx@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"jOk4IAPA\"; dkim-atps=neutral"
        ],
        "Received": [
            "from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xmQjr07s9z9sRm\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 09:17:36 +1000 (AEST)",
            "from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dp0cW-0004ud-BN; Mon, 04 Sep 2017 23:17:32 +0000",
            "from mx2.suse.de ([195.135.220.15] helo=mx1.suse.de)\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dp0bV-00040v-31 for linux-arm-kernel@lists.infradead.org;\n\tMon, 04 Sep 2017 23:16:33 +0000",
            "from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254])\n\tby mx1.suse.de (Postfix) with ESMTP id 4D60BABDB;\n\tMon,  4 Sep 2017 23:16:07 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tMessage-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=QTXnwYqZlTQ6Y1wN8NsRkJ3Ymv4cA008EYtXKXlOkmY=;\n\tb=jOk4IAPARRbD7t\n\t3GqFSntiS03+Tr9/NehcWb2iR1fGUDpUaq08yW13FeXG+yBy3N+7j+pRM0+28LR48m3ScE+zHCHcu\n\tp+B7j5POCtFXY8eUiu8/Z9AVQERSFXqspCEL7iWnCED6y8KCmYOeiZEAbRhffHTHnPJ6k3NdIDDfh\n\t7NgjBjOHakKs5DFHx9pBggiDF1kP5Oi6yQLKJful8DArk6sQWRyQFeUlBgSVh15C+nzh22Ajnh3We\n\tI9Js64Tmypduk4gCifq7qoDCI5H6/VogkZtEdhXnEbx+KifGmMkPPVJ08WI9A+jOZ5WoA6HTJ/XEy\n\t0jwJPiZ3CJyeXZYWhZXg==;",
        "X-Virus-Scanned": "by amavisd-new at test-mx.suse.de",
        "From": "=?utf-8?q?Andreas_F=C3=A4rber?= <afaerber@suse.de>",
        "To": "Wim Van Sebroeck <wim@iguana.be>, Guenter Roeck <linux@roeck-us.net>,\n\tlinux-watchdog@vger.kernel.org, linux-arm-kernel@lists.infradead.org",
        "Subject": "[PATCH v2 2/3] watchdog: Add Realtek RTD1295",
        "Date": "Tue,  5 Sep 2017 01:16:01 +0200",
        "Message-Id": "<20170904231602.29787-3-afaerber@suse.de>",
        "X-Mailer": "git-send-email 2.13.5",
        "In-Reply-To": "<20170904231602.29787-1-afaerber@suse.de>",
        "References": "<20170904231602.29787-1-afaerber@suse.de>",
        "MIME-Version": "1.0",
        "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ",
        "X-CRM114-CacheID": "sfid-20170904_161629_516167_F7011104 ",
        "X-CRM114-Status": "GOOD (  18.51  )",
        "X-Spam-Score": "-4.2 (----)",
        "X-Spam-Report": "SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-4.2 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at http://www.dnswl.org/,\n\tmedium trust [195.135.220.15 listed in list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay\n\tdomain\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]",
        "X-BeenThere": "linux-arm-kernel@lists.infradead.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.infradead.org/pipermail/linux-arm-kernel/>",
        "List-Post": "<mailto:linux-arm-kernel@lists.infradead.org>",
        "List-Help": "<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>",
        "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>",
        "Cc": "=?utf-8?b?6JKL5Li955C0?= <jiang.liqin@geniatech.com>,\n\tlinux-kernel@vger.kernel.org, =?utf-8?q?Andreas_F=C3=A4rber?=\n\t<afaerber@suse.de>, Roc He <hepeng@zidoo.tv>",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "base64",
        "Sender": "\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>",
        "Errors-To": "linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org",
        "List-Id": "linux-imx-kernel.lists.patchwork.ozlabs.org"
    },
    "content": "Add a watchdog driver for the Realtek RTD1295 SoC.\n\nBased on QNAP's arch/arm/mach-rtk119x/driver/rtk_watchdog.c code and\nmach-rtk119x/driver/dc2vo/fpga/include/iso_reg.h register defines.\n\nSigned-off-by: Andreas Färber <afaerber@suse.de>\n---\n v1 -> v2:\n * Added explicit include of bitops.h (Guenther)\n * Set timeout field in set_timeout (Guenther)\n * Implemented remove (Guenther)\n * Replaced remaining hardcoded frequency with clk_get_rate()\n \n drivers/watchdog/Kconfig       |  10 +++\n drivers/watchdog/Makefile      |   1 +\n drivers/watchdog/rtd119x_wdt.c | 168 +++++++++++++++++++++++++++++++++++++++++\n 3 files changed, 179 insertions(+)\n create mode 100644 drivers/watchdog/rtd119x_wdt.c",
    "diff": "diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig\nindex c722cbfdc7e6..8fa81518c3fa 100644\n--- a/drivers/watchdog/Kconfig\n+++ b/drivers/watchdog/Kconfig\n@@ -787,6 +787,16 @@ config UNIPHIER_WATCHDOG\n \t  To compile this driver as a module, choose M here: the\n \t  module will be called uniphier_wdt.\n \n+config RTD119X_WATCHDOG\n+\tbool \"Realtek RTD119x/RTD129x watchdog support\"\n+\tdepends on ARCH_REALTEK || COMPILE_TEST\n+\tdepends on OF\n+\tselect WATCHDOG_CORE\n+\tdefault ARCH_REALTEK\n+\thelp\n+\t  Say Y here to include support for the watchdog timer in\n+\t  Realtek RTD1295 SoCs.\n+\n # AVR32 Architecture\n \n config AT32AP700X_WDT\ndiff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile\nindex 56adf9fa67d0..63cb3ed8117d 100644\n--- a/drivers/watchdog/Makefile\n+++ b/drivers/watchdog/Makefile\n@@ -87,6 +87,7 @@ obj-$(CONFIG_ASPEED_WATCHDOG) += aspeed_wdt.o\n obj-$(CONFIG_ZX2967_WATCHDOG) += zx2967_wdt.o\n obj-$(CONFIG_STM32_WATCHDOG) += stm32_iwdg.o\n obj-$(CONFIG_UNIPHIER_WATCHDOG) += uniphier_wdt.o\n+obj-$(CONFIG_RTD119X_WATCHDOG) += rtd119x_wdt.o\n \n # AVR32 Architecture\n obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o\ndiff --git a/drivers/watchdog/rtd119x_wdt.c b/drivers/watchdog/rtd119x_wdt.c\nnew file mode 100644\nindex 000000000000..d001c17ddfde\n--- /dev/null\n+++ b/drivers/watchdog/rtd119x_wdt.c\n@@ -0,0 +1,168 @@\n+/*\n+ * Realtek RTD129x watchdog\n+ *\n+ * Copyright (c) 2017 Andreas Färber\n+ *\n+ * SPDX-License-Identifier: GPL-2.0+\n+ */\n+\n+#include <linux/bitops.h>\n+#include <linux/clk.h>\n+#include <linux/io.h>\n+#include <linux/module.h>\n+#include <linux/of.h>\n+#include <linux/of_address.h>\n+#include <linux/platform_device.h>\n+#include <linux/watchdog.h>\n+\n+#define RTD119X_TCWCR\t\t0x0\n+#define RTD119X_TCWTR\t\t0x4\n+#define RTD119X_TCWOV\t\t0xc\n+\n+#define RTD119X_TCWCR_WDEN_DISABLED\t\t0xa5\n+#define RTD119X_TCWCR_WDEN_ENABLED\t\t0xff\n+#define RTD119X_TCWCR_WDEN_MASK\t\t\t0xff\n+\n+#define RTD119X_TCWTR_WDCLR\t\t\tBIT(0)\n+\n+struct rtd119x_watchdog_device {\n+\tstruct watchdog_device wdt_dev;\n+\tvoid __iomem *base;\n+\tstruct clk *clk;\n+};\n+\n+static int rtd119x_wdt_start(struct watchdog_device *wdev)\n+{\n+\tstruct rtd119x_watchdog_device *data = watchdog_get_drvdata(wdev);\n+\tu32 val;\n+\n+\tval = readl_relaxed(data->base + RTD119X_TCWCR);\n+\tval &= ~RTD119X_TCWCR_WDEN_MASK;\n+\tval |= RTD119X_TCWCR_WDEN_ENABLED;\n+\twritel(val, data->base + RTD119X_TCWCR);\n+\n+\treturn 0;\n+}\n+\n+static int rtd119x_wdt_stop(struct watchdog_device *wdev)\n+{\n+\tstruct rtd119x_watchdog_device *data = watchdog_get_drvdata(wdev);\n+\tu32 val;\n+\n+\tval = readl_relaxed(data->base + RTD119X_TCWCR);\n+\tval &= ~RTD119X_TCWCR_WDEN_MASK;\n+\tval |= RTD119X_TCWCR_WDEN_DISABLED;\n+\twritel(val, data->base + RTD119X_TCWCR);\n+\n+\treturn 0;\n+}\n+\n+static int rtd119x_wdt_ping(struct watchdog_device *wdev)\n+{\n+\tstruct rtd119x_watchdog_device *data = watchdog_get_drvdata(wdev);\n+\n+\twritel_relaxed(RTD119X_TCWTR_WDCLR, data->base + RTD119X_TCWTR);\n+\n+\treturn rtd119x_wdt_start(wdev);\n+}\n+\n+static int rtd119x_wdt_set_timeout(struct watchdog_device *wdev, unsigned int val)\n+{\n+\tstruct rtd119x_watchdog_device *data = watchdog_get_drvdata(wdev);\n+\n+\twritel(val * clk_get_rate(data->clk), data->base + RTD119X_TCWOV);\n+\n+\tdata->wdt_dev.timeout = val;\n+\n+\treturn 0;\n+}\n+\n+static const struct watchdog_ops rtd119x_wdt_ops = {\n+\t.owner = THIS_MODULE,\n+\t.start\t\t= rtd119x_wdt_start,\n+\t.stop\t\t= rtd119x_wdt_stop,\n+\t.ping\t\t= rtd119x_wdt_ping,\n+\t.set_timeout\t= rtd119x_wdt_set_timeout,\n+};\n+\n+static const struct watchdog_info rtd119x_wdt_info = {\n+\t.identity = \"rtd119x-wdt\",\n+\t.options = 0,\n+};\n+\n+static const struct of_device_id rtd119x_wdt_dt_ids[] = {\n+\t { .compatible = \"realtek,rtd1295-watchdog\" },\n+\t { }\n+};\n+\n+static int rtd119x_wdt_probe(struct platform_device *pdev)\n+{\n+\tstruct rtd119x_watchdog_device *data;\n+\tstruct resource *res;\n+\tint ret;\n+\n+\tdata = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);\n+\tif (!data)\n+\t\treturn -ENOMEM;\n+\n+\tres = platform_get_resource(pdev, IORESOURCE_MEM, 0);\n+\tdata->base = devm_ioremap_resource(&pdev->dev, res);\n+\tif (IS_ERR(data->base))\n+\t\treturn PTR_ERR(data->base);\n+\n+\tdata->clk = of_clk_get(pdev->dev.of_node, 0);\n+\tif (IS_ERR(data->clk))\n+\t\treturn PTR_ERR(data->clk);\n+\n+\tret = clk_prepare_enable(data->clk);\n+\tif (ret) {\n+\t\tclk_put(data->clk);\n+\t\treturn ret;\n+\t}\n+\n+\tdata->wdt_dev.info = &rtd119x_wdt_info;\n+\tdata->wdt_dev.ops = &rtd119x_wdt_ops;\n+\tdata->wdt_dev.timeout = 120;\n+\tdata->wdt_dev.max_timeout = 0xffffffff / clk_get_rate(data->clk);\n+\tdata->wdt_dev.min_timeout = 1;\n+\tdata->wdt_dev.parent = &pdev->dev;\n+\n+\twatchdog_stop_on_reboot(&data->wdt_dev);\n+\twatchdog_set_drvdata(&data->wdt_dev, data);\n+\tplatform_set_drvdata(pdev, data);\n+\n+\twritel_relaxed(RTD119X_TCWTR_WDCLR, data->base + RTD119X_TCWTR);\n+\trtd119x_wdt_set_timeout(&data->wdt_dev, data->wdt_dev.timeout);\n+\trtd119x_wdt_stop(&data->wdt_dev);\n+\n+\tret = devm_watchdog_register_device(&pdev->dev, &data->wdt_dev);\n+\tif (ret) {\n+\t\tclk_disable_unprepare(data->clk);\n+\t\tclk_put(data->clk);\n+\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static int rtd119x_wdt_remove(struct platform_device *pdev)\n+{\n+\tstruct rtd119x_watchdog_device *data = platform_get_drvdata(pdev);\n+\n+\twatchdog_unregister_device(&data->wdt_dev);\n+\n+\tclk_disable_unprepare(data->clk);\n+\tclk_put(data->clk);\n+\n+\treturn 0;\n+}\n+\n+static struct platform_driver rtd119x_wdt_driver = {\n+\t.probe = rtd119x_wdt_probe,\n+\t.remove = rtd119x_wdt_remove,\n+\t.driver = {\n+\t\t.name = \"rtd1295-watchdog\",\n+\t\t.of_match_table\t= rtd119x_wdt_dt_ids,\n+\t},\n+};\n+builtin_platform_driver(rtd119x_wdt_driver);\n",
    "prefixes": [
        "v2",
        "2/3"
    ]
}