From nobody Sun Sep 22 07:50:50 2024 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 970E8C433EF for ; Tue, 22 Feb 2022 11:11:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231622AbiBVLMU (ORCPT ); Tue, 22 Feb 2022 06:12:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231573AbiBVLMR (ORCPT ); Tue, 22 Feb 2022 06:12:17 -0500 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 345BE69CF5; Tue, 22 Feb 2022 03:11:51 -0800 (PST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: kholk11) with ESMTPSA id 48BFB1F43811 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1645528309; bh=cpo6vlQK830VyMFFPzoTFasodql+SY0NouJYyX3BTA4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WLJB3nEJV0eO8wE9mXnE+E4m0GRq/3YvxR+njd0TO7K6Tj2WEHul5B8WL7boh4WBB ytqcPLQjZP4grgF773QiT65nRPn1WKV7o9k7Jy+MjDZaZ30ejVgwza/MmFg8cT88mj E2h8GL20dYH3RnEQH1gWFO2OOtttZUlwY4yj4CKZVV2cjwZOZy+URAkQ1SJ+DoUQVQ MX1l3WvKJyncBcfBgWan0FuL/QNgInz/RNDzIPlqUHCPXtP6Z7W9oyg5RVDS8BfjTw weksthAj6uTWBUJ8HeZJls65N72FgL5fVNmaj865hq1KHSsScXvgq1GrL0eq4dO7NP /AgMGhGZnyscQ== From: AngeloGioacchino Del Regno To: sean.wang@kernel.org Cc: linus.walleij@linaro.org, matthias.bgg@gmail.com, linux-mediatek@lists.infradead.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@collabora.com, wenst@chromium.org, AngeloGioacchino Del Regno Subject: [PATCH v2 1/5] pinctrl: mediatek: paris: Unify probe function by using OF match data Date: Tue, 22 Feb 2022 12:11:40 +0100 Message-Id: <20220222111144.20796-2-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> References: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" All of the SoCs using Paris pinctrl are defining a custom probe function that is simply calling mtk_paris_pinctrl_probe() passing a pointer to the SoC specific mtk_pin_soc structure and nothing else. Simplify the probe mechanism across all pinctrl drivers that are using pinctrl-paris by passing the specific mtk_pin_soc as match data and using function mtk_paris_pinctrl_probe as a common probe function for all of them. Signed-off-by: AngeloGioacchino Del Regno Reviewed-by: Chen-Yu Tsai --- drivers/pinctrl/mediatek/pinctrl-mt6765.c | 9 ++------- drivers/pinctrl/mediatek/pinctrl-mt6779.c | 9 ++------- drivers/pinctrl/mediatek/pinctrl-mt6797.c | 9 ++------- drivers/pinctrl/mediatek/pinctrl-mt8183.c | 9 ++------- drivers/pinctrl/mediatek/pinctrl-mt8192.c | 9 ++------- drivers/pinctrl/mediatek/pinctrl-mt8195.c | 9 ++------- drivers/pinctrl/mediatek/pinctrl-paris.c | 9 ++++++--- drivers/pinctrl/mediatek/pinctrl-paris.h | 3 +-- 8 files changed, 19 insertions(+), 47 deletions(-) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6765.c b/drivers/pinctrl/me= diatek/pinctrl-mt6765.c index 2c59d3936256..c57b19fcda03 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt6765.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt6765.c @@ -1082,21 +1082,16 @@ static const struct mtk_pin_soc mt6765_data =3D { }; =20 static const struct of_device_id mt6765_pinctrl_of_match[] =3D { - { .compatible =3D "mediatek,mt6765-pinctrl", }, + { .compatible =3D "mediatek,mt6765-pinctrl", .data =3D &mt6765_data }, { } }; =20 -static int mt6765_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_paris_pinctrl_probe(pdev, &mt6765_data); -} - static struct platform_driver mt6765_pinctrl_driver =3D { .driver =3D { .name =3D "mt6765-pinctrl", .of_match_table =3D mt6765_pinctrl_of_match, }, - .probe =3D mt6765_pinctrl_probe, + .probe =3D mtk_paris_pinctrl_probe, }; =20 static int __init mt6765_pinctrl_init(void) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6779.c b/drivers/pinctrl/me= diatek/pinctrl-mt6779.c index bb0851c73304..4ddf8bda6827 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt6779.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt6779.c @@ -758,21 +758,16 @@ static const struct mtk_pin_soc mt6779_data =3D { }; =20 static const struct of_device_id mt6779_pinctrl_of_match[] =3D { - { .compatible =3D "mediatek,mt6779-pinctrl", }, + { .compatible =3D "mediatek,mt6779-pinctrl", .data =3D &mt6779_data }, { } }; =20 -static int mt6779_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_paris_pinctrl_probe(pdev, &mt6779_data); -} - static struct platform_driver mt6779_pinctrl_driver =3D { .driver =3D { .name =3D "mt6779-pinctrl", .of_match_table =3D mt6779_pinctrl_of_match, }, - .probe =3D mt6779_pinctrl_probe, + .probe =3D mtk_paris_pinctrl_probe, }; =20 static int __init mt6779_pinctrl_init(void) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt6797.c b/drivers/pinctrl/me= diatek/pinctrl-mt6797.c index adebe4333ed9..53f240491259 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt6797.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt6797.c @@ -58,21 +58,16 @@ static const struct mtk_pin_soc mt6797_data =3D { }; =20 static const struct of_device_id mt6797_pinctrl_of_match[] =3D { - { .compatible =3D "mediatek,mt6797-pinctrl", }, + { .compatible =3D "mediatek,mt6797-pinctrl", .data =3D &mt6797_data }, { } }; =20 -static int mt6797_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_paris_pinctrl_probe(pdev, &mt6797_data); -} - static struct platform_driver mt6797_pinctrl_driver =3D { .driver =3D { .name =3D "mt6797-pinctrl", .of_match_table =3D mt6797_pinctrl_of_match, }, - .probe =3D mt6797_pinctrl_probe, + .probe =3D mtk_paris_pinctrl_probe, }; =20 static int __init mt6797_pinctrl_init(void) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8183.c b/drivers/pinctrl/me= diatek/pinctrl-mt8183.c index 60318339b618..fecb1e64fff4 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8183.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8183.c @@ -567,22 +567,17 @@ static const struct mtk_pin_soc mt8183_data =3D { }; =20 static const struct of_device_id mt8183_pinctrl_of_match[] =3D { - { .compatible =3D "mediatek,mt8183-pinctrl", }, + { .compatible =3D "mediatek,mt8183-pinctrl", .data =3D &mt8183_data }, { } }; =20 -static int mt8183_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_paris_pinctrl_probe(pdev, &mt8183_data); -} - static struct platform_driver mt8183_pinctrl_driver =3D { .driver =3D { .name =3D "mt8183-pinctrl", .of_match_table =3D mt8183_pinctrl_of_match, .pm =3D &mtk_paris_pinctrl_pm_ops, }, - .probe =3D mt8183_pinctrl_probe, + .probe =3D mtk_paris_pinctrl_probe, }; =20 static int __init mt8183_pinctrl_init(void) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8192.c b/drivers/pinctrl/me= diatek/pinctrl-mt8192.c index 0c16b2c756bf..acccde9262ba 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8192.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8192.c @@ -1381,22 +1381,17 @@ static const struct mtk_pin_soc mt8192_data =3D { }; =20 static const struct of_device_id mt8192_pinctrl_of_match[] =3D { - { .compatible =3D "mediatek,mt8192-pinctrl", }, + { .compatible =3D "mediatek,mt8192-pinctrl", .data =3D &mt8192_data }, { } }; =20 -static int mt8192_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_paris_pinctrl_probe(pdev, &mt8192_data); -} - static struct platform_driver mt8192_pinctrl_driver =3D { .driver =3D { .name =3D "mt8192-pinctrl", .of_match_table =3D mt8192_pinctrl_of_match, .pm =3D &mtk_paris_pinctrl_pm_ops, }, - .probe =3D mt8192_pinctrl_probe, + .probe =3D mtk_paris_pinctrl_probe, }; =20 static int __init mt8192_pinctrl_init(void) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8195.c b/drivers/pinctrl/me= diatek/pinctrl-mt8195.c index 275b7ba4386d..563693d3d4c2 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8195.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8195.c @@ -959,22 +959,17 @@ static const struct mtk_pin_soc mt8195_data =3D { }; =20 static const struct of_device_id mt8195_pinctrl_of_match[] =3D { - { .compatible =3D "mediatek,mt8195-pinctrl", }, + { .compatible =3D "mediatek,mt8195-pinctrl", .data =3D &mt8195_data }, { } }; =20 -static int mt8195_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_paris_pinctrl_probe(pdev, &mt8195_data); -} - static struct platform_driver mt8195_pinctrl_driver =3D { .driver =3D { .name =3D "mt8195-pinctrl", .of_match_table =3D mt8195_pinctrl_of_match, .pm =3D &mtk_paris_pinctrl_pm_ops, }, - .probe =3D mt8195_pinctrl_probe, + .probe =3D mtk_paris_pinctrl_probe, }; =20 static int __init mt8195_pinctrl_init(void) diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/med= iatek/pinctrl-paris.c index 784eb152b637..6d9e4d625517 100644 --- a/drivers/pinctrl/mediatek/pinctrl-paris.c +++ b/drivers/pinctrl/mediatek/pinctrl-paris.c @@ -1036,8 +1036,7 @@ static int mtk_pctrl_build_state(struct platform_devi= ce *pdev) return 0; } =20 -int mtk_paris_pinctrl_probe(struct platform_device *pdev, - const struct mtk_pin_soc *soc) +int mtk_paris_pinctrl_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; struct pinctrl_pin_desc *pins; @@ -1049,7 +1048,11 @@ int mtk_paris_pinctrl_probe(struct platform_device *= pdev, return -ENOMEM; =20 platform_set_drvdata(pdev, hw); - hw->soc =3D soc; + + hw->soc =3D device_get_match_data(dev); + if (!hw->soc) + return -ENOENT; + hw->dev =3D &pdev->dev; =20 if (!hw->soc->nbase_names) diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.h b/drivers/pinctrl/med= iatek/pinctrl-paris.h index afb7650fd25b..8762ac599329 100644 --- a/drivers/pinctrl/mediatek/pinctrl-paris.h +++ b/drivers/pinctrl/mediatek/pinctrl-paris.h @@ -57,8 +57,7 @@ id##_funcs, \ } =20 -int mtk_paris_pinctrl_probe(struct platform_device *pdev, - const struct mtk_pin_soc *soc); +int mtk_paris_pinctrl_probe(struct platform_device *pdev); =20 ssize_t mtk_pctrl_show_one_pin(struct mtk_pinctrl *hw, unsigned int gpio, char *buf, unsigned int bufLen); --=20 2.33.1 From nobody Sun Sep 22 07:50:50 2024 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7EF28C433F5 for ; Tue, 22 Feb 2022 11:12:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231634AbiBVLM0 (ORCPT ); Tue, 22 Feb 2022 06:12:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229485AbiBVLMR (ORCPT ); Tue, 22 Feb 2022 06:12:17 -0500 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9ED076A001; Tue, 22 Feb 2022 03:11:51 -0800 (PST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: kholk11) with ESMTPSA id E85091F4383C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1645528310; bh=5a+JNDYzhrEdlMXy2IwS2GK3LUhLlFaWjrDmnWR0iNc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nVu8ZMVv28kJ/zXaMIuPoLb1eHt2YHoS+keWwS6T4bkzScgv9jpFgs24yK3yHlh/W uH7xX1U5ojsAUCsWoFhZTbUc4fdCYmNsKO2kUEuMw9S/FPcdkkeUHrg+TQHUP/qXup DnkzbS8naxB8mChX/RcAAsYq1C8sBPCHxfnIvrKN8GZNguJjZ++9G3O0x+qFcQQZbF ClHu6WEC56hLlECRyhE/KwNDjNxsRbziXwTPSbgrOey61hKYCNi/NKSiWtUbxvrJTy cOqTLFJzaultWcygtlObNOoruaEIM683qtx3JMNcoo5Gr/ET29Rb4IM9at1cF+ML0o gfh7C9N5cmLMw== From: AngeloGioacchino Del Regno To: sean.wang@kernel.org Cc: linus.walleij@linaro.org, matthias.bgg@gmail.com, linux-mediatek@lists.infradead.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@collabora.com, wenst@chromium.org, AngeloGioacchino Del Regno Subject: [PATCH v2 2/5] pinctrl: mediatek: common-v1: Add common probe function Date: Tue, 22 Feb 2022 12:11:41 +0100 Message-Id: <20220222111144.20796-3-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> References: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" As a preparation to cleanup the probe mechanism of mediatek pinctrl drivers that are using the v1 controller, add a common probe function to this driver. Signed-off-by: AngeloGioacchino Del Regno Reviewed-by: Chen-Yu Tsai --- drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 11 +++++++++++ drivers/pinctrl/mediatek/pinctrl-mtk-common.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctr= l/mediatek/pinctrl-mtk-common.c index 6f8dfa6ae5a0..7835a6ea505b 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c @@ -1115,3 +1115,14 @@ int mtk_pctrl_init(struct platform_device *pdev, gpiochip_remove(pctl->chip); return ret; } + +int mtk_pctrl_common_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + const struct mtk_pinctrl_devdata *data =3D device_get_match_data(dev); + + if (!data) + return -ENODEV; + + return mtk_pctrl_init(pdev, data, NULL); +} diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h b/drivers/pinctr= l/mediatek/pinctrl-mtk-common.h index 98f27cdc609a..cd264cc3547b 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.h @@ -277,6 +277,8 @@ int mtk_pctrl_init(struct platform_device *pdev, const struct mtk_pinctrl_devdata *data, struct regmap *regmap); =20 +int mtk_pctrl_common_probe(struct platform_device *pdev); + int mtk_pctrl_spec_pull_set_samereg(struct regmap *regmap, const struct mtk_pin_spec_pupd_set_samereg *pupd_infos, unsigned int info_num, unsigned int pin, --=20 2.33.1 From nobody Sun Sep 22 07:50:50 2024 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CA34EC433F5 for ; Tue, 22 Feb 2022 11:12:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231666AbiBVLM3 (ORCPT ); Tue, 22 Feb 2022 06:12:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231579AbiBVLMS (ORCPT ); Tue, 22 Feb 2022 06:12:18 -0500 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 575997C16F; Tue, 22 Feb 2022 03:11:52 -0800 (PST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: kholk11) with ESMTPSA id 9D1741F43829 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1645528311; bh=5cJjEd1N9+tSDLZBK5y55zXdJNErUaIfAyKVaRyendg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=egW3eTXVE3JhgyKXpD/r4gRBr4RnfXeC16F3ShHqPS3f3Ln5xTkGX0fUas+O9NGD2 PVjYiSNETOas+VXEc8p9t4JyZqSanGlTk0hhJJnaiXlLCK/nuRAPjYHxya4sR6N15e VM0y5ypXHwy7a4ie3mXFP4MQIs3neh8ctuFocJKvc6mj+79fTUIHEyquICJjyRNeJX VSfFISMq4pv7fbyZth9q5bgeFTGhqD+OyrNmMgVFTOYxa5RPe7kwujBgoazXg8aJ1W NeNb/bJt8VtCsDTCpHv98H9QITr7ctQPc0Irsz2gjj+SDPUnvnsxKE5yYxorLLEKQk u9lRrctzi03Vg== From: AngeloGioacchino Del Regno To: sean.wang@kernel.org Cc: linus.walleij@linaro.org, matthias.bgg@gmail.com, linux-mediatek@lists.infradead.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@collabora.com, wenst@chromium.org, AngeloGioacchino Del Regno Subject: [PATCH v2 3/5] pinctrl: mediatek: common-v1: Use common probe function Date: Tue, 22 Feb 2022 12:11:42 +0100 Message-Id: <20220222111144.20796-4-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> References: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Most of the mediatek pinctrl drivers are calling mtk_pctrl_init() and passing only a pointer to struct mtk_pinctrl_devdata, as the regmap handle it passed from device-tree, with the exception of mt6397. For all of the drivers that don't require passing a struct regmap pointer from a parent device, simplify the probe mechanism by assigning the required structure as match data and use mtk_pctrl_common_probe() as their probe function. While at it, also collapse the of_device_id entries to a single line, as they all fit in max 83 columns, which is acceptable. Signed-off-by: AngeloGioacchino Del Regno Reviewed-by: Chen-Yu Tsai --- drivers/pinctrl/mediatek/pinctrl-mt2701.c | 11 +++-------- drivers/pinctrl/mediatek/pinctrl-mt2712.c | 11 ++--------- drivers/pinctrl/mediatek/pinctrl-mt8127.c | 9 ++------- drivers/pinctrl/mediatek/pinctrl-mt8135.c | 11 ++--------- drivers/pinctrl/mediatek/pinctrl-mt8167.c | 11 ++--------- drivers/pinctrl/mediatek/pinctrl-mt8365.c | 11 ++--------- drivers/pinctrl/mediatek/pinctrl-mt8516.c | 11 ++--------- 7 files changed, 15 insertions(+), 60 deletions(-) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt2701.c b/drivers/pinctrl/me= diatek/pinctrl-mt2701.c index 37228dd5103e..2f8821207395 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt2701.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt2701.c @@ -534,20 +534,15 @@ static const struct mtk_pinctrl_devdata mt2701_pinctr= l_data =3D { }, }; =20 -static int mt2701_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_pctrl_init(pdev, &mt2701_pinctrl_data, NULL); -} - static const struct of_device_id mt2701_pctrl_match[] =3D { - { .compatible =3D "mediatek,mt2701-pinctrl", }, - { .compatible =3D "mediatek,mt7623-pinctrl", }, + { .compatible =3D "mediatek,mt2701-pinctrl", .data =3D &mt2701_pinctrl_da= ta }, + { .compatible =3D "mediatek,mt7623-pinctrl", .data =3D &mt2701_pinctrl_da= ta }, {} }; MODULE_DEVICE_TABLE(of, mt2701_pctrl_match); =20 static struct platform_driver mtk_pinctrl_driver =3D { - .probe =3D mt2701_pinctrl_probe, + .probe =3D mtk_pctrl_common_probe, .driver =3D { .name =3D "mediatek-mt2701-pinctrl", .of_match_table =3D mt2701_pctrl_match, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt2712.c b/drivers/pinctrl/me= diatek/pinctrl-mt2712.c index ba35fc6cc138..03aa14445034 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt2712.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt2712.c @@ -587,21 +587,14 @@ static const struct mtk_pinctrl_devdata mt2712_pinctr= l_data =3D { }, }; =20 -static int mt2712_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_pctrl_init(pdev, &mt2712_pinctrl_data, NULL); -} - static const struct of_device_id mt2712_pctrl_match[] =3D { - { - .compatible =3D "mediatek,mt2712-pinctrl", - }, + { .compatible =3D "mediatek,mt2712-pinctrl", .data =3D &mt2712_pinctrl_da= ta }, { } }; MODULE_DEVICE_TABLE(of, mt2712_pctrl_match); =20 static struct platform_driver mtk_pinctrl_driver =3D { - .probe =3D mt2712_pinctrl_probe, + .probe =3D mtk_pctrl_common_probe, .driver =3D { .name =3D "mediatek-mt2712-pinctrl", .of_match_table =3D mt2712_pctrl_match, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8127.c b/drivers/pinctrl/me= diatek/pinctrl-mt8127.c index eaf5c76b14c7..76cb525374f2 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8127.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8127.c @@ -303,18 +303,13 @@ static const struct mtk_pinctrl_devdata mt8127_pinctr= l_data =3D { }, }; =20 -static int mt8127_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_pctrl_init(pdev, &mt8127_pinctrl_data, NULL); -} - static const struct of_device_id mt8127_pctrl_match[] =3D { - { .compatible =3D "mediatek,mt8127-pinctrl", }, + { .compatible =3D "mediatek,mt8127-pinctrl", .data =3D &mt8127_pinctrl_da= ta }, { } }; =20 static struct platform_driver mtk_pinctrl_driver =3D { - .probe =3D mt8127_pinctrl_probe, + .probe =3D mtk_pctrl_common_probe, .driver =3D { .name =3D "mediatek-mt8127-pinctrl", .of_match_table =3D mt8127_pctrl_match, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8135.c b/drivers/pinctrl/me= diatek/pinctrl-mt8135.c index b8f4080aab45..4c20b79dec67 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8135.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8135.c @@ -316,20 +316,13 @@ static const struct mtk_pinctrl_devdata mt8135_pinctr= l_data =3D { }, }; =20 -static int mt8135_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_pctrl_init(pdev, &mt8135_pinctrl_data, NULL); -} - static const struct of_device_id mt8135_pctrl_match[] =3D { - { - .compatible =3D "mediatek,mt8135-pinctrl", - }, + { .compatible =3D "mediatek,mt8135-pinctrl", .data =3D &mt8135_pinctrl_da= ta }, { } }; =20 static struct platform_driver mtk_pinctrl_driver =3D { - .probe =3D mt8135_pinctrl_probe, + .probe =3D mtk_pctrl_common_probe, .driver =3D { .name =3D "mediatek-mt8135-pinctrl", .of_match_table =3D mt8135_pctrl_match, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8167.c b/drivers/pinctrl/me= diatek/pinctrl-mt8167.c index ba12ef795e52..08aabf408c9c 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8167.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8167.c @@ -335,22 +335,15 @@ static const struct mtk_pinctrl_devdata mt8167_pinctr= l_data =3D { }, }; =20 -static int mt8167_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_pctrl_init(pdev, &mt8167_pinctrl_data, NULL); -} - static const struct of_device_id mt8167_pctrl_match[] =3D { - { - .compatible =3D "mediatek,mt8167-pinctrl", - }, + { .compatible =3D "mediatek,mt8167-pinctrl", .data =3D &mt8167_pinctrl_da= ta }, {} }; =20 MODULE_DEVICE_TABLE(of, mt8167_pctrl_match); =20 static struct platform_driver mtk_pinctrl_driver =3D { - .probe =3D mt8167_pinctrl_probe, + .probe =3D mtk_pctrl_common_probe, .driver =3D { .name =3D "mediatek-mt8167-pinctrl", .of_match_table =3D mt8167_pctrl_match, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8365.c b/drivers/pinctrl/me= diatek/pinctrl-mt8365.c index 79b1fee5a1eb..6863a8150a2b 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8365.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8365.c @@ -469,20 +469,13 @@ static const struct mtk_pinctrl_devdata mt8365_pinctr= l_data =3D { }, }; =20 -static int mtk_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_pctrl_init(pdev, &mt8365_pinctrl_data, NULL); -} - static const struct of_device_id mt8365_pctrl_match[] =3D { - { - .compatible =3D "mediatek,mt8365-pinctrl", - }, + { .compatible =3D "mediatek,mt8365-pinctrl", .data =3D &mt8365_pinctrl_da= ta }, {} }; =20 static struct platform_driver mtk_pinctrl_driver =3D { - .probe =3D mtk_pinctrl_probe, + .probe =3D mtk_pctrl_common_probe, .driver =3D { .name =3D "mediatek-mt8365-pinctrl", .of_match_table =3D mt8365_pctrl_match, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8516.c b/drivers/pinctrl/me= diatek/pinctrl-mt8516.c index 219fb4bc341f..99c1a04c7fd8 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8516.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8516.c @@ -335,22 +335,15 @@ static const struct mtk_pinctrl_devdata mt8516_pinctr= l_data =3D { }, }; =20 -static int mt8516_pinctrl_probe(struct platform_device *pdev) -{ - return mtk_pctrl_init(pdev, &mt8516_pinctrl_data, NULL); -} - static const struct of_device_id mt8516_pctrl_match[] =3D { - { - .compatible =3D "mediatek,mt8516-pinctrl", - }, + { .compatible =3D "mediatek,mt8516-pinctrl", .data =3D &mt8516_pinctrl_da= ta }, {} }; =20 MODULE_DEVICE_TABLE(of, mt8516_pctrl_match); =20 static struct platform_driver mtk_pinctrl_driver =3D { - .probe =3D mt8516_pinctrl_probe, + .probe =3D mtk_pctrl_common_probe, .driver =3D { .name =3D "mediatek-mt8516-pinctrl", .of_match_table =3D mt8516_pctrl_match, --=20 2.33.1 From nobody Sun Sep 22 07:50:50 2024 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2D29EC433EF for ; Tue, 22 Feb 2022 11:12:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231672AbiBVLMc (ORCPT ); Tue, 22 Feb 2022 06:12:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231593AbiBVLMT (ORCPT ); Tue, 22 Feb 2022 06:12:19 -0500 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F2EAEB0A4D; Tue, 22 Feb 2022 03:11:52 -0800 (PST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: kholk11) with ESMTPSA id 55F171F4393C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1645528311; bh=WdIRTipSKFpu3yVcBXGq5Ma2nb9tP2cg9GwP8GUmbSQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UlOkGH+d3Ky6kvfajDVKPf/GoqYvDbaMKr50ncUaFN153Awj5lFZpvB/0YfGbRFOP qejx2sswCeGEdBADODoFWLhDwFFJMZkMOVPHa37oUIWbjSWqrfcZK9wP6Y1Y8pj51U I/ORNsgrqPZbbmyrFKm+tKcEj8e2/sHxXes2lxVnLBdUzIkd/jjDkBt1qD/dctM78c 9vMVJGrpIc5Ih89QAeI3lRuZFpV9+KS8GKCLtBYdu7n+0MkdxPcJiZ9hUOJDeW1cyh R8Xvr4Vd5QcBjZ+M0DwvWEkzhp2SQaS35xuXwI/+J8/az0P9Fn5mUODqRSl5881qRh D3mH6TdVRBSHw== From: AngeloGioacchino Del Regno To: sean.wang@kernel.org Cc: linus.walleij@linaro.org, matthias.bgg@gmail.com, linux-mediatek@lists.infradead.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@collabora.com, wenst@chromium.org, AngeloGioacchino Del Regno Subject: [PATCH v2 4/5] pinctrl: mediatek: common-v1: Commonize spec_pupd callback Date: Tue, 22 Feb 2022 12:11:43 +0100 Message-Id: <20220222111144.20796-5-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> References: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Reduce code size and duplication by using a common spec_pupd callback, which is possible to use on all of the pinctrl drivers that are using the v1 pinctrl-mtk-common code, with the exception of mt8135, which has a different handling compared to the others. Since the callback function signature was changed, this had to be propagated to pinctrl-mt8135's spec_pull_set(). Signed-off-by: AngeloGioacchino Del Regno Reviewed-by: Chen-Yu Tsai --- drivers/pinctrl/mediatek/pinctrl-mt2701.c | 11 +++------- drivers/pinctrl/mediatek/pinctrl-mt2712.c | 14 +++---------- drivers/pinctrl/mediatek/pinctrl-mt8127.c | 11 +++------- drivers/pinctrl/mediatek/pinctrl-mt8135.c | 6 ++++-- drivers/pinctrl/mediatek/pinctrl-mt8167.c | 11 +++------- drivers/pinctrl/mediatek/pinctrl-mt8173.c | 11 +++------- drivers/pinctrl/mediatek/pinctrl-mt8365.c | 11 +++------- drivers/pinctrl/mediatek/pinctrl-mt8516.c | 11 +++------- drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 21 +++++++++++-------- drivers/pinctrl/mediatek/pinctrl-mtk-common.h | 14 ++++++++----- 10 files changed, 46 insertions(+), 75 deletions(-) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt2701.c b/drivers/pinctrl/me= diatek/pinctrl-mt2701.c index 2f8821207395..816de39858f8 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt2701.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt2701.c @@ -270,13 +270,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt27= 01_spec_pupd[] =3D { MTK_PIN_PUPD_SPEC_SR(261, 0x140, 8, 9, 10), /* ms1 ins */ }; =20 -static int mt2701_spec_pull_set(struct regmap *regmap, unsigned int pin, - unsigned char align, bool isup, unsigned int r1r0) -{ - return mtk_pctrl_spec_pull_set_samereg(regmap, mt2701_spec_pupd, - ARRAY_SIZE(mt2701_spec_pupd), pin, align, isup, r1r0); -} - static const struct mtk_pin_ies_smt_set mt2701_ies_set[] =3D { MTK_PIN_IES_SMT_SPEC(0, 6, 0xb20, 0), MTK_PIN_IES_SMT_SPEC(7, 9, 0xb20, 1), @@ -508,7 +501,9 @@ static const struct mtk_pinctrl_devdata mt2701_pinctrl_= data =3D { .n_grp_cls =3D ARRAY_SIZE(mt2701_drv_grp), .pin_drv_grp =3D mt2701_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt2701_pin_drv), - .spec_pull_set =3D mt2701_spec_pull_set, + .spec_pupd =3D mt2701_spec_pupd, + .n_spec_pupd =3D ARRAY_SIZE(mt2701_spec_pupd), + .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, .spec_ies_smt_set =3D mt2701_ies_smt_set, .spec_pinmux_set =3D mt2701_spec_pinmux_set, .spec_dir_set =3D mt2701_spec_dir_set, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt2712.c b/drivers/pinctrl/me= diatek/pinctrl-mt2712.c index 03aa14445034..b6182b06584b 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt2712.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt2712.c @@ -81,16 +81,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt2712= _spec_pupd[] =3D { MTK_PIN_PUPD_SPEC_SR(142, 0xe60, 5, 4, 3) }; =20 -static int mt2712_spec_pull_set(struct regmap *regmap, - unsigned int pin, - unsigned char align, - bool isup, - unsigned int r1r0) -{ - return mtk_pctrl_spec_pull_set_samereg(regmap, mt2712_spec_pupd, - ARRAY_SIZE(mt2712_spec_pupd), pin, align, isup, r1r0); -} - static const struct mtk_pin_ies_smt_set mt2712_smt_set[] =3D { MTK_PIN_IES_SMT_SPEC(0, 3, 0x900, 2), MTK_PIN_IES_SMT_SPEC(4, 7, 0x900, 0), @@ -563,7 +553,9 @@ static const struct mtk_pinctrl_devdata mt2712_pinctrl_= data =3D { .n_grp_cls =3D ARRAY_SIZE(mt2712_drv_grp), .pin_drv_grp =3D mt2712_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt2712_pin_drv), - .spec_pull_set =3D mt2712_spec_pull_set, + .spec_pupd =3D mt2712_spec_pupd, + .n_spec_pupd =3D ARRAY_SIZE(mt2712_spec_pupd), + .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, .spec_ies_smt_set =3D mt2712_ies_smt_set, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0100, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8127.c b/drivers/pinctrl/me= diatek/pinctrl-mt8127.c index 76cb525374f2..9745d15f93ec 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8127.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8127.c @@ -172,13 +172,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt81= 27_spec_pupd[] =3D { MTK_PIN_PUPD_SPEC_SR(142, 0xdc0, 2, 0, 1), /* EINT21 */ }; =20 -static int mt8127_spec_pull_set(struct regmap *regmap, unsigned int pin, - unsigned char align, bool isup, unsigned int r1r0) -{ - return mtk_pctrl_spec_pull_set_samereg(regmap, mt8127_spec_pupd, - ARRAY_SIZE(mt8127_spec_pupd), pin, align, isup, r1r0); -} - static const struct mtk_pin_ies_smt_set mt8127_ies_set[] =3D { MTK_PIN_IES_SMT_SPEC(0, 9, 0x900, 0), MTK_PIN_IES_SMT_SPEC(10, 13, 0x900, 1), @@ -279,7 +272,9 @@ static const struct mtk_pinctrl_devdata mt8127_pinctrl_= data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8127_drv_grp), .pin_drv_grp =3D mt8127_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8127_pin_drv), - .spec_pull_set =3D mt8127_spec_pull_set, + .spec_pupd =3D mt8127_spec_pupd, + .n_spec_pupd =3D ARRAY_SIZE(mt8127_spec_pupd), + .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, .spec_ies_smt_set =3D mt8127_ies_smt_set, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0100, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8135.c b/drivers/pinctrl/me= diatek/pinctrl-mt8135.c index 4c20b79dec67..562846756517 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8135.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8135.c @@ -230,12 +230,14 @@ static const struct mtk_spec_pull_set spec_pupd[] =3D= { SPEC_PULL(202, PUPD_BASE2+0xc0, 10, R0_BASE1, 12, R1_BASE2+0xc0, 10) }; =20 -static int spec_pull_set(struct regmap *regmap, unsigned int pin, - unsigned char align, bool isup, unsigned int r1r0) +static int spec_pull_set(struct regmap *regmap, + const struct mtk_pinctrl_devdata *devdata, + unsigned int pin, bool isup, unsigned int r1r0) { unsigned int i; unsigned int reg_pupd, reg_set_r0, reg_set_r1; unsigned int reg_rst_r0, reg_rst_r1; + unsigned char align =3D devdata->port_align; bool find =3D false; =20 for (i =3D 0; i < ARRAY_SIZE(spec_pupd); i++) { diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8167.c b/drivers/pinctrl/me= diatek/pinctrl-mt8167.c index 08aabf408c9c..118ddcba18fc 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8167.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8167.c @@ -186,13 +186,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt81= 67_spec_pupd[] =3D { MTK_PIN_PUPD_SPEC_SR(120, 0xe00, 2, 1, 0), }; =20 -static int mt8167_spec_pull_set(struct regmap *regmap, unsigned int pin, - unsigned char align, bool isup, unsigned int r1r0) -{ - return mtk_pctrl_spec_pull_set_samereg(regmap, mt8167_spec_pupd, - ARRAY_SIZE(mt8167_spec_pupd), pin, align, isup, r1r0); -} - static const struct mtk_pin_ies_smt_set mt8167_ies_set[] =3D { MTK_PIN_IES_SMT_SPEC(0, 6, 0x900, 2), MTK_PIN_IES_SMT_SPEC(7, 10, 0x900, 3), @@ -311,7 +304,9 @@ static const struct mtk_pinctrl_devdata mt8167_pinctrl_= data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8167_drv_grp), .pin_drv_grp =3D mt8167_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8167_pin_drv), - .spec_pull_set =3D mt8167_spec_pull_set, + .spec_pupd =3D mt8167_spec_pupd, + .n_spec_pupd =3D ARRAY_SIZE(mt8167_spec_pupd), + .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, .spec_ies_smt_set =3D mt8167_ies_smt_set, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0500, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8173.c b/drivers/pinctrl/me= diatek/pinctrl-mt8173.c index fc99df8a11c6..b34c9778e131 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8173.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8173.c @@ -61,13 +61,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt8173= _spec_pupd[] =3D { MTK_PIN_PUPD_SPEC_SR(27, 0xcd0, 2, 1, 0) /* ms3 cmd */ }; =20 -static int mt8173_spec_pull_set(struct regmap *regmap, unsigned int pin, - unsigned char align, bool isup, unsigned int r1r0) -{ - return mtk_pctrl_spec_pull_set_samereg(regmap, mt8173_spec_pupd, - ARRAY_SIZE(mt8173_spec_pupd), pin, align, isup, r1r0); -} - static const struct mtk_pin_ies_smt_set mt8173_smt_set[] =3D { MTK_PIN_IES_SMT_SPEC(0, 4, 0x930, 1), MTK_PIN_IES_SMT_SPEC(5, 9, 0x930, 2), @@ -319,7 +312,9 @@ static const struct mtk_pinctrl_devdata mt8173_pinctrl_= data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8173_drv_grp), .pin_drv_grp =3D mt8173_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8173_pin_drv), - .spec_pull_set =3D mt8173_spec_pull_set, + .spec_pupd =3D mt8173_spec_pupd, + .n_spec_pupd =3D ARRAY_SIZE(mt8173_spec_pupd), + .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, .spec_ies_smt_set =3D mt8173_ies_smt_set, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0100, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8365.c b/drivers/pinctrl/me= diatek/pinctrl-mt8365.c index 6863a8150a2b..dbff7a831235 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8365.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8365.c @@ -416,13 +416,6 @@ static const struct mtk_pin_ies_smt_set mt8365_smt_set= [] =3D { MTK_PIN_IES_SMT_SPEC(144, 144, 0x480, 22), }; =20 -static int mt8365_spec_pull_set(struct regmap *regmap, unsigned int pin, - unsigned char align, bool isup, unsigned int r1r0) -{ - return mtk_pctrl_spec_pull_set_samereg(regmap, mt8365_spec_pupd, - ARRAY_SIZE(mt8365_spec_pupd), pin, align, isup, r1r0); -} - static int mt8365_ies_smt_set(struct regmap *regmap, unsigned int pin, unsigned char align, int value, enum pin_config_param arg) { @@ -442,7 +435,9 @@ static const struct mtk_pinctrl_devdata mt8365_pinctrl_= data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8365_drv_grp), .pin_drv_grp =3D mt8365_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8365_pin_drv), - .spec_pull_set =3D mt8365_spec_pull_set, + .spec_pupd =3D mt8365_spec_pupd, + .n_spec_pupd =3D ARRAY_SIZE(mt8365_spec_pupd), + .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, .spec_ies_smt_set =3D mt8365_ies_smt_set, .dir_offset =3D 0x0140, .dout_offset =3D 0x00A0, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8516.c b/drivers/pinctrl/me= diatek/pinctrl-mt8516.c index 99c1a04c7fd8..8ad2006857c0 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8516.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8516.c @@ -186,13 +186,6 @@ static const struct mtk_pin_spec_pupd_set_samereg mt85= 16_spec_pupd[] =3D { MTK_PIN_PUPD_SPEC_SR(120, 0xe00, 2, 1, 0), }; =20 -static int mt8516_spec_pull_set(struct regmap *regmap, unsigned int pin, - unsigned char align, bool isup, unsigned int r1r0) -{ - return mtk_pctrl_spec_pull_set_samereg(regmap, mt8516_spec_pupd, - ARRAY_SIZE(mt8516_spec_pupd), pin, align, isup, r1r0); -} - static const struct mtk_pin_ies_smt_set mt8516_ies_set[] =3D { MTK_PIN_IES_SMT_SPEC(0, 6, 0x900, 2), MTK_PIN_IES_SMT_SPEC(7, 10, 0x900, 3), @@ -311,7 +304,9 @@ static const struct mtk_pinctrl_devdata mt8516_pinctrl_= data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8516_drv_grp), .pin_drv_grp =3D mt8516_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8516_pin_drv), - .spec_pull_set =3D mt8516_spec_pull_set, + .spec_pupd =3D mt8516_spec_pupd, + .n_spec_pupd =3D ARRAY_SIZE(mt8516_spec_pupd), + .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, .spec_ies_smt_set =3D mt8516_ies_smt_set, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0500, diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctr= l/mediatek/pinctrl-mtk-common.c index 7835a6ea505b..5c70d4b7d7ed 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c @@ -222,9 +222,8 @@ static int mtk_pconf_set_driving(struct mtk_pinctrl *pc= tl, } =20 int mtk_pctrl_spec_pull_set_samereg(struct regmap *regmap, - const struct mtk_pin_spec_pupd_set_samereg *pupd_infos, - unsigned int info_num, unsigned int pin, - unsigned char align, bool isup, unsigned int r1r0) + const struct mtk_pinctrl_devdata *devdata, + unsigned int pin, bool isup, unsigned int r1r0) { unsigned int i; unsigned int reg_pupd, reg_set, reg_rst; @@ -232,8 +231,11 @@ int mtk_pctrl_spec_pull_set_samereg(struct regmap *reg= map, const struct mtk_pin_spec_pupd_set_samereg *spec_pupd_pin; bool find =3D false; =20 - for (i =3D 0; i < info_num; i++) { - if (pin =3D=3D pupd_infos[i].pin) { + if (!devdata->spec_pupd) + return -EINVAL; + + for (i =3D 0; i < devdata->n_spec_pupd; i++) { + if (pin =3D=3D devdata->spec_pupd[i].pin) { find =3D true; break; } @@ -242,9 +244,9 @@ int mtk_pctrl_spec_pull_set_samereg(struct regmap *regm= ap, if (!find) return -EINVAL; =20 - spec_pupd_pin =3D pupd_infos + i; - reg_set =3D spec_pupd_pin->offset + align; - reg_rst =3D spec_pupd_pin->offset + (align << 1); + spec_pupd_pin =3D devdata->spec_pupd + i; + reg_set =3D spec_pupd_pin->offset + devdata->port_align; + reg_rst =3D spec_pupd_pin->offset + (devdata->port_align << 1); =20 if (isup) reg_pupd =3D reg_rst; @@ -298,7 +300,8 @@ static int mtk_pconf_set_pull_select(struct mtk_pinctrl= *pctl, */ r1r0 =3D enable ? arg : MTK_PUPD_SET_R1R0_00; ret =3D pctl->devdata->spec_pull_set(mtk_get_regmap(pctl, pin), - pin, pctl->devdata->port_align, isup, r1r0); + pctl->devdata, pin, isup, + r1r0); if (!ret) return 0; } diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h b/drivers/pinctr= l/mediatek/pinctrl-mtk-common.h index cd264cc3547b..f7968a6ac563 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.h @@ -193,6 +193,8 @@ struct mtk_eint_offsets { * * @grp_desc: The driving group info. * @pin_drv_grp: The driving group for all pins. + * @spec_pupd: Special pull up/down setting + * @n_spec_pupd: Number of entries in spec_pupd * @spec_pull_set: Each SoC may have special pins for pull up/down setting, * these pins' pull setting are very different, they have separate pull * up/down bit, R0 and R1 resistor bit, so they need special pull setting. @@ -231,8 +233,11 @@ struct mtk_pinctrl_devdata { unsigned int n_grp_cls; const struct mtk_pin_drv_grp *pin_drv_grp; unsigned int n_pin_drv_grps; - int (*spec_pull_set)(struct regmap *reg, unsigned int pin, - unsigned char align, bool isup, unsigned int arg); + const struct mtk_pin_spec_pupd_set_samereg *spec_pupd; + unsigned int n_spec_pupd; + int (*spec_pull_set)(struct regmap *regmap, + const struct mtk_pinctrl_devdata *devdata, + unsigned int pin, bool isup, unsigned int r1r0); int (*spec_ies_smt_set)(struct regmap *reg, unsigned int pin, unsigned char align, int value, enum pin_config_param arg); void (*spec_pinmux_set)(struct regmap *reg, unsigned int pin, @@ -280,9 +285,8 @@ int mtk_pctrl_init(struct platform_device *pdev, int mtk_pctrl_common_probe(struct platform_device *pdev); =20 int mtk_pctrl_spec_pull_set_samereg(struct regmap *regmap, - const struct mtk_pin_spec_pupd_set_samereg *pupd_infos, - unsigned int info_num, unsigned int pin, - unsigned char align, bool isup, unsigned int r1r0); + const struct mtk_pinctrl_devdata *devdata, + unsigned int pin, bool isup, unsigned int r1r0); =20 int mtk_pconf_spec_set_ies_smt_range(struct regmap *regmap, const struct mtk_pin_ies_smt_set *ies_smt_infos, unsigned int info_num, --=20 2.33.1 From nobody Sun Sep 22 07:50:50 2024 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C6CEC433EF for ; Tue, 22 Feb 2022 11:12:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231656AbiBVLM2 (ORCPT ); Tue, 22 Feb 2022 06:12:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38894 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231616AbiBVLMU (ORCPT ); Tue, 22 Feb 2022 06:12:20 -0500 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A8ED1B45A0; Tue, 22 Feb 2022 03:11:53 -0800 (PST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: kholk11) with ESMTPSA id 01AA31F43C94 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1645528312; bh=lxgoZGSzkIRo2w+TvD82FTAJzEHcbSTMdHsGD7SozQQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UOib/y8Ps18YHWtReLEW1GC3kSTl9G5bS/ZX4Nyrh1+4/dod7V7ff+zM/5Zug2Lp7 tPlOCbGyHHoOI3kR8EyzPga0jzha9DoMblzP51bs3vbBXdRna0As4cNSw00qjJYh0x CosBKqNjL7du7km1HjaxOxFAVSFgOQTcJ7MNVjFFzLwOlz0IJhD0GcbXYip3iJMzf3 kU4kyNKpKZqZ2srHACxkMdkYi7JOwxcaVvWwIHuSekVBn6nozny8a5SCU1ruYjXnGq 1t2nEXCSKzuIwWTjaizkleK+FDlI2bfwnfBkoIW7zqiTbTqdnShV3CE8n3xD7Y21ie JZXq10YZv0PZw== From: AngeloGioacchino Del Regno To: sean.wang@kernel.org Cc: linus.walleij@linaro.org, matthias.bgg@gmail.com, linux-mediatek@lists.infradead.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@collabora.com, wenst@chromium.org, AngeloGioacchino Del Regno Subject: [PATCH v2 5/5] pinctrl: mediatek: common-v1: Commonize spec_ies_smt_set callback Date: Tue, 22 Feb 2022 12:11:44 +0100 Message-Id: <20220222111144.20796-6-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> References: <20220222111144.20796-1-angelogioacchino.delregno@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" All of the MediaTek pinctrl drivers registering with pinctrl-mtk-common that are offering a .spec_ies_smt_set() callback are declaring their own function which is doing exactly the same on all drivers: calling mtk_pconf_spec_set_ies_smt_range() with their struct and a simple check. Commonize this callback by adding the ies and smt structure pointers to struct mtk_pinctrl_devdata and changing the callback signature to take it. Removing the callback and checking for the existance of the spec_smt and/or spec_ies data would allow us to staticize the function mtk_pconf_spec_set_ies_smt_range(), but this solution was avoided as to keep flexibility, as some SoCs may need to perform a very different operation compared to what this commonized function is doing. Signed-off-by: AngeloGioacchino Del Regno Reviewed-by: Chen-Yu Tsai --- drivers/pinctrl/mediatek/pinctrl-mt2701.c | 18 ++++-------- drivers/pinctrl/mediatek/pinctrl-mt2712.c | 19 ++++-------- drivers/pinctrl/mediatek/pinctrl-mt8127.c | 19 ++++-------- drivers/pinctrl/mediatek/pinctrl-mt8167.c | 18 ++++-------- drivers/pinctrl/mediatek/pinctrl-mt8173.c | 18 ++++-------- drivers/pinctrl/mediatek/pinctrl-mt8365.c | 18 ++++-------- drivers/pinctrl/mediatek/pinctrl-mt8516.c | 18 ++++-------- drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 29 +++++++++++++++---- drivers/pinctrl/mediatek/pinctrl-mtk-common.h | 17 ++++++++--- 9 files changed, 71 insertions(+), 103 deletions(-) diff --git a/drivers/pinctrl/mediatek/pinctrl-mt2701.c b/drivers/pinctrl/me= diatek/pinctrl-mt2701.c index 816de39858f8..d1583b4fdd9d 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt2701.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt2701.c @@ -429,18 +429,6 @@ static const struct mtk_pin_ies_smt_set mt2701_smt_set= [] =3D { MTK_PIN_IES_SMT_SPEC(278, 278, 0xb70, 13), }; =20 -static int mt2701_ies_smt_set(struct regmap *regmap, unsigned int pin, - unsigned char align, int value, enum pin_config_param arg) -{ - if (arg =3D=3D PIN_CONFIG_INPUT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt2701_ies_set, - ARRAY_SIZE(mt2701_ies_set), pin, align, value); - else if (arg =3D=3D PIN_CONFIG_INPUT_SCHMITT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt2701_smt_set, - ARRAY_SIZE(mt2701_smt_set), pin, align, value); - return -EINVAL; -} - static const struct mtk_spec_pinmux_set mt2701_spec_pinmux[] =3D { MTK_PINMUX_SPEC(22, 0xb10, 3), MTK_PINMUX_SPEC(23, 0xb10, 4), @@ -501,10 +489,14 @@ static const struct mtk_pinctrl_devdata mt2701_pinctr= l_data =3D { .n_grp_cls =3D ARRAY_SIZE(mt2701_drv_grp), .pin_drv_grp =3D mt2701_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt2701_pin_drv), + .spec_ies =3D mt2701_ies_set, + .n_spec_ies =3D ARRAY_SIZE(mt2701_ies_set), .spec_pupd =3D mt2701_spec_pupd, .n_spec_pupd =3D ARRAY_SIZE(mt2701_spec_pupd), + .spec_smt =3D mt2701_smt_set, + .n_spec_smt =3D ARRAY_SIZE(mt2701_smt_set), .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, - .spec_ies_smt_set =3D mt2701_ies_smt_set, + .spec_ies_smt_set =3D mtk_pconf_spec_set_ies_smt_range, .spec_pinmux_set =3D mt2701_spec_pinmux_set, .spec_dir_set =3D mt2701_spec_dir_set, .dir_offset =3D 0x0000, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt2712.c b/drivers/pinctrl/me= diatek/pinctrl-mt2712.c index b6182b06584b..b921068f9e69 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt2712.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt2712.c @@ -275,19 +275,6 @@ static const struct mtk_pin_ies_smt_set mt2712_ies_set= [] =3D { MTK_PIN_IES_SMT_SPEC(207, 209, 0x8b0, 15) }; =20 -static int mt2712_ies_smt_set(struct regmap *regmap, unsigned int pin, - unsigned char align, - int value, enum pin_config_param arg) -{ - if (arg =3D=3D PIN_CONFIG_INPUT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt2712_ies_set, - ARRAY_SIZE(mt2712_ies_set), pin, align, value); - if (arg =3D=3D PIN_CONFIG_INPUT_SCHMITT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt2712_smt_set, - ARRAY_SIZE(mt2712_smt_set), pin, align, value); - return -EINVAL; -} - static const struct mtk_drv_group_desc mt2712_drv_grp[] =3D { /* 0E4E8SR 4/8/12/16 */ MTK_DRV_GRP(4, 16, 1, 2, 4), @@ -553,10 +540,14 @@ static const struct mtk_pinctrl_devdata mt2712_pinctr= l_data =3D { .n_grp_cls =3D ARRAY_SIZE(mt2712_drv_grp), .pin_drv_grp =3D mt2712_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt2712_pin_drv), + .spec_ies =3D mt2712_ies_set, + .n_spec_ies =3D ARRAY_SIZE(mt2712_ies_set), .spec_pupd =3D mt2712_spec_pupd, .n_spec_pupd =3D ARRAY_SIZE(mt2712_spec_pupd), + .spec_smt =3D mt2712_smt_set, + .n_spec_smt =3D ARRAY_SIZE(mt2712_smt_set), .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, - .spec_ies_smt_set =3D mt2712_ies_smt_set, + .spec_ies_smt_set =3D mtk_pconf_spec_set_ies_smt_range, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0100, .pullsel_offset =3D 0x0200, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8127.c b/drivers/pinctrl/me= diatek/pinctrl-mt8127.c index 9745d15f93ec..91c530e7b00e 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8127.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8127.c @@ -252,19 +252,6 @@ static const struct mtk_pin_ies_smt_set mt8127_smt_set= [] =3D { MTK_PIN_IES_SMT_SPEC(142, 142, 0x920, 13), }; =20 -static int mt8127_ies_smt_set(struct regmap *regmap, unsigned int pin, - unsigned char align, int value, enum pin_config_param arg) -{ - if (arg =3D=3D PIN_CONFIG_INPUT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8127_ies_set, - ARRAY_SIZE(mt8127_ies_set), pin, align, value); - else if (arg =3D=3D PIN_CONFIG_INPUT_SCHMITT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8127_smt_set, - ARRAY_SIZE(mt8127_smt_set), pin, align, value); - return -EINVAL; -} - - static const struct mtk_pinctrl_devdata mt8127_pinctrl_data =3D { .pins =3D mtk_pins_mt8127, .npins =3D ARRAY_SIZE(mtk_pins_mt8127), @@ -272,10 +259,14 @@ static const struct mtk_pinctrl_devdata mt8127_pinctr= l_data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8127_drv_grp), .pin_drv_grp =3D mt8127_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8127_pin_drv), + .spec_ies =3D mt8127_ies_set, + .n_spec_ies =3D ARRAY_SIZE(mt8127_ies_set), .spec_pupd =3D mt8127_spec_pupd, .n_spec_pupd =3D ARRAY_SIZE(mt8127_spec_pupd), + .spec_smt =3D mt8127_smt_set, + .n_spec_smt =3D ARRAY_SIZE(mt8127_smt_set), .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, - .spec_ies_smt_set =3D mt8127_ies_smt_set, + .spec_ies_smt_set =3D mtk_pconf_spec_set_ies_smt_range, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0100, .pullsel_offset =3D 0x0200, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8167.c b/drivers/pinctrl/me= diatek/pinctrl-mt8167.c index 118ddcba18fc..825167f5d020 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8167.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8167.c @@ -285,18 +285,6 @@ static const struct mtk_pin_ies_smt_set mt8167_smt_set= [] =3D { MTK_PIN_IES_SMT_SPEC(121, 124, 0xA10, 9), }; =20 -static int mt8167_ies_smt_set(struct regmap *regmap, unsigned int pin, - unsigned char align, int value, enum pin_config_param arg) -{ - if (arg =3D=3D PIN_CONFIG_INPUT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8167_ies_set, - ARRAY_SIZE(mt8167_ies_set), pin, align, value); - else if (arg =3D=3D PIN_CONFIG_INPUT_SCHMITT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8167_smt_set, - ARRAY_SIZE(mt8167_smt_set), pin, align, value); - return -EINVAL; -} - static const struct mtk_pinctrl_devdata mt8167_pinctrl_data =3D { .pins =3D mtk_pins_mt8167, .npins =3D ARRAY_SIZE(mtk_pins_mt8167), @@ -304,10 +292,14 @@ static const struct mtk_pinctrl_devdata mt8167_pinctr= l_data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8167_drv_grp), .pin_drv_grp =3D mt8167_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8167_pin_drv), + .spec_ies =3D mt8167_ies_set, + .n_spec_ies =3D ARRAY_SIZE(mt8167_ies_set), .spec_pupd =3D mt8167_spec_pupd, .n_spec_pupd =3D ARRAY_SIZE(mt8167_spec_pupd), + .spec_smt =3D mt8167_smt_set, + .n_spec_smt =3D ARRAY_SIZE(mt8167_smt_set), .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, - .spec_ies_smt_set =3D mt8167_ies_smt_set, + .spec_ies_smt_set =3D mtk_pconf_spec_set_ies_smt_range, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0500, .pullsel_offset =3D 0x0600, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8173.c b/drivers/pinctrl/me= diatek/pinctrl-mt8173.c index b34c9778e131..1d7d11a32e7d 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8173.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8173.c @@ -167,18 +167,6 @@ static const struct mtk_pin_ies_smt_set mt8173_ies_set= [] =3D { MTK_PIN_IES_SMT_SPEC(133, 134, 0x910, 8) }; =20 -static int mt8173_ies_smt_set(struct regmap *regmap, unsigned int pin, - unsigned char align, int value, enum pin_config_param arg) -{ - if (arg =3D=3D PIN_CONFIG_INPUT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8173_ies_set, - ARRAY_SIZE(mt8173_ies_set), pin, align, value); - else if (arg =3D=3D PIN_CONFIG_INPUT_SCHMITT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8173_smt_set, - ARRAY_SIZE(mt8173_smt_set), pin, align, value); - return -EINVAL; -} - static const struct mtk_drv_group_desc mt8173_drv_grp[] =3D { /* 0E4E8SR 4/8/12/16 */ MTK_DRV_GRP(4, 16, 1, 2, 4), @@ -312,10 +300,14 @@ static const struct mtk_pinctrl_devdata mt8173_pinctr= l_data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8173_drv_grp), .pin_drv_grp =3D mt8173_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8173_pin_drv), + .spec_ies =3D mt8173_ies_set, + .n_spec_ies =3D ARRAY_SIZE(mt8173_ies_set), .spec_pupd =3D mt8173_spec_pupd, .n_spec_pupd =3D ARRAY_SIZE(mt8173_spec_pupd), + .spec_smt =3D mt8173_smt_set, + .n_spec_smt =3D ARRAY_SIZE(mt8173_smt_set), .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, - .spec_ies_smt_set =3D mt8173_ies_smt_set, + .spec_ies_smt_set =3D mtk_pconf_spec_set_ies_smt_range, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0100, .pullsel_offset =3D 0x0200, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8365.c b/drivers/pinctrl/me= diatek/pinctrl-mt8365.c index dbff7a831235..727c65221aef 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8365.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8365.c @@ -416,18 +416,6 @@ static const struct mtk_pin_ies_smt_set mt8365_smt_set= [] =3D { MTK_PIN_IES_SMT_SPEC(144, 144, 0x480, 22), }; =20 -static int mt8365_ies_smt_set(struct regmap *regmap, unsigned int pin, - unsigned char align, int value, enum pin_config_param arg) -{ - if (arg =3D=3D PIN_CONFIG_INPUT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8365_ies_set, - ARRAY_SIZE(mt8365_ies_set), pin, align, value); - else if (arg =3D=3D PIN_CONFIG_INPUT_SCHMITT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8365_smt_set, - ARRAY_SIZE(mt8365_smt_set), pin, align, value); - return -EINVAL; -} - static const struct mtk_pinctrl_devdata mt8365_pinctrl_data =3D { .pins =3D mtk_pins_mt8365, .npins =3D ARRAY_SIZE(mtk_pins_mt8365), @@ -435,10 +423,14 @@ static const struct mtk_pinctrl_devdata mt8365_pinctr= l_data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8365_drv_grp), .pin_drv_grp =3D mt8365_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8365_pin_drv), + .spec_ies =3D mt8365_ies_set, + .n_spec_ies =3D ARRAY_SIZE(mt8365_ies_set), + .spec_smt =3D mt8365_smt_set, + .n_spec_smt =3D ARRAY_SIZE(mt8365_smt_set), .spec_pupd =3D mt8365_spec_pupd, .n_spec_pupd =3D ARRAY_SIZE(mt8365_spec_pupd), .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, - .spec_ies_smt_set =3D mt8365_ies_smt_set, + .spec_ies_smt_set =3D mtk_pconf_spec_set_ies_smt_range, .dir_offset =3D 0x0140, .dout_offset =3D 0x00A0, .din_offset =3D 0x0000, diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8516.c b/drivers/pinctrl/me= diatek/pinctrl-mt8516.c index 8ad2006857c0..939a1932b8dc 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mt8516.c +++ b/drivers/pinctrl/mediatek/pinctrl-mt8516.c @@ -285,18 +285,6 @@ static const struct mtk_pin_ies_smt_set mt8516_smt_set= [] =3D { MTK_PIN_IES_SMT_SPEC(121, 124, 0xA10, 9), }; =20 -static int mt8516_ies_smt_set(struct regmap *regmap, unsigned int pin, - unsigned char align, int value, enum pin_config_param arg) -{ - if (arg =3D=3D PIN_CONFIG_INPUT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8516_ies_set, - ARRAY_SIZE(mt8516_ies_set), pin, align, value); - else if (arg =3D=3D PIN_CONFIG_INPUT_SCHMITT_ENABLE) - return mtk_pconf_spec_set_ies_smt_range(regmap, mt8516_smt_set, - ARRAY_SIZE(mt8516_smt_set), pin, align, value); - return -EINVAL; -} - static const struct mtk_pinctrl_devdata mt8516_pinctrl_data =3D { .pins =3D mtk_pins_mt8516, .npins =3D ARRAY_SIZE(mtk_pins_mt8516), @@ -304,10 +292,14 @@ static const struct mtk_pinctrl_devdata mt8516_pinctr= l_data =3D { .n_grp_cls =3D ARRAY_SIZE(mt8516_drv_grp), .pin_drv_grp =3D mt8516_pin_drv, .n_pin_drv_grps =3D ARRAY_SIZE(mt8516_pin_drv), + .spec_ies =3D mt8516_ies_set, + .n_spec_ies =3D ARRAY_SIZE(mt8516_ies_set), .spec_pupd =3D mt8516_spec_pupd, .n_spec_pupd =3D ARRAY_SIZE(mt8516_spec_pupd), + .spec_smt =3D mt8516_smt_set, + .n_spec_smt =3D ARRAY_SIZE(mt8516_smt_set), .spec_pull_set =3D mtk_pctrl_spec_pull_set_samereg, - .spec_ies_smt_set =3D mt8516_ies_smt_set, + .spec_ies_smt_set =3D mtk_pconf_spec_set_ies_smt_range, .dir_offset =3D 0x0000, .pullen_offset =3D 0x0500, .pullsel_offset =3D 0x0600, diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctr= l/mediatek/pinctrl-mtk-common.c index 5c70d4b7d7ed..97ef156d8dd5 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c @@ -131,7 +131,7 @@ static int mtk_pconf_set_ies_smt(struct mtk_pinctrl *pc= tl, unsigned pin, */ if (pctl->devdata->spec_ies_smt_set) { return pctl->devdata->spec_ies_smt_set(mtk_get_regmap(pctl, pin), - pin, pctl->devdata->port_align, value, arg); + pctl->devdata, pin, value, arg); } =20 if (arg =3D=3D PIN_CONFIG_INPUT_ENABLE) @@ -151,10 +151,27 @@ static int mtk_pconf_set_ies_smt(struct mtk_pinctrl *= pctl, unsigned pin, } =20 int mtk_pconf_spec_set_ies_smt_range(struct regmap *regmap, - const struct mtk_pin_ies_smt_set *ies_smt_infos, unsigned int info_num, - unsigned int pin, unsigned char align, int value) + const struct mtk_pinctrl_devdata *devdata, + unsigned int pin, int value, enum pin_config_param arg) { - unsigned int i, reg_addr, bit; + const struct mtk_pin_ies_smt_set *ies_smt_infos =3D NULL; + unsigned int i, info_num, reg_addr, bit; + + switch (arg) { + case PIN_CONFIG_INPUT_ENABLE: + ies_smt_infos =3D devdata->spec_ies; + info_num =3D devdata->n_spec_ies; + break; + case PIN_CONFIG_INPUT_SCHMITT_ENABLE: + ies_smt_infos =3D devdata->spec_smt; + info_num =3D devdata->n_spec_smt; + break; + default: + break; + }; + + if (!ies_smt_infos) + return -EINVAL; =20 for (i =3D 0; i < info_num; i++) { if (pin >=3D ies_smt_infos[i].start && @@ -167,9 +184,9 @@ int mtk_pconf_spec_set_ies_smt_range(struct regmap *reg= map, return -EINVAL; =20 if (value) - reg_addr =3D ies_smt_infos[i].offset + align; + reg_addr =3D ies_smt_infos[i].offset + devdata->port_align; else - reg_addr =3D ies_smt_infos[i].offset + (align << 1); + reg_addr =3D ies_smt_infos[i].offset + (devdata->port_align << 1); =20 bit =3D BIT(ies_smt_infos[i].bit); regmap_write(regmap, reg_addr, bit); diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h b/drivers/pinctr= l/mediatek/pinctrl-mtk-common.h index f7968a6ac563..6fe8564334c9 100644 --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.h @@ -193,8 +193,12 @@ struct mtk_eint_offsets { * * @grp_desc: The driving group info. * @pin_drv_grp: The driving group for all pins. + * @spec_ies: Special pin setting for input enable + * @n_spec_ies: Number of entries in spec_ies * @spec_pupd: Special pull up/down setting * @n_spec_pupd: Number of entries in spec_pupd + * @spec_smt: Special pin setting for schmitt + * @n_spec_smt: Number of entries in spec_smt * @spec_pull_set: Each SoC may have special pins for pull up/down setting, * these pins' pull setting are very different, they have separate pull * up/down bit, R0 and R1 resistor bit, so they need special pull setting. @@ -233,13 +237,18 @@ struct mtk_pinctrl_devdata { unsigned int n_grp_cls; const struct mtk_pin_drv_grp *pin_drv_grp; unsigned int n_pin_drv_grps; + const struct mtk_pin_ies_smt_set *spec_ies; + unsigned int n_spec_ies; const struct mtk_pin_spec_pupd_set_samereg *spec_pupd; unsigned int n_spec_pupd; + const struct mtk_pin_ies_smt_set *spec_smt; + unsigned int n_spec_smt; int (*spec_pull_set)(struct regmap *regmap, const struct mtk_pinctrl_devdata *devdata, unsigned int pin, bool isup, unsigned int r1r0); - int (*spec_ies_smt_set)(struct regmap *reg, unsigned int pin, - unsigned char align, int value, enum pin_config_param arg); + int (*spec_ies_smt_set)(struct regmap *reg, + const struct mtk_pinctrl_devdata *devdata, + unsigned int pin, int value, enum pin_config_param arg); void (*spec_pinmux_set)(struct regmap *reg, unsigned int pin, unsigned int mode); void (*spec_dir_set)(unsigned int *reg_addr, unsigned int pin); @@ -289,8 +298,8 @@ int mtk_pctrl_spec_pull_set_samereg(struct regmap *regm= ap, unsigned int pin, bool isup, unsigned int r1r0); =20 int mtk_pconf_spec_set_ies_smt_range(struct regmap *regmap, - const struct mtk_pin_ies_smt_set *ies_smt_infos, unsigned int info_num, - unsigned int pin, unsigned char align, int value); + const struct mtk_pinctrl_devdata *devdata, + unsigned int pin, int value, enum pin_config_param arg); =20 extern const struct dev_pm_ops mtk_eint_pm_ops; =20 --=20 2.33.1