1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (c) 2011, Google Inc. All rights reserved. 3*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #ifndef _TEGRA_GPIO_H_ 7*4882a593Smuzhiyun #define _TEGRA_GPIO_H_ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <dt-bindings/gpio/tegra-gpio.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #define TEGRA_GPIOS_PER_PORT 8 12*4882a593Smuzhiyun #define TEGRA_PORTS_PER_BANK 4 13*4882a593Smuzhiyun #define MAX_NUM_GPIOS (TEGRA_GPIO_PORTS * TEGRA_GPIO_BANKS * 8) 14*4882a593Smuzhiyun #define GPIO_NAME_SIZE 20 /* gpio_request max label len */ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #define GPIO_BANK(x) ((x) >> 5) 17*4882a593Smuzhiyun #define GPIO_PORT(x) (((x) >> 3) & 0x3) 18*4882a593Smuzhiyun #define GPIO_FULLPORT(x) ((x) >> 3) 19*4882a593Smuzhiyun #define GPIO_BIT(x) ((x) & 0x7) 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun enum tegra_gpio_init { 22*4882a593Smuzhiyun TEGRA_GPIO_INIT_IN, 23*4882a593Smuzhiyun TEGRA_GPIO_INIT_OUT0, 24*4882a593Smuzhiyun TEGRA_GPIO_INIT_OUT1, 25*4882a593Smuzhiyun }; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun struct tegra_gpio_config { 28*4882a593Smuzhiyun u32 gpio:16; 29*4882a593Smuzhiyun u32 init:2; 30*4882a593Smuzhiyun }; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /** 33*4882a593Smuzhiyun * Configure a list of GPIOs 34*4882a593Smuzhiyun * 35*4882a593Smuzhiyun * @param config List of GPIO configurations 36*4882a593Smuzhiyun * @param len Number of config items in list 37*4882a593Smuzhiyun */ 38*4882a593Smuzhiyun void gpio_config_table(const struct tegra_gpio_config *config, int len); 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #endif /* TEGRA_GPIO_H_ */ 41