ARM: tegra11x: CPUID virtualization support
[linux-3.10.git] / arch / arm / mach-tegra / Kconfig
1 # Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
2 #
3 # This program is free software; you can redistribute it and/or modify it
4 # under the terms and conditions of the GNU General Public License,
5 # version 2, as published by the Free Software Foundation.
6 #
7 # This program is distributed in the hope it will be useful, but WITHOUT
8 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
10 # more details.
11 #
12 # You should have received a copy of the GNU General Public License
13 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
14
15 if ARCH_TEGRA
16
17 comment "NVIDIA Tegra options"
18
19 config ARCH_TEGRA_2x_SOC
20         bool "Enable support for Tegra20 family"
21         depends on !ARCH_TEGRA_3x_SOC
22         depends on !ARCH_TEGRA_11x_SOC
23         select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
24         select ARCH_SUPPORTS_MSI if TEGRA_PCI
25         select ARCH_TEGRA_HAS_ARM_SCU
26         select ARCH_TEGRA_HAS_PCIE
27         select ARM_CPU_SUSPEND if PM
28         select ARM_ERRATA_716044
29         select ARM_ERRATA_720789
30         select ARM_ERRATA_742230 if SMP
31         select ARM_ERRATA_751472
32         select ARM_ERRATA_754327 if SMP
33         select ARM_ERRATA_764369 if SMP
34         select ARM_GIC
35         select ARM_SAVE_DEBUG_CONTEXT if PM_SLEEP
36         select COMMON_CLK
37         select CPA
38         select CPU_FREQ_TABLE if CPU_FREQ
39         select CPU_V7
40         select NVMAP_CACHE_MAINT_BY_SET_WAYS
41         select NVMAP_OUTER_CACHE_MAINT_BY_SET_WAYS
42         select PCI_MSI if TEGRA_PCI
43         select PINCTRL
44         select PINCTRL_TEGRA20
45         select PL310_ERRATA_769419 if CACHE_L2X0
46         select SOC_BUS
47         select USB_ARCH_HAS_EHCI if USB_SUPPORT
48         select USB_ULPI if USB_PHY
49         select USB_ULPI_VIEWPORT if USB_PHY
50         help
51           Support for NVIDIA Tegra AP20 and T20 processors, based on the
52           ARM CortexA9MP CPU and the ARM PL310 L2 cache controller
53
54 config ARCH_TEGRA_3x_SOC
55         bool "Enable support for Tegra30 family"
56         depends on !ARCH_TEGRA_11x_SOC
57         select ARCH_SUPPORTS_MSI if TEGRA_PCI
58         select ARCH_TEGRA_HAS_ARM_SCU
59         select ARCH_TEGRA_HAS_PCIE
60         select ARCH_TEGRA_HAS_SATA
61         select ARCH_TEGRA_HAS_DUAL_3D
62         select ARCH_TEGRA_HAS_DUAL_CPU_CLUSTERS
63         select ARM_CPU_SUSPEND if PM
64         select ARM_ERRATA_743622
65         select ARM_ERRATA_751472
66         select ARM_ERRATA_754322
67         select ARM_ERRATA_764369 if SMP
68         select ARM_GIC
69         select ARM_SAVE_DEBUG_CONTEXT if PM_SLEEP
70         select COMMON_CLK
71         select CPA
72         select CPU_FREQ_TABLE if CPU_FREQ
73         select CPU_V7
74         select GIC_SET_MULTIPLE_CPUS if SMP
75         select NVMAP_CACHE_MAINT_BY_SET_WAYS
76         select NVMAP_OUTER_CACHE_MAINT_BY_SET_WAYS
77         select PCI_MSI if TEGRA_PCI
78         select PINCTRL
79         select PINCTRL_TEGRA30
80         select PL310_ERRATA_727915
81         select PL310_ERRATA_769419 if CACHE_L2X0
82         select REPORT_PRESENT_CPUS if TEGRA_AUTO_HOTPLUG
83         select SOC_BUS
84         select TEGRA_LATENCY_ALLOWANCE if !TEGRA_FPGA_PLATFORM
85         select TEGRA_LATENCY_ALLOWANCE_SCALING if !TEGRA_FPGA_PLATFORM
86         select TEGRA_LP2_CPU_TIMER if HAVE_ARM_TWD && !TEGRA_RAIL_OFF_MULTIPLE_CPUS
87         select USB_ARCH_HAS_EHCI if USB_SUPPORT
88         select USB_ULPI if USB_PHY
89         select USB_ULPI_VIEWPORT if USB_PHY
90         help
91           Support for NVIDIA Tegra T30 processor family, based on the
92           ARM CortexA9MP CPU and the ARM PL310 L2 cache controller
93
94 config ARCH_TEGRA_11x_SOC
95         bool "Tegra 11x family SOC"
96         select ARCH_REQUIRE_GPIOLIB
97         select ARCH_TEGRA_4GB_MEMORY
98         select ARCH_TEGRA_HAS_CL_DVFS
99         select ARCH_TEGRA_HAS_DUAL_CPU_CLUSTERS
100         select ARCH_TEGRA_HAS_SYMMETRIC_CPU_PWR_GATE
101         select ARM_ARCH_TIMER
102         select ARM_CPU_SUSPEND if PM
103         select ARM_GIC
104         select ARM_L1_CACHE_SHIFT_6
105         select CPA
106         select CPU_V7
107         select EDP_FRAMEWORK
108         select REPORT_PRESENT_CPUS if TEGRA_AUTO_HOTPLUG
109         select SOC_BUS
110         select TEGRA_DUAL_CBUS
111         select TEGRA_DYNAMIC_CBUS
112         select TEGRA_ISOMGR
113         select TEGRA_ISOMGR_SYSFS
114         select TEGRA_ISOMGR_DEBUG
115         select TEGRA_LATENCY_ALLOWANCE if !TEGRA_FPGA_PLATFORM
116         select TEGRA_LP2_CPU_TIMER if !TEGRA_RAIL_OFF_MULTIPLE_CPUS
117         select TEGRA_MC_PTSA if !TEGRA_FPGA_PLATFORM
118         select TEGRA_USE_DFLL if TEGRA_SILICON_PLATFORM
119         select USB_ARCH_HAS_EHCI if USB_SUPPORT
120         select USB_EHCI_TEGRA if USB_SUPPORT
121         select USB_ULPI if USB_SUPPORT
122         select USB_ULPI_VIEWPORT if USB_SUPPORT
123         help
124           Support for NVIDIA Tegra 11x family of SoCs, based upon the
125           ARM Cortex-A15MP CPU
126
127 config ARCH_TEGRA_HAS_ARM_SCU
128         bool
129
130 config ARCH_TEGRA_HAS_DUAL_3D
131         bool
132
133 config ARCH_TEGRA_HAS_DUAL_CPU_CLUSTERS
134         bool
135
136 config ARCH_TEGRA_HAS_SYMMETRIC_CPU_PWR_GATE
137         bool
138
139 config ARCH_TEGRA_HAS_PCIE
140         bool
141
142 config ARCH_TEGRA_HAS_SATA
143         bool
144
145 config ARCH_TEGRA_HAS_CL_DVFS
146         bool
147
148 config TEGRA_PCI
149         bool "PCIe host controller driver"
150         select PCI
151         depends on ARCH_TEGRA_HAS_PCIE
152         help
153           Adds PCIe Host controller driver for tegra based systems
154
155 config TEGRA_AHB
156         bool "Enable AHB driver for NVIDIA Tegra SoCs"
157         default y
158         help
159           Adds AHB configuration functionality for NVIDIA Tegra SoCs,
160           which controls AHB bus master arbitration and some
161           performance parameters(priority, prefech size).
162
163 comment "Tegra board type"
164
165 config MACH_CURACAO
166        bool "Curacao board"
167        depends on ARCH_TEGRA_11x_SOC
168        select MACH_HAS_SND_SOC_TEGRA_WM8903 if SND_SOC
169        select TEGRA_FPGA_PLATFORM
170        help
171          Support for NVIDIA Curacao FPGA development platform
172
173
174 config MACH_DALMORE
175        bool "Dalmore board"
176        depends on ARCH_TEGRA_11x_SOC
177        select MACH_HAS_SND_SOC_TEGRA_RT5639 if SND_SOC
178        select MACH_HAS_SND_SOC_TEGRA_RT5640 if SND_SOC
179        help
180          Support for NVIDIA DALMORE development platform
181
182 config MACH_TEGRA_PLUTO
183        bool "Pluto board"
184        depends on ARCH_TEGRA_11x_SOC
185        select MACH_HAS_SND_SOC_TEGRA_CS42L73 if SND_SOC
186        help
187          Support for NVIDIA PLUTO development platform
188
189 choice
190        prompt "Tegra platform type"
191        default TEGRA_SILICON_PLATFORM
192
193 config TEGRA_SILICON_PLATFORM
194         bool "Silicon"
195         help
196           This enables support for a Tegra silicon platform.
197
198 config TEGRA_SIMULATION_PLATFORM
199         bool "Simulation"
200         help
201           This enables support for a Tegra simulation platform.
202           Select this only if you are an NVIDIA developer working
203           on a simulation platform.
204
205 config TEGRA_FPGA_PLATFORM
206         bool "FPGA"
207         help
208           This enables support for a Tegra FPGA platform.
209           Select this only if you are an NVIDIA developer working
210           on a FPGA platform.
211 endchoice
212
213 config TEGRA_FIQ_DEBUGGER
214         bool "Enable the FIQ serial debugger on Tegra"
215         default n
216         select FIQ_DEBUGGER
217         help
218           Enables the FIQ serial debugger on Tegra
219
220 config TEGRA_EMC_SCALING_ENABLE
221         bool "Enable scaling the memory frequency"
222         depends on TEGRA_SILICON_PLATFORM
223         default n
224
225 config TEGRA_CPU_DVFS
226         bool "Enable voltage scaling on Tegra CPU"
227         depends on TEGRA_SILICON_PLATFORM
228         default y
229
230 config TEGRA_CORE_DVFS
231         bool "Enable voltage scaling on Tegra core"
232         depends on TEGRA_SILICON_PLATFORM
233         depends on TEGRA_CPU_DVFS
234         default y
235
236 config TEGRA_AVP_KERNEL_ON_MMU
237         bool "Use AVP MMU to relocate AVP kernel"
238         depends on ARCH_TEGRA_2x_SOC
239         default y
240         help
241           Use AVP MMU to relocate AVP kernel (nvrm_avp.bin).
242
243 config TEGRA_AVP_KERNEL_ON_SMMU
244         bool "Use SMMU to relocate AVP kernel"
245         depends on TEGRA_IOVMM_SMMU
246         default y
247         help
248           Use SMMU to relocate AVP kernel (nvrm_avp.bin).
249
250 config TEGRA_ARB_SEMAPHORE
251         bool
252
253 config TEGRA_THERMAL_THROTTLE
254         bool "Enable throttling of CPU speed on overtemp"
255         depends on TEGRA_SILICON_PLATFORM
256         depends on CPU_FREQ
257         depends on THERMAL
258         default y
259         help
260           Also requires enabling a temperature sensor such as NCT1008.
261
262 config TEGRA_CLOCK_DEBUG_WRITE
263         bool "Enable debugfs write access to clock tree"
264         depends on DEBUG_FS
265         default n
266
267 config TEGRA_CLUSTER_CONTROL
268         bool
269         depends on ARCH_TEGRA_HAS_DUAL_CPU_CLUSTERS
270         default y if PM_SLEEP
271
272 config TEGRA_CPUQUIET
273         bool
274
275 config TEGRA_AUTO_HOTPLUG
276         bool "Enable automatic CPU hot-plugging"
277         depends on HOTPLUG_CPU && CPU_FREQ && !ARCH_CPU_PROBE_RELEASE && !ARCH_TEGRA_2x_SOC
278         select TEGRA_CPUQUIET
279         default y
280         help
281           This option enables turning CPUs off/on and switching tegra
282           high/low power CPU clusters automatically, corresponding to
283           CPU frequency scaling.
284
285 config TEGRA_MC_EARLY_ACK
286         bool "Enable early acknowledgement from mermory controller"
287         depends on ARCH_TEGRA_3x_SOC
288         default y
289         help
290           This option enables early acknowledgement from memory
291           controller. This feature is used to improve CPU memory
292           write performance.
293
294 config TEGRA_EDP_LIMITS
295         bool "Enforce electrical design limits"
296         depends on TEGRA_SILICON_PLATFORM
297         depends on CPU_FREQ
298         depends on THERMAL
299         default y if ARCH_TEGRA_3x_SOC
300         default n
301         help
302           Limit maximum CPU frequency based on temperature and number
303           of on-line CPUs to keep CPU rail current within power supply
304           capabilities.
305
306 config TEGRA_EMC_TO_DDR_CLOCK
307         int "EMC to DDR clocks ratio"
308         default "2" if ARCH_TEGRA_2x_SOC
309         default "1"
310
311 config TEGRA_GADGET_BOOST_CPU_FREQ
312         int "Boost cpu frequency for tegra usb gadget (0-1300 mhz)"
313         range 0 1300
314         default 0
315         help
316           Devices need to boost frequency of CPU when they are connected
317           to host pc through usb cable for better performance. This value
318           is the amount of the frequency (in mhz) to be boosted. If it is
319           zero boosting frequency will not be enabled. This value will be
320           used only by usb gadget driver.
321
322 config TEGRA_DYNAMIC_PWRDET
323         bool "Enable dynamic activation of IO level auto-detection"
324         depends on TEGRA_SILICON_PLATFORM
325         default n
326         help
327           This option allows turning off tegra IO level auto-detection
328           when IO power is stable. If set auto-detection cells are active
329           only during power transitions, otherwise, the cells are active
330           always
331
332 config TEGRA_EDP_EXACT_FREQ
333         bool "Use maximum possible cpu frequency when EDP capping"
334         depends on TEGRA_EDP_LIMITS
335         default y
336         help
337           When enabled the cpu will run at the exact frequency
338           specified in the EDP table when EDP capping is applied; when
339           disabled the next lower cpufreq frequency will be used.
340
341 config TEGRA_USB_MODEM_POWER
342         bool "Enable tegra usb modem power management"
343         default n
344         help
345           This option enables support for out-of_band remote wakeup, selective
346           suspend and system suspend/resume.
347
348 config TEGRA_BB_XMM_POWER
349         bool "Enable power driver for XMM modem"
350         default n
351         help
352           Enables power driver which controls gpio signals to XMM modem.
353
354 config TEGRA_BB_XMM_POWER2
355         tristate "Enable power driver for XMM modem (flashless)"
356         default n
357         help
358           Enables power driver which controls gpio signals to XMM modem
359           (in flashless configuration).  User-mode application must
360           insert this LKM to initiate 2nd USB enumeration power sequence
361           - after modem software has been downloaded to flashless device.
362
363 config TEGRA_PLLM_RESTRICTED
364         bool "Restrict PLLM usage as module clock source"
365         depends on !ARCH_TEGRA_2x_SOC
366         default n
367         help
368           When enabled, PLLM usage may be restricted to modules with dividers
369           capable of dividing maximum PLLM frequency at minimum voltage. When
370           disabled, PLLM is used as a clock source with no restrictions (which
371           may effectively increase lower limit for core voltage).
372
373 config TEGRA_WDT_RECOVERY
374         bool "Enable suspend/resume watchdog recovery mechanism"
375         default n
376         help
377           Enables watchdog recovery mechanism to protect against
378           suspend/resume hangs.
379
380 config TEGRA_LP2_CPU_TIMER
381         bool
382
383 config TEGRA_RAIL_OFF_MULTIPLE_CPUS
384         bool
385
386 config TEGRA_SLOW_CSITE
387         bool "lower csite clock to 1 Mhz to reduce its power consumption"
388         default n
389         help
390           When enabled, csite will be running at 1 Mhz and the performance of
391           jtag, lauterbach and other debugger will be extremely slow.
392
393 config TEGRA_PREPOWER_WIFI
394         bool "Pre-power up WiFi "
395         default n
396         help
397           Pre-power up the on board WiFi chip
398
399 config TEGRA_DYNAMIC_CBUS
400         bool "Adjust dynamically graphics clocks cumulative dvfs table"
401
402 config TEGRA_DUAL_CBUS
403         bool "Use two plls (PLLC2/PLLC3) as graphics clocks sources"
404
405 config TEGRA_MIGRATE_CBUS_USERS
406         bool "Move cbus users between source plls to optimize cumulative dvfs"
407         depends on TEGRA_DYNAMIC_CBUS && TEGRA_DUAL_CBUS
408
409 config TEGRA_SKIN_THROTTLE
410         bool "Skin Temperature throttling"
411         depends on TEGRA_THERMAL_THROTTLE
412         depends on THERM_EST
413         default n
414         help
415           Enable throttling to control the temperature of the skin/case
416           of the device.
417
418 config ARCH_TEGRA_4GB_MEMORY
419         bool "Full 4GB physical memory support"
420         default n
421         help
422           Harmless to select this even if hardware does not support full
423           4GB physical memory.
424
425 config TEGRA_LP1_950
426         bool "LP1 low core voltage"
427         default n
428         depends on ARCH_TEGRA_3x_SOC
429         help
430                 Enable support for LP1 Core voltage to set to lowest
431
432 config TEGRA_LATENCY_ALLOWANCE
433         bool "Allow memory clients to configure latency allowance"
434         help
435           Latency allowance is a per-memory-client setting that tells the
436           memory controller how long it can ignore a request in favor of
437           others. In other words, It indicates how long a request from specific
438           memory client can wait before it is served.
439           Enabling this option allows memory clients configure the
440           latency allowance as per their bandwidth requirement.
441
442 config TEGRA_LATENCY_ALLOWANCE_SCALING
443         bool "Enable latency allowance scaling"
444         depends on TEGRA_LATENCY_ALLOWANCE
445         help
446           Enables latency allowance scaling, which enables scaling
447           programmed latency allowance values based on fifo threshold levels
448           set for for display and vi hardware.
449
450 config TEGRA_MC_PTSA
451         bool "Enable MC PTSA programming"
452         depends on TEGRA_LATENCY_ALLOWANCE
453         help
454           Enables Priority Tier Snap Arbiter programming in
455           Memory Controller. PTSA is a Memory Controller feature that
456           allows specifying the bandwidth necessary for ISO clients.
457
458 config TEGRA_ISOMGR
459         bool "Isochronous Bandwidth Manager "
460         help
461           When enabled, drivers for ISO units can obtain ISO BW.
462           The memory controller (MC) for each Tegra platform can supply
463           a limited amount of isochronous (real-time) bandwidth.  When
464           enabled, isomgr will manage a pool of ISO BW.
465
466 config TEGRA_ISOMGR_POOL_KB_PER_SEC
467         int "Size of isomgr pool "
468         default 0
469         help
470           Set this maximum ISO BW (in Kbytes/sec) that platform supports.
471           The memory controller (MC) for each Tegra platform can supply
472           a limited amount of isochronous (real-time) bandwidth.  Each
473           platform must specify the maximum amount of ISO BW that isomgr
474           should manage.
475
476 config TEGRA_ISOMGR_SYSFS
477         bool "Visibility into Isochronous Bandwidth Manager state "
478         depends on TEGRA_ISOMGR
479         help
480           When enabled, sysfs can be used to query isomgr state.
481           This is used for visibility into isomgr state.  It could
482           be useful in debug or in understanding performance on a
483           running system.
484
485 config TEGRA_ISOMGR_DEBUG
486         bool "Inject stimulus into Isochronous Bandwidth Manager "
487         depends on TEGRA_ISOMGR && TEGRA_ISOMGR_SYSFS
488         help
489           When enabled, sysfs can be used to inject stimulus into isomgr.
490           This is used to generate stimulus to isomgr for debug.  It's
491           especially useful for contriving isomgr tests.  You can write
492           user space tests that exercise isomgr in ways that drivers
493           couldn't easily accommodate.
494
495 config TEGRA_IO_DPD
496         bool "Allow IO DPD"
497         depends on ARCH_TEGRA_3x_SOC
498         depends on PM_SLEEP
499         default y
500         help
501           Allow devices listed in tegra_list_io_dpd[] to go into
502           Deep Power Down (DPD) state. This is a temporary config
503           option until a proper way is implemented to resolve this issue.
504
505 config TEGRA_USE_DFLL
506         bool "Use DFLL as CPU clock source by default"
507         depends on ARCH_TEGRA_HAS_CL_DVFS
508         default n
509         help
510           Enables dynamic frequency lock loop (DFLL) as CPU clock
511           source.
512
513 config TEGRA_SOCTHERM
514         bool "Enable soctherm"
515         default n
516         help
517           Enables use of soctherm for thermal management.
518
519 config TEGRA_VIRTUAL_CPUID
520         bool "virtualized CPUID"
521         depends on !TRUSTED_FOUNDATIONS
522         depends on ARCH_TEGRA_HAS_SYMMETRIC_CPU_PWR_GATE
523         default n
524         help
525           Enables virtualized CPUID.
526 endif