get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1378396,
    "url": "http://patchwork.ozlabs.org/api/patches/1378396/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20201008051250.25784-9-faiz_abbas@ti.com/",
    "project": {
        "id": 18,
        "url": "http://patchwork.ozlabs.org/api/projects/18/?format=api",
        "name": "U-Boot",
        "link_name": "uboot",
        "list_id": "u-boot.lists.denx.de",
        "list_email": "u-boot@lists.denx.de",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20201008051250.25784-9-faiz_abbas@ti.com>",
    "list_archive_url": null,
    "date": "2020-10-08T05:12:41",
    "name": "[08/17] mmc: am654_sdhci: Add support for software tuning",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": false,
    "hash": "9c3b3b754f94ccb8aaed05a645c67d4f923343ae",
    "submitter": {
        "id": 72140,
        "url": "http://patchwork.ozlabs.org/api/people/72140/?format=api",
        "name": "Faiz Abbas",
        "email": "faiz_abbas@ti.com"
    },
    "delegate": {
        "id": 19261,
        "url": "http://patchwork.ozlabs.org/api/users/19261/?format=api",
        "username": "lokeshvutla",
        "first_name": "Lokesh",
        "last_name": "Vutla",
        "email": "lokeshvutla@ti.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20201008051250.25784-9-faiz_abbas@ti.com/mbox/",
    "series": [
        {
            "id": 206622,
            "url": "http://patchwork.ozlabs.org/api/series/206622/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=206622",
            "date": "2020-10-08T05:12:33",
            "name": "Add support for MMC higher speed modes for TI's am65x, j721e and j7200 platforms",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/206622/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1378396/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1378396/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<u-boot-bounces@lists.denx.de>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)",
            "ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=ti.com",
            "ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=ti.com header.i=@ti.com header.a=rsa-sha256\n header.s=ti-com-17Q1 header.b=Mg/tiKb5;\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=ti.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=ti.com header.i=@ti.com header.b=\"Mg/tiKb5\";\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=quarantine dis=none) header.from=ti.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=faiz_abbas@ti.com"
        ],
        "Received": [
            "from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 4C6KBt2BBVz9sRk\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  8 Oct 2020 16:14:45 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id AF359823DD;\n\tThu,  8 Oct 2020 07:13:34 +0200 (CEST)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 15C26823EA; Thu,  8 Oct 2020 07:13:34 +0200 (CEST)",
            "from fllv0015.ext.ti.com (fllv0015.ext.ti.com [198.47.19.141])\n (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 32B77823C9\n for <u-boot@lists.denx.de>; Thu,  8 Oct 2020 07:13:31 +0200 (CEST)",
            "from fllv0035.itg.ti.com ([10.64.41.0])\n by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id 0985DU6k003134;\n Thu, 8 Oct 2020 00:13:30 -0500",
            "from DFLE105.ent.ti.com (dfle105.ent.ti.com [10.64.6.26])\n by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 0985DUEd049251\n (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL);\n Thu, 8 Oct 2020 00:13:30 -0500",
            "from DFLE108.ent.ti.com (10.64.6.29) by DFLE105.ent.ti.com\n (10.64.6.26) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Thu, 8 Oct\n 2020 00:13:29 -0500",
            "from lelv0327.itg.ti.com (10.180.67.183) by DFLE108.ent.ti.com\n (10.64.6.29) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via\n Frontend Transport; Thu, 8 Oct 2020 00:13:29 -0500",
            "from a0230074-Latitude-E7470.ent.ti.com (ileax41-snat.itg.ti.com\n [10.172.224.153])\n by lelv0327.itg.ti.com (8.15.2/8.15.2) with ESMTP id 0985Cpxk022642;\n Thu, 8 Oct 2020 00:13:27 -0500"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-2.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED\n autolearn=ham autolearn_force=no version=3.4.2",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com;\n s=ti-com-17Q1; t=1602134010;\n bh=t8/fjIL3rg9gycJV0e4v5/6TeMNANoHzlFy6clTnx2Q=;\n h=From:To:CC:Subject:Date:In-Reply-To:References;\n b=Mg/tiKb5wR7wd532xuxUCF7CZUczkkm5+I9y0/SPNsxfcYESRlc/8l6xL4WFK4z0Y\n 1Fwu/sy8Qmyu5bpxOIB2RBiqMWdGMQw27oNsDorgFj/lZKGDf88B38XfBdedTHRKLN\n VIGs1/AcjrWlGgZfm1ilDrxxLZ2uF+9lE9C/Q3gw=",
        "From": "Faiz Abbas <faiz_abbas@ti.com>",
        "To": "<u-boot@lists.denx.de>, <peng.fan@nxp.com>, <lokeshvutla@ti.com>",
        "CC": "<faiz_abbas@ti.com>",
        "Subject": "[PATCH 08/17] mmc: am654_sdhci: Add support for software tuning",
        "Date": "Thu, 8 Oct 2020 10:42:41 +0530",
        "Message-ID": "<20201008051250.25784-9-faiz_abbas@ti.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20201008051250.25784-1-faiz_abbas@ti.com>",
        "References": "<20201008051250.25784-1-faiz_abbas@ti.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-EXCLAIMER-MD-CONFIG": "e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180",
        "X-BeenThere": "u-boot@lists.denx.de",
        "X-Mailman-Version": "2.1.34",
        "Precedence": "list",
        "List-Id": "U-Boot discussion <u-boot.lists.denx.de>",
        "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>",
        "List-Archive": "<https://lists.denx.de/pipermail/u-boot/>",
        "List-Post": "<mailto:u-boot@lists.denx.de>",
        "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>",
        "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>",
        "Errors-To": "u-boot-bounces@lists.denx.de",
        "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>",
        "X-Virus-Scanned": "clamav-milter 0.102.3 at phobos.denx.de",
        "X-Virus-Status": "Clean"
    },
    "content": "With the new SW tuning App note[1], a custom tuning algorithm is\nrequired for eMMC HS200, HS400 and SD card UHS modes. The algorithm\ninvolves running through the 32 possible input tap delay values and\nsending the appropriate tuning command (CMD19/21) for each of them\nto get a fail or pass result for each of the values. Typically, the\nrange will have a small contiguous failing window. Considering the\ntuning range as a circular buffer, the algorithm then sets a final\ntuned value directly opposite to the failing window.\n\n[1] https://www.ti.com/lit/pdf/spract9\n\nSigned-off-by: Faiz Abbas <faiz_abbas@ti.com>\n---\n drivers/mmc/am654_sdhci.c | 45 +++++++++++++++++++++++++++++++++++++++\n 1 file changed, 45 insertions(+)",
    "diff": "diff --git a/drivers/mmc/am654_sdhci.c b/drivers/mmc/am654_sdhci.c\nindex fa118fc56c..79b4331c3c 100644\n--- a/drivers/mmc/am654_sdhci.c\n+++ b/drivers/mmc/am654_sdhci.c\n@@ -9,6 +9,7 @@\n #include <common.h>\n #include <dm.h>\n #include <malloc.h>\n+#include <mmc.h>\n #include <power-domain.h>\n #include <regmap.h>\n #include <sdhci.h>\n@@ -368,7 +369,48 @@ static int am654_sdhci_deferred_probe(struct sdhci_host *host)\n \treturn sdhci_probe(dev);\n }\n \n+#ifdef MMC_SUPPORTS_TUNING\n+#define ITAP_MAX\t32\n+static int am654_sdhci_execute_tuning(struct mmc *mmc, u8 opcode)\n+{\n+\tstruct udevice *dev = mmc->dev;\n+\tstruct am654_sdhci_plat *plat = dev_get_platdata(dev);\n+\tint cur_val, prev_val = 1, fail_len = 0, pass_window = 0, pass_len;\n+\tu32 itap;\n+\n+\t/* Enable ITAPDLY */\n+\tregmap_update_bits(plat->base, PHY_CTRL4, ITAPDLYENA_MASK,\n+\t\t\t   1 << ITAPDLYENA_SHIFT);\n+\n+\tfor (itap = 0; itap < ITAP_MAX; itap++) {\n+\t\tam654_sdhci_write_itapdly(plat, itap);\n+\n+\t\tcur_val = !mmc_send_tuning(mmc, opcode, NULL);\n+\t\tif (cur_val && !prev_val)\n+\t\t\tpass_window = itap;\n+\n+\t\tif (!cur_val)\n+\t\t\tfail_len++;\n+\n+\t\tprev_val = cur_val;\n+\t}\n+\t/*\n+\t * Having determined the length of the failing window and start of\n+\t * the passing window calculate the length of the passing window and\n+\t * set the final value halfway through it considering the range as a\n+\t * circular buffer\n+\t */\n+\tpass_len = ITAP_MAX - fail_len;\n+\titap = (pass_window + (pass_len >> 1)) % ITAP_MAX;\n+\tam654_sdhci_write_itapdly(plat, itap);\n+\n+\treturn 0;\n+}\n+#endif\n const struct sdhci_ops am654_sdhci_ops = {\n+#ifdef MMC_SUPPORTS_TUNING\n+\t.platform_execute_tuning = am654_sdhci_execute_tuning,\n+#endif\n \t.deferred_probe\t\t= am654_sdhci_deferred_probe,\n \t.set_ios_post\t\t= &am654_sdhci_set_ios_post,\n \t.set_control_reg\t= &am654_sdhci_set_control_reg,\n@@ -408,6 +450,9 @@ static int j721e_4bit_sdhci_set_ios_post(struct sdhci_host *host)\n }\n \n const struct sdhci_ops j721e_4bit_sdhci_ops = {\n+#ifdef MMC_SUPPORTS_TUNING\n+\t.platform_execute_tuning = am654_sdhci_execute_tuning,\n+#endif\n \t.deferred_probe\t\t= am654_sdhci_deferred_probe,\n \t.set_ios_post\t\t= &j721e_4bit_sdhci_set_ios_post,\n };\n",
    "prefixes": [
        "08/17"
    ]
}