mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-04 00:03:25 -04:00
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: Rafał Miłecki <rafal@milecki.pl> Link: https://lore.kernel.org/r/20211216162206.8027-2-zajec5@gmail.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
02f1171349
commit
5d0674999c
1 changed files with 11 additions and 10 deletions
|
@ -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++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue