pwm: meson: switch to using struct clk_parent_data for mux parents
authorHeiner Kallweit <hkallweit1@gmail.com>
Wed, 24 May 2023 19:50:47 +0000 (21:50 +0200)
committerThierry Reding <thierry.reding@gmail.com>
Fri, 23 Jun 2023 13:37:36 +0000 (15:37 +0200)
We'll use struct clk_parent_data for mux/div/gate initialization in the
follow-up patches. As a first step switch the mux from using
parent_names to clk_parent_data.

Suggested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
drivers/pwm/pwm-meson.c

index aad4a0e..1654fdb 100644 (file)
@@ -61,6 +61,7 @@
 #define MISC_A_EN              BIT(0)
 
 #define MESON_NUM_PWMS         2
+#define MESON_MAX_MUX_PARENTS  4
 
 static struct meson_pwm_channel_data {
        u8              reg_offset;
@@ -477,21 +478,27 @@ MODULE_DEVICE_TABLE(of, meson_pwm_matches);
 
 static int meson_pwm_init_channels(struct meson_pwm *meson)
 {
+       struct clk_parent_data mux_parent_data[MESON_MAX_MUX_PARENTS] = {};
        struct device *dev = meson->chip.dev;
-       struct clk_init_data init;
        unsigned int i;
        char name[255];
        int err;
 
+       for (i = 0; i < meson->data->num_parents; i++) {
+               mux_parent_data[i].index = -1;
+               mux_parent_data[i].name = meson->data->parent_names[i];
+       }
+
        for (i = 0; i < meson->chip.npwm; i++) {
                struct meson_pwm_channel *channel = &meson->channels[i];
+               struct clk_init_data init = {};
 
                snprintf(name, sizeof(name), "%s#mux%u", dev_name(dev), i);
 
                init.name = name;
                init.ops = &clk_mux_ops;
                init.flags = 0;
-               init.parent_names = meson->data->parent_names;
+               init.parent_data = mux_parent_data;
                init.num_parents = meson->data->num_parents;
 
                channel->mux.reg = meson->base + REG_MISC_AB;