hc
2023-08-30 862c27fc9920c83318c784bfdadf43a65df1ec8f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
if TEGRA
 
config SPL_GPIO_SUPPORT
   default y
 
config SPL_LIBCOMMON_SUPPORT
   default y
 
config SPL_LIBGENERIC_SUPPORT
   default y
 
config SPL_SERIAL_SUPPORT
   default y
 
config TEGRA_IVC
   bool "Tegra IVC protocol"
   help
     IVC (Inter-VM Communication) protocol is a Tegra-specific IPC
     (Inter Processor Communication) framework. Within the context of
     U-Boot, it is typically used for communication between the main CPU
     and various auxiliary processors.
 
config TEGRA_COMMON
   bool "Tegra common options"
   select CLK
   select DM
   select DM_ETH
   select DM_GPIO
   select DM_I2C
   select DM_KEYBOARD
   select DM_MMC
   select DM_PWM
   select DM_RESET
   select DM_SERIAL
   select DM_SPI
   select DM_SPI_FLASH
   select MISC
   select SPI
   select OF_CONTROL
   select VIDCONSOLE_AS_LCD if DM_VIDEO
   select BOARD_EARLY_INIT_F
   imply CRC32_VERIFY
 
config TEGRA_NO_BPMP
   bool "Tegra common options for SoCs without BPMP"
   select TEGRA_CAR
   select TEGRA_CAR_CLOCK
   select TEGRA_CAR_RESET
 
config TEGRA_ARMV7_COMMON
   bool "Tegra 32-bit common options"
   select CPU_V7
   select SPL
   select SPL_BOARD_INIT if SPL
   select SUPPORT_SPL
   select TEGRA_COMMON
   select TEGRA_GPIO
   select TEGRA_NO_BPMP
 
config TEGRA_ARMV8_COMMON
   bool "Tegra 64-bit common options"
   select ARM64
   select TEGRA_COMMON
 
choice
   prompt "Tegra SoC select"
   optional
 
config TEGRA20
   bool "Tegra20 family"
   select ARM_ERRATA_716044
   select ARM_ERRATA_742230
   select ARM_ERRATA_751472
   select TEGRA_ARMV7_COMMON
 
config TEGRA30
   bool "Tegra30 family"
   select ARM_ERRATA_743622
   select ARM_ERRATA_751472
   select TEGRA_ARMV7_COMMON
 
config TEGRA114
   bool "Tegra114 family"
   select TEGRA_ARMV7_COMMON
 
config TEGRA124
   bool "Tegra124 family"
   select TEGRA_ARMV7_COMMON
   imply REGMAP
   imply SYSCON
 
config TEGRA210
   bool "Tegra210 family"
   select TEGRA_GPIO
   select TEGRA_ARMV8_COMMON
   select TEGRA_NO_BPMP
 
config TEGRA186
   bool "Tegra186 family"
   select DM_MAILBOX
   select TEGRA186_BPMP
   select TEGRA186_CLOCK
   select TEGRA186_GPIO
   select TEGRA186_RESET
   select TEGRA_ARMV8_COMMON
   select TEGRA_HSP
   select TEGRA_IVC
 
endchoice
 
config TEGRA_DISCONNECT_UDC_ON_BOOT
   bool "Disconnect USB device mode controller on boot"
   default y
   help
     When loading U-Boot into RAM over USB protocols using tools such as
     tegrarcm or L4T's exec-uboot.sh/tegraflash.py, Tegra's USB device
     mode controller is initialized and enumerated by the host PC running
     the tool. Unfortunately, these tools do not shut down the USB
     controller before executing the downloaded code, and so the host PC
     does not "de-enumerate" the USB device. This option shuts down the
     USB controller when U-Boot boots to avoid leaving a stale USB device
     present.
 
config SYS_MALLOC_F_LEN
   default 0x1800
 
source "arch/arm/mach-tegra/tegra20/Kconfig"
source "arch/arm/mach-tegra/tegra30/Kconfig"
source "arch/arm/mach-tegra/tegra114/Kconfig"
source "arch/arm/mach-tegra/tegra124/Kconfig"
source "arch/arm/mach-tegra/tegra210/Kconfig"
source "arch/arm/mach-tegra/tegra186/Kconfig"
 
config CMD_ENTERRCM
   bool "Enable 'enterrcm' command"
   default y
   help
     Tegra's boot ROM supports a mode whereby code may be downloaded and
     flash-programmed over a USB connection. On dev boards, this is
     typically entered by holding down a "force recovery" button and
     resetting the CPU. However, not all boards have such a button (one
     example is the Compulab Trimslice), so a method to enter RCM from
     software is useful.
 
     Even on boards other than Trimslice, controlling this over a UART
     may be useful, e.g. to allow simple remote control without the need
     for mechanical button actuators, or hooking up relays/... to the
     button.
 
endif