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 MAX_NUM_GPIOS (TEGRA_GPIO_PORTS * TEGRA_GPIO_BANKS * 8) 10 #define GPIO_NAME_SIZE 20 /* gpio_request max label len */ 11 12 #define GPIO_BANK(x) ((x) >> 5) 13 #define GPIO_PORT(x) (((x) >> 3) & 0x3) 14 #define GPIO_FULLPORT(x) ((x) >> 3) 15 #define GPIO_BIT(x) ((x) & 0x7) 16 17 enum tegra_gpio_init { 18 TEGRA_GPIO_INIT_IN, 19 TEGRA_GPIO_INIT_OUT0, 20 TEGRA_GPIO_INIT_OUT1, 21 }; 22 23 struct tegra_gpio_config { 24 u32 gpio:16; 25 u32 init:2; 26 }; 27 28 /* 29 * Tegra-specific GPIO API 30 */ 31 32 /** 33 * Configure a list of GPIOs 34 * 35 * @param config List of GPIO configurations 36 * @param len Number of config items in list 37 */ 38 void gpio_config_table(const struct tegra_gpio_config *config, int len); 39 40 void gpio_info(void); 41 42 #define gpio_status() gpio_info() 43 44 #endif /* TEGRA_GPIO_H_ */ 45