mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 07:34:31 +00:00
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:
parent
6a0388c5b1
commit
77ed5692c9
1 changed files with 30 additions and 0 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue