get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1197470,
    "url": "http://patchwork.ozlabs.org/api/patches/1197470/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20191119141211.25716-10-clg@kaod.org/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20191119141211.25716-10-clg@kaod.org>",
    "list_archive_url": null,
    "date": "2019-11-19T14:12:03",
    "name": "[09/17] watchdog/aspeed: Fix AST2600 frequency behaviour",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "bf25bfeec6bf59e850d8c6719a9b06d485f3745a",
    "submitter": {
        "id": 68548,
        "url": "http://patchwork.ozlabs.org/api/people/68548/?format=api",
        "name": "Cédric Le Goater",
        "email": "clg@kaod.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20191119141211.25716-10-clg@kaod.org/mbox/",
    "series": [
        {
            "id": 143789,
            "url": "http://patchwork.ozlabs.org/api/series/143789/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=143789",
            "date": "2019-11-19T14:11:54",
            "name": "aspeed: extensions and fixes",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/143789/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1197470/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1197470/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org; spf=pass (sender SPF authorized)\n\tsmtp.mailfrom=nongnu.org (client-ip=209.51.188.17;\n\thelo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdmarc=none (p=none dis=none) header.from=kaod.org"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [209.51.188.17])\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 47HSZ90tKPz9sQp\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 20 Nov 2019 01:17:04 +1100 (AEDT)",
            "from localhost ([::1]:45974 helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1iX4JS-00014t-8P\n\tfor incoming@patchwork.ozlabs.org; Tue, 19 Nov 2019 09:17:02 -0500",
            "from eggs.gnu.org ([2001:470:142:3::10]:42086)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <clg@kaod.org>) id 1iX4GC-0006kf-4s\n\tfor qemu-devel@nongnu.org; Tue, 19 Nov 2019 09:13:41 -0500",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <clg@kaod.org>) id 1iX4GA-0005Yt-Sk\n\tfor qemu-devel@nongnu.org; Tue, 19 Nov 2019 09:13:39 -0500",
            "from 6.mo179.mail-out.ovh.net ([46.105.56.76]:51207)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <clg@kaod.org>) id 1iX4GA-0005Xq-Mu\n\tfor qemu-devel@nongnu.org; Tue, 19 Nov 2019 09:13:38 -0500",
            "from player795.ha.ovh.net (unknown [10.108.35.124])\n\tby mo179.mail-out.ovh.net (Postfix) with ESMTP id 45B5714AE01\n\tfor <qemu-devel@nongnu.org>; Tue, 19 Nov 2019 15:13:37 +0100 (CET)",
            "from kaod.org (deibp9eh1--blueice1n4.emea.ibm.com [195.212.29.166])\n\t(Authenticated sender: clg@kaod.org)\n\tby player795.ha.ovh.net (Postfix) with ESMTPSA id 469EFC18AC24;\n\tTue, 19 Nov 2019 14:13:29 +0000 (UTC)"
        ],
        "From": "=?utf-8?q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>",
        "To": "Peter Maydell <peter.maydell@linaro.org>",
        "Subject": "[PATCH 09/17] watchdog/aspeed: Fix AST2600 frequency behaviour",
        "Date": "Tue, 19 Nov 2019 15:12:03 +0100",
        "Message-Id": "<20191119141211.25716-10-clg@kaod.org>",
        "X-Mailer": "git-send-email 2.21.0",
        "In-Reply-To": "<20191119141211.25716-1-clg@kaod.org>",
        "References": "<20191119141211.25716-1-clg@kaod.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "X-Ovh-Tracer-Id": "17911097193377270545",
        "X-VR-SPAMSTATE": "OK",
        "X-VR-SPAMSCORE": "-100",
        "X-VR-SPAMCAUSE": "gggruggvucftvghtrhhoucdtuddrgedufedrudegkedgiedvucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdqfffguegfifdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepveorughrihgtucfnvgcuifhorghtvghruceotghlgheskhgrohgurdhorhhgqeenucfkpheptddrtddrtddrtddpudelhedrvdduvddrvdelrdduieeinecurfgrrhgrmhepmhhouggvpehsmhhtphdqohhuthdphhgvlhhopehplhgrhigvrhejleehrdhhrgdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomheptghlgheskhgrohgurdhorhhgpdhrtghpthhtohepqhgvmhhuqdguvghvvghlsehnohhnghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpeeg",
        "Content-Transfer-Encoding": "quoted-printable",
        "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]",
        "X-Received-From": "46.105.56.76",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.23",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "Andrew Jeffery <andrew@aj.id.au>, qemu-devel@nongnu.org,\n\tqemu-arm@nongnu.org, =?utf-8?q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>,\n\t=?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n\tJoel Stanley <joel@jms.id.au>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "From: Joel Stanley <joel@jms.id.au>\n\nThe AST2600 control register sneakily changed the meaning of bit 4\nwithout anyone noticing. It no longer controls the 1MHz vs APB clock\nselect, and instead always runs at 1MHz.\n\nThe AST2500 was always 1MHz too, but it retained bit 4, making it read\nonly. We can model both using the same fixed 1MHz calculation.\n\nFixes: 6b2b2a703cad (\"hw: wdt_aspeed: Add AST2600 support\")\nReviewed-by: Cédric Le Goater <clg@kaod.org>\nReviewed-by: Alex Bennée <alex.bennee@linaro.org>\nSigned-off-by: Joel Stanley <joel@jms.id.au>\nSigned-off-by: Cédric Le Goater <clg@kaod.org>\n---\n include/hw/watchdog/wdt_aspeed.h |  1 +\n hw/watchdog/wdt_aspeed.c         | 21 +++++++++++++++++----\n 2 files changed, 18 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/include/hw/watchdog/wdt_aspeed.h b/include/hw/watchdog/wdt_aspeed.h\nindex dfedd7662dd1..819c22993a6e 100644\n--- a/include/hw/watchdog/wdt_aspeed.h\n+++ b/include/hw/watchdog/wdt_aspeed.h\n@@ -47,6 +47,7 @@ typedef struct AspeedWDTClass {\n     uint32_t ext_pulse_width_mask;\n     uint32_t reset_ctrl_reg;\n     void (*reset_pulse)(AspeedWDTState *s, uint32_t property);\n+    void (*wdt_reload)(AspeedWDTState *s);\n }  AspeedWDTClass;\n \n #endif /* WDT_ASPEED_H */\ndiff --git a/hw/watchdog/wdt_aspeed.c b/hw/watchdog/wdt_aspeed.c\nindex d283d07d6546..122aa8daaadf 100644\n--- a/hw/watchdog/wdt_aspeed.c\n+++ b/hw/watchdog/wdt_aspeed.c\n@@ -93,11 +93,11 @@ static uint64_t aspeed_wdt_read(void *opaque, hwaddr offset, unsigned size)\n \n }\n \n-static void aspeed_wdt_reload(AspeedWDTState *s, bool pclk)\n+static void aspeed_wdt_reload(AspeedWDTState *s)\n {\n     uint64_t reload;\n \n-    if (pclk) {\n+    if (!(s->regs[WDT_CTRL] & WDT_CTRL_1MHZ_CLK)) {\n         reload = muldiv64(s->regs[WDT_RELOAD_VALUE], NANOSECONDS_PER_SECOND,\n                           s->pclk_freq);\n     } else {\n@@ -109,6 +109,16 @@ static void aspeed_wdt_reload(AspeedWDTState *s, bool pclk)\n     }\n }\n \n+static void aspeed_wdt_reload_1mhz(AspeedWDTState *s)\n+{\n+    uint64_t reload = s->regs[WDT_RELOAD_VALUE] * 1000ULL;\n+\n+    if (aspeed_wdt_is_enabled(s)) {\n+        timer_mod(s->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + reload);\n+    }\n+}\n+\n+\n static void aspeed_wdt_write(void *opaque, hwaddr offset, uint64_t data,\n                              unsigned size)\n {\n@@ -130,13 +140,13 @@ static void aspeed_wdt_write(void *opaque, hwaddr offset, uint64_t data,\n     case WDT_RESTART:\n         if ((data & 0xFFFF) == WDT_RESTART_MAGIC) {\n             s->regs[WDT_STATUS] = s->regs[WDT_RELOAD_VALUE];\n-            aspeed_wdt_reload(s, !(s->regs[WDT_CTRL] & WDT_CTRL_1MHZ_CLK));\n+            awc->wdt_reload(s);\n         }\n         break;\n     case WDT_CTRL:\n         if (enable && !aspeed_wdt_is_enabled(s)) {\n             s->regs[WDT_CTRL] = data;\n-            aspeed_wdt_reload(s, !(data & WDT_CTRL_1MHZ_CLK));\n+            awc->wdt_reload(s);\n         } else if (!enable && aspeed_wdt_is_enabled(s)) {\n             s->regs[WDT_CTRL] = data;\n             timer_del(s->timer);\n@@ -283,6 +293,7 @@ static void aspeed_2400_wdt_class_init(ObjectClass *klass, void *data)\n     awc->offset = 0x20;\n     awc->ext_pulse_width_mask = 0xff;\n     awc->reset_ctrl_reg = SCU_RESET_CONTROL1;\n+    awc->wdt_reload = aspeed_wdt_reload;\n }\n \n static const TypeInfo aspeed_2400_wdt_info = {\n@@ -317,6 +328,7 @@ static void aspeed_2500_wdt_class_init(ObjectClass *klass, void *data)\n     awc->ext_pulse_width_mask = 0xfffff;\n     awc->reset_ctrl_reg = SCU_RESET_CONTROL1;\n     awc->reset_pulse = aspeed_2500_wdt_reset_pulse;\n+    awc->wdt_reload = aspeed_wdt_reload_1mhz;\n }\n \n static const TypeInfo aspeed_2500_wdt_info = {\n@@ -336,6 +348,7 @@ static void aspeed_2600_wdt_class_init(ObjectClass *klass, void *data)\n     awc->ext_pulse_width_mask = 0xfffff; /* TODO */\n     awc->reset_ctrl_reg = AST2600_SCU_RESET_CONTROL1;\n     awc->reset_pulse = aspeed_2500_wdt_reset_pulse;\n+    awc->wdt_reload = aspeed_wdt_reload_1mhz;\n }\n \n static const TypeInfo aspeed_2600_wdt_info = {\n",
    "prefixes": [
        "09/17"
    ]
}