dm: pinctrl: Add a function to parse PIN_CONFIG flags

Add a function which produces a flags word from a few common PIN_CONFIG
settings. This is useful for simple pinctrl drivers that don't need to worry
about drive strength, etc.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2016-01-21 19:43:26 -07:00
parent 0379597e55
commit 52db39a22b
2 changed files with 25 additions and 0 deletions

View file

@ -15,6 +15,18 @@
DECLARE_GLOBAL_DATA_PTR;
int pinctrl_decode_pin_config(const void *blob, int node)
{
int flags = 0;
if (fdtdec_get_bool(blob, node, "bias-pull-up"))
flags |= 1 << PIN_CONFIG_BIAS_PULL_UP;
else if (fdtdec_get_bool(blob, node, "bias-pull-down"))
flags |= 1 << PIN_CONFIG_BIAS_PULL_DOWN;
return flags;
}
#if CONFIG_IS_ENABLED(PINCTRL_FULL)
/**
* pinctrl_config_one() - apply pinctrl settings for a single node

View file

@ -284,4 +284,17 @@ int pinctrl_request_noflags(struct udevice *dev, int func);
*/
int pinctrl_get_periph_id(struct udevice *dev, struct udevice *periph);
/**
* pinctrl_decode_pin_config() - decode pin configuration flags
*
* This decodes some of the PIN_CONFIG values into flags, with each value
* being (1 << pin_cfg). This does not support things with values like the
* slew rate.
*
* @blob: Device tree blob
* @node: Node containing the PIN_CONFIG values
* @return decoded flag value, or -ve on error
*/
int pinctrl_decode_pin_config(const void *blob, int node);
#endif /* __PINCTRL_H */