blob: 44cd455699e797f1f446bb4acdc5ea0b8b9fb52e [file] [log] [blame]
Thierry Redingf3685592011-11-17 00:10:23 +00001/*
2 * Copyright (c) 2011, Google Inc. All rights reserved.
Wolfgang Denkd79de1d2013-07-08 09:37:19 +02003 * SPDX-License-Identifier: GPL-2.0+
Thierry Redingf3685592011-11-17 00:10:23 +00004 */
5
Tom Warrenab371962012-09-19 15:50:56 -07006#ifndef _TEGRA_GPIO_H_
7#define _TEGRA_GPIO_H_
Thierry Redingf3685592011-11-17 00:10:23 +00008
Tom Warrenab371962012-09-19 15:50:56 -07009#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
Stephen Warren4b27bf12014-04-22 14:37:53 -060017enum tegra_gpio_init {
18 TEGRA_GPIO_INIT_IN,
19 TEGRA_GPIO_INIT_OUT0,
20 TEGRA_GPIO_INIT_OUT1,
21};
22
23struct tegra_gpio_config {
24 u32 gpio:16;
25 u32 init:2;
26};
27
Tom Warrenab371962012-09-19 15:50:56 -070028/*
29 * Tegra-specific GPIO API
30 */
31
Stephen Warren4b27bf12014-04-22 14:37:53 -060032/**
33 * Configure a list of GPIOs
34 *
35 * @param config List of GPIO configurations
36 * @param len Number of config items in list
37 */
38void gpio_config_table(const struct tegra_gpio_config *config, int len);
39
Tom Warrenab371962012-09-19 15:50:56 -070040void gpio_info(void);
Thierry Redingf3685592011-11-17 00:10:23 +000041
Tom Warrenab371962012-09-19 15:50:56 -070042#define gpio_status() gpio_info()
Stephen Warren4b27bf12014-04-22 14:37:53 -060043
Tom Warrenab371962012-09-19 15:50:56 -070044#endif /* TEGRA_GPIO_H_ */