1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 2150c2493STom Warren /* 3150c2493STom Warren * Copyright (c) 2011, Google Inc. All rights reserved. 4150c2493STom Warren */ 5150c2493STom Warren 6150c2493STom Warren #ifndef _TEGRA_GPIO_H_ 7150c2493STom Warren #define _TEGRA_GPIO_H_ 8150c2493STom Warren 901a97a11SStephen Warren #include <dt-bindings/gpio/tegra-gpio.h> 1001a97a11SStephen Warren 112fccd2d9SSimon Glass #define TEGRA_GPIOS_PER_PORT 8 122fccd2d9SSimon Glass #define TEGRA_PORTS_PER_BANK 4 13150c2493STom Warren #define MAX_NUM_GPIOS (TEGRA_GPIO_PORTS * TEGRA_GPIO_BANKS * 8) 14150c2493STom Warren #define GPIO_NAME_SIZE 20 /* gpio_request max label len */ 15150c2493STom Warren 16150c2493STom Warren #define GPIO_BANK(x) ((x) >> 5) 17150c2493STom Warren #define GPIO_PORT(x) (((x) >> 3) & 0x3) 18150c2493STom Warren #define GPIO_FULLPORT(x) ((x) >> 3) 19150c2493STom Warren #define GPIO_BIT(x) ((x) & 0x7) 20150c2493STom Warren 21eceb3f26SStephen Warren enum tegra_gpio_init { 22eceb3f26SStephen Warren TEGRA_GPIO_INIT_IN, 23eceb3f26SStephen Warren TEGRA_GPIO_INIT_OUT0, 24eceb3f26SStephen Warren TEGRA_GPIO_INIT_OUT1, 25eceb3f26SStephen Warren }; 26eceb3f26SStephen Warren 27eceb3f26SStephen Warren struct tegra_gpio_config { 28eceb3f26SStephen Warren u32 gpio:16; 29eceb3f26SStephen Warren u32 init:2; 30eceb3f26SStephen Warren }; 31eceb3f26SStephen Warren 322fccd2d9SSimon Glass /** 33eceb3f26SStephen Warren * Configure a list of GPIOs 34eceb3f26SStephen Warren * 35eceb3f26SStephen Warren * @param config List of GPIO configurations 36eceb3f26SStephen Warren * @param len Number of config items in list 37eceb3f26SStephen Warren */ 38eceb3f26SStephen Warren void gpio_config_table(const struct tegra_gpio_config *config, int len); 39eceb3f26SStephen Warren 40150c2493STom Warren #endif /* TEGRA_GPIO_H_ */ 41