[PATCH] ARM: tegra: Add NVIDIA Jetson Nano Developer Kit support

Stephen Warren swarren at wwwdotorg.org
Wed Mar 25 20:30:36 CET 2020

On 3/24/20 1:03 PM, twarren at nvidia.com wrote:
> From: Tom Warren <twarren at nvidia.com>
> The Jetson Nano Developer Kit is a Tegra X1-based development board. It
> is similar to Jetson TX1 but it is not pin compatible. It features 4GB
> of LPDDR4, a SPI NOR flash for early boot firmware and an SD card slot
> used for storage.
> HDMI 2.0 or DP 1.2 are available for display, four USB ports (3 USB 2.0
> and 1 USB 3.0) can be used to attach a variety of peripherals and a PCI
> Ethernet controller provides onboard network connectivity. NVMe support
> has also been added. Env save is at the end of QSPI (4MB-8K).
> A 40-pin header on the board can be used to extend the capabilities and
> exposed interfaces of the Jetson Nano.

>  arch/arm/dts/tegra210-p3450-0000.dts | 147 +++++++++++++++++++++++++++++

This filename is consistent with other DT filenames in U-Boot, but
there's been a movement downstream to name DT after baseboard plus
module rather than combination, so tegra210-p3449-0000+p3448-0000.dts.
Either is probably fine for now since this board was released before the
push towards the more descriptive naming.

> diff --git a/arch/arm/mach-tegra/board2.c b/arch/arm/mach-tegra/board2.c

> +	/*
> +	 * Turn off (reset/disable) SDMMC1 on Nano here, before GPIO INIT.
> +	 * We do this because earlier bootloaders have enabled power to
> +	 * SDMMC1 on Nano, and toggling power-gpio (PZ3) in pinmux_init()
> +	 * results in power being back-driven into the SD-card and SDMMC1
> +	 * HW, which is 'bad' as per the HW team.
> +	 *
> +	 * From the HW team: "LDO2 from the PMIC has already been set to 3.3v in
> +	 * nvtboot/CBoot on Nano (for SD-card boot). So when U-Boot's GPIO_INIT
> +	 * table sets PZ3 to OUT0 as per the pinmux spreadsheet, it turns off
> +	 * the loadswitch. When PZ3 is 0 and not driving, essentially the SDCard
> +	 * voltage turns off. Since the SDCard voltage is no longer there, the
> +	 * SDMMC CLK/DAT lines are backdriving into what essentially is a
> +	 * powered-off SDCard, that's why the voltage drops from 3.3V to ~1.6V"
> +	 *
> +	 * Note that this can probably be removed when we change over to storing
> +	 * all BL components on QSPI on Nano, and U-Boot then becomes the first
> +	 * one to turn on SDMMC1 power. Another fix would be to have CBoot
> +	 * disable power/gate SDMMC1 off before handing off to U-Boot/kernel.
> +	 */
> +	reset_set_enable(PERIPH_ID_SDMMC1, 1);
> +	clock_set_enable(PERIPH_ID_SDMMC1, 0);

I imagine we can remove this completely now that cboot does 100% of the
pinmux init, so the referenced pinmux_init() function in U-Boot no
longer causes a problem?

> diff --git a/board/nvidia/p3450-0000/p3450-0000.c b/board/nvidia/p3450-0000/p3450-0000.c

> +static void ft_carveout_setup(void *fdt)

If/when we upstream the DT node/property copying feature, can this code
be replaced by simply adding extra nodes/properties to the copy list?

> diff --git a/configs/p3450-0000_defconfig b/configs/p3450-0000_defconfig


We can drop this assuming the code chunk I commented on above gets dropped.


Does this work already? I thought it was still under development for Tegra.

More information about the U-Boot mailing list