All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: Jon Hunter <jonathanh@nvidia.com>,
	Stephen Warren <swarren@wwwdotorg.org>
Cc: linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] arm64: tegra: Add NVIDIA Jetson Nano Developer Kit support
Date: Tue, 19 Mar 2019 13:07:55 +0100	[thread overview]
Message-ID: <20190319120755.GA9309@ulmo> (raw)
In-Reply-To: <2b4ec55b-d9f3-3c09-5590-f586609f0b3e@nvidia.com>


[-- Attachment #1.1: Type: text/plain, Size: 8722 bytes --]

On Tue, Mar 19, 2019 at 10:16:49AM +0000, Jon Hunter wrote:
> 
> On 18/03/2019 23:23, Thierry Reding wrote:
> > From: Thierry Reding <treding@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 4 GB
> > of LPDDR4, an 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.
> > 
> > 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 <treding@nvidia.com>
> > ---
> > This patch, along with some related patches can be found in the p3450
> > branch in the following repository:
> > 
> > 	https://github.com/thierryreding/linux
> > 
> >  arch/arm64/boot/dts/nvidia/Makefile           |    1 +
> >  .../boot/dts/nvidia/tegra210-p3450-0000.dts   | 1911 +++++++++++++++++
> >  2 files changed, 1912 insertions(+)
> >  create mode 100644 arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
> > 
> > diff --git a/arch/arm64/boot/dts/nvidia/Makefile b/arch/arm64/boot/dts/nvidia/Makefile
> > index 6b8ab5568481..bcd018c3162b 100644
> > --- a/arch/arm64/boot/dts/nvidia/Makefile
> > +++ b/arch/arm64/boot/dts/nvidia/Makefile
> > @@ -3,6 +3,7 @@ dtb-$(CONFIG_ARCH_TEGRA_132_SOC) += tegra132-norrin.dtb
> >  dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2371-0000.dtb
> >  dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2371-2180.dtb
> >  dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2571.dtb
> > +dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p3450-0000.dtb
> >  dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-smaug.dtb
> >  dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2894-0050-a08.dtb
> >  dtb-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186-p2771-0000.dtb
> > diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
> > new file mode 100644
> > index 000000000000..b1d8a49ca8c4
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
> > @@ -0,0 +1,1911 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/dts-v1/;
> > +
> > +#include <dt-bindings/input/gpio-keys.h>
> > +#include <dt-bindings/input/linux-event-codes.h>
> > +#include <dt-bindings/mfd/max77620.h>
> > +
> > +#include "tegra210.dtsi"
> > +
> > +/ {
> > +	model = "NVIDIA Jetson Nano Developer Kit";
> > +	compatible = "nvidia,p3450-0000", "nvidia,tegra210";
> 
> I am just curious but any reason why we do not have a dtsi file for the
> Nano module that we include for the developer kit? Or is there no point
> because the module and kit will never be separate in this case?
> 
> The developer kit user guide lists both the module (p3448) and carrier
> board (p3449) and so was just curious.

We used to do that in the past but there never turned out to be a second
board that shared the module or carrier DTSI, and the added complexity
of spreading changes over multiple DTS files never came with any
advantage, so I want to try something different this time.

If there's ever a need to split the module specific bits so that they
can be shared by multiple assemblies, we can still make the split. I
just don't want to start out extra complicated if we don't have to.

> > +
> > +	aliases {
> > +		ethernet = "/pcie@1003000/pci@2,0/ethernet@0,0";
> > +		rtc0 = "/i2c@7000d000/pmic@3c";
> > +		rtc1 = "/rtc@7000e000";
> > +		serial0 = &uarta;
> > +	};
> > +
> > +	chosen {
> > +		stdout-path = "serial0:115200n8";
> > +	};
> > +
> > +	memory {
> > +		device_type = "memory";
> > +		reg = <0x0 0x80000000 0x1 0x0>;
> > +	};
> > +
> > +	pcie@1003000 {
> > +		status = "okay";
> > +
> > +		hvddio-pex-supply = <&vdd_1v8>;
> > +		dvddio-pex-supply = <&vdd_pex_1v05>;
> > +		vddio-pex-ctl-supply = <&vdd_1v8>;
> > +
> > +		pci@1,0 {
> > +			phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-1}>,
> > +			       <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>,
> > +			       <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>,
> > +			       <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>;
> > +			phy-names = "pcie-0", "pcie-1", "pcie-2", "pcie-3";
> > +			nvidia,num-lanes = <4>;
> > +			status = "okay";
> > +		};
> > +
> > +		pci@2,0 {
> > +			phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>;
> > +			phy-names = "pcie-0";
> > +			status = "okay";
> > +
> > +			ethernet@0,0 {
> > +				reg = <0x000000 0 0 0 0>;
> > +				mac-address = [ 00 00 00 00 00 00 ];
> > +			};
> > +		};
> > +	};
> > +
> > +	host1x@50000000 {
> > +		dpaux@54040000 {
> > +			status = "okay";
> > +		};
> > +
> > +		sor@54580000 {
> > +			status = "okay";
> > +
> > +			avdd-io-supply = <&avdd_1v05>;
> > +			vdd-pll-supply = <&vdd_1v8>;
> > +			hdmi-supply = <&vdd_hdmi>;
> > +
> > +			nvidia,ddc-i2c-bus = <&hdmi_ddc>;
> > +			nvidia,hpd-gpio = <&gpio TEGRA_GPIO(CC, 1)
> > +					   GPIO_ACTIVE_LOW>;
> > +			nvidia,xbar-cfg = <0 1 2 3 4>;
> > +		};
> > +	};
> > +
> > +	gpu@57000000 {
> > +		vdd-supply = <&vdd_gpu>;
> > +		status = "okay";
> > +	};
> > +
> > +	pinmux: pinmux@700008d4 {
> > +		pinctrl-names = "boot";
> > +		pinctrl-0 = <&state_boot>;
> > +
> > +		state_boot: pinmux {
> > +			pex_l0_rst_n_pa0 {
> > +				nvidia,pins = "pex_l0_rst_n_pa0";
> > +				nvidia,function = "pe0";
> > +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> > +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> > +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> > +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> > +				nvidia,io-hv = <TEGRA_PIN_DISABLE>;
> > +			};
> > +			pex_l0_clkreq_n_pa1 {
> > +				nvidia,pins = "pex_l0_clkreq_n_pa1";
> > +				nvidia,function = "pe0";
> > +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> > +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> > +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> > +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> > +				nvidia,io-hv = <TEGRA_PIN_DISABLE>;
> > +			};
> > +			pex_wake_n_pa2 {
> > +				nvidia,pins = "pex_wake_n_pa2";
> > +				nvidia,function = "pe";
> > +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> > +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> > +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> > +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> > +				nvidia,io-hv = <TEGRA_PIN_DISABLE>;
> > +			};
> > +			pex_l1_rst_n_pa3 {
> > +				nvidia,pins = "pex_l1_rst_n_pa3";
> > +				nvidia,function = "pe1";
> > +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> > +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> > +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> > +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> > +				nvidia,io-hv = <TEGRA_PIN_DISABLE>;
> > +			};
> > +			pex_l1_clkreq_n_pa4 {
> > +				nvidia,pins = "pex_l1_clkreq_n_pa4";
> > +				nvidia,function = "pe1";
> > +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> > +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> > +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> > +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> > +				nvidia,io-hv = <TEGRA_PIN_DISABLE>;
> > +			};
> > +			sata_led_active_pa5 {
> > +				nvidia,pins = "sata_led_active_pa5";
> > +				nvidia,pull = <TEGRA_PIN_PULL_UP>;
> > +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> > +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> > +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> > +			};
> > +			pa6 {
> > +				nvidia,pins = "pa6";
> > +				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
> > +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> > +				nvidia,enable-input = <TEGRA_PIN_DISABLE>;
> > +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> > +			};
> > +			dap1_fs_pb0 {
> > +				nvidia,pins = "dap1_fs_pb0";
> > +				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
> > +				nvidia,tristate = <TEGRA_PIN_DISABLE>;
> > +				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
> > +				nvidia,open-drain = <TEGRA_PIN_DISABLE>;
> 
> I am guessing this is generated by the pinmux spreadsheet, but any
> reason why there is no 'nvidia,function' for some pins? Some that are
> not used have the function defined as 'rsvd1', however, the above pin
> does not, but AFAIK it is not used.

Yes, this was generated from the pinmux spreadsheet. I'm not overly
familiar with pinmux, but I think the idea was that if a property is
missing, it means that the hardware default applies.

Adding Stephen in case he knows.

On that note, I guess we should publish the board file for the pinmux
scripts as well.

Thierry

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-03-19 12:07 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-18 23:23 [PATCH] arm64: tegra: Add NVIDIA Jetson Nano Developer Kit support Thierry Reding
2019-03-18 23:23 ` Thierry Reding
2019-03-19 10:16 ` Jon Hunter
2019-03-19 10:16   ` Jon Hunter
2019-03-19 12:07   ` Thierry Reding [this message]
2019-03-19 17:01     ` Stephen Warren
2019-03-19 17:01       ` Stephen Warren
2019-03-20 10:14       ` Thierry Reding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190319120755.GA9309@ulmo \
    --to=thierry.reding@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=swarren@wwwdotorg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.