coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
padconfig.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __SOC_NVIDIA_TEGRA210_PAD_CFG_H
4 #define __SOC_NVIDIA_TEGRA210_PAD_CFG_H
5 
6 #include <stdint.h>
7 #include <soc/pinmux.h>
8 
9 struct pad_config {
10  uint16_t pinmux_flags; /* PU/PU, OD, INPUT, SFIO, etc */
11  uint8_t gpio_index; /* bank, port, index */
19 };
20 
21 #define PAD_CFG_GPIO_INPUT(ball_, pinmux_flgs_) \
22  { \
23  .pinmux_flags = pinmux_flgs_ | PINMUX_INPUT_ENABLE, \
24  .gpio_index = PAD_TO_GPIO_##ball_, \
25  .pinmux_index = PINMUX_##ball_##_INDEX, \
26  .sfio = 0, \
27  .pad_has_gpio = PAD_HAS_GPIO_##ball_, \
28  }
29 
30 #define PAD_CFG_GPIO_OUT0(ball_, pinmux_flgs_) \
31  { \
32  .pinmux_flags = pinmux_flgs_, \
33  .gpio_index = PAD_TO_GPIO_##ball_, \
34  .pinmux_index = PINMUX_##ball_##_INDEX, \
35  .sfio = 0, \
36  .gpio_out0 = 1, \
37  .pad_has_gpio = PAD_HAS_GPIO_##ball_, \
38  }
39 
40 #define PAD_CFG_GPIO_OUT1(ball_, pinmux_flgs_) \
41  { \
42  .pinmux_flags = pinmux_flgs_, \
43  .gpio_index = PAD_TO_GPIO_##ball_, \
44  .pinmux_index = PINMUX_##ball_##_INDEX, \
45  .sfio = 0, \
46  .gpio_out1 = 1, \
47  .pad_has_gpio = PAD_HAS_GPIO_##ball_, \
48  }
49 
50 #define PAD_CFG_SFIO(ball_, pinmux_flgs_, sfio_) \
51  { \
52  .pinmux_flags = pinmux_flgs_ | \
53  PINMUX_##ball_##_FUNC_##sfio_, \
54  .gpio_index = PAD_TO_GPIO_##ball_, \
55  .pinmux_index = PINMUX_##ball_##_INDEX, \
56  .sfio = 1, \
57  .pad_has_gpio = PAD_HAS_GPIO_##ball_, \
58  }
59 
60 #define PAD_CFG_UNUSED(ball_) \
61  { \
62  .gpio_index = PAD_TO_GPIO_##ball_, \
63  .pinmux_index = PINMUX_##ball_##_INDEX, \
64  .unused = 1, \
65  .pad_has_gpio = PAD_HAS_GPIO_##ball_, \
66  }
67 /*
68  * Configure the pads associated with entry according to the configuration.
69  */
70 void soc_configure_pads(const struct pad_config * const entries, size_t num);
71 /* I2C6 requires special init as its pad lives int the SOR/DPAUX block */
72 void soc_configure_i2c6pad(void);
73 void soc_configure_host1x(void);
74 /* APE (Audio Processing Engine) requires special init */
75 void soc_configure_ape(void);
76 
77 #endif /* __SOC_NVIDIA_TEGRA210_PAD_CFG_H */
void soc_configure_host1x(void)
Definition: i2c6.c:71
void soc_configure_pads(const struct pad_config *const entries, size_t num)
Definition: padconfig.c:105
void soc_configure_i2c6pad(void)
Definition: i2c6.c:37
void soc_configure_ape(void)
Definition: ape.c:31
unsigned short uint16_t
Definition: stdint.h:11
unsigned char uint8_t
Definition: stdint.h:8
uint16_t pinmux_flags
Definition: padconfig.h:10
uint8_t gpio_index
Definition: padconfig.h:11
uint16_t unused
Definition: padconfig.h:13
uint16_t pinmux_index
Definition: padconfig.h:12
uint16_t pad_has_gpio
Definition: padconfig.h:17
uint16_t gpio_out1
Definition: padconfig.h:16
uint16_t por_pullup
Definition: padconfig.h:18
uint16_t sfio
Definition: padconfig.h:14
uint16_t gpio_out0
Definition: padconfig.h:15