1.  XCAP Application Note — Configuration: PIXCI(R) E4TX2 for nVidia/ARM TX2/Cortex-A57 — 8 March 2019

The PIXCI(R) E4TX2 combines the functionality of a PIXCI(R) E4G2 frame grabber with a carrier card for the nVidia TX2 module. The PIXCI(R) E4TX2 provides Camera Link connectors, an Ethernet connector, two USB connectors, an HDMI connector, a connector for the TX2 module, and leads (early version) or connector (later versions) for power. The Camera Link frame grabber portion operates on, and is hardwired into, the TX2’s PCIe 4x gen2 bus.

The TX2 module is designed by nVidia to be configured and ‘flashed’ for different configurations. The PIXCI(R) E4TX2 is designed to use nVidia’s default pin configuration, bus configuration, and Linux configuration - i.e. the default Jetpack. This allows the developer to easily install and use updated releases of Jetpack - as released by nVidia.

Early versions of the PIXCI(R) E4TX2 (identified as having ‘via´s’ for power instead of a connector) require either a hardware patch to use the default nVidia Jetpack, or require flashing with a custom Jetpack. Without modification, the USB ports will not be functional; this is easily verified after boot by noticing that the USB mouse or keyboard is not receiving power.

Instructions for modifying nVidia’s Jetpack r28.2 follow; the Jetpack is assumed to be installed on the host Linux PC, with PC and E4TX2 both connected to a local network, and with a USB cable connecting the PC and E4TX2.

1. Install the Device Tree Compiler:

    apt-get install device-tree-compiler

2. Change directory to Jetpack, locate the device tree binary files:

    cd ~/Jetpack
    cd 64_TX2/Linux_for_Tegra/kernel/dtb

3. Convert device tree binary to readable format:

    dtc -I dtb -O dts tegra186-quill-p3310-1000-a00-00-base.dtb > a00-base.dts
    dtc -I dtb -O dts tegra186-quill-p3310-1000-c03-00-base.dtb > c03-base.dts

4. Edit each of the ‘dts’ files, search for ‘pinctrl@3520000’ so as to find the section:

    pinctrl@3520000 {
        compatible = "nvidia,tegra186-xusb-padctl";
        reg = <0x0 0x3520000 0x0 0x1000 0x0 0x3540000 0x0 0x1000>;
        reg-names = "padctl", "ao";
        resets = <0xd 0x37>;
        reset-names = "padctl_rst";
        clocks = <0xd 0x6f 0xd 0x215 0xd 0x87 0xd 0x86>;
        clock-names = "xusb_clk", "utmipll", "usb2_trk", "hsic_trk";
        interrupts = <0x0 0xa7 0x4>;
        mboxes = <0x97>;
        mbox-names = "xusb";
        #phy-cells = <0x1>;
        status = "okay";
        vbus-0-supply = <0x9a>;
        vbus-1-supply = <0x9b>;
        vbus-2-supply = <0x9c>;
        vbus-3-supply = <0x1a>;
        ...

Note that the actual values within ‘<>’ may differ from example values shown here.

5. Change the value associated with ‘vbus-2-supply’ to be identical to the value associated with ‘vbus-3-supply’, thus:

        vbus-1-supply = <0x9b>;
        vbus-2-supply = <0x1a>;
        vbus-3-supply = <0x1a>;
        ...

Use the values shown in your ‘dts’ file, rather than copying the values shown here. (If reading the nVidia Platform Adaptation documentation, this changes the ‘vbus-2-supply’ from ‘vdd_usb2_5v’ to ‘battery_reg’).

6. Save current ‘dtb’ files:

    cp tegra186-quill-p3310-1000-a00-00-base.dtb tegra186-quill-p3310-1000-a00-00-base.dtb_old
    cp tegra186-quill-p3310-1000-c03-00-base.dtb tegra186-quill-p3310-1000-c03-00-base.dtb_old

7. Convert readable ‘dts’ files to binary form:

    dtc -I dts -O dtb a00-base.dts > tegra186-quill-p3310-1000-a00-00-base.dtb
    dtc -I dts -O dtb c03-base.dts > tegra186-quill-p3310-1000-c03-00-base.dtb

and cleanup:

    rm a00-base.dts
    rm c03-base.dts

Flash the PIXCI(R) E4TX2, with the modified Tegra (as above) or with the unmodified Tegra (for older PIXCI(R) E4TX2 with hardware patch or newer PIXCI(R) E4TX2), as follows.

1. Connect a USB cable between the host PC and PIXCI(R) E4TX2. Place the TX2 in recovery mode by:

i. Short the PIXCI(R) E4TX2 ‘Force recovery’ pins or via’s.

ii. Short the PIXCI(R) E4TX2 ‘Reset’ pins or via’s.

iii. Open short of PIXCI(R) E4TX2 ‘Reset’ pins or via’s.

iv. Open short of the PIXCI(R) E4TX2 ‘Force recovery’ pins or via’s.

(See nVidia documentation for more information about connecting the host PC and TX2, and placing the TX2 in recovery mode. New, never-flashed, TX2 modules may power up in recovery mode and not require manipulating ‘Force recovery’ and ‘Reset’).

Note: Depending on PIXCI(R) E4TX2 version, the ‘Reset’ pins or via’s may be labeled ‘RST’ or ‘J11.’ The ‘Power’ pins or via’s may be labeled ‘PWR’ or ‘J12.’

2. It may be helpful to verify that the TX2 is in recovery mode and properly connected before proceeding with the flash. On the host PC, run ‘lsusb’. Check for a usb device with ID ‘0955:7C18’.

3. Flash the TX2:

    cd ~/JetPack
    cd 64_TX2/Linux_for_Tegra
    ./flash.sh jetson-tx2 mmcblk0p1

Flashing requires 10 to 15 minutes.

Other notes:

1. Connection of an incompatible HDMI monitor may prevent the TX2 module from booting. The TX2 module can be run ‘head-less’; and will boot without a monitor.

2. The PIXCI(R) E4TX2 is NOT intended for use with the older TX1 module. If using a TX1 module, ethernet via the RJ45 connector will not work.