From: Bartosz Golaszewski <bartosz.golaszew...@linaro.org>

struct function_desc is a wrapper around struct pinfunction with an
additional void *data pointer. We're working towards reducing the usage
of struct function_desc in pinctrl drivers - they should only be created
by pinmux core and accessed by drivers using
pinmux_generic_get_function(). This driver uses the data pointer so in
order to stop using struct function_desc, we need to provide an
alternative that also wraps the mux mode which is passed to pinctrl core
as user data.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszew...@linaro.org>
---
 drivers/pinctrl/pinctrl-keembay.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-keembay.c 
b/drivers/pinctrl/pinctrl-keembay.c
index 
6aefcbc31309995ec1e235416b40aab3e4a073a9..e78c8b3ec245aad56e3e74a26d27c41ba4a98281
 100644
--- a/drivers/pinctrl/pinctrl-keembay.c
+++ b/drivers/pinctrl/pinctrl-keembay.c
@@ -135,6 +135,11 @@ struct keembay_pin_soc {
        const struct pinctrl_pin_desc *pins;
 };
 
+struct keembay_pinfunction {
+       struct pinfunction func;
+       u8 mux_mode;
+};
+
 static const struct pinctrl_pin_desc keembay_pins[] = {
        KEEMBAY_PIN_DESC(0, "GPIO0",
                         KEEMBAY_MUX(0x0, "I2S0_M0"),
@@ -1556,13 +1561,13 @@ static int keembay_pinctrl_reg(struct keembay_pinctrl 
*kpc,  struct device *dev)
 }
 
 static int keembay_add_functions(struct keembay_pinctrl *kpc,
-                                struct function_desc *functions)
+                                struct keembay_pinfunction *functions)
 {
        unsigned int i;
 
        /* Assign the groups for each function */
        for (i = 0; i < kpc->nfuncs; i++) {
-               struct function_desc *func = &functions[i];
+               struct keembay_pinfunction *func = &functions[i];
                const char **group_names;
                unsigned int grp_idx = 0;
                int j;
@@ -1588,14 +1593,14 @@ static int keembay_add_functions(struct keembay_pinctrl 
*kpc,
        /* Add all functions */
        for (i = 0; i < kpc->nfuncs; i++)
                pinmux_generic_add_pinfunction(kpc->pctrl, &functions[i].func,
-                                              functions[i].data);
+                                              &functions[i].mux_mode);
 
        return 0;
 }
 
 static int keembay_build_functions(struct keembay_pinctrl *kpc)
 {
-       struct function_desc *keembay_funcs, *new_funcs;
+       struct keembay_pinfunction *keembay_funcs, *new_funcs;
        int i;
 
        /*
@@ -1614,7 +1619,7 @@ static int keembay_build_functions(struct keembay_pinctrl 
*kpc)
                struct keembay_mux_desc *mux;
 
                for (mux = pdesc->drv_data; mux->name; mux++) {
-                       struct function_desc *fdesc;
+                       struct keembay_pinfunction *fdesc;
 
                        /* Check if we already have function for this mux */
                        for (fdesc = keembay_funcs; fdesc->func.name; fdesc++) {
@@ -1628,7 +1633,7 @@ static int keembay_build_functions(struct keembay_pinctrl 
*kpc)
                        if (!fdesc->func.name) {
                                fdesc->func.name = mux->name;
                                fdesc->func.ngroups = 1;
-                               fdesc->data = &mux->mode;
+                               fdesc->mux_mode = mux->mode;
                                kpc->nfuncs++;
                        }
                }

-- 
2.48.1


Reply via email to