From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7B836CA0FFE for ; Thu, 28 Aug 2025 22:07:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=jR/UQSU1rnoJqXet1GHMjYE6RZmBJb0DIB3rVaGeplw=; b=ZYOVWlcmb97zGNa0pPyXAZXeTu ojOunPgOqcqTjjK5R5xE5UrL6W3NY2Pzu1SMEiHJDkobH5kbZXBtI0foKMHzoPv+vnZ3iZbufwrIZ ACndQgSvgSj+ez5MNNKFzPkvOqOVvBMjIXrrz+0sMLWN6K4M53mrRqeg09QQk/2CX9TXyvGvmidvo A3mzhYBp5mbzKnj3Nk6Y8+poYlrOjZXXODUPDOnmHzEkhtDgXKkHg4RnwwR9D+TXV/OT70LOVhuNx UginRIX5FhOlV+O/9O/iWvFD0qLeJRn5zfQyl678VR1SMVh1RN+gSqszy1pV0GTTocYNVLidx1zV4 GQW7eWsw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1urkly-00000003S3n-15c0; Thu, 28 Aug 2025 22:07:10 +0000 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1urf38-00000002BJx-1pEn for linux-arm-kernel@lists.infradead.org; Thu, 28 Aug 2025 16:00:31 +0000 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-3ceb9c3d98cso257322f8f.0 for ; Thu, 28 Aug 2025 09:00:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756396829; x=1757001629; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=jR/UQSU1rnoJqXet1GHMjYE6RZmBJb0DIB3rVaGeplw=; b=O8E2lrUFQhP341u3SRorLNQAasH5vByqDo0x+u9GLg72Tq7tqy9gmWN/5DKknEZBhN E6hI0Q9xVcw7bNIK0okb4w3GkRGxwceN49bz7/Pb7FzMHnwUYy/l/iWZt+PwnumVw3RZ T8dxShjaJLVGrydHDeEP4o/FQMd70Jr0Q5vQnyEYKxSmzlLb9gZxDDYZA9xbSCIKHkA2 rNpP9PGtlblu30oan+neE4dNyAi47p9LWfF/rA5AQ1OzMsz0aRh0Xt0qwJxd94eQ+A5W bas36s2Yx/AVpc7bKBp3YajEf6op5qsbuSpG9BrzYi5DAtA1iwVpnjYVCLQ0Qk8ZDKV3 ebkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756396829; x=1757001629; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jR/UQSU1rnoJqXet1GHMjYE6RZmBJb0DIB3rVaGeplw=; b=YiJfSXEzFZC7DPzSwi9vqoqcHhKpMhpyO7yTjubtgSrihBvRTm5Z8U1e/9vtZvjXbA J6IiAbgjsMfZFCqCAc4pnsmivSsFycaL0ntWqtgsdgx/NdVkh5V71ZberbhCVXAcivbR Ml9N1PVwcLiGCR02keDGGWEvUhmu+HJiqW/3A066ggA9kpk8/g5Sgm6qZrIBVybVV5BI MQi0ncBpqcqq7f0E8TbPlk2lkl5Sqv8Vxp+p/TY96ni2oQ3Lh6bXZTTfbHv3A9HPWAZ4 s8iVRVr5BlxJddBCtREqPPnx7A9Jpu5TNDQUyauWcDy6P4R3RA+NwVOepS1szamXwNxO HOBg== X-Forwarded-Encrypted: i=1; AJvYcCUPASFNPeGQOdzmfp1/1sLv/g352V7NcYcyJJKC3klL1nFgVQA/i0LqLcZAIlKHbseG/1y6xfCB7dektWk4NHbN@lists.infradead.org X-Gm-Message-State: AOJu0YwfV5JnogGpJ3sjKiGklFbHYZCza77HCgvOxgpZ8Mq5cFMFAk5Y zpp3XfcbeMJsQfnqwv00PUq9NN1E5XTq/gJsCjJD4l6RbRx3SGkTH1rfTy0dY18IQmc= X-Gm-Gg: ASbGnctPV700QPsp2wDJAVRInT17WVlrhnVgoh5vnN5FZroBdD7kyGRE1R2F6wYWHAy pffRdDWNaXfVCVCtU1IK2TFlpKtAIq1fHFxGKU96/y/uSDLuc8H66/++AVCwmIqpZs07lPZLm+E LfgwlTGDfXVywJy/0FTOHXsEOQsQTrKRWIxpWBnHF2ZehqIuD0zOx2clotRmMXSj+fjlRE66x6f jKsPAB3HBg9VrWJIh5r0yI/0OfZkgq7MqFn1Sbkk5dZv0IHy1HAk3khjB2YY1o5XhD+MAGDmbnx duwlmkf5bgCv5W+l99MykQUBEglEW79yFPnb6RjQFsiKtykBDPkQ1W0aan0zpGL7NC5tI1cO/md PcYT1rL9nvJ39OINAvQ== X-Google-Smtp-Source: AGHT+IHpa7seq9vvwG4pSrNyoWglcHVRKIa3k9MGizj9olBncMjomjsG4dZCZ0gf35TjhrILqQH5rw== X-Received: by 2002:a05:6000:4029:b0:3c3:806c:b82f with SMTP id ffacd0b85a97d-3c5dd0ecf8amr20776060f8f.58.1756396828557; Thu, 28 Aug 2025 09:00:28 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:4933:4d7c:cf69:9502]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b6f0c6fe5sm80211675e9.5.2025.08.28.09.00.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Aug 2025 09:00:28 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 28 Aug 2025 18:00:14 +0200 Subject: [PATCH v6 06/15] pinctrl: imx: don't access the pin function radix tree directly MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250828-pinctrl-gpio-pinfuncs-v6-6-c9abb6bdb689@linaro.org> References: <20250828-pinctrl-gpio-pinfuncs-v6-0-c9abb6bdb689@linaro.org> In-Reply-To: <20250828-pinctrl-gpio-pinfuncs-v6-0-c9abb6bdb689@linaro.org> To: Linus Walleij , Bjorn Andersson , Konrad Dybcio , Alexey Klimov , Lorenzo Bianconi , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Paul Cercueil , Kees Cook , Andy Shevchenko , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Dong Aisheng , Fabio Estevam , Shawn Guo , Jacky Bai , Pengutronix Kernel Team , NXP S32 Linux Team , Sascha Hauer , Tony Lindgren , Haojian Zhuang , Geert Uytterhoeven , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Neil Armstrong , Mark Brown Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-hardening@vger.kernel.org, linux-mm@kvack.org, imx@lists.linux.dev, linux-omap@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3140; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=64CEOM/GWFRZVaWr+uKwrz1KsAW3NNZpIdWvwWCf200=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBosH0NaAPsNFFrpH1CGMcLygHSJdcPneCN6Unyj uWMtG9dPUOJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaLB9DQAKCRARpy6gFHHX csz2D/9MgJP+ectOeSj5tPh3IRoQSIVu4AU0U2BIk9qLJsstYn5YRISv7Lr58AGRakRZh0m8/iL nNYJSQ98/gglKMupuS/yKusX9iGKVWnw8cqQtR2qBPGmRcImx2/9e7HLfz7CCVT/iDAjPPeMjUg YyeBqbeDoAKR72CednspSFx12VxQ7Ja4n65O2y2fjtejtwiGFuNvud6b8+pa/eKxHeIkigHEh5/ T71+1u33HaK5IxJVGK5qUbh7pJm+lSgmHzuPOJN9R8CcQO6lPBSWP9VXM63VfHNUfkyoPokJSyz Sxf/B6Qkyzd49YG3csk8gtZiCCKGeJeBgbEt5oY7bbuS4sOICYGYc42MEa1akallSWRvGv6LRxt VSBbX2tu/t5fI8EdOgROdf0H+VFhKPpz5Nytk6raLEJDU0dwyqO+Gnj8gGhHxOb8i3xBVJAN3+e oE6PlAYq1yoX/GSVH5H4ADkWHVGM922imRvR15JI7TpVxnLWaGZ0chIV87cWv3rtvcLtI5mW2Fr B+7CeIdbYV9gHFjqLi6dmVbK4CJXBZS8z/5DqhmeKNRvDwYkxvZBUfHoz6MdXw3oLpMfA7kO2Ar g9WkATffjdMY9P7gz7AyeDLdWVlb4LSx5uyzu3rOuNrmxYeEg//XgZ5loqLh0eTb8Oth0yRUqaa tb3/62Fap1QUnSg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250828_090030_486685_CE3FC4E8 X-CRM114-Status: GOOD ( 20.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Bartosz Golaszewski The radix tree containing pin function descriptors should not be accessed directly by drivers. There are dedicated functions for it. I suppose this driver does it so that the memory containing the function description is not duplicated but we're going to address that shortly so convert it to using generic pinctrl APIs. Signed-off-by: Bartosz Golaszewski --- drivers/pinctrl/freescale/pinctrl-imx.c | 39 +++++++++++++++------------------ 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index 18de31328540458b7f7e8e2e539a39d61829deb9..3d626d8c9ae9ebd5f7eb76216924c46b34233749 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -580,33 +580,38 @@ static int imx_pinctrl_parse_functions(struct device_node *np, u32 index) { struct pinctrl_dev *pctl = ipctl->pctl; - struct function_desc *func; + struct pinfunction *func; struct group_desc *grp; const char **group_names; + int ret; u32 i; dev_dbg(pctl->dev, "parse function(%d): %pOFn\n", index, np); - func = pinmux_generic_get_function(pctl, index); + func = devm_kzalloc(ipctl->dev, sizeof(*func), GFP_KERNEL); if (!func) - return -EINVAL; + return -ENOMEM; /* Initialise function */ - func->func.name = np->name; - func->func.ngroups = of_get_child_count(np); - if (func->func.ngroups == 0) { + func->name = np->name; + func->ngroups = of_get_child_count(np); + if (func->ngroups == 0) { dev_info(ipctl->dev, "no groups defined in %pOF\n", np); return -EINVAL; } - group_names = devm_kcalloc(ipctl->dev, func->func.ngroups, - sizeof(*func->func.groups), GFP_KERNEL); + group_names = devm_kcalloc(ipctl->dev, func->ngroups, + sizeof(*func->groups), GFP_KERNEL); if (!group_names) return -ENOMEM; i = 0; for_each_child_of_node_scoped(np, child) group_names[i++] = child->name; - func->func.groups = group_names; + func->groups = group_names; + + ret = pinmux_generic_add_pinfunction(pctl, func, NULL); + if (ret < 0) + return ret; i = 0; for_each_child_of_node_scoped(np, child) { @@ -615,6 +620,10 @@ static int imx_pinctrl_parse_functions(struct device_node *np, return -ENOMEM; mutex_lock(&ipctl->mutex); + /* + * FIXME: This should use pinctrl_generic_add_group() and not + * access the private radix tree directly. + */ radix_tree_insert(&pctl->pin_group_tree, ipctl->group_index++, grp); mutex_unlock(&ipctl->mutex); @@ -669,18 +678,6 @@ static int imx_pinctrl_probe_dt(struct platform_device *pdev, } } - for (i = 0; i < nfuncs; i++) { - struct function_desc *function; - - function = devm_kzalloc(&pdev->dev, sizeof(*function), - GFP_KERNEL); - if (!function) - return -ENOMEM; - - mutex_lock(&ipctl->mutex); - radix_tree_insert(&pctl->pin_function_tree, i, function); - mutex_unlock(&ipctl->mutex); - } pctl->num_functions = nfuncs; ipctl->group_index = 0; -- 2.48.1