mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 22:49:02 +00:00
dm: pinctrl: Add get_pin_muxing() ops
Add get_pin_muxing() which allows to display the muxing of a given pin belonging to a pin-controller. Signed-off-by: Patrice Chotard <patrice.chotard@st.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
f9c87adc47
commit
f55a0c0a20
2 changed files with 45 additions and 0 deletions
|
@ -249,6 +249,17 @@ int pinctrl_get_gpio_mux(struct udevice *dev, int banknum, int index)
|
|||
return ops->get_gpio_mux(dev, banknum, index);
|
||||
}
|
||||
|
||||
int pinctrl_get_pin_muxing(struct udevice *dev, int selector, char *buf,
|
||||
int size)
|
||||
{
|
||||
struct pinctrl_ops *ops = pinctrl_get_ops(dev);
|
||||
|
||||
if (!ops->get_pin_muxing)
|
||||
return -ENOSYS;
|
||||
|
||||
return ops->get_pin_muxing(dev, selector, buf, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* pinconfig_post_bind() - post binding for PINCTRL uclass
|
||||
* Recursively bind child nodes as pinconfig devices in case of full pinctrl.
|
||||
|
|
|
@ -66,6 +66,7 @@ struct pinconf_param {
|
|||
* pointing a config node. (necessary for pinctrl_full)
|
||||
* @set_state_simple: do needed pinctrl operations for a peripherl @periph.
|
||||
* (necessary for pinctrl_simple)
|
||||
* @get_pin_muxing: display the muxing of a given pin.
|
||||
*/
|
||||
struct pinctrl_ops {
|
||||
int (*get_pins_count)(struct udevice *dev);
|
||||
|
@ -129,6 +130,24 @@ struct pinctrl_ops {
|
|||
* @return mux value (SoC-specific, e.g. 0 for input, 1 for output)
|
||||
*/
|
||||
int (*get_gpio_mux)(struct udevice *dev, int banknum, int index);
|
||||
|
||||
/**
|
||||
* get_pin_muxing() - show pin muxing
|
||||
*
|
||||
* This allows to display the muxing of a given pin. It's useful for
|
||||
* debug purpose to know if a pin is configured as GPIO or as an
|
||||
* alternate function and which one.
|
||||
* Typically it is used by a PINCTRL driver with knowledge of the SoC
|
||||
* pinctrl setup.
|
||||
*
|
||||
* @dev: Pinctrl device to use
|
||||
* @selector: Pin selector
|
||||
* @buf Pin's muxing description
|
||||
* @size Pin's muxing description length
|
||||
* return 0 if OK, -ve on error
|
||||
*/
|
||||
int (*get_pin_muxing)(struct udevice *dev, unsigned int selector,
|
||||
char *buf, int size);
|
||||
};
|
||||
|
||||
#define pinctrl_get_ops(dev) ((struct pinctrl_ops *)(dev)->driver->ops)
|
||||
|
@ -348,4 +367,19 @@ int pinctrl_decode_pin_config(const void *blob, int node);
|
|||
*/
|
||||
int pinctrl_get_gpio_mux(struct udevice *dev, int banknum, int index);
|
||||
|
||||
/**
|
||||
* pinctrl_get_pin_muxing() - Returns the muxing description
|
||||
*
|
||||
* This allows to display the muxing description of the given pin for
|
||||
* debug purpose
|
||||
*
|
||||
* @dev: Pinctrl device to use
|
||||
* @selector Pin index within pin-controller
|
||||
* @buf Pin's muxing description
|
||||
* @size Pin's muxing description length
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int pinctrl_get_pin_muxing(struct udevice *dev, int selector, char *buf,
|
||||
int size);
|
||||
|
||||
#endif /* __PINCTRL_H */
|
||||
|
|
Loading…
Add table
Reference in a new issue