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