03 Apr, 2020

2 commits

  • 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.

    Signed-off-by: Thierry Reding
    Signed-off-by: Tom Warren
    Tested-by: Peter Robinson

    Tom Warren
     
  • T210 CBoot is now doing the full pinmux and GPIO init, based on the DTB
    tables. Remove pinmux/GPIO init tables & code from all T210-based builds
    below:

    p2371-2180 aka TX1
    p2371-0000
    e2220-1170
    p2571

    Signed-off-by: Tom Warren
    Acked-by: Stephen Warren

    Tom Warren
     

12 Aug, 2019

2 commits


06 Jun, 2019

5 commits

  • If early firmware initialized the display hardware and the display
    controllers are scanning out a framebuffer (e.g. a splash screen), make
    sure to pass information about the memory location of that framebuffer
    to the kernel before booting to avoid the kernel from using that memory
    for the buddy allocator.

    This same mechanism can also be used in the kernel to set up early SMMU
    mappings and avoid SMMU faults caused by the display controller reading
    from memory for which it has no mapping.

    Reviewed-by: Simon Glass
    Signed-off-by: Thierry Reding
    Signed-off-by: Tom Warren

    Thierry Reding
     
  • If early firmware initialized the display hardware and the display
    controllers are scanning out a framebuffer (e.g. a splash screen), make
    sure to pass information about the memory location of that framebuffer
    to the kernel before booting to avoid the kernel from using that memory
    for the buddy allocator.

    This same mechanism can also be used in the kernel to set up early SMMU
    mappings and avoid SMMU faults caused by the display controller reading
    from memory for which it has no mapping.

    Reviewed-by: Simon Glass
    Signed-off-by: Thierry Reding
    Signed-off-by: Tom Warren

    Thierry Reding
     
  • Pass the ethernet MAC address to the kernel upon boot. This passes both
    the local-mac-address property (as passed to U-Boot from cboot) and the
    currently set MAC address via the mac-address property. The latter will
    only be set if it is different from the address that was already passed
    via the local-mac-address property.

    Signed-off-by: Thierry Reding
    Signed-off-by: Tom Warren

    Thierry Reding
     
  • Pass the ethernet MAC address to the kernel upon boot. This passes both
    the local-mac-address property (as passed to U-Boot from cboot) and the
    currently set MAC address via the mac-address property. The latter will
    only be set if it is different from the address that was already passed
    via the local-mac-address property.

    Signed-off-by: Thierry Reding
    Signed-off-by: Tom Warren

    Thierry Reding
     
  • Tegra186 build are currently dealt with in very special ways, which is
    because Tegra186 is fundamentally different in many respects. It is no
    longer necessary to do many of the low-level programming because early
    boot firmware will already have taken care of it.

    Unfortunately, separating Tegra186 builds from the rest in this way
    makes it difficult to share code with prior generations of Tegra. With
    all of the low-level programming code behind Kconfig guards, the build
    for Tegra186 can again be unified.

    As a side-effect, and partial reason for this change, other Tegra SoC
    generations can now make use of the code that deals with taking over a
    boot from earlier bootloaders. This used to be nvtboot, but has been
    replaced by cboot nowadays. Rename the files and functions related to
    this to avoid confusion. The implemented protocols are unchanged.

    Signed-off-by: Thierry Reding
    Signed-off-by: Tom Warren

    Thierry Reding
     

25 May, 2019

2 commits


07 May, 2018

1 commit

  • When U-Boot started using SPDX tags we were among the early adopters and
    there weren't a lot of other examples to borrow from. So we picked the
    area of the file that usually had a full license text and replaced it
    with an appropriate SPDX-License-Identifier: entry. Since then, the
    Linux Kernel has adopted SPDX tags and they place it as the very first
    line in a file (except where shebangs are used, then it's second line)
    and with slightly different comment styles than us.

    In part due to community overlap, in part due to better tag visibility
    and in part for other minor reasons, switch over to that style.

    This commit changes all instances where we have a single declared
    license in the tag as both the before and after are identical in tag
    contents. There's also a few places where I found we did not have a tag
    and have introduced one.

    Signed-off-by: Tom Rini

    Tom Rini
     

28 Apr, 2018

1 commit


06 Nov, 2017

1 commit

  • As part of my usual round of build testing, output about missing
    MAINTAINERS information was not logged, and thus often overlooked.
    Correct that mistake by ensuring that I log the output of
    genboardscfg.py every time. As part of that, address a number of
    missing MAINTAINERS entires. In the case of a missing file, I have put
    the original submitter down. In the rest of the cases I have added the
    config (and sometimes relevant header file) to the existing set of file
    globs.

    Signed-off-by: Tom Rini

    Tom Rini
     

04 Oct, 2017

1 commit

  • U-Boot widely uses error() as a bit noisier variant of printf().

    This macro causes name conflict with the following line in
    include/linux/compiler-gcc.h:

    # define __compiletime_error(message) __attribute__((error(message)))

    This prevents us from using __compiletime_error(), and makes it
    difficult to fully sync BUILD_BUG macros with Linux. (Notice
    Linux's BUILD_BUG_ON_MSG is implemented by using compiletime_assert().)

    Let's convert error() into now treewide-available pr_err().

    Done with the help of Coccinelle, excluing tools/ directory.

    The semantic patch I used is as follows:

    //
    @@@@
    -error
    +pr_err
    (...)
    //

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Simon Glass
    [trini: Re-run Coccinelle]
    Signed-off-by: Tom Rini

    Masahiro Yamada
     

29 Jul, 2017

1 commit

  • Convert this PMIC driver to driver model and fix up other users. The
    regulator and GPIO functions are now handled by separate drivers.

    Update nyan-big to work correct. Three boards will need to be updated by
    the maintainers: apalis-tk1, cei-tk1-som. Also the TODO in the code re
    as3722_sd_set_voltage() needs to be completed.

    Signed-off-by: Simon Glass
    Reviewed-by: Lukasz Majewski
    Tested-by: Marcel Ziswiler
    Tested-on: Jetson-TK1
    Tested-by: Stephen Warren

    Simon Glass
     

13 Jun, 2017

1 commit

  • Whistler is an ancient Tegra 2 reference board. I may have been the only
    person who ever used it with upstream software, and I've just recycled
    the board hardware. Hence, it makes sense to remove support from software.

    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Stephen Warren
     

05 Jun, 2017

1 commit


11 Jan, 2017

1 commit

  • Move (and rename) the following CONFIG options to Kconfig:

    CONFIG_DAVINCI_MMC (renamed to CONFIG_MMC_DAVINCI)
    CONFIG_OMAP_HSMMC (renamed to CONFIG_MMC_OMAP_HS)
    CONFIG_MXC_MMC (renamed to CONFIG_MMC_MXC)
    CONFIG_MXS_MMC (renamed to CONFIG_MMC_MXS)
    CONFIG_TEGRA_MMC (renamed to CONFIG_MMC_SDHCI_TEGRA)
    CONFIG_SUNXI_MMC (renamed to CONFIG_MMC_SUNXI)

    They are the same option names as used in Linux.

    This commit was created as follows:

    [1] Rename the options with the following command:

    find . -name .git -prune -o ! -path ./scripts/config_whitelist.txt \
    -type f -print | xargs sed -i -e '
    s/CONFIG_DAVINCI_MMC/CONFIG_MMC_DAVINCI/g
    s/CONFIG_OMAP_HSMMC/CONFIG_MMC_OMAP_HS/g
    s/CONFIG_MXC_MMC/CONFIG_MMC_MXC/g
    s/CONFIG_MXS_MMC/CONFIG_MMC_MXS/g
    s/CONFIG_TEGRA_MMC/CONFIG_MMC_SDHCI_TEGRA/g
    s/CONFIG_SUNXI_MMC/CONFIG_MMC_SUNXI/g
    '

    [2] Commit the changes

    [3] Create entries in driver/mmc/Kconfig.
    (copied from Linux)

    [4] Move the options with the following command
    tools/moveconfig.py -y -r HEAD \
    MMC_DAVINCI MMC_OMAP_HS MMC_MXC MMC_MXS MMC_SDHCI_TEGRA MMC_SUNXI

    [5] Sort and align drivers/mmc/Makefile for readability

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Marek Vasut

    Masahiro Yamada
     

28 Sep, 2016

1 commit

  • Commit ce02a71c2374 "tegra: dts: Sync tegra20 device tree files with
    Linux" enabled the ULPI USB port on Ventana, but made no attempt to ensure
    that U-Boot code could handle this. In practice, various code is missing,
    and various configuration options are not enabled, which causes U-Boot to
    hang when attempting to initialize this USB port. This patch enables ULPI
    PHY support on Ventana, and adds the required pinmux setup for the port to
    operate. Note that Ventana is so similar to Seaboard that this change is
    made in the Seaboard board file, which is shared with Ventana.

    Seaboard also has the ULPI USB port wired up in hardware, although to an
    internal port that often doesn't have anything attached to it. However,
    the DT nodes for the USB controller and PHY had different status property
    values, so the port was not initialized by U-Boot. Fix this inconsistency,
    and enable the ULPI port, just like in the Linux kernel DT. This likewise
    requires enabling ULPI support in the Seaboard defconfig.

    Cc: Marcel Ziswiler
    Signed-off-by: Stephen Warren
    Reviewed-by: Simon Glass
    Signed-off-by: Tom Warren

    Stephen Warren
     

02 Sep, 2016

1 commit

  • The Colorado TK1 SOM is a small form factor board similar to the
    Jetson TK1. The main differences lie in the pinmux, and in that the
    PCIe controller is set to use in 4lanes+1lane, rather than 2+2.

    The pinmux header here was generated from a spreadsheet provided by
    Colorado Engineering using the tegra-pinmux scripts. The spreadsheet
    was converted from v09 to v11 by me.

    Signed-off-by: Peter Chubb
    Acked-by: Stephen Warren
    Signed-off-by: Tom Warren

    Peter Chubb
     

16 Aug, 2016

3 commits

  • Program vdd_core for Jetson TK1 to 1V, which is the max safe voltage for
    ultra low temperature operations. vdd_cpu and vdd_gpu are already at 1V.

    Signed-off-by: Bibek Basu
    (swarren: fixed comments to better match the code)
    (swarren: moved board ifdef around data in header, made code generic)
    (swarren: fixed typos in commit description)
    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Bibek Basu
     
  • p2771-0000 has a couple of PCIe ports; one physically x4 desktop PCI
    connector (which may run at x2 electrically, depending on the board
    version and configuration) and a x1 connection to the M.2 slot (which may
    not be active, depending on the board version and configuration). This
    change enables those.

    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Stephen Warren
     
  • Now that clock and reset drivers exist for Tegra186, we can enable the SD
    card controller. Now that a BPMP I2C driver exists for Tegra186, we can
    communicate with the PMIC to enable power to the SD card. Hook up the DT
    content and board code required to make the SD card work.

    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Stephen Warren
     

22 Jul, 2016

1 commit

  • Rev A03 of P2180 requires some PMIC programming adjustments, yet the
    PMIC's own OTP has not been updated. Consequently, U-Boot must make
    these changes itself.

    NVIDIA's syseng team has confirmed that these changes can be enabled on
    all board revisions without issue.

    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Stephen Warren
     

01 Jun, 2016

2 commits

  • P2771-0000 is a P3310 CPU board married to a P2597 I/O board. The
    combination contains SoC, DRAM, eMMC, SD card slot, HDMI, USB micro-B
    port, Ethernet, USB3 host port, SATA, PCIe, and two GPIO expansion
    headers.

    Currently, due to U-Boot's level of support for Tegra186, the only
    features supported by U-Boot are the console UART and the on-board eMMC.
    Additional features will be added over time.

    U-Boot has so far been tested by replacing the kernel image on the device
    with a U-Boot binary. It is anticipated that U-Boot will eventually
    replace the CCPLEX bootloader binary, as on previous chips. This hasn't
    yet been tested.

    Signed-off-by: Stephen Warren
    Reviewed-by: Simon Glass
    Signed-off-by: Tom Warren

    Stephen Warren
     
  • There are currently many places that define the list of all Tegra GPIOs;
    the DT binding header and custom Tegra-specific header file gpio.h. Fix
    the redundancy by replacing everything with the DT binding header file.

    Signed-off-by: Stephen Warren
    Reviewed-by: Simon Glass
    Signed-off-by: Tom Warren

    Stephen Warren
     

05 May, 2016

1 commit

  • This imports v11 of "Jetson TK1 Development Platform Pin Mux" from
    https://developer.nvidia.com/embedded/downloads.

    The new version defines the mux option for the MIPI pad ctrl selection.
    The OWR pin no longer has an entry in the configuration table because
    the only mux option it support is OWR, that feature isn't supported, and
    hence can't conflict with any other pin. This pin can only usefully be
    used as a GPIO.

    Signed-off-by: Stephen Warren
    Reviewed-by: Simon Glass
    Signed-off-by: Tom Warren

    Stephen Warren
     

29 Jan, 2016

1 commit

  • The PMIC is configured such that its GPIOs have the correct configuration
    at power-up, so no programming is required.

    In fact, the current programming is actively wrong, since:

    (a) the AS3722 driver configures the GPIO to be an output before setting
    its output value, which causes a 0v glitch on the output.

    (b) the AS3722 driver configures the GPIO to drive a high voltage from its
    VSUP_GPIO power source rather than its VDD_GPIO_LV power source, so the pin
    drives 5V not 1.8V as desired.

    Solve these problems by removing the code which configures the PMIC GPIOs.

    Note that this patch was tested directly on top of v2016.01; since then,
    commit 96350f729c42 "dm: tegra: net: Convert tegra boards to driver model
    for Ethernet" prevents PCIe from being initialized. Alternatively, simply
    revert that commit to get PCIe Ethernet working again, then apply this
    patch to test.

    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Stephen Warren
     

19 Jan, 2016

1 commit

  • In a number of places we had wordings of the GPL (or LGPL in a few
    cases) license text that were split in such a way that it wasn't caught
    previously. Convert all of these to the correct SPDX-License-Identifier
    tag.

    Signed-off-by: Tom Rini

    Tom Rini
     

13 Jan, 2016

1 commit


13 Nov, 2015

2 commits

  • Enable the GPU node in the system-wide ft_system_setup() hook instead of
    the board-specific ft_board_hook(). This allows us to enable GPU per SoC
    generation instead of per-board as we did initially.

    Reported-by: Stephen Warren
    Signed-off-by: Alexandre Courbot
    Signed-off-by: Tom Warren

    Alexandre Courbot
     
  • p2371-2180 has two PCI ports; a regular x4 slot and a x1 M.2 slot. This
    patch adds the relevant DT to enable the PCI controller and configure
    the XUSB padctl pin muxing, and code to turn on the PCI power and enable
    PCI features in U-Boot. I have only tested the x4 slot.

    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Stephen Warren
     

10 Nov, 2015

1 commit

  • After consulting with some of the SPDX team, the conclusion is that
    Makefiles are worth adding SPDX-License-Identifier tags too, and most of
    ours have one. This adds tags to ones that lack them and converts a few
    that had full (or in one case, very partial) license blobs into the
    equivalent tag.

    Cc: Kate Stewart
    Signed-off-by: Tom Rini

    Tom Rini
     

03 Oct, 2015

1 commit

  • In order to avoid any assumptions about any device connected to
    P2371-2180's expansion connector, the latest pinmux spreadsheet
    configures all muxable pins on that connector to be GPIO inputs, with
    on-chip pulls where appropriate.

    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Stephen Warren
     

17 Sep, 2015

1 commit

  • P2371-2180 is a P2180 CPU board married to a P2597 I/O board. The
    combination contains SoC, DRAM, eMMC, SD card slot, HDMI, USB
    micro-B port, Ethernet via USB3, USB3 host port, SATA, PCIe, and
    two GPIO expansion headers.

    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Stephen Warren
     

07 Aug, 2015

4 commits

  • P2371-0000 is a P2581 or P2530 CPU board married to a P2595 I/O
    board. The combination contains SoC, DRAM, eMMC, SD card slot,
    HDMI, USB micro-B port, Ethernet via USB3, USB3 host port, SATA,
    a GPIO expansion header, and an analog audio jack.

    Signed-off-by: Stephen Warren
    Reviewed-by: Simon Glass
    Signed-off-by: Tom Warren

    Stephen Warren
     
  • E2220-1170 is a Tegra210 bringup board with onboard SoC, DRAM,
    eMMC, SD card slot, HDMI, USB micro-B port, and sockets for various
    expansion modules.

    Signed-off-by: Stephen Warren
    Signed-off-by: Tom Warren

    Stephen Warren
     
  • T124/210 requires some specific configuration (VPR setup) to
    be performed by the bootloader before the GPU can be used.
    For this reason, the GPU node in the device tree is disabled
    by default. This patch enables the node if U-boot has performed
    VPR configuration.

    Boards enabled by this patch are T124's Jetson TK1 and Venice2
    and T210's P2571.

    Signed-off-by: Alexandre Courbot
    Cc: Stephen Warren
    Cc: Tom Warren
    Signed-off-by: Tom Warren

    Alexandre Courbot
     
  • Add a comment block to the top of each generated Tegra pinmux header file
    indicating that the file was auto-generated, should not be manually
    edited, and with a pointer to the tool and command used to generate it.

    Signed-off-by: Stephen Warren
    Reviewed-by: Simon Glass
    Signed-off-by: Tom Warren

    Stephen Warren