get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 819470,
    "url": "http://patchwork.ozlabs.org/api/patches/819470/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-mtd/patch/20170928094627.31017-5-romain.izard.pro@gmail.com/",
    "project": {
        "id": 3,
        "url": "http://patchwork.ozlabs.org/api/projects/3/?format=api",
        "name": "Linux MTD development",
        "link_name": "linux-mtd",
        "list_id": "linux-mtd.lists.infradead.org",
        "list_email": "linux-mtd@lists.infradead.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20170928094627.31017-5-romain.izard.pro@gmail.com>",
    "list_archive_url": null,
    "date": "2017-09-28T09:46:23",
    "name": "[v4,4/8] mtd: nand: atmel: Avoid ECC errors when leaving backup mode",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "5bf226fc12dd3a70b05a306fde8bdd02a6d2427b",
    "submitter": {
        "id": 8236,
        "url": "http://patchwork.ozlabs.org/api/people/8236/?format=api",
        "name": "Romain Izard",
        "email": "romain.izard.pro@gmail.com"
    },
    "delegate": {
        "id": 58324,
        "url": "http://patchwork.ozlabs.org/api/users/58324/?format=api",
        "username": "bbrezillon",
        "first_name": "Boris",
        "last_name": "Brezillon",
        "email": "boris.brezillon@free-electrons.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/linux-mtd/patch/20170928094627.31017-5-romain.izard.pro@gmail.com/mbox/",
    "series": [
        {
            "id": 5526,
            "url": "http://patchwork.ozlabs.org/api/series/5526/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-mtd/list/?series=5526",
            "date": "2017-09-28T09:46:23",
            "name": "Various patches for SAMA5D2 backup mode",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/5526/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/819470/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/819470/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org; spf=none (mailfrom)\n\tsmtp.mailfrom=lists.infradead.org (client-ip=65.50.211.133;\n\thelo=bombadil.infradead.org;\n\tenvelope-from=linux-mtd-bounces+incoming=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 header.b=\"Ci2j1Mpg\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"VCp6Y1HF\"; 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 3y2qbn3bLcz9t3w\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 28 Sep 2017 19:47:16 +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 1dxVPQ-0002ox-7V; Thu, 28 Sep 2017 09:47:08 +0000",
            "from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dxVPK-0002S3-3L\n\tfor linux-mtd@lists.infradead.org; Thu, 28 Sep 2017 09:47:05 +0000",
            "by mail-wm0-x243.google.com with SMTP id m72so1067471wmc.1\n\tfor <linux-mtd@lists.infradead.org>;\n\tThu, 28 Sep 2017 02:46:45 -0700 (PDT)",
            "from localhost.localdomain (146.187.3.109.rev.sfr.net.\n\t[109.3.187.146]) by smtp.gmail.com with ESMTPSA id\n\tz10sm3272395wre.6.2017.09.28.02.46.42\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 28 Sep 2017 02:46:43 -0700 (PDT)"
        ],
        "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:MIME-Version:Cc:List-Subscribe:\n\tList-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References:\n\tIn-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID:\n\tContent-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc\n\t:Resent-Message-ID:List-Owner;\n\tbh=LM2S+btrxgsoMuZm+v4vPgN8OVkDk5bNT1jLnbi09b4=;\n\tb=Ci2j1MpgM1y4ZIm19a8tSlrp2S\n\tahBnsx6ak0PlLHCDDLR7vyyZZM6GaHlnsvFqLG9k65qnj1qu7j/5TEbpvWjTuy/Z3ZdxatwfJ8zPi\n\tIE3DrNKMye2wUTn403w4d22VlevsOfEuyXy+B2cTQT/0dSkKpMxPbw51wPHGYoEw/tH14LutDNQrm\n\tpoQnttU+9h5xoqvU02rHS3N3aNwxrOixWiWyPH7S3IZG5n19zqTiGNg7uzw2ASqWEiK8zw2/b/W1h\n\ty1sjm/nE/2YRX+hiaS4dJFhYvEx1GNMVY0ZQ1MnUgIaO3rdtK/Xf920Uqsk0akm0VkuySdSawkbJ1\n\thhS3EheA==;",
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=ekmUElve1eO9lFnfDY02U3uv6BFDIO3z+pfaU9Ayz0M=;\n\tb=VCp6Y1HFYfdPv1tkjLkFoDDbeVhR+pDtkstWO2bmtRPSGk1sI6w3x3YrFvtcmObHzY\n\t6z4mHrE544OGrIsykpXnM3yNf3+13VySm17/cQTZJN8BJ9TfVWRMz37Z5V4j0tPL773d\n\tBesKG7JEqjf2ZlOxKiWW040lelS1aNIrsYSQWUST4cQYGWjv3HbP+QD8qpoTiZUuV05R\n\t0AB1JMWRgUoOVojqVOKcm3zYNDX7VvNHCADitzVszcBCTp8RIGPpr82Kmpi86u9qJGQn\n\t0HypKCfJ5zQb8vCrSa5zk+nJPQvrBAGACWGjxngWsd9yWQbJneIHhfUmh1pt0HYl8ltz\n\trZMA=="
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=ekmUElve1eO9lFnfDY02U3uv6BFDIO3z+pfaU9Ayz0M=;\n\tb=o7WDqoVqZipBCQWFB1/s1qxRQYW3Q+F3Mcf9td87uSFK6o9v+5wlpql3D6EyG7Ohm1\n\tKT3P/ed6AY6oVGak4xyuS9YJVNCI8uQIVKOayLrLqsoZj5pdT6CUmrMCJmRGlqJtllj4\n\tuMocaL8FF0M//ka3JmdPPQhAcRhbmOXWMVomD8UBHNdnduIjGfajoRLcizpYEdhvygWD\n\tPcsALXVExwJApdoAtaAw3NREcoqXycqDf0jRDnYp2cuGl7yA7QSNmvMuKeiJLFJV1Sb/\n\tnCUYkZO4h+j7TOtLogA/Vkj8kIB0NH7porYMg+8QpI0pcQPDY3q7Xsr0+GDzFnZGCTlu\n\t7ImA==",
        "X-Gm-Message-State": "AMCzsaWGaIglSVyAuDDKlnL+3ZhBdGu+/wFBXQZVVsYmhzM5ks94PKWZ\n\tM8Cdt5hcqydAya6hbGxwly0=",
        "X-Google-Smtp-Source": "AOwi7QDNJz5hgGMatKKtMkVtKfrygnvWxSRzoM0OykizAp6/p8faG93WHnSN66Dq+U5Y/AcZlRzZIg==",
        "X-Received": "by 10.28.17.79 with SMTP id 76mr520386wmr.74.1506592003906;\n\tThu, 28 Sep 2017 02:46:43 -0700 (PDT)",
        "From": "Romain Izard <romain.izard.pro@gmail.com>",
        "To": "Boris Brezillon <boris.brezillon@free-electrons.com>,\n\tMichael Turquette <mturquette@baylibre.com>,\n\tStephen Boyd <sboyd@codeaurora.org>, Lee Jones <lee.jones@linaro.org>,\n\tWenyou Yang <wenyou.yang@atmel.com>, Josh Wu <rainyfeeling@outlook.com>, \n\tRichard Weinberger <richard@nod.at>,\n\tDavid Woodhouse <dwmw2@infradead.org>, \n\tBrian Norris <computersforpeace@gmail.com>,\n\tMarek Vasut <marek.vasut@gmail.com>,\n\tCyrille Pitchen <cyrille.pitchen@wedev4u.fr>,\n\tThierry Reding <thierry.reding@gmail.com>,\n\tRichard Genoud <richard.genoud@gmail.com>,\n\tGreg Kroah-Hartman <gregkh@linuxfoundation.org>,\n\tJiri Slaby <jslaby@suse.com>, Alan Stern <stern@rowland.harvard.edu>, \n\tLudovic Desroches <ludovic.desroches@microchip.com>,\n\tNicolas Ferre <nicolas.ferre@microchip.com>,\n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>",
        "Subject": "[PATCH v4 4/8] mtd: nand: atmel: Avoid ECC errors when leaving\n\tbackup mode",
        "Date": "Thu, 28 Sep 2017 11:46:23 +0200",
        "Message-Id": "<20170928094627.31017-5-romain.izard.pro@gmail.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "In-Reply-To": "<20170928094627.31017-1-romain.izard.pro@gmail.com>",
        "References": "<20170928094627.31017-1-romain.izard.pro@gmail.com>",
        "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ",
        "X-CRM114-CacheID": "sfid-20170928_024702_476930_3084E00F ",
        "X-CRM114-Status": "GOOD (  16.75  )",
        "X-Spam-Score": "-2.0 (--)",
        "X-Spam-Report": "SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2a00:1450:400c:c09:0:0:0:243 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (romain.izard.pro[at]gmail.com)\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain",
        "X-BeenThere": "linux-mtd@lists.infradead.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Id": "Linux MTD discussion mailing list <linux-mtd.lists.infradead.org>",
        "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/linux-mtd>,\n\t<mailto:linux-mtd-request@lists.infradead.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.infradead.org/pipermail/linux-mtd/>",
        "List-Post": "<mailto:linux-mtd@lists.infradead.org>",
        "List-Help": "<mailto:linux-mtd-request@lists.infradead.org?subject=help>",
        "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/linux-mtd>,\n\t<mailto:linux-mtd-request@lists.infradead.org?subject=subscribe>",
        "Cc": "linux-pwm@vger.kernel.org, linux-usb@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org,\n\tlinux-serial@vger.kernel.org, Romain Izard <romain.izard.pro@gmail.com>, \n\tlinux-clk@vger.kernel.org",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Sender": "\"linux-mtd\" <linux-mtd-bounces@lists.infradead.org>",
        "Errors-To": "linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"
    },
    "content": "During backup mode, the contents of all registers will be cleared as the\nSoC will be completely powered down. For a product that boots on NAND\nFlash memory, the bootloader will obviously use the related controller\nto read the Flash and correct any detected error in the memory, before\nhandling back control to the kernel's resuming entry point.\n\nBut it does not clean the NAND controller registers after use and on its\nside the kernel driver expects the error locator to be powered down and\nin a clean state. Add a resume hook for the PMECC error locator, and\nreset its registers.\n\nSigned-off-by: Romain Izard <romain.izard.pro@gmail.com>\n---\nChanges in v3:\n* keep the PMECC disabled when not in use, and use atmel_pmecc_resume to\n  reset the controller after the bootloader has left it enabled.\n\nChanges in v4:\n* export atmel_pmecc_reset instead of atmel_pmecc_resume\n* use the correct pointer in atmel_nand_controller_resume\n\n drivers/mtd/nand/atmel/nand-controller.c |  3 +++\n drivers/mtd/nand/atmel/pmecc.c           | 17 +++++++++--------\n drivers/mtd/nand/atmel/pmecc.h           |  1 +\n 3 files changed, 13 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/drivers/mtd/nand/atmel/nand-controller.c b/drivers/mtd/nand/atmel/nand-controller.c\nindex f25eca79f4e5..8afcff9a66ea 100644\n--- a/drivers/mtd/nand/atmel/nand-controller.c\n+++ b/drivers/mtd/nand/atmel/nand-controller.c\n@@ -2530,6 +2530,9 @@ static __maybe_unused int atmel_nand_controller_resume(struct device *dev)\n \tstruct atmel_nand_controller *nc = dev_get_drvdata(dev);\n \tstruct atmel_nand *nand;\n \n+\tif (nc->pmecc)\n+\t\tatmel_pmecc_reset(nc->pmecc);\n+\n \tlist_for_each_entry(nand, &nc->chips, node) {\n \t\tint i;\n \ndiff --git a/drivers/mtd/nand/atmel/pmecc.c b/drivers/mtd/nand/atmel/pmecc.c\nindex 146af8218314..0a3f12141c45 100644\n--- a/drivers/mtd/nand/atmel/pmecc.c\n+++ b/drivers/mtd/nand/atmel/pmecc.c\n@@ -765,6 +765,13 @@ void atmel_pmecc_get_generated_eccbytes(struct atmel_pmecc_user *user,\n }\n EXPORT_SYMBOL_GPL(atmel_pmecc_get_generated_eccbytes);\n \n+void atmel_pmecc_reset(struct atmel_pmecc *pmecc)\n+{\n+\twritel(PMECC_CTRL_RST, pmecc->regs.base + ATMEL_PMECC_CTRL);\n+\twritel(PMECC_CTRL_DISABLE, pmecc->regs.base + ATMEL_PMECC_CTRL);\n+}\n+EXPORT_SYMBOL_GPL(atmel_pmecc_reset);\n+\n int atmel_pmecc_enable(struct atmel_pmecc_user *user, int op)\n {\n \tstruct atmel_pmecc *pmecc = user->pmecc;\n@@ -797,10 +804,7 @@ EXPORT_SYMBOL_GPL(atmel_pmecc_enable);\n \n void atmel_pmecc_disable(struct atmel_pmecc_user *user)\n {\n-\tstruct atmel_pmecc *pmecc = user->pmecc;\n-\n-\twritel(PMECC_CTRL_RST, pmecc->regs.base + ATMEL_PMECC_CTRL);\n-\twritel(PMECC_CTRL_DISABLE, pmecc->regs.base + ATMEL_PMECC_CTRL);\n+\tatmel_pmecc_reset(user->pmecc);\n \tmutex_unlock(&user->pmecc->lock);\n }\n EXPORT_SYMBOL_GPL(atmel_pmecc_disable);\n@@ -855,10 +859,7 @@ static struct atmel_pmecc *atmel_pmecc_create(struct platform_device *pdev,\n \n \t/* Disable all interrupts before registering the PMECC handler. */\n \twritel(0xffffffff, pmecc->regs.base + ATMEL_PMECC_IDR);\n-\n-\t/* Reset the ECC engine */\n-\twritel(PMECC_CTRL_RST, pmecc->regs.base + ATMEL_PMECC_CTRL);\n-\twritel(PMECC_CTRL_DISABLE, pmecc->regs.base + ATMEL_PMECC_CTRL);\n+\tatmel_pmecc_reset(pmecc);\n \n \treturn pmecc;\n }\ndiff --git a/drivers/mtd/nand/atmel/pmecc.h b/drivers/mtd/nand/atmel/pmecc.h\nindex a8ddbfca2ea5..817e0dd9fd15 100644\n--- a/drivers/mtd/nand/atmel/pmecc.h\n+++ b/drivers/mtd/nand/atmel/pmecc.h\n@@ -61,6 +61,7 @@ atmel_pmecc_create_user(struct atmel_pmecc *pmecc,\n \t\t\tstruct atmel_pmecc_user_req *req);\n void atmel_pmecc_destroy_user(struct atmel_pmecc_user *user);\n \n+void atmel_pmecc_reset(struct atmel_pmecc *pmecc);\n int atmel_pmecc_enable(struct atmel_pmecc_user *user, int op);\n void atmel_pmecc_disable(struct atmel_pmecc_user *user);\n int atmel_pmecc_wait_rdy(struct atmel_pmecc_user *user);\n",
    "prefixes": [
        "v4",
        "4/8"
    ]
}