/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
/* Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved. */

/*
 * This header provides constants for binding nvidia,tegra264-gpio*.
 *
 * The first cell in Tegra's GPIO specifier is the GPIO ID. The macros below
 * provide names for this.
 *
 * The second cell contains standard flag values specified in gpio.h.
 */

#ifndef _DT_BINDINGS_GPIO_TEGRA264_GPIO_H
#define _DT_BINDINGS_GPIO_TEGRA264_GPIO_H

#include <dt-bindings/gpio/gpio.h>

/* GPIOs implemented by main GPIO controller */
#define TEGRA264_MAIN_GPIO_PORT_T  0
#define TEGRA264_MAIN_GPIO_PORT_U  1
#define TEGRA264_MAIN_GPIO_PORT_V  2
#define TEGRA264_MAIN_GPIO_PORT_W  3
#define TEGRA264_MAIN_GPIO_PORT_AL 4
#define TEGRA264_MAIN_GPIO_PORT_Y  5
#define TEGRA264_MAIN_GPIO_PORT_Z  6
#define TEGRA264_MAIN_GPIO_PORT_X  7
#define TEGRA264_MAIN_GPIO_PORT_H  8
#define TEGRA264_MAIN_GPIO_PORT_J  9
#define TEGRA264_MAIN_GPIO_PORT_K  10
#define TEGRA264_MAIN_GPIO_PORT_L  11
#define TEGRA264_MAIN_GPIO_PORT_M  12
#define TEGRA264_MAIN_GPIO_PORT_P  13
#define TEGRA264_MAIN_GPIO_PORT_Q  14
#define TEGRA264_MAIN_GPIO_PORT_R  15
#define TEGRA264_MAIN_GPIO_PORT_S  16
#define TEGRA264_MAIN_GPIO_PORT_F  17
#define TEGRA264_MAIN_GPIO_PORT_G  18

#define TEGRA264_MAIN_GPIO(port, offset) \
	((TEGRA264_MAIN_GPIO_PORT_##port * 8) + (offset))

/* GPIOs implemented by AON GPIO controller */
#define TEGRA264_AON_GPIO_PORT_AA  0
#define TEGRA264_AON_GPIO_PORT_BB  1
#define TEGRA264_AON_GPIO_PORT_CC  2
#define TEGRA264_AON_GPIO_PORT_DD  3
#define TEGRA264_AON_GPIO_PORT_EE  4

#define TEGRA264_AON_GPIO(port, offset) \
	((TEGRA264_AON_GPIO_PORT_##port * 8) + (offset))

#define TEGRA264_UPHY_GPIO_PORT_A  0
#define TEGRA264_UPHY_GPIO_PORT_B  1
#define TEGRA264_UPHY_GPIO_PORT_C  2
#define TEGRA264_UPHY_GPIO_PORT_D  3
#define TEGRA264_UPHY_GPIO_PORT_E  4

#define TEGRA264_UPHY_GPIO(port, offset) \
	((TEGRA264_UPHY_GPIO_PORT_##port * 8) + (offset))

#endif
