Commit 5d067499 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by Linus Walleij

pinctrl: keembay: comment process of building functions a bit

This should make code a bit easier to follow. While at it use some "for"
loops to simplify array iteration loops.
Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
Link: https://lore.kernel.org/r/20211216162206.8027-2-zajec5@gmail.comSigned-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 02f11713
...@@ -1617,37 +1617,38 @@ static int keembay_build_functions(struct keembay_pinctrl *kpc) ...@@ -1617,37 +1617,38 @@ static int keembay_build_functions(struct keembay_pinctrl *kpc)
struct function_desc *keembay_funcs, *new_funcs; struct function_desc *keembay_funcs, *new_funcs;
int i; int i;
/* Allocate total number of functions */ /*
* Allocate maximum possible number of functions. Assume every pin
* being part of 8 (hw maximum) globally unique muxes.
*/
kpc->nfuncs = 0; kpc->nfuncs = 0;
keembay_funcs = kcalloc(kpc->npins * 8, sizeof(*keembay_funcs), GFP_KERNEL); keembay_funcs = kcalloc(kpc->npins * 8, sizeof(*keembay_funcs), GFP_KERNEL);
if (!keembay_funcs) if (!keembay_funcs)
return -ENOMEM; return -ENOMEM;
/* Find total number of functions and each's properties */ /* Setup 1 function for each unique mux */
for (i = 0; i < kpc->npins; i++) { for (i = 0; i < kpc->npins; i++) {
const struct pinctrl_pin_desc *pdesc = keembay_pins + i; const struct pinctrl_pin_desc *pdesc = keembay_pins + i;
struct keembay_mux_desc *mux = pdesc->drv_data; struct keembay_mux_desc *mux;
while (mux->name) { for (mux = pdesc->drv_data; mux->name; mux++) {
struct function_desc *fdesc = keembay_funcs; struct function_desc *fdesc;
while (fdesc->name) { /* Check if we already have function for this mux */
for (fdesc = keembay_funcs; fdesc->name; fdesc++) {
if (!strcmp(mux->name, fdesc->name)) { if (!strcmp(mux->name, fdesc->name)) {
fdesc->num_group_names++; fdesc->num_group_names++;
break; break;
} }
fdesc++;
} }
/* Setup new function for this mux we didn't see before */
if (!fdesc->name) { if (!fdesc->name) {
fdesc->name = mux->name; fdesc->name = mux->name;
fdesc->num_group_names = 1; fdesc->num_group_names = 1;
fdesc->data = &mux->mode; fdesc->data = &mux->mode;
kpc->nfuncs++; kpc->nfuncs++;
} }
mux++;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment