Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2217592/?format=api
{ "id": 2217592, "url": "http://patchwork.ozlabs.org/api/patches/2217592/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260330-gpio-hogs-multiple-v3-1-175c3839ad9f@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": "<20260330-gpio-hogs-multiple-v3-1-175c3839ad9f@oss.qualcomm.com>", "list_archive_url": null, "date": "2026-03-30T08:36:03", "name": "[v3] gpiolib: fix hogs with multiple lines", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "af43ff27c09e07f0a4ed74653537e972f3664099", "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/20260330-gpio-hogs-multiple-v3-1-175c3839ad9f@oss.qualcomm.com/mbox/", "series": [ { "id": 497976, "url": "http://patchwork.ozlabs.org/api/series/497976/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/list/?series=497976", "date": "2026-03-30T08:36:03", "name": "[v3] gpiolib: fix hogs with multiple lines", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/497976/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2217592/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2217592/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-gpio+bounces-34399-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=h8VVM2xq;\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=JFwEm9Gz;\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-34399-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=\"h8VVM2xq\";\n\tdkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=\"JFwEm9Gz\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=205.220.180.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 4fklP25lcrz1yG8\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 30 Mar 2026 19:52:06 +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 DD6B23046994\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 30 Mar 2026 08:36:57 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 307E33B19C9;\n\tMon, 30 Mar 2026 08:36:20 +0000 (UTC)", "from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n [205.220.180.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 103783AEF24\n\tfor <linux-gpio@vger.kernel.org>; Mon, 30 Mar 2026 08:36:16 +0000 (UTC)", "from pps.filterd (m0279871.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 62U7Cf6w1534831\n\tfor <linux-gpio@vger.kernel.org>; Mon, 30 Mar 2026 08:36:16 GMT", "from mail-qt1-f200.google.com (mail-qt1-f200.google.com\n [209.85.160.200])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d66jwnage-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <linux-gpio@vger.kernel.org>; Mon, 30 Mar 2026 08:36:15 +0000 (GMT)", "by mail-qt1-f200.google.com with SMTP id\n d75a77b69052e-5094ba09affso125010401cf.2\n for <linux-gpio@vger.kernel.org>;\n Mon, 30 Mar 2026 01:36:15 -0700 (PDT)", "from brgl-qcom.local ([2a01:cb1d:dc:7e00:1143:869f:e06c:4587])\n by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43cf245f8a3sm18652219f8f.24.2026.03.30.01.36.13\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Mon, 30 Mar 2026 01:36:13 -0700 (PDT)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774859780; cv=none;\n b=jGBLBgfCEWB2sw8uUyw2VW+9h0k2R8/SNE+MiBVsdri4gjbgsrtZGy5moLbUO2R3uhQgrgcJoSE4wzv3fl+umGcXRb5KlO1mdtBs4gCn0y6WiU5W/MUvicZz4tavdsFyVQmsteTIw/NiNUdus3g7ysveavvLpSOUXJWfDzfYLfw=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774859780; c=relaxed/simple;\n\tbh=anCW4E0ZIGfXhJLFTLzLNgLyYjg6VA1+mUORsy7w8AY=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc;\n b=fCnoevIIlld1g4OJMeaBYyNTzyJOYlG2PNVLAwzpt6MrLa/1+cJYPfE3L0WVGR1TDMS7E3hZI9afIOht8K2kExejsGw77Kq0cQN8kbYpNKMeoyPpzJ+5d/YYk1QUgA1QrW7vCEgRGVYDqMIfB9k3sdrpk+CMR52dzE0NbHCdqmk=", "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=h8VVM2xq;\n dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=JFwEm9Gz; arc=none smtp.client-ip=205.220.180.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=WiitO0Rwk/4O9hM9vTx4GO\n\t7pPaNREZlLqZTvSluTHQM=; b=h8VVM2xqAetF9KqOCTl9h4nR3tT9UqQdxe5pre\n\tYCb8OL81JokRlvqldUQyMctN0UzjYTbc6R+uw2lGNY5+Ev3eZy37cuI9euNc/bcD\n\tvKz3Ym+8gCawEuQkhXIRsDGM6bqBcANiFqYjNncCOlz6aDyg7lrImQmrmKZBQbHL\n\tFaKWzXL3J8S5iYqc7BahG0wcuhimnIJ11KedPvqkGwtEaVLHSFEKZR64hR9fzyN6\n\tobWc80SxdWTeYSL0MsTby/jRWfOrU1bl+69NB4EIujU4G7gc80ADBatek/Kb4LRE\n\t5Zeoyhl8jhBVPvlyPyFU57INlVeOIp2JmCXDLvc/Q1EvR0fA==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1774859775; x=1775464575;\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=WiitO0Rwk/4O9hM9vTx4GO7pPaNREZlLqZTvSluTHQM=;\n b=JFwEm9Gz/dupmCIBV7fTltYz0kdRj8Mih4uta5vFKVw9ahsFBj7GVkeXeobiXVcYc5\n VHtHWZPrYdAvHxtdRcyTADoA88R8stoFXr3ZZewl4fFhp5WuBUbQPkUvrnj4p6GdjEsV\n uGP2z7NpretgZiSsAbpT6cRsnIA1mVFz2sIZyXBSQxziLPggbFyzqCL+pMEOUAu68uZZ\n HCA38oblyEDbEglN7JV7dPr+mPWvi/9ZI1flcKd8hpzJgQpJfVU0jCqIEMazm45s4KXU\n +wsh/vim4Oe8DDjMGZyS+qQBYemRRns3cyva61l2n30yLFdo+1WI+licyIQDji3UsLJA\n LGOA==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774859775; x=1775464575;\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=WiitO0Rwk/4O9hM9vTx4GO7pPaNREZlLqZTvSluTHQM=;\n b=K7gtdgyju0p9Uv5g20TFao6AxqZbhKKZh6TgwwuRP/s+E/f8C8wqU/Citr2kiGdC4d\n QcsttxlnW2BTMuDhxv6WTEgbaCUe4F0BjKt5cJQ/ICijrB2YJ2d+ZBqOJKxbHxIwha7H\n I5R4JNN7ibXk2vO4k+MwJ4n/7JN6lxEngTHk2rIpXMYE7HkhhmxbOnQAEgUHSFs1iDdz\n TPECKei6sPUcoNY7UB7LSKEhR7zA5G0jc2NBhKaURK2tJZ8MmXcXQLCPkBNr9hnHSi6P\n YHwzuhIkhnZ6c5Wz8P75xzFuzbz5mREpBvJtcYrugxJowe36XZbZvurRxLgUBXzzofZe\n braw==", "X-Gm-Message-State": "AOJu0Yx7gRsqswsdxx1HIc0CRwxW+oyITCx5/bZ44t3KcZ23VF0fl4bw\n\tKo/FxP7d6mIEOESPTVxNNsFvY5Zj2akg9rvoeYpXFJ1i1XhTVlBLrnwKRXfIpBtxWm00jOTDkBT\n\t4PyswRDlcaXgXW5yEzKJRuDwlw2G/qEqWTnJPWRbSRvnNfPef/Y3MsyzZkw4QivwFIeWRsRmJ", "X-Gm-Gg": "ATEYQzyv0SBs/xTBVLsTYUgfIMPPeK4f/2KWBlsZy07dIf69h4dhOa0Efir3JZ8MsMX\n\tORdpWA4nlGUmWDLf8XrlI2CEoOFm2EfxnJZjNw5rpDeMYuXBI+CWX81NM2Xo61Z0USY6FOOVqds\n\tsskh0OO7O32wG44JVPxF2Bjo1vBdZz50QxaiZxf56MiYdxAKv7s8fRLI+QBaS5W2xSP//IKLz8H\n\txlABlQvyrmvfapJrISaM6GzPMBk8J/LHUCpIkDrm+AihTitJ63xQxTZ/bMr6gQ2Z9zUxACBQBLU\n\t3h9R57FqDyITgmsZi/Pmq7qJ95Slt5rX9qj4g6RJO7dg+Yy87TNdwH6J54dyqHAJ38soJZtgueD\n\tEAeqmVuTZxKsIrZxqCMqJATox9rffXFG+6SaDJmjGFPW9NgyWBuGl", "X-Received": [ "by 2002:a05:622a:1ba0:b0:509:34b8:a373 with SMTP id\n d75a77b69052e-50ba38c25e3mr160915261cf.32.1774859775241;\n Mon, 30 Mar 2026 01:36:15 -0700 (PDT)", "by 2002:a05:622a:1ba0:b0:509:34b8:a373 with SMTP id\n d75a77b69052e-50ba38c25e3mr160915061cf.32.1774859774779;\n Mon, 30 Mar 2026 01:36:14 -0700 (PDT)" ], "From": "Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>", "Date": "Mon, 30 Mar 2026 10:36:03 +0200", "Subject": "[PATCH v3] 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": "<20260330-gpio-hogs-multiple-v3-1-175c3839ad9f@oss.qualcomm.com>", "X-B4-Tracking": "v=1; b=H4sIAPI1ymkC/33NSwqDMBCA4atI1o3koYl01XuULmyc6IAam2hoE\n e/e6KoL6WbgH5hvVhLAIwRyzVbiIWJAN6aQl4yYrh5boNikJoIJxaQoaTuho51rAx2WfsapB8o\n 1rxpZGW7LJ0mHkweL7wO9P1J3GGbnP8ePyPftXy5yyqkGWWtZaMsadXMh5K+l7o0bhjwNsqtR/\n ErqVBK7ZGTFZaEYFPZE2rbtC+0WtBoFAQAA", "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>,\n Geert Uytterhoeven <geert+renesas@glider.be>", "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=5349;\n i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id;\n bh=anCW4E0ZIGfXhJLFTLzLNgLyYjg6VA1+mUORsy7w8AY=;\n b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpyjXzh89dCum1hpwJ7f0nmCEc24p187AIo2Ig1\n M16Y+fblV2JAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaco18wAKCRAFnS7L/zaE\n w9IBD/9suGgwYLvz/LLQjUPtm435iWTwE9NX/kurJLjoo0RvMRPEtC6MN+HQJR1gZhyBpY6Iqvt\n Xn4SJE/MkUtPnVcmRGBelBpGvOE4E3SKvK9+o8MY+8SWbV7YWaSDlSzamFRDuoS0C4QrQSn/3vW\n Hhkbl//oLuvJJCF+tR7vcZtOu5VHJ5imsQysEbWalsU5XbLkn/Hzehzlen0CD6dz3U0DXEYXh2o\n TDb3NT4aoANY939bLUOt/ZMhYeriix8lFGd8ngYsBWuiomB3ZBMbr3rFGTVnypTYosYmzz9pOI5\n 8Asikiv8YwrBXqgWA/PWv9GSR/IAWm+FEQ8FVaKlkTA3Av23+gd4xTjWmzhVyVz4Ce3BEEi+EJj\n rKrdciVVThhNIYim0HMIe5kBB+R5LWHE/r4x2JE+I4r6qyzQbj6Q1hSARDLeqZfiRFGWKwntRwI\n 8SVTX9Q+gXkSoTC57lPtzO1Zl4Q5Vme1uGjiyu8zFJOxruRhdOjJ4FEwM4XqelsnfpNbAR0X7N3\n yKoVAK84rhEhdkFf6MKJ+BHKjZXdxH+4o0pOP49mbNw3A1zksRoalqsIPohuriH0pENCX8KgfAL\n mFrNBJ/tcG0Jq/XcCBOvjdmkzgsRUaoHWsha8apn1qq+n4Tum2F8+a5XzAspn76F7ZhKh9ONtDQ\n aTAPEhl8n59UN/g==", "X-Developer-Key": "i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp;\n fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772", "X-Authority-Analysis": "v=2.4 cv=I8dohdgg c=1 sm=1 tr=0 ts=69ca3600 cx=c_pps\n a=JbAStetqSzwMeJznSMzCyw==: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=3WHJM1ZQz_JShphwDgj5:22 a=VwQbUJbxAAAA:8\n a=pGLkceISAAAA:8 a=bC-a23v3AAAA:8 a=EUspDBNiAAAA:8 a=tBb2bbeoAAAA:8\n a=1mqqY-Va1JI0pYqkum4A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22\n a=FO4_E8m0qiDe52t0p3_H:22 a=Oj-tNtZlA1e06AYgeCfH:22", "X-Proofpoint-GUID": "kHVH8LomLMfQQaSLop9OhXeQ2VcAiXK_", "X-Proofpoint-ORIG-GUID": "kHVH8LomLMfQQaSLop9OhXeQ2VcAiXK_", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwMzMwMDA2NyBTYWx0ZWRfX/R8mKZNfS9xH\n ryZoVNfV/yCZcjLcLz9/C3fQMsX5QBfkIeyUHAHjSC6Ump92oFqDKlMh4zbux37cyTCLABt1cVO\n qgiHCGbEtdrGBB/ECOKOGVa2SQLRbHpfmZ0H0cGRzKDKZ4tN/ZHvH5degHZrjSXw92umjNRf+4l\n bbf47ZfppKunqIUY0PqL8ZqCZ/NNZAaUmRk+fDIlPEBnFypAOIJyUdYo4t5pGpTHPYbzoIMFM4N\n 70DmxqmTy11LNMJEIJp3JZKi/6GH5g+pEklzXYrwVY+5XSRjObMrS5fI9/r47rkTVORIH7/WvG7\n YptLYOb9lzxsEJshe0rweGG8ueLN7d3AOnWW5VSIk6bY+xMdTLCMYpb9+ayp01xp2Mao7+0fSrc\n M/3R0a0/kiaGSWI4UbSvn87NGxzFi3k2w3mEu8AzH7ahZH6WQi2D7uRBIoW0e+CRgtLvzFgwKGD\n krYad9E1k0K8bBB6NtQ==", "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-29_05,2026-03-28_01,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n priorityscore=1501 clxscore=1015 spamscore=0 adultscore=0 suspectscore=0\n malwarescore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 phishscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603300067" }, "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/\nTested-by: Geert Uytterhoeven <geert+renesas@glider.be>\nSigned-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>\n---\nChanges in v3:\n- Fix types for some variables\n- Make the return value check for \"#gpio-cells\" property stricter\n- Link to v2: https://patch.msgid.link/20260326-gpio-hogs-multiple-v2-1-7c3813460e4f@oss.qualcomm.com\n\nChanges in v2:\n- Use a default value of 2 for the number of GPIO cells\n- Use kzalloc_objs() instead of kcalloc()\n- Propagate the error number from fwnode_property_read_u32()\n- Remove special cases forced by the lack of default cells value\n- Link to v1: https://patch.msgid.link/20260325-gpio-hogs-multiple-v1-1-7e3a7347f0d6@oss.qualcomm.com\n---\n drivers/gpio/gpiolib.c | 92 +++++++++++++++++++++++++++++---------------------\n 1 file changed, 54 insertions(+), 38 deletions(-)\n\n\n---\nbase-commit: b99f90909bdc937914fd6017d67b66d445273650\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..96c776ff2669ed2404048360297cf706bfe38251 100644\n--- a/drivers/gpio/gpiolib.c\n+++ b/drivers/gpio/gpiolib.c\n@@ -938,12 +938,18 @@ 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 int num_hogs;\n \tunsigned long lflags;\n-\tconst char *name;\n \tint ret, argc;\n-\tu32 gpios[3]; /* We support up to three-cell bindings. */\n-\tu32 cells;\n+\t/*\n+\t * For devicetree-based systems, this needs to be defined in bindings\n+\t * and there's no real default value. For other firmware descriptions\n+\t * it makes the most sense to use 2 cells for the GPIO offset and\n+\t * request flags.\n+\t */\n+\tu32 cells = 2;\n \n \tlflags = GPIO_LOOKUP_FLAGS_DEFAULT;\n \tdflags = GPIOD_ASIS;\n@@ -952,42 +958,22 @@ 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-\t\treturn -EINVAL;\n \n-\tret = fwnode_property_read_u32_array(fwnode, \"gpios\", gpios, argc);\n-\tif (ret < 0)\n+\tret = fwnode_property_read_u32(gc_node, \"#gpio-cells\", &cells);\n+\tif (ret && is_of_node(fwnode))\n \t\treturn ret;\n+\tif (argc % cells)\n+\t\treturn -EINVAL;\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+\tnum_hogs = argc / cells;\n \n-\t\tfor (int i = 0; i < argc; i++)\n-\t\t\tgpiospec.args[i] = gpios[i];\n+\tu32 *gpios __free(kfree) = kzalloc_objs(*gpios, argc);\n+\tif (!gpios)\n+\t\treturn -ENOMEM;\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+\tret = fwnode_property_read_u32_array(fwnode, \"gpios\", gpios, argc);\n+\tif (ret < 0)\n+\t\treturn ret;\n \n \tif (fwnode_property_present(fwnode, \"input\"))\n \t\tdflags |= GPIOD_IN;\n@@ -1000,11 +986,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 (unsigned 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+\t\tdesc = gpiochip_get_desc(gc, gpios[i * cells]);\n+\t\tif (IS_ERR(desc))\n+\t\t\treturn PTR_ERR(desc);\n \n-\treturn gpiod_hog(desc, name, lflags, dflags);\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": [ "v3" ] }