From patchwork Tue Oct 26 00:23:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1546159 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=HGqUdoSF; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HdXgW0WLLz9sRN for ; Tue, 26 Oct 2021 11:26:31 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 25C1A83548; Tue, 26 Oct 2021 02:26:19 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="HGqUdoSF"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 93D0F833B1; Tue, 26 Oct 2021 02:24:25 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-oi1-x229.google.com (mail-oi1-x229.google.com [IPv6:2607:f8b0:4864:20::229]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 864228352B for ; Tue, 26 Oct 2021 02:24:04 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-oi1-x229.google.com with SMTP id o204so17962514oih.13 for ; Mon, 25 Oct 2021 17:24:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/xi3g3OeArywmWK8cdpZj5BDKBOeWN3tnhLyyCSS75w=; b=HGqUdoSF4jOjl4XG7nQrJuJre3z474Jyg0KJkAxlDsJU1rk2osrB5KFlziFTZLZ38S hdE+m9ZK6BmhmvpCR4f9SVR0THljGd9D9Id6YSZufYY2StPdFz9QqZ96B5rZVrPkw1s9 mUkOv6gFeNmexQfFovJf5BpvZ0yUvIV92HUew= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/xi3g3OeArywmWK8cdpZj5BDKBOeWN3tnhLyyCSS75w=; b=Z/oD/L6EJ04AH/gldLl8OeVJKg8m4lBF118VfNwI1uftHjX0vvZFw6W5+azx41Ts9c abzs/nLX2e3kYwECLVIIo6w3Kzy+QlQ2oixeJoSMMJkISc3kH815qrsPsyOZ5Pk1VACZ smnYqc8VVYiNdO2sLw+eu2Cy7VHvLAHjkstyYcZI1JCgyN/mRd3YBLArv7IxB/ochVoG 2Xrn4bAAHsYzfkbz9DFGaoHbpse5NdbWyfwJC89R82XXoIlnJQt8pDxOcGZs/uc9OWCa rlZ4J8/t89Cw49hbo+bSesUFlujdJex6InOGHbx/IKYDvDfS+UJJpjhgpq5Ia1ey1/93 w/6Q== X-Gm-Message-State: AOAM531Z4ZxJpJtQxUMFp4SugMcl5x8x/GS+yFvwOCl2l2YabjRg2wNJ CmQ2yy+uns7bdTDRoQ5pIoY3zoXtMwk= X-Google-Smtp-Source: ABdhPJy+UtwchUjWFdMYlw8mdw7HXkm4xRGiOUGiW+M+t0fljF49zqfZesfINcpdYxeZOZE78WkPlA== X-Received: by 2002:aca:4185:: with SMTP id o127mr25260467oia.129.1635207842570; Mon, 25 Oct 2021 17:24:02 -0700 (PDT) Received: from kiwi.bld.corp.google.com (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id v24sm3331926oou.45.2021.10.25.17.24.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Oct 2021 17:24:02 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Cc: Mark Kettenis , Heinrich Schuchardt , Ilias Apalodimas , Tom Rini , Sean Anderson , Simon Glass , Albert Aribaud , Linus Walleij Subject: [PATCH v5 09/26] arm: vexpress: Add a devicetree file for juno Date: Mon, 25 Oct 2021 18:23:27 -0600 Message-Id: <20211026002344.405160-10-sjg@chromium.org> X-Mailer: git-send-email 2.33.0.1079.g6e70778dc9-goog In-Reply-To: <20211026002344.405160-1-sjg@chromium.org> References: <20211026002344.405160-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Add this file, obtained from the Linaro website[1], so there is a reference file in the U-Boot tree. Note that U-Boot does not normally need this at runtime, since CONFIG_OF_BOARD is enabled. The previous firmware stage provides a devicetree at runtime. [1] https://releases.linaro.org/android/reference-lcr/juno/7.1-17.05/ Signed-off-by: Simon Glass --- (no changes since v1) arch/arm/dts/Makefile | 3 + arch/arm/dts/juno-r2.dts | 1038 ++++++++++++++++++++++++ configs/vexpress_aemv8a_juno_defconfig | 1 + 3 files changed, 1042 insertions(+) create mode 100644 arch/arm/dts/juno-r2.dts diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index f5a02bec4e1..0be50ecd9c8 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -1140,7 +1140,10 @@ dtb-$(CONFIG_TARGET_GE_BX50V3) += \ dtb-$(CONFIG_TARGET_GE_B1X5V2) += imx6dl-b1x5v2.dtb dtb-$(CONFIG_TARGET_MX53PPD) += imx53-ppd.dtb +# TODO(Linus Walleij ): Should us a single vexpress +# Kconfig option to build all of these. See examples above. dtb-$(CONFIG_TARGET_VEXPRESS_CA9X4) += vexpress-v2p-ca9.dtb +dtb-$(CONFIG_TARGET_VEXPRESS64_JUNO) += juno-r2.dtb dtb-$(CONFIG_TARGET_TOTAL_COMPUTE) += total_compute.dtb diff --git a/arch/arm/dts/juno-r2.dts b/arch/arm/dts/juno-r2.dts new file mode 100644 index 00000000000..5a536d8100e --- /dev/null +++ b/arch/arm/dts/juno-r2.dts @@ -0,0 +1,1038 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* + * Sample device tree for juno + + * Copyright 2021 Google LLC + */ + +/dts-v1/; + +/ { + model = "ARM Juno development board (r2)"; + compatible = "arm,juno-r2\0arm,juno"; + interrupt-parent = <0x01>; + #address-cells = <0x02>; + #size-cells = <0x02>; + + aliases { + serial0 = "/uart@7ff80000"; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + psci { + compatible = "arm,psci-0.2"; + method = "smc"; + }; + + cpus { + #address-cells = <0x02>; + #size-cells = <0x00>; + + cpu-map { + + cluster0 { + + core0 { + cpu = <0x02>; + }; + + core1 { + cpu = <0x03>; + }; + }; + + cluster1 { + + core0 { + cpu = <0x04>; + }; + + core1 { + cpu = <0x05>; + }; + + core2 { + cpu = <0x06>; + }; + + core3 { + cpu = <0x07>; + }; + }; + }; + + idle-states { + entry-method = "arm,psci"; + + cpu-sleep-0 { + compatible = "arm,idle-state"; + arm,psci-suspend-param = <0x10000>; + local-timer-stop; + entry-latency-us = <0x12c>; + exit-latency-us = <0x4b0>; + min-residency-us = <0x7d0>; + linux,phandle = <0x0a>; + phandle = <0x0a>; + }; + + cluster-sleep-0 { + compatible = "arm,idle-state"; + arm,psci-suspend-param = <0x1010000>; + local-timer-stop; + entry-latency-us = <0x190>; + exit-latency-us = <0x4b0>; + min-residency-us = <0x9c4>; + linux,phandle = <0x0b>; + phandle = <0x0b>; + }; + }; + + cpu@0 { + compatible = "arm,cortex-a72\0arm,armv8"; + reg = <0x00 0x00>; + device_type = "cpu"; + enable-method = "psci"; + next-level-cache = <0x08>; + clocks = <0x09 0x00>; + cpu-idle-states = <0x0a 0x0b>; + sched-energy-costs = <0x0c 0x0d>; + #cooling-cells = <0x02>; + dynamic-power-coefficient = <0x1c2>; + linux,phandle = <0x02>; + phandle = <0x02>; + }; + + cpu@1 { + compatible = "arm,cortex-a72\0arm,armv8"; + reg = <0x00 0x01>; + device_type = "cpu"; + enable-method = "psci"; + next-level-cache = <0x08>; + clocks = <0x09 0x00>; + cpu-idle-states = <0x0a 0x0b>; + sched-energy-costs = <0x0c 0x0d>; + #cooling-cells = <0x02>; + dynamic-power-coefficient = <0x1c2>; + linux,phandle = <0x03>; + phandle = <0x03>; + }; + + cpu@100 { + compatible = "arm,cortex-a53\0arm,armv8"; + reg = <0x00 0x100>; + device_type = "cpu"; + enable-method = "psci"; + next-level-cache = <0x0e>; + clocks = <0x09 0x01>; + cpu-idle-states = <0x0a 0x0b>; + sched-energy-costs = <0x0f 0x10>; + #cooling-cells = <0x02>; + dynamic-power-coefficient = <0x8c>; + linux,phandle = <0x04>; + phandle = <0x04>; + }; + + cpu@101 { + compatible = "arm,cortex-a53\0arm,armv8"; + reg = <0x00 0x101>; + device_type = "cpu"; + enable-method = "psci"; + next-level-cache = <0x0e>; + clocks = <0x09 0x01>; + cpu-idle-states = <0x0a 0x0b>; + sched-energy-costs = <0x0f 0x10>; + #cooling-cells = <0x02>; + dynamic-power-coefficient = <0x8c>; + linux,phandle = <0x05>; + phandle = <0x05>; + }; + + cpu@102 { + compatible = "arm,cortex-a53\0arm,armv8"; + reg = <0x00 0x102>; + device_type = "cpu"; + enable-method = "psci"; + next-level-cache = <0x0e>; + clocks = <0x09 0x01>; + cpu-idle-states = <0x0a 0x0b>; + sched-energy-costs = <0x0f 0x10>; + #cooling-cells = <0x02>; + dynamic-power-coefficient = <0x8c>; + linux,phandle = <0x06>; + phandle = <0x06>; + }; + + cpu@103 { + compatible = "arm,cortex-a53\0arm,armv8"; + reg = <0x00 0x103>; + device_type = "cpu"; + enable-method = "psci"; + next-level-cache = <0x0e>; + clocks = <0x09 0x01>; + cpu-idle-states = <0x0a 0x0b>; + sched-energy-costs = <0x0f 0x10>; + #cooling-cells = <0x02>; + dynamic-power-coefficient = <0x8c>; + linux,phandle = <0x07>; + phandle = <0x07>; + }; + + l2-cache0 { + compatible = "cache"; + linux,phandle = <0x08>; + phandle = <0x08>; + }; + + l2-cache1 { + compatible = "cache"; + linux,phandle = <0x0e>; + phandle = <0x0e>; + }; + + energy-costs { + + core-cost0 { + busy-cost-data = <0x1f5 0xae 0x351 0x158 0x3ff 0x20e>; + idle-cost-data = <0x30 0x30 0x00 0x00>; + linux,phandle = <0x0c>; + phandle = <0x0c>; + }; + + core-cost1 { + busy-cost-data = <0x114 0x25 0x1f5 0x3b 0x251 0x75>; + idle-cost-data = <0x21 0x21 0x00 0x00>; + linux,phandle = <0x0f>; + phandle = <0x0f>; + }; + + cluster-cost0 { + busy-cost-data = <0x1f5 0x30 0x351 0x49 0x400 0x6b>; + idle-cost-data = <0x30 0x30 0x30 0x12>; + linux,phandle = <0x0d>; + phandle = <0x0d>; + }; + + cluster-cost1 { + busy-cost-data = <0x114 0x29 0x1f5 0x56 0x251 0x6b>; + idle-cost-data = <0x29 0x29 0x29 0x0e>; + linux,phandle = <0x10>; + phandle = <0x10>; + }; + }; + }; + + pmu_a72 { + compatible = "arm,cortex-a72-pmu"; + interrupts = <0x00 0x02 0x04 0x00 0x06 0x04>; + interrupt-affinity = <0x02 0x03>; + }; + + pmu_a53 { + compatible = "arm,cortex-a53-pmu"; + interrupts = <0x00 0x12 0x04 0x00 0x16 0x04 0x00 0x1a 0x04 0x00 0x1e 0x04>; + interrupt-affinity = <0x04 0x05 0x06 0x07>; + }; + + timer@2a810000 { + compatible = "arm,armv7-timer-mem"; + reg = <0x00 0x2a810000 0x00 0x10000>; + clock-frequency = <0x2faf080>; + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + status = "okay"; + + frame@2a830000 { + frame-number = <0x01>; + interrupts = <0x00 0x3c 0x04>; + reg = <0x00 0x2a830000 0x00 0x10000>; + }; + }; + + mhu@2b1f0000 { + compatible = "arm,mhu\0arm,primecell"; + reg = <0x00 0x2b1f0000 0x00 0x1000>; + interrupts = <0x00 0x24 0x04 0x00 0x23 0x04>; + interrupt-names = "mhu_lpri_rx\0mhu_hpri_rx"; + #mbox-cells = <0x01>; + clocks = <0x11>; + clock-names = "apb_pclk"; + linux,phandle = <0x13>; + phandle = <0x13>; + }; + + interrupt-controller@2c010000 { + compatible = "arm,gic-400\0arm,cortex-a15-gic"; + reg = <0x00 0x2c010000 0x00 0x1000 + 0x00 0x2c02f000 0x00 0x2000 + 0x00 0x2c04f000 0x00 0x2000 + 0x00 0x2c06f000 0x00 0x2000>; + #address-cells = <0x02>; + #interrupt-cells = <0x03>; + #size-cells = <0x02>; + interrupt-controller; + interrupts = <0x01 0x09 0x3f04>; + ranges = <0x00 0x00 0x00 0x2c1c0000 0x00 0x40000>; + linux,phandle = <0x01>; + phandle = <0x01>; + + v2m@0 { + compatible = "arm,gic-v2m-frame"; + msi-controller; + reg = <0x00 0x00 0x00 0x1000>; + linux,phandle = <0x12>; + phandle = <0x12>; + }; + }; + + timer { + compatible = "arm,armv8-timer"; + interrupts = <0x01 0x0d 0x3f08 0x01 0x0e 0x3f08 0x01 0x0b 0x3f08 0x01 0x0a 0x3f08>; + }; + + sram@2e000000 { + compatible = "arm,juno-sram-ns\0mmio-sram"; + reg = <0x00 0x2e000000 0x00 0x8000>; + #address-cells = <0x01>; + #size-cells = <0x01>; + ranges = <0x00 0x00 0x2e000000 0x8000>; + + scp-shmem@0 { + compatible = "arm,juno-scp-shmem"; + reg = <0x00 0x200>; + }; + + scp-shmem@200 { + compatible = "arm,juno-scp-shmem"; + reg = <0x200 0x200>; + linux,phandle = <0x14>; + phandle = <0x14>; + }; + }; + + pcie-controller@40000000 { + compatible = "arm,juno-r1-pcie\0plda,xpressrich3-axi\0pci-host-ecam-generic"; + device_type = "pci"; + reg = <0x00 0x40000000 0x00 0x10000000>; + bus-range = <0x00 0xff>; + linux,pci-domain = <0x00>; + #address-cells = <0x03>; + #size-cells = <0x02>; + dma-coherent; + ranges = <0x1000000 0x00 0x00 0x00 + 0x5f800000 0x00 0x800000 0x2000000 + 0x00 0x50000000 0x00 0x50000000 + 0x00 0x8000000 0x42000000 0x40 + 0x00 0x40 0x00 0x01 0x00>; + #interrupt-cells = <0x01>; + interrupt-map-mask = <0x00 0x00 0x00 0x07>; + interrupt-map = <0x00 0x00 0x00 0x01 0x01 0x00 0x00 0x00 + 0x88 0x04 0x00 0x00 0x00 0x02 0x01 0x00 + 0x00 0x00 0x89 0x04 0x00 0x00 0x00 0x03 + 0x01 0x00 0x00 0x00 0x8a 0x04 0x00 0x00 + 0x00 0x04 0x01 0x00 0x00 0x00 0x8b 0x04>; + msi-parent = <0x12>; + status = "okay"; + }; + + scpi { + compatible = "arm,scpi"; + mboxes = <0x13 0x01>; + shmem = <0x14>; + + clocks { + compatible = "arm,scpi-clocks"; + + scpi-dvfs { + compatible = "arm,scpi-dvfs-clocks"; + #clock-cells = <0x01>; + clock-indices = <0x00 0x01 0x02>; + clock-output-names = "atlclk\0aplclk\0clk_mali"; + linux,phandle = <0x09>; + phandle = <0x09>; + }; + + scpi-clk { + compatible = "arm,scpi-variable-clocks"; + #clock-cells = <0x01>; + clock-indices = <0x03 0x04 0x05>; + clock-output-names = "pxlclk\0pxlclk1\0i2sclk"; + linux,phandle = <0x19>; + phandle = <0x19>; + }; + }; + + scpi-power-domains { + compatible = "arm,scpi-power-domains"; + num-domains = <0x02>; + #power-domain-cells = <0x01>; + linux,phandle = <0x22>; + phandle = <0x22>; + }; + + sensors { + compatible = "arm,scpi-sensors"; + #thermal-sensor-cells = <0x01>; + linux,phandle = <0x15>; + phandle = <0x15>; + }; + }; + + thermal-zones { + + pmic { + polling-delay = <0x3e8>; + polling-delay-passive = <0x64>; + thermal-sensors = <0x15 0x00>; + }; + + soc { + polling-delay = <0x3e8>; + polling-delay-passive = <0x64>; + sustainable-power = <0x9c4>; + thermal-sensors = <0x15 0x03>; + + trips { + + threshold { + temperature = <0xd6d8>; + hysteresis = <0x3e8>; + type = "passive"; + }; + + target { + temperature = <0xfde8>; + hysteresis = <0x3e8>; + type = "passive"; + linux,phandle = <0x16>; + phandle = <0x16>; + }; + }; + + cooling-maps { + + map0 { + trip = <0x16>; + cooling-device = <0x04 0xffffffff 0xffffffff>; + contribution = <0x800>; + }; + + map1 { + trip = <0x16>; + contribution = <0x400>; + cooling-device = <0x02 0xffffffff 0xffffffff>; + }; + + map2 { + trip = <0x16>; + cooling-device = <0x17 0xffffffff 0xffffffff>; + contribution = <0x400>; + }; + }; + }; + + big_cluster { + polling-delay = <0x3e8>; + polling-delay-passive = <0x64>; + thermal-sensors = <0x15 0x15>; + status = "okay"; + }; + + little_cluster { + polling-delay = <0x3e8>; + polling-delay-passive = <0x64>; + thermal-sensors = <0x15 0x16>; + status = "okay"; + }; + + gpu0 { + polling-delay = <0x3e8>; + polling-delay-passive = <0x64>; + thermal-sensors = <0x15 0x17>; + status = "okay"; + }; + + gpu1 { + polling-delay = <0x3e8>; + polling-delay-passive = <0x64>; + thermal-sensors = <0x15 0x18>; + status = "okay"; + }; + }; + + refclk7273800hz { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0x6efd48>; + clock-output-names = "juno:uartclk"; + linux,phandle = <0x1b>; + phandle = <0x1b>; + }; + + clk48mhz { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0x2dc6c00>; + clock-output-names = "clk48mhz"; + linux,phandle = <0x1e>; + phandle = <0x1e>; + }; + + clk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0x2faf080>; + clock-output-names = "smc_clk"; + linux,phandle = <0x1c>; + phandle = <0x1c>; + }; + + refclk100mhz { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0x5f5e100>; + clock-output-names = "apb_pclk"; + linux,phandle = <0x11>; + phandle = <0x11>; + }; + + refclk400mhz { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0x17d78400>; + clock-output-names = "faxi_clk"; + linux,phandle = <0x18>; + phandle = <0x18>; + }; + + dma@7ff00000 { + compatible = "arm,pl330\0arm,primecell"; + reg = <0x00 0x7ff00000 0x00 0x1000>; + #dma-cells = <0x01>; + #dma-channels = <0x08>; + #dma-requests = <0x20>; + interrupts = <0x00 0x58 0x04 0x00 0x59 0x04 0x00 0x5a + 0x04 0x00 0x5b 0x04 0x00 0x5c 0x04 0x00 + 0x6c 0x04 0x00 0x6d 0x04 0x00 0x6e 0x04 + 0x00 0x6f 0x04>; + clocks = <0x18>; + clock-names = "apb_pclk"; + linux,phandle = <0x1f>; + phandle = <0x1f>; + }; + + hdlcd@7ff60000 { + compatible = "arm,hdlcd"; + reg = <0x00 0x7ff60000 0x00 0x1000>; + interrupts = <0x00 0x55 0x04>; + clocks = <0x19 0x03>; + clock-names = "pxlclk"; + + port { + + hdlcd0-endpoint { + remote-endpoint = <0x1a>; + linux,phandle = <0x1d>; + phandle = <0x1d>; + }; + }; + }; + + uart@7ff80000 { + compatible = "arm,pl011\0arm,primecell"; + reg = <0x00 0x7ff80000 0x00 0x1000>; + interrupts = <0x00 0x53 0x04>; + clocks = <0x1b 0x11>; + clock-names = "uartclk\0apb_pclk"; + }; + + i2c@7ffa0000 { + compatible = "snps,designware-i2c"; + reg = <0x00 0x7ffa0000 0x00 0x1000>; + #address-cells = <0x01>; + #size-cells = <0x00>; + interrupts = <0x00 0x68 0x04>; + clock-frequency = <0x186a0>; + i2c-sda-hold-time-ns = <0x1f4>; + clocks = <0x1c>; + + hdmi-transmitter@70 { + compatible = "nxp,tda998x"; + reg = <0x70>; + audio-ports = <0x03 0x04>; + audio-port-names = "i2s\0spdif"; + #sound-dai-cells = <0x01>; + linux,phandle = <0x21>; + phandle = <0x21>; + + port { + + tda998x-0-endpoint { + remote-endpoint = <0x1d>; + linux,phandle = <0x1a>; + phandle = <0x1a>; + }; + }; + }; + + hdmi-transmitter@71 { + compatible = "nxp,tda998x"; + reg = <0x71>; + + port { + }; + }; + }; + + ohci@7ffb0000 { + compatible = "generic-ohci"; + reg = <0x00 0x7ffb0000 0x00 0x10000>; + interrupts = <0x00 0x74 0x04>; + clocks = <0x1e>; + }; + + ehci@7ffc0000 { + compatible = "generic-ehci"; + reg = <0x00 0x7ffc0000 0x00 0x10000>; + interrupts = <0x00 0x75 0x04>; + clocks = <0x1e>; + }; + + memory-controller@7ffd0000 { + compatible = "arm,pl354\0arm,primecell"; + reg = <0x00 0x7ffd0000 0x00 0x1000>; + interrupts = <0x00 0x56 0x04 0x00 0x57 0x04>; + clocks = <0x1c>; + clock-names = "apb_pclk"; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0x00 0x80000000 0x00 0x7f000000 0x08 0x80000000 0x01 0x80000000>; + }; + + reserved-memory { + #address-cells = <0x02>; + #size-cells = <0x02>; + ranges; + + optee@0xfee00000 { + reg = <0x00 0xfee00000 0x00 0x200000>; + no-map; + }; + }; + + i2s@7ff90000 { + compatible = "snps,designware-i2s"; + reg = <0x00 0x7ff90000 0x00 0x1000>; + clocks = <0x19 0x05 0x11>; + clock-names = "i2sclk\0apb_pclk"; + #sound-dai-cells = <0x00>; + dmas = <0x1f 0x05>; + dma-names = "tx"; + linux,phandle = <0x20>; + phandle = <0x20>; + }; + + hdmi_audio@0 { + compatible = "linux,hdmi-audio"; + #sound-dai-cells = <0x00>; + status = "okay"; + }; + + sound { + compatible = "simple-audio-card"; + simple-audio-card,format = "i2s"; + + simple-audio-card,cpu { + sound-dai = <0x20>; + }; + + simple-audio-card,codec { + sound-dai = <0x21 0x00>; + }; + }; + + gpu@0x2d000000 { + compatible = "arm,malit6xx\0arm,mali-midgard"; + #cooling-cells = <0x02>; + reg = <0x00 0x2d000000 0x00 0x4000>; + interrupts = <0x00 0x21 0x04 0x00 0x22 0x04 0x00 0x20 0x04>; + interrupt-names = "JOB\0MMU\0GPU"; + clocks = <0x09 0x02>; + clock-names = "clk_mali"; + power-domains = <0x22 0x01>; + linux,phandle = <0x17>; + phandle = <0x17>; + + power_model { + compatible = "arm,mali-simple-power-model"; + voltage = <0x320>; + frequency = <0x1f4>; + static-power = <0x1f4>; + dynamic-power = <0x5dc>; + ts = <0x4e20 0x7d0 0xffffffec 0x02>; + thermal-zone = "soc"; + }; + }; + + smb@08000000 { + compatible = "simple-bus"; + #address-cells = <0x02>; + #size-cells = <0x01>; + ranges = <0x00 0x00 0x00 0x8000000 + 0x4000000 0x01 0x00 0x00 + 0x14000000 0x4000000 0x02 0x00 + 0x00 0x18000000 0x4000000 0x03 + 0x00 0x00 0x1c000000 0x4000000 + 0x04 0x00 0x00 0xc000000 + 0x4000000 0x05 0x00 0x00 + 0x10000000 0x4000000>; + #interrupt-cells = <0x01>; + interrupt-map-mask = <0x00 0x00 0x0f>; + interrupt-map = <0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x44 + 0x04 0x00 0x00 0x01 0x01 0x00 0x00 0x00 + 0x45 0x04 0x00 0x00 0x02 0x01 0x00 0x00 + 0x00 0x46 0x04 0x00 0x00 0x03 0x01 0x00 + 0x00 0x00 0xa0 0x04 0x00 0x00 0x04 0x01 + 0x00 0x00 0x00 0xa1 0x04 0x00 0x00 0x05 + 0x01 0x00 0x00 0x00 0xa2 0x04 0x00 0x00 + 0x06 0x01 0x00 0x00 0x00 0xa3 0x04 0x00 + 0x00 0x07 0x01 0x00 0x00 0x00 0xa4 0x04 + 0x00 0x00 0x08 0x01 0x00 0x00 0x00 0xa5 + 0x04 0x00 0x00 0x09 0x01 0x00 0x00 0x00 + 0xa6 0x04 0x00 0x00 0x0a 0x01 0x00 0x00 + 0x00 0xa7 0x04 0x00 0x00 0x0b 0x01 0x00 + 0x00 0x00 0xa8 0x04 0x00 0x00 0x0c 0x01 + 0x00 0x00 0x00 0xa9 0x04>; + + clk24mhz { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0x16e3600>; + clock-output-names = "juno_mb:clk24mhz"; + linux,phandle = <0x28>; + phandle = <0x28>; + }; + + clk25mhz { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0x17d7840>; + clock-output-names = "juno_mb:clk25mhz"; + linux,phandle = <0x24>; + phandle = <0x24>; + }; + + refclk1mhz { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0xf4240>; + clock-output-names = "juno_mb:refclk1mhz"; + linux,phandle = <0x27>; + phandle = <0x27>; + }; + + refclk32khz { + compatible = "fixed-clock"; + #clock-cells = <0x00>; + clock-frequency = <0x8000>; + clock-output-names = "juno_mb:refclk32khz"; + linux,phandle = <0x26>; + phandle = <0x26>; + }; + + motherboard { + compatible = "arm,vexpress,v2p-p1\0simple-bus"; + #address-cells = <0x02>; + #size-cells = <0x01>; + #interrupt-cells = <0x01>; + ranges; + model = "V2M-Juno"; + arm,hbi = <0x252>; + arm,vexpress,site = <0x00>; + arm,v2m-memory-map = "rs1"; + + mcc-sb-3v3 { + compatible = "regulator-fixed"; + regulator-name = "MCC_SB_3V3"; + regulator-min-microvolt = <0x325aa0>; + regulator-max-microvolt = <0x325aa0>; + regulator-always-on; + linux,phandle = <0x25>; + phandle = <0x25>; + }; + + gpio_keys { + compatible = "gpio-keys"; + #address-cells = <0x01>; + #size-cells = <0x00>; + + power-button { + debounce_interval = <0x32>; + wakeup-source; + linux,code = <0x74>; + label = "POWER"; + gpios = <0x23 0x00 0x04>; + }; + + home-button { + debounce_interval = <0x32>; + wakeup-source; + linux,code = <0x66>; + label = "HOME"; + gpios = <0x23 0x01 0x04>; + }; + + rlock-button { + debounce_interval = <0x32>; + wakeup-source; + linux,code = <0x98>; + label = "RLOCK"; + gpios = <0x23 0x02 0x04>; + }; + + vol-up-button { + debounce_interval = <0x32>; + wakeup-source; + linux,code = <0x73>; + label = "VOL+"; + gpios = <0x23 0x03 0x04>; + }; + + vol-down-button { + debounce_interval = <0x32>; + wakeup-source; + linux,code = <0x72>; + label = "VOL-"; + gpios = <0x23 0x04 0x04>; + }; + + nmi-button { + debounce_interval = <0x32>; + wakeup-source; + linux,code = <0x63>; + label = "NMI"; + gpios = <0x23 0x05 0x04>; + }; + }; + + flash@0,00000000 { + compatible = "arm,vexpress-flash\0cfi-flash"; + linux,part-probe = "afs"; + reg = <0x00 0x00 0x4000000>; + bank-width = <0x04>; + status = "disabled"; + }; + + ethernet@2,00000000 { + compatible = "smsc,lan9118\0smsc,lan9115"; + reg = <0x02 0x00 0x10000>; + interrupts = <0x03>; + phy-mode = "mii"; + reg-io-width = <0x04>; + smsc,irq-active-high; + smsc,irq-push-pull; + clocks = <0x24>; + vdd33a-supply = <0x25>; + vddvario-supply = <0x25>; + status = "disabled"; + }; + + usb@5,00000000 { + compatible = "nxp,usb-isp1763"; + reg = <0x05 0x00 0x20000>; + bus-width = <0x10>; + interrupts = <0x04>; + }; + + iofpga@3,00000000 { + compatible = "arm,amba-bus\0simple-bus"; + #address-cells = <0x01>; + #size-cells = <0x01>; + ranges = <0x00 0x03 0x00 0x200000>; + + sysctl@020000 { + compatible = "arm,sp810\0arm,primecell"; + reg = <0x20000 0x1000>; + clocks = <0x26 0x27 0x28>; + clock-names = "refclk\0timclk\0apb_pclk"; + #clock-cells = <0x01>; + clock-output-names = "timerclken0\0timerclken1\0timerclken2\0timerclken3"; + assigned-clocks = <0x29 0x00 0x29 0x01 0x29 0x03 0x29 0x03>; + assigned-clock-parents = <0x27 0x27 0x27 0x27>; + linux,phandle = <0x29>; + phandle = <0x29>; + }; + + apbregs@010000 { + compatible = "syscon\0simple-mfd"; + reg = <0x10000 0x1000>; + + led0 { + compatible = "register-bit-led"; + offset = <0x08>; + mask = <0x01>; + label = "vexpress:0"; + linux,default-trigger = "heartbeat"; + default-state = "on"; + }; + + led1 { + compatible = "register-bit-led"; + offset = <0x08>; + mask = <0x02>; + label = "vexpress:1"; + linux,default-trigger = "mmc0"; + default-state = "off"; + }; + + led2 { + compatible = "register-bit-led"; + offset = <0x08>; + mask = <0x04>; + label = "vexpress:2"; + linux,default-trigger = "cpu0"; + default-state = "off"; + }; + + led3 { + compatible = "register-bit-led"; + offset = <0x08>; + mask = <0x08>; + label = "vexpress:3"; + linux,default-trigger = "cpu1"; + default-state = "off"; + }; + + led4 { + compatible = "register-bit-led"; + offset = <0x08>; + mask = <0x10>; + label = "vexpress:4"; + linux,default-trigger = "cpu2"; + default-state = "off"; + }; + + led5 { + compatible = "register-bit-led"; + offset = <0x08>; + mask = <0x20>; + label = "vexpress:5"; + linux,default-trigger = "cpu3"; + default-state = "off"; + }; + + led6 { + compatible = "register-bit-led"; + offset = <0x08>; + mask = <0x40>; + label = "vexpress:6"; + default-state = "off"; + }; + + led7 { + compatible = "register-bit-led"; + offset = <0x08>; + mask = <0x80>; + label = "vexpress:7"; + default-state = "off"; + }; + }; + + mmci@050000 { + compatible = "arm,pl180\0arm,primecell"; + reg = <0x50000 0x1000>; + interrupts = <0x05>; + max-frequency = <0xb71b00>; + vmmc-supply = <0x25>; + clocks = <0x28 0x1c>; + clock-names = "mclk\0apb_pclk"; + }; + + kmi@060000 { + compatible = "arm,pl050\0arm,primecell"; + reg = <0x60000 0x1000>; + interrupts = <0x08>; + clocks = <0x28 0x1c>; + clock-names = "KMIREFCLK\0apb_pclk"; + }; + + kmi@070000 { + compatible = "arm,pl050\0arm,primecell"; + reg = <0x70000 0x1000>; + interrupts = <0x08>; + clocks = <0x28 0x1c>; + clock-names = "KMIREFCLK\0apb_pclk"; + }; + + wdt@0f0000 { + compatible = "arm,sp805\0arm,primecell"; + reg = <0xf0000 0x10000>; + interrupts = <0x07>; + clocks = <0x28 0x1c>; + clock-names = "wdogclk\0apb_pclk"; + }; + + timer@110000 { + compatible = "arm,sp804\0arm,primecell"; + reg = <0x110000 0x10000>; + interrupts = <0x09>; + clocks = <0x29 0x00 0x29 0x01 0x28>; + clock-names = "timclken1\0timclken2\0apb_pclk"; + }; + + timer@120000 { + compatible = "arm,sp804\0arm,primecell"; + reg = <0x120000 0x10000>; + interrupts = <0x09>; + clocks = <0x29 0x02 0x29 0x03 0x28>; + clock-names = "timclken1\0timclken2\0apb_pclk"; + }; + + rtc@170000 { + compatible = "arm,pl031\0arm,primecell"; + reg = <0x170000 0x10000>; + interrupts = <0x00>; + clocks = <0x1c>; + clock-names = "apb_pclk"; + }; + + gpio@1d0000 { + compatible = "arm,pl061\0arm,primecell"; + reg = <0x1d0000 0x1000>; + interrupts = <0x06>; + clocks = <0x1c>; + clock-names = "apb_pclk"; + gpio-controller; + #gpio-cells = <0x02>; + interrupt-controller; + #interrupt-cells = <0x02>; + linux,phandle = <0x23>; + phandle = <0x23>; + }; + }; + }; + }; + + tlx@60000000 { + compatible = "simple-bus"; + #address-cells = <0x01>; + #size-cells = <0x01>; + ranges = <0x00 0x00 0x60000000 0x10000000>; + #interrupt-cells = <0x01>; + interrupt-map-mask = <0x00 0x00>; + interrupt-map = <0x00 0x00 0x01 0x00 0x00 0x00 0xa8 0x04>; + }; + + firmware { + + optee { + compatible = "linaro,optee-tz"; + method = "smc"; + }; + }; +}; diff --git a/configs/vexpress_aemv8a_juno_defconfig b/configs/vexpress_aemv8a_juno_defconfig index 3125adaf5c4..95b4fe2c0a9 100644 --- a/configs/vexpress_aemv8a_juno_defconfig +++ b/configs/vexpress_aemv8a_juno_defconfig @@ -52,3 +52,4 @@ CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_GENERIC=y CONFIG_USB_OHCI_HCD=y CONFIG_USB_OHCI_GENERIC=y +CONFIG_DEFAULT_DEVICE_TREE="juno-r2"