From: Andre Przywara <andre.przywara@arm.com>
To: Samuel Holland <samuel@sholland.org>
Cc: u-boot@lists.denx.de, Jagan Teki <jagan@amarulasolutions.com>,
Lukasz Majewski <lukma@denx.de>,
Sean Anderson <seanga2@gmail.com>, Bin Meng <bmeng.cn@gmail.com>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Maxime Ripard <maxime.ripard@bootlin.com>
Subject: Re: [PATCH 4/7] clk: sunxi: Use a single driver for all variants
Date: Mon, 27 Jun 2022 01:43:41 +0100 [thread overview]
Message-ID: <20220627014341.6794f2bd@slackpad.lan> (raw)
In-Reply-To: <20220509052937.42283-5-samuel@sholland.org>
On Mon, 9 May 2022 00:29:34 -0500
Samuel Holland <samuel@sholland.org> wrote:
Hi,
> Now that all of the variants use the same bind/probe functions and ops,
> there is no need to have a separate driver for each variant. Since most
> SoCs contain two variants (the main CCU and PRCM CCU), this saves a bit
> of firmware size and RAM.
>
> Signed-off-by: Samuel Holland <samuel@sholland.org>
Nice one, I like that cleanup. Again I added support for the F1C100s.
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Cheers,
Andre
> ---
>
> drivers/clk/sunxi/clk_a10.c | 20 +-----
> drivers/clk/sunxi/clk_a10s.c | 20 +-----
> drivers/clk/sunxi/clk_a23.c | 20 +-----
> drivers/clk/sunxi/clk_a31.c | 18 +-----
> drivers/clk/sunxi/clk_a31_r.c | 22 +------
> drivers/clk/sunxi/clk_a64.c | 18 +-----
> drivers/clk/sunxi/clk_a80.c | 22 +------
> drivers/clk/sunxi/clk_a83t.c | 18 +-----
> drivers/clk/sunxi/clk_h3.c | 20 +-----
> drivers/clk/sunxi/clk_h6.c | 18 +-----
> drivers/clk/sunxi/clk_h616.c | 18 +-----
> drivers/clk/sunxi/clk_h6_r.c | 20 +-----
> drivers/clk/sunxi/clk_r40.c | 18 +-----
> drivers/clk/sunxi/clk_sunxi.c | 118 +++++++++++++++++++++++++++++++++-
> drivers/clk/sunxi/clk_v3s.c | 20 +-----
> include/clk/sunxi.h | 12 ----
> 16 files changed, 131 insertions(+), 271 deletions(-)
>
> diff --git a/drivers/clk/sunxi/clk_a10.c b/drivers/clk/sunxi/clk_a10.c
> index e5374f6cf0..4752a1167b 100644
> --- a/drivers/clk/sunxi/clk_a10.c
> +++ b/drivers/clk/sunxi/clk_a10.c
> @@ -62,27 +62,9 @@ static struct ccu_reset a10_resets[] = {
> [RST_USB_PHY2] = RESET(0x0cc, BIT(2)),
> };
>
> -static const struct ccu_desc a10_ccu_desc = {
> +const struct ccu_desc a10_ccu_desc = {
> .gates = a10_gates,
> .resets = a10_resets,
> .num_gates = ARRAY_SIZE(a10_gates),
> .num_resets = ARRAY_SIZE(a10_resets),
> };
> -
> -static const struct udevice_id a10_ccu_ids[] = {
> - { .compatible = "allwinner,sun4i-a10-ccu",
> - .data = (ulong)&a10_ccu_desc },
> - { .compatible = "allwinner,sun7i-a20-ccu",
> - .data = (ulong)&a10_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun4i_a10) = {
> - .name = "sun4i_a10_ccu",
> - .id = UCLASS_CLK,
> - .of_match = a10_ccu_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_a10s.c b/drivers/clk/sunxi/clk_a10s.c
> index 07d518c121..9619c5f935 100644
> --- a/drivers/clk/sunxi/clk_a10s.c
> +++ b/drivers/clk/sunxi/clk_a10s.c
> @@ -47,27 +47,9 @@ static struct ccu_reset a10s_resets[] = {
> [RST_USB_PHY1] = RESET(0x0cc, BIT(1)),
> };
>
> -static const struct ccu_desc a10s_ccu_desc = {
> +const struct ccu_desc a10s_ccu_desc = {
> .gates = a10s_gates,
> .resets = a10s_resets,
> .num_gates = ARRAY_SIZE(a10s_gates),
> .num_resets = ARRAY_SIZE(a10s_resets),
> };
> -
> -static const struct udevice_id a10s_ccu_ids[] = {
> - { .compatible = "allwinner,sun5i-a10s-ccu",
> - .data = (ulong)&a10s_ccu_desc },
> - { .compatible = "allwinner,sun5i-a13-ccu",
> - .data = (ulong)&a10s_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun5i_a10s) = {
> - .name = "sun5i_a10s_ccu",
> - .id = UCLASS_CLK,
> - .of_match = a10s_ccu_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_a23.c b/drivers/clk/sunxi/clk_a23.c
> index 9c0e5db07c..5e19c11c23 100644
> --- a/drivers/clk/sunxi/clk_a23.c
> +++ b/drivers/clk/sunxi/clk_a23.c
> @@ -66,27 +66,9 @@ static struct ccu_reset a23_resets[] = {
> [RST_BUS_UART4] = RESET(0x2d8, BIT(20)),
> };
>
> -static const struct ccu_desc a23_ccu_desc = {
> +const struct ccu_desc a23_ccu_desc = {
> .gates = a23_gates,
> .resets = a23_resets,
> .num_gates = ARRAY_SIZE(a23_gates),
> .num_resets = ARRAY_SIZE(a23_resets),
> };
> -
> -static const struct udevice_id a23_clk_ids[] = {
> - { .compatible = "allwinner,sun8i-a23-ccu",
> - .data = (ulong)&a23_ccu_desc },
> - { .compatible = "allwinner,sun8i-a33-ccu",
> - .data = (ulong)&a23_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun8i_a23) = {
> - .name = "sun8i_a23_ccu",
> - .id = UCLASS_CLK,
> - .of_match = a23_clk_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_a31.c b/drivers/clk/sunxi/clk_a31.c
> index 3d0767e290..0aaaaf58ea 100644
> --- a/drivers/clk/sunxi/clk_a31.c
> +++ b/drivers/clk/sunxi/clk_a31.c
> @@ -87,25 +87,9 @@ static struct ccu_reset a31_resets[] = {
> [RST_APB2_UART5] = RESET(0x2d8, BIT(21)),
> };
>
> -static const struct ccu_desc a31_ccu_desc = {
> +const struct ccu_desc a31_ccu_desc = {
> .gates = a31_gates,
> .resets = a31_resets,
> .num_gates = ARRAY_SIZE(a31_gates),
> .num_resets = ARRAY_SIZE(a31_resets),
> };
> -
> -static const struct udevice_id a31_clk_ids[] = {
> - { .compatible = "allwinner,sun6i-a31-ccu",
> - .data = (ulong)&a31_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun6i_a31) = {
> - .name = "sun6i_a31_ccu",
> - .id = UCLASS_CLK,
> - .of_match = a31_clk_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_a31_r.c b/drivers/clk/sunxi/clk_a31_r.c
> index 04c238204d..fa6887fa75 100644
> --- a/drivers/clk/sunxi/clk_a31_r.c
> +++ b/drivers/clk/sunxi/clk_a31_r.c
> @@ -28,29 +28,9 @@ static struct ccu_reset a31_r_resets[] = {
> [RST_APB0_I2C] = RESET(0x0b0, BIT(6)),
> };
>
> -static const struct ccu_desc a31_r_ccu_desc = {
> +const struct ccu_desc a31_r_ccu_desc = {
> .gates = a31_r_gates,
> .resets = a31_r_resets,
> .num_gates = ARRAY_SIZE(a31_r_gates),
> .num_resets = ARRAY_SIZE(a31_r_resets),
> };
> -
> -static const struct udevice_id a31_r_clk_ids[] = {
> - { .compatible = "allwinner,sun8i-a83t-r-ccu",
> - .data = (ulong)&a31_r_ccu_desc },
> - { .compatible = "allwinner,sun8i-h3-r-ccu",
> - .data = (ulong)&a31_r_ccu_desc },
> - { .compatible = "allwinner,sun50i-a64-r-ccu",
> - .data = (ulong)&a31_r_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun6i_a31_r) = {
> - .name = "sun6i_a31_r_ccu",
> - .id = UCLASS_CLK,
> - .of_match = a31_r_clk_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_a64.c b/drivers/clk/sunxi/clk_a64.c
> index b41260cbe6..bd50cd4dda 100644
> --- a/drivers/clk/sunxi/clk_a64.c
> +++ b/drivers/clk/sunxi/clk_a64.c
> @@ -73,25 +73,9 @@ static const struct ccu_reset a64_resets[] = {
> [RST_BUS_UART4] = RESET(0x2d8, BIT(20)),
> };
>
> -static const struct ccu_desc a64_ccu_desc = {
> +const struct ccu_desc a64_ccu_desc = {
> .gates = a64_gates,
> .resets = a64_resets,
> .num_gates = ARRAY_SIZE(a64_gates),
> .num_resets = ARRAY_SIZE(a64_resets),
> };
> -
> -static const struct udevice_id a64_ccu_ids[] = {
> - { .compatible = "allwinner,sun50i-a64-ccu",
> - .data = (ulong)&a64_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun50i_a64) = {
> - .name = "sun50i_a64_ccu",
> - .id = UCLASS_CLK,
> - .of_match = a64_ccu_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_a80.c b/drivers/clk/sunxi/clk_a80.c
> index a3ad3b7804..561380c817 100644
> --- a/drivers/clk/sunxi/clk_a80.c
> +++ b/drivers/clk/sunxi/clk_a80.c
> @@ -72,34 +72,16 @@ static const struct ccu_reset a80_mmc_resets[] = {
> [3] = GATE(0xc, BIT(18)),
> };
>
> -static const struct ccu_desc a80_ccu_desc = {
> +const struct ccu_desc a80_ccu_desc = {
> .gates = a80_gates,
> .resets = a80_resets,
> .num_gates = ARRAY_SIZE(a80_gates),
> .num_resets = ARRAY_SIZE(a80_resets),
> };
>
> -static const struct ccu_desc a80_mmc_clk_desc = {
> +const struct ccu_desc a80_mmc_clk_desc = {
> .gates = a80_mmc_gates,
> .resets = a80_mmc_resets,
> .num_gates = ARRAY_SIZE(a80_mmc_gates),
> .num_resets = ARRAY_SIZE(a80_mmc_resets),
> };
> -
> -static const struct udevice_id a80_ccu_ids[] = {
> - { .compatible = "allwinner,sun9i-a80-ccu",
> - .data = (ulong)&a80_ccu_desc },
> - { .compatible = "allwinner,sun9i-a80-mmc-config-clk",
> - .data = (ulong)&a80_mmc_clk_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun9i_a80) = {
> - .name = "sun9i_a80_ccu",
> - .id = UCLASS_CLK,
> - .of_match = a80_ccu_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_a83t.c b/drivers/clk/sunxi/clk_a83t.c
> index cad5b484cf..e246437af2 100644
> --- a/drivers/clk/sunxi/clk_a83t.c
> +++ b/drivers/clk/sunxi/clk_a83t.c
> @@ -70,25 +70,9 @@ static struct ccu_reset a83t_resets[] = {
> [RST_BUS_UART4] = RESET(0x2d8, BIT(20)),
> };
>
> -static const struct ccu_desc a83t_ccu_desc = {
> +const struct ccu_desc a83t_ccu_desc = {
> .gates = a83t_gates,
> .resets = a83t_resets,
> .num_gates = ARRAY_SIZE(a83t_gates),
> .num_resets = ARRAY_SIZE(a83t_resets),
> };
> -
> -static const struct udevice_id a83t_clk_ids[] = {
> - { .compatible = "allwinner,sun8i-a83t-ccu",
> - .data = (ulong)&a83t_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun8i_a83t) = {
> - .name = "sun8i_a83t_ccu",
> - .id = UCLASS_CLK,
> - .of_match = a83t_clk_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_h3.c b/drivers/clk/sunxi/clk_h3.c
> index 3b4e9af111..5d2a53185e 100644
> --- a/drivers/clk/sunxi/clk_h3.c
> +++ b/drivers/clk/sunxi/clk_h3.c
> @@ -86,27 +86,9 @@ static struct ccu_reset h3_resets[] = {
> [RST_BUS_UART3] = RESET(0x2d8, BIT(19)),
> };
>
> -static const struct ccu_desc h3_ccu_desc = {
> +const struct ccu_desc h3_ccu_desc = {
> .gates = h3_gates,
> .resets = h3_resets,
> .num_gates = ARRAY_SIZE(h3_gates),
> .num_resets = ARRAY_SIZE(h3_resets),
> };
> -
> -static const struct udevice_id h3_ccu_ids[] = {
> - { .compatible = "allwinner,sun8i-h3-ccu",
> - .data = (ulong)&h3_ccu_desc },
> - { .compatible = "allwinner,sun50i-h5-ccu",
> - .data = (ulong)&h3_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun8i_h3) = {
> - .name = "sun8i_h3_ccu",
> - .id = UCLASS_CLK,
> - .of_match = h3_ccu_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_h6.c b/drivers/clk/sunxi/clk_h6.c
> index 93343b090d..02ba07bdaf 100644
> --- a/drivers/clk/sunxi/clk_h6.c
> +++ b/drivers/clk/sunxi/clk_h6.c
> @@ -87,25 +87,9 @@ static struct ccu_reset h6_resets[] = {
> [RST_BUS_OTG] = RESET(0xa8c, BIT(24)),
> };
>
> -static const struct ccu_desc h6_ccu_desc = {
> +const struct ccu_desc h6_ccu_desc = {
> .gates = h6_gates,
> .resets = h6_resets,
> .num_gates = ARRAY_SIZE(h6_gates),
> .num_resets = ARRAY_SIZE(h6_resets),
> };
> -
> -static const struct udevice_id h6_ccu_ids[] = {
> - { .compatible = "allwinner,sun50i-h6-ccu",
> - .data = (ulong)&h6_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun50i_h6) = {
> - .name = "sun50i_h6_ccu",
> - .id = UCLASS_CLK,
> - .of_match = h6_ccu_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_h616.c b/drivers/clk/sunxi/clk_h616.c
> index e791736093..abcc6fc264 100644
> --- a/drivers/clk/sunxi/clk_h616.c
> +++ b/drivers/clk/sunxi/clk_h616.c
> @@ -105,25 +105,9 @@ static struct ccu_reset h616_resets[] = {
> [RST_BUS_OTG] = RESET(0xa8c, BIT(24)),
> };
>
> -static const struct ccu_desc h616_ccu_desc = {
> +const struct ccu_desc h616_ccu_desc = {
> .gates = h616_gates,
> .resets = h616_resets,
> .num_gates = ARRAY_SIZE(h616_gates),
> .num_resets = ARRAY_SIZE(h616_resets),
> };
> -
> -static const struct udevice_id h616_ccu_ids[] = {
> - { .compatible = "allwinner,sun50i-h616-ccu",
> - .data = (ulong)&h616_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun50i_h616) = {
> - .name = "sun50i_h616_ccu",
> - .id = UCLASS_CLK,
> - .of_match = h616_ccu_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_h6_r.c b/drivers/clk/sunxi/clk_h6_r.c
> index 0f5cefd687..d82f791e79 100644
> --- a/drivers/clk/sunxi/clk_h6_r.c
> +++ b/drivers/clk/sunxi/clk_h6_r.c
> @@ -32,27 +32,9 @@ static struct ccu_reset h6_r_resets[] = {
> [RST_R_APB1_W1] = RESET(0x1ec, BIT(16)),
> };
>
> -static const struct ccu_desc h6_r_ccu_desc = {
> +const struct ccu_desc h6_r_ccu_desc = {
> .gates = h6_r_gates,
> .resets = h6_r_resets,
> .num_gates = ARRAY_SIZE(h6_r_gates),
> .num_resets = ARRAY_SIZE(h6_r_resets),
> };
> -
> -static const struct udevice_id h6_r_clk_ids[] = {
> - { .compatible = "allwinner,sun50i-h6-r-ccu",
> - .data = (ulong)&h6_r_ccu_desc },
> - { .compatible = "allwinner,sun50i-h616-r-ccu",
> - .data = (ulong)&h6_r_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun6i_h6_r) = {
> - .name = "sun6i_h6_r_ccu",
> - .id = UCLASS_CLK,
> - .of_match = h6_r_clk_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_r40.c b/drivers/clk/sunxi/clk_r40.c
> index a59ac06975..a5b756be40 100644
> --- a/drivers/clk/sunxi/clk_r40.c
> +++ b/drivers/clk/sunxi/clk_r40.c
> @@ -97,25 +97,9 @@ static struct ccu_reset r40_resets[] = {
> [RST_BUS_UART7] = RESET(0x2d8, BIT(23)),
> };
>
> -static const struct ccu_desc r40_ccu_desc = {
> +const struct ccu_desc r40_ccu_desc = {
> .gates = r40_gates,
> .resets = r40_resets,
> .num_gates = ARRAY_SIZE(r40_gates),
> .num_resets = ARRAY_SIZE(r40_resets),
> };
> -
> -static const struct udevice_id r40_clk_ids[] = {
> - { .compatible = "allwinner,sun8i-r40-ccu",
> - .data = (ulong)&r40_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun8i_r40) = {
> - .name = "sun8i_r40_ccu",
> - .id = UCLASS_CLK,
> - .of_match = r40_clk_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/drivers/clk/sunxi/clk_sunxi.c b/drivers/clk/sunxi/clk_sunxi.c
> index e1129f6ccf..7d9e6029ff 100644
> --- a/drivers/clk/sunxi/clk_sunxi.c
> +++ b/drivers/clk/sunxi/clk_sunxi.c
> @@ -64,12 +64,12 @@ struct clk_ops sunxi_clk_ops = {
> .disable = sunxi_clk_disable,
> };
>
> -int sunxi_clk_bind(struct udevice *dev)
> +static int sunxi_clk_bind(struct udevice *dev)
> {
> return sunxi_reset_bind(dev);
> }
>
> -int sunxi_clk_probe(struct udevice *dev)
> +static int sunxi_clk_probe(struct udevice *dev)
> {
> struct ccu_priv *priv = dev_get_priv(dev);
> struct clk_bulk clk_bulk;
> @@ -94,3 +94,117 @@ int sunxi_clk_probe(struct udevice *dev)
>
> return 0;
> }
> +
> +extern const struct ccu_desc a10_ccu_desc;
> +extern const struct ccu_desc a10s_ccu_desc;
> +extern const struct ccu_desc a23_ccu_desc;
> +extern const struct ccu_desc a31_ccu_desc;
> +extern const struct ccu_desc a31_r_ccu_desc;
> +extern const struct ccu_desc a64_ccu_desc;
> +extern const struct ccu_desc a80_ccu_desc;
> +extern const struct ccu_desc a80_mmc_clk_desc;
> +extern const struct ccu_desc a83t_ccu_desc;
> +extern const struct ccu_desc h3_ccu_desc;
> +extern const struct ccu_desc h6_ccu_desc;
> +extern const struct ccu_desc h616_ccu_desc;
> +extern const struct ccu_desc h6_r_ccu_desc;
> +extern const struct ccu_desc r40_ccu_desc;
> +extern const struct ccu_desc v3s_ccu_desc;
> +
> +static const struct udevice_id sunxi_clk_ids[] = {
> +#ifdef CONFIG_CLK_SUN4I_A10
> + { .compatible = "allwinner,sun4i-a10-ccu",
> + .data = (ulong)&a10_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN5I_A10S
> + { .compatible = "allwinner,sun5i-a10s-ccu",
> + .data = (ulong)&a10s_ccu_desc },
> + { .compatible = "allwinner,sun5i-a13-ccu",
> + .data = (ulong)&a10s_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN6I_A31
> + { .compatible = "allwinner,sun6i-a31-ccu",
> + .data = (ulong)&a31_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN4I_A10
> + { .compatible = "allwinner,sun7i-a20-ccu",
> + .data = (ulong)&a10_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN8I_A23
> + { .compatible = "allwinner,sun8i-a23-ccu",
> + .data = (ulong)&a23_ccu_desc },
> + { .compatible = "allwinner,sun8i-a33-ccu",
> + .data = (ulong)&a23_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN8I_A83T
> + { .compatible = "allwinner,sun8i-a83t-ccu",
> + .data = (ulong)&a83t_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN6I_A31_R
> + { .compatible = "allwinner,sun8i-a83t-r-ccu",
> + .data = (ulong)&a31_r_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN8I_H3
> + { .compatible = "allwinner,sun8i-h3-ccu",
> + .data = (ulong)&h3_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN6I_A31_R
> + { .compatible = "allwinner,sun8i-h3-r-ccu",
> + .data = (ulong)&a31_r_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN8I_R40
> + { .compatible = "allwinner,sun8i-r40-ccu",
> + .data = (ulong)&r40_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN8I_V3S
> + { .compatible = "allwinner,sun8i-v3-ccu",
> + .data = (ulong)&v3s_ccu_desc },
> + { .compatible = "allwinner,sun8i-v3s-ccu",
> + .data = (ulong)&v3s_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN9I_A80
> + { .compatible = "allwinner,sun9i-a80-ccu",
> + .data = (ulong)&a80_ccu_desc },
> + { .compatible = "allwinner,sun9i-a80-mmc-config-clk",
> + .data = (ulong)&a80_mmc_clk_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN50I_A64
> + { .compatible = "allwinner,sun50i-a64-ccu",
> + .data = (ulong)&a64_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN6I_A31_R
> + { .compatible = "allwinner,sun50i-a64-r-ccu",
> + .data = (ulong)&a31_r_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN8I_H3
> + { .compatible = "allwinner,sun50i-h5-ccu",
> + .data = (ulong)&h3_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN50I_H6
> + { .compatible = "allwinner,sun50i-h6-ccu",
> + .data = (ulong)&h6_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN50I_H6_R
> + { .compatible = "allwinner,sun50i-h6-r-ccu",
> + .data = (ulong)&h6_r_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN50I_H616
> + { .compatible = "allwinner,sun50i-h616-ccu",
> + .data = (ulong)&h616_ccu_desc },
> +#endif
> +#ifdef CONFIG_CLK_SUN50I_H6_R
> + { .compatible = "allwinner,sun50i-h616-r-ccu",
> + .data = (ulong)&h6_r_ccu_desc },
> +#endif
> + { }
> +};
> +
> +U_BOOT_DRIVER(sunxi_clk) = {
> + .name = "sunxi_clk",
> + .id = UCLASS_CLK,
> + .of_match = sunxi_clk_ids,
> + .bind = sunxi_clk_bind,
> + .probe = sunxi_clk_probe,
> + .priv_auto = sizeof(struct ccu_priv),
> + .ops = &sunxi_clk_ops,
> +};
> diff --git a/drivers/clk/sunxi/clk_v3s.c b/drivers/clk/sunxi/clk_v3s.c
> index c6a17b4535..e632afc083 100644
> --- a/drivers/clk/sunxi/clk_v3s.c
> +++ b/drivers/clk/sunxi/clk_v3s.c
> @@ -47,27 +47,9 @@ static struct ccu_reset v3s_resets[] = {
> [RST_BUS_UART2] = RESET(0x2d8, BIT(18)),
> };
>
> -static const struct ccu_desc v3s_ccu_desc = {
> +const struct ccu_desc v3s_ccu_desc = {
> .gates = v3s_gates,
> .resets = v3s_resets,
> .num_gates = ARRAY_SIZE(v3s_gates),
> .num_resets = ARRAY_SIZE(v3s_resets),
> };
> -
> -static const struct udevice_id v3s_clk_ids[] = {
> - { .compatible = "allwinner,sun8i-v3s-ccu",
> - .data = (ulong)&v3s_ccu_desc },
> - { .compatible = "allwinner,sun8i-v3-ccu",
> - .data = (ulong)&v3s_ccu_desc },
> - { }
> -};
> -
> -U_BOOT_DRIVER(clk_sun8i_v3s) = {
> - .name = "sun8i_v3s_ccu",
> - .id = UCLASS_CLK,
> - .of_match = v3s_clk_ids,
> - .priv_auto = sizeof(struct ccu_priv),
> - .ops = &sunxi_clk_ops,
> - .probe = sunxi_clk_probe,
> - .bind = sunxi_clk_bind,
> -};
> diff --git a/include/clk/sunxi.h b/include/clk/sunxi.h
> index c798c226f5..11caf12b17 100644
> --- a/include/clk/sunxi.h
> +++ b/include/clk/sunxi.h
> @@ -80,18 +80,6 @@ struct ccu_priv {
> const struct ccu_desc *desc;
> };
>
> -/**
> - * sunxi_clk_bind - common sunxi clock bind
> - * @dev: clock device
> - */
> -int sunxi_clk_bind(struct udevice *dev);
> -
> -/**
> - * sunxi_clk_probe - common sunxi clock probe
> - * @dev: clock device
> - */
> -int sunxi_clk_probe(struct udevice *dev);
> -
> extern struct clk_ops sunxi_clk_ops;
>
> /**
next prev parent reply other threads:[~2022-06-27 0:47 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-09 5:29 [PATCH 0/7] clk: sunxi: Out-of-bounds access fix and driver cleanup Samuel Holland
2022-05-09 5:29 ` [PATCH 1/7] clk: sunxi: Store the array sizes in the CCU descriptor Samuel Holland
2022-06-25 17:10 ` Andre Przywara
2022-05-09 5:29 ` [PATCH 2/7] clk: sunxi: Prevent out-of-bounds gate array access Samuel Holland
2022-06-26 10:43 ` Andre Przywara
2022-05-09 5:29 ` [PATCH 3/7] reset: sunxi: Get the reset count from the CCU descriptor Samuel Holland
2022-06-26 10:51 ` Andre Przywara
2022-05-09 5:29 ` [PATCH 4/7] clk: sunxi: Use a single driver for all variants Samuel Holland
2022-06-27 0:43 ` Andre Przywara [this message]
2022-05-09 5:29 ` [PATCH 5/7] clk: sunxi: Convert driver private data to platform data Samuel Holland
2022-06-27 19:34 ` Andre Przywara
2022-05-09 5:29 ` [PATCH 6/7] reset: " Samuel Holland
2022-06-27 19:41 ` Andre Przywara
2022-05-09 5:29 ` [PATCH 7/7] reset: sunxi: Reuse the platform data from the clock driver Samuel Holland
2022-06-27 23:45 ` Andre Przywara
2022-05-10 23:24 ` [PATCH 0/7] clk: sunxi: Out-of-bounds access fix and driver cleanup Andre Przywara
2022-05-11 15:48 ` Sean Anderson
2022-06-28 0:40 ` Andre Przywara
2022-06-28 2:45 ` Samuel Holland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220627014341.6794f2bd@slackpad.lan \
--to=andre.przywara@arm.com \
--cc=bmeng.cn@gmail.com \
--cc=jagan@amarulasolutions.com \
--cc=lukma@denx.de \
--cc=maxime.ripard@bootlin.com \
--cc=samuel@sholland.org \
--cc=seanga2@gmail.com \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox