mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
gpio: Add a method to convert a GPIO to ACPI
When generating ACPI tables we need to convert GPIOs in U-Boot to the ACPI structures required by ACPI. This is a SoC-specific conversion and cannot be handled by generic code, so add a new GPIO method to do the conversion. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include <errno.h>
|
||||
#include <fdtdec.h>
|
||||
#include <malloc.h>
|
||||
#include <acpi/acpi_device.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <dm/device_compat.h>
|
||||
#include <linux/bug.h>
|
||||
@@ -855,6 +856,27 @@ int gpio_get_status(struct udevice *dev, int offset, char *buf, int buffsize)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if CONFIG_IS_ENABLED(ACPIGEN)
|
||||
int gpio_get_acpi(const struct gpio_desc *desc, struct acpi_gpio *gpio)
|
||||
{
|
||||
struct dm_gpio_ops *ops;
|
||||
|
||||
memset(gpio, '\0', sizeof(*gpio));
|
||||
if (!dm_gpio_is_valid(desc)) {
|
||||
/* Indicate that the GPIO is not valid */
|
||||
gpio->pin_count = 0;
|
||||
gpio->pins[0] = 0;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ops = gpio_get_ops(desc->dev);
|
||||
if (!ops->get_acpi)
|
||||
return -ENOSYS;
|
||||
|
||||
return ops->get_acpi(desc, gpio);
|
||||
}
|
||||
#endif
|
||||
|
||||
int gpio_claim_vector(const int *gpio_num_array, const char *fmt)
|
||||
{
|
||||
int i, ret;
|
||||
|
Reference in New Issue
Block a user