Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2221916/?format=api
{ "id": 2221916, "url": "http://patchwork.ozlabs.org/api/1.2/patches/2221916/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260410091154.1001021-5-varadarajan.narayanan@oss.qualcomm.com/", "project": { "id": 18, "url": "http://patchwork.ozlabs.org/api/1.2/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": "<20260410091154.1001021-5-varadarajan.narayanan@oss.qualcomm.com>", "list_archive_url": null, "date": "2026-04-10T09:11:49", "name": "[v2,4/9] pinctrl: qcom: Add ipq5210 pinctrl driver", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "2dc4c4d714111cca63bd3470e0245c5c43e06229", "submitter": { "id": 92283, "url": "http://patchwork.ozlabs.org/api/1.2/people/92283/?format=api", "name": "Varadarajan Narayanan", "email": "varadarajan.narayanan@oss.qualcomm.com" }, "delegate": { "id": 151538, "url": "http://patchwork.ozlabs.org/api/1.2/users/151538/?format=api", "username": "kcxt", "first_name": "Casey", "last_name": "Connolly", "email": "casey.connolly@linaro.org" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260410091154.1001021-5-varadarajan.narayanan@oss.qualcomm.com/mbox/", "series": [ { "id": 499455, "url": "http://patchwork.ozlabs.org/api/1.2/series/499455/?format=api", "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=499455", "date": "2026-04-10T09:11:45", "name": "Qualcomm IPQ5210 SoC bringup", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/499455/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2221916/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2221916/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=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=dGLwD0wg;\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=gXWG4Wa9;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)", "phobos.denx.de;\n dmarc=none (p=none dis=none) header.from=oss.qualcomm.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=qualcomm.com header.i=@qualcomm.com\n header.b=\"dGLwD0wg\";\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=\"gXWG4Wa9\";\n\tdkim-atps=neutral", "phobos.denx.de; dmarc=none (p=none dis=none)\n header.from=oss.qualcomm.com", "phobos.denx.de; spf=pass\n smtp.mailfrom=varadarajan.narayanan@oss.qualcomm.com" ], "Received": [ "from phobos.denx.de (phobos.denx.de [85.214.62.61])\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 4fscGT0T5Qz1yGS\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 22:55:13 +1000 (AEST)", "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id D94F8841D7;\n\tFri, 10 Apr 2026 14:54:24 +0200 (CEST)", "by phobos.denx.de (Postfix, from userid 109)\n id 7A55984106; Fri, 10 Apr 2026 11:13:04 +0200 (CEST)", "from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\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 EE36083DC9\n for <u-boot@lists.denx.de>; Fri, 10 Apr 2026 11:13:01 +0200 (CEST)", "from pps.filterd (m0279862.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63A5oVBN1925716\n for <u-boot@lists.denx.de>; Fri, 10 Apr 2026 09:13:00 GMT", "from mail-pj1-f69.google.com (mail-pj1-f69.google.com\n [209.85.216.69])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4deudjrqm0-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <u-boot@lists.denx.de>; Fri, 10 Apr 2026 09:12:59 +0000 (GMT)", "by mail-pj1-f69.google.com with SMTP id\n 98e67ed59e1d1-3568090851aso4244332a91.1\n for <u-boot@lists.denx.de>; Fri, 10 Apr 2026 02:12:59 -0700 (PDT)", "from hu-varada-blr.qualcomm.com\n (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19])\n by smtp.gmail.com with ESMTPSA id\n 98e67ed59e1d1-35e4123a29fsm2564871a91.8.2026.04.10.02.12.46\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 10 Apr 2026 02:12:57 -0700 (PDT)" ], "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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,\n SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n content-transfer-encoding:date:from:in-reply-to:message-id\n :mime-version:references:subject:to; s=qcppdkim1; bh=oB5mMzPLF2o\n 5xCCR7NyeZJyWoSpTIPRdc0cEfzLvUGQ=; b=dGLwD0wgl+lCl2grJLcoqW8CM6k\n +7tR5y1B7X4oJ8oDK/S1B6IcoXcUaPehX83FWl8Hv7XL1g3uBr4hlH1R9XwGS+xR\n dv8JnT5ejJRSMQuqTLbgE0fUwATn4c9x+VPy6B2oymmn/U4rjWJL+wUG5mfyrMY6\n aL9FOyySaVjyIK6HxvJ9f9KDBM0nV6FewQfyn/lQl+/jdQBHmq7YqmaSAjw+6FcN\n Y6oaDrdMwpuJdoomlxbZpF0LU62AKWzCBP7jV5yUIqGLVUm71pJCg+BnKyplvD2c\n JEBC2lS3BDzdRkVntydjuOSOvwqTJk9rGkTiQ2qSnYvuUVCagM4Zr18NAyw==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1775812379; x=1776417179; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:from:to:cc:subject:date:message-id\n :reply-to; bh=oB5mMzPLF2o5xCCR7NyeZJyWoSpTIPRdc0cEfzLvUGQ=;\n b=gXWG4Wa9UZAwVah0aCdj6zS+xfzMZimTXCRtYgbdURqbq0hBMWMfHKDcRqZiYVBHq8\n NPahvxZ6uIJ85IZuOjGP5XAAub2Xujs2c/eFtkLr0afaQmwAEwX+JFFf6sk2JNGmzc1x\n 4J5xtiaHBpSM31CHjzrNLzOL6pYQjhtoRTJ9ooyl27Bx+XKvDN/EpZhK6s7Ds6mOMkUq\n qeQTymHl6XnP7OOOPqMeuoaDUjziE3IA+rJh63HMC8oQs1uAnhz+HgN8nIyrhjBz3vVo\n DZX9ypS63fCa5OxqRWoj6wSH8P45Qj0aNQTA2FIUEvAwIKofll7DtMdej9tv2K3WYVF1\n 6pPw==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775812379; x=1776417179;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to\n :cc:subject:date:message-id:reply-to;\n bh=oB5mMzPLF2o5xCCR7NyeZJyWoSpTIPRdc0cEfzLvUGQ=;\n b=SBx8kCvo5CQXh+PGG8+oZupNZ3u/9oD0UK7XH3P+YSMqddMAbKy175Z20pE50OELKU\n yZ9LIDjCZ99hmeGWCQ+7CuZW9Ji54Jjlqfz/N9+39w3T99scmMaCNSXdN7XWwltqBOri\n hZiVM33sucYNQUMrWYhBoyjueGv2eXgrdvUOrJ3SgNByTJMNYhDuxLT1T8bzpqyZ56Qj\n KQr57AUE9SOiC5gqLw0f5eKuPQsy6g/OZusgb61QLXoFKH3jDidEOOStOFx0o2SlFzyn\n dZwBPithNq/hSOCgLqWuVEDRH6ECdllityb6yC0X/2mzXbWFRn4maKMznzC/mQJAYocL\n NEfQ==", "X-Forwarded-Encrypted": "i=1;\n AJvYcCWdAa0UWHTo3S5qRjJ4o+wCQLpIiJ1C/ljPm3t3PR23ib+pcJk3e/wLz3xyNZrw10qfC2iJ7/c=@lists.denx.de", "X-Gm-Message-State": "AOJu0YwrIVbVwlPeOe6f8tmIv4FJ7gUGoO2NrGOvnNnN9bu+SnhR/f4d\n hOOE6llWVJbwHvAbxbAb9Omdq0ikwzblys59UEOlSR3+LqUVJS/5FeUwQSClh28KdTjrHXGyO8b\n XoZSotzevFaXdUIq8vYYmcg95CA/WPy6vNR46bbSzO5Mr7q6TigjLk0r/", "X-Gm-Gg": "AeBDiet/Ddw0XW2wM0c/aIFO0+mLYBZUsDPPPxZvhysNHPpu43k5wpIK1PlO1V5Gx2A\n JOAaQ3OqR/W7jZ0dDMCO+bLaBGmk1Tn7t+5/1fi68L1YF8Al1oBziX0axk4FNzrbtD4xqOlX1SJ\n 59JaP8Q0DO/t7xpUAIKrj6TMOyNthUgaz5wFDf4xtYlQeMEHWJJhqNn6QMM6++hlCd1Eu0Vm5Hv\n D0325Vnq/fq4EfuMEmNPF7C8y5XlyTRS/d9ata3ifJGkw1vsqU8MJpFa3rw8E8icje3AQ5x8SZt\n 71Aamlb/5MrjJDtJsLUklwTGOn/BcCjq/bDmjYN7aD7lf7S/ZsNMPJRGT+jLl+hYrN3N4rmUh6f\n wMusj5UWj2yM6FJSmdp1tKQ/lRgDI+oFoQV8RpKvs1aybN83vnk85SfsjtYHqag4xm+dczEO+BB\n HdDGdMXieX44NVijOtO5gqxLcMSA2siiJkH0FlBTEJYu9O+Da2b+U=", "X-Received": [ "by 2002:a17:90b:3c48:b0:35b:e551:e776 with SMTP id\n 98e67ed59e1d1-35e42869cbdmr2835474a91.27.1775812378916;\n Fri, 10 Apr 2026 02:12:58 -0700 (PDT)", "by 2002:a17:90b:3c48:b0:35b:e551:e776 with SMTP id\n 98e67ed59e1d1-35e42869cbdmr2835406a91.27.1775812378341;\n Fri, 10 Apr 2026 02:12:58 -0700 (PDT)" ], "From": "Varadarajan Narayanan <varadarajan.narayanan@oss.qualcomm.com>", "To": "rayagonda.kokatanur@broadcom.com, trini@konsulko.com,\n casey.connolly@linaro.org, neil.armstrong@linaro.org,\n sumit.garg@kernel.org, peng.fan@nxp.com, jh80.chung@samsung.com,\n lukma@denx.de, tien.fong.chee@altera.com, anshuld@ti.com,\n alif.zakuan.yuslaimi@altera.com, tingting.meng@altera.com,\n alice.guo@nxp.com, quentin.schulz@cherry.de,\n ilias.apalodimas@linaro.org, varadarajan.narayanan@oss.qualcomm.com,\n xypron.glpk@gmx.de, mkorpershoek@kernel.org, h-salunke@ti.com,\n alchark@gmail.com, dario.binacchi@amarulasolutions.com, ye.li@nxp.com,\n andre.przywara@arm.com, afd@ti.com, dinesh.maniyam@altera.com,\n balaji.selvanathan@oss.qualcomm.com, danila@jiaxyga.com,\n aswin.murugan@oss.qualcomm.com, luca.weiss@fairphone.com,\n adrian@mainlining.org, justin@tidylabs.net, n-francis@ti.com,\n wens@kernel.org, jamie.gibbons@microchip.com,\n david.wronek@mainlining.org, alexeymin@postmarketos.org,\n james.hilliard1@gmail.com, michael@amarulasolutions.com,\n richard.genoud@bootlin.com, philip.molloy@analog.com,\n sughosh.ganu@arm.com, u-boot@lists.denx.de, u-boot-qcom@groups.io", "Subject": "[PATCH v2 4/9] pinctrl: qcom: Add ipq5210 pinctrl driver", "Date": "Fri, 10 Apr 2026 14:41:49 +0530", "Message-Id": "<20260410091154.1001021-5-varadarajan.narayanan@oss.qualcomm.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20260410091154.1001021-1-varadarajan.narayanan@oss.qualcomm.com>", "References": "<20260410091154.1001021-1-varadarajan.narayanan@oss.qualcomm.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Authority-Analysis": "v=2.4 cv=X+hi7mTe c=1 sm=1 tr=0 ts=69d8bf1b cx=c_pps\n a=vVfyC5vLCtgYJKYeQD43oA==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17\n a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8\n a=NzvCGKM8m0lGn9t9IsgA:9 a=O8hF6Hzn-FEA:10 a=rl5im9kqc5Lf4LNbBjHf:22", "X-Proofpoint-GUID": "boWP8y1pctRZZtKDfW9qJlLkBMT7yQlw", "X-Proofpoint-ORIG-GUID": "boWP8y1pctRZZtKDfW9qJlLkBMT7yQlw", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDEwMDA4MSBTYWx0ZWRfX9UeRVB9ds7uh\n IdkFQC8okJJ1N/VN7cWyzzTllwd5beKWxq6SJsD+eJcfI8/pnIuZNnCHazoh5MfkH6gnImy0PQD\n LdpK4axuqA9f9kdMuszTiYOv1twPd6Fxoh2gx34mnXxWpbqpW6CGxaellLijCd+fb+0lSSZrNa/\n g9S67Fbz8wThnrKEp+zFBrffoLrSUJmABBdnu5BPwMUUmO//i1K+JC1oqwSIM12bTRiMtX7RtwF\n HcoJ+hR0RnMLxNtadSTng2CeOCGbC3OKejTUrl75rI/5lAQ5Ai1lpedTRUo/a//XnYIyp/W44AY\n Sr1LTRoYllT8fUxc3NTHH/GmGwPPxWbtrEA1tmeSmJNbYCgNxwoizGPxKmsVUpt+igBfmqnxxji\n aLRApMMZ3TIYyKqYWwNBaR0R1Srl3+jGJUp85sCceqXo0IfrON/hSlRL6hIqlB3prYb+DlkUaPa\n QQcSlqUbU1tfqCGSxdw==", "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-04-10_02,2026-04-09_02,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n impostorscore=0 malwarescore=0 clxscore=1015 adultscore=0 priorityscore=1501\n lowpriorityscore=0 suspectscore=0 spamscore=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-2604010000 definitions=main-2604100081", "X-Mailman-Approved-At": "Fri, 10 Apr 2026 14:54:22 +0200", "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": "Add pinctrl driver for the TLMM block found in the ipq5210 SoC.\n\nSigned-off-by: Varadarajan Narayanan <varadarajan.narayanan@oss.qualcomm.com>\n---\n drivers/pinctrl/qcom/Kconfig | 8 +\n drivers/pinctrl/qcom/Makefile | 1 +\n drivers/pinctrl/qcom/pinctrl-ipq5210.c | 349 +++++++++++++++++++++++++\n 3 files changed, 358 insertions(+)\n create mode 100644 drivers/pinctrl/qcom/pinctrl-ipq5210.c", "diff": "diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig\nindex 580308621b1..d30526b0167 100644\n--- a/drivers/pinctrl/qcom/Kconfig\n+++ b/drivers/pinctrl/qcom/Kconfig\n@@ -38,6 +38,14 @@ config PINCTRL_QCOM_IPQ4019\n \t Say Y here to enable support for pinctrl on the IPQ4019 SoC,\n \t as well as the associated GPIO driver.\n \n+config PINCTRL_QCOM_IPQ5210\n+\tbool \"Qualcomm IPQ5210 Pinctrl\"\n+\tdefault y if PINCTRL_QCOM_GENERIC\n+\tselect PINCTRL_QCOM\n+\thelp\n+\t Say Y here to enable support for pinctrl on the IPQ5210 SoC,\n+\t as well as the associated GPIO driver.\n+\n config PINCTRL_QCOM_IPQ5424\n \tbool \"Qualcomm IPQ5424 Pinctrl\"\n \tdefault y if PINCTRL_QCOM_GENERIC\ndiff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile\nindex b5a111605ed..34ae56bb007 100644\n--- a/drivers/pinctrl/qcom/Makefile\n+++ b/drivers/pinctrl/qcom/Makefile\n@@ -5,6 +5,7 @@\n obj-$(CONFIG_PINCTRL_QCOM) += pinctrl-qcom.o\n obj-$(CONFIG_PINCTRL_QCOM_APQ8016) += pinctrl-apq8016.o\n obj-$(CONFIG_PINCTRL_QCOM_IPQ4019) += pinctrl-ipq4019.o\n+obj-$(CONFIG_PINCTRL_QCOM_IPQ5210) += pinctrl-ipq5210.o\n obj-$(CONFIG_PINCTRL_QCOM_IPQ5424) += pinctrl-ipq5424.o\n obj-$(CONFIG_PINCTRL_QCOM_IPQ9574) += pinctrl-ipq9574.o\n obj-$(CONFIG_PINCTRL_QCOM_APQ8096) += pinctrl-apq8096.o\ndiff --git a/drivers/pinctrl/qcom/pinctrl-ipq5210.c b/drivers/pinctrl/qcom/pinctrl-ipq5210.c\nnew file mode 100644\nindex 00000000000..2baff884bf3\n--- /dev/null\n+++ b/drivers/pinctrl/qcom/pinctrl-ipq5210.c\n@@ -0,0 +1,349 @@\n+// SPDX-License-Identifier: GPL-2.0\n+/*\n+ * Qualcomm IPQ5210 pinctrl\n+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n+ */\n+\n+#include <dm.h>\n+\n+#include \"pinctrl-qcom.h\"\n+\n+#define MAX_PIN_NAME_LEN 32\n+static char pin_name[MAX_PIN_NAME_LEN] __section(\".data\");\n+\n+enum ipq5210_functions {\n+\tmsm_mux_atest_char_start,\n+\tmsm_mux_atest_char_status0,\n+\tmsm_mux_atest_char_status1,\n+\tmsm_mux_atest_char_status2,\n+\tmsm_mux_atest_char_status3,\n+\tmsm_mux_atest_tic_en,\n+\tmsm_mux_audio_pri,\n+\tmsm_mux_audio_pri_mclk_out0,\n+\tmsm_mux_audio_pri_mclk_in0,\n+\tmsm_mux_audio_pri_mclk_out1,\n+\tmsm_mux_audio_pri_mclk_in1,\n+\tmsm_mux_audio_pri_mclk_out2,\n+\tmsm_mux_audio_pri_mclk_in2,\n+\tmsm_mux_audio_pri_mclk_out3,\n+\tmsm_mux_audio_pri_mclk_in3,\n+\tmsm_mux_audio_sec,\n+\tmsm_mux_audio_sec_mclk_out0,\n+\tmsm_mux_audio_sec_mclk_in0,\n+\tmsm_mux_audio_sec_mclk_out1,\n+\tmsm_mux_audio_sec_mclk_in1,\n+\tmsm_mux_audio_sec_mclk_out2,\n+\tmsm_mux_audio_sec_mclk_in2,\n+\tmsm_mux_audio_sec_mclk_out3,\n+\tmsm_mux_audio_sec_mclk_in3,\n+\tmsm_mux_core_voltage_0,\n+\tmsm_mux_cri_trng0,\n+\tmsm_mux_cri_trng1,\n+\tmsm_mux_cri_trng2,\n+\tmsm_mux_cri_trng3,\n+\tmsm_mux_dbg_out_clk,\n+\tmsm_mux_dg_out,\n+\tmsm_mux_gcc_plltest_bypassnl,\n+\tmsm_mux_gcc_plltest_resetn,\n+\tmsm_mux_gcc_tlmm,\n+\tmsm_mux_gpio,\n+\tmsm_mux_led0,\n+\tmsm_mux_led1,\n+\tmsm_mux_led2,\n+\tmsm_mux_mdc_mst,\n+\tmsm_mux_mdc_slv0,\n+\tmsm_mux_mdc_slv1,\n+\tmsm_mux_mdc_slv2,\n+\tmsm_mux_mdio_mst,\n+\tmsm_mux_mdio_slv0,\n+\tmsm_mux_mdio_slv1,\n+\tmsm_mux_mdio_slv2,\n+\tmsm_mux_mux_tod_out,\n+\tmsm_mux_pcie0_clk_req_n,\n+\tmsm_mux_pcie0_wake,\n+\tmsm_mux_pcie1_clk_req_n,\n+\tmsm_mux_pcie1_wake,\n+\tmsm_mux_pll_test,\n+\tmsm_mux_pon_active_led,\n+\tmsm_mux_pon_mux_sel,\n+\tmsm_mux_pon_rx,\n+\tmsm_mux_pon_rx_los,\n+\tmsm_mux_pon_tx,\n+\tmsm_mux_pon_tx_burst,\n+\tmsm_mux_pon_tx_dis,\n+\tmsm_mux_pon_tx_fault,\n+\tmsm_mux_pon_tx_sd,\n+\tmsm_mux_gpn_rx_los,\n+\tmsm_mux_gpn_tx_burst,\n+\tmsm_mux_gpn_tx_dis,\n+\tmsm_mux_gpn_tx_fault,\n+\tmsm_mux_gpn_tx_sd,\n+\tmsm_mux_pps,\n+\tmsm_mux_pwm0,\n+\tmsm_mux_pwm1,\n+\tmsm_mux_pwm2,\n+\tmsm_mux_pwm3,\n+\tmsm_mux_qdss_cti_trig_in_a0,\n+\tmsm_mux_qdss_cti_trig_in_a1,\n+\tmsm_mux_qdss_cti_trig_in_b0,\n+\tmsm_mux_qdss_cti_trig_in_b1,\n+\tmsm_mux_qdss_cti_trig_out_a0,\n+\tmsm_mux_qdss_cti_trig_out_a1,\n+\tmsm_mux_qdss_cti_trig_out_b0,\n+\tmsm_mux_qdss_cti_trig_out_b1,\n+\tmsm_mux_qdss_traceclk_a,\n+\tmsm_mux_qdss_tracectl_a,\n+\tmsm_mux_qdss_tracedata_a,\n+\tmsm_mux_qrng_rosc0,\n+\tmsm_mux_qrng_rosc1,\n+\tmsm_mux_qrng_rosc2,\n+\tmsm_mux_qspi_data,\n+\tmsm_mux_qspi_clk,\n+\tmsm_mux_qspi_cs_n,\n+\tmsm_mux_qup_se0,\n+\tmsm_mux_qup_se1,\n+\tmsm_mux_qup_se2,\n+\tmsm_mux_qup_se3,\n+\tmsm_mux_qup_se4,\n+\tmsm_mux_qup_se5,\n+\tmsm_mux_qup_se5_l1,\n+\tmsm_mux_resout,\n+\tmsm_mux_rx_los0,\n+\tmsm_mux_rx_los1,\n+\tmsm_mux_rx_los2,\n+\tmsm_mux_sdc_clk,\n+\tmsm_mux_sdc_cmd,\n+\tmsm_mux_sdc_data,\n+\tmsm_mux_tsens_max,\n+\tmsm_mux__,\n+};\n+\n+#define MSM_PIN_FUNCTION(fname)\t\t\t\t\\\n+\t[msm_mux_##fname] = {#fname, msm_mux_##fname}\n+\n+static const struct pinctrl_function msm_pinctrl_functions[] = {\n+\tMSM_PIN_FUNCTION(atest_char_start),\n+\tMSM_PIN_FUNCTION(atest_char_status0),\n+\tMSM_PIN_FUNCTION(atest_char_status1),\n+\tMSM_PIN_FUNCTION(atest_char_status2),\n+\tMSM_PIN_FUNCTION(atest_char_status3),\n+\tMSM_PIN_FUNCTION(atest_tic_en),\n+\tMSM_PIN_FUNCTION(audio_pri),\n+\tMSM_PIN_FUNCTION(audio_pri_mclk_out0),\n+\tMSM_PIN_FUNCTION(audio_pri_mclk_in0),\n+\tMSM_PIN_FUNCTION(audio_pri_mclk_out1),\n+\tMSM_PIN_FUNCTION(audio_pri_mclk_in1),\n+\tMSM_PIN_FUNCTION(audio_pri_mclk_out2),\n+\tMSM_PIN_FUNCTION(audio_pri_mclk_in2),\n+\tMSM_PIN_FUNCTION(audio_pri_mclk_out3),\n+\tMSM_PIN_FUNCTION(audio_pri_mclk_in3),\n+\tMSM_PIN_FUNCTION(audio_sec),\n+\tMSM_PIN_FUNCTION(audio_sec_mclk_out0),\n+\tMSM_PIN_FUNCTION(audio_sec_mclk_in0),\n+\tMSM_PIN_FUNCTION(audio_sec_mclk_out1),\n+\tMSM_PIN_FUNCTION(audio_sec_mclk_in1),\n+\tMSM_PIN_FUNCTION(audio_sec_mclk_out2),\n+\tMSM_PIN_FUNCTION(audio_sec_mclk_in2),\n+\tMSM_PIN_FUNCTION(audio_sec_mclk_out3),\n+\tMSM_PIN_FUNCTION(audio_sec_mclk_in3),\n+\tMSM_PIN_FUNCTION(core_voltage_0),\n+\tMSM_PIN_FUNCTION(cri_trng0),\n+\tMSM_PIN_FUNCTION(cri_trng1),\n+\tMSM_PIN_FUNCTION(cri_trng2),\n+\tMSM_PIN_FUNCTION(cri_trng3),\n+\tMSM_PIN_FUNCTION(dbg_out_clk),\n+\tMSM_PIN_FUNCTION(dg_out),\n+\tMSM_PIN_FUNCTION(gcc_plltest_bypassnl),\n+\tMSM_PIN_FUNCTION(gcc_plltest_resetn),\n+\tMSM_PIN_FUNCTION(gcc_tlmm),\n+\tMSM_PIN_FUNCTION(gpio),\n+\tMSM_PIN_FUNCTION(led0),\n+\tMSM_PIN_FUNCTION(led1),\n+\tMSM_PIN_FUNCTION(led2),\n+\tMSM_PIN_FUNCTION(mdc_mst),\n+\tMSM_PIN_FUNCTION(mdc_slv0),\n+\tMSM_PIN_FUNCTION(mdc_slv1),\n+\tMSM_PIN_FUNCTION(mdc_slv2),\n+\tMSM_PIN_FUNCTION(mdio_mst),\n+\tMSM_PIN_FUNCTION(mdio_slv0),\n+\tMSM_PIN_FUNCTION(mdio_slv1),\n+\tMSM_PIN_FUNCTION(mdio_slv2),\n+\tMSM_PIN_FUNCTION(mux_tod_out),\n+\tMSM_PIN_FUNCTION(pcie0_clk_req_n),\n+\tMSM_PIN_FUNCTION(pcie0_wake),\n+\tMSM_PIN_FUNCTION(pcie1_clk_req_n),\n+\tMSM_PIN_FUNCTION(pcie1_wake),\n+\tMSM_PIN_FUNCTION(pll_test),\n+\tMSM_PIN_FUNCTION(pon_active_led),\n+\tMSM_PIN_FUNCTION(pon_mux_sel),\n+\tMSM_PIN_FUNCTION(pon_rx),\n+\tMSM_PIN_FUNCTION(pon_rx_los),\n+\tMSM_PIN_FUNCTION(pon_tx),\n+\tMSM_PIN_FUNCTION(pon_tx_burst),\n+\tMSM_PIN_FUNCTION(pon_tx_dis),\n+\tMSM_PIN_FUNCTION(pon_tx_fault),\n+\tMSM_PIN_FUNCTION(pon_tx_sd),\n+\tMSM_PIN_FUNCTION(gpn_rx_los),\n+\tMSM_PIN_FUNCTION(gpn_tx_burst),\n+\tMSM_PIN_FUNCTION(gpn_tx_dis),\n+\tMSM_PIN_FUNCTION(gpn_tx_fault),\n+\tMSM_PIN_FUNCTION(gpn_tx_sd),\n+\tMSM_PIN_FUNCTION(pps),\n+\tMSM_PIN_FUNCTION(pwm0),\n+\tMSM_PIN_FUNCTION(pwm1),\n+\tMSM_PIN_FUNCTION(pwm2),\n+\tMSM_PIN_FUNCTION(pwm3),\n+\tMSM_PIN_FUNCTION(qdss_cti_trig_in_a0),\n+\tMSM_PIN_FUNCTION(qdss_cti_trig_in_a1),\n+\tMSM_PIN_FUNCTION(qdss_cti_trig_in_b0),\n+\tMSM_PIN_FUNCTION(qdss_cti_trig_in_b1),\n+\tMSM_PIN_FUNCTION(qdss_cti_trig_out_a0),\n+\tMSM_PIN_FUNCTION(qdss_cti_trig_out_a1),\n+\tMSM_PIN_FUNCTION(qdss_cti_trig_out_b0),\n+\tMSM_PIN_FUNCTION(qdss_cti_trig_out_b1),\n+\tMSM_PIN_FUNCTION(qdss_traceclk_a),\n+\tMSM_PIN_FUNCTION(qdss_tracectl_a),\n+\tMSM_PIN_FUNCTION(qdss_tracedata_a),\n+\tMSM_PIN_FUNCTION(qrng_rosc0),\n+\tMSM_PIN_FUNCTION(qrng_rosc1),\n+\tMSM_PIN_FUNCTION(qrng_rosc2),\n+\tMSM_PIN_FUNCTION(qspi_data),\n+\tMSM_PIN_FUNCTION(qspi_clk),\n+\tMSM_PIN_FUNCTION(qspi_cs_n),\n+\tMSM_PIN_FUNCTION(qup_se0),\n+\tMSM_PIN_FUNCTION(qup_se1),\n+\tMSM_PIN_FUNCTION(qup_se2),\n+\tMSM_PIN_FUNCTION(qup_se3),\n+\tMSM_PIN_FUNCTION(qup_se4),\n+\tMSM_PIN_FUNCTION(qup_se5),\n+\tMSM_PIN_FUNCTION(qup_se5_l1),\n+\tMSM_PIN_FUNCTION(resout),\n+\tMSM_PIN_FUNCTION(rx_los0),\n+\tMSM_PIN_FUNCTION(rx_los1),\n+\tMSM_PIN_FUNCTION(rx_los2),\n+\tMSM_PIN_FUNCTION(sdc_clk),\n+\tMSM_PIN_FUNCTION(sdc_cmd),\n+\tMSM_PIN_FUNCTION(sdc_data),\n+\tMSM_PIN_FUNCTION(tsens_max),\n+};\n+\n+typedef unsigned int msm_pin_function[10];\n+\n+#define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9) \\\n+\t[id] = { msm_mux_gpio, /* gpio mode */\t\\\n+\t\t\tmsm_mux_##f1,\t\t\t\\\n+\t\t\tmsm_mux_##f2,\t\t\t\\\n+\t\t\tmsm_mux_##f3,\t\t\t\\\n+\t\t\tmsm_mux_##f4,\t\t\t\\\n+\t\t\tmsm_mux_##f5,\t\t\t\\\n+\t\t\tmsm_mux_##f6,\t\t\t\\\n+\t\t\tmsm_mux_##f7,\t\t\t\\\n+\t\t\tmsm_mux_##f8,\t\t\t\\\n+\t\t\tmsm_mux_##f9,\t\t\t\\\n+\t}\n+\n+static const msm_pin_function ipq5210_pin_functions[] = {\n+\tPINGROUP(0, sdc_data, qspi_data, pwm2, _, _, _, _, _, _),\n+\tPINGROUP(1, sdc_data, qspi_data, pwm2, _, _, _, _, _, _),\n+\tPINGROUP(2, sdc_data, qspi_data, pwm2, _, _, _, _, _, _),\n+\tPINGROUP(3, sdc_data, qspi_data, pwm2, _, _, _, _, _, _),\n+\tPINGROUP(4, sdc_cmd, qspi_cs_n, _, _, _, _, _, _, _),\n+\tPINGROUP(5, sdc_clk, qspi_clk, _, _, _, _, _, _, _),\n+\tPINGROUP(6, qup_se0, led0, pwm1, _, cri_trng0, qdss_tracedata_a, _, _, _),\n+\tPINGROUP(7, qup_se0, led1, pwm1, _, cri_trng1, qdss_tracedata_a, _, _, _),\n+\tPINGROUP(8, qup_se0, pwm1, audio_pri_mclk_out2, audio_pri_mclk_in2, _, cri_trng2, qdss_tracedata_a, _, _),\n+\tPINGROUP(9, qup_se0, led2, pwm1, _, cri_trng3, qdss_tracedata_a, _, _, _),\n+\tPINGROUP(10, pon_rx_los, qup_se3, pwm0, _, _, qdss_tracedata_a, _, _, _),\n+\tPINGROUP(11, pon_active_led, qup_se3, pwm0, _, _, qdss_tracedata_a, _, _, _),\n+\tPINGROUP(12, pon_tx_dis, qup_se2, pwm0, audio_pri_mclk_out0, audio_pri_mclk_in0, _, qrng_rosc0, qdss_tracedata_a, _),\n+\tPINGROUP(13, gpn_tx_dis, qup_se2, pwm0, audio_pri_mclk_out3, audio_pri_mclk_in3, _, qrng_rosc1, qdss_tracedata_a, _),\n+\tPINGROUP(14, pon_tx_burst, qup_se0, _, qrng_rosc2, qdss_tracedata_a, _, _, _, _),\n+\tPINGROUP(15, pon_tx, qup_se0, _, qdss_tracedata_a, _, _, _, _, _),\n+\tPINGROUP(16, pon_tx_sd, audio_sec_mclk_out1, audio_sec_mclk_in1, qdss_cti_trig_out_b0, _, _, _, _, _),\n+\tPINGROUP(17, pon_tx_fault, audio_sec_mclk_out0, audio_sec_mclk_in0, _, _, _, _, _, _),\n+\tPINGROUP(18, pps, pll_test, _, _, _, _, _, _, _),\n+\tPINGROUP(19, mux_tod_out, audio_pri_mclk_out1, audio_pri_mclk_in1, _, _, _, _, _, _),\n+\tPINGROUP(20, qup_se2, mdc_slv1, tsens_max, qdss_tracedata_a, _, _, _, _, _),\n+\tPINGROUP(21, qup_se2, mdio_slv1, qdss_tracedata_a, _, _, _, _, _, _),\n+\tPINGROUP(22, core_voltage_0, qup_se3, pwm3, _, _, _, _, _, _),\n+\tPINGROUP(23, led0, qup_se3, dbg_out_clk, qdss_traceclk_a, _, _, _, _, _),\n+\tPINGROUP(24, _, _, _, _, _, _, _, _, _),\n+\tPINGROUP(25, _, _, _, _, _, _, _, _, _),\n+\tPINGROUP(26, mdc_mst, led2, _, qdss_tracectl_a, _, _, _, _, _),\n+\tPINGROUP(27, mdio_mst, led1, _, _, _, _, _, _, _),\n+\tPINGROUP(28, pcie1_clk_req_n, qup_se1, _, _, qdss_cti_trig_out_a0, _, _, _, _),\n+\tPINGROUP(29, _, _, _, _, _, _, _, _, _),\n+\tPINGROUP(30, pcie1_wake, qup_se1, _, _, qdss_cti_trig_in_a0, _, _, _, _),\n+\tPINGROUP(31, pcie0_clk_req_n, mdc_slv0, _, qdss_cti_trig_out_a1, _, _, _, _, _),\n+\tPINGROUP(32, _, _, _, _, _, _, _, _, _),\n+\tPINGROUP(33, pcie0_wake, mdio_slv0, qdss_cti_trig_in_a1, _, _, _, _, _, _),\n+\tPINGROUP(34, audio_pri, atest_char_status0, qdss_cti_trig_in_b0, _, _, _, _, _, _),\n+\tPINGROUP(35, audio_pri, rx_los2, atest_char_status1, qdss_cti_trig_out_b1, _, _, _, _, _),\n+\tPINGROUP(36, audio_pri, _, rx_los1, atest_char_status2, _, _, _, _, _),\n+\tPINGROUP(37, audio_pri, rx_los0, atest_char_status3, _, qdss_cti_trig_in_b1, _, _, _, _),\n+\tPINGROUP(38, qup_se1, led2, gcc_plltest_bypassnl, qdss_tracedata_a, _, _, _, _, _),\n+\tPINGROUP(39, qup_se1, led1, led0, gcc_tlmm, qdss_tracedata_a, _, _, _, _),\n+\tPINGROUP(40, qup_se4, rx_los2, audio_sec, gcc_plltest_resetn, qdss_tracedata_a, _, _, _, _),\n+\tPINGROUP(41, qup_se4, rx_los1, audio_sec, qdss_tracedata_a, _, _, _, _, _),\n+\tPINGROUP(42, qup_se4, rx_los0, audio_sec, atest_tic_en, _, _, _, _, _),\n+\tPINGROUP(43, qup_se4, audio_sec, _, _, _, _, _, _, _),\n+\tPINGROUP(44, resout, _, _, _, _, _, _, _, _),\n+\tPINGROUP(45, pon_mux_sel, _, _, _, _, _, _, _, _),\n+\tPINGROUP(46, dg_out, atest_char_start, _, _, _, _, _, _, _),\n+\tPINGROUP(47, gpn_rx_los, mdc_slv2, qup_se5, _, _, _, _, _, _),\n+\tPINGROUP(48, pon_rx, qup_se5, _, _, _, _, _, _, _),\n+\tPINGROUP(49, gpn_tx_fault, mdio_slv2, qup_se5, audio_sec_mclk_out2, audio_sec_mclk_in2, _, _, _, _),\n+\tPINGROUP(50, gpn_tx_sd, qup_se5, audio_sec_mclk_out3, audio_sec_mclk_in3, _, _, _, _, _),\n+\tPINGROUP(51, gpn_tx_burst, qup_se5, _, _, _, _, _, _, _),\n+\tPINGROUP(52, qup_se2, qup_se5, qup_se4, qup_se5_l1, _, _, _, _, _),\n+\tPINGROUP(53, qup_se2, qup_se4, qup_se5_l1, _, _, _, _, _, _),\n+};\n+\n+static const char *ipq5210_get_function_name(struct udevice *dev, uint selector)\n+{\n+\treturn msm_pinctrl_functions[selector].name;\n+}\n+\n+static const char *ipq5210_get_pin_name(struct udevice *dev, uint selector)\n+{\n+\tsnprintf(pin_name, MAX_PIN_NAME_LEN, \"gpio%u\", selector);\n+\treturn pin_name;\n+}\n+\n+static int ipq5210_get_function_mux(unsigned int pin, uint selector)\n+{\n+\tunsigned int i;\n+\tconst msm_pin_function *func = ipq5210_pin_functions + pin;\n+\n+\tfor (i = 0; i < 10; i++)\n+\t\tif ((*func)[i] == selector)\n+\t\t\treturn i;\n+\n+\tpr_err(\"Can't find requested function for pin %u pin\\n\", pin);\n+\treturn -EINVAL;\n+}\n+\n+static const struct msm_pinctrl_data ipq5210_data = {\n+\t.pin_data = {\n+\t\t.pin_count = 53,\n+\t\t.special_pins_start = 53, /* There are no special pins */\n+\t},\n+\t.functions_count = ARRAY_SIZE(msm_pinctrl_functions),\n+\t.get_function_name = ipq5210_get_function_name,\n+\t.get_function_mux = ipq5210_get_function_mux,\n+\t.get_pin_name = ipq5210_get_pin_name,\n+};\n+\n+static const struct udevice_id msm_pinctrl_ids[] = {\n+\t{ .compatible = \"qcom,ipq5210-tlmm\", .data = (ulong)&ipq5210_data },\n+\t{ /* Sentinal */ }\n+};\n+\n+U_BOOT_DRIVER(pinctrl_ipq5210) = {\n+\t.name\t\t= \"pinctrl_ipq5210\",\n+\t.id\t\t= UCLASS_NOP,\n+\t.of_match\t= msm_pinctrl_ids,\n+\t.ops\t\t= &msm_pinctrl_ops,\n+\t.bind\t\t= msm_pinctrl_bind,\n+\t.flags = DM_FLAG_PRE_RELOC,\n+};\n", "prefixes": [ "v2", "4/9" ] }