From nobody Wed Nov 13 07:19:01 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 42599C636CC for ; Mon, 20 Feb 2023 15:01:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230121AbjBTPBv (ORCPT ); Mon, 20 Feb 2023 10:01:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46656 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229451AbjBTPB3 (ORCPT ); Mon, 20 Feb 2023 10:01:29 -0500 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3D061DBB4; Mon, 20 Feb 2023 07:01:21 -0800 (PST) Received: from IcarusMOD.eternityproject.eu (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id 40E096602169; Mon, 20 Feb 2023 15:01:19 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1676905280; bh=P3W6+B36W4E9DtgYTRH6j92qmH82MuwCqGFuyNJSHpI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LeGwRXeUaUfj8PlHauxgLOWkJcRXn3Yc2LATyyYoNS72wQyz/+QRzzvGm7wfKL/s9 FqLxMoIpIKRJSNP4f50Fi6qihDvilUIxO9slTgjwAkdcu75lNj2OTHbJ8gzHRg2Bko Ri0acn56nZ+Naw5En7ry4tfQQmdoQb2aNqhHWVPFkbUg2paaIUin+8DZbZpzgfvBCN fgcQEhgY727SEDOeE4DISCMu5r/6vbx6b+06EYIWRySLSARdP6rkfybcEtUy2whso5 qfjHdhrOreUtNkbVVILs7KCGg02Nr9E2C1PV59v7uuZ8U8aespO08SOkR2i9h3hbj3 ODfLcISxZ+0ww== From: AngeloGioacchino Del Regno To: mturquette@baylibre.com Cc: sboyd@kernel.org, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com, wenst@chromium.org, johnson.wang@mediatek.com, miles.chen@mediatek.com, chun-jie.chen@mediatek.com, daniel@makrotopia.org, fparent@baylibre.com, msp@baylibre.com, nfraprado@collabora.com, rex-bc.chen@mediatek.com, zhaojh329@gmail.com, sam.shih@mediatek.com, edward-jw.yang@mediatek.com, yangyingliang@huawei.com, granquet@baylibre.com, pablo.sun@mediatek.com, sean.wang@mediatek.com, chen.zhong@mediatek.com, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: [PATCH v3 03/55] clk: mediatek: Migrate to mtk_clk_pdev_probe() for multimedia clocks Date: Mon, 20 Feb 2023 16:00:19 +0100 Message-Id: <20230220150111.77897-4-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230220150111.77897-1-angelogioacchino.delregno@collabora.com> References: <20230220150111.77897-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 duplication and simplify all MediaTek multimedia clock drivers by migrating away from defining custom probe functions for each driver and instead use mtk_clk_pdev_probe(). While at it, also add a .remove() callback to all of the multimedia clock drivers where missing. Signed-off-by: AngeloGioacchino Del Regno Reviewed-by: Chen-Yu Tsai --- drivers/clk/mediatek/clk-mt2701-mm.c | 31 +++++--------- drivers/clk/mediatek/clk-mt2712-mm.c | 31 +++++--------- drivers/clk/mediatek/clk-mt6779-mm.c | 24 +++++------ drivers/clk/mediatek/clk-mt6795-mm.c | 55 +++++------------------- drivers/clk/mediatek/clk-mt6797-mm.c | 31 +++++--------- drivers/clk/mediatek/clk-mt8167-mm.c | 47 +++++---------------- drivers/clk/mediatek/clk-mt8173-mm.c | 58 +++++--------------------- drivers/clk/mediatek/clk-mt8183-mm.c | 24 +++++------ drivers/clk/mediatek/clk-mt8186-mm.c | 56 +++++-------------------- drivers/clk/mediatek/clk-mt8192-mm.c | 29 +++++-------- drivers/clk/mediatek/clk-mt8195-vdo0.c | 55 +++++------------------- drivers/clk/mediatek/clk-mt8195-vdo1.c | 57 ++++++------------------- drivers/clk/mediatek/clk-mt8195-vpp0.c | 54 +++++------------------- drivers/clk/mediatek/clk-mt8195-vpp1.c | 54 +++++------------------- drivers/clk/mediatek/clk-mt8365-mm.c | 39 +++++------------ 15 files changed, 165 insertions(+), 480 deletions(-) diff --git a/drivers/clk/mediatek/clk-mt2701-mm.c b/drivers/clk/mediatek/cl= k-mt2701-mm.c index 23d5ddcc1d37..a8d94ca0eefd 100644 --- a/drivers/clk/mediatek/clk-mt2701-mm.c +++ b/drivers/clk/mediatek/clk-mt2701-mm.c @@ -79,32 +79,23 @@ static const struct mtk_gate mm_clks[] =3D { GATE_DISP1(CLK_MM_TVE_FMM, "mm_tve_fmm", "mm_sel", 14), }; =20 -static int clk_mt2701_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int r; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR); - - mtk_clk_register_gates(&pdev->dev, node, mm_clks, - ARRAY_SIZE(mm_clks), clk_data); - - r =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (r) - dev_err(&pdev->dev, - "could not register clock provider: %s: %d\n", - pdev->name, r); +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_clks, + .num_clks =3D ARRAY_SIZE(mm_clks), +}; =20 - return r; -} +static const struct platform_device_id clk_mt2701_mm_id_table[] =3D { + { .name =3D "clk-mt2701-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt2701_mm_drv =3D { - .probe =3D clk_mt2701_mm_probe, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt2701-mm", }, + .id_table =3D clk_mt2701_mm_id_table, }; =20 builtin_platform_driver(clk_mt2701_mm_drv); diff --git a/drivers/clk/mediatek/clk-mt2712-mm.c b/drivers/clk/mediatek/cl= k-mt2712-mm.c index 25b8af640c12..615f6b0fe96e 100644 --- a/drivers/clk/mediatek/clk-mt2712-mm.c +++ b/drivers/clk/mediatek/clk-mt2712-mm.c @@ -126,32 +126,23 @@ static const struct mtk_gate mm_clks[] =3D { GATE_MM2(CLK_MM_DSI3_DIGITAL, "mm_dsi3_digital", "dsi1_lntc", 6), }; =20 -static int clk_mt2712_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int r; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR_CLK); - - mtk_clk_register_gates(&pdev->dev, node, mm_clks, - ARRAY_SIZE(mm_clks), clk_data); - - r =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - - if (r !=3D 0) - pr_err("%s(): could not register clock provider: %d\n", - __func__, r); +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_clks, + .num_clks =3D ARRAY_SIZE(mm_clks), +}; =20 - return r; -} +static const struct platform_device_id clk_mt2712_mm_id_table[] =3D { + { .name =3D "clk-mt2712-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt2712_mm_drv =3D { - .probe =3D clk_mt2712_mm_probe, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt2712-mm", }, + .id_table =3D clk_mt2712_mm_id_table, }; =20 builtin_platform_driver(clk_mt2712_mm_drv); diff --git a/drivers/clk/mediatek/clk-mt6779-mm.c b/drivers/clk/mediatek/cl= k-mt6779-mm.c index 2cccf62d3b36..219a3a7920cd 100644 --- a/drivers/clk/mediatek/clk-mt6779-mm.c +++ b/drivers/clk/mediatek/clk-mt6779-mm.c @@ -85,25 +85,23 @@ static const struct mtk_gate mm_clks[] =3D { GATE_MM1(CLK_MM_DISP_OVL_FBDC, "mm_disp_ovl_fbdc", "mm_sel", 16), }; =20 -static int clk_mt6779_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR_CLK); - - mtk_clk_register_gates(&pdev->dev, node, mm_clks, - ARRAY_SIZE(mm_clks), clk_data); +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_clks, + .num_clks =3D ARRAY_SIZE(mm_clks), +}; =20 - return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); -} +static const struct platform_device_id clk_mt6779_mm_id_table[] =3D { + { .name =3D "clk-mt6779-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt6779_mm_drv =3D { - .probe =3D clk_mt6779_mm_probe, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt6779-mm", }, + .id_table =3D clk_mt6779_mm_id_table, }; =20 module_platform_driver(clk_mt6779_mm_drv); diff --git a/drivers/clk/mediatek/clk-mt6795-mm.c b/drivers/clk/mediatek/cl= k-mt6795-mm.c index eebb6143ada2..c0c61a08cd72 100644 --- a/drivers/clk/mediatek/clk-mt6795-mm.c +++ b/drivers/clk/mediatek/clk-mt6795-mm.c @@ -76,56 +76,23 @@ static const struct mtk_gate mm_gates[] =3D { GATE_MM1(CLK_MM_DPI_ENGINE, "mm_dpi_engine", "mm_sel", 9), }; =20 -static int clk_mt6795_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int ret; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR_CLK); - if (!clk_data) - return -ENOMEM; - - ret =3D mtk_clk_register_gates(&pdev->dev, node, mm_gates, - ARRAY_SIZE(mm_gates), clk_data); - if (ret) - goto free_clk_data; - - ret =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (ret) - goto unregister_gates; - - platform_set_drvdata(pdev, clk_data); - - return 0; - -unregister_gates: - mtk_clk_unregister_gates(mm_gates, ARRAY_SIZE(mm_gates), clk_data); -free_clk_data: - mtk_free_clk_data(clk_data); - return ret; -} - -static int clk_mt6795_mm_remove(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data =3D platform_get_drvdata(pdev); - - of_clk_del_provider(node); - mtk_clk_unregister_gates(mm_gates, ARRAY_SIZE(mm_gates), clk_data); - mtk_free_clk_data(clk_data); +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_gates, + .num_clks =3D ARRAY_SIZE(mm_gates), +}; =20 - return 0; -} +static const struct platform_device_id clk_mt6795_mm_id_table[] =3D { + { .name =3D "clk-mt6795-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt6795_mm_drv =3D { .driver =3D { .name =3D "clk-mt6795-mm", }, - .probe =3D clk_mt6795_mm_probe, - .remove =3D clk_mt6795_mm_remove, + .id_table =3D clk_mt6795_mm_id_table, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, }; module_platform_driver(clk_mt6795_mm_drv); =20 diff --git a/drivers/clk/mediatek/clk-mt6797-mm.c b/drivers/clk/mediatek/cl= k-mt6797-mm.c index deb16a6b16a5..706c9775646d 100644 --- a/drivers/clk/mediatek/clk-mt6797-mm.c +++ b/drivers/clk/mediatek/clk-mt6797-mm.c @@ -92,32 +92,23 @@ static const struct mtk_gate mm_clks[] =3D { "clk26m", 3), }; =20 -static int clk_mt6797_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int r; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR); - - mtk_clk_register_gates(&pdev->dev, node, mm_clks, - ARRAY_SIZE(mm_clks), clk_data); - - r =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (r) - dev_err(&pdev->dev, - "could not register clock provider: %s: %d\n", - pdev->name, r); +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_clks, + .num_clks =3D ARRAY_SIZE(mm_clks), +}; =20 - return r; -} +static const struct platform_device_id clk_mt6797_mm_id_table[] =3D { + { .name =3D "clk-mt6797-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt6797_mm_drv =3D { - .probe =3D clk_mt6797_mm_probe, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt6797-mm", }, + .id_table =3D clk_mt6797_mm_id_table, }; =20 builtin_platform_driver(clk_mt6797_mm_drv); diff --git a/drivers/clk/mediatek/clk-mt8167-mm.c b/drivers/clk/mediatek/cl= k-mt8167-mm.c index c0b44104c765..78c023b0565a 100644 --- a/drivers/clk/mediatek/clk-mt8167-mm.c +++ b/drivers/clk/mediatek/clk-mt8167-mm.c @@ -86,47 +86,22 @@ static const struct mtk_gate mm_clks[] =3D { GATE_MM1(CLK_MM_HDMI_PLL, "mm_hdmi_pll", "hdmtx_dig_cts", 21), }; =20 -struct clk_mt8167_mm_driver_data { - const struct mtk_gate *gates_clk; - int gates_num; +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_clks, + .num_clks =3D ARRAY_SIZE(mm_clks), }; =20 -static const struct clk_mt8167_mm_driver_data mt8167_mmsys_driver_data =3D= { - .gates_clk =3D mm_clks, - .gates_num =3D ARRAY_SIZE(mm_clks), +static const struct platform_device_id clk_mt8167_mm_id_table[] =3D { + { .name =3D "clk-mt8167-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } }; =20 -static int clk_mt8167_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - const struct clk_mt8167_mm_driver_data *data; - struct clk_hw_onecell_data *clk_data; - int ret; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR_CLK); - if (!clk_data) - return -ENOMEM; - - data =3D &mt8167_mmsys_driver_data; - - ret =3D mtk_clk_register_gates(&pdev->dev, node, data->gates_clk, - data->gates_num, clk_data); - if (ret) - return ret; - - ret =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (ret) - return ret; - - return 0; -} - -static struct platform_driver clk_mt8173_mm_drv =3D { +static struct platform_driver clk_mt8167_mm_drv =3D { + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt8167-mm", }, - .probe =3D clk_mt8167_mm_probe, + .id_table =3D clk_mt8167_mm_id_table, }; - -builtin_platform_driver(clk_mt8173_mm_drv); +builtin_platform_driver(clk_mt8167_mm_drv); diff --git a/drivers/clk/mediatek/clk-mt8173-mm.c b/drivers/clk/mediatek/cl= k-mt8173-mm.c index 315430ad1581..ffec2d917661 100644 --- a/drivers/clk/mediatek/clk-mt8173-mm.c +++ b/drivers/clk/mediatek/clk-mt8173-mm.c @@ -44,6 +44,7 @@ static const struct mtk_gate_regs mm1_cg_regs =3D { } =20 static const struct mtk_gate mt8173_mm_clks[] =3D { + GATE_DUMMY(CLK_DUMMY, "mm_dummy"), /* MM0 */ GATE_MM0(CLK_MM_SMI_COMMON, "mm_smi_common", "mm_sel", 0), GATE_MM0(CLK_MM_SMI_LARB0, "mm_smi_larb0", "mm_sel", 1), @@ -100,62 +101,23 @@ static const struct mtk_gate mt8173_mm_clks[] =3D { GATE_MM1(CLK_MM_HDMI_HDCP24M, "mm_hdmi_hdcp24m", "hdcp_24m_sel", 20), }; =20 -struct clk_mt8173_mm_driver_data { - const struct mtk_gate *gates_clk; - int gates_num; +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mt8173_mm_clks, + .num_clks =3D ARRAY_SIZE(mt8173_mm_clks), }; =20 -static const struct clk_mt8173_mm_driver_data mt8173_mmsys_driver_data =3D= { - .gates_clk =3D mt8173_mm_clks, - .gates_num =3D ARRAY_SIZE(mt8173_mm_clks), +static const struct platform_device_id clk_mt8173_mm_id_table[] =3D { + { .name =3D "clk-mt8173-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } }; =20 -static int clk_mt8173_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - const struct clk_mt8173_mm_driver_data *data; - struct clk_hw_onecell_data *clk_data; - int ret; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR_CLK); - if (!clk_data) - return -ENOMEM; - - data =3D &mt8173_mmsys_driver_data; - - ret =3D mtk_clk_register_gates(&pdev->dev, node, data->gates_clk, - data->gates_num, clk_data); - if (ret) - return ret; - - ret =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (ret) - return ret; - - return 0; -} - -static int clk_mt8173_mm_remove(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data =3D platform_get_drvdata(pdev); - const struct clk_mt8173_mm_driver_data *data =3D &mt8173_mmsys_driver_dat= a; - - of_clk_del_provider(node); - mtk_clk_unregister_gates(data->gates_clk, data->gates_num, clk_data); - mtk_free_clk_data(clk_data); - - return 0; -} - static struct platform_driver clk_mt8173_mm_drv =3D { .driver =3D { .name =3D "clk-mt8173-mm", }, - .probe =3D clk_mt8173_mm_probe, - .remove =3D clk_mt8173_mm_remove, + .id_table =3D clk_mt8173_mm_id_table, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, }; =20 builtin_platform_driver(clk_mt8173_mm_drv); diff --git a/drivers/clk/mediatek/clk-mt8183-mm.c b/drivers/clk/mediatek/cl= k-mt8183-mm.c index 358031530913..669dcdd66efb 100644 --- a/drivers/clk/mediatek/clk-mt8183-mm.c +++ b/drivers/clk/mediatek/clk-mt8183-mm.c @@ -82,25 +82,23 @@ static const struct mtk_gate mm_clks[] =3D { GATE_MM1(CLK_MM_DBI_IF, "mm_dbi_if", "dpi0_sel", 13), }; =20 -static int clk_mt8183_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR_CLK); - - mtk_clk_register_gates(&pdev->dev, node, mm_clks, - ARRAY_SIZE(mm_clks), clk_data); +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_clks, + .num_clks =3D ARRAY_SIZE(mm_clks), +}; =20 - return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); -} +static const struct platform_device_id clk_mt8183_mm_id_table[] =3D { + { .name =3D "clk-mt8183-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt8183_mm_drv =3D { - .probe =3D clk_mt8183_mm_probe, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt8183-mm", }, + .id_table =3D clk_mt8183_mm_id_table, }; =20 builtin_platform_driver(clk_mt8183_mm_drv); diff --git a/drivers/clk/mediatek/clk-mt8186-mm.c b/drivers/clk/mediatek/cl= k-mt8186-mm.c index 0b72607777fa..6506a8b848a9 100644 --- a/drivers/clk/mediatek/clk-mt8186-mm.c +++ b/drivers/clk/mediatek/clk-mt8186-mm.c @@ -58,55 +58,21 @@ static const struct mtk_gate mm_clks[] =3D { GATE_MM1(CLK_MM_DISP_26M, "mm_disp_26m_ck", "top_disp", 10), }; =20 -static int clk_mt8186_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int r; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR_CLK); - if (!clk_data) - return -ENOMEM; - - r =3D mtk_clk_register_gates(&pdev->dev, node, mm_clks, - ARRAY_SIZE(mm_clks), clk_data); - if (r) - goto free_mm_data; - - r =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (r) - goto unregister_gates; - - platform_set_drvdata(pdev, clk_data); - - return r; - -unregister_gates: - mtk_clk_unregister_gates(mm_clks, ARRAY_SIZE(mm_clks), clk_data); -free_mm_data: - mtk_free_clk_data(clk_data); - return r; -} - -static int clk_mt8186_mm_remove(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data =3D platform_get_drvdata(pdev); - - of_clk_del_provider(node); - mtk_clk_unregister_gates(mm_clks, ARRAY_SIZE(mm_clks), clk_data); - mtk_free_clk_data(clk_data); - - return 0; -} +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_clks, + .num_clks =3D ARRAY_SIZE(mm_clks), +}; =20 +static const struct platform_device_id clk_mt8186_mm_id_table[] =3D { + { .name =3D "clk-mt8186-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } +}; static struct platform_driver clk_mt8186_mm_drv =3D { - .probe =3D clk_mt8186_mm_probe, - .remove =3D clk_mt8186_mm_remove, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt8186-mm", }, + .id_table =3D clk_mt8186_mm_id_table, }; builtin_platform_driver(clk_mt8186_mm_drv); diff --git a/drivers/clk/mediatek/clk-mt8192-mm.c b/drivers/clk/mediatek/cl= k-mt8192-mm.c index e9eb4cf8349a..638e6faae84c 100644 --- a/drivers/clk/mediatek/clk-mt8192-mm.c +++ b/drivers/clk/mediatek/clk-mt8192-mm.c @@ -80,30 +80,23 @@ static const struct mtk_gate mm_clks[] =3D { GATE_MM2(CLK_MM_32KHZ, "mm_32khz", "clk32k", 25), }; =20 -static int clk_mt8192_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int r; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR_CLK); - if (!clk_data) - return -ENOMEM; - - r =3D mtk_clk_register_gates(&pdev->dev, node, mm_clks, - ARRAY_SIZE(mm_clks), clk_data); - if (r) - return r; +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_clks, + .num_clks =3D ARRAY_SIZE(mm_clks), +}; =20 - return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); -} +static const struct platform_device_id clk_mt8192_mm_id_table[] =3D { + { .name =3D "clk-mt8192-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt8192_mm_drv =3D { - .probe =3D clk_mt8192_mm_probe, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt8192-mm", }, + .id_table =3D clk_mt8192_mm_id_table, }; =20 builtin_platform_driver(clk_mt8192_mm_drv); diff --git a/drivers/clk/mediatek/clk-mt8195-vdo0.c b/drivers/clk/mediatek/= clk-mt8195-vdo0.c index 839b730688ac..492c1e133d0d 100644 --- a/drivers/clk/mediatek/clk-mt8195-vdo0.c +++ b/drivers/clk/mediatek/clk-mt8195-vdo0.c @@ -93,55 +93,22 @@ static const struct mtk_gate vdo0_clks[] =3D { "top_edp", 16, CLK_SET_RATE_PARENT), }; =20 -static int clk_mt8195_vdo0_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int r; - - clk_data =3D mtk_alloc_clk_data(CLK_VDO0_NR_CLK); - if (!clk_data) - return -ENOMEM; - - r =3D mtk_clk_register_gates(&pdev->dev, node, vdo0_clks, - ARRAY_SIZE(vdo0_clks), clk_data); - if (r) - goto free_vdo0_data; - - r =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (r) - goto unregister_gates; - - platform_set_drvdata(pdev, clk_data); - - return r; - -unregister_gates: - mtk_clk_unregister_gates(vdo0_clks, ARRAY_SIZE(vdo0_clks), clk_data); -free_vdo0_data: - mtk_free_clk_data(clk_data); - return r; -} - -static int clk_mt8195_vdo0_remove(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data =3D platform_get_drvdata(pdev); - - of_clk_del_provider(node); - mtk_clk_unregister_gates(vdo0_clks, ARRAY_SIZE(vdo0_clks), clk_data); - mtk_free_clk_data(clk_data); +static const struct mtk_clk_desc vdo0_desc =3D { + .clks =3D vdo0_clks, + .num_clks =3D ARRAY_SIZE(vdo0_clks), +}; =20 - return 0; -} +static const struct platform_device_id clk_mt8195_vdo0_id_table[] =3D { + { .name =3D "clk-mt8195-vdo0", .driver_data =3D (kernel_ulong_t)&vdo0_des= c }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt8195_vdo0_drv =3D { - .probe =3D clk_mt8195_vdo0_probe, - .remove =3D clk_mt8195_vdo0_remove, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt8195-vdo0", }, + .id_table =3D clk_mt8195_vdo0_id_table, }; builtin_platform_driver(clk_mt8195_vdo0_drv); diff --git a/drivers/clk/mediatek/clk-mt8195-vdo1.c b/drivers/clk/mediatek/= clk-mt8195-vdo1.c index 7df695b28925..76e9f4496e43 100644 --- a/drivers/clk/mediatek/clk-mt8195-vdo1.c +++ b/drivers/clk/mediatek/clk-mt8195-vdo1.c @@ -120,55 +120,22 @@ static const struct mtk_gate vdo1_clks[] =3D { GATE_VDO1_4(CLK_VDO1_DPI1_HDMI, "vdo1_dpi1_hdmi", "hdmi_txpll", 0), }; =20 -static int clk_mt8195_vdo1_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int r; - - clk_data =3D mtk_alloc_clk_data(CLK_VDO1_NR_CLK); - if (!clk_data) - return -ENOMEM; - - r =3D mtk_clk_register_gates(&pdev->dev, node, vdo1_clks, - ARRAY_SIZE(vdo1_clks), clk_data); - if (r) - goto free_vdo1_data; - - r =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (r) - goto unregister_gates; - - platform_set_drvdata(pdev, clk_data); - - return r; - -unregister_gates: - mtk_clk_unregister_gates(vdo1_clks, ARRAY_SIZE(vdo1_clks), clk_data); -free_vdo1_data: - mtk_free_clk_data(clk_data); - return r; -} - -static int clk_mt8195_vdo1_remove(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data =3D platform_get_drvdata(pdev); - - of_clk_del_provider(node); - mtk_clk_unregister_gates(vdo1_clks, ARRAY_SIZE(vdo1_clks), clk_data); - mtk_free_clk_data(clk_data); - - return 0; -} +static const struct mtk_clk_desc vdo1_desc =3D { + .clks =3D vdo1_clks, + .num_clks =3D ARRAY_SIZE(vdo1_clks), +}; + +static const struct platform_device_id clk_mt8195_vdo1_id_table[] =3D { + { .name =3D "clk-mt8195-vdo1", .driver_data =3D (kernel_ulong_t)&vdo1_des= c }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt8195_vdo1_drv =3D { - .probe =3D clk_mt8195_vdo1_probe, - .remove =3D clk_mt8195_vdo1_remove, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt8195-vdo1", }, + .id_table =3D clk_mt8195_vdo1_id_table, }; builtin_platform_driver(clk_mt8195_vdo1_drv); diff --git a/drivers/clk/mediatek/clk-mt8195-vpp0.c b/drivers/clk/mediatek/= clk-mt8195-vpp0.c index debff9a8c071..15f1a081358a 100644 --- a/drivers/clk/mediatek/clk-mt8195-vpp0.c +++ b/drivers/clk/mediatek/clk-mt8195-vpp0.c @@ -86,54 +86,22 @@ static const struct mtk_gate vpp0_clks[] =3D { GATE_VPP0_2(CLK_VPP0_WARP1_MDP_DL_ASYNC, "vpp0_warp1_mdp_dl_async", "top_= wpe_vpp", 3), }; =20 -static int clk_mt8195_vpp0_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int r; - - clk_data =3D mtk_alloc_clk_data(CLK_VPP0_NR_CLK); - if (!clk_data) - return -ENOMEM; - - r =3D mtk_clk_register_gates(&pdev->dev, node, vpp0_clks, ARRAY_SIZE(vpp0= _clks), clk_data); - if (r) - goto free_vpp0_data; - - r =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (r) - goto unregister_gates; - - platform_set_drvdata(pdev, clk_data); - - return r; - -unregister_gates: - mtk_clk_unregister_gates(vpp0_clks, ARRAY_SIZE(vpp0_clks), clk_data); -free_vpp0_data: - mtk_free_clk_data(clk_data); - return r; -} - -static int clk_mt8195_vpp0_remove(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data =3D platform_get_drvdata(pdev); - - of_clk_del_provider(node); - mtk_clk_unregister_gates(vpp0_clks, ARRAY_SIZE(vpp0_clks), clk_data); - mtk_free_clk_data(clk_data); +static const struct mtk_clk_desc vpp0_desc =3D { + .clks =3D vpp0_clks, + .num_clks =3D ARRAY_SIZE(vpp0_clks), +}; =20 - return 0; -} +static const struct platform_device_id clk_mt8195_vpp0_id_table[] =3D { + { .name =3D "clk-mt8195-vpp0", .driver_data =3D (kernel_ulong_t)&vpp0_des= c }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt8195_vpp0_drv =3D { - .probe =3D clk_mt8195_vpp0_probe, - .remove =3D clk_mt8195_vpp0_remove, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt8195-vpp0", }, + .id_table =3D clk_mt8195_vpp0_id_table, }; builtin_platform_driver(clk_mt8195_vpp0_drv); diff --git a/drivers/clk/mediatek/clk-mt8195-vpp1.c b/drivers/clk/mediatek/= clk-mt8195-vpp1.c index beacbd94ef02..794f21cf5e65 100644 --- a/drivers/clk/mediatek/clk-mt8195-vpp1.c +++ b/drivers/clk/mediatek/clk-mt8195-vpp1.c @@ -84,54 +84,22 @@ static const struct mtk_gate vpp1_clks[] =3D { GATE_VPP1_1(CLK_VPP1_VPP_SPLIT_26M, "vpp1_vpp_split_26m", "clk26m", 26), }; =20 -static int clk_mt8195_vpp1_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int r; - - clk_data =3D mtk_alloc_clk_data(CLK_VPP1_NR_CLK); - if (!clk_data) - return -ENOMEM; - - r =3D mtk_clk_register_gates(&pdev->dev, node, vpp1_clks, ARRAY_SIZE(vpp1= _clks), clk_data); - if (r) - goto free_vpp1_data; - - r =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (r) - goto unregister_gates; - - platform_set_drvdata(pdev, clk_data); - - return r; - -unregister_gates: - mtk_clk_unregister_gates(vpp1_clks, ARRAY_SIZE(vpp1_clks), clk_data); -free_vpp1_data: - mtk_free_clk_data(clk_data); - return r; -} - -static int clk_mt8195_vpp1_remove(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data =3D platform_get_drvdata(pdev); - - of_clk_del_provider(node); - mtk_clk_unregister_gates(vpp1_clks, ARRAY_SIZE(vpp1_clks), clk_data); - mtk_free_clk_data(clk_data); +static const struct mtk_clk_desc vpp1_desc =3D { + .clks =3D vpp1_clks, + .num_clks =3D ARRAY_SIZE(vpp1_clks), +}; =20 - return 0; -} +static const struct platform_device_id clk_mt8195_vpp1_id_table[] =3D { + { .name =3D "clk-mt8195-vpp1", .driver_data =3D (kernel_ulong_t)&vpp1_des= c }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt8195_vpp1_drv =3D { - .probe =3D clk_mt8195_vpp1_probe, - .remove =3D clk_mt8195_vpp1_remove, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt8195-vpp1", }, + .id_table =3D clk_mt8195_vpp1_id_table, }; builtin_platform_driver(clk_mt8195_vpp1_drv); diff --git a/drivers/clk/mediatek/clk-mt8365-mm.c b/drivers/clk/mediatek/cl= k-mt8365-mm.c index 22c75a03a645..9569be54127c 100644 --- a/drivers/clk/mediatek/clk-mt8365-mm.c +++ b/drivers/clk/mediatek/clk-mt8365-mm.c @@ -72,40 +72,23 @@ static const struct mtk_gate mm_clks[] =3D { GATE_MM1(CLK_MM_LVDSTX_CTS, "mm_flvdstx_cts", "lvdstx_dig_cts", 3), }; =20 -static int clk_mt8365_mm_probe(struct platform_device *pdev) -{ - struct device *dev =3D &pdev->dev; - struct device_node *node =3D dev->parent->of_node; - struct clk_hw_onecell_data *clk_data; - int ret; - - clk_data =3D mtk_alloc_clk_data(CLK_MM_NR_CLK); - - ret =3D mtk_clk_register_gates(dev, node, mm_clks, - ARRAY_SIZE(mm_clks), clk_data); - if (ret) - goto err_free_clk_data; - - ret =3D of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); - if (ret) - goto err_unregister_gates; - - return 0; - -err_unregister_gates: - mtk_clk_unregister_gates(mm_clks, ARRAY_SIZE(mm_clks), clk_data); - -err_free_clk_data: - mtk_free_clk_data(clk_data); +static const struct mtk_clk_desc mm_desc =3D { + .clks =3D mm_clks, + .num_clks =3D ARRAY_SIZE(mm_clks), +}; =20 - return ret; -} +static const struct platform_device_id clk_mt8365_mm_id_table[] =3D { + { .name =3D "clk-mt8365-mm", .driver_data =3D (kernel_ulong_t)&mm_desc }, + { /* sentinel */ } +}; =20 static struct platform_driver clk_mt8365_mm_drv =3D { - .probe =3D clk_mt8365_mm_probe, + .probe =3D mtk_clk_pdev_probe, + .remove =3D mtk_clk_pdev_remove, .driver =3D { .name =3D "clk-mt8365-mm", }, + .id_table =3D clk_mt8365_mm_id_table, }; builtin_platform_driver(clk_mt8365_mm_drv); MODULE_LICENSE("GPL"); --=20 2.39.1