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
@ -54,6 +54,10 @@ static const struct pinconf_param sandbox_conf_params[] = {
|
|||||||
{ "input-disable", PIN_CONFIG_INPUT_ENABLE, 0 },
|
{ "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)
|
static int sandbox_get_pins_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
return ARRAY_SIZE(sandbox_pins);
|
return ARRAY_SIZE(sandbox_pins);
|
||||||
@ -68,8 +72,25 @@ static int sandbox_get_pin_muxing(struct udevice *dev,
|
|||||||
unsigned int selector,
|
unsigned int selector,
|
||||||
char *buf, int size)
|
char *buf, int size)
|
||||||
{
|
{
|
||||||
|
const struct pinconf_param *p;
|
||||||
|
int i;
|
||||||
|
|
||||||
snprintf(buf, size, "%s", sandbox_pins_muxing[selector]);
|
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;
|
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),
|
pin_selector, sandbox_get_pin_name(dev, pin_selector),
|
||||||
func_selector, sandbox_get_function_name(dev, func_selector));
|
func_selector, sandbox_get_function_name(dev, func_selector));
|
||||||
|
|
||||||
|
sandbox_pins_param[pin_selector] = 0;
|
||||||
|
sandbox_pins_value[pin_selector] = 0;
|
||||||
|
|
||||||
return 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),
|
pin_selector, sandbox_get_pin_name(dev, pin_selector),
|
||||||
param, argument);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user