get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2217046,
    "url": "http://patchwork.ozlabs.org/api/patches/2217046/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260327141029.628483-4-uros.stajic@htecgroup.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": "<20260327141029.628483-4-uros.stajic@htecgroup.com>",
    "list_archive_url": null,
    "date": "2026-03-27T14:12:52",
    "name": "[v6,3/7] gpio: Add GPIO driver for Intel EG20T",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "afdcb9074a0d1b580fcbee97a01d00d36e3b264b",
    "submitter": {
        "id": 90991,
        "url": "http://patchwork.ozlabs.org/api/people/90991/?format=api",
        "name": "Uros Stajic",
        "email": "uros.stajic@htecgroup.com"
    },
    "delegate": {
        "id": 20174,
        "url": "http://patchwork.ozlabs.org/api/users/20174/?format=api",
        "username": "Andes",
        "first_name": "Andes",
        "last_name": "",
        "email": "uboot@andestech.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260327141029.628483-4-uros.stajic@htecgroup.com/mbox/",
    "series": [
        {
            "id": 497792,
            "url": "http://patchwork.ozlabs.org/api/series/497792/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=497792",
            "date": "2026-03-27T14:10:46",
            "name": "riscv: Add support for P8700 platform on Boston board",
            "version": 6,
            "mbox": "http://patchwork.ozlabs.org/series/497792/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2217046/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2217046/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<u-boot-bounces@lists.denx.de>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=htecgroup.com header.i=@htecgroup.com\n header.a=rsa-sha256 header.s=selector1 header.b=W6KbNbFm;\n\tdkim-atps=neutral",
            "legolas.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=patchwork.ozlabs.org)",
            "phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=htecgroup.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=htecgroup.com header.i=@htecgroup.com\n header.b=\"W6KbNbFm\";\n\tdkim-atps=neutral",
            "phobos.denx.de; dmarc=pass (p=reject dis=none)\n header.from=htecgroup.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=uros.stajic@htecgroup.com",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=htecgroup.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)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fj5g82Pbxz1y1x\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 28 Mar 2026 03:28:36 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 7A4D28419C;\n\tFri, 27 Mar 2026 17:24:57 +0100 (CET)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 388CD83FC6; Fri, 27 Mar 2026 15:13:00 +0100 (CET)",
            "from DUZPR83CU001.outbound.protection.outlook.com\n (mail-northeuropeazlp170120005.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c200::5])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 2421A81E18\n for <u-boot@lists.denx.de>; Fri, 27 Mar 2026 15:12:58 +0100 (CET)",
            "from PA3PR09MB8140.eurprd09.prod.outlook.com (2603:10a6:102:4d4::20)\n by GV4PR09MB8437.eurprd09.prod.outlook.com (2603:10a6:150:2da::11)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.23; Fri, 27 Mar\n 2026 14:12:52 +0000",
            "from PA3PR09MB8140.eurprd09.prod.outlook.com\n ([fe80::ca17:d4db:b6cd:fb81]) by PA3PR09MB8140.eurprd09.prod.outlook.com\n ([fe80::ca17:d4db:b6cd:fb81%6]) with mapi id 15.20.9745.019; Fri, 27 Mar 2026\n 14:12:52 +0000"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2",
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=VtL3JOtCoBQjm/nU9uTi5flL/YorZDxXx+X45qcvt0YxYLV+svysEf6VelMYBlDyjaOpueKyaJcFN9NIRSjg5fhSzk+e0wGOcqL01Tp2It8GyCA3MzoY/TTCjEkcM5Yr5dVBQQxVRLitWOvs9FPQYdL97MaKE9LjXsN6Ver8n9c5dehtlEP1AaD68Yeu81vGIi2E0RiKNXeK0zc8eSV2rEyGfcAaNcwKlk/F/2QHtwkD58wUWZiwYmcEZYyPiu2RNVO0EEpfiPJeppwKS/AqfR5I7vJ316immhlsWdcziirMtERtZQStnDtCPQHzj++WSnHbdmLteKinrrZ+0Y3hAw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=BJLxQ7sUu6r9oN3Yappj8c4cYmEQtf9wU8nasTXh9z0=;\n b=egRtvIMT9ne4lzVroiG57Ucx8opkHi8qeDLn6ycEoxgRI2g651wqmZ/eLkwW6NxP9vi8KEo8Vlv6+WsUKg1a4JmWEw/+oypj1wDI/YBx+LHQ7gUM1fptBj3b9fJG8bfm+vTDWy+v6W9v+Sd6YKlBN+FJq15UdoVeJeNC7CS9CmipcSmeTwOOrFdTBstEkIa+pvWCl2jfxa1FyajJQqYnSqcZ9+llapSlX+HzUG7W3ekcgmoiuB4OSwu27UWLJfTycHNcPAu96SUA0Yz+bEL5Zyu7IX+IsOXlAh9FiEhIuewl0L2S6qE7jZ6V+A04MXLrSkKls8X3+3St/WeLH2FJbA==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=htecgroup.com; dmarc=pass action=none\n header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=BJLxQ7sUu6r9oN3Yappj8c4cYmEQtf9wU8nasTXh9z0=;\n b=W6KbNbFmlyc1v39VdO7szYrqBYvhiH5ZD7tw5OdeDmBIENtIT2/rZ8FCS50kCG3UT4HdENC8x9xWwb1d/i53tsymTim0nBm4d+HeytB7Sj2KDPsbiJyVZc5FSdcvNmPPyGzWzlfGd+B+bTgOCJny0D8NBuaLUl9Fgui6bmJOSAvNSWoyfvvnS4UJQY7YvHs3J0zA9DIZLjosswMMwY505HXBmNosQxUeL+YbyMJxmoZ/yTC+GO9wPXNpPr5hqJMHAsrU9Meo3h+UZSs8qW/wVdEnFvOYJ4FYmDdOTrYjUUwDIF76UCwUIA3V9Nig5IxKA2pJrV3K7ljRRpxRbLLD3A==",
        "From": "Uros Stajic <uros.stajic@htecgroup.com>",
        "To": "\"u-boot@lists.denx.de\" <u-boot@lists.denx.de>",
        "CC": "Djordje Todorovic <Djordje.Todorovic@htecgroup.com>, Chao-ying Fu\n <cfu@mips.com>, Uros Stajic <uros.stajic@htecgroup.com>",
        "Subject": "[PATCH v6 3/7] gpio: Add GPIO driver for Intel EG20T",
        "Thread-Topic": "[PATCH v6 3/7] gpio: Add GPIO driver for Intel EG20T",
        "Thread-Index": "AQHcvfPNGvxljGn+JEOep4agtCeCBw==",
        "Date": "Fri, 27 Mar 2026 14:12:52 +0000",
        "Message-ID": "<20260327141029.628483-4-uros.stajic@htecgroup.com>",
        "References": "<20260327141029.628483-1-uros.stajic@htecgroup.com>",
        "In-Reply-To": "<20260327141029.628483-1-uros.stajic@htecgroup.com>",
        "Accept-Language": "en-US",
        "Content-Language": "en-US",
        "X-MS-Has-Attach": "",
        "X-MS-TNEF-Correlator": "",
        "authentication-results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=htecgroup.com header.i=@htecgroup.com\n header.a=rsa-sha256 header.s=selector1 header.b=W6KbNbFm;\n\tdkim-atps=neutral",
            "legolas.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=patchwork.ozlabs.org)",
            "phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=htecgroup.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=htecgroup.com header.i=@htecgroup.com\n header.b=\"W6KbNbFm\";\n\tdkim-atps=neutral",
            "phobos.denx.de; dmarc=pass (p=reject dis=none)\n header.from=htecgroup.com",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=uros.stajic@htecgroup.com",
            "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=htecgroup.com;"
        ],
        "x-ms-publictraffictype": "Email",
        "x-ms-traffictypediagnostic": "PA3PR09MB8140:EE_|GV4PR09MB8437:EE_",
        "x-ms-office365-filtering-correlation-id": "0b0e30df-0ed3-4ce5-7a22-08de8c0aef7a",
        "x-ms-exchange-senderadcheck": "1",
        "x-ms-exchange-antispam-relay": "0",
        "x-microsoft-antispam": "BCL:0;\n ARA:13230040|376014|1800799024|366016|38070700021|22082099003|56012099003|18002099003;",
        "x-microsoft-antispam-message-info": "\n v8kbugYbqicGwWfjR27+GZBHUvfgHNCbkg9zRwRuvo+/ws2hEpai8XDngO64PWDqO+s6yllpE8pCO/xgzifYkv9hS8+WjTgEK/5Go0dF9BG7NrmGxPD0kXSXOL0U1+NlXG1Jn9oZBk/V9kNoJJEcOqkJFln6YZyX2vd9jJ8hW1tTam9Ar2T9Q9dK/hfZEs4nwIyr7DXlKslAV3j3jC3njsKtUP29BpvCjXw7+3k1OcXKIZoHMrFy2j4StG5gSro97zOUglyyPb4DbZcdMocjgFmfWv5skvQ3iuOPM4e5IgTgKLeT/s0DB37p4QIsazuVCLU1KUQ+nWqeHzDmF/IW2oYVJVCsJT5g8/vSVAtHGIzmiG4a7z8cWsBgDlURj4rrYmfdc6S85AWs/oKTEbxHeE5gDhRPX4vlqIwFdU/eTf/8+KN5exztHW/HR/K0rP3ak6DfrQ0sFL0o9ZT97izZFBWAVZDosYg6iKwIHN87PcpE6XyYbdhWrx1jUJcK590LgsfL6+SX8L2nzBl53eiiWEv98tl3mMUJbbNTGuWSUo9dElFNRqaaQYsohBm9StrkIAkxC8A3N014kJn+T1//MieWbnNTunzSM8sFUv+VH/wZ4MMIuRCCktqCGEIp5G6LE4Qi/i4vy9snpjlWQtNuiZ1NRjiIxGqr5C5SPwREspRXQUEXKXfEcnzvhLfdSek+l7RJqPo8PCeHWzuQ5d1Fnxetu33sj5PDxAHeCprxzpuT9aPqS6e+z02r9FmymHza4S6GnlZNTVGtNADcbfP2aLI9B8Bl2/xKalIz2Pb3PAE=",
        "x-forefront-antispam-report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:PA3PR09MB8140.eurprd09.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(22082099003)(56012099003)(18002099003);\n DIR:OUT; SFP:1102;",
        "x-ms-exchange-antispam-messagedata-chunkcount": "1",
        "x-ms-exchange-antispam-messagedata-0": "=?iso-8859-1?q?i9mMyfqWcZtbY3yQV3fTNsk?=\n\t=?iso-8859-1?q?vX69UdlsmkPv8jHqYJonYDUb5PSfATCi2eAdCD9dSpZ9b8+0CaQR+WUq6kbW?=\n\t=?iso-8859-1?q?6XMQc9RkaNjKr/ythJE4/z2d+EgBAqL+kPlS8Um8AKHqvvK3FHXz2pFYX9MI?=\n\t=?iso-8859-1?q?vRekZMVL+WL5IWfp4NdS1IhG73cqbDt/b2NgRasIEYo77qc2TsSdWLkOSp1+?=\n\t=?iso-8859-1?q?OtwT97PqPhzb5MyfhrpA14EJ8GgqGGLi+gQqPSIfokvI25Zn18w+k9BqzCob?=\n\t=?iso-8859-1?q?NTz4saWF1B8ZGhp08ZvrAMQwXldQllgr5+fVv5sDavdVRE4SyXkc/L1KBZrL?=\n\t=?iso-8859-1?q?04k7Fzxk0CJBLGDW+G55kN8kl3M31LcQFm8dGa2y+0rW0zWRHxMG92EZAuTA?=\n\t=?iso-8859-1?q?7jqLxk5LJPsibQjtsNpVw4x5Dj4Lk5sRSECydufN37/ZODRrCwBEC7+PRVGG?=\n\t=?iso-8859-1?q?yZdS5jVx4MhShOkwRFoNNmyTMLYNaGUJklR+d2EhhQYKMFuAcUIC4aPDjj0U?=\n\t=?iso-8859-1?q?PVe+2HrZUxzdHLxFctHBPcJHS4nugZGtqprhLW6HDYfNgmmjj+tf8hX/lje4?=\n\t=?iso-8859-1?q?esf7PDx3BbvoSjXUB2QlngVdk6B/PNu/sNSpVP2ZZ+Mqr+KDecgydkR/L0V3?=\n\t=?iso-8859-1?q?as1gMhsu/uG99Ps3hZ6g+Ajmc/WpTnNRNYxn+otZ1wiJ8Ji6QpjTGMu1eDFh?=\n\t=?iso-8859-1?q?3Wr0mjakIWjFbZRqOF6Z+tLCXjzleDPtLSp2o2k0cieL+ptihsl+D+FWV9nx?=\n\t=?iso-8859-1?q?wRXKkfl+hlYtZrmVgcRo7aMpSe9q45ty9JRqrmJNoxQKtFy1vBtSvsPKixL2?=\n\t=?iso-8859-1?q?7lydAYV9hsDpurikb8vw+R7C1DaPx6a5iILYlvZeaSpaUctgig/J4wA9uQdq?=\n\t=?iso-8859-1?q?WNyN7UwK70tfvM8OrSiRqpzyTIdcM6SAxGlEjgdYHJbhk2tf6VJqRN6/Msgd?=\n\t=?iso-8859-1?q?b/9BCdPndiaN1nF/oV/GTxcjwvSgemN1fKqUWgC0h9ivjQw1eNSwO8cT72kJ?=\n\t=?iso-8859-1?q?ApYriwg+VCN5vMIj3v7yiojzsuJjcX1Dg5ph2WoJDXdfeLoOFXTIodK3Dc9t?=\n\t=?iso-8859-1?q?Ym1wUiaKGjI2+dUS5Qz9PnYUdnRmWHwh7twqM1+E2s+k4RAAsu3P11VqzeHM?=\n\t=?iso-8859-1?q?kY65LtZXRTUVoOEzV0LXXk2rrrTL7gzaYeOWqAPO9EaUlkvAzlpx+iYEWDsb?=\n\t=?iso-8859-1?q?/qcoBuAlzuWIQkn52ZMnFM6pJlto0vXM3KmM85b9hZpC8FJMvdF/Yox9xT4q?=\n\t=?iso-8859-1?q?rDddPKXA3dZ0hM1ilwTL6WSMVTkfySl2+TN3//BGxkt38eXZciqZCizAlWFp?=\n\t=?iso-8859-1?q?mQNChllaFTtUR73f4LBaR4mRe810Z/+h0aGRJO4LNsGu8KRUf5WFHVVkMdih?=\n\t=?iso-8859-1?q?grE7Zm3NjmwxmGM8ry8hIigNL8vCctaGPvlCCEp+htx46JpSouLJoeWaSbNZ?=\n\t=?iso-8859-1?q?liR5NiAGpta3o7sDbo8335Ghy94Tayd6SnFaf47sdCfZLYed4iZ9q0gXMmJx?=\n\t=?iso-8859-1?q?iPif1pWJwk3jxZKlEThjgVr3oa6rlbsTB4kVPbMYBCsCg/1JmNXcgYzuRDEt?=\n\t=?iso-8859-1?q?iiI1lrdZfhq6FnydWOd0WehIpvIIBbWMg2uNf5TfbPdDBIfMKiYVJa0FR8a/?=\n\t=?iso-8859-1?q?4AH56taJZIYQhQeMA8A9XQoxIxA8UKatfZ2cTUIb0DJxF9OvH2XtQG1jUmDk?=\n\t=?iso-8859-1?q?ZIp/rG8At6la91SXZoaoCQUP3GCOAAWUDE9Wnb+u5L5tz2K3/bvFPqtIdVl/?=\n\t=?iso-8859-1?q?609/DEgmUzJTvIFWESIJaUOMEuYw3iu7za8q7Ztcneq/8STbQbCUhriwrtET?=\n\t=?iso-8859-1?q?lLx2cOHI=3D?=",
        "Content-Type": "text/plain; charset=\"iso-8859-1\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "X-OriginatorOrg": "htecgroup.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-AuthSource": "PA3PR09MB8140.eurprd09.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 0b0e30df-0ed3-4ce5-7a22-08de8c0aef7a",
        "X-MS-Exchange-CrossTenant-originalarrivaltime": "27 Mar 2026 14:12:52.8431 (UTC)",
        "X-MS-Exchange-CrossTenant-fromentityheader": "Hosted",
        "X-MS-Exchange-CrossTenant-id": "9f85665b-7efd-4776-9dfe-b6bfda2565ee",
        "X-MS-Exchange-CrossTenant-mailboxtype": "HOSTED",
        "X-MS-Exchange-CrossTenant-userprincipalname": "\n h3vwVXso8xQgZEXlrdZsjtPziPX9pL7YIGGWP2pB3JYe+mFKcHkK5SrcUFjPS5uY4AvpWELDnAejeA00KsRyCUkKBzAq9wxYm7dIUUxb/lg=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "GV4PR09MB8437",
        "X-Mailman-Approved-At": "Fri, 27 Mar 2026 17:24:54 +0100",
        "X-BeenThere": "u-boot@lists.denx.de",
        "X-Mailman-Version": "2.1.39",
        "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.103.8 at phobos.denx.de",
        "X-Virus-Status": "Clean"
    },
    "content": "From: Chao-ying Fu <cfu@mips.com>\n\nAdd a GPIO driver for the Intel EG20T Platform Controller Hub, which\nexposes a set of 12 GPIOs via PCI MMIO.\n\nThe driver implements basic GPIO operations (input/output direction,\nvalue read/write, and function query) using the U-Boot driver model\ninfrastructure. It maps the required BAR1 region via `dm_pci_map_bar`\nand uses internal registers to control pin state and direction.\n\nThis driver is required for platforms using EG20T, such as P8700-based\nsystems, to access GPIOs through the standard U-Boot DM GPIO framework.\n\nSigned-off-by: Chao-ying Fu <cfu@mips.com>\nSigned-off-by: Uros Stajic <uros.stajic@htecgroup.com>\n---\n board/mips/boston-riscv/MAINTAINERS |   1 +\n drivers/gpio/Kconfig                |   7 ++\n drivers/gpio/Makefile               |   1 +\n drivers/gpio/eg20t-gpio.c           | 141 ++++++++++++++++++++++++++++\n 4 files changed, 150 insertions(+)\n create mode 100644 drivers/gpio/eg20t-gpio.c",
    "diff": "diff --git a/board/mips/boston-riscv/MAINTAINERS b/board/mips/boston-riscv/MAINTAINERS\nindex d03491d0f0c..8b95f53ab32 100644\n--- a/board/mips/boston-riscv/MAINTAINERS\n+++ b/board/mips/boston-riscv/MAINTAINERS\n@@ -7,3 +7,4 @@ F:\tarch/riscv/cpu/p8700/\n F:\tarch/riscv/include/asm/arch-p8700/\n F:\tconfigs/boston-p8700_defconfig\n F:\tarch/riscv/dts/boston-p8700.dts\n+F:\tdrivers/gpio/eg20t-gpio.c\ndiff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig\nindex 60c5c54688e..66d99ba6c98 100644\n--- a/drivers/gpio/Kconfig\n+++ b/drivers/gpio/Kconfig\n@@ -747,4 +747,11 @@ config MPFS_GPIO\n \thelp\n \t\tEnable to support the GPIO driver on Polarfire SoC\n \n+config EG20T_GPIO\n+        bool \"Intel EG20T GPIO driver\"\n+        depends on DM_GPIO && PCI\n+        help\n+          Enable this to support the GPIO controller found in the Intel EG20T\n+          Platform Controller Hub.\n+\n endif\ndiff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile\nindex 910478c0c7a..3a823614253 100644\n--- a/drivers/gpio/Makefile\n+++ b/drivers/gpio/Makefile\n@@ -80,3 +80,4 @@ obj-$(CONFIG_SLG7XL45106_I2C_GPO)\t+= gpio_slg7xl45106.o\n obj-$(CONFIG_$(PHASE_)ADP5585_GPIO)\t+= adp5585_gpio.o\n obj-$(CONFIG_RZG2L_GPIO)\t+= rzg2l-gpio.o\n obj-$(CONFIG_MPFS_GPIO)\t+= mpfs_gpio.o\n+obj-$(CONFIG_EG20T_GPIO)\t+= eg20t-gpio.o\ndiff --git a/drivers/gpio/eg20t-gpio.c b/drivers/gpio/eg20t-gpio.c\nnew file mode 100644\nindex 00000000000..18dc5214c43\n--- /dev/null\n+++ b/drivers/gpio/eg20t-gpio.c\n@@ -0,0 +1,141 @@\n+// SPDX-License-Identifier: GPL-2.0+\n+/*\n+ * Copyright (C) 2016 Imagination Technologies\n+ */\n+\n+#include <dm.h>\n+#include <errno.h>\n+#include <log.h>\n+#include <pci.h>\n+#include <asm/io.h>\n+#include <asm/gpio.h>\n+\n+enum {\n+\tREG_IEN\t\t= 0x00,\n+\tREG_ISTATUS\t= 0x04,\n+\tREG_IDISP\t= 0x08,\n+\tREG_ICLR\t= 0x0c,\n+\tREG_IMASK\t= 0x10,\n+\tREG_IMASKCLR\t= 0x14,\n+\tREG_PO\t\t= 0x18,\n+\tREG_PI\t\t= 0x1c,\n+\tREG_PM\t\t= 0x20,\n+};\n+\n+struct eg20t_gpio_priv {\n+\tvoid *base;\n+};\n+\n+static int eg20t_gpio_get_value(struct udevice *dev, unsigned int offset)\n+{\n+\tstruct eg20t_gpio_priv *priv = dev_get_priv(dev);\n+\tu32 pm, pval;\n+\n+\tpm = readl(priv->base + REG_PM);\n+\tif ((pm >> offset) & 0x1)\n+\t\tpval = readl(priv->base + REG_PO);\n+\telse\n+\t\tpval = readl(priv->base + REG_PI);\n+\n+\treturn (pval >> offset) & 0x1;\n+}\n+\n+static int eg20t_gpio_set_value(struct udevice *dev, unsigned int offset,\n+\t\t\t\tint value)\n+{\n+\tstruct eg20t_gpio_priv *priv = dev_get_priv(dev);\n+\tu32 po;\n+\n+\tpo = readl(priv->base + REG_PO);\n+\tif (value)\n+\t\tpo |= 1 << offset;\n+\telse\n+\t\tpo &= ~(1 << offset);\n+\twritel(po, priv->base + REG_PO);\n+\n+\treturn 0;\n+}\n+\n+static int eg20t_gpio_direction_input(struct udevice *dev, unsigned int offset)\n+{\n+\tstruct eg20t_gpio_priv *priv = dev_get_priv(dev);\n+\tu32 pm;\n+\n+\tpm = readl(priv->base + REG_PM);\n+\tpm &= ~(1 << offset);\n+\twritel(pm, priv->base + REG_PM);\n+\n+\treturn 0;\n+}\n+\n+static int eg20t_gpio_direction_output(struct udevice *dev, unsigned int offset,\n+\t\t\t\t       int value)\n+{\n+\tstruct eg20t_gpio_priv *priv = dev_get_priv(dev);\n+\tu32 pm;\n+\n+\tpm = readl(priv->base + REG_PM);\n+\tpm |= 1 << offset;\n+\twritel(pm, priv->base + REG_PM);\n+\n+\treturn eg20t_gpio_set_value(dev, offset, value);\n+}\n+\n+static int eg20t_gpio_get_function(struct udevice *dev, unsigned int offset)\n+{\n+\tstruct eg20t_gpio_priv *priv = dev_get_priv(dev);\n+\tu32 pm;\n+\n+\tpm = readl(priv->base + REG_PM);\n+\tif ((pm >> offset) & 0x1)\n+\t\treturn GPIOF_OUTPUT;\n+\n+\treturn GPIOF_INPUT;\n+}\n+\n+static const struct dm_gpio_ops eg20t_gpio_ops = {\n+\t.direction_input\t= eg20t_gpio_direction_input,\n+\t.direction_output\t= eg20t_gpio_direction_output,\n+\t.get_value\t\t= eg20t_gpio_get_value,\n+\t.set_value\t\t= eg20t_gpio_set_value,\n+\t.get_function\t\t= eg20t_gpio_get_function,\n+};\n+\n+static int eg20t_gpio_probe(struct udevice *dev)\n+{\n+\tstruct eg20t_gpio_priv *priv = dev_get_priv(dev);\n+\tstruct gpio_dev_priv *uc_priv = dev->uclass_priv_;\n+\n+\tpriv->base = dm_pci_map_bar(dev, PCI_BASE_ADDRESS_1, 0, 0,\n+\t\t\t\t    PCI_REGION_TYPE, PCI_REGION_MEM);\n+\tif (!priv->base) {\n+\t\tdebug(\"failed to map GPIO registers\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tuc_priv->gpio_count = 12;\n+\tuc_priv->bank_name = \"eg20t\";\n+\n+\treturn 0;\n+}\n+\n+static const struct udevice_id eg20t_gpio_ids[] = {\n+\t{ .compatible = \"intel,eg20t-gpio\" },\n+\t{ }\n+};\n+\n+U_BOOT_DRIVER(eg20t_gpio) = {\n+\t.name\t= \"eg20t-gpio\",\n+\t.id\t= UCLASS_GPIO,\n+\t.of_match = eg20t_gpio_ids,\n+\t.probe\t= eg20t_gpio_probe,\n+\t.priv_auto = sizeof(struct eg20t_gpio_priv),\n+\t.ops\t= &eg20t_gpio_ops,\n+};\n+\n+static struct pci_device_id eg20t_gpio_supported[] = {\n+\t{ PCI_VENDOR_ID_INTEL, 0x8803 },\n+\t{ },\n+};\n+\n+U_BOOT_PCI_DEVICE(eg20t_gpio, eg20t_gpio_supported);\n",
    "prefixes": [
        "v6",
        "3/7"
    ]
}