Tegra/Mainline SW/Linux kernel

NVIDIA Tegra SoCs are well supported by mainline kernels.

Kernel releases may be obtained from:
 * https://www.kernel.org/ releases, via download.
 * https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ releases, via git.
 * https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/ absolute latest development code, via git.

The following mainline kernel releases introduced support for Tegra SoCs:
 * Tegra20 has been upstream for many years.
 * Tegra30 support was added in v3.3.
 * Tegra114 support was added in v3.9.
 * Tegra124 support was added in v3.13.

The first kernel release to support a given SoC has historically contained extremely minimal support. One or two kernel releases later will typically be the first useful version.

Features that already work are:


 * It boots!
 * Serial console.
 * CPU hotplug.
 * CPU frequency scaling (basic, for Tegra20 only).
 * I2C master.
 * Regulators, PMICs, RTCs.
 * SPI.
 * SD/eMMC.
 * USB Host.
 * Display controller (not all I/O interfaces on all SoCs; see below):
 * RGB/LVDS for Tegra20/30 (for LCD panel support).
 * DSI for Tegra114 (for LCD panel support).
 * eDP for Tegra124 (for LCD panel support).
 * HDMI for Tegra20/30/114/124.
 * PCIe (Tegra20/30).

A probably-incomplete list of features that are not yet implemented is:


 * Kepler GPU support via Nouvea (work in progress).
 * Advanced (high-speed) transfer modes for SD and eMMC. IO voltage scaling.
 * PCIe on Tegra124.
 * USB device mode and OTG.
 * SKU awareness (SKU-specific clock and thermal limits).
 * POR (Plan Of Record) clocks.
 * cpufreq for SoCs other than Tegra20.
 * EMC (memory controller) frequency scaling.
 * DVFS (Dynamic Voltage and Frequency Scaling).
 * Thermal management.
 * USB bus power saving.
 * I2C slave support. The Toshiba AC100 NVEC driver could be generalized to provide this.
 * SPI slave support?