xref: /optee_os/core/include/drivers/pl061_gpio.h (revision fbe66cf83199aa6a2aca9f93384cf1ad9185a5f6)
11bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */
2ce72d0c6SVictor Chong /*
3ce72d0c6SVictor Chong  * Copyright (c) 2016, Linaro Limited
4ce72d0c6SVictor Chong  */
5ce72d0c6SVictor Chong 
6*fbe66cf8SEtienne Carriere #ifndef __DRIVERS_PL061_GPIO_H
7*fbe66cf8SEtienne Carriere #define __DRIVERS_PL061_GPIO_H
8ce72d0c6SVictor Chong 
96dcd18c8SClément Léger #include <drivers/gpio.h>
10bbab0cddSVictor Chong #include <types_ext.h>
11ce72d0c6SVictor Chong 
12bbab0cddSVictor Chong #define PL061_REG_SIZE	0x1000
13bbab0cddSVictor Chong 
14f1d7853eSVictor Chong enum pl061_mode_control {
15f1d7853eSVictor Chong 	PL061_MC_SW,
16f1d7853eSVictor Chong 	PL061_MC_HW
17f1d7853eSVictor Chong };
18f1d7853eSVictor Chong 
19bbab0cddSVictor Chong struct pl061_data {
20bbab0cddSVictor Chong 	struct gpio_chip chip;
21bbab0cddSVictor Chong };
22bbab0cddSVictor Chong 
23bbab0cddSVictor Chong void pl061_register(vaddr_t base_addr, unsigned int gpio_dev);
24bbab0cddSVictor Chong void pl061_init(struct pl061_data *pd);
25f1d7853eSVictor Chong enum pl061_mode_control pl061_get_mode_control(unsigned int gpio_pin);
26f1d7853eSVictor Chong void pl061_set_mode_control(unsigned int gpio_pin,
27f1d7853eSVictor Chong 	enum pl061_mode_control hw_sw);
28ce72d0c6SVictor Chong 
29*fbe66cf8SEtienne Carriere #endif	/* __DRIVERS_PL061_GPIO_H */
30