mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-31 03:21:32 +00:00
dm: gpio: Add a function to read an ID from a list of GPIOs
For board IDs a common approach is to set aside several GPIOs for use in determining the board ID. This can provide information about board features and the revision. Add a function that turns a list of GPIOs into an integer by assigning each GPIO to a single bit. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
469a579df2
commit
e5901c94e3
2 changed files with 29 additions and 1 deletions
|
@ -390,6 +390,25 @@ int gpio_get_status(struct udevice *dev, int offset, char *buf, int buffsize)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* get a number comprised of multiple GPIO values. gpio_num_array points to
|
||||||
|
* the array of gpio pin numbers to scan, terminated by -1.
|
||||||
|
*/
|
||||||
|
unsigned gpio_get_values_as_int(const int *gpio_num_array)
|
||||||
|
{
|
||||||
|
int gpio;
|
||||||
|
unsigned bitmask = 1;
|
||||||
|
unsigned vector = 0;
|
||||||
|
|
||||||
|
while (bitmask &&
|
||||||
|
((gpio = *gpio_num_array++) != -1)) {
|
||||||
|
if (gpio_get_value(gpio))
|
||||||
|
vector |= bitmask;
|
||||||
|
bitmask <<= 1;
|
||||||
|
}
|
||||||
|
return vector;
|
||||||
|
}
|
||||||
|
|
||||||
/* We need to renumber the GPIOs when any driver is probed/removed */
|
/* We need to renumber the GPIOs when any driver is probed/removed */
|
||||||
static int gpio_renumber(struct udevice *removed_dev)
|
static int gpio_renumber(struct udevice *removed_dev)
|
||||||
{
|
{
|
||||||
|
|
|
@ -257,6 +257,15 @@ const char *gpio_get_bank_info(struct udevice *dev, int *offset_count);
|
||||||
int gpio_lookup_name(const char *name, struct udevice **devp,
|
int gpio_lookup_name(const char *name, struct udevice **devp,
|
||||||
unsigned int *offsetp, unsigned int *gpiop);
|
unsigned int *offsetp, unsigned int *gpiop);
|
||||||
|
|
||||||
int name_to_gpio(const char *name);
|
/**
|
||||||
|
* get_gpios() - Turn the values of a list of GPIOs into an integer
|
||||||
|
*
|
||||||
|
* This puts the value of the first GPIO into bit 0, the second into bit 1,
|
||||||
|
* etc. then returns the resulting integer.
|
||||||
|
*
|
||||||
|
* @gpio_list: List of GPIOs to collect
|
||||||
|
* @return resulting integer value
|
||||||
|
*/
|
||||||
|
unsigned gpio_get_values_as_int(const int *gpio_list);
|
||||||
|
|
||||||
#endif /* _ASM_GENERIC_GPIO_H_ */
|
#endif /* _ASM_GENERIC_GPIO_H_ */
|
||||||
|
|
Loading…
Add table
Reference in a new issue