u-boot/include/spl_gpio.h
Tom Rini a591af1123 include/spl_gpio.h: Audit include list
This file does not need <asm/gpio.h> so remove it. This file does
however need <linux/types.h> so add that in. This also shows that
arch/arm/mach-rockchip/rk3399/rk3399.c and board/lg/star/star.c were
indirectly getting <asm/gpio.h> from here, so add <asm/gpio.h> to them.

Signed-off-by: Tom Rini <trini@konsulko.com>
2025-07-08 13:11:12 -06:00

82 lines
2.3 KiB
C

/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Simple GPIO access from SPL. This only supports a single GPIO space,
* typically the SoC GPIO banks.
*
* Copyright 2018 Google LLC
*/
#ifndef __SPL_GPIO_H
#define __SPL_GPIO_H
#include <linux/types.h>
/*
* The functions listed here should be implemented in the SoC GPIO driver.
* They correspond to the normal GPIO API (asm-generic/gpio.h). The GPIO
* number is encoded in an unsigned int by an SoC-specific means. Pull
* values are also SoC-specific.
*
* This API should only be used in TPL/SPL where GPIO access is needed but
* driver model is not available (yet) or adds too much overhead.
*
* The caller must supply the GPIO register base since this information is
* often specific to a particular SoC generation. This allows the GPIO
* code to be fairly generic.
*
* Only a single implementation of each of these functions can be provided.
*
* The 'gpio' value can include both a bank and a GPIO number, if desired. The
* encoding is SoC-specific.
*/
/**
* spl_gpio_set_pull() - Set the pull up/down state of a GPIO
*
* @regs: Pointer to GPIO registers
* @gpio: GPIO to adjust (SoC-specific)
* @pull: Pull value (SoC-specific)
* Return: return 0 if OK, -ve on error
*/
int spl_gpio_set_pull(void *regs, uint gpio, int pull);
/**
* spl_gpio_output() - Set a GPIO as an output
*
* @regs: Pointer to GPIO registers
* @gpio: GPIO to adjust (SoC-specific)
* @value: 0 to set the output low, 1 to set it high
* Return: return 0 if OK, -ve on error
*/
int spl_gpio_output(void *regs, uint gpio, int value);
/**
* spl_gpio_input() - Set a GPIO as an input
*
* @regs: Pointer to GPIO registers
* @gpio: GPIO to adjust (SoC-specific)
* Return: return 0 if OK, -ve on error
*/
int spl_gpio_input(void *regs, uint gpio);
/**
* spl_gpio_get_value() - Get GPIO value
*
* @regs: Pointer to GPIO registers
* @gpio: GPIO to adjust (SoC-specific)
* Return: return GPIO value if OK, -ve on error
*/
int spl_gpio_get_value(void *regs, uint gpio);
/**
* spl_gpio_set_value() - Set value on GPIO
*
* @regs: Pointer to GPIO registers
* @gpio: GPIO to adjust (SoC-specific)
* @value: 0 to set the output low, 1 to set it high
* Return: return 0 if OK, -ve on error
*/
int spl_gpio_set_value(void *regs, uint gpio, int value);
#endif /* __SPL_GPIO_H */