get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2215797,
    "url": "http://patchwork.ozlabs.org/api/patches/2215797/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260325-gpio-hogs-multiple-v1-1-7e3a7347f0d6@oss.qualcomm.com/",
    "project": {
        "id": 42,
        "url": "http://patchwork.ozlabs.org/api/projects/42/?format=api",
        "name": "Linux GPIO development",
        "link_name": "linux-gpio",
        "list_id": "linux-gpio.vger.kernel.org",
        "list_email": "linux-gpio@vger.kernel.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260325-gpio-hogs-multiple-v1-1-7e3a7347f0d6@oss.qualcomm.com>",
    "list_archive_url": null,
    "date": "2026-03-25T10:18:32",
    "name": "gpiolib: fix hogs with multiple lines",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "9abaa16bfd00facf4a1743a3f8a70b6b0648158b",
    "submitter": {
        "id": 92196,
        "url": "http://patchwork.ozlabs.org/api/people/92196/?format=api",
        "name": "Bartosz Golaszewski",
        "email": "bartosz.golaszewski@oss.qualcomm.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260325-gpio-hogs-multiple-v1-1-7e3a7347f0d6@oss.qualcomm.com/mbox/",
    "series": [
        {
            "id": 497413,
            "url": "http://patchwork.ozlabs.org/api/series/497413/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/list/?series=497413",
            "date": "2026-03-25T10:18:32",
            "name": "gpiolib: fix hogs with multiple lines",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/497413/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2215797/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2215797/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-gpio+bounces-34119-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-gpio@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=fEebZA1X;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=EH9n4caw;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-gpio+bounces-34119-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=\"fEebZA1X\";\n\tdkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=\"EH9n4caw\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=205.220.168.131",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=oss.qualcomm.com"
        ],
        "Received": [
            "from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\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 4fgjwM6FcXz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 21:35:15 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 7DC6E30B14E1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 10:21:19 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 94C8F3B2FC2;\n\tWed, 25 Mar 2026 10:18:47 +0000 (UTC)",
            "from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id DB7233B2FCB\n\tfor <linux-gpio@vger.kernel.org>; Wed, 25 Mar 2026 10:18:44 +0000 (UTC)",
            "from pps.filterd (m0279865.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 62PA2src560040\n\tfor <linux-gpio@vger.kernel.org>; Wed, 25 Mar 2026 10:18:44 GMT",
            "from mail-qt1-f197.google.com (mail-qt1-f197.google.com\n [209.85.160.197])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d4dm2r26b-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <linux-gpio@vger.kernel.org>; Wed, 25 Mar 2026 10:18:44 +0000 (GMT)",
            "by mail-qt1-f197.google.com with SMTP id\n d75a77b69052e-50937cf66b5so326080361cf.3\n        for <linux-gpio@vger.kernel.org>;\n Wed, 25 Mar 2026 03:18:44 -0700 (PDT)",
            "from brgl-qcom.local ([2a01:cb1d:dc:7e00:7116:95af:5a1a:58c1])\n        by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-48716547649sm34627175e9.0.2026.03.25.03.18.41\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Wed, 25 Mar 2026 03:18:41 -0700 (PDT)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774433927; cv=none;\n b=QO4mKKs4zaD6wD18nivYpctZm2K3MC7iKNqAcLdMmwLX3t9GSaskmkUvMEWGKuzu/pbrhS6dwmz4buMbfFHvI3q03giLuYHjWLgeGuICsNcnx7zPaJpUyZMbufcIes9jIoLQ91X8VocmNRj9CfY0RMrLIp3KOpcNcd5HLLEocMc=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774433927; c=relaxed/simple;\n\tbh=upm5nVM6kPq3mYUHZTeXnTQlCYL0wpRlbP5OgA/r7WE=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc;\n b=B4rlKvjIQbR/PaBXCIAJJAVyKHZ8lMQL+oBU9Nt+DEKNiGCSEGIhHXUWnjsi54tX9d4lFqokLC79l0rPJIMXDhg17vMtb++k4uEPwfGmktW6xH2SQ0FiEx7yRROVNhuK+C+XcAsKSJ+A6qwXShGJMg9iQDyHbCXa6NsMrPQTy4w=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com;\n spf=pass smtp.mailfrom=oss.qualcomm.com;\n dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=fEebZA1X;\n dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=EH9n4caw; arc=none smtp.client-ip=205.220.168.131",
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:content-type:date:from:message-id\n\t:mime-version:subject:to; s=qcppdkim1; bh=To08I+ejB3z/JqhwSWUj+t\n\tIPIu5mncu7meWph1sJRzU=; b=fEebZA1X8Ue9dpbbQIciny7e+Ml7nRjUHIsokt\n\tCrUwr9z0FfF4VZjqNgcBFROo4xGpD13sRlXBT9DDAS6CihTJ0wyQLNM7IulkQ81D\n\tWysAHVqcaYIELRBpfXZ7rMwJb37sj4G5JvNSF+IlJs/+dvP/iPia+MSnx5F9KKh4\n\t9FXDywGetVjSPEs3zHaAhIHYlSAlRV3//fwf2RhyIbRHyT35MlIugUr1afc5e3Rv\n\tUPdYzI32DtpA9Rfu26geuHMOqGycqiKoW1VHnD4oDgvP1JxbulsnDLgdG0YWRlDQ\n\t/c7AKLJ/10FT1Tz0NgRYEvBfXL5mMDYB5qT3Fmqj1NiwzZFg==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=oss.qualcomm.com; s=google; t=1774433923; x=1775038723;\n darn=vger.kernel.org;\n        h=cc:to:message-id:content-transfer-encoding:mime-version:subject\n         :date:from:from:to:cc:subject:date:message-id:reply-to;\n        bh=To08I+ejB3z/JqhwSWUj+tIPIu5mncu7meWph1sJRzU=;\n        b=EH9n4cawTTd6SUWsTEviVmoQKiXtHoD/6iIhNYePdlUTAShumdDEe4lp0PsCqtHTs8\n         6RU3QBs6Ghkqe25RNHKWCqEsxq0Dw4hwLAJp4AorJb7+mej+mE85qssOj9LCOz0CvE+Y\n         afj0BeTAue62MLYMD9UZz52Csj/Tb5VQmO5SEhwxOHAstVTIOb+U4rZ0TQKIz0PrUtEI\n         Kchm4VS3mf2dR08ePLOGYLmTAqP3Y1BU0wGvhJAAzgNdwq5gXwcminggrnG3dR04gXiT\n         3IuHL5IKqhNCMK2MSKiRi/jeMSklVv89bDe3SVEbRc50IYCmqzVReKaKzi16+tnT2nRB\n         ianw=="
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1774433923; x=1775038723;\n        h=cc:to:message-id:content-transfer-encoding:mime-version:subject\n         :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=To08I+ejB3z/JqhwSWUj+tIPIu5mncu7meWph1sJRzU=;\n        b=QKkjCEJ2YoUuv4jRE+dZYuVojHC7ED4Gf1SgGhsH5WKw2WBAKpbreBmKuhl4C3LvR/\n         iuPdGZzKUZJuevzQtrcW6ba8fyBgpZOSvXeYixFeD1emDmjrzdqr/YySa6ZQddadSnyB\n         rCKOPwkDZl17ndxniEbn7kVrLt2+bqBhWsbM0aBGtDWnyEvKdV90ib8VSSolqLOA5qEh\n         oj6IzusGB6bgfhcc0qQRTKIUR+j5cw/gjWyj/DLT7BwgIeDu49JOsvOWZZ1ZtDoo0EbE\n         VcyRaB3nTxSeWhdx3ksuSeocpzgJKvnTqXL09dKFmlfKL8/lt/X0VMKemhnYb7G0RAbX\n         va2w==",
        "X-Gm-Message-State": "AOJu0Yz62XFxiyKzHpk7IDgO49oxVRxTjHHfCo1C1BtLg4DMQvSnd796\n\t6O9bMxWjjf2oJRfmpdF3kXAKgkkXI+a5YgM/ldxHepVAthV8MSF+IRtWHZfnZoRU3I+jKMpDcP7\n\tyEDFbn66fBxWRJcSN/ruZx+6lWkQRLj1u+M6LgVd+6kx3rjyIafgF57sw7IiLCwqV",
        "X-Gm-Gg": "ATEYQzx5UyDamOHtylNvgNlM14eeVzjGN8MOFlUaAafCihb4OfqF3uhr4Ni63biqpaG\n\tJVocLTolZGvdO4PP2/5epalfcQzfgwLxpt5nbMXe49SQpcLRoN1u9ezEF5qjr6OtIPCAEvKbtU9\n\tm25sGzOx5fUde89Ag5DPxtclHRoHK1bFvED2a7dhy0HCuKwDrt1UsCquu1zzGY28j8+0r/O/zVy\n\tITJEiGDIMJOVKICe67sitQ8sSaVAGMR750KI/fmyYz1LxV0iAfj1cq/z9i2G1Ax+SclEk4nE6Di\n\tU9CZG+cA3FCQSfybobVpvwW52Vzagm9C7DKuzgkRjbGwabpq4C8tMcULMJA7zZm0s320Y8XnM9G\n\tZfn0erb/Mju5+F74xHJvYZdGrRoyGbtQvm63atR+vB/iy2P16NB9g",
        "X-Received": [
            "by 2002:ac8:5ac6:0:b0:50b:3ff3:f494 with SMTP id\n d75a77b69052e-50b80e0be23mr39718401cf.36.1774433922996;\n        Wed, 25 Mar 2026 03:18:42 -0700 (PDT)",
            "by 2002:ac8:5ac6:0:b0:50b:3ff3:f494 with SMTP id\n d75a77b69052e-50b80e0be23mr39718131cf.36.1774433922554;\n        Wed, 25 Mar 2026 03:18:42 -0700 (PDT)"
        ],
        "From": "Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>",
        "Date": "Wed, 25 Mar 2026 11:18:32 +0100",
        "Subject": "[PATCH] gpiolib: fix hogs with multiple lines",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-gpio@vger.kernel.org",
        "List-Id": "<linux-gpio.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-gpio+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-gpio+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "7bit",
        "Message-Id": "<20260325-gpio-hogs-multiple-v1-1-7e3a7347f0d6@oss.qualcomm.com>",
        "X-B4-Tracking": "v=1; b=H4sIAHe2w2kC/x3MTQqAIBBA4avErBtIo5KuEi36mWygVLQiEO+et\n PwW70UI5JkC9EUETw8HtiZDlAUs+2Q0Ia/ZICvZVrVsUDu2uFsd8LyPi91BKDqh1lotYmtmyKH\n ztPH7T4cxpQ8wqy8NZAAAAA==",
        "X-Change-ID": "20260325-gpio-hogs-multiple-1718d38c1f5b",
        "To": "Linus Walleij <linusw@kernel.org>, Bartosz Golaszewski <brgl@kernel.org>,\n        Mika Westerberg <mika.westerberg@linux.intel.com>,\n        Andy Shevchenko <andriy.shevchenko@linux.intel.com>",
        "Cc": "linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org,\n        Geert Uytterhoeven <geert@linux-m68k.org>,\n        Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>",
        "X-Mailer": "b4 0.14.2",
        "X-Developer-Signature": "v=1; a=openpgp-sha256; l=4434;\n i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id;\n bh=upm5nVM6kPq3mYUHZTeXnTQlCYL0wpRlbP5OgA/r7WE=;\n b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpw7Z8/KkiXTi/PKquMou0xQbysDdIelEZungnJ\n 0kdJkyXteyJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCacO2fAAKCRAFnS7L/zaE\n w48nD/4jZlDtvWs0GcRAhNZUvFk6TVJ2SoOjx7lbTs5wlm/mRxSSNLJjR1EFDAHXSe1FUw5F1h+\n EhpbQ75f8Wx70FQCip7b6TRnRmcgf4zNIor1UcPRddUgkEZxjUr3ZS1xeG00qOsfDddx+7aw86B\n O/kDOoCYZkC61zngRID0QKWhEUywp2Lvzbk1M9A2GKukAm6rlugRGt0TPD7j0JoDQRGrK2XDiID\n RkQCADuImCbVGf4MekUarAZt0xsB9LtVPJREysSa3V01DSaAe3QI/CTLPlIpaoyYba68QWlv2yn\n IXhXNmQoFrWQm16yWzdYegzHAeji30cXGyI6jVbedgIUr2LsWSiOcxjGZaIbQ3uqH8xHhFjl1NF\n kaIvDYLSuvr5XFtJeFrxui42Lp7H01c/rTp5qKVWwq0l7ljempWRr51OO14uMci4SqpqEKHnp9A\n EjYdVoxhrHUp6qgtI72Ijfih422cgZwY27AH70Ig9CY+IhF2ZFxEyKLarDxQ61U9Na6HC3K1TC5\n gbGGLXPrZoEt9Hwa5uBIH5Kp3Zg9kByun7/oOf61RClTHXB2K/878CZZ/iroiL/OyW7ENP7nccv\n ajj1K7RX0hAXiNecPtpRxk1kA9QnmXjbTUob5oDUARDNUhDmWVPgzp7FhKSXLja01Jf+qldqF6S\n ODATue8NOTQ6MCw==",
        "X-Developer-Key": "i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp;\n fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwMzI1MDA3MiBTYWx0ZWRfXzks8ik0eZTxD\n +9TJGjsfMJOzHiKuuQWJuXkKeaCCP9Z2hOz2j2OU3jEmbYt2jEB6p9fWlzW3RJ13taCdzIhewgm\n A7a9DnR6DHZ3/Kd9RFAgrut7hP7HS+AZ6Otcd9s9tgr0ewsZ58cA8f0xhET9QWnywRnb8ULJ6R0\n HXfyb3O/XGH+G4HoLXmYsLWV+bE67TVu8tQr/9w6bcOr9l9xyEgexDg+73G5F7q6P4IjiX4I9j3\n rlLDeUn1NbN2fsuiYyO1WXDz513hRPSg4ttbKlFnAdv3JP7mHKN6rJn+ZLJ+w8hwAjZjeyDq0/9\n gOzbqMarOzvw5eY4GrCaVUxzQNbs5kz2AL8QmVaNi9nj54bzoHYetwtpG01GaXzhPjtyF3Ems4Q\n tw6vUnBBhq7p79HN8qo4fZc0SJFuzqAkxnT11y86VfK5ZlYagvtpYCqEdE0TDFz8FBbOFmPIN5k\n kCca+vxwRWuxU4rpP1Q==",
        "X-Proofpoint-GUID": "jYnshyy5SV-RvEpm-q1In7jOiCvdxcRI",
        "X-Authority-Analysis": "v=2.4 cv=Fo0IPmrq c=1 sm=1 tr=0 ts=69c3b684 cx=c_pps\n a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10\n a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=VwQbUJbxAAAA:8\n a=pGLkceISAAAA:8 a=tBb2bbeoAAAA:8 a=EUspDBNiAAAA:8 a=K1GLRSYOeZ-nItpvw9AA:9\n a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 a=Oj-tNtZlA1e06AYgeCfH:22",
        "X-Proofpoint-ORIG-GUID": "jYnshyy5SV-RvEpm-q1In7jOiCvdxcRI",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-03-25_03,2026-03-24_01,2025-10-01_01",
        "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n lowpriorityscore=0 adultscore=0 malwarescore=0 clxscore=1015 spamscore=0\n bulkscore=0 phishscore=0 priorityscore=1501 suspectscore=0 impostorscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603250072"
    },
    "content": "After moving GPIO hog handling into GPIOLIB core, we accidentally stopped\nsupporting devicetree hog definitions with multiple lines like so:\n\n\thog {\n\t\tgpio-hog;\n\t\tgpios = <3 0>, <4 GPIO_ACTIVE_LOW>;\n\t\toutput-high;\n\t\tline-name = \"foo\";\n\t};\n\nRestore this functionality to fix reported regressions.\n\nFixes: d1d564ec4992 (\"gpio: move hogs into GPIO core\")\nReported-by: Geert Uytterhoeven <geert@linux-m68k.org>\nCloses: https://lore.kernel.org/all/CAMuHMdX6RuZXAozrF5m625ZepJTVVr4pcyKczSk12MedWvoejw@mail.gmail.com/\nSigned-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>\n---\n drivers/gpio/gpiolib.c | 84 +++++++++++++++++++++++++++-----------------------\n 1 file changed, 46 insertions(+), 38 deletions(-)\n\n\n---\nbase-commit: 04310bd443d4a09a486c0bcd7a767e32400eca77\nchange-id: 20260325-gpio-hogs-multiple-1718d38c1f5b\n\nBest regards,",
    "diff": "diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c\nindex 7ee45ccdf1265e94b68fe8fa0d10dbc6adccd93a..fd2821463ddc9fe047fecb3d89b018b5e23b925c 100644\n--- a/drivers/gpio/gpiolib.c\n+++ b/drivers/gpio/gpiolib.c\n@@ -938,12 +938,12 @@ int gpiochip_add_hog(struct gpio_chip *gc, struct fwnode_handle *fwnode)\n \tstruct fwnode_handle *gc_node = dev_fwnode(&gc->gpiodev->dev);\n \tstruct fwnode_reference_args gpiospec;\n \tenum gpiod_flags dflags;\n+\tconst char *name = NULL;\n \tstruct gpio_desc *desc;\n \tunsigned long lflags;\n-\tconst char *name;\n+\tsize_t num_hogs;\n \tint ret, argc;\n-\tu32 gpios[3]; /* We support up to three-cell bindings. */\n-\tu32 cells;\n+\tu32 cells = 0;\n \n \tlflags = GPIO_LOOKUP_FLAGS_DEFAULT;\n \tdflags = GPIOD_ASIS;\n@@ -952,43 +952,21 @@ int gpiochip_add_hog(struct gpio_chip *gc, struct fwnode_handle *fwnode)\n \targc = fwnode_property_count_u32(fwnode, \"gpios\");\n \tif (argc < 0)\n \t\treturn argc;\n-\tif (argc > 3)\n+\n+\tret = fwnode_property_read_u32(gc_node, \"#gpio-cells\", &cells);\n+\tif ((ret && is_of_node(fwnode)) || (!ret && (argc % cells)))\n \t\treturn -EINVAL;\n \n+\tnum_hogs = ret ? 1 : (argc / cells);\n+\n+\tu32 *gpios __free(kfree) = kcalloc(argc, sizeof(u32), GFP_KERNEL);\n+\tif (!gpios)\n+\t\treturn -ENOMEM;\n+\n \tret = fwnode_property_read_u32_array(fwnode, \"gpios\", gpios, argc);\n \tif (ret < 0)\n \t\treturn ret;\n \n-\tif (is_of_node(fwnode)) {\n-\t\t/*\n-\t\t * OF-nodes need some additional special handling for\n-\t\t * translating of devicetree flags.\n-\t\t */\n-\t\tret = fwnode_property_read_u32(gc_node, \"#gpio-cells\", &cells);\n-\t\tif (ret)\n-\t\t\treturn ret;\n-\t\tif (!ret && argc != cells)\n-\t\t\treturn -EINVAL;\n-\n-\t\tmemset(&gpiospec, 0, sizeof(gpiospec));\n-\t\tgpiospec.fwnode = fwnode;\n-\t\tgpiospec.nargs = argc;\n-\n-\t\tfor (int i = 0; i < argc; i++)\n-\t\t\tgpiospec.args[i] = gpios[i];\n-\n-\t\tret = of_gpiochip_get_lflags(gc, &gpiospec, &lflags);\n-\t\tif (ret)\n-\t\t\treturn ret;\n-\t} else {\n-\t\t/*\n-\t\t * GPIO_ACTIVE_LOW is currently the only lookup flag\n-\t\t * supported for non-OF firmware nodes.\n-\t\t */\n-\t\tif (gpios[1])\n-\t\t\tlflags |= GPIO_ACTIVE_LOW;\n-\t}\n-\n \tif (fwnode_property_present(fwnode, \"input\"))\n \t\tdflags |= GPIOD_IN;\n \telse if (fwnode_property_present(fwnode, \"output-low\"))\n@@ -1000,11 +978,41 @@ int gpiochip_add_hog(struct gpio_chip *gc, struct fwnode_handle *fwnode)\n \n \tfwnode_property_read_string(fwnode, \"line-name\", &name);\n \n-\tdesc = gpiochip_get_desc(gc, gpios[0]);\n-\tif (IS_ERR(desc))\n-\t\treturn PTR_ERR(desc);\n+\tfor (unsigned int i = 0; i < num_hogs; i++) {\n+\t\tif (is_of_node(fwnode)) {\n+\t\t\t/*\n+\t\t\t * OF-nodes need some additional special handling for\n+\t\t\t * translating of devicetree flags.\n+\t\t\t */\n+\t\t\tmemset(&gpiospec, 0, sizeof(gpiospec));\n+\t\t\tgpiospec.fwnode = fwnode;\n+\t\t\tgpiospec.nargs = cells;\n+\n+\t\t\tfor (int j = 0; j < cells; j++)\n+\t\t\t\tgpiospec.args[j] = gpios[i * cells + j];\n+\n+\t\t\tret = of_gpiochip_get_lflags(gc, &gpiospec, &lflags);\n+\t\t\tif (ret)\n+\t\t\t\treturn ret;\n+\t\t} else {\n+\t\t\t/*\n+\t\t\t * GPIO_ACTIVE_LOW is currently the only lookup flag\n+\t\t\t * supported for non-OF firmware nodes.\n+\t\t\t */\n+\t\t\tif (gpios[i * cells + 1])\n+\t\t\t\tlflags |= GPIO_ACTIVE_LOW;\n+\t\t}\n \n-\treturn gpiod_hog(desc, name, lflags, dflags);\n+\t\tdesc = gpiochip_get_desc(gc, gpios[i * cells]);\n+\t\tif (IS_ERR(desc))\n+\t\t\treturn PTR_ERR(desc);\n+\n+\t\tret = gpiod_hog(desc, name, lflags, dflags);\n+\t\tif (ret)\n+\t\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n }\n \n static int gpiochip_hog_lines(struct gpio_chip *gc)\n",
    "prefixes": []
}