mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 19:11:53 +00: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:
parent
ff715c6f4f
commit
2912686c08
5 changed files with 278 additions and 0 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue