From nobody Sun Oct 5 00:16:35 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 98ECB2E54A9 for ; Tue, 12 Aug 2025 08:27:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754987243; cv=none; b=jLFMYLLUdHMNUQMQ/lxlQLh8cuvEi4MX9sAJFQhMVBwWvbQ1LCBtkJ5RTI0PHjuJ+IpQKR/QEJxi0n6Ejz70KjAS1GAfR/G+HNMzovdnE5jkEvG78ce82iBE+jz29h2bi58ak+2l56ZQqN4aGoF+TDF33MQYCeXrBbaLX5o6NnU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754987243; c=relaxed/simple; bh=NN8N64azTZ6Tm9oD0O4UPA4GBXyAY9HuPJ1OulPwzrQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m8BrLutWhdY/xECPPsFFipxA9joEuSFcDFORWiS0wvbnyhj107xX7EOF5q4Uf/RAyZnq05mtW3EzRKtYGjmrt5DqLqB44sSVQ1pMlGzJysnvPJLUAc51BycSjIgZjXAfk6OKatyYgsdzuctABBaffhA93wuyvTqNRZRWfo2gnhI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=AT2zV9KZ; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="AT2zV9KZ" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-459fdc391c6so24268195e9.3 for ; Tue, 12 Aug 2025 01:27:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1754987239; x=1755592039; darn=vger.kernel.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=EnhxaXfLWBAe5wxXyN7EB4a4qBStRGqZ5wQqNK1Gqy0=; b=AT2zV9KZCcgY4lPNqwXBx1+GbuveznMIOkMdpvSx7z5IqnVdAfM9GYT1jzCmqI8AB4 2iyNCJ3DtGxeuxtEXBw3ELfi5GNne5UpESl5Vqyj3FTe4TsXX4wa4h+iba4ogXpbbHZZ tFd4V7iOhlBtVugF4Widtc1i7jEQr4mqHoISjPjfQZzfnXWTRTiPrR9n6RCyox/7P8oa RyIQ4TfIrbPWTQtujY2/39fLZVAmjMEh0e/KAr1pFMdLcD8cjiVED29q4C9aQxOxpt3f AzF3EjFletg0zwoxhbpXOgb1XOgsnkT0y1bBl30P+hrU1O4IyxOTtqFZHNgUI6OR1gDW /W1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754987239; x=1755592039; 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=EnhxaXfLWBAe5wxXyN7EB4a4qBStRGqZ5wQqNK1Gqy0=; b=PEfickrDjPoKcFSo62W9ih8gnc9xKxzZ6qS6vNwsusKFo9Xp8zKHffkHDD9jYqQ9v6 hc1jFJyBEGwfLUFrmwr81mZDLxxeWOVOfWb/fhRIrgyA4VCBho6LQKE+WNGbSalxcehT prCTsSgoohUK7E1FtusZjsdpUJkQvtnB077dl++O3pw4p4ZEKZLlazKN4xdTrCTFF579 NdJpsnYwiRVenC4HohzmG3jkzxkKwobSzvyX2xavA2Yv963lVcDgYCTuzlvjpwdw0rmD Vjt7sLd8ujIjBjNCtF9oDn4diA8vs7/jhzMx00dowU49A7wPaX41QGxqWfCp1p9ziE6b ucGA== X-Forwarded-Encrypted: i=1; AJvYcCXp0qopb7WjGDuuNGDB/psnLiJyqYtKCW1re1H8zSWWcfttRjx/7aHVLM0IBzs2CKSl46DletWfWMn+4j8=@vger.kernel.org X-Gm-Message-State: AOJu0YxHzW4uZuucUf+wdjj3Z8K4/KpykVbGx6k7ydRYebyd7efVeZxT VGsR+4JxsruB5c0fyKgWkwbnj+Heu/q5oxWrkCLJgOFFVRItthqzDH7bctmFcl/KB38= X-Gm-Gg: ASbGncsv+jrgK68ZHivhoIWMMYi+HkTx/4hMLdK6F79hOQum0w2Dt4Z3zlSO0MMktJT dHOjUl5OgRVyZ20+vd6v0idZzlJNDBmQsMQxcM0kTRYDVXOxM/W773msFTrK6g4iCsVPMf/qW4P VMi3lRQw6xyTJMYfIlul0NXyK/spyASfzZqCX2D6RgkWV2Mh+7/NdWPjpWdyfW/LSatJwg9zPi+ ncvMkDyig1z+5BFaBByCXQzK934jf6L0bDajpnGe9oug4qTA5xdrIwAZDoh48/8LzAxQuAeOjLK Yo0Sh9JxapSguB2bBRN1jekreltBrQAzHMc4NkK+9TUnXpuejsmmwji0nT6s+yAdoHdKp0dkHUp z6yWl0gn8/G2VyJo= X-Google-Smtp-Source: AGHT+IHCxxphw0C1ysWW25fo60uK0xUciNoK6/brqWeyF0IqKEcM+9QCTW7mxqYhhnP5CYPiuHCuHA== X-Received: by 2002:a05:600c:4753:b0:43c:fc04:6d35 with SMTP id 5b1f17b1804b1-45a10b95677mr23101005e9.4.1754987238810; Tue, 12 Aug 2025 01:27:18 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:16c8:50:27fe:4d94]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c3b9386sm43549423f8f.18.2025.08.12.01.27.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Aug 2025 01:27:18 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 Aug 2025 10:27:05 +0200 Subject: [PATCH v4 06/15] pinctrl: imx: don't access the pin function radix tree directly Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250812-pinctrl-gpio-pinfuncs-v4-6-bb3906c55e64@linaro.org> References: <20250812-pinctrl-gpio-pinfuncs-v4-0-bb3906c55e64@linaro.org> In-Reply-To: <20250812-pinctrl-gpio-pinfuncs-v4-0-bb3906c55e64@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 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=3088; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=FuPiesxsrAA0Rn9DkOactcvX9/BHBoNthgyhyXGEhH0=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBomvrXvfSwc1aR/VkXuzCwVe/jTr/RkVSkQok9/ 6ZfT3vraKiJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaJr61wAKCRARpy6gFHHX crU/D/47WmiHhr1jD4X7MX23IkaKdqa8H3X1+A1yMibQlOZwva+m91uzbA5E1KqKisV1OFMTrwM qQw8JodqYSC7dGdkQzBqDTIPr8qzRWzoSvMRK4SEMSkWN6JmzLvQkjkT0QFqmMWrU29Eu7a0K1F Dajot6d2+kAVgD6I14MGW8cJyorpzlsoHipAlEw12RWTEeduUUSmBSgSdFriSRaQ59MJPBKp8hZ kVe4zp0J0g84ajKZ+DnhXBhaHIQym7fLJR57ngkJWPemTobyqxz2105/iqorzBrO2YC4Y2pX36z cuDpKjunZLGwb4w0loqgMygcLK/bV/U5ML167wppqGTE781xJw8gTclK0ECkF06V9mMriWr5qog w0Iiq+SbqD84+qFscPmKzsUrqqSX0Ih35IZdHkB2+uOuY9wKhFsFauO5KIiHmPkgPvd1VHClNqm ItFa/4pd+kPjurFIxcHWHYyEQ5xM2PYjHpH1qPVzaQNzL0f+rZPoifcD1zBil+ildZtDLwNHbLj 9bGuk4x45L/2ysZqyTqShL9pN8TnHn3mQrsZpHh+PUIe5e3hgaZi+P7oiTmtPmifDRFb/rJlKSM l7mYoB8Nx9U1KflhK7GPr2sCxhy436TecxSTqnjxs3nFe0iqlGJPyQMvKZURsDe/JEiBZVGu0+n KZOvfyXmKWunFeA== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 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 | 38 +++++++++++------------------= ---- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/free= scale/pinctrl-imx.c index 18de31328540458b7f7e8e2e539a39d61829deb9..d5d42c9ad5fe9dcf7c25ad39368= 8e714b02db678 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -580,33 +580,34 @@ static int imx_pinctrl_parse_functions(struct device_= node *np, u32 index) { struct pinctrl_dev *pctl =3D ipctl->pctl; - struct function_desc *func; + struct pinfunction *func; struct group_desc *grp; const char **group_names; + int ret; u32 i; =20 dev_dbg(pctl->dev, "parse function(%d): %pOFn\n", index, np); =20 - func =3D pinmux_generic_get_function(pctl, index); + func =3D devm_kzalloc(ipctl->dev, sizeof(*func), GFP_KERNEL); if (!func) - return -EINVAL; + return -ENOMEM; =20 /* Initialise function */ - func->func.name =3D np->name; - func->func.ngroups =3D of_get_child_count(np); - if (func->func.ngroups =3D=3D 0) { + func->name =3D np->name; + func->ngroups =3D of_get_child_count(np); + if (func->ngroups =3D=3D 0) { dev_info(ipctl->dev, "no groups defined in %pOF\n", np); return -EINVAL; } =20 - group_names =3D devm_kcalloc(ipctl->dev, func->func.ngroups, - sizeof(*func->func.groups), GFP_KERNEL); + group_names =3D devm_kcalloc(ipctl->dev, func->ngroups, + sizeof(*func->groups), GFP_KERNEL); if (!group_names) return -ENOMEM; i =3D 0; for_each_child_of_node_scoped(np, child) group_names[i++] =3D child->name; - func->func.groups =3D group_names; + func->groups =3D group_names; =20 i =3D 0; for_each_child_of_node_scoped(np, child) { @@ -614,10 +615,9 @@ static int imx_pinctrl_parse_functions(struct device_n= ode *np, if (!grp) return -ENOMEM; =20 - mutex_lock(&ipctl->mutex); - radix_tree_insert(&pctl->pin_group_tree, - ipctl->group_index++, grp); - mutex_unlock(&ipctl->mutex); + ret =3D pinmux_generic_add_pinfunction(pctl, func, NULL); + if (ret < 0) + return ret; =20 imx_pinctrl_parse_groups(child, grp, ipctl, i++); } @@ -669,18 +669,6 @@ static int imx_pinctrl_probe_dt(struct platform_device= *pdev, } } =20 - for (i =3D 0; i < nfuncs; i++) { - struct function_desc *function; - - function =3D 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 =3D nfuncs; =20 ipctl->group_index =3D 0; --=20 2.48.1