--- wikisrc/ports/evbarm/tegra.mdwn 2017/04/13 20:30:52 1.39 +++ wikisrc/ports/evbarm/tegra.mdwn 2017/10/11 08:43:24 1.49 @@ -1,6 +1,11 @@ [[!meta title="NetBSD/evbarm on NVIDIA Tegra"]] -The NetBSD tegra port currently supports the NVIDIA Tegra K1 (32-bit) system-on-a-chip. The [NVIDIA Jetson TK1 development kit](https://developer.nvidia.com/jetson-tk1) is a board based on the Tegra K1 SoC. +NetBSD 8.0 supports the NVIDIA Tegra K1 (32-bit) system-on-a-chip. +NetBSD -current adds support for the NVIDIA Tegra X1 system-on-a-chip. + +The [NVIDIA Jetson TK1 development kit](https://developer.nvidia.com/jetson-tk1) is a board based on the Tegra K1 SoC. +The [NVIDIA Jetson TX1 development kit](https://developer.nvidia.com/jetson-tx1) is a board based on the Tegra X1 SoC. + [[!toc levels=2]] @@ -8,6 +13,8 @@ The NetBSD tegra port currently supports - CPU: Cortex-A15: NVIDIA Tegra K1 (T124) (4-core) - VFP / NEON - CPU frequency scaling + - CPU: Cortex-A57: NVIDIA Tegra X1 (T210) (4-core) + - VFP / NEON - GIC - ARM generic timer - Clock and reset controller @@ -21,6 +28,8 @@ The NetBSD tegra port currently supports - Watchdog timer - SDMMC [[!template id=man name="sdhc" section="4"]] controller - USB 2.0 [[!template id=man name="ehci" section="4"]] controller + - USB 3.0 [[!template id=man name="xhci" section="4"]] controller + - Requires the [[!template id=pkg category="sysutils" name="tegra-firmware"]] package to be installed. - PCI express - SATA [[!template id=man name="ahcisata" section="4"]] controller - HDMI @@ -33,6 +42,8 @@ The NetBSD tegra port currently supports - TMP451 [[!template id=man name="titemp" section="4"]] temperature sensor (on I2C) - RF kill switch - Power button + - Jetson TX1 + - On-board Realtek RTL8153 [[!template id=man name="cdce" section="4"]] gigabit ethernet - AS3722 power management unit - eFUSE - SoC thermal sensors @@ -43,20 +54,20 @@ The NetBSD tegra port currently supports - APB DMA - Audio Hub (AHUB) - GPU (nouveau) - - USB 3.0 [[!template id=man name="xhci" section="4"]] controller - SPI controller - PWM controller - PCIe MSI support - CL-DVFS - LVDS/eDP display output + - [[Chromebook|tegra-chromebook]] support # Generating a boot script -The Tegra kernels need a .dtb for your board to boot. The dtb here was updated on 18th June 2016 to fix an issue with the USB port. [NVIDIA Jetson TK1 .dtb](http://ftp.netbsd.org/pub/NetBSD/misc/skrll/tegra/tegra124-jetson-tk1.dtb) +The Tegra kernels need a .dtb for your board to boot. The dtb here was updated on 2017-04-13 and is generated from a Linux 4.10.10 source tree. [NVIDIA Jetson TK1 .dtb](http://ftp.netbsd.org/pub/NetBSD/misc/jmcneill/tegra/tegra124-jetson-tk1.dtb) [[!template id=programlisting text=""" $ cat boot.txt -setenv bootargs root=ld1a +setenv bootargs root=ld0a fatload mmc 1:1 0x90000000 netbsd.ub fatload mmc 1:1 ${fdt_addr_r} tegra124-jetson-tk1.dtb fdt addr ${fdt_addr_r} @@ -68,6 +79,8 @@ $ mkubootimage -A arm -C none -O netbsd Jetson TK1 boards come with Linux4Tegra R19.x installed, which doesn't use U-Boot. The easiest way to get U-Boot is to upgrade to Linux4Tegra R21.x (Linux PC or VM required) following the [quick start guide](http://developer.download.nvidia.com/embedded/L4T/r21_Release_v4.0/l4t_quick_start_guide.txt). +U-Boot for Jetson TX1 is available in pkgsrc: [[!template id=pkg category="sysutils" name="u-boot-jetson-tx1"]]. + # Modesetting ## Console @@ -89,6 +102,38 @@ Section "Device" EndSection """]] +# GPU (nouveau) + +To enable the GPU, add the following before the `bootm` command in the boot script: + +[[!template id=programlisting text=""" +fdt set /gpu@0,57000000 status okay +"""]] + +For the nouveau driver to load successfully, firmware is required: + +* Install the [[!template id=pkg category="sysutils" name="tegra-firmware"]] package from pkgsrc. +* Extract the contents of [tegra-nouveau-firmware.tar.gz](http://cdn.netbsd.org/pub/NetBSD/misc/jmcneill/tegra/tegra-nouveau-firmware.tar.gz) to ''/libdata/firmware/nouveau''. + +You should see the following messages at boot: + +[[!template id=programlisting text=""" +nouveau0 at fdt0: GPU +drm kern info: nouveau [ DEVICE][nouveau0] BOOT0 : 0x0ea000a1 +drm kern info: nouveau [ DEVICE][nouveau0] Chipset: GK20A (NVEA) +drm kern info: nouveau [ DEVICE][nouveau0] Family : NVE0 +drm kern info: nouveau [ PFB][nouveau0] RAM type: stolen system memory +drm kern info: nouveau [ PFB][nouveau0] RAM size: 2019 MiB +drm kern info: nouveau [ PFB][nouveau0] ZCOMP: 0 tags +drm kern info: nouveau [ PGRAPH][nouveau0] using external firmware +drm kern info: nouveau [ DRM] VRAM: 2019 MiB +drm kern info: nouveau [ DRM] GART: 1048576 MiB +drm kern error: nouveau E[ PFIFO][nouveau0] unsupported engines 0x00000030 +drm kern error: nouveau E[ DRM] failed to create ce channel, -22 +drm kern info: nouveau [ DRM] MM: using GRCE for buffer copies +nouveau0: initialized nouveau 1.1.1 20120801 on minor 1 +"""]] + # dmesg [[!template id=programlisting text="""