mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 08:42:12 +02:00
dm: gpio: Add a driver GPIO translation method
Only the GPIO driver knows about the full GPIO device tree binding used by a device. Add a method to allow the driver to provide this information to the uclass, including the GPIO offset within the device and flags such as the polarity. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <errno.h>
|
||||
#include <fdtdec.h>
|
||||
#include <malloc.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <linux/ctype.h>
|
||||
@@ -91,6 +92,21 @@ int gpio_lookup_name(const char *name, struct udevice **devp,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int gpio_find_and_xlate(struct gpio_desc *desc,
|
||||
struct fdtdec_phandle_args *args)
|
||||
{
|
||||
struct dm_gpio_ops *ops = gpio_get_ops(desc->dev);
|
||||
|
||||
/* Use the first argument as the offset by default */
|
||||
if (args->args_count > 0)
|
||||
desc->offset = args->args[0];
|
||||
else
|
||||
desc->offset = -1;
|
||||
desc->flags = 0;
|
||||
|
||||
return ops->xlate ? ops->xlate(desc->dev, desc, args) : 0;
|
||||
}
|
||||
|
||||
static int dm_gpio_request(struct gpio_desc *desc, const char *label)
|
||||
{
|
||||
struct udevice *dev = desc->dev;
|
||||
|
Reference in New Issue
Block a user