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