mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 07:33:19 +02:00
pinctrl: keembay: use a dedicated structure for the pinfunction description
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. Tested-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
aae7a2876c
commit
071cdf5645
|
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user