pinctrl: sandbox: Add mux information in get_pin_muxing

Add param information in pin information output.
This update prepare unitary test for pin configuration
in pinctrl node.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Patrick Delaunay 2020-01-13 11:35:11 +01:00 committed by Tom Rini
parent 6a0388c5b1
commit 77ed5692c9

View file

@ -54,6 +54,10 @@ static const struct pinconf_param sandbox_conf_params[] = {
{ "input-disable", PIN_CONFIG_INPUT_ENABLE, 0 },
};
/* bitfield used to save param and value of each pin/selector */
static unsigned int sandbox_pins_param[ARRAY_SIZE(sandbox_pins)];
static unsigned int sandbox_pins_value[ARRAY_SIZE(sandbox_pins)];
static int sandbox_get_pins_count(struct udevice *dev)
{
return ARRAY_SIZE(sandbox_pins);
@ -68,8 +72,25 @@ static int sandbox_get_pin_muxing(struct udevice *dev,
unsigned int selector,
char *buf, int size)
{
const struct pinconf_param *p;
int i;
snprintf(buf, size, "%s", sandbox_pins_muxing[selector]);
if (sandbox_pins_param[selector]) {
for (i = 0, p = sandbox_conf_params;
i < ARRAY_SIZE(sandbox_conf_params);
i++, p++) {
if ((sandbox_pins_param[selector] & BIT(p->param)) &&
(!!(sandbox_pins_value[selector] & BIT(p->param)) ==
p->default_value)) {
strncat(buf, " ", size);
strncat(buf, p->property, size);
}
}
}
strncat(buf, ".", size);
return 0;
}
@ -102,6 +123,9 @@ static int sandbox_pinmux_set(struct udevice *dev, unsigned pin_selector,
pin_selector, sandbox_get_pin_name(dev, pin_selector),
func_selector, sandbox_get_function_name(dev, func_selector));
sandbox_pins_param[pin_selector] = 0;
sandbox_pins_value[pin_selector] = 0;
return 0;
}
@ -123,6 +147,12 @@ static int sandbox_pinconf_set(struct udevice *dev, unsigned pin_selector,
pin_selector, sandbox_get_pin_name(dev, pin_selector),
param, argument);
sandbox_pins_param[pin_selector] |= BIT(param);
if (argument)
sandbox_pins_value[pin_selector] |= BIT(param);
else
sandbox_pins_value[pin_selector] &= ~BIT(param);
return 0;
}