]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
Merge tag 'sunxi-dt-for-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sunxi...
authorArnd Bergmann <arnd@arndb.de>
Tue, 2 Feb 2021 16:53:02 +0000 (17:53 +0100)
committerArnd Bergmann <arnd@arndb.de>
Tue, 2 Feb 2021 16:54:06 +0000 (17:54 +0100)
Our usual bunch of patches to support the Allwinner SoCs, this time
adding:
  - DT fixes spotted through the schemas
  - Mali Support for the A10s/A13/GR8/R8
  - MMC improvements for the A64 and H6
  - New board: SL631 Action Camera, PineTab Early Adopter

* tag 'sunxi-dt-for-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux: (47 commits)
  ARM: dts: sunxi: Rename nmi_intc to r_intc
  ARM: dts: sun8i: h2-plus: bananapi-m2-zero: Increase BT UART speed
  ARM: dts: sunxi: bananapi-m2-plus: Increase BT UART speed
  arm64: dts: allwinner: pine-h64: Fix typos in BT GPIOs
  arm64: dts: allwinner: pinetab: Fix the panel compatible
  arm64: dts: allwinner: pinephone: Remove useless light sensor supplies
  arm64: dts: allwinner: h6: Use - instead of @ for DT OPP entries
  ARM: dts: sun8i-a33: sina33: Add missing panel power supply
  ARM: dts: sun8i-a83t: Remove empty CSI port
  ARM: dts: sun8i-s3: pinecube: Fix CSI DTC warnings
  ARM: dts: sun8i-s3: impetus: Fix the USB PHY ID detect GPIO properties
  ARM: dts: sun8i: nanopi-r1: Fix GPIO regulator state array
  ARM: dts: sun6i: primo81: Remove useless io-channel-cells
  ARM: dts: sunxi: Fix CPU thermal zone node name
  ARM: dts: sunxi: Add missing backlight supply
  ARM: dts: sunxi: Fix the LED node names
  dt-bindings: rtc: sun6i-a31-rtc: Loosen the requirements on the clocks
  dt-bindings: iio: adc: Add AXP803 compatible
  dt-bindings: sunxi: Fix the pinecube compatible
  ARM: dts: sun8i-v3s: Add CSI0 MCLK pin definition
  ...

Link: https://lore.kernel.org/r/48511540-fdd6-4fbe-8037-ec9fa8436147.lettre@localhost
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
225 files changed:
Documentation/devicetree/bindings/arm/renesas.yaml
Documentation/devicetree/bindings/arm/tegra.yaml
Documentation/devicetree/bindings/vendor-prefixes.yaml
MAINTAINERS
Makefile
arch/alpha/include/asm/local64.h [deleted file]
arch/arc/include/asm/Kbuild
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/am335x-evm.dts
arch/arm/boot/dts/am335x-evmsk.dts
arch/arm/boot/dts/am335x-icev2.dts
arch/arm/boot/dts/am335x-myirtech-myc.dtsi [new file with mode: 0644]
arch/arm/boot/dts/am335x-myirtech-myd.dts [new file with mode: 0644]
arch/arm/boot/dts/am33xx-l4.dtsi
arch/arm/boot/dts/am574x-idk.dts
arch/arm/boot/dts/at91-kizbox3_common.dtsi
arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi
arch/arm/boot/dts/at91-sama5d27_wlsom1_ek.dts
arch/arm/boot/dts/at91-sama5d2_icp.dts
arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
arch/arm/boot/dts/at91-sama5d2_xplained.dts
arch/arm/boot/dts/berlin2.dtsi
arch/arm/boot/dts/berlin2cd-google-chromecast.dts
arch/arm/boot/dts/berlin2cd.dtsi
arch/arm/boot/dts/berlin2q.dtsi
arch/arm/boot/dts/dra71-evm.dts
arch/arm/boot/dts/dra76x.dtsi
arch/arm/boot/dts/motorola-mapphone-common.dtsi
arch/arm/boot/dts/mstar-infinity-breadbee-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/mstar-infinity-msc313-breadbee_crust.dts
arch/arm/boot/dts/mstar-infinity3-msc313e-breadbee.dts
arch/arm/boot/dts/omap3-echo.dts
arch/arm/boot/dts/omap3-gta04.dtsi
arch/arm/boot/dts/omap3-igep.dtsi
arch/arm/boot/dts/omap3-igep0020-common.dtsi
arch/arm/boot/dts/omap3-igep0020-rev-f.dts
arch/arm/boot/dts/omap3-igep0020.dts
arch/arm/boot/dts/omap3-igep0030-common.dtsi
arch/arm/boot/dts/omap3-igep0030-rev-g.dts
arch/arm/boot/dts/omap3-igep0030.dts
arch/arm/boot/dts/omap36xx.dtsi
arch/arm/boot/dts/omap443x.dtsi
arch/arm/boot/dts/socfpga_arria10.dtsi
arch/arm/boot/dts/ste-ab8500.dtsi
arch/arm/boot/dts/ste-ab8505.dtsi
arch/arm/boot/dts/ste-dbx5x0.dtsi
arch/arm/boot/dts/ste-href.dtsi
arch/arm/boot/dts/ste-href520-tvk.dts
arch/arm/boot/dts/ste-hrefprev60-stuib.dts
arch/arm/boot/dts/ste-hrefprev60-tvk.dts
arch/arm/boot/dts/ste-hrefprev60.dtsi
arch/arm/boot/dts/ste-hrefv60plus-stuib.dts
arch/arm/boot/dts/ste-hrefv60plus-tvk.dts
arch/arm/boot/dts/ste-hrefv60plus.dtsi
arch/arm/boot/dts/ste-nomadik-nhk15.dts
arch/arm/boot/dts/ste-nomadik-s8815.dts
arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
arch/arm/boot/dts/ste-snowball.dts
arch/arm/boot/dts/ste-ux500-samsung-golden.dts
arch/arm/boot/dts/ste-ux500-samsung-janice.dts [new file with mode: 0644]
arch/arm/boot/dts/ste-ux500-samsung-skomer.dts
arch/arm/boot/dts/stm32f429.dtsi
arch/arm/boot/dts/stm32f746.dtsi
arch/arm/boot/dts/stm32h743.dtsi
arch/arm/boot/dts/stm32mp15-pinctrl.dtsi
arch/arm/boot/dts/stm32mp151.dtsi
arch/arm/boot/dts/stm32mp157a-stinger96.dtsi
arch/arm/boot/dts/stm32mp157c-ed1.dts
arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts
arch/arm/boot/dts/stm32mp15xx-dhcom-drc02.dtsi
arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi
arch/arm/boot/dts/stm32mp15xx-dhcom-picoitx.dtsi
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
arch/arm/boot/dts/stm32mp15xx-dkx.dtsi
arch/arm/boot/dts/tegra30-ouya.dts
arch/arm/include/asm/Kbuild
arch/arm64/Kconfig.platforms
arch/arm64/boot/dts/altera/socfpga_stratix10.dtsi
arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi
arch/arm64/boot/dts/exynos/exynos7-espresso.dts
arch/arm64/boot/dts/hisilicon/hi3660.dtsi
arch/arm64/boot/dts/hisilicon/hi3670.dtsi
arch/arm64/boot/dts/hisilicon/hi3798cv200.dtsi
arch/arm64/boot/dts/hisilicon/hi6220.dtsi
arch/arm64/boot/dts/hisilicon/hikey970-pinctrl.dtsi
arch/arm64/boot/dts/hisilicon/hip05.dtsi
arch/arm64/boot/dts/hisilicon/hip06.dtsi
arch/arm64/boot/dts/hisilicon/hip07.dtsi
arch/arm64/boot/dts/intel/Makefile
arch/arm64/boot/dts/intel/socfpga_n5x_socdk.dts [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/Makefile
arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
arch/arm64/boot/dts/nvidia/tegra186.dtsi
arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts
arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0000.dts
arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0001.dts [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/tegra194-p3509-0000.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/tegra194-p3668-0000.dtsi
arch/arm64/boot/dts/nvidia/tegra194-p3668-0001.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/tegra194-p3668.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/tegra194.dtsi
arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
arch/arm64/boot/dts/nvidia/tegra210.dtsi
arch/arm64/boot/dts/renesas/Makefile
arch/arm64/boot/dts/renesas/beacon-renesom-baseboard.dtsi
arch/arm64/boot/dts/renesas/beacon-renesom-som.dtsi
arch/arm64/boot/dts/renesas/hihope-common.dtsi
arch/arm64/boot/dts/renesas/r8a774a1-beacon-rzg2m-kit.dts
arch/arm64/boot/dts/renesas/r8a774a1.dtsi
arch/arm64/boot/dts/renesas/r8a774b1-beacon-rzg2n-kit.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a774b1.dtsi
arch/arm64/boot/dts/renesas/r8a774c0.dtsi
arch/arm64/boot/dts/renesas/r8a774e1-beacon-rzg2h-kit.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a774e1.dtsi
arch/arm64/boot/dts/renesas/r8a77951.dtsi
arch/arm64/boot/dts/renesas/r8a77960.dtsi
arch/arm64/boot/dts/renesas/r8a77961.dtsi
arch/arm64/boot/dts/renesas/r8a77965.dtsi
arch/arm64/boot/dts/renesas/r8a77980-condor.dts
arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts
arch/arm64/boot/dts/renesas/r8a77990.dtsi
arch/arm64/boot/dts/renesas/r8a77995-draak.dts
arch/arm64/boot/dts/renesas/r8a77995.dtsi
arch/arm64/boot/dts/renesas/r8a779a0-falcon-cpu.dtsi
arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
arch/arm64/boot/dts/renesas/r8a779a0.dtsi
arch/arm64/boot/dts/renesas/salvator-common.dtsi
arch/arm64/boot/dts/renesas/ulcb.dtsi
arch/arm64/boot/dts/synaptics/as370.dtsi
arch/arm64/boot/dts/synaptics/berlin4ct.dtsi
arch/arm64/boot/dts/ti/k3-am65-main.dtsi
arch/arm64/boot/dts/ti/k3-am65.dtsi
arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts
arch/arm64/boot/dts/ti/k3-j7200-main.dtsi
arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
arch/arm64/boot/dts/ti/k3-j7200-som-p0.dtsi
arch/arm64/boot/dts/ti/k3-j7200.dtsi
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
arch/arm64/boot/dts/ti/k3-j721e.dtsi
arch/arm64/boot/dts/toshiba/tmpv7708-rm-mbrc.dts
arch/arm64/boot/dts/toshiba/tmpv7708.dtsi
arch/arm64/include/asm/Kbuild
arch/csky/include/asm/Kbuild
arch/h8300/include/asm/Kbuild
arch/hexagon/include/asm/Kbuild
arch/ia64/include/asm/local64.h [deleted file]
arch/ia64/mm/init.c
arch/m68k/include/asm/Kbuild
arch/microblaze/include/asm/Kbuild
arch/mips/include/asm/Kbuild
arch/nds32/include/asm/Kbuild
arch/openrisc/include/asm/Kbuild
arch/parisc/include/asm/Kbuild
arch/powerpc/include/asm/Kbuild
arch/riscv/include/asm/Kbuild
arch/s390/Kconfig
arch/s390/configs/debug_defconfig
arch/s390/configs/defconfig
arch/s390/configs/zfcpdump_defconfig
arch/s390/include/asm/Kbuild
arch/sh/include/asm/Kbuild
arch/sparc/include/asm/Kbuild
arch/x86/include/asm/local64.h [deleted file]
arch/xtensa/include/asm/Kbuild
block/blk-core.c
block/blk-mq-debugfs.c
block/blk-mq.c
block/blk-pm.c
block/blk-pm.h
drivers/cpufreq/intel_pstate.c
drivers/ide/ide-atapi.c
drivers/ide/ide-io.c
drivers/ide/ide-pm.c
drivers/idle/intel_idle.c
drivers/md/dm-crypt.c
drivers/opp/core.c
drivers/scsi/cxgbi/cxgb4i/Kconfig
drivers/scsi/mpt3sas/mpt3sas_base.c
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_transport_spi.c
drivers/scsi/ufs/ufs-mediatek-trace.h
drivers/scsi/ufs/ufs-mediatek.c
drivers/scsi/ufs/ufs-mediatek.h
drivers/scsi/ufs/ufs.h
drivers/scsi/ufs/ufshcd-pci.c
drivers/scsi/ufs/ufshcd.c
drivers/scsi/ufs/ufshcd.h
fs/block_dev.c
fs/ceph/mds_client.c
fs/file.c
fs/io_uring.c
include/asm-generic/Kbuild
include/dt-bindings/clock/tegra210-car.h
include/linux/blk-mq.h
include/linux/blkdev.h
include/linux/build_bug.h
include/linux/ceph/msgr.h
include/linux/kdev_t.h
include/linux/mm.h
include/linux/sizes.h
kernel/cgroup/cgroup-v1.c
kernel/cgroup/cgroup.c
kernel/exit.c
kernel/workqueue.c
lib/genalloc.c
lib/zlib_dfltcc/Makefile
lib/zlib_dfltcc/dfltcc.c
lib/zlib_dfltcc/dfltcc_deflate.c
lib/zlib_dfltcc/dfltcc_inflate.c
lib/zlib_dfltcc/dfltcc_syms.c [deleted file]
mm/hugetlb.c
mm/kasan/generic.c
mm/memory.c
mm/memory_hotplug.c
mm/mremap.c
mm/page_alloc.c
mm/slub.c
net/ceph/messenger_v2.c
scripts/checkpatch.pl
scripts/depmod.sh
tools/testing/selftests/vm/Makefile

index fe11be65039a059c10388beb28266e025fae3576..5fd0696a9f91f3830d59cf8587b74dfc7a970f08 100644 (file)
@@ -130,6 +130,7 @@ properties:
       - description: RZ/G2N (R8A774B1)
         items:
           - enum:
+              - beacon,beacon-rzg2n # Beacon EmbeddedWorks RZ/G2N Kit
               - hoperun,hihope-rzg2n # HopeRun HiHope RZ/G2N platform
           - const: renesas,r8a774b1
 
@@ -154,6 +155,7 @@ properties:
       - description: RZ/G2H (R8A774E1)
         items:
           - enum:
+              - beacon,beacon-rzg2h # Beacon EmbeddedWorks RZ/G2H Kit
               - hoperun,hihope-rzg2h # HopeRun HiHope RZ/G2H platform
           - const: renesas,r8a774e1
 
index c5fbf869aa93a0405ddbde1793041a8907446955..b9f75e20fef5cc20d5e775c792ace63b863496df 100644 (file)
@@ -120,10 +120,18 @@ properties:
         items:
           - const: nvidia,p3668-0000
           - const: nvidia,tegra194
+      - description: Jetson Xavier NX (eMMC)
+        items:
+          - const: nvidia,p3668-0001
+          - const: nvidia,tegra194
       - description: Jetson Xavier NX Developer Kit
         items:
           - const: nvidia,p3509-0000+p3668-0000
           - const: nvidia,tegra194
+      - description: Jetson Xavier NX Developer Kit (eMMC)
+        items:
+          - const: nvidia,p3509-0000+p3668-0001
+          - const: nvidia,tegra194
       - items:
           - enum:
               - nvidia,tegra234-vdk
index 041ae90b0d8fd20bd2fee50b89b4e3f75a612d65..3085122620095576cbbf15ae9b8aecf48dbf8820 100644 (file)
@@ -467,10 +467,10 @@ patternProperties:
     description: Hitex Development Tools
   "^holt,.*":
     description: Holt Integrated Circuits, Inc.
-  "^honeywell,.*":
-    description: Honeywell
   "^honestar,.*":
     description: Honestar Technologies Co., Ltd.
+  "^honeywell,.*":
+    description: Honeywell
   "^hoperun,.*":
     description: Jiangsu HopeRun Software Co., Ltd.
   "^hp,.*":
index 546aa66428c9f872b59186f491df397be7353769..4dd5cc054372defd6b428c588c441e5fb5dac5d6 100644 (file)
@@ -2643,8 +2643,10 @@ S:       Supported
 T:     git git://git.kernel.org/pub/scm/linux/kernel/git/iwamatsu/linux-visconti.git
 F:     Documentation/devicetree/bindings/arm/toshiba.yaml
 F:     Documentation/devicetree/bindings/pinctrl/toshiba,tmpv7700-pinctrl.yaml
+F:     Documentation/devicetree/bindings/watchdog/toshiba,visconti-wdt.yaml
 F:     arch/arm64/boot/dts/toshiba/
 F:     drivers/pinctrl/visconti/
+F:     drivers/watchdog/visconti_wdt.c
 N:     visconti
 
 ARM/UNIPHIER ARCHITECTURE
@@ -4588,7 +4590,7 @@ B:        https://bugzilla.kernel.org
 T:     git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
 F:     Documentation/admin-guide/pm/cpuidle.rst
 F:     Documentation/driver-api/pm/cpuidle.rst
-F:     drivers/cpuidle/*
+F:     drivers/cpuidle/
 F:     include/linux/cpuidle.h
 
 CPU POWER MONITORING SUBSYSTEM
index 3d328b7ab20030c9007c017a671b74ab9b580b84..8b2c3f88ee5ea6c711f3d859d45817de325ab707 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
 VERSION = 5
 PATCHLEVEL = 11
 SUBLEVEL = 0
-EXTRAVERSION = -rc1
+EXTRAVERSION = -rc2
 NAME = Kleptomaniac Octopus
 
 # *DOCUMENTATION*
diff --git a/arch/alpha/include/asm/local64.h b/arch/alpha/include/asm/local64.h
deleted file mode 100644 (file)
index 36c93b5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/local64.h>
index 81f4edec0c2a93ab39b494522dda384740464663..3c1afa524b9c26881f13d77ad476bc7ae5e02253 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 generic-y += extable.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += parport.h
 generic-y += user.h
index efe6c6d789f869fbf5dcbee944dce26fc944f3ab..fef3d5fd96211aad546c709b1cabfff01b1f977a 100644 (file)
@@ -817,6 +817,7 @@ dtb-$(CONFIG_SOC_AM33XX) += \
        am335x-lxm.dtb \
        am335x-moxa-uc-2101.dtb \
        am335x-moxa-uc-8100-me-t.dtb \
+       am335x-myirtech-myd.dtb \
        am335x-nano.dtb \
        am335x-netcan-plus-1xx.dtb \
        am335x-netcom-plus-2xx.dtb \
@@ -1279,6 +1280,7 @@ dtb-$(CONFIG_ARCH_U8500) += \
        ste-hrefv60plus-tvk.dtb \
        ste-href520-tvk.dtb \
        ste-ux500-samsung-golden.dtb \
+       ste-ux500-samsung-janice.dtb \
        ste-ux500-samsung-skomer.dtb
 dtb-$(CONFIG_ARCH_UNIPHIER) += \
        uniphier-ld4-ref.dtb \
index 7c6f2c11f0e105bc6fbe31805baf5c41d34de01f..902e295b309e9b7c60bb88bc8f19e0e2d898a016 100644 (file)
        };
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
        status = "okay";
-       slaves = <1>;
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
 
        ethphy0: ethernet-phy@0 {
                reg = <0>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rgmii-id";
+       ti,dual-emac-pvid = <1>;
+};
+
+&cpsw_port2 {
+        status = "disabled";
 };
 
 &tscadc {
index b43b94122d3c5483df80b40e57ca5140214f519a..d5f8d5e2eb5d28c456f75c80194420d2db541c2e 100644 (file)
        };
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
-       dual_emac = <1>;
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
 
        ethphy0: ethernet-phy@0 {
                reg = <0>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rgmii-id";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-handle = <&ethphy1>;
        phy-mode = "rgmii-id";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
 };
 
 &mmc1 {
index b958ab56a41237abc077c88cde863747223818c0..e923d065304d9f0064cfc58cea79dd5ad2183f55 100644 (file)
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rmii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-handle = <&ethphy1>;
        phy-mode = "rmii";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
        status = "okay";
-       dual_emac;
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
        reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
        reset-delay-us = <2>;   /* PHY datasheet states 1uS min */
 
diff --git a/arch/arm/boot/dts/am335x-myirtech-myc.dtsi b/arch/arm/boot/dts/am335x-myirtech-myc.dtsi
new file mode 100644 (file)
index 0000000..270a3d5
--- /dev/null
@@ -0,0 +1,267 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/* SPDX-FileCopyrightText: Alexander Shiyan, <shc_work@mail.ru> */
+
+/* Based on code by myc_c335x.dts, MYiRtech.com */
+/* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ */
+
+/dts-v1/;
+
+#include "am33xx.dtsi"
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       model = "MYIR MYC-AM335X";
+       compatible = "myir,myc-am335x", "ti,am33xx";
+
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&vdd_core>;
+                       voltage-tolerance = <2>;
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>;
+       };
+
+       vdd_mod: vdd_mod_reg {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd-mod";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_core: vdd_core_reg {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd-core";
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vdd_mod>;
+       };
+
+       leds: leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_mod_pins>;
+
+               led_mod: led_mod {
+                       label = "module:user";
+                       gpios = <&gpio3 18 GPIO_ACTIVE_LOW>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       panic-indicator;
+               };
+       };
+};
+
+&cpsw_emac0 {
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+};
+
+&davinci_mdio {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mdio_pins_default>;
+       pinctrl-1 = <&mdio_pins_sleep>;
+       status = "okay";
+
+       phy0: ethernet-phy@4 {
+               reg = <4>;
+       };
+};
+
+&elm {
+       status = "okay";
+};
+
+&gpmc {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&nand_pins_default>;
+       pinctrl-1 = <&nand_pins_sleep>;
+       ranges = <0 0 0x8000000 0x1000000>;
+       status = "okay";
+
+       nand0: nand@0,0 {
+               compatible = "ti,omap2-nand";
+               reg = <0 0 4>;
+               interrupt-parent = <&gpmc>;
+               interrupts = <0 IRQ_TYPE_NONE>, <1 IRQ_TYPE_NONE>;
+               nand-bus-width = <8>;
+               rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>;
+               gpmc,device-width = <1>;
+               gpmc,sync-clk-ps = <0>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <44>;
+               gpmc,cs-wr-off-ns = <44>;
+               gpmc,adv-on-ns = <6>;
+               gpmc,adv-rd-off-ns = <34>;
+               gpmc,adv-wr-off-ns = <44>;
+               gpmc,we-on-ns = <0>;
+               gpmc,we-off-ns = <40>;
+               gpmc,oe-on-ns = <0>;
+               gpmc,oe-off-ns = <54>;
+               gpmc,access-ns = <64>;
+               gpmc,rd-cycle-ns = <82>;
+               gpmc,wr-cycle-ns = <82>;
+               gpmc,bus-turnaround-ns = <0>;
+               gpmc,cycle2cycle-delay-ns = <0>;
+               gpmc,clk-activation-ns = <0>;
+               gpmc,wr-access-ns = <40>;
+               gpmc,wr-data-mux-bus-ns = <0>;
+               ti,elm-id = <&elm>;
+               ti,nand-ecc-opt = "bch8";
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+       };
+};
+
+&i2c0 {
+       pinctrl-names = "default", "gpio", "sleep";
+       pinctrl-0 = <&i2c0_pins_default>;
+       pinctrl-1 = <&i2c0_pins_gpio>;
+       pinctrl-2 = <&i2c0_pins_sleep>;
+       clock-frequency = <400000>;
+       scl-gpios = <&gpio3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio3 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+
+       eeprom: eeprom@50 {
+               compatible = "atmel,24c32";
+               reg = <0x50>;
+               pagesize = <32>;
+               vcc-supply = <&vdd_mod>;
+       };
+};
+
+&mac {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&eth_slave1_pins_default>;
+       pinctrl-1 = <&eth_slave1_pins_sleep>;
+       slaves = <1>;
+       status = "okay";
+};
+
+&rtc {
+       system-power-controller;
+};
+
+&am33xx_pinmux {
+       mdio_pins_default: pinmux_mdio_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MDIO, PIN_INPUT_PULLUP | SLEWCTRL_FAST, MUX_MODE0)    /* mdio_data */
+                       AM33XX_PADCONF(AM335X_PIN_MDC, PIN_OUTPUT_PULLUP, MUX_MODE0)                    /* mdio_clk */
+               >;
+       };
+
+       mdio_pins_sleep: pinmux_mdio_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MDIO, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MDC, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       eth_slave1_pins_default: pinmux_eth_slave1_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE2)           /* rgmii1_tctl */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE2)            /* rgmii1_rctl */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_OUTPUT_PULLDOWN, MUX_MODE2)            /* rgmii1_td3 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_OUTPUT_PULLDOWN, MUX_MODE2)            /* rgmii1_td2 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_OUTPUT_PULLDOWN, MUX_MODE2)            /* rgmii1_td1 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_OUTPUT_PULLDOWN, MUX_MODE2)            /* rgmii1_td0 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_OUTPUT_PULLDOWN, MUX_MODE2)          /* rgmii1_tclk */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE2)           /* rgmii1_rclk */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE2)             /* rgmii1_rd3 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE2)             /* rgmii1_rd2 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE2)             /* rgmii1_rd1 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE2)             /* rgmii1_rd0 */
+               >;
+       };
+
+       eth_slave1_pins_sleep: pinmux_eth_slave1_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       i2c0_pins_default: pinmux_i2c0_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_I2C0_SDA, PIN_INPUT | SLEWCTRL_FAST, MUX_MODE0)       /* I2C0_SDA */
+                       AM33XX_PADCONF(AM335X_PIN_I2C0_SCL, PIN_INPUT | SLEWCTRL_FAST, MUX_MODE0)       /* I2C0_SCL */
+               >;
+       };
+
+       i2c0_pins_gpio: pinmux_i2c0_pins_gpio {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_I2C0_SDA, PIN_INPUT, MUX_MODE7)                       /* gpio3[5] */
+                       AM33XX_PADCONF(AM335X_PIN_I2C0_SCL, PIN_INPUT, MUX_MODE7)                       /* gpio3[6] */
+               >;
+       };
+
+       i2c0_pins_sleep: pinmux_i2c0_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_I2C0_SDA, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_I2C0_SCL, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       led_mod_pins: pinmux_led_mod_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKR, PIN_OUTPUT_PULLDOWN, MUX_MODE7)         /* gpio3[18] */
+               >;
+       };
+
+       nand_pins_default: pinmux_nand_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD0, PIN_INPUT_PULLUP, MUX_MODE0)                /* gpmc_ad0 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD1, PIN_INPUT_PULLUP, MUX_MODE0)                /* gpmc_ad1 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD2, PIN_INPUT_PULLUP, MUX_MODE0)                /* gpmc_ad2 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD3, PIN_INPUT_PULLUP, MUX_MODE0)                /* gpmc_ad3 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD4, PIN_INPUT_PULLUP, MUX_MODE0)                /* gpmc_ad4 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD5, PIN_INPUT_PULLUP, MUX_MODE0)                /* gpmc_ad5 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD6, PIN_INPUT_PULLUP, MUX_MODE0)                /* gpmc_ad6 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD7, PIN_INPUT_PULLUP, MUX_MODE0)                /* gpmc_ad7 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_WAIT0, PIN_INPUT_PULLUP, MUX_MODE0)              /* gpmc_wait0 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_WPN, PIN_INPUT_PULLUP, MUX_MODE7)                /* gpio0[31] */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_CSN0, PIN_OUTPUT, MUX_MODE0)                     /* gpmc_csn0 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_ADVN_ALE, PIN_OUTPUT, MUX_MODE0)                 /* gpmc_advn_ale */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_OEN_REN, PIN_OUTPUT, MUX_MODE0)                  /* gpmc_oen_ren */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_WEN, PIN_OUTPUT, MUX_MODE0)                      /* gpmc_wen */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_BEN0_CLE, PIN_OUTPUT, MUX_MODE0)                 /* gpmc_be0n_cle */
+               >;
+       };
+
+       nand_pins_sleep: pinmux_nand_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD2, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD3, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD4, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD5, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD6, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD7, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_WAIT0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_WPN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_CSN0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_ADVN_ALE, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_OEN_REN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_WEN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_BEN0_CLE, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/am335x-myirtech-myd.dts b/arch/arm/boot/dts/am335x-myirtech-myd.dts
new file mode 100644 (file)
index 0000000..c996639
--- /dev/null
@@ -0,0 +1,536 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/* SPDX-FileCopyrightText: Alexander Shiyan, <shc_work@mail.ru> */
+/* Based on code by myd_c335x.dts, MYiRtech.com */
+/* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ */
+
+/dts-v1/;
+
+#include "am335x-myirtech-myc.dtsi"
+
+#include <dt-bindings/display/tda998x.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "MYIR MYD-AM335X";
+       compatible = "myir,myd-am335x", "myir,myc-am335x", "ti,am33xx";
+
+       chosen {
+               stdout-path = &uart0;
+       };
+
+       clk12m: clk12m {
+               compatible = "fixed-clock";
+               clock-frequency = <12000000>;
+
+               #clock-cells = <0>;
+       };
+
+       gpio_buttons: gpio_buttons {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_buttons_pins>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               button1: button@0 {
+                       reg = <0>;
+                       label = "button1";
+                       linux,code = <BTN_1>;
+                       gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+               };
+
+               button2: button@1 {
+                       reg = <1>;
+                       label = "button2";
+                       linux,code = <BTN_2>;
+                       gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       sound: sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&master_codec>;
+               simple-audio-card,frame-master = <&master_codec>;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcasp0>;
+               };
+
+               master_codec: simple-audio-card,codec@1 {
+                       sound-dai = <&sgtl5000>;
+               };
+
+               simple-audio-card,codec@2 {
+                       sound-dai = <&tda9988>;
+               };
+       };
+
+       vdd_5v0: vdd_5v0_reg {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_3v3: vdd_3v3_reg {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vdd_5v0>;
+       };
+};
+
+&cpsw_emac1 {
+       phy-handle = <&phy1>;
+       phy-mode = "rgmii-id";
+};
+
+&davinci_mdio {
+       phy1: ethernet-phy@6 {
+               reg = <6>;
+               eee-broken-1000t;
+       };
+};
+
+&dcan0 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&dcan0_pins_default>;
+       pinctrl-1 = <&dcan0_pins_sleep>;
+       status = "okay";
+};
+
+&dcan1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&dcan1_pins_default>;
+       pinctrl-1 = <&dcan1_pins_sleep>;
+       status = "okay";
+};
+
+&ehrpwm0 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&ehrpwm0_pins_default>;
+       pinctrl-1 = <&ehrpwm0_pins_sleep>;
+       status = "okay";
+};
+
+&epwmss0 {
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default", "gpio", "sleep";
+       pinctrl-0 = <&i2c1_pins_default>;
+       pinctrl-1 = <&i2c1_pins_gpio>;
+       pinctrl-2 = <&i2c1_pins_sleep>;
+       clock-frequency = <400000>;
+       scl-gpios = <&gpio0 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio0 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+
+       sgtl5000: sgtl5000@a {
+               compatible = "fsl,sgtl5000";
+               reg =<0xa>;
+               clocks = <&clk12m>;
+               micbias-resistor-k-ohms = <4>;
+               micbias-voltage-m-volts = <2250>;
+               VDDA-supply = <&vdd_3v3>;
+               VDDIO-supply = <&vdd_3v3>;
+
+               #sound-dai-cells = <0>;
+       };
+
+       tda9988: tda9988@70 {
+               compatible = "nxp,tda998x";
+               reg =<0x70>;
+               audio-ports = <TDA998x_I2S 1>;
+
+               #sound-dai-cells = <0>;
+
+               ports {
+                       port@0 {
+                               hdmi_0: endpoint@0 {
+                                       remote-endpoint = <&lcdc_0>;
+                               };
+                       };
+               };
+       };
+};
+
+&lcdc {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&lcdc_pins_default>;
+       pinctrl-1 = <&lcdc_pins_sleep>;
+       blue-and-red-wiring = "straight";
+       status = "okay";
+
+       port {
+               lcdc_0: endpoint@0 {
+                       remote-endpoint = <&hdmi_0>;
+               };
+       };
+};
+
+&leds {
+       pinctrl-0 = <&led_mod_pins &leds_pins>;
+
+       led1: led1 {
+               label = "base:user1";
+               gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
+               color = <LED_COLOR_ID_GREEN>;
+               default-state = "off";
+       };
+
+       led2: led2 {
+               label = "base:user2";
+               gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
+               color = <LED_COLOR_ID_GREEN>;
+               default-state = "off";
+       };
+};
+
+&mac {
+       pinctrl-0 = <&eth_slave1_pins_default>, <&eth_slave2_pins_default>;
+       pinctrl-1 = <&eth_slave1_pins_sleep>, <&eth_slave2_pins_sleep>;
+       slaves = <2>;
+};
+
+&mcasp0 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mcasp0_pins_default>;
+       pinctrl-1 = <&mcasp0_pins_sleep>;
+       op-mode = <0>;
+       tdm-slots = <2>;
+       serial-dir = <0 1 2 0>;
+       tx-num-evt = <32>;
+       rx-num-evt = <32>;
+       status = "okay";
+
+       #sound-dai-cells = <0>;
+};
+
+&mmc1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mmc1_pins_default>;
+       pinctrl-1 = <&mmc1_pins_sleep>;
+       cd-gpios = <&gpio3 21 GPIO_ACTIVE_LOW>;
+       bus-width = <4>;
+       vmmc-supply = <&vdd_3v3>;
+       status = "okay";
+};
+
+&nand0 {
+       partition@0 {
+               label = "MLO";
+               reg = <0x00000 0x20000>;
+       };
+
+       partition@20000 {
+               label = "boot";
+               reg = <0x20000 0x80000>;
+       };
+};
+
+&tscadc {
+       status = "okay";
+
+       adc: adc {
+               ti,adc-channels = <0 1 2 3 4 5 6>;
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&uart1_pins_default>;
+       pinctrl-1 = <&uart1_pins_sleep>;
+       linux,rs485-enabled-at-boot-time;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&uart2_pins_default>;
+       pinctrl-1 = <&uart2_pins_sleep>;
+       status = "okay";
+};
+
+&usb {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb_pins>;
+};
+
+&usb0 {
+       dr_mode = "otg";
+};
+
+&usb0_phy {
+       vcc-supply = <&vdd_5v0>;
+};
+
+&usb1 {
+       dr_mode = "host";
+};
+
+&usb1_phy {
+       vcc-supply = <&vdd_5v0>;
+};
+
+&vdd_mod {
+       vin-supply = <&vdd_3v3>;
+};
+
+&am33xx_pinmux {
+       dcan0_pins_default: pinmux_dcan0_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART1_CTSN, PIN_OUTPUT, MUX_MODE2)                    /* dcan0_tx_mux2 */
+                       AM33XX_PADCONF(AM335X_PIN_UART1_RTSN, PIN_INPUT, MUX_MODE2)                     /* dcan0_rx_mux2 */
+               >;
+       };
+
+       dcan0_pins_sleep: pinmux_dcan0_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART1_CTSN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_UART1_RTSN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       dcan1_pins_default: pinmux_dcan1_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART0_CTSN, PIN_OUTPUT, MUX_MODE2)                    /* dcan1_tx_mux0 */
+                       AM33XX_PADCONF(AM335X_PIN_UART0_RTSN, PIN_INPUT, MUX_MODE2)                     /* dcan1_rx_mux0 */
+               >;
+       };
+
+       dcan1_pins_sleep: pinmux_dcan1_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART0_CTSN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_UART0_RTSN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       ehrpwm0_pins_default: pinmux_ehrpwm0_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_SCLK, PIN_OUTPUT, MUX_MODE3)                     /* ehrpwm0A_mux1 */
+               >;
+       };
+
+       ehrpwm0_pins_sleep: pinmux_ehrpwm0_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_SCLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       eth_slave2_pins_default: pinmux_eth_slave2_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A0, PIN_OUTPUT_PULLDOWN, MUX_MODE2)              /* rgmii2_tctl */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A1, PIN_INPUT_PULLDOWN, MUX_MODE2)               /* rgmii2_rctl */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A2, PIN_OUTPUT_PULLDOWN, MUX_MODE2)              /* rgmii2_td3 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A3, PIN_OUTPUT_PULLDOWN, MUX_MODE2)              /* rgmii2_td2 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A4, PIN_OUTPUT_PULLDOWN, MUX_MODE2)              /* rgmii2_td1 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A5, PIN_OUTPUT_PULLDOWN, MUX_MODE2)              /* rgmii2_td0 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A6, PIN_OUTPUT_PULLDOWN, MUX_MODE2)              /* rgmii2_tclk */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A7, PIN_INPUT_PULLDOWN, MUX_MODE2)               /* rgmii2_rclk */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A8, PIN_INPUT_PULLDOWN, MUX_MODE2)               /* rgmii2_rd3 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A9, PIN_INPUT_PULLDOWN, MUX_MODE2)               /* rgmii2_rd2 */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A10, PIN_INPUT_PULLDOWN, MUX_MODE2               /* rgmii2_rd1 */)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLDOWN, MUX_MODE2               /* rgmii2_rd0 */)
+               >;
+       };
+
+       eth_slave2_pins_sleep: pinmux_eth_slave2_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A2, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A3, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A4, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A5, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A6, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A7, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A8, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A9, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A10, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       gpio_buttons_pins: pinmux_gpio_buttons_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MII1_COL, PIN_INPUT_PULLDOWN, MUX_MODE7)              /* gpio3[0] */
+                       AM33XX_PADCONF(AM335X_PIN_RMII1_REF_CLK, PIN_INPUT, MUX_MODE7)                  /* gpio0[29] */
+               >;
+       };
+
+       i2c1_pins_default: pinmux_i2c1_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_D1, PIN_INPUT | SLEWCTRL_FAST, MUX_MODE2)        /* I2C1_SDA_mux3 */
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_CS0, PIN_INPUT | SLEWCTRL_FAST, MUX_MODE2)       /* I2C1_SCL_mux3 */
+               >;
+       };
+
+       i2c1_pins_gpio: pinmux_i2c1_pins_gpio {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_D1, PIN_INPUT, MUX_MODE7)                        /* gpio0[4] */
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_CS0, PIN_INPUT, MUX_MODE7)                       /* gpio0[5] */
+               >;
+       };
+
+       i2c1_pins_sleep: pinmux_i2c1_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_D1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_CS0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       lcdc_pins_default: pinmux_lcdc_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data0 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data1 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data2 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data3 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data4 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data5 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data6 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data7 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data8 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)                     /* lcd_data9 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)                    /* lcd_data10 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)                    /* lcd_data11 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)                    /* lcd_data12 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)                    /* lcd_data13 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)                    /* lcd_data14 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)                    /* lcd_data15 */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT, MUX_MODE0)                     /* lcd_vsync */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT, MUX_MODE0)                     /* lcd_hsync */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT, MUX_MODE0)                      /* lcd_pclk */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT, MUX_MODE0)                /* lcd_ac_bias_en */
+               >;
+       };
+
+       lcdc_pins_sleep: pinmux_lcdc_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PULL_DISABLE, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       leds_pins: pinmux_leds_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD11, PIN_OUTPUT, MUX_MODE7)                     /* gpio0[27] */
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_D0, PIN_OUTPUT, MUX_MODE7)                       /* gpio0[3] */
+               >;
+       };
+
+       mcasp0_pins_default: pinmux_mcasp0_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_INPUT_PULLDOWN, MUX_MODE0)          /* mcasp0_aclkx_mux0 */
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_INPUT_PULLDOWN, MUX_MODE0)            /* mcasp0_fsx_mux0 */
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_INPUT_PULLDOWN, MUX_MODE2)         /* mcasp0_axr2_mux0 */
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AXR1, PIN_INPUT_PULLDOWN, MUX_MODE0)           /* mcasp0_axr1_mux0 */
+               >;
+       };
+
+       mcasp0_pins_sleep: pinmux_mcasp0_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AXR1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       mmc1_pins_default: pinmux_mmc1_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_DAT3, PIN_INPUT_PULLUP, MUX_MODE0)               /* mmc0_dat3 */
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_DAT2, PIN_INPUT_PULLUP, MUX_MODE0)               /* mmc0_dat2 */
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_DAT1, PIN_INPUT_PULLUP, MUX_MODE0)               /* mmc0_dat1 */
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_DAT0, PIN_INPUT_PULLUP, MUX_MODE0)               /* mmc0_dat0 */
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_CLK, PIN_INPUT_PULLUP, MUX_MODE0)                /* mmc0_clk */
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_CMD, PIN_INPUT_PULLUP, MUX_MODE0)                /* mmc0_cmd */
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_INPUT_PULLUP, MUX_MODE7)           /* gpio3[21] */
+               >;
+       };
+
+       mmc1_pins_sleep: pinmux_mmc1_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_DAT3, PIN_INPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_DAT2, PIN_INPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_DAT1, PIN_INPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_DAT0, PIN_INPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_CLK, PIN_INPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_MMC0_CMD, PIN_INPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       uart0_pins: pinmux_uart0_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART0_RXD, PIN_INPUT_PULLUP, MUX_MODE0)               /* uart0_rxd */
+                       AM33XX_PADCONF(AM335X_PIN_UART0_TXD, PIN_OUTPUT_PULLDOWN, MUX_MODE0)            /* uart0_txd */
+               >;
+       };
+
+       uart1_pins_default: pinmux_uart1_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART1_RXD, PIN_INPUT_PULLUP, MUX_MODE0)               /* uart1_rxd */
+                       AM33XX_PADCONF(AM335X_PIN_UART1_TXD, PIN_OUTPUT_PULLDOWN, MUX_MODE0)            /* uart1_txd */
+               >;
+       };
+
+       uart1_pins_sleep: pinmux_uart1_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART1_RXD, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_UART1_TXD, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       uart2_pins_default: pinmux_uart2_pins_default {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MII1_CRS, PIN_INPUT, MUX_MODE6)                       /* uart2_rxd_mux1 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_ER, PIN_OUTPUT, MUX_MODE6)                    /* uart2_txd_mux1 */
+               >;
+       };
+
+       uart2_pins_sleep: pinmux_uart2_pins_sleep {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MII1_CRS, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_ER, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       usb_pins: pinmux_usb_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_USB0_DRVVBUS, PIN_OUTPUT_PULLDOWN, MUX_MODE0)         /* USB0_DRVVBUS */
+                       AM33XX_PADCONF(AM335X_PIN_USB1_DRVVBUS, PIN_OUTPUT_PULLDOWN, MUX_MODE0)         /* USB1_DRVVBUS */
+               >;
+       };
+};
index 78088506d25b0e97237cdcdc043e208e152152e4..1fb22088caebbc1eb5925752d726061ce88aa5f1 100644 (file)
                                        phys = <&phy_gmii_sel 2 1>;
                                };
                        };
+
+                       mac_sw: switch@0 {
+                               compatible = "ti,am335x-cpsw-switch", "ti,cpsw-switch";
+                               reg = <0x0 0x4000>;
+                               ranges = <0 0 0x4000>;
+                               clocks = <&cpsw_125mhz_gclk>;
+                               clock-names = "fck";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               syscon = <&scm_conf>;
+                               status = "disabled";
+
+                               interrupts = <40 41 42 43>;
+                               interrupt-names = "rx_thresh", "rx", "tx", "misc";
+
+                               ethernet-ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       cpsw_port1: port@1 {
+                                               reg = <1>;
+                                               label = "port1";
+                                               mac-address = [ 00 00 00 00 00 00 ];
+                                               phys = <&phy_gmii_sel 1 1>;
+                                       };
+
+                                       cpsw_port2: port@2 {
+                                               reg = <2>;
+                                               label = "port2";
+                                               mac-address = [ 00 00 00 00 00 00 ];
+                                               phys = <&phy_gmii_sel 2 1>;
+                                       };
+                               };
+
+                               davinci_mdio_sw: mdio@1000 {
+                                       compatible = "ti,cpsw-mdio","ti,davinci_mdio";
+                                       clocks = <&cpsw_125mhz_gclk>;
+                                       clock-names = "fck";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       bus_freq = <1000000>;
+                                       reg = <0x1000 0x100>;
+                               };
+
+                               cpts {
+                                       clocks = <&cpsw_cpts_rft_clk>;
+                                       clock-names = "cpts";
+                               };
+                       };
                };
 
                target-module@180000 {                  /* 0x4a180000, ap 5 10.0 */
index 37758761cd884b43821c431211b85dd24e05fd1d..1b8f3a28af0595bd880af77fca826052a44403df 100644 (file)
@@ -39,3 +39,7 @@
 &m_can0 {
        status = "disabled";
 };
+
+&emif1 {
+       status = "okay";
+};
index 9ce513dd514b7a6f49ada7446db7c0dcd30f238e..c4b3750495da8cb484104b5a7c9816716ef68ee8 100644 (file)
 
        input@0 {
                reg = <0>;
-               atmel,wakeup-type = "low";
        };
 };
 
index 0e159f879c15e662c346d327b7c25fa0df534399..84e1180f3e89d2ece9bbf96b6a56b907a6ff79b8 100644 (file)
 
                                input@0 {
                                        reg = <0>;
-                                       atmel,wakeup-type = "low";
                                };
                        };
 
index a06700e53e4c3a09b3a3790435760b75df75419f..025a78310e3ab5d4f7c7cbd49e84cce64ce16bc9 100644 (file)
 
 &i2c0 {
        pinctrl-0 = <&pinctrl_i2c0_default>;
-       pinctrl-names = "default";
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       pinctrl-names = "default", "gpio";
+       sda-gpios = <&pioA PIN_PD21 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&pioA PIN_PD22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        status = "okay";
 };
 
 &i2c1 {
        dmas = <0>, <0>;
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       sda-gpios = <&pioA PIN_PD19 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&pioA PIN_PD20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        status = "okay";
 
        mcp16502@5b {
                bias-disable;
        };
 
+       pinctrl_i2c0_gpio: i2c0_gpio {
+               pinmux = <PIN_PD21__GPIO>,
+                        <PIN_PD22__GPIO>;
+               bias-disable;
+       };
+
        pinctrl_i2c1_default: i2c1_default {
                pinmux = <PIN_PD19__TWD1>,
                         <PIN_PD20__TWCK1>;
                bias-disable;
        };
 
+       pinctrl_i2c1_gpio: i2c1_gpio {
+               pinmux = <PIN_PD19__GPIO>,
+                        <PIN_PD20__GPIO>;
+               bias-disable;
+       };
+
        pinctrl_macb0_default: macb0_default {
                pinmux = <PIN_PB14__GTXCK>,
                         <PIN_PB15__GTXEN>,
index 6b38fa3f5568fbb76185da6cfb37ce7c7f4ee1a5..180a08765cb8523393730b746fc2b7e9be4134d0 100644 (file)
 
        input@0 {
                reg = <0>;
-               atmel,wakeup-type = "low";
        };
 };
 
index 6783cf16ff818ca8ea4c5e879c0b8840cb651e9f..46722a163184ec29a75068913a48aecf1a71b4e6 100644 (file)
 
        input@0 {
                reg = <0>;
-               atmel,wakeup-type = "low";
        };
 };
 
index c894c7c788a93ed0688d2b3ce9e61fd27a68a121..8de57d164acd3a1b1699e8138a0e0907045eb5fe 100644 (file)
 
                                input@0 {
                                        reg = <0>;
-                                       atmel,wakeup-type = "low";
                                };
                        };
 
index 058fae1b4a76ea49c91f06df489fb15edd89974b..4e7cf21f124c010af9ab8a27ba9ff076f22fb3a2 100644 (file)
 
                                input@0 {
                                        reg = <0>;
-                                       atmel,wakeup-type = "low";
                                };
                        };
 
index 6194857f8a02315c61c3586932c06e986cffa115..1114c592e461bbf3fa47b3151db3e56ff28a483c 100644 (file)
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                };
                        };
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
index 56fa951bc86f4aef987a448bb43ad43db0ef221a..c1d91424e658085d50a982d9c7abfeb2fed0ed3c 100644 (file)
                linux,usable-memory = <0x00000000 0x20000000>; /* 512 MB */
        };
 
-       leds {
+       led-controller {
                compatible = "pwm-leds";
                pinctrl-0 = <&ledpwm_pmux>;
                pinctrl-names = "default";
 
-               white {
+               led-1 {
                        label = "white";
                        pwms = <&pwm 0 600000 0>;
                        max-brightness = <255>;
                        linux,default-trigger = "default-on";
                };
 
-               red {
+               led-2 {
                        label = "red";
                        pwms = <&pwm 1 600000 0>;
                        max-brightness = <255>;
index 6f30d7eb3b4152175f6589875def72976b8f58a0..b2768f7a3185209b5d19babd3982af4299d8653e 100644 (file)
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                };
                        };
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <8>;
+                                       ngpios = <8>;
                                        reg = <0>;
                                };
                        };
index b6a0acac6836c523039775f73fbc729bf6cd1bee..598a46f96a8216692f05b40416ac9155602680e9 100644 (file)
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                };
                        };
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                };
                        };
index cad58f733bd6f7bd344c6f0340b8ebb6178e6fdb..6d2cca6b44883e59ad312a8ea3d40879cdcdbcc9 100644 (file)
                                regulator-name = "lp8733-ldo0";
                                regulator-min-microvolt = <3300000>;
                                regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
                        };
 
                        lp8733_ldo1_reg: ldo1 {
index 2f326151116b7a9ca06461536b3881d5b691aa8d..a09e7bd77fc7a60cecfdedf67bdfb37f1f09254f 100644 (file)
@@ -9,6 +9,13 @@
        compatible = "ti,dra762", "ti,dra7";
 
        ocp {
+               emif1: emif@4c000000 {
+                       compatible = "ti,emif-dra7xx";
+                       reg = <0x4c000000 0x200>;
+                       interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
                target-module@42c01900 {
                        compatible = "ti,sysc-dra7-mcan", "ti,sysc";
                        ranges = <0x0 0x42c00000 0x2000>;
        /* dra76x is not affected by i887 */
        max-frequency = <96000000>;
 };
+
+&cpu0_opp_table {
+       opp_plus@1800000000 {
+               opp-hz = /bits/ 64 <1800000000>;
+               opp-microvolt = <1250000 950000 1250000>,
+                               <1250000 950000 1250000>;
+               opp-supported-hw = <0xFF 0x08>;
+       };
+};
+
+&opp_supply_mpu {
+       ti,efuse-settings = <
+       /* uV   offset */
+       1060000 0x0
+       1160000 0x4
+       1210000 0x8
+       1250000 0xC
+       >;
+};
+
+&abb_mpu {
+       ti,abb_info = <
+       /*uV            ABB     efuse   rbb_m fbb_m     vset_m*/
+       1060000         0       0x0     0 0x02000000 0x01F00000
+       1160000         0       0x4     0 0x02000000 0x01F00000
+       1210000         0       0x8     0 0x02000000 0x01F00000
+       1250000         0       0xC     0 0x02000000 0x01F00000
+       >;
+};
index f75806d0cd47c2d533d515485f4fe4b04571da25..a4423ff0df39264be264865875a1356203617381 100644 (file)
        };
 };
 
+&cpu_thermal {
+       polling-delay = <10000>; /* milliseconds */
+};
+
+&cpu_alert0 {
+        temperature = <80000>; /* millicelsius */
+};
+
+&cpu0 {
+        /*
+        * Note that the 1.2GiHz mode is enabled for all SoC variants for
+        * the Motorola Android Linux v3.0.8 based kernel.
+        */
+        operating-points = <
+               /* kHz    uV */
+               300000  1025000
+               600000  1200000
+               800000  1313000
+               1008000 1375000
+               1200000 1375000
+        >;
+};
+
 &dss {
        status = "okay";
 };
diff --git a/arch/arm/boot/dts/mstar-infinity-breadbee-common.dtsi b/arch/arm/boot/dts/mstar-infinity-breadbee-common.dtsi
new file mode 100644 (file)
index 0000000..507ff2f
--- /dev/null
@@ -0,0 +1,49 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2020 thingy.jp.
+ * Author: Daniel Palmer <daniel@thingy.jp>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       vcc_core: fixedregulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_core";
+               regulator-min-microvolt = <1000000>;
+               regulator-max-microvolt = <1000000>;
+               regulator-boot-on;
+       };
+
+       vcc_dram: fixedregulator@1 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_dram";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+       };
+
+       vcc_io: fixedregulator@2 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_io";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               red {
+                       gpios = <&gpio MSC313_GPIO_SR_IO16 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "activity";
+               };
+               yellow {
+                       gpios = <&gpio MSC313_GPIO_SR_IO17 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vcc_core>;
+};
index f9db2ff86f2d69f5f25fde47328d17f5ab1e8d75..db4910dcb8a7050d5e5121ad4da3b4fc9275b058 100644 (file)
@@ -6,6 +6,7 @@
 
 /dts-v1/;
 #include "mstar-infinity-msc313.dtsi"
+#include "mstar-infinity-breadbee-common.dtsi"
 
 / {
        model = "BreadBee Crust";
index f0eda80a95cc161c8ee0e3326b845b7c8be317c5..e64ca4ce183010f5ce140f6a01707d0b9fd40a49 100644 (file)
@@ -6,6 +6,7 @@
 
 /dts-v1/;
 #include "mstar-infinity3-msc313e.dtsi"
+#include "mstar-infinity-breadbee-common.dtsi"
 
 / {
        model = "BreadBee";
index 93ffeddada1eb1a9c26c4d4da6dda5ff653e4239..b9fd113979f25e875966bea0077c7b3d0cab2fed 100644 (file)
                linux,axis = <REL_X>;
                rotary-encoder,relative-axis;
        };
+
+       speaker_amp: speaker-amplifier {
+               compatible = "simple-audio-amplifier";
+               enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;     /* gpio_129 */
+               sound-name-prefix = "Speaker Amp";
+               VCC-supply = <&vcc1v8>;
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "Misto Speaker";
+               simple-audio-card,widgets =
+                       "Speaker", "Speaker";
+               simple-audio-card,routing =
+                       "Speaker Amp INL", "HPL",
+                       "Speaker Amp INR", "HPR",
+                       "Speaker", "Speaker Amp OUTL",
+                       "Speaker", "Speaker Amp OUTR";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&sound_master>;
+               simple-audio-card,frame-master = <&sound_master>;
+               simple-audio-card,aux-devs = <&speaker_amp>;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcbsp2>;
+               };
+
+               sound_master: simple-audio-card,codec {
+                       sound-dai = <&codec0>;
+                       system-clock-frequency = <19200000>;
+               };
+       };
 };
 
 &i2c1 {
        };
 };
 
+&mcbsp2 {
+       status = "okay";
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcbsp2_pins>;
+};
+
 &i2c2 {
        clock-frequency = <400000>;
 
        };
 };
 
+&i2c3 {
+       clock-frequency = <400000>;
+
+       codec0: codec@18 {
+               #sound-dai-cells = <0>;
+               compatible = "ti,tlv320aic32x4";
+               reg = <0x18>;
+               clocks = <&sys_clkout1>;
+               clock-names = "mclk";
+               ldoin-supply = <&vcc1v8>;
+               iov-supply = <&vcc1v8>;
+               reset-gpios = <&gpio3 10 GPIO_ACTIVE_LOW>;      /* gpio_74 */
+       };
+};
+
+
 #include "tps65910.dtsi"
 
 &omap3_pmx_core {
                pinctrl-single,pins = <
                        OMAP3_CORE1_IOPAD(0x20dc, PIN_INPUT | MUX_MODE4)        /* dss_data0.gpio_70 */
                        OMAP3_CORE1_IOPAD(0x20e0, PIN_INPUT | MUX_MODE4)        /* dss_data2.gpio_72 */
+                       OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE4)       /* dss_data4.gpio_74 */
+                       OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT_PULLDOWN | MUX_MODE4)      /* dss_data15.gpio_85 */
+                       OMAP3_CORE1_IOPAD(0x2a1a, PIN_OUTPUT | MUX_MODE0)       /* sys_clkout1.sys_clkout1 */
                >;
        };
 
                        OMAP3_CORE1_IOPAD(0x216a, PIN_INPUT_PULLUP | MUX_MODE0)         /* sdmmc2_dat7.sdmmc2_dat7 */
                >;
        };
+
+       mcbsp2_pins: pinmux_mcbsp2_pins {
+               pinctrl-single,pins = <
+                       OMAP3_CORE1_IOPAD(0x213c, PIN_INPUT | MUX_MODE0)        /* mcbsp2_fsx.mcbsp2_fsx */
+                       OMAP3_CORE1_IOPAD(0x213e, PIN_INPUT | MUX_MODE0)        /* mcbsp2_clkx.mcbsp2_clkx */
+                       OMAP3_CORE1_IOPAD(0x2140, PIN_INPUT | MUX_MODE0)        /* mcbsp2_dr.mcbsp2.dr */
+                       OMAP3_CORE1_IOPAD(0x2142, PIN_OUTPUT | MUX_MODE0)       /* mcbsp2_dx.mcbsp2_dx */
+               >;
+       };
 };
 
 &omap3_pmx_core2 {
index c8745bc800f717530fccdf2da9b42fd9b8816ff9..cbe9ce73917099b55e5651790d5d5a63c2f97466 100644 (file)
                };
 
                twl_power: power {
-                       compatible = "ti,twl4030-power";
-                       ti,use_poweroff;
+                       compatible = "ti,twl4030-power-idle";
+                       ti,system-power-controller;
                };
        };
 };
index 5de2be9bbe6f8256d1bc4272afbcd7498ad8c229..99f5585097a1be9396020a255d7b0c253dc3ae1a 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Common device tree for IGEP boards based on AM/DM37x
  *
- * Copyright (C) 2012 Javier Martinez Canillas <javier@osg.samsung.com>
+ * Copyright (C) 2012 Javier Martinez Canillas <javier@dowhile0.org>
  * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
  */
 /dts-v1/;
index af8aa5f0feb757ed521e31c6f8a4fe4d9fb806b6..73d8f471b9ec9f034693cbaeb249d8308feb19e0 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Common Device Tree Source for IGEPv2
  *
- * Copyright (C) 2014 Javier Martinez Canillas <javier@osg.samsung.com>
+ * Copyright (C) 2014 Javier Martinez Canillas <javier@dowhile0.org>
  * Copyright (C) 2014 Enric Balletbo i Serra <eballetbo@gmail.com>
  */
 
index 567232584f084e48060f2bae991ebc767faa58a9..9dca5bfc87ab2434992cde134601bf6102e470a4 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Device Tree Source for IGEPv2 Rev. F (TI OMAP AM/DM37x)
  *
- * Copyright (C) 2012 Javier Martinez Canillas <javier@osg.samsung.com>
+ * Copyright (C) Javier Martinez Canillas <javier@dowhile0.org>
  * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
  */
 
index e341535a7162cab7333f9f3f487f47c3f3cf3e84..c6f863bc03adf3870b675b1398d9d653fb4d79fa 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Device Tree Source for IGEPv2 Rev. C (TI OMAP AM/DM37x)
  *
- * Copyright (C) 2012 Javier Martinez Canillas <javier@osg.samsung.com>
+ * Copyright (C) 2012 Javier Martinez Canillas <javier@dowhile0.org>
  * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
  */
 
index 71b0ae807ecd7c6761bf8da519f3cd248b81c3d1..742e3e14706331b6e25b5a9f66ff3739199f115c 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Common Device Tree Source for IGEP COM MODULE
  *
- * Copyright (C) 2014 Javier Martinez Canillas <javier@osg.samsung.com>
+ * Copyright (C) 2014 Javier Martinez Canillas <javier@dowhile0.org>
  * Copyright (C) 2014 Enric Balletbo i Serra <eballetbo@gmail.com>
  */
 
index df6ba121983080e55df68520d598924c4a95e75c..8e9c12cf51a7b04b9a6d0c3589ff255b0f60e184 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Device Tree Source for IGEP COM MODULE Rev. G (TI OMAP AM/DM37x)
  *
- * Copyright (C) 2014 Javier Martinez Canillas <javier@osg.samsung.com>
+ * Copyright (C) 2014 Javier Martinez Canillas <javier@dowhile0.org>
  * Copyright (C) 2014 Enric Balletbo i Serra <eballetbo@gmail.com>
  */
 
index 32f31035daa26fe90c81b6b7a8de87bf02c3ffa8..5188f96f431e703413ab9def4eb39d8ab9c1c476 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Device Tree Source for IGEP COM MODULE Rev. E (TI OMAP AM/DM37x)
  *
- * Copyright (C) 2012 Javier Martinez Canillas <javier@osg.samsung.com>
+ * Copyright (C) 2012 Javier Martinez Canillas <javier@dowhile0.org>
  * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
  */
 
index 05fe5ed127b01efc9750942d1ea48ab54c124eca..20844dbc002e314709bee62bf00a1104840086d6 100644 (file)
@@ -72,7 +72,6 @@
                                         <1375000 1375000 1375000>;
                        /* only on am/dm37x with speed-binned bit set */
                        opp-supported-hw = <0xffffffff 2>;
-                       turbo-mode;
                };
        };
 
index cb309743de5dae63227199b8ceb75f191491ede6..8466161197aef8799ab6bd1ef2aa69695fabd917 100644 (file)
        };
 
        ocp {
+               /* 4430 has only gpio_86 tshut and no talert interrupt */
                bandgap: bandgap@4a002260 {
                        reg = <0x4a002260 0x4
                               0x4a00232C 0x4>;
                        compatible = "ti,omap4430-bandgap";
+                       gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
 
                        #thermal-sensor-cells = <0>;
                };
 /include/ "omap443x-clocks.dtsi"
 
 /*
- * Use dpll_per for sgx at 153.6MHz like droid4 stock v3.0.8 Android kernel
+ * Use dpll_per for sgx at 307.2MHz like droid4 stock v3.0.8 Android kernel
  */
 &sgx_module {
        assigned-clocks = <&l3_gfx_clkctrl OMAP4_GPU_CLKCTRL 24>,
                          <&dpll_per_m7x2_ck>;
-       assigned-clock-rates = <0>, <153600000>;
+       assigned-clock-rates = <0>, <307200000>;
        assigned-clock-parents = <&dpll_per_m7x2_ck>;
 };
index 0013ec3463c46569750d52d8f0ce6867285d664a..a574ea91d9d3f1894b82e508018bdc338b8dfa38 100644 (file)
                #size-cells = <0>;
                enable-method = "altr,socfpga-a10-smp";
 
-               cpu@0 {
+               cpu0: cpu@0 {
                        compatible = "arm,cortex-a9";
                        device_type = "cpu";
                        reg = <0>;
                        next-level-cache = <&L2>;
                };
-               cpu@1 {
+               cpu1: cpu@1 {
                        compatible = "arm,cortex-a9";
                        device_type = "cpu";
                        reg = <1>;
                };
        };
 
+       pmu: pmu@ff111000 {
+               compatible = "arm,cortex-a9-pmu";
+               interrupt-parent = <&intc>;
+               interrupts = <0 124 4>, <0 125 4>;
+               interrupt-affinity = <&cpu0>, <&cpu1>;
+               reg = <0xff111000 0x1000>,
+                     <0xff113000 0x1000>;
+       };
+
        intc: intc@ffffd000 {
                compatible = "arm,cortex-a9-gic";
                #interrupt-cells = <3>;
index 4c16736ea789c9ce6ad4ca3609a53c1cbfc4dcf3..4fd09997a2b91674a4a92873882f7e62caa3d231 100644 (file)
 
                                ab8500_temp {
                                        compatible = "stericsson,abx500-temp";
+                                       interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "ABX500_TEMP_WARM";
                                        io-channels = <&gpadc 0x06>,
                                                      <&gpadc 0x07>;
-                                       io-channel-name = "aux1", "aux2";
+                                       io-channel-names = "aux1", "aux2";
                                };
 
                                ab8500_battery: ab8500_battery {
 
                                ab8500_fg {
                                        compatible = "stericsson,ab8500-fg";
-                                       battery    = <&ab8500_battery>;
+                                       interrupts = <24 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <8 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <28 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <27 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <26 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "NCONV_ACCU",
+                                                         "BATT_OVV",
+                                                         "LOW_BAT_F",
+                                                         "CC_INT_CALIB",
+                                                         "CCEOC";
+                                       battery = <&ab8500_battery>;
                                        io-channels = <&gpadc 0x08>;
-                                       io-channel-name = "main_bat_v";
+                                       io-channel-names = "main_bat_v";
                                };
 
                                ab8500_btemp {
                                        compatible = "stericsson,ab8500-btemp";
-                                       battery    = <&ab8500_battery>;
+                                       interrupts = <20 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <80 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <83 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <81 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <82 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "BAT_CTRL_INDB",
+                                                         "BTEMP_LOW",
+                                                         "BTEMP_HIGH",
+                                                         "BTEMP_LOW_MEDIUM",
+                                                         "BTEMP_MEDIUM_HIGH";
+                                       battery = <&ab8500_battery>;
                                        io-channels = <&gpadc 0x02>,
                                                      <&gpadc 0x01>;
-                                       io-channel-name = "btemp_ball",
+                                       io-channel-names = "btemp_ball",
                                                        "bat_ctrl";
                                };
 
                                ab8500_charger {
-                                       compatible      = "stericsson,ab8500-charger";
+                                       compatible = "stericsson,ab8500-charger";
+                                       interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <11 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <0 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <107 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <106 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <14 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <15 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <79 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <105 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <104 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <89 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <22 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <21 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <16 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "MAIN_CH_UNPLUG_DET",
+                                                         "MAIN_CHARGE_PLUG_DET",
+                                                         "MAIN_EXT_CH_NOT_OK",
+                                                         "MAIN_CH_TH_PROT_R",
+                                                         "MAIN_CH_TH_PROT_F",
+                                                         "VBUS_DET_F",
+                                                         "VBUS_DET_R",
+                                                         "USB_LINK_STATUS",
+                                                         "USB_CH_TH_PROT_R",
+                                                         "USB_CH_TH_PROT_F",
+                                                         "USB_CHARGER_NOT_OKR",
+                                                         "VBUS_OVV",
+                                                         "CH_WD_EXP",
+                                                         "VBUS_CH_DROP_END";
                                        battery         = <&ab8500_battery>;
                                        vddadc-supply   = <&ab8500_ldo_tvout_reg>;
                                        io-channels = <&gpadc 0x03>,
                                                      <&gpadc 0x0a>,
                                                      <&gpadc 0x09>,
                                                      <&gpadc 0x0b>;
-                                       io-channel-name = "main_charger_v",
+                                       io-channel-names = "main_charger_v",
                                                        "main_charger_c",
                                                        "vbus_v",
                                                        "usb_charger_c";
index c72aa250bf6fe9144389197401bbd2cb5668fbd3..cc045b2fc217df00d35490e67db2345e7272cf03 100644 (file)
@@ -13,7 +13,8 @@
                              <&gpadc 0x08>, /* Main battery voltage */
                              <&gpadc 0x09>, /* VBUS */
                              <&gpadc 0x0b>, /* Charger current */
-                             <&gpadc 0x0c>; /* Backup battery voltage */
+                             <&gpadc 0x0c>, /* Backup battery voltage */
+                             <&gpadc 0x0d>; /* Die temperature */
        };
 
        soc {
@@ -45,9 +46,8 @@
 
                                gpadc: ab8500-gpadc {
                                        compatible = "stericsson,ab8500-gpadc";
-                                       interrupts = <32 IRQ_TYPE_LEVEL_HIGH
-                                                     39 IRQ_TYPE_LEVEL_HIGH>;
-                                       interrupt-names = "HW_CONV_END", "SW_CONV_END";
+                                       interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "SW_CONV_END";
                                        vddadc-supply = <&ab8500_ldo_adc_reg>;
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        bk_bat_v: channel@0c {
                                                reg = <0x0c>;
                                        };
+                                       die_temp: channel@0d {
+                                               reg = <0x0d>;
+                                       };
                                        usb_id: channel@0e {
                                                reg = <0x0e>;
                                        };
                                };
 
                                ab8500_battery: ab8500_battery {
-                                       status = "disabled";
+                                       stericsson,battery-type = "LIPO";
                                        thermistor-on-batctrl;
                                };
 
                                ab8500_fg {
                                        status = "disabled";
                                        compatible = "stericsson,ab8500-fg";
+                                       interrupts = <24 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <8 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <28 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <27 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <26 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "NCONV_ACCU",
+                                                         "BATT_OVV",
+                                                         "LOW_BAT_F",
+                                                         "CC_INT_CALIB",
+                                                         "CCEOC";
                                        battery = <&ab8500_battery>;
                                        io-channels = <&gpadc 0x08>;
-                                       io-channel-name = "main_bat_v";
+                                       io-channel-names = "main_bat_v";
                                };
 
                                ab8500_btemp {
                                        status = "disabled";
                                        compatible = "stericsson,ab8500-btemp";
+                                       interrupts = <20 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <80 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <83 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <81 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <82 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "BAT_CTRL_INDB",
+                                                         "BTEMP_LOW",
+                                                         "BTEMP_HIGH",
+                                                         "BTEMP_LOW_MEDIUM",
+                                                         "BTEMP_MEDIUM_HIGH";
                                        battery = <&ab8500_battery>;
                                        io-channels = <&gpadc 0x02>,
                                                      <&gpadc 0x01>;
-                                       io-channel-name = "btemp_ball",
+                                       io-channel-names = "btemp_ball",
                                                          "bat_ctrl";
                                };
 
                                ab8500_charger {
                                        status = "disabled";
                                        compatible = "stericsson,ab8500-charger";
+                                       interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <11 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <0 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <107 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <106 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <14 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <15 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <79 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <105 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <104 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <89 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <22 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <21 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <16 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "MAIN_CH_UNPLUG_DET",
+                                                         "MAIN_CHARGE_PLUG_DET",
+                                                         "MAIN_EXT_CH_NOT_OK",
+                                                         "MAIN_CH_TH_PROT_R",
+                                                         "MAIN_CH_TH_PROT_F",
+                                                         "VBUS_DET_F",
+                                                         "VBUS_DET_R",
+                                                         "USB_LINK_STATUS",
+                                                         "USB_CH_TH_PROT_R",
+                                                         "USB_CH_TH_PROT_F",
+                                                         "USB_CHARGER_NOT_OKR",
+                                                         "VBUS_OVV",
+                                                         "CH_WD_EXP",
+                                                         "VBUS_CH_DROP_END";
                                        battery = <&ab8500_battery>;
                                        vddadc-supply = <&ab8500_ldo_adc_reg>;
                                        io-channels = <&gpadc 0x09>,
                                                      <&gpadc 0x0b>;
-                                       io-channel-name = "vbus_v",
+                                       io-channel-names = "vbus_v",
                                                          "usb_charger_c";
                                };
 
index 404b9c4a5feee3ebd55fc208dd76d0712c54383e..68607e4ad80cb464a1b738ad4cdce82ab6f693d2 100644 (file)
                        status = "disabled";
                };
 
-               sdi0_per1@80126000 {
+               mmc@80126000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80126000 0x1000>;
                        interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
-               sdi1_per2@80118000 {
+               mmc@80118000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80118000 0x1000>;
                        interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
-               sdi2_per3@80005000 {
+               mmc@80005000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80005000 0x1000>;
                        interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
-               sdi3_per2@80119000 {
+               mmc@80119000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80119000 0x1000>;
                        interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
-               sdi4_per2@80114000 {
+               mmc@80114000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80114000 0x1000>;
                        interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
-               sdi5_per3@80008000 {
+               mmc@80008000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80008000 0x1000>;
                        interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
index ff47cbf6ed3b7c6b66298c7022f9f897f53de852..83b179692dff7b4082459e544c5fb73ed2d8e9ac 100644 (file)
                        status = "okay";
                };
 
-               /* ST6G3244ME level translator for 1.8/2.9 V */
-               vmmci: regulator-gpio {
-                       compatible = "regulator-gpio";
-
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <2900000>;
-                       regulator-name = "mmci-reg";
-                       regulator-type = "voltage";
-
-                       startup-delay-us = <100>;
-
-                       states = <1800000 0x1
-                                 2900000 0x0>;
-               };
-
                // External Micro SD slot
-               sdi0_per1@80126000 {
+               mmc@80126000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        bus-width = <4>;
                };
 
                // WLAN SDIO channel
-               sdi1_per2@80118000 {
+               mmc@80118000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        bus-width = <4>;
                };
 
                // PoP:ed eMMC
-               sdi2_per3@80005000 {
+               mmc@80005000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        bus-width = <8>;
                };
 
                // On-board eMMC
-               sdi4_per2@80114000 {
+               mmc@80114000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        bus-width = <8>;
index f8c0c1e6aa04bc5aa461b060683dba64373db47b..a036a03f67187eabf8318acd53de12b7cd529127 100644 (file)
        model = "ST-Ericsson HREF520 and TVK1281618 UIB";
        compatible = "st-ericsson,href520", "st-ericsson,u8500";
 
-       soc {
-               vmmci: regulator-gpio {
-                       gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
-                       enable-gpio = <&gpio2 14 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
+
+       /* ST6G3244ME level translator for 1.8/2.9 V */
+       vmmci: regulator-gpio {
+               compatible = "regulator-gpio";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2900000>;
+               regulator-name = "mmci-reg";
+               regulator-type = "voltage";
+
+               startup-delay-us = <100>;
+
+               states = <1800000 0x1
+                         2900000 0x0>;
+
+               gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
+               enable-gpio = <&gpio2 14 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&vmmci_default_mode>;
+       };
+};
+
+&pinctrl {
+       vmmci {
+               vmmci_default_mode: vmmc_default {
+                       /* VMMCI level-shifter enable */
+                       default_href520_cfg1 {
+                               pins = "GPIO78_F4";
+                               ste,config = <&gpio_out_hi>;
+                       };
+                       /* VMMCI level-shifter voltage select */
+                       default_href520_cfg2 {
+                               pins = "GPIO5_AG6";
+                               ste,config = <&gpio_out_hi>;
+                       };
                };
        };
 };
index 8ce6b723abf2480b10d2fda4d4c94ace510a738a..dfc933214c1a2be525d3e948010f9c9665c2c48f 100644 (file)
        model = "ST-Ericsson HREF (pre-v60) and ST UIB";
        compatible = "st-ericsson,mop500", "st-ericsson,u8500";
 
+       /* ST6G3244ME level translator for 1.8/2.9 V */
+       vmmci: regulator-gpio {
+               compatible = "regulator-gpio";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2900000>;
+               regulator-name = "mmci-reg";
+               regulator-type = "voltage";
+
+               startup-delay-us = <100>;
+
+               states = <1800000 0x1
+                         2900000 0x0>;
+
+               gpios = <&tc3589x_gpio 18 GPIO_ACTIVE_HIGH>;
+               enable-gpio = <&tc3589x_gpio 17 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        soc {
                /* Reset line for the BU21013 touchscreen */
                i2c@80110000 {
index 142f5475521f806742dd1fdfbbbbcd5a452f7f32..4e6e4439dcffc26920464b417db16a2ec49cde91 100644 (file)
 / {
        model = "ST-Ericsson HREF (pre-v60) and TVK1281618 UIB";
        compatible = "st-ericsson,mop500", "st-ericsson,u8500";
+
+       /* ST6G3244ME level translator for 1.8/2.9 V */
+       vmmci: regulator-gpio {
+               compatible = "regulator-gpio";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2900000>;
+               regulator-name = "mmci-reg";
+               regulator-type = "voltage";
+
+               startup-delay-us = <100>;
+
+               states = <1800000 0x1
+                         2900000 0x0>;
+
+               gpios = <&tc3589x_gpio 18 GPIO_ACTIVE_HIGH>;
+               enable-gpio = <&tc3589x_gpio 17 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
 };
index 115495de8612810f4bfd6526a08a91bb34e3dc70..29b67abfc461af97f7a1e3b365e7035ba830802f 100644 (file)
                };
 
                // External Micro SD slot
-               sdi0_per1@80126000 {
+               mmc@80126000 {
                        cd-gpios  = <&tc3589x_gpio 3 GPIO_ACTIVE_HIGH>;
                };
 
-               vmmci: regulator-gpio {
-                       gpios = <&tc3589x_gpio 18 GPIO_ACTIVE_HIGH>;
-                       enable-gpio = <&tc3589x_gpio 17 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-               };
-
                pinctrl {
                        /* Set this up using hogs */
                        pinctrl-names = "default";
index 1316886e6bcb65583cd0870bc4b927e03b6fcce6..52c56ed17ae6882d6302f399b3dbd32f754d5f7f 100644 (file)
        model = "ST-Ericsson HREF (v60+) and ST UIB";
        compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
 
+       /* ST6G3244ME level translator for 1.8/2.9 V */
+       vmmci: regulator-gpio {
+               compatible = "regulator-gpio";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2900000>;
+               regulator-name = "mmci-reg";
+               regulator-type = "voltage";
+
+               startup-delay-us = <100>;
+
+               states = <1800000 0x1
+                         2900000 0x0>;
+
+               gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
+               enable-gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&vmmci_default_mode>;
+       };
+
        soc {
                /* Reset line for the BU21013 touchscreen */
                i2c@80110000 {
                };
        };
 };
+
+&pinctrl {
+       vmmci {
+               vmmci_default_mode: vmmc_default {
+                       /* VMMCI level-shifter enable */
+                       default_hrefv60_cfg2 {
+                               pins = "GPIO169_D22";
+                               ste,config = <&gpio_out_hi>;
+                       };
+                       /* VMMCI level-shifter voltage select */
+                       default_hrefv60_cfg3 {
+                               pins = "GPIO5_AG6";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+};
index 5d4b8245f02c089ad02f0e5b3633cea366dd0e48..9c2d2ee6d6d8d3699d91fd745b184a25153ab79b 100644 (file)
 / {
        model = "ST-Ericsson HREF (v60+) and TVK1281618 UIB";
        compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
+
+       /* ST6G3244ME level translator for 1.8/2.9 V */
+       vmmci: regulator-gpio {
+               compatible = "regulator-gpio";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2900000>;
+               regulator-name = "mmci-reg";
+               regulator-type = "voltage";
+
+               startup-delay-us = <100>;
+
+               states = <1800000 0x1
+                         2900000 0x0>;
+
+               gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
+               enable-gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&vmmci_default_mode>;
+       };
+};
+
+&pinctrl {
+       vmmci {
+               vmmci_default_mode: vmmc_default {
+                       /* VMMCI level-shifter enable */
+                       default_hrefv60_cfg2 {
+                               pins = "GPIO169_D22";
+                               ste,config = <&gpio_out_hi>;
+                       };
+                       /* VMMCI level-shifter voltage select */
+                       default_hrefv60_cfg3 {
+                               pins = "GPIO5_AG6";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
 };
index 05b4fbbba57f5935e4502e06d74b8480c9dc1ef3..8f504edefd3f24e7abf9c19d34430a82489a0b5f 100644 (file)
        model = "ST-Ericsson HREF (v60+) platform with Device Tree";
        compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
 
+       thermal-zones {
+               chassis-thermal {
+                       /* Poll every 20 seconds */
+                       polling-delay = <20000>;
+                       /* Poll every 2nd second when cooling */
+                       polling-delay-passive = <2000>;
+
+                       thermal-sensors = <&therm1>, <&therm2>;
+
+                       /* Tripping points made from rough guess about operating conditions */
+                       trips {
+                               chassis_alert: chassis-alert {
+                                       /* At 50 degrees take down the CPU frequency */
+                                       temperature = <50000>;
+                                       hysteresis = <3000>;
+                                       type = "active";
+                               };
+                               chassis_crit: chassis-crit {
+                                       /* Just shut down at 70 degrees */
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       /* Push down the operating frequency of the SoC when it gets hot */
+                       cooling-maps {
+                               map0 {
+                                       trip = <&chassis_alert>;
+                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                                       contribution = <100>;
+                               };
+                       };
+               };
+       };
+
+       /*
+        * Thermistors on the board, formally to monitor battery temperatures
+        * but what they measure is the board temperature.
+        */
+       therm1: thermistor@0 {
+               compatible = "murata,ncp18wb473";
+               io-channels = <&gpadc 0x06>; /* AUX1 */
+               pullup-uv = <1800000>;
+               pullup-ohm = <220000>;
+               pulldown-ohm = <0>;
+               #thermal-sensor-cells = <0>;
+       };
+
+       therm2: thermistor@1 {
+               compatible = "murata,ncp18wb473";
+               io-channels = <&gpadc 0x07>; /* AUX2 */
+               pullup-uv = <1800000>;
+               pullup-ohm = <220000>;
+               pulldown-ohm = <0>;
+               #thermal-sensor-cells = <0>;
+       };
+
        soc {
                /* Name the GPIO muxed rails on the HREF boards */
                gpio@8012e000 {
                };
 
                // External Micro SD slot
-               sdi0_per1@80126000 {
+               mmc@80126000 {
                        cd-gpios  = <&gpio2 31 GPIO_ACTIVE_HIGH>; // 95
                };
 
-               vmmci: regulator-gpio {
-                       gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
-                       enable-gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-               };
-
                pinctrl {
                        /*
                         * Set this up using hogs, as time goes by and as seems fit, these
                                                pins = "GPIO95_E8";
                                                ste,config = <&gpio_in_pu>;
                                        };
-                                       /* VMMCI level-shifter enable */
-                                       default_hrefv60_cfg2 {
-                                               pins = "GPIO169_D22";
-                                               ste,config = <&gpio_out_hi>;
-                                       };
-                                       /* VMMCI level-shifter voltage select */
-                                       default_hrefv60_cfg3 {
-                                               pins = "GPIO5_AG6";
-                                               ste,config = <&gpio_out_hi>;
-                                       };
                                };
                        };
                        ipgpio {
index 41ed21a4fdc1b2e596b24fe6b282088a9d5f6c00..8142c017882cfee704492ed7e8041b3d0a3be729 100644 (file)
                        pinctrl-0 = <&uart0_nhk_mode>;
                        status = "okay";
                };
-               mmcsd: sdi@101f6000 {
+               mmcsd: mmc@101f6000 {
                        cd-gpios = <&stmpe_gpio44 7 GPIO_ACTIVE_LOW>;
                        wp-gpios = <&stmpe_gpio44 18 GPIO_ACTIVE_HIGH>;
                };
index 4445446fa8289dc00c0276588b527b93c3f49a98..f16314ffbf4bd80ce3575b2836e5c59c9fec1885 100644 (file)
                        status = "okay";
                };
                /* Configure card detect for the uSD slot */
-               mmcsd: sdi@101f6000 {
+               mmc@101f6000 {
                        cd-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
                };
        };
index 4f38aeecadb3aa93ed13356a20d982d931c7d260..c9b9064323415298e3dfa2364f5510d8f176d431 100644 (file)
                        interrupts = <10>;
                };
 
-               mmcsd: sdi@101f6000 {
+               mmcsd: mmc@101f6000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x101f6000 0x1000>;
                        clocks = <&sdiclk>, <&pclksdi>;
index be90e73c923ec255e156996f1b0990f5d37886c4..f32b07f31acf140b6cd64ed607b262ea9d24e725 100644 (file)
                };
 
                // External Micro SD slot
-               sdi0_per1@80126000 {
+               mmc@80126000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        bus-width = <4>;
                };
 
                // WLAN SDIO channel
-               sdi1_per2@80118000 {
+               mmc@80118000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        bus-width = <4>;
                };
 
                // Unused PoP eMMC - register and put it to sleep by default */
-               sdi2_per3@80005000 {
+               mmc@80005000 {
                        arm,primecell-periphid = <0x10480180>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&mc2_a_1_sleep>;
                };
 
                // On-board eMMC
-               sdi4_per2@80114000 {
+               mmc@80114000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        bus-width = <8>;
index 496f9d3ba7b7ea4bff154769bc54ab1eb98b0b70..00ee013cbd1dc1d99063ebf1be91514eb15183ab 100644 (file)
@@ -72,7 +72,7 @@
 
        soc {
                /* External Micro SD card slot */
-               sdi0_per1@80126000 {
+               mmc@80126000 {
                        status = "okay";
 
                        arm,primecell-periphid = <0x10480180>;
                };
 
                /* WLAN SDIO */
-               sdi1_per2@80118000 {
+               mmc@80118000 {
                        status = "okay";
 
                        arm,primecell-periphid = <0x10480180>;
                };
 
                /* eMMC */
-               sdi2_per3@80005000 {
+               mmc@80005000 {
                        status = "okay";
 
                        arm,primecell-periphid = <0x10480180>;
diff --git a/arch/arm/boot/dts/ste-ux500-samsung-janice.dts b/arch/arm/boot/dts/ste-ux500-samsung-janice.dts
new file mode 100644 (file)
index 0000000..95d5abe
--- /dev/null
@@ -0,0 +1,894 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Devicetree for the Samsung Galaxy S Advance GT-I9070 also known as Janice.
+ */
+
+/dts-v1/;
+#include "ste-db8500.dtsi"
+#include "ste-ab8500.dtsi"
+#include "ste-dbx5x0-pinctrl.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Samsung Galaxy S Advance (GT-I9070)";
+       compatible = "samsung,janice", "st-ericsson,u8500";
+
+       chosen {
+               stdout-path = &serial2;
+       };
+
+       /* External LDO for eMMC LDO VMEM_3V3 controlled by GPIO6 */
+       ldo_3v3_reg: regulator-gpio-ldo-3v3 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VMEM_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio0 6 GPIO_ACTIVE_HIGH>;
+               startup-delay-us = <5000>; // FIXME
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&emmc_ldo_en_default_mode>;
+       };
+
+       /*
+        * External Ricoh "TSP" regulator for the touchscreen.
+        * One GPIO line controls two voltages of 3.3V and 1.8V
+        * this line is known as "TSP_LDO_ON1" in the schematics.
+        */
+       ldo_tsp_3v3_reg: regulator-gpio-tsp-ldo-3v3 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "LDO_TSP_A3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               /* GPIO94 controls this regulator */
+               gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+               /* 70 ms power-on delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tsp_ldo_en_default_mode>;
+       };
+       ldo_tsp_1v8_reg: regulator-gpio-tsp-ldo-1v8 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_TSP_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               /* GPIO94 controls this regulator */
+               gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+               /* 70 ms power-on delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tsp_ldo_en_default_mode>;
+       };
+
+       /*
+        * External Ricoh "TSP" regulator for the touchkeys.
+        * Two GPIO lines controls two voltages of 3.3V and 1.8V
+        * TSP_LDO_ON2 controls VREG_TOUCHKEY_1V8
+        * EN_LED_LDO controls VREG_KLED_3V3 (key LED)
+        */
+       ldo_kled_3v3_reg: regulator-gpio-vreg-kled-3v3 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_KLED_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               /* GPIO68 controls this regulator */
+               gpio = <&gpio2 4 GPIO_ACTIVE_HIGH>;
+               /* 70 ms power-on delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&en_led_ldo_default_mode>;
+       };
+       ldo_touchkey_1v8_reg: regulator-gpio-vreg-touchkey-1v8 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_TOUCHKEY_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               /* GPIO89 controls this regulator */
+               gpio = <&gpio2 25 GPIO_ACTIVE_HIGH>;
+               /* 70 ms power-on delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tsp_ldo_on2_default_mode>;
+       };
+
+
+       /*
+        * External Ricoh RP152L010B-TR LCD LDO regulator for the display.
+        * LCD_PWR_EN controls a 3.0V and 1.8V output.
+        */
+       lcd_3v0_reg: regulator-gpio-lcd-3v0 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_LCD_3V0";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               /* GPIO219 controls this regulator */
+               gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_pwr_en_default_mode>;
+       };
+       lcd_1v8_reg: regulator-gpio-lcd-1v8 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_LCD_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               /* GPIO219 controls this regulator */
+               gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_pwr_en_default_mode>;
+       };
+
+       /*
+        * This regulator is a GPIO line that drives the Broadcom WLAN
+        * line BT_VREG_EN high and enables the internal regulators
+        * inside the chip.
+        *
+        * The voltage specified here is only used to determine the OCR mask,
+        * the for the SDIO connector, the chip is actually connected
+        * directly to VBAT.
+        */
+       wl_bt_reg: regulator-gpio-wlan {
+               compatible = "regulator-fixed";
+               regulator-name = "BT_VREG_EN";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               startup-delay-us = <100000>;
+               /* GPIO222 (BT_VREG_EN) */
+               gpio = <&gpio6 30 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&wlan_ldo_en_default>;
+       };
+
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_keys_default_mode>;
+
+               button-home {
+                       linux,code = <KEY_HOME>;
+                       label = "HOME";
+                       /* GPIO91 */
+                       gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
+               };
+               button-volup {
+                       linux,code = <KEY_VOLUMEUP>;
+                       label = "VOL+";
+                       /* GPIO67 */
+                       gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
+               };
+               button-voldown {
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       label = "VOL-";
+                       /* GPIO92 */
+                       gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       /* Bit-banged I2C on GPIO143 and GPIO144 also called "SUBPMU I2C" */
+       i2c-gpio-0 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_0_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* Yamaha YAS530 magnetometer */
+               magnetometer@2e {
+                       compatible = "yamaha,yas530";
+                       reg = <0x2e>;
+                       /* VDD 3V */
+                       vdd-supply = <&ab8500_ldo_aux1_reg>;
+                       /* IOVDD 1.8V */
+                       iovdd-supply = <&ab8500_ldo_aux2_reg>;
+                       /* GPIO204 COMPASS_RST_N */
+                       reset-gpios = <&gpio6 12 GPIO_ACTIVE_LOW>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&yas529_default>;
+               };
+               /* TODO: this should also be used by the NCP6914 Camera power management unit */
+       };
+
+       /*
+        * These pins do have an spi controller, however the controller on
+        * these pins is not the fully featured PL022 SSP/SPI block but the
+        * ST Micro diet "PL023" version. One of the lacking features in
+        * this derivative is 3wire support, so it cannot be used to drive
+        * this panel interface. We have to use GPIO bit-banging instead.
+        */
+       spi-gpio-0 {
+               compatible = "spi-gpio";
+               /* Clock on GPIO220 */
+               sck-gpios = <&gpio6 28 GPIO_ACTIVE_HIGH>;
+               /* MISO/MOSI on GPIO224 (no separate MISO pin) */
+               mosi-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
+               /* Chip select on GPIO223 */
+               cs-gpios = <&gpio6 31 GPIO_ACTIVE_LOW>;
+               num-chipselects = <1>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi_gpio_0_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               panel@0 {
+                       compatible = "samsung,s6e63m0";
+                       reg = <0>;
+                       vdd3-supply = <&lcd_3v0_reg>;
+                       vci-supply = <&lcd_1v8_reg>;
+                       /* Reset on GPIO139 */
+                       reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&panel_default_mode>;
+                       spi-3wire;
+
+                       port {
+                               panel_in: endpoint {
+                                       remote-endpoint = <&display_out>;
+                               };
+                       };
+               };
+       };
+
+       /*
+        * Current sense amplifier on the light sensor to convert current to
+        * voltage. We do not know if this is the actual configuration. The
+        * sense resistor value was found by calibrating in a room ambient
+        * light with a second mobile phone light sensor as reference. If you
+        * pry a Janice phone apart and inspect it you may figure this out.
+        */
+       gp2a_shunt: current-sense-shunt {
+               compatible = "current-sense-shunt";
+               io-channels = <&gpadc 0x07>;
+               shunt-resistor-micro-ohms = <15000000>; /* 15 ohms c:a */
+               #io-channel-cells = <0>;
+               io-channel-ranges;
+       };
+
+       /* Bit-banged I2C on GPIO196 and GPIO197 also called "TOUCHKEY_I2C" */
+       i2c-gpio-1 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio6 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio6 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               clock-frequency = <400000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_1_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               touchkey@20 {
+                       compatible = "coreriver,tc360-touchkey";
+                       reg = <0x20>;
+                       vdd-supply = <&ldo_kled_3v3_reg>;
+                       vcc-supply = <&ldo_touchkey_1v8_reg>;
+                       vddio-supply = <&ldo_touchkey_1v8_reg>;
+
+                       /* Interrupt on GPIO 198 */
+                       interrupt-parent = <&gpio6>;
+                       interrupts = <6 IRQ_TYPE_EDGE_RISING>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&touchkey_default_mode>;
+                       linux,keycodes = <KEY_MENU KEY_BACK>;
+               };
+       };
+
+       /* Bit-banged I2C on GPIO201 and GPIO202 also called "MOT_I2C" */
+       i2c-gpio-2 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio6 10 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio6 9 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_2_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               /* TODO: add the Immersion ISA1200 I2C device here */
+       };
+
+       /* Bit-banged I2C on GPIO151 and GPIO152 also called "NFC_I2C" */
+       i2c-gpio-3 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_3_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               nfc@30 {
+                       compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
+                       reg = <0x30>;
+                       /* NFC IRQ on GPIO32 */
+                       interrupt-parent = <&gpio1>;
+                       interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
+                       /* GPIO 31 */
+                       firmware-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
+                       /* GPIO88 */
+                       enable-gpios = <&gpio2 24 GPIO_ACTIVE_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pn547_janice_default>;
+               };
+       };
+
+       soc {
+               /* External Micro SD slot */
+               mmc@80126000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <50000000>;
+                       bus-width = <4>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       st,sig-dir-cmd;
+                       st,sig-dir-dat0;
+                       st,sig-dir-dat2;
+                       st,sig-pin-fbclk;
+                       full-pwr-cycle;
+                       /* MMC is powered by AUX3 1.2V .. 2.91V */
+                       vmmc-supply = <&ab8500_ldo_aux3_reg>;
+                       /* 2.9 V level translator is using AUX3 at 2.9 V as well */
+                       vqmmc-supply = <&ab8500_ldo_aux3_reg>;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc0_a_2_default>;
+                       pinctrl-1 = <&mc0_a_2_sleep>;
+                       cd-gpios  = <&gpio6 25 GPIO_ACTIVE_LOW>; // GPIO217
+                       status = "okay";
+               };
+
+               /* WLAN SDIO channel */
+               mmc@80118000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <50000000>;
+                       bus-width = <4>;
+                       non-removable;
+                       cap-sd-highspeed;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc1_a_2_default>;
+                       pinctrl-1 = <&mc1_a_2_sleep>;
+                       /*
+                        * GPIO-controlled voltage enablement: this drives
+                        * the BT_VREG_EN line high when we use this device.
+                        * Represented as regulator to fill OCR mask and to
+                        * be usable in parallel with the Bluetooth chip.
+                        */
+                       vmmc-supply = <&wl_bt_reg>;
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       wifi@1 {
+                               /* Actually BRCM4330 */
+                               compatible = "brcm,bcm4329-fmac";
+                               reg = <1>;
+                               /* GPIO216 WL_HOST_WAKE */
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
+                               interrupt-names = "host-wake";
+                               /* GPIO215  WLAN_RST_N */
+                               /* FIXME: kernel does not use this assert/deassert */
+                               reset-gpios = <&gpio6 23 GPIO_ACTIVE_LOW>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&wlan_default_mode>;
+                       };
+               };
+
+               /* eMMC */
+               mmc@80005000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <50000000>;
+                       bus-width = <8>;
+                       non-removable;
+                       cap-mmc-highspeed;
+                       mmc-ddr-1_8v;
+                       vmmc-supply = <&ldo_3v3_reg>;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc2_a_1_default>;
+                       pinctrl-1 = <&mc2_a_1_sleep>;
+                       status = "okay";
+               };
+
+               /* GBF (Bluetooth) UART */
+               uart@80120000 {
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&u0_a_1_default>;
+                       pinctrl-1 = <&u0_a_1_sleep>;
+                       status = "okay";
+
+                       bluetooth {
+                               compatible = "brcm,bcm4330-bt";
+                               /*
+                                * We actually have shutdown-gpios, BT_VREG_EN on GPIO222,
+                                * but since this GPIO is shared with the WLAN chip, we need
+                                * to reference the regulator instead. The regulator
+                                * framework will reference count the GPIO usage and
+                                * make sure we can use the same GPIO for several supplies.
+                                */
+                               // shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
+                               vbat-supply = <&wl_bt_reg>;
+                               /* BT_WAKE on GPIO199 */
+                               device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
+                               /* BT_HOST_WAKE on GPIO97 */
+                               /* FIXME: convert to interrupt */
+                               host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
+                               /* BT_RST_N on GPIO209 */
+                               reset-gpios = <&gpio6 17 GPIO_ACTIVE_LOW>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&bluetooth_default_mode>;
+                       };
+               };
+
+               /* GPS UART */
+               uart@80121000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       /* CTS/RTS is not used, CTS is repurposed as GPIO */
+                       pinctrl-0 = <&u1rxtx_a_1_default>;
+                       pinctrl-1 = <&u1rxtx_a_1_sleep>;
+                       /* FIXME: add a device for the GPS here */
+               };
+
+               /* Debugging console UART connected to TSU6111RSVR (FSA880) */
+               uart@80007000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&u2rxtx_c_1_default>;
+                       pinctrl-1 = <&u2rxtx_c_1_sleep>;
+               };
+
+               prcmu@80157000 {
+                       ab8500 {
+                               ab8500_usb {
+                                       pinctrl-names = "default", "sleep";
+                                       pinctrl-0 = <&usb_a_1_default>;
+                                       pinctrl-1 = <&usb_a_1_sleep>;
+                               };
+
+                               ab8500-regulators {
+                                       ab8500_ldo_aux1 {
+                                               /* Used for VDD for sensors */
+                                               regulator-name = "V-SENSORS-VDD";
+                                               regulator-min-microvolt = <3000000>;
+                                               regulator-max-microvolt = <3000000>;
+                                       };
+
+                                       ab8500_ldo_aux2 {
+                                               /* Used for VIO for sensors */
+                                               regulator-name = "V-SENSORS-VIO";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                       };
+
+                                       ab8500_ldo_aux3 {
+                                               /* Used for voltage for external MMC/SD card */
+                                               regulator-name = "V-MMC-SD";
+                                               regulator-min-microvolt = <1200000>;
+                                               regulator-max-microvolt = <2910000>;
+                                       };
+                               };
+                       };
+               };
+
+               /* I2C0 */
+               i2c@80004000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c0_a_1_default>;
+                       pinctrl-1 = <&i2c0_a_1_sleep>;
+
+                       proximity@44 {
+                               /* Janice has the GP2AP002A00F with light sensor */
+                               compatible = "sharp,gp2ap002a00f";
+                               clock-frequency = <400000>;
+                               reg = <0x44>;
+
+                               interrupt-parent = <&gpio4>;
+                               interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
+                               vdd-supply = <&ab8500_ldo_aux1_reg>;
+                               vio-supply = <&ab8500_ldo_aux2_reg>;
+                               /* ADC channel AUX2 to read ALSOUT ambient light sensor out */
+                               io-channels = <&gp2a_shunt>;
+                               io-channel-names = "alsout";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&gp2ap002_janice_default>;
+                               /* B1 mode (arch/arm/mach-ux500/include/mach/gp2a.h) */
+                               sharp,proximity-far-hysteresis = /bits/ 8 <0x40>;
+                               sharp,proximity-close-hysteresis = /bits/ 8 <0x0f>;
+                       };
+               };
+
+               /* I2C1 on GPIO16 and GPIO17 also called "MUS I2C" */
+               i2c@80122000 {
+                       status = "okay";
+                       pinctrl-names = "default","sleep";
+                       pinctrl-0 = <&i2c1_b_2_default>;
+                       pinctrl-1 = <&i2c1_b_2_sleep>;
+
+                       /* Texas Instruments TSU6111 micro USB switch */
+                       usb-switch@25 {
+                               compatible = "ti,tsu6111";
+                               reg = <0x25>;
+                               /* Interrupt JACK_INT_N on GPIO95 */
+                               interrupt-parent = <&gpio2>;
+                               interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&tsu6111_janice_default>;
+                       };
+               };
+
+               /* I2C2 on GPIO10 and GPIO11 also called "SENSORS I2C" */
+               i2c@80128000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c2_b_2_default>;
+                       pinctrl-1 = <&i2c2_b_2_sleep>;
+
+                       gyroscope@68 {
+                               compatible = "invensense,mpu3050";
+                               reg = <0x68>;
+                               /* GPIO226 interrupt */
+                               interrupt-parent = <&gpio7>;
+                               interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
+                               /* FIXME: no idea about this */
+                               mount-matrix = "1", "0", "0",
+                                              "0", "1", "0",
+                                              "0", "0", "1";
+                               vlogic-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
+                               vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&mpu3050_janice_default>;
+
+                               /*
+                                * The MPU-3050 acts as a hub for the
+                                * accelerometer.
+                                */
+                               i2c-gate {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       /* Bosch BMA222 accelerometer */
+                                       accelerometer@08 {
+                                               compatible = "bosch,bma222";
+                                               reg = <0x08>;
+                                               /* FIXME: no idea about this */
+                                               mount-matrix = "1", "0", "0",
+                                                              "0", "1", "0",
+                                                              "0", "0", "1";
+                                               vddio-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
+                                               vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
+                                       };
+                               };
+                       };
+               };
+
+               /* I2C3 */
+               i2c@80110000 {
+                       status = "okay";
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c3_c_2_default>;
+                       pinctrl-1 = <&i2c3_c_2_sleep>;
+
+                       /* Atmel mXT224E touchscreen */
+                       touchscreen@4a {
+                               compatible = "atmel,maxtouch";
+                               reg = <0x4a>;
+                               /* GPIO218 (TSP_INT_1V8) */
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
+                               /* VDDA is "analog supply", 2.57-3.47 V */
+                               vdda-supply = <&ldo_tsp_3v3_reg>;
+                               /* VDD is "digital supply" 1.71-3.47V */
+                               vdd-supply = <&ldo_tsp_1v8_reg>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&tsp_default>;
+                       };
+               };
+
+               mcde@a0350000 {
+                       status = "okay";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&dpi_default_mode>;
+
+                       port {
+                               display_out: endpoint {
+                                       remote-endpoint = <&panel_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&pinctrl {
+       /*
+        * This extends the MC0_A_2 default config to include
+        * the card detect GPIO217 line.
+        */
+       sdi0 {
+               mc0_a_2_default {
+                       default_cfg4 {
+                               pins = "GPIO217_AH12"; /* card detect */
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+       };
+       mcde {
+               dpi_default_mode: dpi_default {
+                       default_mux1 {
+                               /* Mux in all the data lines */
+                               function = "lcd";
+                               groups =
+                                       /* Data lines D0-D7 GPIO70..GPIO77 */
+                                       "lcd_d0_d7_a_1",
+                                       /* Data lines D8-D11 GPIO78..GPIO81 */
+                                       "lcd_d8_d11_a_1",
+                                       /* Data lines D12-D15 GPIO82..GPIO85 */
+                                       "lcd_d12_d15_a_1",
+                                       /* Data lines D16-D23 GPIO161..GPIO168 */
+                                       "lcd_d16_d23_b_1";
+                       };
+                       default_mux2 {
+                               function = "lcda";
+                               /* Clock line on GPIO150, DE, VSO, HSO on GPIO169..GPIO171 */
+                               groups = "lcdaclk_b_1", "lcda_b_1";
+                       };
+                       /* Input, no pull-up is the default state for pins used for an alt function */
+                       default_cfg1 {
+                               pins = "GPIO150_C14", "GPIO169_D22", "GPIO170_C23", "GPIO171_D23";
+                               ste,config = <&in_nopull>;
+                       };
+               };
+       };
+       /* GPIO for panel reset control */
+       panel {
+               panel_default_mode: panel_default {
+                       janice_cfg1 {
+                               /* Reset line */
+                               pins = "GPIO139_C9";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the eMMC */
+       emmc-ldo {
+               emmc_ldo_en_default_mode: emmc_ldo_default {
+                       /* LDO enable on GPIO6 */
+                       janice_cfg1 {
+                               pins = "GPIO6_AF6";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the touchscreen */
+       tsp-ldo {
+               tsp_ldo_en_default_mode: tsp_ldo_default {
+                       /* LDO enable on GPIO94 */
+                       janice_cfg1 {
+                               pins = "GPIO94_D7";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the key LED */
+       key-led {
+               en_led_ldo_default_mode: en_led_ldo_default {
+                       /* EN_LED_LDO on GPIO68 */
+                       janice_cfg1 {
+                               pins = "GPIO68_E1";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the touchkeys */
+       touchkey-ldo {
+               tsp_ldo_on2_default_mode: tsp_ldo_on2_default {
+                       /* TSP_LDO_ON2 on GPIO89 */
+                       janice_cfg1 {
+                               pins = "GPIO89_E6";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       touchkey {
+               touchkey_default_mode: touchkey_default {
+                       janice_cfg1 {
+                               /* Interrupt */
+                               pins = "GPIO198_AG25";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+                       janice_cfg2 {
+                               /* Reset, actually completely unused (not routed) */
+                               pins = "GPIO205_AG23";
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+       };
+       /* GPIO that enabled the LDO regulator for the LCD display */
+       lcd-ldo {
+               lcd_pwr_en_default_mode: lcd_pwr_en_default {
+                       /* LCD_PWR_EN on GPIO219 */
+                       janice_cfg1 {
+                               pins = "GPIO219_AG10";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the WLAN internal LDO regulators */
+       wlan-ldo {
+               wlan_ldo_en_default: wlan_ldo_default {
+                       /* GPIO222 BT_VREG_ON */
+                       janice_cfg1 {
+                               pins = "GPIO222_AJ9";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* GPIO keys */
+       gpio-keys {
+               gpio_keys_default_mode: gpio_keys_default {
+                       skomer_cfg1 {
+                               pins = "GPIO67_G2", /* VOL UP */
+                                      "GPIO91_B6", /* HOME */
+                                      "GPIO92_D6"; /* VOL DOWN */
+                               ste,config = <&gpio_in_pu>;
+                       };
+               };
+       };
+       /* Interrupt line for the Atmel MXT228 touchscreen */
+       tsp {
+               tsp_default: tsp_default {
+                       janice_cfg1 {
+                               pins = "GPIO218_AH11";  /* TSP_INT_1V8 */
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* Reset line for the Yamaha YAS529 magnetometer */
+       yas529 {
+               yas529_default: yas529_janice {
+                       janice_cfg1 {
+                               pins = "GPIO204_AF23";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* Interrupt line for light/proximity sensor GP2AP002 */
+       gp2ap002 {
+               gp2ap002_janice_default: gp2ap002_janice {
+                       janice_cfg1 {
+                               pins = "GPIO146_D13";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* Interrupt line for Invensense MPU3050 gyroscope */
+       mpu3050 {
+               mpu3050_janice_default: mpu3050_janice {
+                       janice_cfg1 {
+                               /* GPIO226 used for IRQ */
+                               pins = "GPIO226_AF8";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for magnetometer and NCP6914 */
+       i2c-gpio-0 {
+               i2c_gpio_0_default: i2c_gpio_0 {
+                       janice_cfg1 {
+                               pins = "GPIO143_D12", "GPIO144_B13";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for the Cypress touchkeys */
+       i2c-gpio-1 {
+               i2c_gpio_1_default: i2c_gpio_1 {
+                       janice_cfg1 {
+                               pins = "GPIO196_AG26", "GPIO197_AH24";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for the Immersion ISA1200 */
+       i2c-gpio-2 {
+               i2c_gpio_2_default: i2c_gpio_2 {
+                       janice_cfg1 {
+                               pins = "GPIO201_AF24", "GPIO202_AF25";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for the NFC */
+       i2c-gpio-3 {
+               i2c_gpio_3_default: i2c_gpio_3 {
+                       janice_cfg1 {
+                               pins = "GPIO151_D17", "GPIO152_D16";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based SPI bus for the display */
+       spi-gpio-0 {
+               spi_gpio_0_default: spi_gpio_0 {
+                       janice_cfg1 {
+                               pins = "GPIO220_AH10", "GPIO223_AH9", "GPIO224_AG9";
+                               ste,config = <&gpio_out_hi>;
+                       };
+                       /* This pin is unused but belongs with this SPI block */
+                       janice_cfg2 {
+                               pins = "GPIO225_AG8";
+                               ste,config = <&in_pd>;
+                       };
+               };
+       };
+       wlan {
+               wlan_default_mode: wlan_default {
+                       /* GPIO215 used for RESET_N */
+                       janice_cfg1 {
+                               pins = "GPIO215_AH13";
+                               ste,config = <&gpio_out_lo>;
+                       };
+                       /* GPIO216 for WL_HOST_WAKE */
+                       janice_cfg2 {
+                               pins = "GPIO216_AG12";
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+       };
+       bluetooth {
+               bluetooth_default_mode: bluetooth_default {
+                       janice_cfg1 {
+                               pins = "GPIO199_AH23";
+                               ste,config = <&gpio_out_lo>;
+                       };
+                       janice_cfg2 {
+                               pins = "GPIO97_D9";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+                       janice_cfg3 {
+                               pins = "GPIO209_AG15";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* Interrupt line for TI TSU6111 Micro USB switch */
+       tsu6111 {
+               tsu6111_janice_default: tsu6111_janice {
+                       janice_cfg1 {
+                               /* GPIO95 used for IRQ */
+                               pins = "GPIO95_E8";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       nfc {
+               pn547_janice_default: pn547_janice {
+                       /* Interrupt line */
+                       janice_cfg1 {
+                               pins = "GPIO32_V2";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+                       /* Enable and firmware GPIOs */
+                       janice_cfg2 {
+                               pins = "GPIO31_V3", "GPIO88_C4";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+};
index b50634c81b4445acfd106bce5afcfe53b91c5264..36420492fd725a121050ef2c3edb822b1cf8dd71 100644 (file)
 
        soc {
                // External Micro SD slot
-               sdi0_per1@80126000 {
+               mmc@80126000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        bus-width = <4>;
                };
 
                // WLAN SDIO channel
-               sdi1_per2@80118000 {
+               mmc@80118000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <50000000>;
                        bus-width = <4>;
                };
 
                // eMMC
-               sdi2_per3@80005000 {
+               mmc@80005000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        bus-width = <8>;
index ad715a0e1c9a9edd1d7cbcaffb41de22abb87d48..f6530d724d0043fa3d06c6ef5e7be2bb22f57ba6 100644 (file)
                        };
                };
 
-               sdio: sdio@40012c00 {
+               sdio: mmc@40012c00 {
                        compatible = "arm,pl180", "arm,primecell";
                        arm,primecell-periphid = <0x00880180>;
                        reg = <0x40012c00 0x400>;
index 640ff54ed00ca9d5c320a3607fd9d764b7f72f39..e1df603fc981683bcf9f829bf044af066daff072 100644 (file)
                        status = "disabled";
                };
 
-               sdio2: sdio2@40011c00 {
+               sdio2: mmc@40011c00 {
                        compatible = "arm,pl180", "arm,primecell";
                        arm,primecell-periphid = <0x00880180>;
                        reg = <0x40011c00 0x400>;
                        status = "disabled";
                };
 
-               sdio1: sdio1@40012c00 {
+               sdio1: mmc@40012c00 {
                        compatible = "arm,pl180", "arm,primecell";
                        arm,primecell-periphid = <0x00880180>;
                        reg = <0x40012c00 0x400>;
index b083afd0ebd69f769f4377b7f6d3dae594379eca..4ebffb0a45a3b43e83385c6ff51362290f7008b1 100644 (file)
                        dma-requests = <32>;
                };
 
-               sdmmc1: sdmmc@52007000 {
+               sdmmc1: mmc@52007000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        arm,primecell-periphid = <0x10153180>;
                        reg = <0x52007000 0x1000>;
index 20a59e8f7a33fc380832e4a880471dbfdfd14f57..7b4249ed198330ad01a6dd128020874b8866fedd 100644 (file)
                };
        };
 
+       sdmmc1_b4_init_pins_a: sdmmc1-b4-init-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
+                                <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
+                                <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
+                                <STM32_PINMUX('C', 11, AF12)>; /* SDMMC1_D3 */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+       };
+
        sdmmc1_b4_sleep_pins_a: sdmmc1-b4-sleep-0 {
                pins {
                        pinmux = <STM32_PINMUX('C', 8, ANALOG)>, /* SDMMC1_D0 */
                };
        };
 
+       sdmmc1_dir_init_pins_a: sdmmc1-dir-init-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('F', 2, AF11)>, /* SDMMC1_D0DIR */
+                                <STM32_PINMUX('C', 7, AF8)>, /* SDMMC1_D123DIR */
+                                <STM32_PINMUX('B', 9, AF11)>; /* SDMMC1_CDIR */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+       };
+
        sdmmc1_dir_sleep_pins_a: sdmmc1-dir-sleep-0 {
                pins {
                        pinmux = <STM32_PINMUX('F', 2, ANALOG)>, /* SDMMC1_D0DIR */
                };
        };
 
+       i2c6_pins_a: i2c6-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('Z', 6, AF2)>, /* I2C6_SCL */
+                                <STM32_PINMUX('Z', 7, AF2)>; /* I2C6_SDA */
+                       bias-disable;
+                       drive-open-drain;
+                       slew-rate = <0>;
+               };
+       };
+
+       i2c6_sleep_pins_a: i2c6-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('Z', 6, ANALOG)>, /* I2C6_SCL */
+                                <STM32_PINMUX('Z', 7, ANALOG)>; /* I2C6_SDA */
+               };
+       };
+
        spi1_pins_a: spi1-0 {
                pins1 {
                        pinmux = <STM32_PINMUX('Z', 0, AF5)>, /* SPI1_SCK */
index 3c75abacb374ec3eadb027bd0540e38e180fae26..4b8031782555cc0d39383aff2aa67824c9dcc3e6 100644 (file)
                        };
                };
 
-               sdmmc3: sdmmc@48004000 {
+               sdmmc3: mmc@48004000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        arm,primecell-periphid = <0x00253180>;
                        reg = <0x48004000 0x400>;
                        status = "disabled";
                };
 
-               sdmmc1: sdmmc@58005000 {
+               sdmmc1: mmc@58005000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        arm,primecell-periphid = <0x00253180>;
                        reg = <0x58005000 0x1000>;
                        status = "disabled";
                };
 
-               sdmmc2: sdmmc@58007000 {
+               sdmmc2: mmc@58007000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        arm,primecell-periphid = <0x00253180>;
                        reg = <0x58007000 0x1000>;
                usbphyc: usbphyc@5a006000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #clock-cells = <0>;
                        compatible = "st,stm32mp1-usbphyc";
                        reg = <0x5a006000 0x1000>;
                        clocks = <&rcc USBPHY_K>;
                        resets = <&rcc USBPHY_R>;
+                       vdda1v1-supply = <&reg11>;
+                       vdda1v8-supply = <&reg18>;
                        status = "disabled";
 
                        usbphyc_port0: usb-phy@0 {
index 58275bcf9e26e62b3ba4b3a25d5a92b06628f171..113c48b2ef93d26c23f1db99c23f2c58528c3813 100644 (file)
 
 &usbphyc_port0 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
 
 &usbphyc_port1 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
index 81a7d5849db46194ae2436abe6260673e1845e26..95b08876b2b3b09da41c733fec524de0845e9add 100644 (file)
 
 &usbphyc_port0 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
 
 &usbphyc_port1 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
index cda8e871f9996da3bb27b83e6c022e45ba81bc84..1e9bf7eea0f1f6e8ee7c307f3bf257dc55991e9c 100644 (file)
                stdout-path = &uart4;
        };
 
-       led-act {
+       led-controller-0 {
                compatible = "gpio-leds";
 
-               led-green {
+               led-0 {
                        label = "mc1:green:act";
                        gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
                        linux,default-trigger = "heartbeat";
                };
        };
 
-       led-rgb {
+       led-controller-1 {
                compatible = "pwm-leds";
 
-               led-red {
+               /* led-1 to led-3 are part of a single RGB led */
+               led-1 {
                        label = "mc1:red:rgb";
                        pwms = <&leds_pwm 1 1000000 0>;
                        max-brightness = <255>;
                        active-low;
                };
 
-               led-green {
+               led-2 {
                        label = "mc1:green:rgb";
                        pwms = <&leds_pwm 2 1000000 0>;
                        max-brightness = <255>;
                        active-low;
                };
 
-               led-blue {
+               led-3 {
                        label = "mc1:blue:rgb";
                        pwms = <&leds_pwm 3 1000000 0>;
                        max-brightness = <255>;
index 62ab23824a3e747e1525a5f1309f32fce51f9d2f..fad23d6f69b8f4dd50da42f46c643bd04ccd7bda 100644 (file)
@@ -33,9 +33,9 @@
         * during TX anyway and that it only controls drive enable DE
         * line. Hence, the RX is always enabled here.
         */
-       rs485-rx-en {
+       rs485-rx-en-hog {
                gpio-hog;
-               gpios = <8 GPIO_ACTIVE_HIGH>;
+               gpios = <8 0>;
                output-low;
                line-name = "rs485-rx-en";
        };
@@ -61,9 +61,9 @@
         * order to reset the Hub when USB bus is powered down, but
         * so far there is no such functionality.
         */
-       usb-hub {
+       usb-hub-hog {
                gpio-hog;
-               gpios = <2 GPIO_ACTIVE_HIGH>;
+               gpios = <2 0>;
                output-high;
                line-name = "usb-hub-reset";
        };
        };
 };
 
+&i2c4 {
+       touchscreen@49 {
+               status = "disabled";
+       };
+};
+
 &i2c5 {        /* TP7/TP8 */
        pinctrl-names = "default";
        pinctrl-0 = <&i2c5_pins_a>;
         * are used for on-board microSD slot instead.
         */
        /delete-property/broken-cd;
-       cd-gpios = <&gpioi 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+       cd-gpios = <&gpioi 10 GPIO_ACTIVE_HIGH>;
        disable-wp;
 };
 
 
 &usbphyc_port0 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
index 8456f172d4b1be60811f99605757b395cb28c5fb..5523f4138fd6953744e7e3e242d94b0abc665d09 100644 (file)
 
 &usbphyc_port0 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
 
 &usbphyc_port1 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
index 356150d28c420952d9941998092346616629f708..cd3a1798ca6815db1c6a248b0ea7bf1be579c0dc 100644 (file)
        status = "disabled";
 };
 
+&fmc {
+       status = "disabled";
+};
+
 &gpioa {
        /*
         * NOTE: The USB Port on the PicoITX needs a PWR_EN signal to enable
@@ -43,9 +47,9 @@
         * in order to turn on port power when USB bus is powered up, but so
         * far there is no such functionality.
         */
-       usb-port-power {
+       usb-port-power-hog {
                gpio-hog;
-               gpios = <13 GPIO_ACTIVE_LOW>;
+               gpios = <13 0>;
                output-low;
                line-name = "usb-port-power";
        };
        /delete-property/dma-names;
 };
 
+&ksz8851 {
+       status = "disabled";
+};
+
 &usart3 {
        pinctrl-names = "default";
        pinctrl-0 = <&usart3_pins_a>;
 
 &usbphyc_port0 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
 
 &usbphyc_port1 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
index ac46ab363e1b49807764b73441b96d164dd17304..2617815e42a6454abf636cf547f57cc22e4742c9 100644 (file)
 };
 
 &sdmmc1 {
-       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-names = "default", "opendrain", "sleep", "init";
        pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>;
        pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_a>;
        pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_a>;
-       broken-cd;
+       pinctrl-3 = <&sdmmc1_b4_init_pins_a &sdmmc1_dir_init_pins_a>;
+       cd-gpios = <&gpiog 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+       disable-wp;
        st,sig-dir;
        st,neg-edge;
        st,use-ckin;
+       st,cmd-gpios = <&gpiod 2 0>;
+       st,ck-gpios = <&gpioc 12 0>;
+       st,ckin-gpios = <&gpioe 4 0>;
        bus-width = <4>;
        vmmc-supply = <&vdd_sd>;
        status = "okay";
 };
 
+&sdmmc1_b4_pins_a {
+       /*
+        * SD bus pull-up resistors:
+        * - optional on SoMs with SD voltage translator
+        * - mandatory on SoMs without SD voltage translator
+        */
+       pins1 {
+               bias-pull-up;
+       };
+       pins2 {
+               bias-pull-up;
+       };
+};
+
 &sdmmc2 {
        pinctrl-names = "default", "opendrain", "sleep";
        pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>;
index ec02cee1dd9b0bedfa5f67e32c4423aba1f40c0b..b09e87fe901a6122485f4637235774c9263b05d1 100644 (file)
 
 &usbphyc_port0 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
 
 &usbphyc_port1 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
index 89c0e1ddc38788c85095f87765740dcb4073668f..59f18846cf5d0f138d9eafa5a90ecf084fa01f15 100644 (file)
 
 &usbphyc_port0 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
 
 &usbphyc_port1 {
        phy-supply = <&vdd_usb>;
-       vdda1v1-supply = <&reg11>;
-       vdda1v8-supply = <&reg18>;
 };
 
 &vrefbuf {
index 74da1360d297c14eede94534746adb0bbbbd5433..0368b3b816ef2941a9d9b76a32012d20d67a6e33 100644 (file)
                nvidia,pins = "cam_mclk_pcc0";
                nvidia,function = "vi_alt3";
                nvidia,pull = <TEGRA_PIN_PULL_NONE>;
-               nvidia,tristate = <TEGRA_PIN_ENABLE>;
-               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
        };
        pcc1 {
                nvidia,pins = "pcc1";
index 4a0848aef2075c7264e52eea1aec29c9339be99c..03657ff8fbe3d202563184b8902aa181e7474a5e 100644 (file)
@@ -2,7 +2,6 @@
 generic-y += early_ioremap.h
 generic-y += extable.h
 generic-y += flat.h
-generic-y += local64.h
 generic-y += parport.h
 
 generated-y += mach-types.h
index 6eecdef538bd508f4b5e08f42fb81a3ba541e59f..c20eacd9a931baec74f63d02b84e59e2fdc8579b 100644 (file)
@@ -13,6 +13,11 @@ config ARCH_AGILEX
        help
          This enables support for Intel's Agilex SoCFPGA Family.
 
+config ARCH_N5X
+       bool "Intel's eASIC N5X SoCFPGA Family"
+       help
+         This enables support for Intel's eASIC N5X SoCFPGA Family.
+
 config ARCH_SUNXI
        bool "Allwinner sunxi 64-bit SoC Family"
        select ARCH_HAS_RESET_CONTROLLER
index 0f893984c256e4317af063ab6de7b6ef1da673d9..d301ac0d406bf3f30fd6137b64c75a1fdc007d24 100644 (file)
                                compatible = "snps,dw-apb-gpio-port";
                                gpio-controller;
                                #gpio-cells = <2>;
-                               snps,nr-gpios = <24>;
+                               ngpios = <24>;
                                reg = <0>;
                                interrupt-controller;
                                #interrupt-cells = <2>;
                                compatible = "snps,dw-apb-gpio-port";
                                gpio-controller;
                                #gpio-cells = <2>;
-                               snps,nr-gpios = <24>;
+                               ngpios = <24>;
                                reg = <0>;
                                interrupt-controller;
                                #interrupt-cells = <2>;
index 03486a8ffc67ed202f32d4220093e2f40dc3fd0a..413cac63a1cb3a50069721d662fb44f16e277de3 100644 (file)
        pmic@66 {
                compatible = "samsung,s2mps13-pmic";
                interrupt-parent = <&gpa0>;
-               interrupts = <7 IRQ_TYPE_NONE>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x66>;
                samsung,s2mps11-wrstbi-ground;
 
                compatible = "samsung,s3fwrn5-i2c";
                reg = <0x27>;
                interrupt-parent = <&gpa1>;
-               interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <3 IRQ_TYPE_EDGE_RISING>;
                en-gpios = <&gpf1 4 GPIO_ACTIVE_HIGH>;
                wake-gpios = <&gpj0 2 GPIO_ACTIVE_HIGH>;
        };
index 695d4c14064666cecd6872143e0bb752f26aa498..125c03f351d97c48e075b730303b051e771a75a0 100644 (file)
@@ -90,7 +90,7 @@
        pmic@66 {
                compatible = "samsung,s2mps15-pmic";
                reg = <0x66>;
-               interrupts = <2 IRQ_TYPE_NONE>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
                interrupt-parent = <&gpa0>;
                pinctrl-names = "default";
                pinctrl-0 = <&pmic_irq>;
index 49c19c6879f95ce97e7dc7d2cd4512ef1f4a348c..cab89dc6f59612167865d47338a04b70e2c1d53d 100644 (file)
 
                thermal-zones {
 
-                       cls0: cls0 {
+                       cls0: cls0-thermal {
                                polling-delay = <1000>;
                                polling-delay-passive = <100>;
                                sustainable-power = <4500>;
                                thermal-sensors = <&tsensor 1>;
 
                                trips {
-                                       threshold: trip-point@0 {
+                                       threshold: trip-point0 {
                                                temperature = <65000>;
                                                hysteresis = <1000>;
                                                type = "passive";
                                        };
 
-                                       target: trip-point@1 {
+                                       target: trip-point1 {
                                                temperature = <75000>;
                                                hysteresis = <1000>;
                                                type = "passive";
index 85b0dfb35d6d3961e1f844e4d60fd180f155422e..8830795c8efc5a5e7494634d005b6e78b29587a5 100644 (file)
                        #clock-cells = <1>;
                };
 
+               iomcu_rst: reset {
+                       compatible = "hisilicon,hi3660-reset";
+                       hisi,rst-syscon = <&iomcu>;
+                       #reset-cells = <2>;
+               };
+
                uart0: serial@fdf02000 {
                        compatible = "arm,pl011", "arm,primecell";
                        reg = <0x0 0xfdf02000 0x0 0x1000>;
                        card-detect-delay = <200>;
                        status = "disabled";
                };
+
+               /* I2C */
+               i2c0: i2c@ffd71000 {
+                       compatible = "snps,designware-i2c";
+                       reg = <0x0 0xffd71000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <400000>;
+                       clocks = <&iomcu HI3670_CLK_GATE_I2C0>;
+                       resets = <&iomcu_rst 0x20 3>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c0_pmx_func &i2c0_cfg_func>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@ffd72000 {
+                       compatible = "snps,designware-i2c";
+                       reg = <0x0 0xffd72000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <400000>;
+                       clocks = <&iomcu HI3670_CLK_GATE_I2C1>;
+                       resets = <&iomcu_rst 0x20 4>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c1_pmx_func &i2c1_cfg_func>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@ffd73000 {
+                       compatible = "snps,designware-i2c";
+                       reg = <0x0 0xffd73000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <400000>;
+                       clocks = <&iomcu HI3670_CLK_GATE_I2C2>;
+                       resets = <&iomcu_rst 0x20 5>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c2_pmx_func &i2c2_cfg_func>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@fdf0c000 {
+                       compatible = "snps,designware-i2c";
+                       reg = <0x0 0xfdf0c000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <400000>;
+                       clocks = <&crg_ctrl HI3670_CLK_GATE_I2C3>;
+                       resets = <&crg_rst 0x78 7>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c3_pmx_func &i2c3_cfg_func>;
+                       status = "disabled";
+               };
+
+               i2c4: i2c@fdf0d000 {
+                       compatible = "snps,designware-i2c";
+                       reg = <0x0 0xfdf0d000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <400000>;
+                       clocks = <&crg_ctrl HI3670_CLK_GATE_I2C4>;
+                       resets = <&crg_rst 0x78 27>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c4_pmx_func &i2c4_cfg_func>;
+                       status = "disabled";
+               };
        };
 };
index 81d09434c5c610d13867d4271db81fc357010e06..a83b9d4f172e350341a2de43daf2f8d76c7e911f 100644 (file)
                        #size-cells = <1>;
                        ranges = <0x0 0x8a20000 0x1000>;
 
-                       usb2_phy1: usb2-phy@120 {
+                       usb2_phy1: usb2_phy@120 {
                                compatible = "hisilicon,hi3798cv200-usb2-phy";
                                reg = <0x120 0x4>;
                                clocks = <&crg HISTB_USB2_PHY1_REF_CLK>;
                                };
                        };
 
-                       usb2_phy2: usb2-phy@124 {
+                       usb2_phy2: usb2_phy@124 {
                                compatible = "hisilicon,hi3798cv200-usb2-phy";
                                reg = <0x124 0x4>;
                                clocks = <&crg HISTB_USB2_PHY2_REF_CLK>;
                        device_type = "pci";
                        bus-range = <0x00 0xff>;
                        num-lanes = <1>;
-                       ranges = <0x81000000 0x0 0x00000000 0x4f00000 0x0 0x100000
-                                 0x82000000 0x0 0x3000000 0x3000000 0x0 0x01f00000>;
+                       ranges = <0x81000000 0x0 0x00000000 0x4f00000 0x0 0x100000>,
+                                <0x82000000 0x0 0x3000000 0x3000000 0x0 0x01f00000>;
                        interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi";
                        #interrupt-cells = <1>;
index c6580c9f068ebf74d74975125ec67162aab2ef24..d426c6c8722b307558a4168f0f2dbba17c6c7bfc 100644 (file)
 
                thermal-zones {
 
-                       cls0: cls0 {
+                       cls0: cls0-thermal {
                                polling-delay = <1000>;
                                polling-delay-passive = <100>;
                                sustainable-power = <3326>;
                                thermal-sensors = <&tsensor 2>;
 
                                trips {
-                                       threshold: trip-point@0 {
+                                       threshold: trip-point0 {
                                                temperature = <65000>;
                                                hysteresis = <0>;
                                                type = "passive";
                                        };
 
-                                       target: trip-point@1 {
+                                       target: trip-point1 {
                                                temperature = <75000>;
                                                hysteresis = <0>;
                                                type = "passive";
                                          "ppmmu3";
                        clocks = <&media_ctrl HI6220_G3D_CLK>,
                                 <&media_ctrl HI6220_G3D_PCLK>;
-                       clock-names = "core", "bus";
+                       clock-names = "bus", "core";
                        assigned-clocks = <&media_ctrl HI6220_G3D_CLK>,
                                          <&media_ctrl HI6220_G3D_PCLK>;
                        assigned-clock-rates = <500000000>, <144000000>;
index d456b0aa6f58ca81760fdbc3c7243b285d4ea4ee..77bd8c3a83145e613dfb14bd11baccb30f29cfc8 100644 (file)
                                        0x060 MUX_M1 /* UART6_TXD */
                                >;
                        };
+
+                       i2c3_pmx_func: i2c3_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x010 MUX_M1 /* I2C3_SCL */
+                                       0x014 MUX_M1 /* I2C3_SDA */
+                               >;
+                       };
+
+                       i2c4_pmx_func: i2c4_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x03c MUX_M1 /* I2C4_SCL */
+                                       0x040 MUX_M1 /* I2C4_SDA */
+                               >;
+                       };
+
+                       cam0_rst_pmx_func: cam0_rst_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x714 MUX_M0 /* CAM0_RST */
+                               >;
+                       };
+
+                       cam1_rst_pmx_func: cam1_rst_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x048 MUX_M0 /* CAM1_RST */
+                               >;
+                       };
+
+                       cam0_pwd_n_pmx_func: cam0_pwd_n_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x098 MUX_M0 /* CAM0_PWD_N */
+                               >;
+                       };
+
+                       cam1_pwd_n_pmx_func: cam1_pwd_n_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x044 MUX_M0 /* CAM1_PWD_N */
+                               >;
+                       };
+
+                       isp0_pmx_func: isp0_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x018 MUX_M1 /* ISP_CLK0 */
+                                       0x024 MUX_M1 /* ISP_SCL0 */
+                                       0x028 MUX_M1 /* ISP_SDA0 */
+                               >;
+                       };
+
+                       isp1_pmx_func: isp1_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x01c MUX_M1 /* ISP_CLK1 */
+                                       0x02c MUX_M1 /* ISP_SCL1 */
+                                       0x030 MUX_M1 /* ISP_SDA1 */
+                               >;
+                       };
+               };
+
+               pmx1: pinmux@fff11000 {
+                       compatible = "pinctrl-single";
+                       reg = <0x0 0xfff11000 0x0 0x73c>;
+                       #gpio-range-cells = <0x3>;
+                       #pinctrl-cells = <1>;
+                       pinctrl-single,register-width = <0x20>;
+                       pinctrl-single,function-mask = <0x7>;
+                       /* pin base, nr pins & gpio function */
+                       pinctrl-single,gpio-range = <&range 0 46 0>;
+
+                       pwr_key_pmx_func: pwr_key_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x064 MUX_M0 /* GPIO_203 */
+                               >;
+                       };
+
+                       pd_pmx_func: pd_pmx_func{
+                               pinctrl-single,pins = <
+                                       0x080 MUX_M0 /* GPIO_221 */
+                               >;
+                       };
+
+                       i2s2_pmx_func: i2s2_pmx_func {
+                           pinctrl-single,pins = <
+                                       0x050 MUX_M1 /* I2S2_DI */
+                                       0x054 MUX_M1 /* I2S2_DO */
+                                       0x058 MUX_M1 /* I2S2_XCLK */
+                                       0x05c MUX_M1 /* I2S2_XFS */
+                           >;
+                       };
+
+                       spi0_pmx_func: spi0_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x094 MUX_M1 /* SPI0_CLK */
+                                       0x098 MUX_M1 /* SPI0_DI */
+                                       0x09c MUX_M1 /* SPI0_DO */
+                                       0x0a0 MUX_M1 /* SPI0_CS0_N */
+                               >;
+                       };
+
+                       spi2_pmx_func: spi2_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x710 MUX_M1 /* SPI2_CLK */
+                                       0x714 MUX_M1 /* SPI2_DI */
+                                       0x718 MUX_M1 /* SPI2_DO */
+                                       0x71c MUX_M1 /* SPI2_CS0_N */
+                               >;
+                       };
+
+                       spi3_pmx_func: spi3_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x72c MUX_M1 /* SPI3_CLK */
+                                       0x730 MUX_M1 /* SPI3_DI */
+                                       0x734 MUX_M1 /* SPI3_DO */
+                                       0x738 MUX_M1 /* SPI3_CS0_N */
+                               >;
+                       };
+
+                       i2c0_pmx_func: i2c0_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x020 MUX_M1 /* I2C0_SCL */
+                                       0x024 MUX_M1 /* I2C0_SDA */
+                               >;
+                       };
+
+                       i2c1_pmx_func: i2c1_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x028 MUX_M1 /* I2C1_SCL */
+                                       0x02c MUX_M1 /* I2C1_SDA */
+                               >;
+                       };
+                       i2c2_pmx_func: i2c2_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x030 MUX_M1 /* I2C2_SCL */
+                                       0x034 MUX_M1 /* I2C2_SDA */
+                               >;
+                       };
+
+                       pcie_clkreq_pmx_func: pcie_clkreq_pmx_func {
+                               pinctrl-single,pins = <
+                                       0x084 MUX_M1 /* PCIE0_CLKREQ_N */
+                               >;
+                       };
+
+                       gpio185_pmx_func: gpio185_pmx_func {
+                               pinctrl-single,pins = <0x01C    0x1>;
+                       };
+
+                       gpio185_pmx_idle: gpio185_pmx_idle {
+                               pinctrl-single,pins = <0x01C    0x0>;
+                       };
                };
 
                pmx2: pinmux@e896c800 {
                                        DRIVE7_02MA DRIVE6_MASK
                                >;
                        };
+
+                       i2c3_cfg_func: i2c3_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x014 0x0 /* I2C3_SCL */
+                                       0x018 0x0 /* I2C3_SDA */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       i2c4_cfg_func: i2c4_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x040 0x0 /* I2C4_SCL */
+                                       0x044 0x0 /* I2C4_SDA */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       cam0_rst_cfg_func: cam0_rst_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x714 0x0 /* CAM0_RST */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       cam1_rst_cfg_func: cam1_rst_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x04C 0x0 /* CAM1_RST */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       cam0_pwd_n_cfg_func: cam0_pwd_n_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x09C 0x0 /* CAM0_PWD_N */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       cam1_pwd_n_cfg_func: cam1_pwd_n_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x048 0x0 /* CAM1_PWD_N */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       isp0_cfg_func: isp0_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x01C 0x0 /* ISP_CLK0 */
+                                       0x028 0x0 /* ISP_SCL0 */
+                                       0x02C 0x0 /* ISP_SDA0 */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       isp1_cfg_func: isp1_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x020 0x0 /* ISP_CLK1 */
+                                       0x030 0x0 /* ISP_SCL1 */
+                                       0x034 0x0 /* ISP_SDA1 */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
                };
 
                pmx5: pinmux@fc182000 {
                        };
                };
 
-               pmx1: pinmux@fff11000 {
-                       compatible = "pinctrl-single";
-                       reg = <0x0 0xfff11000 0x0 0x73c>;
-                       #gpio-range-cells = <0x3>;
-                       #pinctrl-cells = <1>;
-                       pinctrl-single,register-width = <0x20>;
-                       pinctrl-single,function-mask = <0x7>;
-                       /* pin base, nr pins & gpio function */
-                       pinctrl-single,gpio-range = <&range 0 46 0>;
-               };
-
                pmx16: pinmux@fff11800 {
                        compatible = "pinconf-single";
                        reg = <0x0 0xfff11800 0x0 0x73c>;
                        #pinctrl-cells = <1>;
                        pinctrl-single,register-width = <0x20>;
+
+                       pwr_key_cfg_func: pwr_key_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x090 0x0 /* GPIO_203 */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_UP
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_02MA DRIVE6_MASK
+                               >;
+                       };
+
+                       usb_cfg_func: usb_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x0AC 0x0 /* GPIO_221 */
+                               >;
+                               pinctrl-single,bias-pulldown  = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup    = <
+                                       PULL_UP
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_02MA DRIVE6_MASK
+                               >;
+                       };
+
+                       spi0_cfg_func: spi0_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x0c8 0x0 /* SPI0_DI */
+                                       0x0cc 0x0 /* SPI0_DO */
+                                       0x0d0 0x0 /* SPI0_CS0_N */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_06MA DRIVE6_MASK
+                               >;
+                       };
+
+                       spi2_cfg_func: spi2_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x714 0x0 /* SPI2_DI */
+                                       0x718 0x0 /* SPI2_DO */
+                                       0x71c 0x0 /* SPI2_CS0_N */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_06MA DRIVE6_MASK
+                               >;
+                       };
+
+                       spi3_cfg_func: spi3_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x730 0x0 /* SPI3_DI */
+                                       0x734 0x0 /* SPI3_DO */
+                                       0x738 0x0 /* SPI3_CS0_N */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_06MA DRIVE6_MASK
+                               >;
+                       };
+
+                       spi0_clk_cfg_func: spi0_clk_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x0c4 0x0 /* SPI0_CLK */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_10MA DRIVE6_MASK
+                               >;
+                       };
+
+                       spi2_clk_cfg_func: spi2_clk_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x710 0x0 /* SPI2_CLK */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_10MA DRIVE6_MASK
+                               >;
+                       };
+
+                       spi3_clk_cfg_func: spi3_clk_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x72c 0x0 /* SPI3_CLK */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_10MA DRIVE6_MASK
+                               >;
+                       };
+
+                       i2c0_cfg_func: i2c0_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x04c 0x0 /* I2C0_SCL */
+                                       0x050 0x0 /* I2C0_SDA */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       i2c1_cfg_func: i2c1_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x054 0x0 /* I2C1_SCL */
+                                       0x058 0x0 /* I2C1_SDA */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       i2c2_cfg_func: i2c2_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x05c 0x0 /* I2C2_SCL */
+                                       0x060 0x0 /* I2C2_SDA */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_04MA DRIVE6_MASK
+                               >;
+                       };
+
+                       pcie_clkreq_cfg_func: pcie_clkreq_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x0b0 0x0
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_DIS
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_06MA DRIVE6_MASK
+                               >;
+                       };
+                       i2s2_cfg_func: i2s2_cfg_func {
+                               pinctrl-single,pins = <
+                                       0x07c 0x0 /* I2S2_DI */
+                                       0x080 0x0 /* I2S2_DO */
+                                       0x084 0x0 /* I2S2_XCLK */
+                                       0x088 0x0 /* I2S2_XFS */
+                               >;
+                               pinctrl-single,bias-pulldown = <
+                                       PULL_DIS
+                                       PULL_DOWN
+                                       PULL_DIS
+                                       PULL_DOWN
+                               >;
+                               pinctrl-single,bias-pullup = <
+                                       PULL_UP
+                                       PULL_UP
+                                       PULL_DIS
+                                       PULL_UP
+                               >;
+                               pinctrl-single,drive-strength = <
+                                       DRIVE7_02MA DRIVE6_MASK
+                               >;
+                       };
+
+                       gpio185_cfg_func: gpio185_cfg_func {
+                               pinctrl-single,pins = <0x048  0>;
+                               pinctrl-single,bias-pulldown = <0 2 0 2>;
+                               pinctrl-single,bias-pullup = <0 1 0 1>;
+                               pinctrl-single,drive-strength = <0x00 0x70>;
+                               pinctrl-single,slew-rate = <0x0 0x80>;
+                       };
+
+                       gpio185_cfg_idle: gpio185_cfg_idle {
+                               pinctrl-single,pins = <0x048  0>;
+                               pinctrl-single,bias-pulldown = <2 2 0 2>;
+                               pinctrl-single,bias-pullup = <0 1 0 1>;
+                               pinctrl-single,drive-strength = <0x00 0x70>;
+                               pinctrl-single,slew-rate = <0x0 0x80>;
+                       };
                };
        };
 };
index 405acaa3e9ddab7f0bc45d87beb31aa446322ef1..4aed8d440b3aa5aa7dea41db46396299e2f69002 100644 (file)
                        status = "disabled";
                };
 
-               lbc: localbus@80380000 {
+               lbc: local-bus@80380000 {
                        compatible = "hisilicon,hisi-localbus", "simple-bus";
                        reg = <0x0 0x80380000 0x0 0x10000>;
                        status = "disabled";
index 7980709e21ff020f6340084147894a173775e376..7deca5f763d5037c5cf40be2650fc952556be62a 100644 (file)
                reg = <0x0 0xa0040000 0x0 0x20000>;
                #iommu-cells = <1>;
                dma-coherent;
-               smmu-cb-memtype = <0x0 0x1>;
                hisilicon,broken-prefetch-cmd;
                status = "disabled";
        };
                        #size-cells = <2>;
                        device_type = "pci";
                        dma-coherent;
-                       ranges = <0x02000000 0 0xb2000000 0x0 0xb2000000 0
-                                0x5ff0000 0x01000000 0 0 0 0xb7ff0000
-                                0 0x10000>;
+                       ranges = <0x02000000 0 0xb2000000 0x0 0xb2000000 0 0x5ff0000>,
+                                <0x01000000 0 0 0 0xb7ff0000 0 0x10000>;
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map = <0x0 0 0 1 &mbigen_pcie0 650 4
index 7832d9cdec21c937e57276592e6198c706a61600..2172d807118143c83ed1afe15c338351e0cf0339 100644 (file)
                reg = <0x0 0xa0040000 0x0 0x20000>;
                #iommu-cells = <1>;
                dma-coherent;
-               smmu-cb-memtype = <0x0 0x1>;
                hisilicon,broken-prefetch-cmd;
                status = "disabled";
        };
                #iommu-cells = <1>;
                dma-coherent;
                hisilicon,broken-prefetch-cmd;
-               /* smmu-cb-memtype = <0x0 0x1>;*/
        };
        p0_smmu_alg_b: iommu@8d0040000 {
                compatible = "arm,smmu-v3";
                #iommu-cells = <1>;
                dma-coherent;
                hisilicon,broken-prefetch-cmd;
-               /* smmu-cb-memtype = <0x0 0x1>;*/
        };
        p1_smmu_alg_a: iommu@400d0040000 {
                compatible = "arm,smmu-v3";
                #iommu-cells = <1>;
                dma-coherent;
                hisilicon,broken-prefetch-cmd;
-               /* smmu-cb-memtype = <0x0 0x1>;*/
        };
        p1_smmu_alg_b: iommu@408d0040000 {
                compatible = "arm,smmu-v3";
                #iommu-cells = <1>;
                dma-coherent;
                hisilicon,broken-prefetch-cmd;
-               /* smmu-cb-memtype = <0x0 0x1>;*/
        };
 
        soc {
                        #size-cells = <2>;
                        device_type = "pci";
                        dma-coherent;
-                       ranges = <0x02000000 0 0xa8000000 0 0xa8000000 0 0x77f0000
-                                 0x01000000 0 0 0 0xaf7f0000 0 0x10000>;
+                       ranges = <0x02000000 0 0xa8000000 0 0xa8000000 0 0x77f0000>,
+                                <0x01000000 0 0 0 0xaf7f0000 0 0x10000>;
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map = <0x0 0 0 1 &mbigen_pcie2_a 671 4
index 296eceec4276818f7cb463364ce41fa9775cb0fd..3a052540605b63fc333339107b9dd8416087fd0b 100644 (file)
@@ -2,3 +2,4 @@
 dtb-$(CONFIG_ARCH_AGILEX) += socfpga_agilex_socdk.dtb \
                             socfpga_agilex_socdk_nand.dtb
 dtb-$(CONFIG_ARCH_KEEMBAY) += keembay-evm.dtb
+dtb-$(CONFIG_ARCH_N5X) += socfpga_n5x_socdk.dtb
diff --git a/arch/arm64/boot/dts/intel/socfpga_n5x_socdk.dts b/arch/arm64/boot/dts/intel/socfpga_n5x_socdk.dts
new file mode 100644 (file)
index 0000000..5f56e26
--- /dev/null
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier:     GPL-2.0
+/*
+ * Copyright (C) 2021, Intel Corporation
+ */
+#include "socfpga_agilex.dtsi"
+
+/ {
+       model = "eASIC N5X SoCDK";
+
+       aliases {
+               serial0 = &uart0;
+               ethernet0 = &gmac0;
+               ethernet1 = &gmac1;
+               ethernet2 = &gmac2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory {
+               device_type = "memory";
+               /* We expect the bootloader to fill in the reg */
+               reg = <0 0 0 0>;
+       };
+
+       soc {
+               clocks {
+                       osc1 {
+                               clock-frequency = <25000000>;
+                       };
+               };
+       };
+};
+
+&clkmgr {
+       compatible = "intel,easic-n5x-clkmgr";
+};
+
+&mmc {
+       status = "okay";
+       cap-sd-highspeed;
+       broken-cd;
+       bus-width = <4>;
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&watchdog0 {
+       status = "okay";
+};
index 9296d12d11e9ef4f3e344f431a29cc7d64d2de6b..e13fb10704728543f2081b8d501f8ad8829db2cb 100644 (file)
@@ -9,4 +9,5 @@ dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2894-0050-a08.dtb
 dtb-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186-p2771-0000.dtb
 dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p2972-0000.dtb
 dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p3509-0000+p3668-0000.dtb
+dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p3509-0000+p3668-0001.dtb
 dtb-$(CONFIG_ARCH_TEGRA_234_SOC) += tegra234-sim-vdk.dtb
index 6fd2e0542c278317b4405d751f8b513f9ee4f04b..9f5f5e1fa82e269dbabf6d80308772f7dbf476d7 100644 (file)
        model = "NVIDIA Jetson TX2 Developer Kit";
        compatible = "nvidia,p2771-0000", "nvidia,tegra186";
 
+       aconnect {
+               status = "okay";
+
+               dma-controller@2930000 {
+                       status = "okay";
+               };
+
+               interrupt-controller@2a40000 {
+                       status = "okay";
+               };
+
+               ahub@2900800 {
+                       status = "okay";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0x0>;
+
+                                       xbar_admaif0_ep: endpoint {
+                                               remote-endpoint = <&admaif0_ep>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <0x1>;
+
+                                       xbar_admaif1_ep: endpoint {
+                                               remote-endpoint = <&admaif1_ep>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <0x2>;
+
+                                       xbar_admaif2_ep: endpoint {
+                                               remote-endpoint = <&admaif2_ep>;
+                                       };
+                               };
+
+                               port@3 {
+                                       reg = <0x3>;
+
+                                       xbar_admaif3_ep: endpoint {
+                                               remote-endpoint = <&admaif3_ep>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <0x4>;
+
+                                       xbar_admaif4_ep: endpoint {
+                                               remote-endpoint = <&admaif4_ep>;
+                                       };
+                               };
+
+                               port@5 {
+                                       reg = <0x5>;
+
+                                       xbar_admaif5_ep: endpoint {
+                                               remote-endpoint = <&admaif5_ep>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <0x6>;
+
+                                       xbar_admaif6_ep: endpoint {
+                                               remote-endpoint = <&admaif6_ep>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <0x7>;
+
+                                       xbar_admaif7_ep: endpoint {
+                                               remote-endpoint = <&admaif7_ep>;
+                                       };
+                               };
+
+                               port@8 {
+                                       reg = <0x8>;
+
+                                       xbar_admaif8_ep: endpoint {
+                                               remote-endpoint = <&admaif8_ep>;
+                                       };
+                               };
+
+                               port@9 {
+                                       reg = <0x9>;
+
+                                       xbar_admaif9_ep: endpoint {
+                                               remote-endpoint = <&admaif9_ep>;
+                                       };
+                               };
+
+                               port@a {
+                                       reg = <0xa>;
+
+                                       xbar_admaif10_ep: endpoint {
+                                               remote-endpoint = <&admaif10_ep>;
+                                       };
+                               };
+
+                               port@b {
+                                       reg = <0xb>;
+
+                                       xbar_admaif11_ep: endpoint {
+                                               remote-endpoint = <&admaif11_ep>;
+                                       };
+                               };
+
+                               port@c {
+                                       reg = <0xc>;
+
+                                       xbar_admaif12_ep: endpoint {
+                                               remote-endpoint = <&admaif12_ep>;
+                                       };
+                               };
+
+                               port@d {
+                                       reg = <0xd>;
+
+                                       xbar_admaif13_ep: endpoint {
+                                               remote-endpoint = <&admaif13_ep>;
+                                       };
+                               };
+
+                               port@e {
+                                       reg = <0xe>;
+
+                                       xbar_admaif14_ep: endpoint {
+                                               remote-endpoint = <&admaif14_ep>;
+                                       };
+                               };
+
+                               port@f {
+                                       reg = <0xf>;
+
+                                       xbar_admaif15_ep: endpoint {
+                                               remote-endpoint = <&admaif15_ep>;
+                                       };
+                               };
+
+                               port@10 {
+                                       reg = <0x10>;
+
+                                       xbar_admaif16_ep: endpoint {
+                                               remote-endpoint = <&admaif16_ep>;
+                                       };
+                               };
+
+                               port@11 {
+                                       reg = <0x11>;
+
+                                       xbar_admaif17_ep: endpoint {
+                                               remote-endpoint = <&admaif17_ep>;
+                                       };
+                               };
+
+                               port@12 {
+                                       reg = <0x12>;
+
+                                       xbar_admaif18_ep: endpoint {
+                                               remote-endpoint = <&admaif18_ep>;
+                                       };
+                               };
+
+                               port@13 {
+                                       reg = <0x13>;
+
+                                       xbar_admaif19_ep: endpoint {
+                                               remote-endpoint = <&admaif19_ep>;
+                                       };
+                               };
+
+                               xbar_i2s1_port: port@14 {
+                                       reg = <0x14>;
+
+                                       xbar_i2s1_ep: endpoint {
+                                               remote-endpoint = <&i2s1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s2_port: port@15 {
+                                       reg = <0x15>;
+
+                                       xbar_i2s2_ep: endpoint {
+                                               remote-endpoint = <&i2s2_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s3_port: port@16 {
+                                       reg = <0x16>;
+
+                                       xbar_i2s3_ep: endpoint {
+                                               remote-endpoint = <&i2s3_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s4_port: port@17 {
+                                       reg = <0x17>;
+
+                                       xbar_i2s4_ep: endpoint {
+                                               remote-endpoint = <&i2s4_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s5_port: port@18 {
+                                       reg = <0x18>;
+
+                                       xbar_i2s5_ep: endpoint {
+                                               remote-endpoint = <&i2s5_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s6_port: port@19 {
+                                       reg = <0x19>;
+
+                                       xbar_i2s6_ep: endpoint {
+                                               remote-endpoint = <&i2s6_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic1_port: port@1a {
+                                       reg = <0x1a>;
+
+                                       xbar_dmic1_ep: endpoint {
+                                               remote-endpoint = <&dmic1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic2_port: port@1b {
+                                       reg = <0x1b>;
+
+                                       xbar_dmic2_ep: endpoint {
+                                               remote-endpoint = <&dmic2_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic3_port: port@1c {
+                                       reg = <0x1c>;
+
+                                       xbar_dmic3_ep: endpoint {
+                                               remote-endpoint = <&dmic3_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dspk1_port: port@1e {
+                                       reg = <0x1e>;
+
+                                       xbar_dspk1_ep: endpoint {
+                                               remote-endpoint = <&dspk1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dspk2_port: port@1f {
+                                       reg = <0x1f>;
+
+                                       xbar_dspk2_ep: endpoint {
+                                               remote-endpoint = <&dspk2_cif_ep>;
+                                       };
+                               };
+                       };
+
+                       admaif@290f000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       admaif0_port: port@0 {
+                                               reg = <0x0>;
+
+                                               admaif0_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif0_ep>;
+                                               };
+                                       };
+
+                                       admaif1_port: port@1 {
+                                               reg = <0x1>;
+
+                                               admaif1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif1_ep>;
+                                               };
+                                       };
+
+                                       admaif2_port: port@2 {
+                                               reg = <0x2>;
+
+                                               admaif2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif2_ep>;
+                                               };
+                                       };
+
+                                       admaif3_port: port@3 {
+                                               reg = <0x3>;
+
+                                               admaif3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif3_ep>;
+                                               };
+                                       };
+
+                                       admaif4_port: port@4 {
+                                               reg = <0x4>;
+
+                                               admaif4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif4_ep>;
+                                               };
+                                       };
+
+                                       admaif5_port: port@5 {
+                                               reg = <0x5>;
+
+                                               admaif5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif5_ep>;
+                                               };
+                                       };
+
+                                       admaif6_port: port@6 {
+                                               reg = <0x6>;
+
+                                               admaif6_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif6_ep>;
+                                               };
+                                       };
+
+                                       admaif7_port: port@7 {
+                                               reg = <0x7>;
+
+                                               admaif7_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif7_ep>;
+                                               };
+                                       };
+
+                                       admaif8_port: port@8 {
+                                               reg = <0x8>;
+
+                                               admaif8_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif8_ep>;
+                                               };
+                                       };
+
+                                       admaif9_port: port@9 {
+                                               reg = <0x9>;
+
+                                               admaif9_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif9_ep>;
+                                               };
+                                       };
+
+                                       admaif10_port: port@a {
+                                               reg = <0xa>;
+
+                                               admaif10_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif10_ep>;
+                                               };
+                                       };
+
+                                       admaif11_port: port@b {
+                                               reg = <0xb>;
+
+                                               admaif11_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif11_ep>;
+                                               };
+                                       };
+
+                                       admaif12_port: port@c {
+                                               reg = <0xc>;
+
+                                               admaif12_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif12_ep>;
+                                               };
+                                       };
+
+                                       admaif13_port: port@d {
+                                               reg = <0xd>;
+
+                                               admaif13_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif13_ep>;
+                                               };
+                                       };
+
+                                       admaif14_port: port@e {
+                                               reg = <0xe>;
+
+                                               admaif14_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif14_ep>;
+                                               };
+                                       };
+
+                                       admaif15_port: port@f {
+                                               reg = <0xf>;
+
+                                               admaif15_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif15_ep>;
+                                               };
+                                       };
+
+                                       admaif16_port: port@10 {
+                                               reg = <0x10>;
+
+                                               admaif16_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif16_ep>;
+                                               };
+                                       };
+
+                                       admaif17_port: port@11 {
+                                               reg = <0x11>;
+
+                                               admaif17_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif17_ep>;
+                                               };
+                                       };
+
+                                       admaif18_port: port@12 {
+                                               reg = <0x12>;
+
+                                               admaif18_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif18_ep>;
+                                               };
+                                       };
+
+                                       admaif19_port: port@13 {
+                                               reg = <0x13>;
+
+                                               admaif19_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif19_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s1_ep>;
+                                               };
+                                       };
+
+                                       i2s1_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s1_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s2_ep>;
+                                               };
+                                       };
+
+                                       i2s2_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s2_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s3_ep>;
+                                               };
+                                       };
+
+                                       i2s3_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s3_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901300 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s4_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s4_ep>;
+                                               };
+                                       };
+
+                                       i2s4_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s4_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901400 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s5_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s5_ep>;
+                                               };
+                                       };
+
+                                       i2s5_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s5_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901500 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s6_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s6_ep>;
+                                               };
+                                       };
+
+                                       i2s6_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s6_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@2904000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic1_ep>;
+                                               };
+                                       };
+
+                                       dmic1_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic1_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@2904100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic2_ep>;
+                                               };
+                                       };
+
+                                       dmic2_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic2_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@2904200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic3_ep>;
+                                               };
+                                       };
+
+                                       dmic3_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic3_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dspk@2905000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dspk1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dspk1_ep>;
+                                               };
+                                       };
+
+                                       dspk1_port: port@1 {
+                                               reg = <1>;
+
+                                               dspk1_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dspk@2905100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dspk2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dspk2_ep>;
+                                               };
+                                       };
+
+                                       dspk2_port: port@1 {
+                                               reg = <1>;
+
+                                               dspk2_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+               };
+       };
+
        i2c@3160000 {
                power-monitor@42 {
                        compatible = "ti,ina3221";
 
                vin-supply = <&vdd_5v0_sys>;
        };
+
+       sound {
+               compatible = "nvidia,tegra186-audio-graph-card";
+               status = "okay";
+
+               dais = /* FE */
+                      <&admaif0_port>, <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
+                      <&admaif4_port>, <&admaif5_port>, <&admaif6_port>, <&admaif7_port>,
+                      <&admaif8_port>, <&admaif9_port>, <&admaif10_port>, <&admaif11_port>,
+                      <&admaif12_port>, <&admaif13_port>, <&admaif14_port>, <&admaif15_port>,
+                      <&admaif16_port>, <&admaif17_port>, <&admaif18_port>, <&admaif19_port>,
+                      /* Router */
+                      <&xbar_i2s1_port>, <&xbar_i2s2_port>, <&xbar_i2s3_port>,
+                      <&xbar_i2s4_port>, <&xbar_i2s5_port>, <&xbar_i2s6_port>,
+                      <&xbar_dmic1_port>, <&xbar_dmic2_port>, <&xbar_dmic3_port>,
+                      <&xbar_dspk1_port>, <&xbar_dspk2_port>,
+                      /* I/O */
+                      <&i2s1_port>, <&i2s2_port>, <&i2s3_port>, <&i2s4_port>,
+                      <&i2s5_port>, <&i2s6_port>, <&dmic1_port>, <&dmic2_port>,
+                      <&dmic3_port>, <&dspk1_port>, <&dspk2_port>;
+
+               label = "jetson-tx2-ape";
+       };
 };
index 58c51965df479e705023ea60b45bf2ff85378f21..02b26b39cedc1671553a9829c327447fadf213dd 100644 (file)
                interrupt-affinity = <&ca57_0 &ca57_1 &ca57_2 &ca57_3>;
        };
 
+       sound {
+               status = "disabled";
+
+               clocks = <&bpmp TEGRA186_CLK_PLLA>,
+                        <&bpmp TEGRA186_CLK_PLL_A_OUT0>;
+               clock-names = "pll_a", "plla_out0";
+               assigned-clocks = <&bpmp TEGRA186_CLK_PLLA>,
+                                 <&bpmp TEGRA186_CLK_PLL_A_OUT0>,
+                                 <&bpmp TEGRA186_CLK_AUD_MCLK>;
+               assigned-clock-parents = <0>,
+                                        <&bpmp TEGRA186_CLK_PLLA>,
+                                        <&bpmp TEGRA186_CLK_PLL_A_OUT0>;
+               /*
+                * PLLA supports dynamic ramp. Below initial rate is chosen
+                * for this to work and oscillate between base rates required
+                * for 8x and 11.025x sample rate streams.
+                */
+               assigned-clock-rates = <258000000>;
+
+               iommus = <&smmu TEGRA186_SID_APE>;
+       };
+
        thermal-zones {
                a57 {
                        polling-delay = <0>;
index d71b7a1140fe2d892dde14d8f7b820947e7e445c..7e7b0eb90c8029e932b79d23344d15ee6abf00d2 100644 (file)
                        vclamp-usb-supply = <&vdd_1v8ao>;
 
                        ports {
+                               usb2-0 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+
                                usb2-1 {
                                        vbus-supply = <&vdd_5v0_sys>;
                                };
                                        vbus-supply = <&vdd_5v0_sys>;
                                };
 
+                               usb3-2 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+
                                usb3-3 {
                                        vbus-supply = <&vdd_5v0_sys>;
                                };
index 54d057beec597d3f0e6583480a170d0acf9a4115..2888efc42ba1b72b024a6bbe3b67c7d264197966 100644 (file)
                        interrupt-controller@2a40000 {
                                status = "okay";
                        };
+
+                       ahub@2900800 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0x0>;
+
+                                               xbar_admaif0_ep: endpoint {
+                                                       remote-endpoint = <&admaif0_ep>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <0x1>;
+
+                                               xbar_admaif1_ep: endpoint {
+                                                       remote-endpoint = <&admaif1_ep>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <0x2>;
+
+                                               xbar_admaif2_ep: endpoint {
+                                                       remote-endpoint = <&admaif2_ep>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <0x3>;
+
+                                               xbar_admaif3_ep: endpoint {
+                                                       remote-endpoint = <&admaif3_ep>;
+                                               };
+                                       };
+
+                                       port@4 {
+                                               reg = <0x4>;
+
+                                               xbar_admaif4_ep: endpoint {
+                                                       remote-endpoint = <&admaif4_ep>;
+                                               };
+                                       };
+
+                                       port@5 {
+                                               reg = <0x5>;
+
+                                               xbar_admaif5_ep: endpoint {
+                                                       remote-endpoint = <&admaif5_ep>;
+                                               };
+                                       };
+
+                                       port@6 {
+                                               reg = <0x6>;
+
+                                               xbar_admaif6_ep: endpoint {
+                                                       remote-endpoint = <&admaif6_ep>;
+                                               };
+                                       };
+
+                                       port@7 {
+                                               reg = <0x7>;
+
+                                               xbar_admaif7_ep: endpoint {
+                                                       remote-endpoint = <&admaif7_ep>;
+                                               };
+                                       };
+
+                                       port@8 {
+                                               reg = <0x8>;
+
+                                               xbar_admaif8_ep: endpoint {
+                                                       remote-endpoint = <&admaif8_ep>;
+                                               };
+                                       };
+
+                                       port@9 {
+                                               reg = <0x9>;
+
+                                               xbar_admaif9_ep: endpoint {
+                                                       remote-endpoint = <&admaif9_ep>;
+                                               };
+                                       };
+
+                                       port@a {
+                                               reg = <0xa>;
+
+                                               xbar_admaif10_ep: endpoint {
+                                                       remote-endpoint = <&admaif10_ep>;
+                                               };
+                                       };
+
+                                       port@b {
+                                               reg = <0xb>;
+
+                                               xbar_admaif11_ep: endpoint {
+                                                       remote-endpoint = <&admaif11_ep>;
+                                               };
+                                       };
+
+                                       port@c {
+                                               reg = <0xc>;
+
+                                               xbar_admaif12_ep: endpoint {
+                                                       remote-endpoint = <&admaif12_ep>;
+                                               };
+                                       };
+
+                                       port@d {
+                                               reg = <0xd>;
+
+                                               xbar_admaif13_ep: endpoint {
+                                                       remote-endpoint = <&admaif13_ep>;
+                                               };
+                                       };
+
+                                       port@e {
+                                               reg = <0xe>;
+
+                                               xbar_admaif14_ep: endpoint {
+                                                       remote-endpoint = <&admaif14_ep>;
+                                               };
+                                       };
+
+                                       port@f {
+                                               reg = <0xf>;
+
+                                               xbar_admaif15_ep: endpoint {
+                                                       remote-endpoint = <&admaif15_ep>;
+                                               };
+                                       };
+
+                                       port@10 {
+                                               reg = <0x10>;
+
+                                               xbar_admaif16_ep: endpoint {
+                                                       remote-endpoint = <&admaif16_ep>;
+                                               };
+                                       };
+
+                                       port@11 {
+                                               reg = <0x11>;
+
+                                               xbar_admaif17_ep: endpoint {
+                                                       remote-endpoint = <&admaif17_ep>;
+                                               };
+                                       };
+
+                                       port@12 {
+                                               reg = <0x12>;
+
+                                               xbar_admaif18_ep: endpoint {
+                                                       remote-endpoint = <&admaif18_ep>;
+                                               };
+                                       };
+
+                                       port@13 {
+                                               reg = <0x13>;
+
+                                               xbar_admaif19_ep: endpoint {
+                                                       remote-endpoint = <&admaif19_ep>;
+                                               };
+                                       };
+
+                                       xbar_i2s1_port: port@14 {
+                                               reg = <0x14>;
+
+                                               xbar_i2s1_ep: endpoint {
+                                                       remote-endpoint = <&i2s1_cif_ep>;
+                                               };
+                                       };
+
+                                       xbar_i2s2_port: port@15 {
+                                               reg = <0x15>;
+
+                                               xbar_i2s2_ep: endpoint {
+                                                       remote-endpoint = <&i2s2_cif_ep>;
+                                               };
+                                       };
+
+                                       xbar_i2s4_port: port@17 {
+                                               reg = <0x17>;
+
+                                               xbar_i2s4_ep: endpoint {
+                                                       remote-endpoint = <&i2s4_cif_ep>;
+                                               };
+                                       };
+
+                                       xbar_i2s6_port: port@19 {
+                                               reg = <0x19>;
+
+                                               xbar_i2s6_ep: endpoint {
+                                                       remote-endpoint = <&i2s6_cif_ep>;
+                                               };
+                                       };
+
+                                       xbar_dmic3_port: port@1c {
+                                               reg = <0x1c>;
+
+                                               xbar_dmic3_ep: endpoint {
+                                                       remote-endpoint = <&dmic3_cif_ep>;
+                                               };
+                                       };
+                               };
+
+                               admaif@290f000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               admaif0_port: port@0 {
+                                                       reg = <0x0>;
+
+                                                       admaif0_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif0_ep>;
+                                                       };
+                                               };
+
+                                               admaif1_port: port@1 {
+                                                       reg = <0x1>;
+
+                                                       admaif1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif1_ep>;
+                                                       };
+                                               };
+
+                                               admaif2_port: port@2 {
+                                                       reg = <0x2>;
+
+                                                       admaif2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif2_ep>;
+                                                       };
+                                               };
+
+                                               admaif3_port: port@3 {
+                                                       reg = <0x3>;
+
+                                                       admaif3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif3_ep>;
+                                                       };
+                                               };
+
+                                               admaif4_port: port@4 {
+                                                       reg = <0x4>;
+
+                                                       admaif4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif4_ep>;
+                                                       };
+                                               };
+
+                                               admaif5_port: port@5 {
+                                                       reg = <0x5>;
+
+                                                       admaif5_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif5_ep>;
+                                                       };
+                                               };
+
+                                               admaif6_port: port@6 {
+                                                       reg = <0x6>;
+
+                                                       admaif6_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif6_ep>;
+                                                       };
+                                               };
+
+                                               admaif7_port: port@7 {
+                                                       reg = <0x7>;
+
+                                                       admaif7_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif7_ep>;
+                                                       };
+                                               };
+
+                                               admaif8_port: port@8 {
+                                                       reg = <0x8>;
+
+                                                       admaif8_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif8_ep>;
+                                                       };
+                                               };
+
+                                               admaif9_port: port@9 {
+                                                       reg = <0x9>;
+
+                                                       admaif9_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif9_ep>;
+                                                       };
+                                               };
+
+                                               admaif10_port: port@a {
+                                                       reg = <0xa>;
+
+                                                       admaif10_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif10_ep>;
+                                                       };
+                                               };
+
+                                               admaif11_port: port@b {
+                                                       reg = <0xb>;
+
+                                                       admaif11_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif11_ep>;
+                                                       };
+                                               };
+
+                                               admaif12_port: port@c {
+                                                       reg = <0xc>;
+
+                                                       admaif12_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif12_ep>;
+                                                       };
+                                               };
+
+                                               admaif13_port: port@d {
+                                                       reg = <0xd>;
+
+                                                       admaif13_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif13_ep>;
+                                                       };
+                                               };
+
+                                               admaif14_port: port@e {
+                                                       reg = <0xe>;
+
+                                                       admaif14_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif14_ep>;
+                                                       };
+                                               };
+
+                                               admaif15_port: port@f {
+                                                       reg = <0xf>;
+
+                                                       admaif15_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif15_ep>;
+                                                       };
+                                               };
+
+                                               admaif16_port: port@10 {
+                                                       reg = <0x10>;
+
+                                                       admaif16_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif16_ep>;
+                                                       };
+                                               };
+
+                                               admaif17_port: port@11 {
+                                                       reg = <0x11>;
+
+                                                       admaif17_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif17_ep>;
+                                                       };
+                                               };
+
+                                               admaif18_port: port@12 {
+                                                       reg = <0x12>;
+
+                                                       admaif18_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif18_ep>;
+                                                       };
+                                               };
+
+                                               admaif19_port: port@13 {
+                                                       reg = <0x13>;
+
+                                                       admaif19_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif19_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s1_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s1_ep>;
+                                                       };
+                                               };
+
+                                               i2s1_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s1_dap_ep: endpoint {
+                                                               dai-format = "i2s";
+                                                               remote-endpoint = <&rt5658_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901100 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s2_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s2_ep>;
+                                                       };
+                                               };
+
+                                               i2s2_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s2_dap_ep: endpoint {
+                                                               dai-format = "i2s";
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901300 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s4_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s4_ep>;
+                                                       };
+                                               };
+
+                                               i2s4_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s4_dap_ep: endpoint {
+                                                               dai-format = "i2s";
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901500 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s6_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s6_ep>;
+                                                       };
+                                               };
+
+                                               i2s6_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s6_dap_ep: endpoint@0 {
+                                                               dai-format = "i2s";
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               dmic@2904200 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       dmic3_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_dmic3_ep>;
+                                                       };
+                                               };
+
+                                               dmic3_port: port@1 {
+                                                       reg = <1>;
+
+                                                       dmic3_dap_ep: endpoint {
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+                       };
                };
 
                i2c@3160000 {
                        pads {
                                usb2 {
                                        lanes {
+                                               usb2-0 {
+                                                       status = "okay";
+                                               };
+
                                                usb2-1 {
                                                        status = "okay";
                                                };
                                                        status = "okay";
                                                };
 
+                                               usb3-2 {
+                                                       status = "okay";
+                                               };
+
                                                usb3-3 {
                                                        status = "okay";
                                                };
                        };
 
                        ports {
+                               usb2-0 {
+                                       mode = "host";
+                                       status = "okay";
+                               };
+
                                usb2-1 {
                                        mode = "host";
                                        status = "okay";
                                        status = "okay";
                                };
 
+                               usb3-2 {
+                                       nvidia,usb2-companion = <0>;
+                                       status = "okay";
+                               };
+
                                usb3-3 {
                                        nvidia,usb2-companion = <3>;
                                        maximum-speed = "super-speed";
                usb@3610000 {
                        status = "okay";
 
-                       phys =  <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
+                       phys =  <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
+                               <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
                                <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-3}>,
                                <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-0}>,
+                               <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-2}>,
                                <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-3}>;
-                       phy-names = "usb2-1", "usb2-3", "usb3-0", "usb3-3";
+                       phy-names = "usb2-0", "usb2-1", "usb2-3", "usb3-0", "usb3-2", "usb3-3";
+               };
+
+               i2c@c250000 {
+                       status = "okay";
+
+                       rt5658: audio-codec@1a {
+                               status = "okay";
+
+                               compatible = "realtek,rt5658";
+                               reg = <0x1a>;
+                               interrupt-parent = <&gpio>;
+                               interrupts = <TEGRA194_MAIN_GPIO(S, 5) GPIO_ACTIVE_HIGH>;
+                               realtek,jd-src = <2>;
+                               sound-name-prefix = "CVB-RT";
+
+                               port {
+                                       rt5658_ep: endpoint {
+                                               remote-endpoint = <&i2s1_dap_ep>;
+                                               mclk-fs = <256>;
+                                               clocks = <&bpmp TEGRA194_CLK_AUD_MCLK>;
+                                       };
+                               };
+                       };
                };
 
                pwm@c340000 {
                };
        };
 
+       sound {
+               compatible = "nvidia,tegra186-audio-graph-card";
+               status = "okay";
+
+               dais = /* ADMAIF (FE) Ports */
+                      <&admaif0_port>, <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
+                      <&admaif4_port>, <&admaif5_port>, <&admaif6_port>, <&admaif7_port>,
+                      <&admaif8_port>, <&admaif9_port>, <&admaif10_port>, <&admaif11_port>,
+                      <&admaif12_port>, <&admaif13_port>, <&admaif14_port>, <&admaif15_port>,
+                      <&admaif16_port>, <&admaif17_port>, <&admaif18_port>, <&admaif19_port>,
+                      /* XBAR Ports */
+                      <&xbar_i2s1_port>, <&xbar_i2s2_port>, <&xbar_i2s4_port>,
+                      <&xbar_i2s6_port>, <&xbar_dmic3_port>,
+                      /* BE I/O Ports */
+                      <&i2s1_port>, <&i2s2_port>, <&i2s4_port>, <&i2s6_port>,
+                      <&dmic3_port>;
+
+               label = "jetson-xavier-ape";
+
+               widgets =
+                       "Microphone",   "CVB-RT MIC Jack",
+                       "Microphone",   "CVB-RT MIC",
+                       "Headphone",    "CVB-RT HP Jack",
+                       "Speaker",      "CVB-RT SPK";
+
+               routing =
+                       /* I2S1 <-> RT5658 */
+                       "CVB-RT AIF1 Playback", "I2S1 DAP-Playback",
+                       "I2S1 DAP-Capture",     "CVB-RT AIF1 Capture",
+                       /* RT5658 Codec controls */
+                       "CVB-RT HP Jack",       "CVB-RT HPO L Playback",
+                       "CVB-RT HP Jack",       "CVB-RT HPO R Playback",
+                       "CVB-RT IN1P",          "CVB-RT MIC Jack",
+                       "CVB-RT IN2P",          "CVB-RT MIC Jack",
+                       "CVB-RT SPK",           "CVB-RT SPO Playback",
+                       "CVB-RT DMIC L1",       "CVB-RT MIC",
+                       "CVB-RT DMIC L2",       "CVB-RT MIC",
+                       "CVB-RT DMIC R1",       "CVB-RT MIC",
+                       "CVB-RT DMIC R2",       "CVB-RT MIC";
+       };
+
        thermal-zones {
                cpu {
                        polling-delay = <0>;
index 7f97b34216a0d80ec5a915d66c688103f850596a..1c3874b677c0186364b5db330ea82e2ee7a799e4 100644 (file)
 // SPDX-License-Identifier: GPL-2.0
 /dts-v1/;
 
-#include <dt-bindings/input/linux-event-codes.h>
-#include <dt-bindings/input/gpio-keys.h>
-
 #include "tegra194-p3668-0000.dtsi"
+#include "tegra194-p3509-0000.dtsi"
 
 / {
-       model = "NVIDIA Jetson Xavier NX Developer Kit";
+       model = "NVIDIA Jetson Xavier NX Developer Kit (SD-card)";
        compatible = "nvidia,p3509-0000+p3668-0000", "nvidia,tegra194";
-
-       bus@0 {
-               aconnect@2900000 {
-                       status = "okay";
-
-                       dma-controller@2930000 {
-                               status = "okay";
-                       };
-
-                       interrupt-controller@2a40000 {
-                               status = "okay";
-                       };
-               };
-
-               ddc: i2c@3190000 {
-                       status = "okay";
-               };
-
-               i2c@3160000 {
-                       eeprom@57 {
-                               compatible = "atmel,24c02";
-                               reg = <0x57>;
-
-                               label = "system";
-                               vcc-supply = <&vdd_1v8>;
-                               address-width = <8>;
-                               pagesize = <8>;
-                               size = <256>;
-                               read-only;
-                       };
-               };
-
-               hda@3510000 {
-                       nvidia,model = "jetson-xavier-nx-hda";
-                       status = "okay";
-               };
-
-               padctl@3520000 {
-                       status = "okay";
-
-                       pads {
-                               usb2 {
-                                       lanes {
-                                               usb2-1 {
-                                                       status = "okay";
-                                               };
-
-                                               usb2-2 {
-                                                       status = "okay";
-                                               };
-                                       };
-                               };
-
-                               usb3 {
-                                       lanes {
-                                               usb3-2 {
-                                                       status = "okay";
-                                               };
-                                       };
-                               };
-                       };
-
-                       ports {
-                               usb2-1 {
-                                       mode = "host";
-                                       status = "okay";
-                               };
-
-                               usb2-2 {
-                                       mode = "host";
-                                       vbus-supply = <&vdd_5v0_sys>;
-                                       status = "okay";
-                               };
-
-                               usb3-2 {
-                                       nvidia,usb2-companion = <1>;
-                                       vbus-supply = <&vdd_5v0_sys>;
-                                       status = "okay";
-                               };
-                       };
-               };
-
-               usb@3610000 {
-                       status = "okay";
-
-                       phys =  <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
-                               <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-2}>,
-                               <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-2}>;
-                       phy-names = "usb2-1", "usb2-2", "usb3-2";
-               };
-
-               pwm@32d0000 {
-                       status = "okay";
-               };
-
-               host1x@13e00000 {
-                       display-hub@15200000 {
-                               status = "okay";
-                       };
-
-                       dpaux@155c0000 {
-                               status = "okay";
-                       };
-
-                       dpaux@155d0000 {
-                               status = "okay";
-                       };
-
-                       /* DP0 */
-                       sor@15b00000 {
-                               status = "okay";
-
-                               avdd-io-hdmi-dp-supply = <&vdd_1v0>;
-                               vdd-hdmi-dp-pll-supply = <&vdd_1v8hs>;
-
-                               nvidia,dpaux = <&dpaux0>;
-                       };
-
-                       /* HDMI */
-                       sor@15b40000 {
-                               status = "okay";
-
-                               avdd-io-hdmi-dp-supply = <&vdd_1v0>;
-                               vdd-hdmi-dp-pll-supply = <&vdd_1v8hs>;
-                               hdmi-supply = <&vdd_hdmi>;
-
-                               nvidia,ddc-i2c-bus = <&ddc>;
-                               nvidia,hpd-gpio = <&gpio TEGRA194_MAIN_GPIO(M, 1)
-                                                        GPIO_ACTIVE_LOW>;
-                       };
-               };
-       };
-
-       pcie@14160000 {
-               status = "okay";
-
-               vddio-pex-ctl-supply = <&vdd_1v8ao>;
-
-               phys = <&p2u_hsio_11>;
-               phy-names = "p2u-0";
-       };
-
-       pcie@141a0000 {
-               status = "okay";
-
-               vddio-pex-ctl-supply = <&vdd_1v8ao>;
-
-               phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
-                      <&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
-                      <&p2u_nvhs_6>, <&p2u_nvhs_7>;
-
-               phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
-                           "p2u-5", "p2u-6", "p2u-7";
-       };
-
-       pcie_ep@141a0000 {
-               status = "disabled";
-
-               vddio-pex-ctl-supply = <&vdd_1v8ao>;
-
-               reset-gpios = <&gpio TEGRA194_MAIN_GPIO(GG, 1) GPIO_ACTIVE_LOW>;
-
-               nvidia,refclk-select-gpios = <&gpio_aon TEGRA194_AON_GPIO(AA, 5)
-                                             GPIO_ACTIVE_HIGH>;
-
-               phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
-                      <&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
-                      <&p2u_nvhs_6>, <&p2u_nvhs_7>;
-
-               phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
-                           "p2u-5", "p2u-6", "p2u-7";
-       };
-
-       fan: fan {
-               compatible = "pwm-fan";
-               pwms = <&pwm6 0 45334>;
-
-               cooling-levels = <0 64 128 255>;
-               #cooling-cells = <2>;
-       };
-
-       gpio-keys {
-               compatible = "gpio-keys";
-
-               force-recovery {
-                       label = "Force Recovery";
-                       gpios = <&gpio TEGRA194_MAIN_GPIO(G, 0)
-                                      GPIO_ACTIVE_LOW>;
-                       linux,input-type = <EV_KEY>;
-                       linux,code = <KEY_SLEEP>;
-                       debounce-interval = <10>;
-               };
-
-               power {
-                       label = "Power";
-                       gpios = <&gpio_aon TEGRA194_AON_GPIO(EE, 4)
-                                          GPIO_ACTIVE_LOW>;
-                       linux,input-type = <EV_KEY>;
-                       linux,code = <KEY_POWER>;
-                       debounce-interval = <10>;
-                       wakeup-event-action = <EV_ACT_ASSERTED>;
-                       wakeup-source;
-               };
-       };
-
-       vdd_5v0_sys: regulator@100 {
-               compatible = "regulator-fixed";
-               regulator-name = "VDD_5V_SYS";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
-       vdd_3v3_sys: regulator@101 {
-               compatible = "regulator-fixed";
-               regulator-name = "VDD_3V3_SYS";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
-       vdd_3v3_ao: regulator@102 {
-               compatible = "regulator-fixed";
-               regulator-name = "VDD_3V3_AO";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
-       vdd_1v8: regulator@103 {
-               compatible = "regulator-fixed";
-               regulator-name = "VDD_1V8";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
-       vdd_hdmi: regulator@104 {
-               compatible = "regulator-fixed";
-               regulator-name = "VDD_5V0_HDMI_CON";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
-       thermal-zones {
-               cpu {
-                       polling-delay = <0>;
-                       polling-delay-passive = <500>;
-                       status = "okay";
-
-                       trips {
-                               cpu_trip_critical: critical {
-                                       temperature = <96500>;
-                                       hysteresis = <0>;
-                                       type = "critical";
-                               };
-
-                               cpu_trip_hot: hot {
-                                       temperature = <70000>;
-                                       hysteresis = <2000>;
-                                       type = "hot";
-                               };
-
-                               cpu_trip_active: active {
-                                       temperature = <50000>;
-                                       hysteresis = <2000>;
-                                       type = "active";
-                               };
-
-                               cpu_trip_passive: passive {
-                                       temperature = <30000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-                       };
-
-                       cooling-maps {
-                               cpu-critical {
-                                       cooling-device = <&fan 3 3>;
-                                       trip = <&cpu_trip_critical>;
-                               };
-
-                               cpu-hot {
-                                       cooling-device = <&fan 2 2>;
-                                       trip = <&cpu_trip_hot>;
-                               };
-
-                               cpu-active {
-                                       cooling-device = <&fan 1 1>;
-                                       trip = <&cpu_trip_active>;
-                               };
-
-                               cpu-passive {
-                                       cooling-device = <&fan 0 0>;
-                                       trip = <&cpu_trip_passive>;
-                               };
-                       };
-               };
-
-               gpu {
-                       polling-delay = <0>;
-                       polling-delay-passive = <500>;
-                       status = "okay";
-
-                       trips {
-                               gpu_alert0: critical {
-                                       temperature = <99000>;
-                                       hysteresis = <0>;
-                                       type = "critical";
-                               };
-                       };
-               };
-
-               aux {
-                       polling-delay = <0>;
-                       polling-delay-passive = <500>;
-                       status = "okay";
-
-                       trips {
-                               aux_alert0: critical {
-                                       temperature = <90000>;
-                                       hysteresis = <0>;
-                                       type = "critical";
-                               };
-                       };
-               };
-       };
 };
diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0001.dts b/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0001.dts
new file mode 100644 (file)
index 0000000..238fd98
--- /dev/null
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+
+#include "tegra194-p3668-0001.dtsi"
+#include "tegra194-p3509-0000.dtsi"
+
+/ {
+       model = "NVIDIA Jetson Xavier NX Developer Kit (eMMC)";
+       compatible = "nvidia,p3509-0000+p3668-0001", "nvidia,tegra194";
+};
diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000.dtsi b/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000.dtsi
new file mode 100644 (file)
index 0000000..d1d7722
--- /dev/null
@@ -0,0 +1,351 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/input/gpio-keys.h>
+
+/ {
+       bus@0 {
+               aconnect@2900000 {
+                       status = "okay";
+
+                       dma-controller@2930000 {
+                               status = "okay";
+                       };
+
+                       interrupt-controller@2a40000 {
+                               status = "okay";
+                       };
+               };
+
+               ddc: i2c@3190000 {
+                       status = "okay";
+               };
+
+               i2c@3160000 {
+                       eeprom@57 {
+                               compatible = "atmel,24c02";
+                               reg = <0x57>;
+
+                               label = "system";
+                               vcc-supply = <&vdd_1v8>;
+                               address-width = <8>;
+                               pagesize = <8>;
+                               size = <256>;
+                               read-only;
+                       };
+               };
+
+               hda@3510000 {
+                       nvidia,model = "jetson-xavier-nx-hda";
+                       status = "okay";
+               };
+
+               padctl@3520000 {
+                       status = "okay";
+
+                       pads {
+                               usb2 {
+                                       lanes {
+                                               usb2-1 {
+                                                       status = "okay";
+                                               };
+
+                                               usb2-2 {
+                                                       status = "okay";
+                                               };
+                                       };
+                               };
+
+                               usb3 {
+                                       lanes {
+                                               usb3-2 {
+                                                       status = "okay";
+                                               };
+                                       };
+                               };
+                       };
+
+                       ports {
+                               usb2-1 {
+                                       mode = "host";
+                                       status = "okay";
+                               };
+
+                               usb2-2 {
+                                       mode = "host";
+                                       vbus-supply = <&vdd_5v0_sys>;
+                                       status = "okay";
+                               };
+
+                               usb3-2 {
+                                       nvidia,usb2-companion = <1>;
+                                       vbus-supply = <&vdd_5v0_sys>;
+                                       status = "okay";
+                               };
+                       };
+               };
+
+               usb@3610000 {
+                       status = "okay";
+
+                       phys =  <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
+                               <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-2}>,
+                               <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-2}>;
+                       phy-names = "usb2-1", "usb2-2", "usb3-2";
+               };
+
+               spi@3270000 {
+                       status = "okay";
+
+                       flash@0 {
+                               compatible = "spi-nor";
+                               reg = <0>;
+                               spi-max-frequency = <102000000>;
+                               spi-tx-bus-width = <4>;
+                               spi-rx-bus-width = <4>;
+                       };
+               };
+
+               pwm@32d0000 {
+                       status = "okay";
+               };
+
+               host1x@13e00000 {
+                       display-hub@15200000 {
+                               status = "okay";
+                       };
+
+                       dpaux@155c0000 {
+                               status = "okay";
+                       };
+
+                       dpaux@155d0000 {
+                               status = "okay";
+                       };
+
+                       /* DP0 */
+                       sor@15b00000 {
+                               status = "okay";
+
+                               avdd-io-hdmi-dp-supply = <&vdd_1v0>;
+                               vdd-hdmi-dp-pll-supply = <&vdd_1v8hs>;
+
+                               nvidia,dpaux = <&dpaux0>;
+                       };
+
+                       /* HDMI */
+                       sor@15b40000 {
+                               status = "okay";
+
+                               avdd-io-hdmi-dp-supply = <&vdd_1v0>;
+                               vdd-hdmi-dp-pll-supply = <&vdd_1v8hs>;
+                               hdmi-supply = <&vdd_hdmi>;
+
+                               nvidia,ddc-i2c-bus = <&ddc>;
+                               nvidia,hpd-gpio = <&gpio TEGRA194_MAIN_GPIO(M, 1)
+                                                        GPIO_ACTIVE_LOW>;
+                       };
+               };
+       };
+
+       pcie@14160000 {
+               status = "okay";
+
+               vddio-pex-ctl-supply = <&vdd_1v8ao>;
+
+               phys = <&p2u_hsio_11>;
+               phy-names = "p2u-0";
+       };
+
+       pcie@141a0000 {
+               status = "okay";
+
+               vddio-pex-ctl-supply = <&vdd_1v8ao>;
+
+               phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
+                      <&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
+                      <&p2u_nvhs_6>, <&p2u_nvhs_7>;
+
+               phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
+                           "p2u-5", "p2u-6", "p2u-7";
+       };
+
+       pcie_ep@141a0000 {
+               status = "disabled";
+
+               vddio-pex-ctl-supply = <&vdd_1v8ao>;
+
+               reset-gpios = <&gpio TEGRA194_MAIN_GPIO(GG, 1) GPIO_ACTIVE_LOW>;
+
+               nvidia,refclk-select-gpios = <&gpio_aon TEGRA194_AON_GPIO(AA, 5)
+                                             GPIO_ACTIVE_HIGH>;
+
+               phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
+                      <&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
+                      <&p2u_nvhs_6>, <&p2u_nvhs_7>;
+
+               phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
+                           "p2u-5", "p2u-6", "p2u-7";
+       };
+
+       fan: fan {
+               compatible = "pwm-fan";
+               pwms = <&pwm6 0 45334>;
+
+               cooling-levels = <0 64 128 255>;
+               #cooling-cells = <2>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               force-recovery {
+                       label = "Force Recovery";
+                       gpios = <&gpio TEGRA194_MAIN_GPIO(G, 0)
+                                      GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_SLEEP>;
+                       debounce-interval = <10>;
+               };
+
+               power {
+                       label = "Power";
+                       gpios = <&gpio_aon TEGRA194_AON_GPIO(EE, 4)
+                                          GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_POWER>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+       };
+
+       vdd_5v0_sys: regulator@100 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_5V_SYS";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_3v3_sys: regulator@101 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_3V3_SYS";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_3v3_ao: regulator@102 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_3V3_AO";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_1v8: regulator@103 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_hdmi: regulator@104 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_5V0_HDMI_CON";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       thermal-zones {
+               cpu {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               cpu_trip_critical: critical {
+                                       temperature = <96500>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+
+                               cpu_trip_hot: hot {
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               cpu_trip_active: active {
+                                       temperature = <50000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+
+                               cpu_trip_passive: passive {
+                                       temperature = <30000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               cpu-critical {
+                                       cooling-device = <&fan 3 3>;
+                                       trip = <&cpu_trip_critical>;
+                               };
+
+                               cpu-hot {
+                                       cooling-device = <&fan 2 2>;
+                                       trip = <&cpu_trip_hot>;
+                               };
+
+                               cpu-active {
+                                       cooling-device = <&fan 1 1>;
+                                       trip = <&cpu_trip_active>;
+                               };
+
+                               cpu-passive {
+                                       cooling-device = <&fan 0 0>;
+                                       trip = <&cpu_trip_passive>;
+                               };
+                       };
+               };
+
+               gpu {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               gpu_alert0: critical {
+                                       temperature = <99000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               aux {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               aux_alert0: critical {
+                                       temperature = <90000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
index 0dc8304a2edddfb7c2c36a950c9c16a50f92ef2f..7da3d48cb410608398eba304cc65604544ca0ba8 100644 (file)
@@ -1,79 +1,11 @@
 // SPDX-License-Identifier: GPL-2.0
-#include "tegra194.dtsi"
-
-#include <dt-bindings/mfd/max77620.h>
+#include "tegra194-p3668.dtsi"
 
 / {
-       model = "NVIDIA Jetson Xavier NX";
+       model = "NVIDIA Jetson Xavier NX (SD-card)";
        compatible = "nvidia,p3668-0000", "nvidia,tegra194";
 
-       aliases {
-               ethernet0 = "/bus@0/ethernet@2490000";
-               i2c0 = "/bpmp/i2c";
-               i2c1 = "/bus@0/i2c@3160000";
-               i2c2 = "/bus@0/i2c@c240000";
-               i2c3 = "/bus@0/i2c@3180000";
-               i2c4 = "/bus@0/i2c@3190000";
-               i2c5 = "/bus@0/i2c@31c0000";
-               i2c6 = "/bus@0/i2c@c250000";
-               i2c7 = "/bus@0/i2c@31e0000";
-               mmc0 = "/bus@0/mmc@3460000";
-               rtc0 = "/bpmp/i2c/pmic@3c";
-               rtc1 = "/bus@0/rtc@c2a0000";
-               serial0 = &tcu;
-       };
-
-       chosen {
-               bootargs = "console=ttyS0,115200n8";
-               stdout-path = "serial0:115200n8";
-       };
-
        bus@0 {
-               ethernet@2490000 {
-                       status = "okay";
-
-                       phy-reset-gpios = <&gpio TEGRA194_MAIN_GPIO(R, 1) GPIO_ACTIVE_LOW>;
-                       phy-handle = <&phy>;
-                       phy-mode = "rgmii-id";
-
-                       mdio {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               phy: phy@0 {
-                                       compatible = "ethernet-phy-ieee802.3-c22";
-                                       reg = <0x0>;
-                                       interrupt-parent = <&gpio>;
-                                       interrupts = <TEGRA194_MAIN_GPIO(G, 4) IRQ_TYPE_LEVEL_LOW>;
-                                       #phy-cells = <0>;
-                               };
-                       };
-               };
-
-               memory-controller@2c00000 {
-                       status = "okay";
-               };
-
-               serial@3100000 {
-                       status = "okay";
-               };
-
-               i2c@3160000 {
-                       status = "okay";
-
-                       eeprom@50 {
-                               compatible = "atmel,24c02";
-                               reg = <0x50>;
-
-                               label = "module";
-                               vcc-supply = <&vdd_1v8ls>;
-                               address-width = <8>;
-                               pagesize = <8>;
-                               size = <256>;
-                               read-only;
-                       };
-               };
-
                /* SDMMC1 (SD/MMC) */
                mmc@3400000 {
                        status = "okay";
                        disable-wp;
                        vmmc-supply = <&vdd_3v3_sd>;
                };
-
-               padctl@3520000 {
-                       avdd-usb-supply = <&vdd_usb_3v3>;
-                       vclamp-usb-supply = <&vdd_1v8ao>;
-
-                       ports {
-                               usb2-1 {
-                                       vbus-supply = <&vdd_5v0_sys>;
-                               };
-
-                               usb2-3 {
-                                       vbus-supply = <&vdd_5v0_sys>;
-                               };
-
-                               usb3-0 {
-                                       vbus-supply = <&vdd_5v0_sys>;
-                               };
-
-                               usb3-3 {
-                                       vbus-supply = <&vdd_5v0_sys>;
-                               };
-                       };
-               };
-
-               rtc@c2a0000 {
-                       status = "okay";
-               };
-
-               pmc@c360000 {
-                       nvidia,invert-interrupt;
-               };
-       };
-
-       bpmp {
-               i2c {
-                       status = "okay";
-
-                       pmic: pmic@3c {
-                               compatible = "maxim,max20024";
-                               reg = <0x3c>;
-
-                               interrupt-parent = <&pmc>;
-                               interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
-                               #interrupt-cells = <2>;
-                               interrupt-controller;
-
-                               #gpio-cells = <2>;
-                               gpio-controller;
-
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&max20024_default>;
-
-                               max20024_default: pinmux {
-                                       gpio0 {
-                                               pins = "gpio0";
-                                               function = "gpio";
-                                       };
-
-                                       gpio1 {
-                                               pins = "gpio1";
-                                               function = "fps-out";
-                                               maxim,active-fps-source = <MAX77620_FPS_SRC_DEF>;
-                                       };
-
-                                       gpio2 {
-                                               pins = "gpio2";
-                                               function = "fps-out";
-                                               maxim,active-fps-source = <MAX77620_FPS_SRC_DEF>;
-                                       };
-
-                                       gpio3 {
-                                               pins = "gpio3";
-                                               function = "fps-out";
-                                               maxim,active-fps-source = <MAX77620_FPS_SRC_DEF>;
-                                       };
-
-                                       gpio4 {
-                                               pins = "gpio4";
-                                               function = "32k-out1";
-                                               drive-push-pull = <1>;
-                                       };
-
-                                       gpio6 {
-                                               pins = "gpio6";
-                                               function = "gpio";
-                                               drive-push-pull = <1>;
-                                       };
-
-                                       gpio7 {
-                                               pins = "gpio7";
-                                               function = "gpio";
-                                               drive-push-pull = <0>;
-                                       };
-                               };
-
-                               fps {
-                                       fps0 {
-                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
-                                               maxim,shutdown-fps-time-period-us = <640>;
-                                       };
-
-                                       fps1 {
-                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN1>;
-                                               maxim,shutdown-fps-time-period-us = <640>;
-                                               maxim,device-state-on-disabled-event = <MAX77620_FPS_INACTIVE_STATE_SLEEP>;
-                                       };
-
-                                       fps2 {
-                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
-                                               maxim,shutdown-fps-time-period-us = <640>;
-                                       };
-                               };
-
-                               regulators {
-                                       in-sd0-supply = <&vdd_5v0_sys>;
-                                       in-sd1-supply = <&vdd_5v0_sys>;
-                                       in-sd2-supply = <&vdd_5v0_sys>;
-                                       in-sd3-supply = <&vdd_5v0_sys>;
-                                       in-sd4-supply = <&vdd_5v0_sys>;
-
-                                       in-ldo0-1-supply = <&vdd_5v0_sys>;
-                                       in-ldo2-supply = <&vdd_5v0_sys>;
-                                       in-ldo3-5-supply = <&vdd_5v0_sys>;
-                                       in-ldo4-6-supply = <&vdd_5v0_sys>;
-                                       in-ldo7-8-supply = <&vdd_1v8ls>;
-
-                                       vdd_1v0: sd0 {
-                                               regulator-name = "VDDIO_SYS_1V0";
-                                               regulator-min-microvolt = <1000000>;
-                                               regulator-max-microvolt = <1000000>;
-                                               regulator-always-on;
-                                               regulator-boot-on;
-                                       };
-
-                                       vdd_1v8hs: sd1 {
-                                               regulator-name = "VDDIO_SYS_1V8HS";
-                                               regulator-min-microvolt = <1800000>;
-                                               regulator-max-microvolt = <1800000>;
-                                               regulator-always-on;
-                                               regulator-boot-on;
-                                       };
-
-                                       vdd_1v8ls: sd2 {
-                                               regulator-name = "VDDIO_SYS_1V8LS";
-                                               regulator-min-microvolt = <1800000>;
-                                               regulator-max-microvolt = <1800000>;
-                                               regulator-always-on;
-                                               regulator-boot-on;
-                                       };
-
-                                       vdd_1v8ao: sd3 {
-                                               regulator-name = "VDDIO_AO_1V8";
-                                               regulator-min-microvolt = <1800000>;
-                                               regulator-max-microvolt = <1800000>;
-                                               regulator-always-on;
-                                               regulator-boot-on;
-                                       };
-
-                                       sd4 {
-                                               regulator-name = "VDD_DDR_1V1";
-                                               regulator-min-microvolt = <1100000>;
-                                               regulator-max-microvolt = <1100000>;
-                                               regulator-always-on;
-                                               regulator-boot-on;
-                                       };
-
-                                       ldo0 {
-                                               regulator-name = "VDD_RTC";
-                                               regulator-min-microvolt = <800000>;
-                                               regulator-max-microvolt = <800000>;
-                                               regulator-always-on;
-                                               regulator-boot-on;
-                                       };
-
-                                       ldo2 {
-                                               regulator-name = "VDDIO_AO_3V3";
-                                               regulator-min-microvolt = <3300000>;
-                                               regulator-max-microvolt = <3300000>;
-                                               regulator-always-on;
-                                               regulator-boot-on;
-                                       };
-
-                                       ldo3 {
-                                               regulator-name = "VDD_EMMC_3V3";
-                                               regulator-min-microvolt = <3300000>;
-                                               regulator-max-microvolt = <3300000>;
-                                       };
-
-                                       vdd_usb_3v3: ldo5 {
-                                               regulator-name = "VDD_USB_3V3";
-                                               regulator-min-microvolt = <3300000>;
-                                               regulator-max-microvolt = <3300000>;
-                                               regulator-always-on;
-                                               regulator-boot-on;
-                                       };
-
-                                       ldo6 {
-                                               regulator-name = "VDD_SDIO_3V3";
-                                               regulator-min-microvolt = <3300000>;
-                                               regulator-max-microvolt = <3300000>;
-                                       };
-
-                                       ldo7 {
-                                               regulator-name = "AVDD_CSI_1V2";
-                                               regulator-min-microvolt = <1200000>;
-                                               regulator-max-microvolt = <1200000>;
-                                       };
-                               };
-                       };
-               };
        };
 
        vdd_3v3_sd: regulator@0 {
diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p3668-0001.dtsi b/arch/arm64/boot/dts/nvidia/tegra194-p3668-0001.dtsi
new file mode 100644 (file)
index 0000000..b780864
--- /dev/null
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "tegra194-p3668.dtsi"
+
+/ {
+       model = "NVIDIA Jetson Xavier NX (eMMC)";
+       compatible = "nvidia,p3668-0001", "nvidia,tegra194";
+
+       bus@0 {
+               /* SDMMC4 (eMMC) */
+               mmc@3460000 {
+                       status = "okay";
+                       bus-width = <8>;
+                       non-removable;
+
+                       vqmmc-supply = <&vdd_1v8ls>;
+                       vmmc-supply = <&vdd_emmc_3v3>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p3668.dtsi b/arch/arm64/boot/dts/nvidia/tegra194-p3668.dtsi
new file mode 100644 (file)
index 0000000..4f12721
--- /dev/null
@@ -0,0 +1,284 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "tegra194.dtsi"
+
+#include <dt-bindings/mfd/max77620.h>
+
+/ {
+       aliases {
+               ethernet0 = "/bus@0/ethernet@2490000";
+               i2c0 = "/bpmp/i2c";
+               i2c1 = "/bus@0/i2c@3160000";
+               i2c2 = "/bus@0/i2c@c240000";
+               i2c3 = "/bus@0/i2c@3180000";
+               i2c4 = "/bus@0/i2c@3190000";
+               i2c5 = "/bus@0/i2c@31c0000";
+               i2c6 = "/bus@0/i2c@c250000";
+               i2c7 = "/bus@0/i2c@31e0000";
+               mmc0 = "/bus@0/mmc@3460000";
+               rtc0 = "/bpmp/i2c/pmic@3c";
+               rtc1 = "/bus@0/rtc@c2a0000";
+               serial0 = &tcu;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8";
+               stdout-path = "serial0:115200n8";
+       };
+
+       bus@0 {
+               ethernet@2490000 {
+                       status = "okay";
+
+                       phy-reset-gpios = <&gpio TEGRA194_MAIN_GPIO(R, 1) GPIO_ACTIVE_LOW>;
+                       phy-handle = <&phy>;
+                       phy-mode = "rgmii-id";
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy: phy@0 {
+                                       compatible = "ethernet-phy-ieee802.3-c22";
+                                       reg = <0x0>;
+                                       interrupt-parent = <&gpio>;
+                                       interrupts = <TEGRA194_MAIN_GPIO(G, 4) IRQ_TYPE_LEVEL_LOW>;
+                                       #phy-cells = <0>;
+                               };
+                       };
+               };
+
+               memory-controller@2c00000 {
+                       status = "okay";
+               };
+
+               serial@3100000 {
+                       status = "okay";
+               };
+
+               i2c@3160000 {
+                       status = "okay";
+
+                       eeprom@50 {
+                               compatible = "atmel,24c02";
+                               reg = <0x50>;
+
+                               label = "module";
+                               vcc-supply = <&vdd_1v8ls>;
+                               address-width = <8>;
+                               pagesize = <8>;
+                               size = <256>;
+                               read-only;
+                       };
+               };
+
+               padctl@3520000 {
+                       avdd-usb-supply = <&vdd_usb_3v3>;
+                       vclamp-usb-supply = <&vdd_1v8ao>;
+
+                       ports {
+                               usb2-1 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+
+                               usb2-3 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+
+                               usb3-0 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+
+                               usb3-3 {
+                                       vbus-supply = <&vdd_5v0_sys>;
+                               };
+                       };
+               };
+
+               rtc@c2a0000 {
+                       status = "okay";
+               };
+
+               pmc@c360000 {
+                       nvidia,invert-interrupt;
+               };
+       };
+
+       bpmp {
+               i2c {
+                       status = "okay";
+
+                       pmic: pmic@3c {
+                               compatible = "maxim,max20024";
+                               reg = <0x3c>;
+
+                               interrupt-parent = <&pmc>;
+                               interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&max20024_default>;
+
+                               max20024_default: pinmux {
+                                       gpio0 {
+                                               pins = "gpio0";
+                                               function = "gpio";
+                                       };
+
+                                       gpio1 {
+                                               pins = "gpio1";
+                                               function = "fps-out";
+                                               maxim,active-fps-source = <MAX77620_FPS_SRC_DEF>;
+                                       };
+
+                                       gpio2 {
+                                               pins = "gpio2";
+                                               function = "fps-out";
+                                               maxim,active-fps-source = <MAX77620_FPS_SRC_DEF>;
+                                       };
+
+                                       gpio3 {
+                                               pins = "gpio3";
+                                               function = "fps-out";
+                                               maxim,active-fps-source = <MAX77620_FPS_SRC_DEF>;
+                                       };
+
+                                       gpio4 {
+                                               pins = "gpio4";
+                                               function = "32k-out1";
+                                               drive-push-pull = <1>;
+                                       };
+
+                                       gpio6 {
+                                               pins = "gpio6";
+                                               function = "gpio";
+                                               drive-push-pull = <1>;
+                                       };
+
+                                       gpio7 {
+                                               pins = "gpio7";
+                                               function = "gpio";
+                                               drive-push-pull = <0>;
+                                       };
+                               };
+
+                               fps {
+                                       fps0 {
+                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
+                                               maxim,shutdown-fps-time-period-us = <640>;
+                                       };
+
+                                       fps1 {
+                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN1>;
+                                               maxim,shutdown-fps-time-period-us = <640>;
+                                               maxim,device-state-on-disabled-event = <MAX77620_FPS_INACTIVE_STATE_SLEEP>;
+                                       };
+
+                                       fps2 {
+                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
+                                               maxim,shutdown-fps-time-period-us = <640>;
+                                       };
+                               };
+
+                               regulators {
+                                       in-sd0-supply = <&vdd_5v0_sys>;
+                                       in-sd1-supply = <&vdd_5v0_sys>;
+                                       in-sd2-supply = <&vdd_5v0_sys>;
+                                       in-sd3-supply = <&vdd_5v0_sys>;
+                                       in-sd4-supply = <&vdd_5v0_sys>;
+
+                                       in-ldo0-1-supply = <&vdd_5v0_sys>;
+                                       in-ldo2-supply = <&vdd_5v0_sys>;
+                                       in-ldo3-5-supply = <&vdd_5v0_sys>;
+                                       in-ldo4-6-supply = <&vdd_5v0_sys>;
+                                       in-ldo7-8-supply = <&vdd_1v8ls>;
+
+                                       vdd_1v0: sd0 {
+                                               regulator-name = "VDDIO_SYS_1V0";
+                                               regulator-min-microvolt = <1000000>;
+                                               regulator-max-microvolt = <1000000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       vdd_1v8hs: sd1 {
+                                               regulator-name = "VDDIO_SYS_1V8HS";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       vdd_1v8ls: sd2 {
+                                               regulator-name = "VDDIO_SYS_1V8LS";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       vdd_1v8ao: sd3 {
+                                               regulator-name = "VDDIO_AO_1V8";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       sd4 {
+                                               regulator-name = "VDD_DDR_1V1";
+                                               regulator-min-microvolt = <1100000>;
+                                               regulator-max-microvolt = <1100000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       ldo0 {
+                                               regulator-name = "VDD_RTC";
+                                               regulator-min-microvolt = <800000>;
+                                               regulator-max-microvolt = <800000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       ldo2 {
+                                               regulator-name = "VDDIO_AO_3V3";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       vdd_emmc_3v3: ldo3 {
+                                               regulator-name = "VDD_EMMC_3V3";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       vdd_usb_3v3: ldo5 {
+                                               regulator-name = "VDD_USB_3V3";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       ldo6 {
+                                               regulator-name = "VDD_SDIO_3V3";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo7 {
+                                               regulator-name = "AVDD_CSI_1V2";
+                                               regulator-min-microvolt = <1200000>;
+                                               regulator-max-microvolt = <1200000>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
index 25f36d6118f80d25cd4b0fdd86a86b25548f4f8c..9449156fae39167a8e2cffc985415f6d1d156ec4 100644 (file)
                        status = "disabled";
                };
 
+               spi@3270000 {
+                       compatible = "nvidia,tegra194-qspi";
+                       reg = <0x3270000 0x1000>;
+                       interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&bpmp TEGRA194_CLK_QSPI0>,
+                                <&bpmp TEGRA194_CLK_QSPI0_PM>;
+                       clock-names = "qspi", "qspi_out";
+                       resets = <&bpmp TEGRA194_RESET_QSPI0>;
+                       reset-names = "qspi";
+                       status = "disabled";
+               };
+
+               spi@3300000 {
+                       compatible = "nvidia,tegra194-qspi";
+                       reg = <0x3300000 0x1000>;
+                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&bpmp TEGRA194_CLK_QSPI1>,
+                                <&bpmp TEGRA194_CLK_QSPI1_PM>;
+                       clock-names = "qspi", "qspi_out";
+                       resets = <&bpmp TEGRA194_RESET_QSPI1>;
+                       reset-names = "qspi";
+                       status = "disabled";
+               };
+
                pwm1: pwm@3280000 {
                        compatible = "nvidia,tegra194-pwm",
                                     "nvidia,tegra186-pwm";
                method = "smc";
        };
 
+       sound {
+               status = "disabled";
+
+               clocks = <&bpmp TEGRA194_CLK_PLLA>,
+                        <&bpmp TEGRA194_CLK_PLLA_OUT0>;
+               clock-names = "pll_a", "plla_out0";
+               assigned-clocks = <&bpmp TEGRA194_CLK_PLLA>,
+                                 <&bpmp TEGRA194_CLK_PLLA_OUT0>,
+                                 <&bpmp TEGRA194_CLK_AUD_MCLK>;
+               assigned-clock-parents = <0>,
+                                        <&bpmp TEGRA194_CLK_PLLA>,
+                                        <&bpmp TEGRA194_CLK_PLLA_OUT0>;
+               /*
+                * PLLA supports dynamic ramp. Below initial rate is chosen
+                * for this to work and oscillate between base rates required
+                * for 8x and 11.025x sample rate streams.
+                */
+               assigned-clock-rates = <258000000>;
+       };
+
        tcu: tcu {
                compatible = "nvidia,tegra194-tcu";
                mboxes = <&hsp_top0 TEGRA_HSP_MBOX_TYPE_SM TEGRA_HSP_SM_RX(0)>,
index 69102dcea8b06d60c7d46a94aea0516106741893..497635af7fab90116054cc155e9f58752cb7c9e4 100644 (file)
                interrupt-controller@702f9000 {
                        status = "okay";
                };
+
+               ahub@702d0800 {
+                       status = "okay";
+
+                       admaif@702d0000 {
+                               status = "okay";
+                       };
+
+                       i2s@702d1000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s1_ep>;
+                                               };
+                                       };
+
+                                       i2s1_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s1_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s2_ep>;
+                                               };
+                                       };
+
+                                       i2s2_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s2_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s3_ep>;
+                                               };
+                                       };
+
+                                       i2s3_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s3_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1300 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s4_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s4_ep>;
+                                               };
+                                       };
+
+                                       i2s4_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s4_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1400 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s5_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s5_ep>;
+                                               };
+                                       };
+
+                                       i2s5_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s5_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic1_ep>;
+                                               };
+                                       };
+
+                                       dmic1_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic1_dap_ep: endpoint {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic2_ep>;
+                                               };
+                                       };
+
+                                       dmic2_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic2_dap_ep: endpoint {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic3_ep>;
+                                               };
+                                       };
+
+                                       dmic3_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic3_dap_ep: endpoint {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       ports {
+                               xbar_i2s1_port: port@a {
+                                       reg = <0xa>;
+
+                                       xbar_i2s1_ep: endpoint {
+                                               remote-endpoint = <&i2s1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s2_port: port@b {
+                                       reg = <0xb>;
+
+                                       xbar_i2s2_ep: endpoint {
+                                               remote-endpoint = <&i2s2_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s3_port: port@c {
+                                       reg = <0xc>;
+
+                                       xbar_i2s3_ep: endpoint {
+                                               remote-endpoint = <&i2s3_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s4_port: port@d {
+                                       reg = <0xd>;
+
+                                       xbar_i2s4_ep: endpoint {
+                                               remote-endpoint = <&i2s4_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s5_port: port@e {
+                                       reg = <0xe>;
+
+                                       xbar_i2s5_ep: endpoint {
+                                               remote-endpoint = <&i2s5_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic1_port: port@f {
+                                       reg = <0xf>;
+
+                                       xbar_dmic1_ep: endpoint {
+                                               remote-endpoint = <&dmic1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic2_port: port@10 {
+                                       reg = <0x10>;
+
+                                       xbar_dmic2_ep: endpoint {
+                                               remote-endpoint = <&dmic2_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic3_port: port@11 {
+                                       reg = <0x11>;
+
+                                       xbar_dmic3_ep: endpoint {
+                                               remote-endpoint = <&dmic3_cif_ep>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       sound {
+               compatible = "nvidia,tegra210-audio-graph-card";
+               status = "okay";
+
+               dais = /* FE */
+                      <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
+                      <&admaif4_port>, <&admaif5_port>, <&admaif6_port>,
+                      <&admaif7_port>, <&admaif8_port>, <&admaif9_port>,
+                      <&admaif10_port>,
+                      /* Router */
+                      <&xbar_i2s1_port>, <&xbar_i2s2_port>, <&xbar_i2s3_port>,
+                      <&xbar_i2s4_port>, <&xbar_i2s5_port>, <&xbar_dmic1_port>,
+                      <&xbar_dmic2_port>, <&xbar_dmic3_port>,
+                      /* I/O DAP Ports */
+                      <&i2s1_port>, <&i2s2_port>, <&i2s3_port>, <&i2s4_port>,
+                      <&i2s5_port>, <&dmic1_port>, <&dmic2_port>, <&dmic3_port>;
+
+               label = "jetson-tx1-ape";
        };
 };
index 6a877decffc12a8a2365ae249e5a4063317194e9..14c128a5e248d60018d69bd9b22e97a9f3f11f07 100644 (file)
                interrupt-controller@702f9000 {
                        status = "okay";
                };
+
+               ahub@702d0800 {
+                       status = "okay";
+
+                       admaif@702d0000 {
+                               status = "okay";
+                       };
+
+                       i2s@702d1200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s3_ep>;
+                                               };
+                                       };
+
+                                       i2s3_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s3_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1300 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s4_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s4_ep>;
+                                               };
+                                       };
+
+                                       i2s4_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s4_dap_ep: endpoint@0 {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic1_cif_ep: endpoint@0 {
+                                                       remote-endpoint = <&xbar_dmic1_ep>;
+                                               };
+                                       };
+
+                                       dmic1_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic1_dap_ep: endpoint@0 {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic2_cif_ep: endpoint@0 {
+                                                       remote-endpoint = <&xbar_dmic2_ep>;
+                                               };
+                                       };
+
+                                       dmic2_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic2_dap_ep: endpoint@0 {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       ports {
+                               xbar_i2s3_port: port@c {
+                                       reg = <0xc>;
+
+                                       xbar_i2s3_ep: endpoint {
+                                               remote-endpoint = <&i2s3_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s4_port: port@d {
+                                       reg = <0xd>;
+
+                                       xbar_i2s4_ep: endpoint {
+                                               remote-endpoint = <&i2s4_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic1_port: port@f {
+                                       reg = <0xf>;
+
+                                       xbar_dmic1_ep: endpoint {
+                                               remote-endpoint = <&dmic1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic2_port: port@10 {
+                                       reg = <0x10>;
+
+                                       xbar_dmic2_ep: endpoint {
+                                               remote-endpoint = <&dmic2_cif_ep>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       spi@70410000 {
+               status = "okay";
+
+               flash@0 {
+                       compatible = "spi-nor";
+                       reg = <0>;
+                       spi-max-frequency = <104000000>;
+                       spi-tx-bus-width = <2>;
+                       spi-rx-bus-width = <2>;
+               };
        };
 
        clk32k_in: clock@0 {
 
                vin-supply = <&vdd_5v0_sys>;
        };
+
+       sound {
+               compatible = "nvidia,tegra210-audio-graph-card";
+               status = "okay";
+
+               dais = /* FE */
+                      <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
+                      <&admaif4_port>, <&admaif5_port>, <&admaif6_port>,
+                      <&admaif7_port>, <&admaif8_port>, <&admaif9_port>,
+                      <&admaif10_port>,
+                      /* Router */
+                      <&xbar_i2s3_port>, <&xbar_i2s4_port>,
+                      <&xbar_dmic1_port>, <&xbar_dmic2_port>,
+                      /* I/O DAP Ports */
+                      <&i2s3_port>, <&i2s4_port>,
+                      <&dmic1_port>, <&dmic2_port>;
+
+               label = "jetson-nano-ape";
+       };
 };
index 4fbf8c15b0a13d3f5beded58151c2a6a9a76b879..26b3f98a211c2f1a39bee85b6c7fbb13c9980574 100644 (file)
                         <&tegra_car 128>, /* hda2hdmi */
                         <&tegra_car 111>; /* hda2codec_2x */
                reset-names = "hda", "hda2hdmi", "hda2codec_2x";
+               power-domains = <&pd_sor>;
                status = "disabled";
        };
 
                interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
                resets = <&tegra_car 142>;
                reset-names = "padctl";
+               nvidia,pmc =  <&tegra_pmc>;
 
                status = "disabled";
 
                status = "disabled";
        };
 
+       soctherm: thermal-sensor@700e2000 {
+               compatible = "nvidia,tegra210-soctherm";
+               reg = <0x0 0x700e2000 0x0 0x600>, /* SOC_THERM reg_base */
+                     <0x0 0x60006000 0x0 0x400>; /* CAR reg_base */
+               reg-names = "soctherm-reg", "car-reg";
+               interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "thermal", "edp";
+               clocks = <&tegra_car TEGRA210_CLK_TSENSOR>,
+                       <&tegra_car TEGRA210_CLK_SOC_THERM>;
+               clock-names = "tsensor", "soctherm";
+               resets = <&tegra_car 78>;
+               reset-names = "soctherm";
+               #thermal-sensor-cells = <1>;
+
+               throttle-cfgs {
+                       throttle_heavy: heavy {
+                               nvidia,priority = <100>;
+                               nvidia,cpu-throt-percent = <85>;
+                               nvidia,gpu-throt-level = <TEGRA_SOCTHERM_THROT_LEVEL_HIGH>;
+
+                               #cooling-cells = <2>;
+                       };
+               };
+       };
+
        mipi: mipi@700e3000 {
                compatible = "nvidia,tegra210-mipi";
                reg = <0x0 0x700e3000 0x0 0x100>;
                                            "rx9",  "tx9",
                                            "rx10", "tx10";
                                status = "disabled";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       admaif1_port: port@0 {
+                                               reg = <0>;
+
+                                               admaif1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif1_ep>;
+                                               };
+                                       };
+
+                                       admaif2_port: port@1 {
+                                               reg = <1>;
+
+                                               admaif2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif2_ep>;
+                                               };
+                                       };
+
+                                       admaif3_port: port@2 {
+                                               reg = <2>;
+
+                                               admaif3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif3_ep>;
+                                               };
+                                       };
+
+                                       admaif4_port: port@3 {
+                                               reg = <3>;
+
+                                               admaif4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif4_ep>;
+                                               };
+                                       };
+
+                                       admaif5_port: port@4 {
+                                               reg = <4>;
+
+                                               admaif5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif5_ep>;
+                                               };
+                                       };
+
+                                       admaif6_port: port@5 {
+                                               reg = <5>;
+
+                                               admaif6_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif6_ep>;
+                                               };
+                                       };
+
+                                       admaif7_port: port@6 {
+                                               reg = <6>;
+
+                                               admaif7_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif7_ep>;
+                                               };
+                                       };
+
+                                       admaif8_port: port@7 {
+                                               reg = <7>;
+
+                                               admaif8_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif8_ep>;
+                                               };
+                                       };
+
+                                       admaif9_port: port@8 {
+                                               reg = <8>;
+
+                                               admaif9_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif9_ep>;
+                                               };
+                                       };
+
+                                       admaif10_port: port@9 {
+                                               reg = <9>;
+
+                                               admaif10_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif10_ep>;
+                                               };
+                                       };
+                               };
                        };
 
                        tegra_i2s1: i2s@702d1000 {
                                sound-name-prefix = "DMIC3";
                                status = "disabled";
                        };
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0x0>;
+
+                                       xbar_admaif1_ep: endpoint {
+                                               remote-endpoint = <&admaif1_ep>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <0x1>;
+
+                                       xbar_admaif2_ep: endpoint {
+                                               remote-endpoint = <&admaif2_ep>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <0x2>;
+
+                                       xbar_admaif3_ep: endpoint {
+                                               remote-endpoint = <&admaif3_ep>;
+                                       };
+                               };
+
+                               port@3 {
+                                       reg = <0x3>;
+
+                                       xbar_admaif4_ep: endpoint {
+                                               remote-endpoint = <&admaif4_ep>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <0x4>;
+                                       xbar_admaif5_ep: endpoint {
+                                               remote-endpoint = <&admaif5_ep>;
+                                       };
+                               };
+                               port@5 {
+                                       reg = <0x5>;
+
+                                       xbar_admaif6_ep: endpoint {
+                                               remote-endpoint = <&admaif6_ep>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <0x6>;
+
+                                       xbar_admaif7_ep: endpoint {
+                                               remote-endpoint = <&admaif7_ep>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <0x7>;
+
+                                       xbar_admaif8_ep: endpoint {
+                                               remote-endpoint = <&admaif8_ep>;
+                                       };
+                               };
+
+                               port@8 {
+                                       reg = <0x8>;
+
+                                       xbar_admaif9_ep: endpoint {
+                                               remote-endpoint = <&admaif9_ep>;
+                                       };
+                               };
+
+                               port@9 {
+                                       reg = <0x9>;
+
+                                       xbar_admaif10_ep: endpoint {
+                                               remote-endpoint = <&admaif10_ep>;
+                                       };
+                               };
+                       };
                };
        };
 
                interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
                #address-cells = <1>;
                #size-cells = <0>;
-               clocks = <&tegra_car TEGRA210_CLK_QSPI>;
-               clock-names = "qspi";
+               clocks = <&tegra_car TEGRA210_CLK_QSPI>,
+                        <&tegra_car TEGRA210_CLK_QSPI_PM>;
+               clock-names = "qspi", "qspi_out";
                resets = <&tegra_car 211>;
                reset-names = "qspi";
                dmas = <&apbdma 5>, <&apbdma 5>;
                                      &{/cpus/cpu@2} &{/cpus/cpu@3}>;
        };
 
-       timer {
-               compatible = "arm,armv8-timer";
-               interrupts = <GIC_PPI 13
-                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                            <GIC_PPI 14
-                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                            <GIC_PPI 11
-                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                            <GIC_PPI 10
-                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
-               interrupt-parent = <&gic>;
-               arm,no-tick-in-suspend;
-       };
-
-       soctherm: thermal-sensor@700e2000 {
-               compatible = "nvidia,tegra210-soctherm";
-               reg = <0x0 0x700e2000 0x0 0x600>, /* SOC_THERM reg_base */
-                     <0x0 0x60006000 0x0 0x400>; /* CAR reg_base */
-               reg-names = "soctherm-reg", "car-reg";
-               interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "thermal", "edp";
-               clocks = <&tegra_car TEGRA210_CLK_TSENSOR>,
-                       <&tegra_car TEGRA210_CLK_SOC_THERM>;
-               clock-names = "tsensor", "soctherm";
-               resets = <&tegra_car 78>;
-               reset-names = "soctherm";
-               #thermal-sensor-cells = <1>;
+       sound {
+               status = "disabled";
 
-               throttle-cfgs {
-                       throttle_heavy: heavy {
-                               nvidia,priority = <100>;
-                               nvidia,cpu-throt-percent = <85>;
-                               nvidia,gpu-throt-level = <TEGRA_SOCTHERM_THROT_LEVEL_HIGH>;
+               clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
+                        <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
+               clock-names = "pll_a", "plla_out0";
 
-                               #cooling-cells = <2>;
-                       };
-               };
+               assigned-clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
+                                 <&tegra_car TEGRA210_CLK_PLL_A_OUT0>,
+                                 <&tegra_car TEGRA210_CLK_EXTERN1>;
+               assigned-clock-parents = <0>, <0>, <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
+               assigned-clock-rates = <368640000>, <49152000>, <12288000>;
        };
 
        thermal-zones {
                        };
                };
        };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13
+                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14
+                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11
+                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10
+                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+               interrupt-parent = <&gic>;
+               arm,no-tick-in-suspend;
+       };
 };
index 3b8b0370591703e08a4cd3cc6046155049f7bff7..f2de2fa0c8b890fbcb87a3829bb4f907b97c31e8 100644 (file)
@@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_R8A774A1) += r8a774a1-hihope-rzg2m-rev2.dtb
 dtb-$(CONFIG_ARCH_R8A774A1) += r8a774a1-hihope-rzg2m-rev2-ex.dtb
 dtb-$(CONFIG_ARCH_R8A774A1) += r8a774a1-hihope-rzg2m-rev2-ex-idk-1110wr.dtb
 
+dtb-$(CONFIG_ARCH_R8A774B1) += r8a774b1-beacon-rzg2n-kit.dtb
 dtb-$(CONFIG_ARCH_R8A774B1) += r8a774b1-hihope-rzg2n.dtb
 dtb-$(CONFIG_ARCH_R8A774B1) += r8a774b1-hihope-rzg2n-ex.dtb
 dtb-$(CONFIG_ARCH_R8A774B1) += r8a774b1-hihope-rzg2n-ex-idk-1110wr.dtb
@@ -21,6 +22,7 @@ dtb-$(CONFIG_ARCH_R8A774C0) += r8a774c0-ek874.dtb
 dtb-$(CONFIG_ARCH_R8A774C0) += r8a774c0-ek874-idk-2121wr.dtb
 dtb-$(CONFIG_ARCH_R8A774C0) += r8a774c0-ek874-mipi-2.1.dtb
 
+dtb-$(CONFIG_ARCH_R8A774E1) += r8a774e1-beacon-rzg2h-kit.dtb
 dtb-$(CONFIG_ARCH_R8A774E1) += r8a774e1-hihope-rzg2h.dtb
 dtb-$(CONFIG_ARCH_R8A774E1) += r8a774e1-hihope-rzg2h-ex.dtb
 dtb-$(CONFIG_ARCH_R8A774E1) += r8a774e1-hihope-rzg2h-ex-idk-1110wr.dtb
index e66b5b36e4894286e9f5a7a6db96b39090eb1b53..30c169b08536a59d38fbd3df6c29f5d0eee27fab 100644 (file)
@@ -5,23 +5,24 @@
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/clk/versaclock.h>
 
 / {
        backlight_lvds: backlight-lvds {
                compatible = "pwm-backlight";
                power-supply = <&reg_lcd>;
-               enable-gpios = <&gpio_exp1 3 GPIO_ACTIVE_LOW>;
-               pwms = <&pwm2 0 50000>;
+               enable-gpios = <&gpio_exp1 3 GPIO_ACTIVE_HIGH>;
+               pwms = <&pwm2 0 25000>;
                brightness-levels = <0 4 8 16 32 64 128 255>;
                default-brightness-level = <6>;
        };
 
-       backlight_rgb: backlight-rgb {
+       backlight_dpi: backlight-dpi {
                compatible = "pwm-backlight";
                power-supply = <&reg_lcd>;
                enable-gpios = <&gpio_exp1 7 GPIO_ACTIVE_LOW>;
-               pwms = <&pwm0 0 50000>;
-               brightness-levels = <0 4 8 16 32 64 128 255>;
+               pwms = <&pwm0 0 25000>;
+               brightness-levels = <0 25 33 50 63 75 88 100>;
                default-brightness-level = <6>;
        };
 
        keys {
                compatible = "gpio-keys";
 
-               key-1 {
+               key-1 { /* S19 */
                        gpios = <&gpio4 6 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_1>;
-                       label = "Switch-1";
+                       linux,code = <KEY_UP>;
+                       label = "Up";
                        wakeup-source;
                        debounce-interval = <20>;
                };
-               key-2 {
+               key-2 { /*S20 */
                        gpios = <&gpio3 13 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_2>;
-                       label = "Switch-2";
+                       linux,code = <KEY_LEFT>;
+                       label = "Left";
                        wakeup-source;
                        debounce-interval = <20>;
                };
-               key-3 {
+               key-3 { /* S21 */
                        gpios = <&gpio5 17 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_3>;
-                       label = "Switch-3";
+                       linux,code = <KEY_DOWN>;
+                       label = "Down";
                        wakeup-source;
                        debounce-interval = <20>;
                };
-               key-4 {
+               key-4 { /* S22 */
                        gpios = <&gpio5 20 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_4>;
-                       label = "Switch-4";
+                       linux,code = <KEY_RIGHT>;
+                       label = "Right";
                        wakeup-source;
                        debounce-interval = <20>;
                };
-               key-5 {
+               key-5 { /* S23 */
                        gpios = <&gpio5 22 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_5>;
-                       label = "Switch-4";
+                       linux,code = <KEY_ENTER>;
+                       label = "Center";
                        wakeup-source;
                        debounce-interval = <20>;
                };
                        hback-porch = <40>;
                        vfront-porch = <13>;
                        vback-porch = <29>;
-                       vsync-len = <3>;
+                       vsync-len = <1>;
                        hsync-active = <1>;
-                       vsync-active = <1>;
+                       vsync-active = <3>;
                        de-active = <1>;
                        pixelclk-active = <0>;
                };
        rgb {
                /* Different LCD with compatible timings */
                compatible = "rocktech,rk070er9427";
-               backlight = <&backlight_rgb>;
+               backlight = <&backlight_dpi>;
                enable-gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
                power-supply = <&reg_lcd>;
                port {
                regulator-name = "audio-1.8V";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
-               gpio = <&gpio_exp2 7 GPIO_ACTIVE_HIGH>;
+               gpio = <&gpio_exp4 1 GPIO_ACTIVE_HIGH>;
                enable-active-high;
        };
 
 
        vccq_sdhi0: regulator-vccq-sdhi0 {
                compatible = "regulator-gpio";
-
                regulator-name = "SDHI0 VccQ";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <3300000>;
-
                gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
                gpios-states = <1>;
                states = <3300000 1>, <1800000 0>;
-               regulator-always-on;
        };
 
        /* External DU dot clocks */
        };
 };
 
-&audio_clk_a {
-       clock-frequency = <24576000>;
-       assigned-clocks = <&versaclock6_bb 4>;
-       assigned-clock-rates = <24576000>;
-};
-
 &audio_clk_b {
        clock-frequency = <22579200>;
 };
        status = "okay";
 };
 
-&du {
-       pinctrl-0 = <&du_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-
-       clocks = <&cpg CPG_MOD 724>,
-               <&cpg CPG_MOD 723>,
-               <&cpg CPG_MOD 722>,
-               <&versaclock5 1>,
-               <&x302_clk>,
-               <&versaclock5 2>;
-       clock-names = "du.0", "du.1", "du.2",
-               "dclkin.0", "dclkin.1", "dclkin.2";
-};
-
 &du_out_rgb {
        remote-endpoint = <&rgb_panel>;
 };
 
 &i2c2 {
        status = "okay";
-       clock-frequency = <100000>;
+       clock-frequency = <400000>;
        pinctrl-0 = <&i2c2_pins>;
        pinctrl-names = "default";
 
                #clock-cells = <1>;
                clocks = <&x304_clk>;
                clock-names = "xin";
-               /* CSI0_MCLK, CSI1_MCLK, AUDIO_CLKIN, USB_HUB_MCLK_BB */
+
                assigned-clocks = <&versaclock6_bb 1>,
                                   <&versaclock6_bb 2>,
                                   <&versaclock6_bb 3>,
                                   <&versaclock6_bb 4>;
                assigned-clock-rates =  <24000000>, <24000000>, <24000000>, <24576000>;
+
+               OUT1 {
+                       idt,mode = <VC5_CMOS>;
+                       idt,voltage-microvolt = <1800000>;
+                       idt,slew-percent = <100>;
+               };
+
+               OUT2 {
+                       idt,mode = <VC5_CMOS>;
+                       idt,voltage-microvolt = <1800000>;
+                       idt,slew-percent = <100>;
+               };
+
+               OUT3 {
+                       idt,mode = <VC5_CMOS>;
+                       idt,voltage-microvolt = <3300000>;
+                       idt,slew-percent = <100>;
+               };
+
+               OUT4 {
+                       idt,mode = <VC5_CMOS>;
+                       idt,voltage-microvolt = <3300000>;
+                       idt,slew-percent = <100>;
+               };
        };
 };
 
 
 &i2c5 {
        status = "okay";
-       clock-frequency = <100000>;
+       clock-frequency = <400000>;
        pinctrl-0 = <&i2c5_pins>;
        pinctrl-names = "default";
 
        codec: wm8962@1a {
                compatible = "wlf,wm8962";
                reg = <0x1a>;
+               clocks = <&versaclock6_bb 3>;
                DCVDD-supply = <&reg_audio>;
                DBVDD-supply = <&reg_audio>;
                AVDD-supply = <&reg_audio>;
        };
 };
 
+&msiof1 {
+       pinctrl-0 = <&msiof1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+       cs-gpios = <&gpio3 10 GPIO_ACTIVE_LOW>;
+};
+
 &ohci0 {
        dr_mode = "otg";
        status = "okay";
                bias-pull-down;
        };
 
+       msiof1_pins: msiof1 {
+               groups = "msiof1_clk_g", "msiof1_rxd_g", "msiof1_txd_g";
+               function = "msiof1";
+       };
+
        pwm0_pins: pwm0 {
                groups = "pwm0";
                function = "pwm0";
 
        pwm2_pins: pwm2 {
                groups = "pwm2_a";
-               function = "pwm2_a";
+               function = "pwm2";
        };
 
        sdhi0_pins: sd0 {
        };
 
        sound_clk_pins: sound_clk {
-               groups = "audio_clk_a_a";
+               groups = "audio_clk_a_a", "audio_clk_b_a";
                function = "audio_clk";
        };
 
 
        status = "okay";
 
-       clocks = <&cpg CPG_MOD 1005>,
-                <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>,
-                <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>,
-                <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>,
-                <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>,
-                <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>,
-                <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>,
-                <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>,
-                <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>,
-                <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>,
-                <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>,
-                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
-                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
-                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
-                <&audio_clk_a>, <&audio_clk_b>, <&audio_clk_c>,
-                <&cpg CPG_CORE R8A774A1_CLK_S0D4>;
-
        ports {
                #address-cells = <1>;
                #size-cells = <0>;
index 8ac167aa18f04743d3bab011249723c905ea70af..8d3a4d6ee88539ebaa9a9e44c33b9b051c403bd8 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clk/versaclock.h>
 
 / {
        memory@48000000 {
                reg = <0x0 0x48000000 0x0 0x78000000>;
        };
 
-       memory@600000000 {
-               device_type = "memory";
-               reg = <0x6 0x00000000 0x0 0x80000000>;
-       };
-
        osc_32k: osc_32k {
                compatible = "fixed-clock";
                #clock-cells = <0>;
@@ -89,7 +85,6 @@
        pinctrl-names = "default";
        uart-has-rtscts;
        status = "okay";
-       max-speed = <4000000>;
 
        bluetooth {
                compatible = "brcm,bcm43438-bt";
@@ -98,6 +93,7 @@
                device-wakeup-gpios = <&pca9654 5 GPIO_ACTIVE_HIGH>;
                clocks = <&osc_32k>;
                clock-names = "extclk";
+               max-speed = <4000000>;
        };
 };
 
 
 &i2c4 {
        status = "okay";
-       clock-frequency = <400000>;
+       clock-frequency = <100000>;
 
        pca9654: gpio@20 {
                compatible = "onnn,pca9654";
        };
 
        eeprom@50 {
-               compatible = "microchip,at24c64", "atmel,24c64";
+               compatible = "microchip,24c64", "atmel,24c64";
                pagesize = <32>;
                read-only;      /* Manufacturing EEPROM programmed at factory */
                reg = <0x50>;
                                   <&versaclock5 2>,
                                   <&versaclock5 3>,
                                   <&versaclock5 4>;
+
                assigned-clock-rates = <33333333>, <33333333>, <50000000>, <125000000>;
+
+               OUT1 {
+                       idt,mode = <VC5_CMOS>;
+                       idt,voltage-microvolt = <1800000>;
+                       idt,slew-percent = <100>;
+               };
+
+               OUT2 {
+                       idt,mode = <VC5_CMOS>;
+                       idt,voltage-microvolt = <1800000>;
+                       idt,slew-percent = <100>;
+               };
+
+               OUT3 {
+                       idt,mode = <VC5_CMOS>;
+                       idt,voltage-microvolt = <1800000>;
+                       idt,slew-percent = <100>;
+               };
+
+               OUT4 {
+                       idt,mode = <VC5_CMOS>;
+                       idt,voltage-microvolt = <3300000>;
+                       idt,slew-percent = <100>;
+               };
        };
 };
 
        vqmmc-supply = <&reg_1p8v>;
        bus-width = <8>;
        mmc-hs200-1_8v;
+       no-sd;
+       no-sdio;
        non-removable;
        fixed-emmc-driver-type = <1>;
        status = "okay";
 &usb3s0_clk {
        clock-frequency = <100000000>;
 };
-
-&vspb {
-       status = "okay";
-};
-
-&vspi0 {
-       status = "okay";
-};
index 2eda9f66ae81d8ff6b1bc4b8fbff68dd9bc0f912..7a3da9b06f677f0caa52ba604dda4dbfed3eeac1 100644 (file)
        vqmmc-supply = <&reg_1p8v>;
        bus-width = <8>;
        mmc-hs200-1_8v;
+       no-sd;
+       no-sdio;
        non-removable;
        fixed-emmc-driver-type = <1>;
        status = "okay";
index 2c5b057c30c62ee5c101b8ac56d174046a2584f4..501cb05da228de6c5517a946c06ccf7958bed86e 100644 (file)
        chosen {
                stdout-path = "serial0:115200n8";
        };
+
+       memory@600000000 {
+               device_type = "memory";
+               reg = <0x6 0x00000000 0x0 0x80000000>;
+       };
+};
+
+&du {
+       pinctrl-0 = <&du_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&cpg CPG_MOD 722>,
+                <&versaclock5 1>,
+                <&x302_clk>,
+                <&versaclock5 2>;
+       clock-names = "du.0", "du.1", "du.2",
+                     "dclkin.0", "dclkin.1", "dclkin.2";
+};
+
+/* Reference versaclock instead of audio_clk_a */
+&rcar_sound {
+       clocks = <&cpg CPG_MOD 1005>,
+                <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>,
+                <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>,
+                <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>,
+                <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>,
+                <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>,
+                <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>,
+                <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>,
+                <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>,
+                <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>,
+                <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
+                <&versaclock6_bb 4>, <&audio_clk_b>,
+                <&audio_clk_c>,
+                <&cpg CPG_CORE R8A774A1_CLK_S0D4>;
 };
index d37ec42a1caa7b5a273eec9125f5c202f7544871..d64fb8b1b86c37318a8b63abdd4630b0b954f9fc 100644 (file)
                        status = "disabled";
                };
 
+               usb2_clksel: clock-controller@e6590630 {
+                       compatible = "renesas,r8a774a1-rcar-usb2-clock-sel",
+                                    "renesas,rcar-gen3-usb2-clock-sel";
+                       reg = <0 0xe6590630 0 0x02>;
+                       clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>,
+                                <&usb_extal_clk>, <&usb3s0_clk>;
+                       clock-names = "ehci_ohci", "hs-usb-if",
+                                     "usb_extal", "usb_xtal";
+                       #clock-cells = <0>;
+                       power-domains = <&sysc R8A774A1_PD_ALWAYS_ON>;
+                       resets = <&cpg 703>, <&cpg 704>;
+                       reset-names = "ehci_ohci", "hs-usb-if";
+                       status = "disabled";
+               };
+
                usb_dmac0: dma-controller@e65a0000 {
                        compatible = "renesas,r8a774a1-usb-dmac",
                                     "renesas,usb-dmac";
                        status = "disabled";
                };
 
+               rpc: spi@ee200000 {
+                       compatible = "renesas,r8a774a1-rpc-if",
+                                    "renesas,rcar-gen3-rpc-if";
+                       reg = <0 0xee200000 0 0x200>,
+                             <0 0x08000000 0 0x4000000>,
+                             <0 0xee208000 0 0x100>;
+                       reg-names = "regs", "dirmap", "wbuf";
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 917>;
+                       clock-names = "rpc";
+                       power-domains = <&sysc R8A774A1_PD_ALWAYS_ON>;
+                       resets = <&cpg 917>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                gic: interrupt-controller@f1010000 {
                        compatible = "arm,gic-400";
                        #interrupt-cells = <3>;
diff --git a/arch/arm64/boot/dts/renesas/r8a774b1-beacon-rzg2n-kit.dts b/arch/arm64/boot/dts/renesas/r8a774b1-beacon-rzg2n-kit.dts
new file mode 100644 (file)
index 0000000..71763f4
--- /dev/null
@@ -0,0 +1,66 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2020, Compass Electronics Group, LLC
+ */
+
+/dts-v1/;
+
+#include "r8a774b1.dtsi"
+#include "beacon-renesom-som.dtsi"
+#include "beacon-renesom-baseboard.dtsi"
+
+/ {
+       model = "Beacon Embedded Works RZ/G2N Development Kit";
+       compatible =    "beacon,beacon-rzg2n", "renesas,r8a774b1";
+
+       aliases {
+               serial0 = &scif2;
+               serial1 = &hscif0;
+               serial2 = &hscif1;
+               serial3 = &scif0;
+               serial4 = &hscif2;
+               serial5 = &scif5;
+               serial6 = &scif4;
+               ethernet0 = &avb;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&du {
+       pinctrl-0 = <&du_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 724>,
+               <&cpg CPG_MOD 723>,
+               <&cpg CPG_MOD 721>,
+               <&versaclock5 1>,
+               <&x302_clk>,
+               <&versaclock5 2>;
+       clock-names = "du.0", "du.1", "du.3",
+               "dclkin.0", "dclkin.1", "dclkin.3";
+};
+
+/* Reference versaclock instead of audio_clk_a */
+&rcar_sound {
+       clocks = <&cpg CPG_MOD 1005>,
+                <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>,
+                <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>,
+                <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>,
+                <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>,
+                <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>,
+                <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>,
+                <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>,
+                <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>,
+                <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>,
+                <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
+                <&versaclock6_bb 4>, <&audio_clk_b>,
+                <&audio_clk_c>,
+                <&cpg CPG_CORE R8A774B1_CLK_S0D4>;
+};
index 83523916d3605c442e5e180e35f0a11f47f1c688..5b05474dc272788414fba848d01bb0f559260dc5 100644 (file)
                        status = "disabled";
                };
 
+               usb2_clksel: clock-controller@e6590630 {
+                       compatible = "renesas,r8a774b1-rcar-usb2-clock-sel",
+                                    "renesas,rcar-gen3-usb2-clock-sel";
+                       reg = <0 0xe6590630 0 0x02>;
+                       clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>,
+                                <&usb_extal_clk>, <&usb3s0_clk>;
+                       clock-names = "ehci_ohci", "hs-usb-if",
+                                     "usb_extal", "usb_xtal";
+                       #clock-cells = <0>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 703>, <&cpg 704>;
+                       reset-names = "ehci_ohci", "hs-usb-if";
+                       status = "disabled";
+               };
+
                usb_dmac0: dma-controller@e65a0000 {
                        compatible = "renesas,r8a774b1-usb-dmac",
                                     "renesas,usb-dmac";
                        status = "disabled";
                };
 
+               rpc: spi@ee200000 {
+                       compatible = "renesas,r8a774b1-rpc-if",
+                                    "renesas,rcar-gen3-rpc-if";
+                       reg = <0 0xee200000 0 0x200>,
+                             <0 0x08000000 0 0x4000000>,
+                             <0 0xee208000 0 0x100>;
+                       reg-names = "regs", "dirmap", "wbuf";
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 917>;
+                       clock-names = "rpc";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 917>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                sata: sata@ee300000 {
                        compatible = "renesas,sata-r8a774b1",
                                     "renesas,rcar-gen3-sata";
index e0e54342cd4c77d4b6c03e8befb6c7d8d31eefa4..20fa3caa050e5d5ec0eaae8904e3b1c632fdeebc 100644 (file)
                        status = "disabled";
                };
 
+               rpc: spi@ee200000 {
+                       compatible = "renesas,r8a774c0-rpc-if",
+                                    "renesas,rcar-gen3-rpc-if";
+                       reg = <0 0xee200000 0 0x200>,
+                             <0 0x08000000 0 0x4000000>,
+                             <0 0xee208000 0 0x100>;
+                       reg-names = "regs", "dirmap", "wbuf";
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 917>;
+                       clock-names = "rpc";
+                       power-domains = <&sysc R8A774C0_PD_ALWAYS_ON>;
+                       resets = <&cpg 917>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                gic: interrupt-controller@f1010000 {
                        compatible = "arm,gic-400";
                        #interrupt-cells = <3>;
diff --git a/arch/arm64/boot/dts/renesas/r8a774e1-beacon-rzg2h-kit.dts b/arch/arm64/boot/dts/renesas/r8a774e1-beacon-rzg2h-kit.dts
new file mode 100644 (file)
index 0000000..273f062
--- /dev/null
@@ -0,0 +1,71 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2020, Compass Electronics Group, LLC
+ */
+
+/dts-v1/;
+
+#include "r8a774e1.dtsi"
+#include "beacon-renesom-som.dtsi"
+#include "beacon-renesom-baseboard.dtsi"
+
+/ {
+       model = "Beacon Embedded Works RZ/G2H Development Kit";
+       compatible =    "beacon,beacon-rzg2h", "renesas,r8a774e1";
+
+       aliases {
+               serial0 = &scif2;
+               serial1 = &hscif0;
+               serial2 = &hscif1;
+               serial3 = &scif0;
+               serial4 = &hscif2;
+               serial5 = &scif5;
+               serial6 = &scif4;
+               ethernet0 = &avb;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@500000000 {
+               device_type = "memory";
+               reg = <0x5 0x00000000 0x0 0x80000000>;
+       };
+};
+
+&du {
+       pinctrl-0 = <&du_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 724>,
+               <&cpg CPG_MOD 723>,
+               <&cpg CPG_MOD 721>,
+               <&versaclock5 1>,
+               <&x302_clk>,
+               <&versaclock5 2>;
+       clock-names = "du.0", "du.1", "du.3",
+               "dclkin.0", "dclkin.1", "dclkin.3";
+};
+
+/* Reference versaclock instead of audio_clk_a */
+&rcar_sound {
+       clocks = <&cpg CPG_MOD 1005>,
+                <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>,
+                <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>,
+                <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>,
+                <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>,
+                <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>,
+                <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>,
+                <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>,
+                <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>,
+                <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>,
+                <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
+                <&versaclock6_bb 4>, <&audio_clk_b>,
+                <&audio_clk_c>,
+                <&cpg CPG_CORE R8A774E1_CLK_S0D4>;
+};
index 1333b02d623a5762aac6f6e8dccc551b07c998c0..8eb006cbd9af4c98f4dc28b5b12c049da83f20dc 100644 (file)
                        status = "disabled";
                };
 
+               usb2_clksel: clock-controller@e6590630 {
+                       compatible = "renesas,r8a774e1-rcar-usb2-clock-sel",
+                                    "renesas,rcar-gen3-usb2-clock-sel";
+                       reg = <0 0xe6590630 0 0x02>;
+                       clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>,
+                                <&usb_extal_clk>, <&usb3s0_clk>;
+                       clock-names = "ehci_ohci", "hs-usb-if",
+                                     "usb_extal", "usb_xtal";
+                       #clock-cells = <0>;
+                       power-domains = <&sysc R8A774E1_PD_ALWAYS_ON>;
+                       resets = <&cpg 703>, <&cpg 704>;
+                       reset-names = "ehci_ohci", "hs-usb-if";
+                       status = "disabled";
+               };
+
                usb_dmac0: dma-controller@e65a0000 {
                        compatible = "renesas,r8a774e1-usb-dmac",
                                     "renesas,usb-dmac";
                        status = "disabled";
                };
 
+               rpc: spi@ee200000 {
+                       compatible = "renesas,r8a774e1-rpc-if",
+                                    "renesas,rcar-gen3-rpc-if";
+                       reg = <0 0xee200000 0 0x200>,
+                             <0 0x08000000 0 0x4000000>,
+                             <0 0xee208000 0 0x100>;
+                       reg-names = "regs", "dirmap", "wbuf";
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 917>;
+                       clock-names = "rpc";
+                       power-domains = <&sysc R8A774E1_PD_ALWAYS_ON>;
+                       resets = <&cpg 917>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                sata: sata@ee300000 {
                        compatible = "renesas,sata-r8a774e1",
                                     "renesas,rcar-gen3-sata";
index 9d60bcf69e4f52ce5456d59118a4c693934865c5..5c39152e45707441d3c5f31bb50fcfe11c883b4d 100644 (file)
                        resets = <&cpg 407>;
                };
 
+               tmu0: timer@e61e0000 {
+                       compatible = "renesas,tmu-r8a7795", "renesas,tmu";
+                       reg = <0 0xe61e0000 0 0x30>;
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 125>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+                       resets = <&cpg 125>;
+                       status = "disabled";
+               };
+
+               tmu1: timer@e6fc0000 {
+                       compatible = "renesas,tmu-r8a7795", "renesas,tmu";
+                       reg = <0 0xe6fc0000 0 0x30>;
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 124>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+                       resets = <&cpg 124>;
+                       status = "disabled";
+               };
+
+               tmu2: timer@e6fd0000 {
+                       compatible = "renesas,tmu-r8a7795", "renesas,tmu";
+                       reg = <0 0xe6fd0000 0 0x30>;
+                       interrupts = <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 123>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+                       resets = <&cpg 123>;
+                       status = "disabled";
+               };
+
+               tmu3: timer@e6fe0000 {
+                       compatible = "renesas,tmu-r8a7795", "renesas,tmu";
+                       reg = <0 0xe6fe0000 0 0x30>;
+                       interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 122>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+                       resets = <&cpg 122>;
+                       status = "disabled";
+               };
+
+               tmu4: timer@ffc00000 {
+                       compatible = "renesas,tmu-r8a7795", "renesas,tmu";
+                       reg = <0 0xffc00000 0 0x30>;
+                       interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 121>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+                       resets = <&cpg 121>;
+                       status = "disabled";
+               };
+
                i2c0: i2c@e6500000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
index 53b9aa26c9b13fa7d99061b071f52cd2d3881c63..25d947a81b294a8138ed8a928cd4c787187866d7 100644 (file)
                        resets = <&cpg 407>;
                };
 
+               tmu0: timer@e61e0000 {
+                       compatible = "renesas,tmu-r8a7796", "renesas,tmu";
+                       reg = <0 0xe61e0000 0 0x30>;
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 125>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
+                       resets = <&cpg 125>;
+                       status = "disabled";
+               };
+
+               tmu1: timer@e6fc0000 {
+                       compatible = "renesas,tmu-r8a7796", "renesas,tmu";
+                       reg = <0 0xe6fc0000 0 0x30>;
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 124>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
+                       resets = <&cpg 124>;
+                       status = "disabled";
+               };
+
+               tmu2: timer@e6fd0000 {
+                       compatible = "renesas,tmu-r8a7796", "renesas,tmu";
+                       reg = <0 0xe6fd0000 0 0x30>;
+                       interrupts = <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 123>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
+                       resets = <&cpg 123>;
+                       status = "disabled";
+               };
+
+               tmu3: timer@e6fe0000 {
+                       compatible = "renesas,tmu-r8a7796", "renesas,tmu";
+                       reg = <0 0xe6fe0000 0 0x30>;
+                       interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 122>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
+                       resets = <&cpg 122>;
+                       status = "disabled";
+               };
+
+               tmu4: timer@ffc00000 {
+                       compatible = "renesas,tmu-r8a7796", "renesas,tmu";
+                       reg = <0 0xffc00000 0 0x30>;
+                       interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 121>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
+                       resets = <&cpg 121>;
+                       status = "disabled";
+               };
+
                i2c0: i2c@e6500000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
index 4b737c616257c241c091137b3e6451c5f4042a35..e8c31ebec09730c41591e09b09e39d9f028ea170 100644 (file)
                        reg = <0 0xe6060000 0 0x50c>;
                };
 
+               cmt0: timer@e60f0000 {
+                       compatible = "renesas,r8a77961-cmt0",
+                                    "renesas,rcar-gen3-cmt0";
+                       reg = <0 0xe60f0000 0 0x1004>;
+                       interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 303>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 303>;
+                       status = "disabled";
+               };
+
+               cmt1: timer@e6130000 {
+                       compatible = "renesas,r8a77961-cmt1",
+                                    "renesas,rcar-gen3-cmt1";
+                       reg = <0 0xe6130000 0 0x1004>;
+                       interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 302>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 302>;
+                       status = "disabled";
+               };
+
+               cmt2: timer@e6140000 {
+                       compatible = "renesas,r8a77961-cmt1",
+                                    "renesas,rcar-gen3-cmt1";
+                       reg = <0 0xe6140000 0 0x1004>;
+                       interrupts = <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 301>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 301>;
+                       status = "disabled";
+               };
+
+               cmt3: timer@e6148000 {
+                       compatible = "renesas,r8a77961-cmt1",
+                                    "renesas,rcar-gen3-cmt1";
+                       reg = <0 0xe6148000 0 0x1004>;
+                       interrupts = <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 476 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 477 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 300>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 300>;
+                       status = "disabled";
+               };
+
                cpg: clock-controller@e6150000 {
                        compatible = "renesas,r8a77961-cpg-mssr";
                        reg = <0 0xe6150000 0 0x1000>;
                        /* placeholder */
                };
 
+               tmu0: timer@e61e0000 {
+                       compatible = "renesas,tmu-r8a77961", "renesas,tmu";
+                       reg = <0 0xe61e0000 0 0x30>;
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 125>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 125>;
+                       status = "disabled";
+               };
+
+               tmu1: timer@e6fc0000 {
+                       compatible = "renesas,tmu-r8a77961", "renesas,tmu";
+                       reg = <0 0xe6fc0000 0 0x30>;
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 124>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 124>;
+                       status = "disabled";
+               };
+
+               tmu2: timer@e6fd0000 {
+                       compatible = "renesas,tmu-r8a77961", "renesas,tmu";
+                       reg = <0 0xe6fd0000 0 0x30>;
+                       interrupts = <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 123>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 123>;
+                       status = "disabled";
+               };
+
+               tmu3: timer@e6fe0000 {
+                       compatible = "renesas,tmu-r8a77961", "renesas,tmu";
+                       reg = <0 0xe6fe0000 0 0x30>;
+                       interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 122>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 122>;
+                       status = "disabled";
+               };
+
+               tmu4: timer@ffc00000 {
+                       compatible = "renesas,tmu-r8a77961", "renesas,tmu";
+                       reg = <0 0xffc00000 0 0x30>;
+                       interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 121>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 121>;
+                       status = "disabled";
+               };
+
                i2c0: i2c@e6500000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
index 4a913df17b1dc2196758dff9fec6931d765ad8ee..657b20d3533bd398c6d323ccd61372c167a3a53e 100644 (file)
                        resets = <&cpg 407>;
                };
 
+               tmu0: timer@e61e0000 {
+                       compatible = "renesas,tmu-r8a77965", "renesas,tmu";
+                       reg = <0 0xe61e0000 0 0x30>;
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 125>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
+                       resets = <&cpg 125>;
+                       status = "disabled";
+               };
+
+               tmu1: timer@e6fc0000 {
+                       compatible = "renesas,tmu-r8a77965", "renesas,tmu";
+                       reg = <0 0xe6fc0000 0 0x30>;
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 124>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
+                       resets = <&cpg 124>;
+                       status = "disabled";
+               };
+
+               tmu2: timer@e6fd0000 {
+                       compatible = "renesas,tmu-r8a77965", "renesas,tmu";
+                       reg = <0 0xe6fd0000 0 0x30>;
+                       interrupts = <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 123>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
+                       resets = <&cpg 123>;
+                       status = "disabled";
+               };
+
+               tmu3: timer@e6fe0000 {
+                       compatible = "renesas,tmu-r8a77965", "renesas,tmu";
+                       reg = <0 0xe6fe0000 0 0x30>;
+                       interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 122>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
+                       resets = <&cpg 122>;
+                       status = "disabled";
+               };
+
+               tmu4: timer@ffc00000 {
+                       compatible = "renesas,tmu-r8a77965", "renesas,tmu";
+                       reg = <0 0xffc00000 0 0x30>;
+                       interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 121>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
+                       resets = <&cpg 121>;
+                       status = "disabled";
+               };
+
                i2c0: i2c@e6500000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
index 422ec53740cbe6676973fe3e74b629f29a5f7558..04d47c0c9bb993d7954b7cccf072d2f775995826 100644 (file)
        vqmmc-supply = <&vddq_vin01>;
        mmc-hs200-1_8v;
        bus-width = <8>;
+       no-sd;
+       no-sdio;
        non-removable;
        status = "okay";
 };
index e0ccca2222d2d00c23bc354d3f1ae37dc70fadcf..f74f8b9993f1d79c6eab2cbda34236bc144944c0 100644 (file)
        mmc-hs200-1_8v;
        mmc-hs400-1_8v;
        bus-width = <8>;
+       no-sd;
+       no-sdio;
        non-removable;
        full-pwr-cycle-in-suspend;
        status = "okay";
index 87d41bc076a99d95dc327bf5324a679c0156f367..5010f23fafcc7f98e1b1d7f7c9de7741f636471e 100644 (file)
                        resets = <&cpg 407>;
                };
 
+               tmu0: timer@e61e0000 {
+                       compatible = "renesas,tmu-r8a77990", "renesas,tmu";
+                       reg = <0 0xe61e0000 0 0x30>;
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 125>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+                       resets = <&cpg 125>;
+                       status = "disabled";
+               };
+
+               tmu1: timer@e6fc0000 {
+                       compatible = "renesas,tmu-r8a77990", "renesas,tmu";
+                       reg = <0 0xe6fc0000 0 0x30>;
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 124>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+                       resets = <&cpg 124>;
+                       status = "disabled";
+               };
+
+               tmu2: timer@e6fd0000 {
+                       compatible = "renesas,tmu-r8a77990", "renesas,tmu";
+                       reg = <0 0xe6fd0000 0 0x30>;
+                       interrupts = <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 123>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+                       resets = <&cpg 123>;
+                       status = "disabled";
+               };
+
+               tmu3: timer@e6fe0000 {
+                       compatible = "renesas,tmu-r8a77990", "renesas,tmu";
+                       reg = <0 0xe6fe0000 0 0x30>;
+                       interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 122>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+                       resets = <&cpg 122>;
+                       status = "disabled";
+               };
+
+               tmu4: timer@ffc00000 {
+                       compatible = "renesas,tmu-r8a77990", "renesas,tmu";
+                       reg = <0 0xffc00000 0 0x30>;
+                       interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 121>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+                       resets = <&cpg 121>;
+                       status = "disabled";
+               };
+
                i2c0: i2c@e6500000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
index 8f471881b7a367db646a1d5684f1867dc5f8f2d8..6783c3ad08567e4b3980b000e65d8efc607a02e0 100644 (file)
        vqmmc-supply = <&reg_1p8v>;
        bus-width = <8>;
        mmc-hs200-1_8v;
+       no-sd;
+       no-sdio;
        non-removable;
        status = "okay";
 };
index e1af7c4782f4d7684d6e4e0e8aab5bb1eceb2dde..2319271c881b69cebef62c6a87d81ff31958cd85 100644 (file)
                        reg = <0 0xe6060000 0 0x508>;
                };
 
+               cmt0: timer@e60f0000 {
+                       compatible = "renesas,r8a77995-cmt0",
+                                    "renesas,rcar-gen3-cmt0";
+                       reg = <0 0xe60f0000 0 0x1004>;
+                       interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 303>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 303>;
+                       status = "disabled";
+               };
+
+               cmt1: timer@e6130000 {
+                       compatible = "renesas,r8a77995-cmt1",
+                                    "renesas,rcar-gen3-cmt1";
+                       reg = <0 0xe6130000 0 0x1004>;
+                       interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 302>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 302>;
+                       status = "disabled";
+               };
+
+               cmt2: timer@e6140000 {
+                       compatible = "renesas,r8a77995-cmt1",
+                                    "renesas,rcar-gen3-cmt1";
+                       reg = <0 0xe6140000 0 0x1004>;
+                       interrupts = <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 301>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 301>;
+                       status = "disabled";
+               };
+
+               cmt3: timer@e6148000 {
+                       compatible = "renesas,r8a77995-cmt1",
+                                    "renesas,rcar-gen3-cmt1";
+                       reg = <0 0xe6148000 0 0x1004>;
+                       interrupts = <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 476 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 477 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 300>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 300>;
+                       status = "disabled";
+               };
+
                cpg: clock-controller@e6150000 {
                        compatible = "renesas,r8a77995-cpg-mssr";
                        reg = <0 0xe6150000 0 0x1000>;
                        resets = <&cpg 407>;
                };
 
+               tmu0: timer@e61e0000 {
+                       compatible = "renesas,tmu-r8a77995", "renesas,tmu";
+                       reg = <0 0xe61e0000 0 0x30>;
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 125>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 125>;
+                       status = "disabled";
+               };
+
+               tmu1: timer@e6fc0000 {
+                       compatible = "renesas,tmu-r8a77995", "renesas,tmu";
+                       reg = <0 0xe6fc0000 0 0x30>;
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 124>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 124>;
+                       status = "disabled";
+               };
+
+               tmu2: timer@e6fd0000 {
+                       compatible = "renesas,tmu-r8a77995", "renesas,tmu";
+                       reg = <0 0xe6fd0000 0 0x30>;
+                       interrupts = <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 123>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 123>;
+                       status = "disabled";
+               };
+
+               tmu3: timer@e6fe0000 {
+                       compatible = "renesas,tmu-r8a77995", "renesas,tmu";
+                       reg = <0 0xe6fe0000 0 0x30>;
+                       interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 122>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 122>;
+                       status = "disabled";
+               };
+
+               tmu4: timer@ffc00000 {
+                       compatible = "renesas,tmu-r8a77995", "renesas,tmu";
+                       reg = <0 0xffc00000 0 0x30>;
+                       interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 121>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 121>;
+                       status = "disabled";
+               };
+
                i2c0: i2c@e6500000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
index 4ba269a4cec8b224058ea281309461d835369dfd..fa284a7260d68251c0a786d591a7e59fe44fc413 100644 (file)
@@ -5,6 +5,7 @@
  * Copyright (C) 2020 Renesas Electronics Corp.
  */
 
+#include <dt-bindings/gpio/gpio.h>
 #include "r8a779a0.dtsi"
 
 / {
                device_type = "memory";
                reg = <0x7 0x00000000 0x0 0x80000000>;
        };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+};
+
+&avb0 {
+       pinctrl-0 = <&avb0_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy0>;
+       tx-internal-delay-ps = <2000>;
+       status = "okay";
+
+       phy0: ethernet-phy@0 {
+               rxc-skew-ps = <1500>;
+               reg = <0>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
+       };
 };
 
 &extal_clk {
        clock-frequency = <32768>;
 };
 
+&i2c0 {
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+       clock-frequency = <400000>;
+};
+
+&i2c1 {
+       pinctrl-0 = <&i2c1_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+       clock-frequency = <400000>;
+};
+
+&i2c6 {
+       pinctrl-0 = <&i2c6_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+       clock-frequency = <400000>;
+};
+
+&mmc0 {
+       pinctrl-0 = <&mmc_pins>;
+       pinctrl-1 = <&mmc_pins>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&reg_1p8v>;
+       mmc-hs200-1_8v;
+       mmc-hs400-1_8v;
+       bus-width = <8>;
+       no-sd;
+       no-sdio;
+       non-removable;
+       full-pwr-cycle-in-suspend;
+       status = "okay";
+};
+
+&pfc {
+       pinctrl-0 = <&scif_clk_pins>;
+       pinctrl-names = "default";
+
+       avb0_pins: avb0 {
+               mux {
+                       groups = "avb0_link", "avb0_mdio", "avb0_rgmii", "avb0_txcrefclk";
+                       function = "avb0";
+               };
+
+               pins_mdio {
+                       groups = "avb0_mdio";
+                       drive-strength = <21>;
+               };
+
+               pins_mii {
+                       groups = "avb0_rgmii";
+                       drive-strength = <21>;
+               };
+
+       };
+
+       i2c0_pins: i2c0 {
+               groups = "i2c0";
+               function = "i2c0";
+       };
+
+       i2c1_pins: i2c1 {
+               groups = "i2c1";
+               function = "i2c1";
+       };
+
+       i2c6_pins: i2c6 {
+               groups = "i2c6";
+               function = "i2c6";
+       };
+
+       mmc_pins: mmc {
+               groups = "mmc_data8", "mmc_ctrl", "mmc_ds";
+               function = "mmc";
+               power-source = <1800>;
+       };
+
+       scif0_pins: scif0 {
+               groups = "scif0_data", "scif0_ctrl";
+               function = "scif0";
+       };
+
+       scif_clk_pins: scif_clk {
+               groups = "scif_clk";
+               function = "scif_clk";
+       };
+};
+
 &scif0 {
+       pinctrl-0 = <&scif0_pins>;
+       pinctrl-names = "default";
+
+       uart-has-rtscts;
        status = "okay";
 };
+
+&scif_clk {
+       clock-frequency = <24000000>;
+};
index 8eda70e5a82b3d079a86279189e070ab891a09c6..5617b81dd7dc3e8700b1b5105657f1ce4dfbae88 100644 (file)
@@ -13,6 +13,7 @@
        compatible = "renesas,falcon-breakout", "renesas,falcon-cpu", "renesas,r8a779a0";
 
        aliases {
+               ethernet0 = &avb0;
                serial0 = &scif0;
        };
 
@@ -20,3 +21,8 @@
                stdout-path = "serial0:115200n8";
        };
 };
+
+&rwdt {
+       timeout-sec = <60>;
+       status = "okay";
+};
index 6cf77ce9aa9372ceea92eaeb013d8ea2594b78fb..dfd6ae8b564fb1ba19d591ee7fcec5f0f72dea75 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
+       aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               i2c6 = &i2c6;
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                #size-cells = <2>;
                ranges;
 
+               rwdt: watchdog@e6020000 {
+                       compatible = "renesas,r8a779a0-wdt",
+                                    "renesas,rcar-gen3-wdt";
+                       reg = <0 0xe6020000 0 0x0c>;
+                       clocks = <&cpg CPG_MOD 907>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 907>;
+                       status = "disabled";
+               };
+
+               pfc: pin-controller@e6050000 {
+                       compatible = "renesas,pfc-r8a779a0";
+                       reg = <0 0xe6050000 0 0x16c>, <0 0xe6050800 0 0x16c>,
+                             <0 0xe6058000 0 0x16c>, <0 0xe6058800 0 0x16c>,
+                             <0 0xe6060000 0 0x16c>, <0 0xe6060800 0 0x16c>,
+                             <0 0xe6068000 0 0x16c>, <0 0xe6068800 0 0x16c>,
+                             <0 0xe6069000 0 0x16c>, <0 0xe6069800 0 0x16c>;
+               };
+
+               gpio0: gpio@e6058180 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6058180 0 0x54>;
+                       interrupts = <GIC_SPI 832 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 916>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 916>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 0 28>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio1: gpio@e6050180 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6050180 0 0x54>;
+                       interrupts = <GIC_SPI 836 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 915>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 915>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 32 31>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio2: gpio@e6050980 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6050980 0 0x54>;
+                       interrupts = <GIC_SPI 840 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 915>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 915>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 64 25>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio3: gpio@e6058980 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6058980 0 0x54>;
+                       interrupts = <GIC_SPI 844 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 916>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 916>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 96 17>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio4: gpio@e6060180 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6060180 0 0x54>;
+                       interrupts = <GIC_SPI 848 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 917>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 917>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 128 27>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio5: gpio@e6060980 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6060980 0 0x54>;
+                       interrupts = <GIC_SPI 852 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 917>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 917>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 160 21>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio6: gpio@e6068180 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6068180 0 0x54>;
+                       interrupts = <GIC_SPI 856 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 918>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 918>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 192 21>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio7: gpio@e6068980 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6068980 0 0x54>;
+                       interrupts = <GIC_SPI 860 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 918>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 918>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 224 21>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio8: gpio@e6069180 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6069180 0 0x54>;
+                       interrupts = <GIC_SPI 864 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 918>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 918>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 256 21>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio9: gpio@e6069980 {
+                       compatible = "renesas,gpio-r8a779a0";
+                       reg = <0 0xe6069980 0 0x54>;
+                       interrupts = <GIC_SPI 868 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 918>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets =  <&cpg 918>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pfc 0 288 21>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
                cpg: clock-controller@e6150000 {
                        compatible = "renesas,r8a779a0-cpg-mssr";
                        reg = <0 0xe6150000 0 0x4000>;
                        #power-domain-cells = <1>;
                };
 
+               i2c0: i2c@e6500000 {
+                       compatible = "renesas,i2c-r8a779a0",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe6500000 0 0x40>;
+                       interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 518>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 518>;
+                       dmas = <&dmac1 0x91>, <&dmac1 0x90>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@e6508000 {
+                       compatible = "renesas,i2c-r8a779a0",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe6508000 0 0x40>;
+                       interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 519>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 519>;
+                       dmas = <&dmac1 0x93>, <&dmac1 0x92>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@e6510000 {
+                       compatible = "renesas,i2c-r8a779a0",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe6510000 0 0x40>;
+                       interrupts = <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 520>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 520>;
+                       dmas = <&dmac1 0x95>, <&dmac1 0x94>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@e66d0000 {
+                       compatible = "renesas,i2c-r8a779a0",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe66d0000 0 0x40>;
+                       interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 521>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 521>;
+                       dmas = <&dmac1 0x97>, <&dmac1 0x96>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c4: i2c@e66d8000 {
+                       compatible = "renesas,i2c-r8a779a0",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe66d8000 0 0x40>;
+                       interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 522>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 522>;
+                       dmas = <&dmac1 0x99>, <&dmac1 0x98>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c5: i2c@e66e0000 {
+                       compatible = "renesas,i2c-r8a779a0",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe66e0000 0 0x40>;
+                       interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 523>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 523>;
+                       dmas = <&dmac1 0x9b>, <&dmac1 0x9a>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c6: i2c@e66e8000 {
+                       compatible = "renesas,i2c-r8a779a0",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe66e8000 0 0x40>;
+                       interrupts = <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 524>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 524>;
+                       dmas = <&dmac1 0x9d>, <&dmac1 0x9c>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               hscif0: serial@e6540000 {
+                       compatible = "renesas,hscif-r8a779a0",
+                                    "renesas,rcar-gen3-hscif", "renesas,hscif";
+                       reg = <0 0xe6540000 0 0x60>;
+                       interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 514>,
+                                <&cpg CPG_CORE R8A779A0_CLK_S1D2>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x31>, <&dmac1 0x30>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 514>;
+                       status = "disabled";
+               };
+
+               hscif1: serial@e6550000 {
+                       compatible = "renesas,hscif-r8a779a0",
+                                    "renesas,rcar-gen3-hscif", "renesas,hscif";
+                       reg = <0 0xe6550000 0 0x60>;
+                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 515>,
+                                <&cpg CPG_CORE R8A779A0_CLK_S1D2>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x33>, <&dmac1 0x32>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 515>;
+                       status = "disabled";
+               };
+
+               hscif2: serial@e6560000 {
+                       compatible = "renesas,hscif-r8a779a0",
+                                    "renesas,rcar-gen3-hscif", "renesas,hscif";
+                       reg = <0 0xe6560000 0 0x60>;
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 516>,
+                                <&cpg CPG_CORE R8A779A0_CLK_S1D2>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x35>, <&dmac1 0x34>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 516>;
+                       status = "disabled";
+               };
+
+               hscif3: serial@e66a0000 {
+                       compatible = "renesas,hscif-r8a779a0",
+                                    "renesas,rcar-gen3-hscif", "renesas,hscif";
+                       reg = <0 0xe66a0000 0 0x60>;
+                       interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 517>,
+                                <&cpg CPG_CORE R8A779A0_CLK_S1D2>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x37>, <&dmac1 0x36>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 517>;
+                       status = "disabled";
+               };
+
+               avb0: ethernet@e6800000 {
+                       compatible = "renesas,etheravb-r8a779a0",
+                                    "renesas,etheravb-rcar-gen3";
+                       reg = <0 0xe6800000 0 0x800>;
+                       interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 270 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 275 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 276 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "ch0", "ch1", "ch2", "ch3",
+                                         "ch4", "ch5", "ch6", "ch7",
+                                         "ch8", "ch9", "ch10", "ch11",
+                                         "ch12", "ch13", "ch14", "ch15",
+                                         "ch16", "ch17", "ch18", "ch19",
+                                         "ch20", "ch21", "ch22", "ch23",
+                                         "ch24";
+                       clocks = <&cpg CPG_MOD 211>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 211>;
+                       phy-mode = "rgmii";
+                       rx-internal-delay-ps = <0>;
+                       tx-internal-delay-ps = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               avb1: ethernet@e6810000 {
+                       compatible = "renesas,etheravb-r8a779a0",
+                                    "renesas,etheravb-rcar-gen3";
+                       reg = <0 0xe6810000 0 0x800>;
+                       interrupts = <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 291 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 292 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 294 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 295 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 301 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 302 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "ch0", "ch1", "ch2", "ch3",
+                                         "ch4", "ch5", "ch6", "ch7",
+                                         "ch8", "ch9", "ch10", "ch11",
+                                         "ch12", "ch13", "ch14", "ch15",
+                                         "ch16", "ch17", "ch18", "ch19",
+                                         "ch20", "ch21", "ch22", "ch23",
+                                         "ch24";
+                       clocks = <&cpg CPG_MOD 212>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 212>;
+                       phy-mode = "rgmii";
+                       rx-internal-delay-ps = <0>;
+                       tx-internal-delay-ps = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               avb2: ethernet@e6820000 {
+                       compatible = "renesas,etheravb-r8a779a0",
+                                    "renesas,etheravb-rcar-gen3";
+                       reg = <0 0xe6820000 0 0x1000>;
+                       interrupts = <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 325 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15",
+                                       "ch16", "ch17", "ch18", "ch19",
+                                       "ch20", "ch21", "ch22", "ch23",
+                                       "ch24";
+                       clocks = <&cpg CPG_MOD 213>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 213>;
+                       phy-mode = "rgmii";
+                       rx-internal-delay-ps = <0>;
+                       tx-internal-delay-ps = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               avb3: ethernet@e6830000 {
+                       compatible = "renesas,etheravb-r8a779a0",
+                                    "renesas,etheravb-rcar-gen3";
+                       reg = <0 0xe6830000 0 0x1000>;
+                       interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 346 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 349 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 350 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 351 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15",
+                                       "ch16", "ch17", "ch18", "ch19",
+                                       "ch20", "ch21", "ch22", "ch23",
+                                       "ch24";
+                       clocks = <&cpg CPG_MOD 214>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 214>;
+                       phy-mode = "rgmii";
+                       rx-internal-delay-ps = <0>;
+                       tx-internal-delay-ps = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               avb4: ethernet@e6840000 {
+                       compatible = "renesas,etheravb-r8a779a0",
+                                    "renesas,etheravb-rcar-gen3";
+                       reg = <0 0xe6840000 0 0x1000>;
+                       interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 362 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 365 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 366 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 372 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 380 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15",
+                                       "ch16", "ch17", "ch18", "ch19",
+                                       "ch20", "ch21", "ch22", "ch23",
+                                       "ch24";
+                       clocks = <&cpg CPG_MOD 215>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 215>;
+                       phy-mode = "rgmii";
+                       rx-internal-delay-ps = <0>;
+                       tx-internal-delay-ps = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               avb5: ethernet@e6850000 {
+                       compatible = "renesas,etheravb-r8a779a0",
+                                    "renesas,etheravb-rcar-gen3";
+                       reg = <0 0xe6850000 0 0x1000>;
+                       interrupts = <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 385 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 386 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 387 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 388 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 389 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 390 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15",
+                                       "ch16", "ch17", "ch18", "ch19",
+                                       "ch20", "ch21", "ch22", "ch23",
+                                       "ch24";
+                       clocks = <&cpg CPG_MOD 216>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 216>;
+                       phy-mode = "rgmii";
+                       rx-internal-delay-ps = <0>;
+                       tx-internal-delay-ps = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                scif0: serial@e6e60000 {
                        compatible = "renesas,scif-r8a779a0",
                                     "renesas,rcar-gen3-scif", "renesas,scif";
                                 <&cpg CPG_CORE R8A779A0_CLK_S1D2>,
                                 <&scif_clk>;
                        clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x51>, <&dmac1 0x50>;
+                       dma-names = "tx", "rx";
                        power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
                        resets = <&cpg 702>;
                        status = "disabled";
                };
 
+               scif1: serial@e6e68000 {
+                       compatible = "renesas,scif-r8a779a0",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6e68000 0 64>;
+                       interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 703>,
+                                <&cpg CPG_CORE R8A779A0_CLK_S1D2>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x53>, <&dmac1 0x52>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 703>;
+                       status = "disabled";
+               };
+
+               scif3: serial@e6c50000 {
+                       compatible = "renesas,scif-r8a779a0",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6c50000 0 64>;
+                       interrupts = <GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 704>,
+                                <&cpg CPG_CORE R8A779A0_CLK_S1D2>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x57>, <&dmac1 0x56>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 704>;
+                       status = "disabled";
+               };
+
+               scif4: serial@e6c40000 {
+                       compatible = "renesas,scif-r8a779a0",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6c40000 0 64>;
+                       interrupts = <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 705>,
+                                <&cpg CPG_CORE R8A779A0_CLK_S1D2>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x59>, <&dmac1 0x58>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 705>;
+                       status = "disabled";
+               };
+
+               msiof0: spi@e6e90000 {
+                       compatible = "renesas,msiof-r8a779a0",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6e90000 0 0x0064>;
+                       interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 618>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 618>;
+                       dmas = <&dmac1 0x41>, <&dmac1 0x40>;
+                       dma-names = "tx", "rx";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               msiof1: spi@e6ea0000 {
+                       compatible = "renesas,msiof-r8a779a0",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6ea0000 0 0x0064>;
+                       interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 619>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 619>;
+                       dmas = <&dmac1 0x43>, <&dmac1 0x42>;
+                       dma-names = "tx", "rx";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               msiof2: spi@e6c00000 {
+                       compatible = "renesas,msiof-r8a779a0",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6c00000 0 0x0064>;
+                       interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 620>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 620>;
+                       dmas = <&dmac1 0x45>, <&dmac1 0x44>;
+                       dma-names = "tx", "rx";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               msiof3: spi@e6c10000 {
+                       compatible = "renesas,msiof-r8a779a0",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6c10000 0 0x0064>;
+                       interrupts = <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 621>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 621>;
+                       dmas = <&dmac1 0x47>, <&dmac1 0x46>;
+                       dma-names = "tx", "rx";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               msiof4: spi@e6c20000 {
+                       compatible = "renesas,msiof-r8a779a0",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6c20000 0 0x0064>;
+                       interrupts = <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 622>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 622>;
+                       dmas = <&dmac1 0x49>, <&dmac1 0x48>;
+                       dma-names = "tx", "rx";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               msiof5: spi@e6c28000 {
+                       compatible = "renesas,msiof-r8a779a0",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6c28000 0 0x0064>;
+                       interrupts = <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 623>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 623>;
+                       dmas = <&dmac1 0x4b>, <&dmac1 0x4a>;
+                       dma-names = "tx", "rx";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               dmac1: dma-controller@e7350000 {
+                       compatible = "renesas,dmac-r8a779a0";
+                       reg = <0 0xe7350000 0 0x1000>,
+                             <0 0xe7300000 0 0x10000>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "error",
+                                         "ch0", "ch1", "ch2", "ch3", "ch4",
+                                         "ch5", "ch6", "ch7", "ch8", "ch9",
+                                         "ch10", "ch11", "ch12", "ch13",
+                                         "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 709>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 709>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+               };
+
+               dmac2: dma-controller@e7351000 {
+                       compatible = "renesas,dmac-r8a779a0";
+                       reg = <0 0xe7351000 0 0x1000>,
+                             <0 0xe7310000 0 0x10000>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "error",
+                                         "ch0", "ch1", "ch2", "ch3", "ch4",
+                                         "ch5", "ch6", "ch7";
+                       clocks = <&cpg CPG_MOD 710>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 710>;
+                       #dma-cells = <1>;
+                       dma-channels = <8>;
+               };
+
+               mmc0: mmc@ee140000 {
+                       compatible = "renesas,sdhi-r8a779a0",
+                                    "renesas,rcar-gen3-sdhi";
+                       reg = <0 0xee140000 0 0x2000>;
+                       interrupts = <GIC_SPI 236 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 706>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 706>;
+                       max-frequency = <200000000>;
+                       status = "disabled";
+               };
+
                gic: interrupt-controller@f1000000 {
                        compatible = "arm,gic-v3";
                        #interrupt-cells = <3>;
index 6c643ed74fc586bb0ebd7e6207eb1487b4dd3966..c22bb38994e805ed0bff16545d338dc7a36931d4 100644 (file)
        bus-width = <8>;
        mmc-hs200-1_8v;
        mmc-hs400-1_8v;
+       no-sd;
+       no-sdio;
        non-removable;
        fixed-emmc-driver-type = <1>;
        full-pwr-cycle-in-suspend;
index 8f8d7371d8e24a11503816c7827963ddd253c479..a04eae55dd6c42dc575682b0c247baf319016a8b 100644 (file)
        bus-width = <8>;
        mmc-hs200-1_8v;
        mmc-hs400-1_8v;
+       no-sd;
+       no-sdio;
        non-removable;
        full-pwr-cycle-in-suspend;
        status = "okay";
index addeb0efc616d0ef6fe912e29fa8297d6c2e84b2..4bb5d650df9cd2331d26df727ca55fb24b19f817 100644 (file)
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
index 15625b99e336f4b8aa366c560be6a23f5bd536b1..0949acee4728e149b32c76c5820b4a5cfb484d52 100644 (file)
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                        interrupt-controller;
                                        #interrupt-cells = <2>;
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                };
                        };
                                        compatible = "snps,dw-apb-gpio-port";
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       snps,nr-gpios = <32>;
+                                       ngpios = <32>;
                                        reg = <0>;
                                };
                        };
index 12591a8540204d0a313fc618240a7ce36b17676d..ceb579fb427db7181724b0c954e6bd2073543ced 100644 (file)
                #size-cells = <0>;
        };
 
-       sdhci0: sdhci@4f80000 {
+       sdhci0: mmc@4f80000 {
                compatible = "ti,am654-sdhci-5.1";
                reg = <0x0 0x4f80000 0x0 0x260>, <0x0 0x4f90000 0x0 0x134>;
                power-domains = <&k3_pds 47 TI_SCI_PD_EXCLUSIVE>;
                dma-coherent;
        };
 
-       sdhci1: sdhci@4fa0000 {
+       sdhci1: mmc@4fa0000 {
                compatible = "ti,am654-sdhci-5.1";
                reg = <0x0 0x4fa0000 0x0 0x260>, <0x0 0x4fb0000 0x0 0x134>;
                power-domains = <&k3_pds 48 TI_SCI_PD_EXCLUSIVE>;
index d84c0bc05023373e7cbebdd41c2c21655be79bb0..a9fc1af03f27f77bf1c78d5295a08415ce8bade4 100644 (file)
@@ -56,7 +56,7 @@
        };
 
        pmu: pmu {
-               compatible = "arm,armv8-pmuv3";
+               compatible = "arm,cortex-a53-pmu";
                /* Recommendation from GIC500 TRM Table A.3 */
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
        };
index 331b388e1d1b2c429e3acf38da96a322192b1ff4..4a7182abccf5d050eb1efd8d916c036c529173eb 100644 (file)
@@ -6,8 +6,10 @@
 /dts-v1/;
 
 #include "k3-j7200-som-p0.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/net/ti-dp83867.h>
 #include <dt-bindings/mux/ti-serdes.h>
+#include <dt-bindings/phy/phy.h>
 
 / {
        chosen {
                ti,adc-channels = <0 1 2 3 4 5 6 7>;
        };
 };
+
+&serdes_refclk {
+       clock-frequency = <100000000>;
+};
+
+&serdes0 {
+       serdes0_pcie_link: phy@0 {
+               reg = <0>;
+               cdns,num-lanes = <2>;
+               #phy-cells = <0>;
+               cdns,phy-type = <PHY_TYPE_PCIE>;
+               resets = <&serdes_wiz0 1>, <&serdes_wiz0 2>;
+       };
+
+       serdes0_qsgmii_link: phy@1 {
+               reg = <2>;
+               cdns,num-lanes = <1>;
+               #phy-cells = <0>;
+               cdns,phy-type = <PHY_TYPE_QSGMII>;
+               resets = <&serdes_wiz0 3>;
+       };
+};
+
+&pcie1_rc {
+       reset-gpios = <&exp1 2 GPIO_ACTIVE_HIGH>;
+       phys = <&serdes0_pcie_link>;
+       phy-names = "pcie-phy";
+       num-lanes = <2>;
+};
+
+&pcie1_ep {
+       phys = <&serdes0_pcie_link>;
+       phy-names = "pcie-phy";
+       num-lanes = <2>;
+       status = "disabled";
+};
index b0094212aa82ee208ad8c67b045d81c26f5721d2..17477ab0fd8e147753f9a2a68001ccae2f872d2d 100644 (file)
@@ -2,9 +2,16 @@
 /*
  * Device Tree Source for J7200 SoC Family Main Domain peripherals
  *
- * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/
+ * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
  */
 
+/ {
+       serdes_refclk: serdes-refclk {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+       };
+};
+
 &cbass_main {
        msmc_ram: sram@70000000 {
                compatible = "mmio-sram";
                reg = <0x00 0x04f80000 0x00 0x260>, <0x00 0x4f88000 0x00 0x134>;
                interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
                power-domains = <&k3_pds 91 TI_SCI_PD_EXCLUSIVE>;
-               clock-names = "clk_xin", "clk_ahb";
-               clocks = <&k3_clks 91 3>, <&k3_clks 91 0>;
+               clock-names = "clk_ahb", "clk_xin";
+               clocks = <&k3_clks 91 0>, <&k3_clks 91 3>;
                ti,otap-del-sel-legacy = <0x0>;
                ti,otap-del-sel-mmc-hs = <0x0>;
                ti,otap-del-sel-ddr52 = <0x6>;
                reg = <0x00 0x04fb0000 0x00 0x260>, <0x00 0x4fb8000 0x00 0x134>;
                interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
                power-domains = <&k3_pds 92 TI_SCI_PD_EXCLUSIVE>;
-               clock-names = "clk_xin", "clk_ahb";
-               clocks = <&k3_clks 92 2>, <&k3_clks 92 1>;
+               clock-names = "clk_ahb", "clk_xin";
+               clocks = <&k3_clks 92 1>, <&k3_clks 92 2>;
                ti,otap-del-sel-legacy = <0x0>;
                ti,otap-del-sel-sd-hs = <0x0>;
                ti,otap-del-sel-sdr12 = <0xf>;
                dma-coherent;
        };
 
+       serdes_wiz0: wiz@5060000 {
+               compatible = "ti,j721e-wiz-10g";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               power-domains = <&k3_pds 292 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&k3_clks 292 11>, <&k3_clks 292 85>, <&serdes_refclk>;
+               clock-names = "fck", "core_ref_clk", "ext_ref_clk";
+               num-lanes = <4>;
+               #reset-cells = <1>;
+               ranges = <0x5060000 0x0 0x5060000 0x10000>;
+
+               assigned-clocks = <&k3_clks 292 85>;
+               assigned-clock-parents = <&k3_clks 292 89>;
+
+               wiz0_pll0_refclk: pll0-refclk {
+                       clocks = <&k3_clks 292 85>, <&serdes_refclk>;
+                       clock-output-names = "wiz0_pll0_refclk";
+                       #clock-cells = <0>;
+                       assigned-clocks = <&wiz0_pll0_refclk>;
+                       assigned-clock-parents = <&k3_clks 292 85>;
+               };
+
+               wiz0_pll1_refclk: pll1-refclk {
+                       clocks = <&k3_clks 292 85>, <&serdes_refclk>;
+                       clock-output-names = "wiz0_pll1_refclk";
+                       #clock-cells = <0>;
+                       assigned-clocks = <&wiz0_pll1_refclk>;
+                       assigned-clock-parents = <&k3_clks 292 85>;
+               };
+
+               wiz0_refclk_dig: refclk-dig {
+                       clocks = <&k3_clks 292 85>, <&serdes_refclk>;
+                       clock-output-names = "wiz0_refclk_dig";
+                       #clock-cells = <0>;
+                       assigned-clocks = <&wiz0_refclk_dig>;
+                       assigned-clock-parents = <&k3_clks 292 85>;
+               };
+
+               wiz0_cmn_refclk_dig_div: cmn-refclk-dig-div {
+                       clocks = <&wiz0_refclk_dig>;
+                       #clock-cells = <0>;
+               };
+
+               serdes0: serdes@5060000 {
+                       compatible = "ti,j721e-serdes-10g";
+                       reg = <0x05060000 0x00010000>;
+                       reg-names = "torrent_phy";
+                       resets = <&serdes_wiz0 0>;
+                       reset-names = "torrent_reset";
+                       clocks = <&wiz0_pll0_refclk>;
+                       clock-names = "refclk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+       };
+
+       pcie1_rc: pcie@2910000 {
+               compatible = "ti,j7200-pcie-host", "ti,j721e-pcie-host";
+               reg = <0x00 0x02910000 0x00 0x1000>,
+                     <0x00 0x02917000 0x00 0x400>,
+                     <0x00 0x0d800000 0x00 0x00800000>,
+                     <0x00 0x18000000 0x00 0x00001000>;
+               reg-names = "intd_cfg", "user_cfg", "reg", "cfg";
+               interrupt-names = "link_state";
+               interrupts = <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>;
+               device_type = "pci";
+               ti,syscon-pcie-ctrl = <&scm_conf 0x4074>;
+               max-link-speed = <3>;
+               num-lanes = <4>;
+               power-domains = <&k3_pds 240 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&k3_clks 240 6>;
+               clock-names = "fck";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               bus-range = <0x0 0xf>;
+               cdns,no-bar-match-nbits = <64>;
+               vendor-id = /bits/ 16 <0x104c>;
+               device-id = /bits/ 16 <0xb00f>;
+               msi-map = <0x0 &gic_its 0x0 0x10000>;
+               dma-coherent;
+               ranges = <0x01000000 0x0 0x18001000  0x00 0x18001000  0x0 0x0010000>,
+                        <0x02000000 0x0 0x18011000  0x00 0x18011000  0x0 0x7fef000>;
+               dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x10000 0x0>;
+       };
+
+       pcie1_ep: pcie-ep@2910000 {
+               compatible = "ti,j7200-pcie-ep", "ti,j721e-pcie-ep";
+               reg = <0x00 0x02910000 0x00 0x1000>,
+                     <0x00 0x02917000 0x00 0x400>,
+                     <0x00 0x0d800000 0x00 0x00800000>,
+                     <0x00 0x18000000 0x00 0x08000000>;
+               reg-names = "intd_cfg", "user_cfg", "reg", "mem";
+               interrupt-names = "link_state";
+               interrupts = <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>;
+               ti,syscon-pcie-ctrl = <&scm_conf 0x4074>;
+               max-link-speed = <3>;
+               num-lanes = <4>;
+               power-domains = <&k3_pds 240 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&k3_clks 240 6>;
+               clock-names = "fck";
+               max-functions = /bits/ 8 <6>;
+               dma-coherent;
+       };
+
        usbss0: cdns-usb@4104000 {
                compatible = "ti,j721e-usb";
                reg = <0x00 0x4104000 0x00 0x100>;
                        dr_mode = "otg";
                };
        };
+
+       main_r5fss0: r5fss@5c00000 {
+               compatible = "ti,j7200-r5fss";
+               ti,cluster-mode = <1>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x5c00000 0x00 0x5c00000 0x20000>,
+                        <0x5d00000 0x00 0x5d00000 0x20000>;
+               power-domains = <&k3_pds 243 TI_SCI_PD_EXCLUSIVE>;
+
+               main_r5fss0_core0: r5f@5c00000 {
+                       compatible = "ti,j7200-r5f";
+                       reg = <0x5c00000 0x00010000>,
+                             <0x5c10000 0x00010000>;
+                       reg-names = "atcm", "btcm";
+                       ti,sci = <&dmsc>;
+                       ti,sci-dev-id = <245>;
+                       ti,sci-proc-ids = <0x06 0xff>;
+                       resets = <&k3_reset 245 1>;
+                       firmware-name = "j7200-main-r5f0_0-fw";
+                       ti,atcm-enable = <1>;
+                       ti,btcm-enable = <1>;
+                       ti,loczrama = <1>;
+               };
+
+               main_r5fss0_core1: r5f@5d00000 {
+                       compatible = "ti,j7200-r5f";
+                       reg = <0x5d00000 0x00008000>,
+                             <0x5d10000 0x00008000>;
+                       reg-names = "atcm", "btcm";
+                       ti,sci = <&dmsc>;
+                       ti,sci-dev-id = <246>;
+                       ti,sci-proc-ids = <0x07 0xff>;
+                       resets = <&k3_reset 246 1>;
+                       firmware-name = "j7200-main-r5f0_1-fw";
+                       ti,atcm-enable = <1>;
+                       ti,btcm-enable = <1>;
+                       ti,loczrama = <1>;
+               };
+       };
 };
index bb1fe9c12e44458d38f568669fe7a125ce954659..359e3e8a8cd0066e5f325a87e539b90df7a1fc2b 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Device Tree Source for J7200 SoC Family MCU/WAKEUP Domain peripherals
  *
- * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/
+ * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
  */
 
 &cbass_mcu_wakeup {
                        compatible = "ti,am3359-adc";
                };
        };
+
+       mcu_r5fss0: r5fss@41000000 {
+               compatible = "ti,j7200-r5fss";
+               ti,cluster-mode = <1>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x41000000 0x00 0x41000000 0x20000>,
+                        <0x41400000 0x00 0x41400000 0x20000>;
+               power-domains = <&k3_pds 249 TI_SCI_PD_EXCLUSIVE>;
+
+               mcu_r5fss0_core0: r5f@41000000 {
+                       compatible = "ti,j7200-r5f";
+                       reg = <0x41000000 0x00010000>,
+                             <0x41010000 0x00010000>;
+                       reg-names = "atcm", "btcm";
+                       ti,sci = <&dmsc>;
+                       ti,sci-dev-id = <250>;
+                       ti,sci-proc-ids = <0x01 0xff>;
+                       resets = <&k3_reset 250 1>;
+                       firmware-name = "j7200-mcu-r5f0_0-fw";
+                       ti,atcm-enable = <1>;
+                       ti,btcm-enable = <1>;
+                       ti,loczrama = <1>;
+               };
+
+               mcu_r5fss0_core1: r5f@41400000 {
+                       compatible = "ti,j7200-r5f";
+                       reg = <0x41400000 0x00008000>,
+                             <0x41410000 0x00008000>;
+                       reg-names = "atcm", "btcm";
+                       ti,sci = <&dmsc>;
+                       ti,sci-dev-id = <251>;
+                       ti,sci-proc-ids = <0x02 0xff>;
+                       resets = <&k3_reset 251 1>;
+                       firmware-name = "j7200-mcu-r5f0_1-fw";
+                       ti,atcm-enable = <1>;
+                       ti,btcm-enable = <1>;
+                       ti,loczrama = <1>;
+               };
+       };
 };
index 7b5e9aa0324e16129e4655866c4d50808ec17f47..a988e2ab2ba1614b873339d52cf06064b6dbcc35 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/
+ * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
  */
 
 /dts-v1/;
                        alignment = <0x1000>;
                        no-map;
                };
+
+               mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa0000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_memory_region: r5f-memory@a0100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa0100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa1000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core1_memory_region: r5f-memory@a1100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa1100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a2000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa2000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss0_core0_memory_region: r5f-memory@a2100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa2100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a3000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa3000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss0_core1_memory_region: r5f-memory@a3100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa3100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               rtos_ipc_memory_region: ipc-memories@a4000000 {
+                       reg = <0x00 0xa4000000 0x00 0x00800000>;
+                       alignment = <0x1000>;
+                       no-map;
+               };
        };
 };
 
        status = "disabled";
 };
 
+&mcu_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0 &mbox_mcu_r5fss0_core0>;
+       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+                       <&mcu_r5fss0_core0_memory_region>;
+};
+
+&mcu_r5fss0_core1 {
+       mboxes = <&mailbox0_cluster0 &mbox_mcu_r5fss0_core1>;
+       memory-region = <&mcu_r5fss0_core1_dma_memory_region>,
+                       <&mcu_r5fss0_core1_memory_region>;
+};
+
+&main_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster1 &mbox_main_r5fss0_core0>;
+       memory-region = <&main_r5fss0_core0_dma_memory_region>,
+                       <&main_r5fss0_core0_memory_region>;
+};
+
+&main_r5fss0_core1 {
+       mboxes = <&mailbox0_cluster1 &mbox_main_r5fss0_core1>;
+       memory-region = <&main_r5fss0_core1_dma_memory_region>,
+                       <&main_r5fss0_core1_memory_region>;
+};
+
 &main_i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
index 66169bcf7c9a408e827dd21ffd51fe1617bd77d7..b7005b8031495e2e9fdff0396a883010eb902cf6 100644 (file)
        };
 
        pmu: pmu {
-               compatible = "arm,armv8-pmuv3";
+               compatible = "arm,cortex-a72-pmu";
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
        };
 
index b32df591c7668f517256c5903be681937dbe3a75..8c84dafb7125c8aedaebe51704a52134657795cb 100644 (file)
                #size-cells = <1>;
                ranges = <0x0 0x0 0x00100000 0x1c000>;
 
-               pcie0_ctrl: syscon@4070 {
-                       compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
-                       reg = <0x00004070 0x4>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       ranges = <0x4070 0x4070 0x4>;
-               };
-
-               pcie1_ctrl: syscon@4074 {
-                       compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
-                       reg = <0x00004074 0x4>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       ranges = <0x4074 0x4074 0x4>;
-               };
-
-               pcie2_ctrl: syscon@4078 {
-                       compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
-                       reg = <0x00004078 0x4>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       ranges = <0x4078 0x4078 0x4>;
-               };
-
-               pcie3_ctrl: syscon@407c {
-                       compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
-                       reg = <0x0000407c 0x4>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       ranges = <0x407c 0x407c 0x4>;
-               };
-
                serdes_ln_ctrl: mux@4080 {
                        compatible = "mmio-mux";
                        reg = <0x00004080 0x50>;
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&pcie0_ctrl>;
+               ti,syscon-pcie-ctrl = <&scm_conf 0x4070>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 239 TI_SCI_PD_EXCLUSIVE>;
                reg-names = "intd_cfg", "user_cfg", "reg", "mem";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
-               ti,syscon-pcie-ctrl = <&pcie0_ctrl>;
+               ti,syscon-pcie-ctrl = <&scm_conf 0x4070>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 239 TI_SCI_PD_EXCLUSIVE>;
                clocks = <&k3_clks 239 1>;
                clock-names = "fck";
-               cdns,max-outbound-regions = <16>;
                max-functions = /bits/ 8 <6>;
                max-virtual-functions = /bits/ 16 <4 4 4 4 0 0>;
                dma-coherent;
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&pcie1_ctrl>;
+               ti,syscon-pcie-ctrl = <&scm_conf 0x4074>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 240 TI_SCI_PD_EXCLUSIVE>;
                reg-names = "intd_cfg", "user_cfg", "reg", "mem";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>;
-               ti,syscon-pcie-ctrl = <&pcie1_ctrl>;
+               ti,syscon-pcie-ctrl = <&scm_conf 0x4074>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 240 TI_SCI_PD_EXCLUSIVE>;
                clocks = <&k3_clks 240 1>;
                clock-names = "fck";
-               cdns,max-outbound-regions = <16>;
                max-functions = /bits/ 8 <6>;
                max-virtual-functions = /bits/ 16 <4 4 4 4 0 0>;
                dma-coherent;
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 342 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&pcie2_ctrl>;
+               ti,syscon-pcie-ctrl = <&scm_conf 0x4078>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 241 TI_SCI_PD_EXCLUSIVE>;
                reg-names = "intd_cfg", "user_cfg", "reg", "mem";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 342 IRQ_TYPE_EDGE_RISING>;
-               ti,syscon-pcie-ctrl = <&pcie2_ctrl>;
+               ti,syscon-pcie-ctrl = <&scm_conf 0x4078>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 241 TI_SCI_PD_EXCLUSIVE>;
                clocks = <&k3_clks 241 1>;
                clock-names = "fck";
-               cdns,max-outbound-regions = <16>;
                max-functions = /bits/ 8 <6>;
                max-virtual-functions = /bits/ 16 <4 4 4 4 0 0>;
                dma-coherent;
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 354 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&pcie3_ctrl>;
+               ti,syscon-pcie-ctrl = <&scm_conf 0x407c>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 242 TI_SCI_PD_EXCLUSIVE>;
                reg-names = "intd_cfg", "user_cfg", "reg", "mem";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 354 IRQ_TYPE_EDGE_RISING>;
-               ti,syscon-pcie-ctrl = <&pcie3_ctrl>;
+               ti,syscon-pcie-ctrl = <&scm_conf 0x407c>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 242 TI_SCI_PD_EXCLUSIVE>;
                clocks = <&k3_clks 242 1>;
                clock-names = "fck";
-               cdns,max-outbound-regions = <16>;
                max-functions = /bits/ 8 <6>;
                max-virtual-functions = /bits/ 16 <4 4 4 4 0 0>;
                dma-coherent;
                clock-names = "gpio";
        };
 
-       main_sdhci0: sdhci@4f80000 {
+       main_sdhci0: mmc@4f80000 {
                compatible = "ti,j721e-sdhci-8bit";
                reg = <0x0 0x4f80000 0x0 0x1000>, <0x0 0x4f88000 0x0 0x400>;
                interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
                power-domains = <&k3_pds 91 TI_SCI_PD_EXCLUSIVE>;
-               clock-names = "clk_xin", "clk_ahb";
-               clocks = <&k3_clks 91 1>, <&k3_clks 91 0>;
+               clock-names = "clk_ahb", "clk_xin";
+               clocks = <&k3_clks 91 0>, <&k3_clks 91 1>;
                assigned-clocks = <&k3_clks 91 1>;
                assigned-clock-parents = <&k3_clks 91 2>;
                bus-width = <8>;
                dma-coherent;
        };
 
-       main_sdhci1: sdhci@4fb0000 {
+       main_sdhci1: mmc@4fb0000 {
                compatible = "ti,j721e-sdhci-4bit";
                reg = <0x0 0x04fb0000 0x0 0x1000>, <0x0 0x4fb8000 0x0 0x400>;
                interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
                power-domains = <&k3_pds 92 TI_SCI_PD_EXCLUSIVE>;
-               clock-names = "clk_xin", "clk_ahb";
-               clocks = <&k3_clks 92 0>, <&k3_clks 92 5>;
+               clock-names = "clk_ahb", "clk_xin";
+               clocks = <&k3_clks 92 5>, <&k3_clks 92 0>;
                assigned-clocks = <&k3_clks 92 0>;
                assigned-clock-parents = <&k3_clks 92 1>;
                ti,otap-del-sel-legacy = <0x0>;
                dma-coherent;
        };
 
-       main_sdhci2: sdhci@4f98000 {
+       main_sdhci2: mmc@4f98000 {
                compatible = "ti,j721e-sdhci-4bit";
                reg = <0x0 0x4f98000 0x0 0x1000>, <0x0 0x4f90000 0x0 0x400>;
                interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
                power-domains = <&k3_pds 93 TI_SCI_PD_EXCLUSIVE>;
-               clock-names = "clk_xin", "clk_ahb";
-               clocks = <&k3_clks 93 0>, <&k3_clks 93 5>;
+               clock-names = "clk_ahb", "clk_xin";
+               clocks = <&k3_clks 93 5>, <&k3_clks 93 0>;
                assigned-clocks = <&k3_clks 93 0>;
                assigned-clock-parents = <&k3_clks 93 1>;
                ti,otap-del-sel-legacy = <0x0>;
index cc483f7344af3132aaa0059eb3e5b6c38ea19a5a..f0587fde147e6f87ceb98e728c396233a28d4053 100644 (file)
        };
 
        pmu: pmu {
-               compatible = "arm,armv8-pmuv3";
+               compatible = "arm,cortex-a72-pmu";
                /* Recommendation from GIC500 TRM Table A.3 */
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
        };
index ed0bf7f13f54e82a35ed03f6df03cd4f62cdd121..37da418393e0a776d512b8a19aac228e1ee4a816 100644 (file)
@@ -41,3 +41,8 @@
        clocks = <&uart_clk>;
        clock-names = "apb_pclk";
 };
+
+&wdt {
+       status = "okay";
+       clocks = <&wdt_clk>;
+};
index 242f25f4e12ab4e5d69e4640e09b65beec7b6fc2..c360e68bef1d0fa9762b917a08b3ab07814e6903 100644 (file)
                #clock-cells = <0>;
        };
 
+       wdt_clk: wdt-clk {
+               compatible = "fixed-clock";
+               clock-frequency = <150000000>;
+               #clock-cells = <0>;
+       };
+
        soc {
                #address-cells = <2>;
                #size-cells = <2>;
                        #size-cells = <0>;
                        status = "disabled";
                };
+
+               wdt: wdt@28330000 {
+                       compatible = "toshiba,visconti-wdt";
+                       reg = <0 0x28330000 0 0x1000>;
+                       status = "disabled";
+               };
        };
 };
 
index ff9cbb6312128ada86abaa827fe07d02ed29e378..07ac208edc89441b06401c960e29a4c43a0b9cf7 100644 (file)
@@ -1,6 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
 generic-y += early_ioremap.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += qrwlock.h
 generic-y += qspinlock.h
index 93372255984dce5c1578a735f9575dc6c18e75d9..cc24bb8e539fd8f0103faf0e6b1cee8b349616de 100644 (file)
@@ -2,7 +2,6 @@
 generic-y += asm-offsets.h
 generic-y += gpio.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += qrwlock.h
 generic-y += user.h
 generic-y += vmlinux.lds.h
index ddf04f32b5467566868294d073046a3c044d9d8c..60ee7f0d60a8ff83c9b20aace40b58f194cf4e71 100644 (file)
@@ -2,7 +2,6 @@
 generic-y += asm-offsets.h
 generic-y += extable.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += parport.h
 generic-y += spinlock.h
index 373964bb177e41421168ae7a0ec532eae9a197d7..3ece3c93fe086e73c2a813ee132fd877b439f23e 100644 (file)
@@ -2,5 +2,4 @@
 generic-y += extable.h
 generic-y += iomap.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
diff --git a/arch/ia64/include/asm/local64.h b/arch/ia64/include/asm/local64.h
deleted file mode 100644 (file)
index 36c93b5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/local64.h>
index 9b5acf8fb092c42ae93bbce929a91c2a5b0ccabb..e76386a3479ea273b01f39b3900870c7b92e1e00 100644 (file)
@@ -536,7 +536,7 @@ virtual_memmap_init(u64 start, u64 end, void *arg)
 
        if (map_start < map_end)
                memmap_init_zone((unsigned long)(map_end - map_start),
-                                args->nid, args->zone, page_to_pfn(map_start),
+                                args->nid, args->zone, page_to_pfn(map_start), page_to_pfn(map_end),
                                 MEMINIT_EARLY, NULL, MIGRATE_MOVABLE);
        return 0;
 }
@@ -546,7 +546,7 @@ memmap_init (unsigned long size, int nid, unsigned long zone,
             unsigned long start_pfn)
 {
        if (!vmem_map) {
-               memmap_init_zone(size, nid, zone, start_pfn,
+               memmap_init_zone(size, nid, zone, start_pfn, start_pfn + size,
                                 MEMINIT_EARLY, NULL, MIGRATE_MOVABLE);
        } else {
                struct page *start;
index 1bff55aa2d54e2ce8dd312da3c7f8d426a78540f..0dbf9c5c6faeb30eeb38bea52ab7fade99bbd44a 100644 (file)
@@ -2,6 +2,5 @@
 generated-y += syscall_table.h
 generic-y += extable.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += spinlock.h
index 63bce836b9f10f512dc285c7df29d59aba125359..29b0e557aa7c5b6f741f4d82f0cda0b467f5ee2d 100644 (file)
@@ -2,7 +2,6 @@
 generated-y += syscall_table.h
 generic-y += extable.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += parport.h
 generic-y += syscalls.h
index 198b3bafdac978c505126557592c5c70f45b5bfd..95b4fa7bd0d1fd92abf55f85f4d8a35379359416 100644 (file)
@@ -6,7 +6,6 @@ generated-y += syscall_table_64_n64.h
 generated-y += syscall_table_64_o32.h
 generic-y += export.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += parport.h
 generic-y += qrwlock.h
index ff1e94299317dd520337808c211d90b0fa81c09f..82a4453c9c2d52fb1de045f5770bdc3fd5921f75 100644 (file)
@@ -4,6 +4,5 @@ generic-y += cmpxchg.h
 generic-y += export.h
 generic-y += gpio.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += parport.h
 generic-y += user.h
index 442f3d3bcd9043671316820230a8c6076ca58ead..ca5987e110538c353fcc5b8822e7a3569b5ad5bf 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 generic-y += extable.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += qspinlock_types.h
 generic-y += qspinlock.h
index f16c4db8011627309331796a9767019759a6b2fd..4406475a23040fd77cf1e9ea3c02f29a5d463dae 100644 (file)
@@ -3,6 +3,5 @@ generated-y += syscall_table_32.h
 generated-y += syscall_table_64.h
 generated-y += syscall_table_c32.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += user.h
index 90cd5c53af66646153d69ce620f2393a7b6039f3..e1f9b4ea1c537be14ea09ad77d84467ea4fa5802 100644 (file)
@@ -5,7 +5,6 @@ generated-y += syscall_table_c32.h
 generated-y += syscall_table_spu.h
 generic-y += export.h
 generic-y += kvm_types.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += qrwlock.h
 generic-y += vtime.h
index 59dd7be550054fb785029616074579ab32dd8835..445ccc97305a5ed8d7f395f2df1c932b8397dad6 100644 (file)
@@ -3,6 +3,5 @@ generic-y += early_ioremap.h
 generic-y += extable.h
 generic-y += flat.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += user.h
 generic-y += vmlinux.lds.h
index e84bdd15150bf51bac297f5ae526d137bf17a5db..c72874f09741c7c3de56becaffdaf1c8e3e6204c 100644 (file)
@@ -54,17 +54,23 @@ config KASAN_SHADOW_OFFSET
 
 config S390
        def_bool y
+       #
+       # Note: keep this list sorted alphabetically
+       #
+       imply IMA_SECURE_AND_OR_TRUSTED_BOOT
        select ARCH_BINFMT_ELF_STATE
        select ARCH_HAS_DEBUG_VM_PGTABLE
        select ARCH_HAS_DEBUG_WX
        select ARCH_HAS_DEVMEM_IS_ALLOWED
        select ARCH_HAS_ELF_RANDOMIZE
+       select ARCH_HAS_FORCE_DMA_UNENCRYPTED
        select ARCH_HAS_FORTIFY_SOURCE
        select ARCH_HAS_GCOV_PROFILE_ALL
        select ARCH_HAS_GIGANTIC_PAGE
        select ARCH_HAS_KCOV
        select ARCH_HAS_MEM_ENCRYPT
        select ARCH_HAS_PTE_SPECIAL
+       select ARCH_HAS_SCALED_CPUTIME
        select ARCH_HAS_SET_MEMORY
        select ARCH_HAS_STRICT_KERNEL_RWX
        select ARCH_HAS_STRICT_MODULE_RWX
@@ -111,8 +117,10 @@ config S390
        select ARCH_WANT_IPC_PARSE_VERSION
        select BUILDTIME_TABLE_SORT
        select CLONE_BACKWARDS2
+       select CPU_NO_EFFICIENT_FFS if !HAVE_MARCH_Z9_109_FEATURES
        select DMA_OPS if PCI
        select DYNAMIC_FTRACE if FUNCTION_TRACER
+       select GENERIC_ALLOCATOR
        select GENERIC_CPU_AUTOPROBE
        select GENERIC_CPU_VULNERABILITIES
        select GENERIC_FIND_FIRST_BIT
@@ -126,22 +134,21 @@ config S390
        select HAVE_ARCH_JUMP_LABEL_RELATIVE
        select HAVE_ARCH_KASAN
        select HAVE_ARCH_KASAN_VMALLOC
-       select CPU_NO_EFFICIENT_FFS if !HAVE_MARCH_Z9_109_FEATURES
        select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_ARCH_SOFT_DIRTY
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_TRANSPARENT_HUGEPAGE
        select HAVE_ARCH_VMAP_STACK
        select HAVE_ASM_MODVERSIONS
-       select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
        select HAVE_CMPXCHG_DOUBLE
        select HAVE_CMPXCHG_LOCAL
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_CONTIGUOUS
        select HAVE_DYNAMIC_FTRACE
        select HAVE_DYNAMIC_FTRACE_WITH_REGS
-       select HAVE_FAST_GUP
+       select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
        select HAVE_EFFICIENT_UNALIGNED_ACCESS
+       select HAVE_FAST_GUP
        select HAVE_FENTRY
        select HAVE_FTRACE_MCOUNT_RECORD
        select HAVE_FUNCTION_ERROR_INJECTION
@@ -163,16 +170,15 @@ config S390
        select HAVE_KRETPROBES
        select HAVE_KVM
        select HAVE_LIVEPATCH
-       select HAVE_PERF_REGS
-       select HAVE_PERF_USER_STACK_DUMP
        select HAVE_MEMBLOCK_PHYS_MAP
-       select MMU_GATHER_NO_GATHER
        select HAVE_MOD_ARCH_SPECIFIC
+       select HAVE_NMI
        select HAVE_NOP_MCOUNT
        select HAVE_OPROFILE
        select HAVE_PCI
        select HAVE_PERF_EVENTS
-       select MMU_GATHER_RCU_TABLE_FREE
+       select HAVE_PERF_REGS
+       select HAVE_PERF_USER_STACK_DUMP
        select HAVE_REGS_AND_STACK_ACCESS_API
        select HAVE_RELIABLE_STACKTRACE
        select HAVE_RSEQ
@@ -181,6 +187,8 @@ config S390
        select HAVE_VIRT_CPU_ACCOUNTING_IDLE
        select IOMMU_HELPER             if PCI
        select IOMMU_SUPPORT            if PCI
+       select MMU_GATHER_NO_GATHER
+       select MMU_GATHER_RCU_TABLE_FREE
        select MODULES_USE_ELF_RELA
        select NEED_DMA_MAP_STATE       if PCI
        select NEED_SG_DMA_LENGTH       if PCI
@@ -190,17 +198,12 @@ config S390
        select PCI_MSI                  if PCI
        select PCI_MSI_ARCH_FALLBACKS   if PCI_MSI
        select SPARSE_IRQ
+       select SWIOTLB
        select SYSCTL_EXCEPTION_TRACE
        select THREAD_INFO_IN_TASK
        select TTY
        select VIRT_CPU_ACCOUNTING
-       select ARCH_HAS_SCALED_CPUTIME
-       select HAVE_NMI
-       select ARCH_HAS_FORCE_DMA_UNENCRYPTED
-       select SWIOTLB
-       select GENERIC_ALLOCATOR
-       imply IMA_SECURE_AND_OR_TRUSTED_BOOT
-
+       # Note: keep the above list sorted alphabetically
 
 config SCHED_OMIT_FRAME_POINTER
        def_bool y
index 1be32fcf6f2eeaf3eb59d62ec6c8da49771f53d3..c4f6ff98a612cd8ca923faa479abb8a08a7f39d0 100644 (file)
@@ -61,7 +61,9 @@ CONFIG_OPROFILE=m
 CONFIG_KPROBES=y
 CONFIG_JUMP_LABEL=y
 CONFIG_STATIC_KEYS_SELFTEST=y
+CONFIG_SECCOMP_CACHE_DEBUG=y
 CONFIG_LOCK_EVENT_COUNTS=y
+# CONFIG_GCC_PLUGINS is not set
 CONFIG_MODULES=y
 CONFIG_MODULE_FORCE_LOAD=y
 CONFIG_MODULE_UNLOAD=y
@@ -410,12 +412,12 @@ CONFIG_SCSI_ENCLOSURE=m
 CONFIG_SCSI_CONSTANTS=y
 CONFIG_SCSI_LOGGING=y
 CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=y
+CONFIG_SCSI_FC_ATTRS=m
 CONFIG_SCSI_SAS_LIBSAS=m
 CONFIG_SCSI_SRP_ATTRS=m
 CONFIG_ISCSI_TCP=m
 CONFIG_SCSI_DEBUG=m
-CONFIG_ZFCP=y
+CONFIG_ZFCP=m
 CONFIG_SCSI_VIRTIO=m
 CONFIG_SCSI_DH=y
 CONFIG_SCSI_DH_RDAC=m
@@ -444,6 +446,7 @@ CONFIG_DM_MULTIPATH=m
 CONFIG_DM_MULTIPATH_QL=m
 CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_MULTIPATH_HST=m
+CONFIG_DM_MULTIPATH_IOA=m
 CONFIG_DM_DELAY=m
 CONFIG_DM_UEVENT=y
 CONFIG_DM_FLAKEY=m
@@ -542,7 +545,6 @@ CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_SERIO is not set
 CONFIG_LEGACY_PTY_COUNT=0
-CONFIG_NULL_TTY=m
 CONFIG_VIRTIO_CONSOLE=y
 CONFIG_HW_RANDOM_VIRTIO=m
 CONFIG_RAW_DRIVER=m
@@ -574,6 +576,7 @@ CONFIG_VIRTIO_BALLOON=m
 CONFIG_VIRTIO_INPUT=y
 CONFIG_VHOST_NET=m
 CONFIG_VHOST_VSOCK=m
+# CONFIG_SURFACE_PLATFORMS is not set
 CONFIG_S390_CCW_IOMMU=y
 CONFIG_S390_AP_IOMMU=y
 CONFIG_EXT4_FS=y
@@ -655,6 +658,7 @@ CONFIG_CIFS_XATTR=y
 CONFIG_CIFS_POSIX=y
 # CONFIG_CIFS_DEBUG is not set
 CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_SWN_UPCALL=y
 CONFIG_NLS_DEFAULT="utf8"
 CONFIG_NLS_CODEPAGE_437=m
 CONFIG_NLS_CODEPAGE_850=m
@@ -826,6 +830,8 @@ CONFIG_FTRACE_SYSCALLS=y
 CONFIG_BLK_DEV_IO_TRACE=y
 CONFIG_BPF_KPROBE_OVERRIDE=y
 CONFIG_HIST_TRIGGERS=y
+CONFIG_FTRACE_STARTUP_TEST=y
+# CONFIG_EVENT_TRACE_STARTUP_TEST is not set
 CONFIG_DEBUG_USER_ASCE=y
 CONFIG_NOTIFIER_ERROR_INJECTION=m
 CONFIG_NETDEV_NOTIFIER_ERROR_INJECT=m
index e2171a0088094a299b107634df047c6e5bbb31cd..51135893cffe34ed9e6a81e7aead22308412daaa 100644 (file)
@@ -58,6 +58,7 @@ CONFIG_S390_UNWIND_SELFTEST=m
 CONFIG_OPROFILE=m
 CONFIG_KPROBES=y
 CONFIG_JUMP_LABEL=y
+# CONFIG_GCC_PLUGINS is not set
 CONFIG_MODULES=y
 CONFIG_MODULE_FORCE_LOAD=y
 CONFIG_MODULE_UNLOAD=y
@@ -95,7 +96,6 @@ CONFIG_ZSMALLOC_STAT=y
 CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
 CONFIG_IDLE_PAGE_TRACKING=y
 CONFIG_PERCPU_STATS=y
-CONFIG_GUP_TEST=y
 CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_PACKET_DIAG=m
@@ -403,12 +403,12 @@ CONFIG_SCSI_ENCLOSURE=m
 CONFIG_SCSI_CONSTANTS=y
 CONFIG_SCSI_LOGGING=y
 CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=y
+CONFIG_SCSI_FC_ATTRS=m
 CONFIG_SCSI_SAS_LIBSAS=m
 CONFIG_SCSI_SRP_ATTRS=m
 CONFIG_ISCSI_TCP=m
 CONFIG_SCSI_DEBUG=m
-CONFIG_ZFCP=y
+CONFIG_ZFCP=m
 CONFIG_SCSI_VIRTIO=m
 CONFIG_SCSI_DH=y
 CONFIG_SCSI_DH_RDAC=m
@@ -437,6 +437,7 @@ CONFIG_DM_MULTIPATH=m
 CONFIG_DM_MULTIPATH_QL=m
 CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_MULTIPATH_HST=m
+CONFIG_DM_MULTIPATH_IOA=m
 CONFIG_DM_DELAY=m
 CONFIG_DM_UEVENT=y
 CONFIG_DM_FLAKEY=m
@@ -536,7 +537,6 @@ CONFIG_INPUT_EVDEV=y
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_SERIO is not set
 CONFIG_LEGACY_PTY_COUNT=0
-CONFIG_NULL_TTY=m
 CONFIG_VIRTIO_CONSOLE=y
 CONFIG_HW_RANDOM_VIRTIO=m
 CONFIG_RAW_DRIVER=m
@@ -568,6 +568,7 @@ CONFIG_VIRTIO_BALLOON=m
 CONFIG_VIRTIO_INPUT=y
 CONFIG_VHOST_NET=m
 CONFIG_VHOST_VSOCK=m
+# CONFIG_SURFACE_PLATFORMS is not set
 CONFIG_S390_CCW_IOMMU=y
 CONFIG_S390_AP_IOMMU=y
 CONFIG_EXT4_FS=y
@@ -645,6 +646,7 @@ CONFIG_CIFS_XATTR=y
 CONFIG_CIFS_POSIX=y
 # CONFIG_CIFS_DEBUG is not set
 CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_SWN_UPCALL=y
 CONFIG_NLS_DEFAULT="utf8"
 CONFIG_NLS_CODEPAGE_437=m
 CONFIG_NLS_CODEPAGE_850=m
@@ -778,6 +780,7 @@ CONFIG_FTRACE_SYSCALLS=y
 CONFIG_BLK_DEV_IO_TRACE=y
 CONFIG_BPF_KPROBE_OVERRIDE=y
 CONFIG_HIST_TRIGGERS=y
+CONFIG_DEBUG_USER_ASCE=y
 CONFIG_LKDTM=m
 CONFIG_PERCPU_TEST=m
 CONFIG_ATOMIC64_SELFTEST=y
index a302630341effc410cbc1587663639f94b75920d..1ef211dae77a0b53a3e4e955518c72dbcd8f6e31 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CRASH_DUMP=y
 # CONFIG_VIRTUALIZATION is not set
 # CONFIG_S390_GUEST is not set
 # CONFIG_SECCOMP is not set
+# CONFIG_GCC_PLUGINS is not set
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_IBM_PARTITION=y
 # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
@@ -58,6 +59,7 @@ CONFIG_RAW_DRIVER=y
 # CONFIG_HID is not set
 # CONFIG_VIRTIO_MENU is not set
 # CONFIG_VHOST_MENU is not set
+# CONFIG_SURFACE_PLATFORMS is not set
 # CONFIG_IOMMU_SUPPORT is not set
 # CONFIG_DNOTIFY is not set
 # CONFIG_INOTIFY_USER is not set
index 319efa0e6d024fecd1e503c9d722079ce1db213e..1a18d7b82f86d742d8a8c71ac8f9c665ef95fa11 100644 (file)
@@ -7,5 +7,4 @@ generated-y += unistd_nr.h
 generic-y += asm-offsets.h
 generic-y += export.h
 generic-y += kvm_types.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
index 7435182ef84658c39fd27c5c0ef88a6c4ccf29f7..fc44d9c88b41915a7021042eb8b462517cfdbd2c 100644 (file)
@@ -1,6 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
 generated-y += syscall_table.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += parport.h
index 5269a704801fa46621dc65c08da2e6ae357eaa92..3688fdae50e45cc6454814de2d3bdca56a4e1bb9 100644 (file)
@@ -6,5 +6,4 @@ generated-y += syscall_table_64.h
 generated-y += syscall_table_c32.h
 generic-y += export.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
diff --git a/arch/x86/include/asm/local64.h b/arch/x86/include/asm/local64.h
deleted file mode 100644 (file)
index 36c93b5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/local64.h>
index 9718e9593564735da7130b4498777947241d804d..854c5e07e86703f4f8681cc51f8751fdcf917bd3 100644 (file)
@@ -2,7 +2,6 @@
 generated-y += syscall_table.h
 generic-y += extable.h
 generic-y += kvm_para.h
-generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += param.h
 generic-y += qrwlock.h
index 96e5fcd7f071b606c62d946354080aada4f4b8b7..7663a9b94b8002ad710231ec726dfd4cc7c23513 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/bio.h>
 #include <linux/blkdev.h>
 #include <linux/blk-mq.h>
+#include <linux/blk-pm.h>
 #include <linux/highmem.h>
 #include <linux/mm.h>
 #include <linux/pagemap.h>
@@ -424,11 +425,11 @@ EXPORT_SYMBOL(blk_cleanup_queue);
 /**
  * blk_queue_enter() - try to increase q->q_usage_counter
  * @q: request queue pointer
- * @flags: BLK_MQ_REQ_NOWAIT and/or BLK_MQ_REQ_PREEMPT
+ * @flags: BLK_MQ_REQ_NOWAIT and/or BLK_MQ_REQ_PM
  */
 int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags)
 {
-       const bool pm = flags & BLK_MQ_REQ_PREEMPT;
+       const bool pm = flags & BLK_MQ_REQ_PM;
 
        while (true) {
                bool success = false;
@@ -440,7 +441,8 @@ int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags)
                         * responsible for ensuring that that counter is
                         * globally visible before the queue is unfrozen.
                         */
-                       if (pm || !blk_queue_pm_only(q)) {
+                       if ((pm && queue_rpm_status(q) != RPM_SUSPENDED) ||
+                           !blk_queue_pm_only(q)) {
                                success = true;
                        } else {
                                percpu_ref_put(&q->q_usage_counter);
@@ -465,8 +467,7 @@ int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags)
 
                wait_event(q->mq_freeze_wq,
                           (!q->mq_freeze_depth &&
-                           (pm || (blk_pm_request_resume(q),
-                                   !blk_queue_pm_only(q)))) ||
+                           blk_pm_resume_queue(pm, q)) ||
                           blk_queue_dying(q));
                if (blk_queue_dying(q))
                        return -ENODEV;
@@ -630,7 +631,7 @@ struct request *blk_get_request(struct request_queue *q, unsigned int op,
        struct request *req;
 
        WARN_ON_ONCE(op & REQ_NOWAIT);
-       WARN_ON_ONCE(flags & ~(BLK_MQ_REQ_NOWAIT | BLK_MQ_REQ_PREEMPT));
+       WARN_ON_ONCE(flags & ~(BLK_MQ_REQ_NOWAIT | BLK_MQ_REQ_PM));
 
        req = blk_mq_alloc_request(q, op, flags);
        if (!IS_ERR(req) && q->mq_ops->initialize_rq_fn)
index 3094542e12ae0fa468f242a897b1d08b35fbe83f..4d6e83e5b44296aee4f981ec3a022dc497e6f57a 100644 (file)
@@ -129,6 +129,7 @@ static const char *const blk_queue_flag_name[] = {
        QUEUE_FLAG_NAME(PCI_P2PDMA),
        QUEUE_FLAG_NAME(ZONE_RESETALL),
        QUEUE_FLAG_NAME(RQ_ALLOC_TIME),
+       QUEUE_FLAG_NAME(NOWAIT),
 };
 #undef QUEUE_FLAG_NAME
 
@@ -297,7 +298,6 @@ static const char *const rqf_name[] = {
        RQF_NAME(MIXED_MERGE),
        RQF_NAME(MQ_INFLIGHT),
        RQF_NAME(DONTPREP),
-       RQF_NAME(PREEMPT),
        RQF_NAME(FAILED),
        RQF_NAME(QUIET),
        RQF_NAME(ELVPRIV),
index c338c9bc5a2c53d22331f45801a3b5dfbc299dda..f285a9123a8b081deeae72282306948aeec928b4 100644 (file)
@@ -294,8 +294,8 @@ static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data,
        rq->mq_hctx = data->hctx;
        rq->rq_flags = 0;
        rq->cmd_flags = data->cmd_flags;
-       if (data->flags & BLK_MQ_REQ_PREEMPT)
-               rq->rq_flags |= RQF_PREEMPT;
+       if (data->flags & BLK_MQ_REQ_PM)
+               rq->rq_flags |= RQF_PM;
        if (blk_queue_io_stat(data->q))
                rq->rq_flags |= RQF_IO_STAT;
        INIT_LIST_HEAD(&rq->queuelist);
index b85234d758f7b2d6d75734fe9d74a0e5e03bdcc2..17bd020268d421434a3724ad63552f2df49da0f4 100644 (file)
@@ -67,6 +67,10 @@ int blk_pre_runtime_suspend(struct request_queue *q)
 
        WARN_ON_ONCE(q->rpm_status != RPM_ACTIVE);
 
+       spin_lock_irq(&q->queue_lock);
+       q->rpm_status = RPM_SUSPENDING;
+       spin_unlock_irq(&q->queue_lock);
+
        /*
         * Increase the pm_only counter before checking whether any
         * non-PM blk_queue_enter() calls are in progress to avoid that any
@@ -89,15 +93,14 @@ int blk_pre_runtime_suspend(struct request_queue *q)
        /* Switch q_usage_counter back to per-cpu mode. */
        blk_mq_unfreeze_queue(q);
 
-       spin_lock_irq(&q->queue_lock);
-       if (ret < 0)
+       if (ret < 0) {
+               spin_lock_irq(&q->queue_lock);
+               q->rpm_status = RPM_ACTIVE;
                pm_runtime_mark_last_busy(q->dev);
-       else
-               q->rpm_status = RPM_SUSPENDING;
-       spin_unlock_irq(&q->queue_lock);
+               spin_unlock_irq(&q->queue_lock);
 
-       if (ret)
                blk_clear_pm_only(q);
+       }
 
        return ret;
 }
index ea5507d23e75976e0c234c1a4951fd443e86811c..a2283cc9f716dc89622a5966fd6e894d8ddefee9 100644 (file)
@@ -6,11 +6,14 @@
 #include <linux/pm_runtime.h>
 
 #ifdef CONFIG_PM
-static inline void blk_pm_request_resume(struct request_queue *q)
+static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q)
 {
-       if (q->dev && (q->rpm_status == RPM_SUSPENDED ||
-                      q->rpm_status == RPM_SUSPENDING))
-               pm_request_resume(q->dev);
+       if (!q->dev || !blk_queue_pm_only(q))
+               return 1;       /* Nothing to do */
+       if (pm && q->rpm_status != RPM_SUSPENDED)
+               return 1;       /* Request allowed */
+       pm_request_resume(q->dev);
+       return 0;
 }
 
 static inline void blk_pm_mark_last_busy(struct request *rq)
@@ -44,8 +47,9 @@ static inline void blk_pm_put_request(struct request *rq)
                --rq->q->nr_pending;
 }
 #else
-static inline void blk_pm_request_resume(struct request_queue *q)
+static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q)
 {
+       return 1;
 }
 
 static inline void blk_pm_mark_last_busy(struct request *rq)
index 6e23376548ced1196516f600ddf32529884fda85..1a660466dd756392e92c0723e96621d35ce5aa72 100644 (file)
@@ -3086,7 +3086,6 @@ static int __init intel_pstate_init(void)
                        intel_pstate.attr = hwp_cpufreq_attrs;
                        intel_cpufreq.attr = hwp_cpufreq_attrs;
                        intel_cpufreq.flags |= CPUFREQ_NEED_UPDATE_LIMITS;
-                       intel_cpufreq.fast_switch = NULL;
                        intel_cpufreq.adjust_perf = intel_cpufreq_adjust_perf;
                        if (!default_driver)
                                default_driver = &intel_pstate;
index 2162bc80f09e02ff2daa35362436de1dbb802217..013ad33fbbc81ee507148df1aeffde66613957d2 100644 (file)
@@ -223,7 +223,6 @@ void ide_prep_sense(ide_drive_t *drive, struct request *rq)
        sense_rq->rq_disk = rq->rq_disk;
        sense_rq->cmd_flags = REQ_OP_DRV_IN;
        ide_req(sense_rq)->type = ATA_PRIV_SENSE;
-       sense_rq->rq_flags |= RQF_PREEMPT;
 
        req->cmd[0] = GPCMD_REQUEST_SENSE;
        req->cmd[4] = cmd_len;
index 1a53c7a752244bf0037acf556471788117a23bfe..4867b67b60d698c464bd9f99f248f2e846b9e524 100644 (file)
@@ -515,15 +515,10 @@ repeat:
                 * above to return us whatever is in the queue. Since we call
                 * ide_do_request() ourselves, we end up taking requests while
                 * the queue is blocked...
-                * 
-                * We let requests forced at head of queue with ide-preempt
-                * though. I hope that doesn't happen too much, hopefully not
-                * unless the subdriver triggers such a thing in its own PM
-                * state machine.
                 */
                if ((drive->dev_flags & IDE_DFLAG_BLOCKED) &&
                    ata_pm_request(rq) == 0 &&
-                   (rq->rq_flags & RQF_PREEMPT) == 0) {
+                   (rq->rq_flags & RQF_PM) == 0) {
                        /* there should be no pending command at this point */
                        ide_unlock_port(hwif);
                        goto plug_device;
index 192e6c65d34e7a0aff073003c2e4039d681f87f2..82ab308f1aafe007b0e2420e0065eeefd19acf6f 100644 (file)
@@ -77,7 +77,7 @@ int generic_ide_resume(struct device *dev)
        }
 
        memset(&rqpm, 0, sizeof(rqpm));
-       rq = blk_get_request(drive->queue, REQ_OP_DRV_IN, BLK_MQ_REQ_PREEMPT);
+       rq = blk_get_request(drive->queue, REQ_OP_DRV_IN, BLK_MQ_REQ_PM);
        ide_req(rq)->type = ATA_PRIV_PM_RESUME;
        ide_req(rq)->special = &rqpm;
        rqpm.pm_step = IDE_PM_START_RESUME;
index d79335506ecd3c3f5aa3beabde8e0dd74cef10a3..28f93b9aa51bf7933cc92c97b7455dc7ba9338ef 100644 (file)
@@ -963,6 +963,39 @@ static struct cpuidle_state dnv_cstates[] __initdata = {
                .enter = NULL }
 };
 
+/*
+ * Note, depending on HW and FW revision, SnowRidge SoC may or may not support
+ * C6, and this is indicated in the CPUID mwait leaf.
+ */
+static struct cpuidle_state snr_cstates[] __initdata = {
+       {
+               .name = "C1",
+               .desc = "MWAIT 0x00",
+               .flags = MWAIT2flg(0x00),
+               .exit_latency = 2,
+               .target_residency = 2,
+               .enter = &intel_idle,
+               .enter_s2idle = intel_idle_s2idle, },
+       {
+               .name = "C1E",
+               .desc = "MWAIT 0x01",
+               .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
+               .exit_latency = 15,
+               .target_residency = 25,
+               .enter = &intel_idle,
+               .enter_s2idle = intel_idle_s2idle, },
+       {
+               .name = "C6",
+               .desc = "MWAIT 0x20",
+               .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
+               .exit_latency = 130,
+               .target_residency = 500,
+               .enter = &intel_idle,
+               .enter_s2idle = intel_idle_s2idle, },
+       {
+               .enter = NULL }
+};
+
 static const struct idle_cpu idle_cpu_nehalem __initconst = {
        .state_table = nehalem_cstates,
        .auto_demotion_disable_flags = NHM_C1_AUTO_DEMOTE | NHM_C3_AUTO_DEMOTE,
@@ -1084,6 +1117,12 @@ static const struct idle_cpu idle_cpu_dnv __initconst = {
        .use_acpi = true,
 };
 
+static const struct idle_cpu idle_cpu_snr __initconst = {
+       .state_table = snr_cstates,
+       .disable_promotion_to_c1e = true,
+       .use_acpi = true,
+};
+
 static const struct x86_cpu_id intel_idle_ids[] __initconst = {
        X86_MATCH_INTEL_FAM6_MODEL(NEHALEM_EP,          &idle_cpu_nhx),
        X86_MATCH_INTEL_FAM6_MODEL(NEHALEM,             &idle_cpu_nehalem),
@@ -1122,7 +1161,7 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
        X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT,       &idle_cpu_bxt),
        X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS,  &idle_cpu_bxt),
        X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_D,     &idle_cpu_dnv),
-       X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D,      &idle_cpu_dnv),
+       X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D,      &idle_cpu_snr),
        {}
 };
 
index 5f9f9b3a226d7ccad1bedc57c1fede7f1a9c888e..53791138d78bf4b5296f3aa400f517b60aabe9f4 100644 (file)
@@ -3166,12 +3166,11 @@ static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv)
        }
 
        if (test_bit(DM_CRYPT_SAME_CPU, &cc->flags))
-               cc->crypt_queue = alloc_workqueue("kcryptd-%s", WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM,
+               cc->crypt_queue = alloc_workqueue("kcryptd/%s", WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM,
                                                  1, devname);
        else
-               cc->crypt_queue = alloc_workqueue("kcryptd-%s",
-                                                 WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM |
-                                                 WQ_UNBOUND | WQ_SYSFS,
+               cc->crypt_queue = alloc_workqueue("kcryptd/%s",
+                                                 WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM | WQ_UNBOUND,
                                                  num_online_cpus(), devname);
        if (!cc->crypt_queue) {
                ti->error = "Couldn't create kcryptd queue";
index 4268eb35991523a539e968c321a9693d5aa70809..8c905aabacc01aeee5d35501525ae4485913ea0e 100644 (file)
@@ -1092,7 +1092,7 @@ static struct opp_table *_allocate_opp_table(struct device *dev, int index)
        if (IS_ERR(opp_table->clk)) {
                ret = PTR_ERR(opp_table->clk);
                if (ret == -EPROBE_DEFER)
-                       goto err;
+                       goto remove_opp_dev;
 
                dev_dbg(dev, "%s: Couldn't find clock: %d\n", __func__, ret);
        }
@@ -1101,7 +1101,7 @@ static struct opp_table *_allocate_opp_table(struct device *dev, int index)
        ret = dev_pm_opp_of_find_icc_paths(dev, opp_table);
        if (ret) {
                if (ret == -EPROBE_DEFER)
-                       goto err;
+                       goto put_clk;
 
                dev_warn(dev, "%s: Error finding interconnect paths: %d\n",
                         __func__, ret);
@@ -1113,6 +1113,11 @@ static struct opp_table *_allocate_opp_table(struct device *dev, int index)
 
        return opp_table;
 
+put_clk:
+       if (!IS_ERR(opp_table->clk))
+               clk_put(opp_table->clk);
+remove_opp_dev:
+       _remove_opp_dev(opp_dev, opp_table);
 err:
        kfree(opp_table);
        return ERR_PTR(ret);
index b206e266b4e7263203c215969fb9b9346c0d16ef..8b0deece9758b8d6bdd0d02dd0b56cb3278bebc9 100644 (file)
@@ -4,6 +4,7 @@ config SCSI_CXGB4_ISCSI
        depends on PCI && INET && (IPV6 || IPV6=n)
        depends on THERMAL || !THERMAL
        depends on ETHERNET
+       depends on TLS || TLS=n
        select NET_VENDOR_CHELSIO
        select CHELSIO_T4
        select CHELSIO_LIB
index 969baf4cd3f5e9e5fab717afc787e3f4e2bad1f5..6e23dc3209feb9ecf58bf45666f33f21f407d025 100644 (file)
@@ -5034,7 +5034,7 @@ _base_check_for_trigger_pages_support(struct MPT3SAS_ADAPTER *ioc)
 static void
 _base_get_diag_triggers(struct MPT3SAS_ADAPTER *ioc)
 {
-       u16 trigger_flags;
+       int trigger_flags;
 
        /*
         * Default setting of master trigger.
index 4848ae3c7b561d0c3b9e9d68c2b0d95bf44b232a..b3f14f05340ad63a9fe5d4377cfb118d57d4a937 100644 (file)
@@ -249,7 +249,8 @@ int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
 
        req = blk_get_request(sdev->request_queue,
                        data_direction == DMA_TO_DEVICE ?
-                       REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN, BLK_MQ_REQ_PREEMPT);
+                       REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN,
+                       rq_flags & RQF_PM ? BLK_MQ_REQ_PM : 0);
        if (IS_ERR(req))
                return ret;
        rq = scsi_req(req);
@@ -1206,6 +1207,8 @@ static blk_status_t
 scsi_device_state_check(struct scsi_device *sdev, struct request *req)
 {
        switch (sdev->sdev_state) {
+       case SDEV_CREATED:
+               return BLK_STS_OK;
        case SDEV_OFFLINE:
        case SDEV_TRANSPORT_OFFLINE:
                /*
@@ -1232,18 +1235,18 @@ scsi_device_state_check(struct scsi_device *sdev, struct request *req)
                return BLK_STS_RESOURCE;
        case SDEV_QUIESCE:
                /*
-                * If the devices is blocked we defer normal commands.
+                * If the device is blocked we only accept power management
+                * commands.
                 */
-               if (req && !(req->rq_flags & RQF_PREEMPT))
+               if (req && WARN_ON_ONCE(!(req->rq_flags & RQF_PM)))
                        return BLK_STS_RESOURCE;
                return BLK_STS_OK;
        default:
                /*
                 * For any other not fully online state we only allow
-                * special commands.  In particular any user initiated
-                * command is not allowed.
+                * power management commands.
                 */
-               if (req && !(req->rq_flags & RQF_PREEMPT))
+               if (req && !(req->rq_flags & RQF_PM))
                        return BLK_STS_IOERR;
                return BLK_STS_OK;
        }
@@ -2516,15 +2519,13 @@ void sdev_evt_send_simple(struct scsi_device *sdev,
 EXPORT_SYMBOL_GPL(sdev_evt_send_simple);
 
 /**
- *     scsi_device_quiesce - Block user issued commands.
+ *     scsi_device_quiesce - Block all commands except power management.
  *     @sdev:  scsi device to quiesce.
  *
  *     This works by trying to transition to the SDEV_QUIESCE state
  *     (which must be a legal transition).  When the device is in this
- *     state, only special requests will be accepted, all others will
- *     be deferred.  Since special requests may also be requeued requests,
- *     a successful return doesn't guarantee the device will be
- *     totally quiescent.
+ *     state, only power management requests will be accepted, all others will
+ *     be deferred.
  *
  *     Must be called with user context, may sleep.
  *
@@ -2586,12 +2587,12 @@ void scsi_device_resume(struct scsi_device *sdev)
         * device deleted during suspend)
         */
        mutex_lock(&sdev->state_mutex);
+       if (sdev->sdev_state == SDEV_QUIESCE)
+               scsi_device_set_state(sdev, SDEV_RUNNING);
        if (sdev->quiesced_by) {
                sdev->quiesced_by = NULL;
                blk_clear_pm_only(sdev->request_queue);
        }
-       if (sdev->sdev_state == SDEV_QUIESCE)
-               scsi_device_set_state(sdev, SDEV_RUNNING);
        mutex_unlock(&sdev->state_mutex);
 }
 EXPORT_SYMBOL(scsi_device_resume);
index f3d5b1bbd5aa7eff36c5d91cd9d2df6e41a77f8d..c37dd15d16d24f20b6065e6d7141da6c955fd58c 100644 (file)
@@ -117,12 +117,16 @@ static int spi_execute(struct scsi_device *sdev, const void *cmd,
                sshdr = &sshdr_tmp;
 
        for(i = 0; i < DV_RETRIES; i++) {
+               /*
+                * The purpose of the RQF_PM flag below is to bypass the
+                * SDEV_QUIESCE state.
+                */
                result = scsi_execute(sdev, cmd, dir, buffer, bufflen, sense,
                                      sshdr, DV_TIMEOUT, /* retries */ 1,
                                      REQ_FAILFAST_DEV |
                                      REQ_FAILFAST_TRANSPORT |
                                      REQ_FAILFAST_DRIVER,
-                                     0, NULL);
+                                     RQF_PM, NULL);
                if (driver_byte(result) != DRIVER_SENSE ||
                    sshdr->sense_key != UNIT_ATTENTION)
                        break;
@@ -1005,23 +1009,26 @@ spi_dv_device(struct scsi_device *sdev)
         */
        lock_system_sleep();
 
+       if (scsi_autopm_get_device(sdev))
+               goto unlock_system_sleep;
+
        if (unlikely(spi_dv_in_progress(starget)))
-               goto unlock;
+               goto put_autopm;
 
        if (unlikely(scsi_device_get(sdev)))
-               goto unlock;
+               goto put_autopm;
 
        spi_dv_in_progress(starget) = 1;
 
        buffer = kzalloc(len, GFP_KERNEL);
 
        if (unlikely(!buffer))
-               goto out_put;
+               goto put_sdev;
 
        /* We need to verify that the actual device will quiesce; the
         * later target quiesce is just a nice to have */
        if (unlikely(scsi_device_quiesce(sdev)))
-               goto out_free;
+               goto free_buffer;
 
        scsi_target_quiesce(starget);
 
@@ -1041,12 +1048,16 @@ spi_dv_device(struct scsi_device *sdev)
 
        spi_initial_dv(starget) = 1;
 
- out_free:
+free_buffer:
        kfree(buffer);
- out_put:
+
+put_sdev:
        spi_dv_in_progress(starget) = 0;
        scsi_device_put(sdev);
-unlock:
+put_autopm:
+       scsi_autopm_put_device(sdev);
+
+unlock_system_sleep:
        unlock_system_sleep();
 }
 EXPORT_SYMBOL(spi_dv_device);
index fd6f84c1b4e2256454b52c0b9373c6c09a9fe9e8..895e82ea6ece551d0a5c5fa5c6ba8cf3ee3452e0 100644 (file)
@@ -31,6 +31,6 @@ TRACE_EVENT(ufs_mtk_event,
 
 #undef TRACE_INCLUDE_PATH
 #undef TRACE_INCLUDE_FILE
-#define TRACE_INCLUDE_PATH .
+#define TRACE_INCLUDE_PATH ../../drivers/scsi/ufs/
 #define TRACE_INCLUDE_FILE ufs-mediatek-trace
 #include <trace/define_trace.h>
index 3522458db3bbd0ce479d8b57c6b345ad70413dfc..80618af7c87203b256ce26087579fd582038847e 100644 (file)
@@ -70,6 +70,13 @@ static bool ufs_mtk_is_va09_supported(struct ufs_hba *hba)
        return !!(host->caps & UFS_MTK_CAP_VA09_PWR_CTRL);
 }
 
+static bool ufs_mtk_is_broken_vcc(struct ufs_hba *hba)
+{
+       struct ufs_mtk_host *host = ufshcd_get_variant(hba);
+
+       return !!(host->caps & UFS_MTK_CAP_BROKEN_VCC);
+}
+
 static void ufs_mtk_cfg_unipro_cg(struct ufs_hba *hba, bool enable)
 {
        u32 tmp;
@@ -514,6 +521,9 @@ static void ufs_mtk_init_host_caps(struct ufs_hba *hba)
        if (of_property_read_bool(np, "mediatek,ufs-disable-ah8"))
                host->caps |= UFS_MTK_CAP_DISABLE_AH8;
 
+       if (of_property_read_bool(np, "mediatek,ufs-broken-vcc"))
+               host->caps |= UFS_MTK_CAP_BROKEN_VCC;
+
        dev_info(hba->dev, "caps: 0x%x", host->caps);
 }
 
@@ -1003,6 +1013,17 @@ static int ufs_mtk_apply_dev_quirks(struct ufs_hba *hba)
 static void ufs_mtk_fixup_dev_quirks(struct ufs_hba *hba)
 {
        ufshcd_fixup_dev_quirks(hba, ufs_mtk_dev_fixups);
+
+       if (ufs_mtk_is_broken_vcc(hba) && hba->vreg_info.vcc &&
+           (hba->dev_quirks & UFS_DEVICE_QUIRK_DELAY_AFTER_LPM)) {
+               hba->vreg_info.vcc->always_on = true;
+               /*
+                * VCC will be kept always-on thus we don't
+                * need any delay during regulator operations
+                */
+               hba->dev_quirks &= ~(UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM |
+                       UFS_DEVICE_QUIRK_DELAY_AFTER_LPM);
+       }
 }
 
 static void ufs_mtk_event_notify(struct ufs_hba *hba,
index 93d35097dfb0aeb03c7eaad9e1405527edd51ec2..3f0d3bb769e89b4a4a2543e952580f59e30cf215 100644 (file)
@@ -81,6 +81,7 @@ enum ufs_mtk_host_caps {
        UFS_MTK_CAP_BOOST_CRYPT_ENGINE         = 1 << 0,
        UFS_MTK_CAP_VA09_PWR_CTRL              = 1 << 1,
        UFS_MTK_CAP_DISABLE_AH8                = 1 << 2,
+       UFS_MTK_CAP_BROKEN_VCC                 = 1 << 3,
 };
 
 struct ufs_mtk_crypt_cfg {
index d593edb487677189e45bc2a51b7436ba333df083..14dfda735adf5ac2c2a06d779724f706adbfee62 100644 (file)
@@ -330,7 +330,6 @@ enum {
        UFS_DEV_WRITE_BOOSTER_SUP       = BIT(8),
 };
 
-#define POWER_DESC_MAX_SIZE                    0x62
 #define POWER_DESC_MAX_ACTV_ICC_LVLS           16
 
 /* Attribute  bActiveICCLevel parameter bit masks definitions */
@@ -513,6 +512,7 @@ struct ufs_query_res {
 struct ufs_vreg {
        struct regulator *reg;
        const char *name;
+       bool always_on;
        bool enabled;
        int min_uV;
        int max_uV;
index df3a564c3e334875ed9a2eab331344f3468031b1..fadd566025b86ab4ffe18aefd366823ea6f1ae98 100644 (file)
@@ -148,6 +148,8 @@ static int ufs_intel_common_init(struct ufs_hba *hba)
 {
        struct intel_host *host;
 
+       hba->caps |= UFSHCD_CAP_RPM_AUTOSUSPEND;
+
        host = devm_kzalloc(hba->dev, sizeof(*host), GFP_KERNEL);
        if (!host)
                return -ENOMEM;
@@ -163,6 +165,41 @@ static void ufs_intel_common_exit(struct ufs_hba *hba)
        intel_ltr_hide(hba->dev);
 }
 
+static int ufs_intel_resume(struct ufs_hba *hba, enum ufs_pm_op op)
+{
+       /*
+        * To support S4 (suspend-to-disk) with spm_lvl other than 5, the base
+        * address registers must be restored because the restore kernel can
+        * have used different addresses.
+        */
+       ufshcd_writel(hba, lower_32_bits(hba->utrdl_dma_addr),
+                     REG_UTP_TRANSFER_REQ_LIST_BASE_L);
+       ufshcd_writel(hba, upper_32_bits(hba->utrdl_dma_addr),
+                     REG_UTP_TRANSFER_REQ_LIST_BASE_H);
+       ufshcd_writel(hba, lower_32_bits(hba->utmrdl_dma_addr),
+                     REG_UTP_TASK_REQ_LIST_BASE_L);
+       ufshcd_writel(hba, upper_32_bits(hba->utmrdl_dma_addr),
+                     REG_UTP_TASK_REQ_LIST_BASE_H);
+
+       if (ufshcd_is_link_hibern8(hba)) {
+               int ret = ufshcd_uic_hibern8_exit(hba);
+
+               if (!ret) {
+                       ufshcd_set_link_active(hba);
+               } else {
+                       dev_err(hba->dev, "%s: hibern8 exit failed %d\n",
+                               __func__, ret);
+                       /*
+                        * Force reset and restore. Any other actions can lead
+                        * to an unrecoverable state.
+                        */
+                       ufshcd_set_link_off(hba);
+               }
+       }
+
+       return 0;
+}
+
 static int ufs_intel_ehl_init(struct ufs_hba *hba)
 {
        hba->quirks |= UFSHCD_QUIRK_BROKEN_AUTO_HIBERN8;
@@ -174,6 +211,7 @@ static struct ufs_hba_variant_ops ufs_intel_cnl_hba_vops = {
        .init                   = ufs_intel_common_init,
        .exit                   = ufs_intel_common_exit,
        .link_startup_notify    = ufs_intel_link_startup_notify,
+       .resume                 = ufs_intel_resume,
 };
 
 static struct ufs_hba_variant_ops ufs_intel_ehl_hba_vops = {
@@ -181,6 +219,7 @@ static struct ufs_hba_variant_ops ufs_intel_ehl_hba_vops = {
        .init                   = ufs_intel_ehl_init,
        .exit                   = ufs_intel_common_exit,
        .link_startup_notify    = ufs_intel_link_startup_notify,
+       .resume                 = ufs_intel_resume,
 };
 
 #ifdef CONFIG_PM_SLEEP
@@ -207,6 +246,30 @@ static int ufshcd_pci_resume(struct device *dev)
 {
        return ufshcd_system_resume(dev_get_drvdata(dev));
 }
+
+/**
+ * ufshcd_pci_poweroff - suspend-to-disk poweroff function
+ * @dev: pointer to PCI device handle
+ *
+ * Returns 0 if successful
+ * Returns non-zero otherwise
+ */
+static int ufshcd_pci_poweroff(struct device *dev)
+{
+       struct ufs_hba *hba = dev_get_drvdata(dev);
+       int spm_lvl = hba->spm_lvl;
+       int ret;
+
+       /*
+        * For poweroff we need to set the UFS device to PowerDown mode.
+        * Force spm_lvl to ensure that.
+        */
+       hba->spm_lvl = 5;
+       ret = ufshcd_system_suspend(hba);
+       hba->spm_lvl = spm_lvl;
+       return ret;
+}
+
 #endif /* !CONFIG_PM_SLEEP */
 
 #ifdef CONFIG_PM
@@ -302,8 +365,14 @@ ufshcd_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 }
 
 static const struct dev_pm_ops ufshcd_pci_pm_ops = {
-       SET_SYSTEM_SLEEP_PM_OPS(ufshcd_pci_suspend,
-                               ufshcd_pci_resume)
+#ifdef CONFIG_PM_SLEEP
+       .suspend        = ufshcd_pci_suspend,
+       .resume         = ufshcd_pci_resume,
+       .freeze         = ufshcd_pci_suspend,
+       .thaw           = ufshcd_pci_resume,
+       .poweroff       = ufshcd_pci_poweroff,
+       .restore        = ufshcd_pci_resume,
+#endif
        SET_RUNTIME_PM_OPS(ufshcd_pci_runtime_suspend,
                           ufshcd_pci_runtime_resume,
                           ufshcd_pci_runtime_idle)
index 9902b7e3aa4aaf49bcd266bfa4b12e09d84e7763..82ad31781bc9e127d9fc6834f3b704e69f1d179c 100644 (file)
@@ -225,6 +225,7 @@ static int ufshcd_reset_and_restore(struct ufs_hba *hba);
 static int ufshcd_eh_host_reset_handler(struct scsi_cmnd *cmd);
 static int ufshcd_clear_tm_cmd(struct ufs_hba *hba, int tag);
 static void ufshcd_hba_exit(struct ufs_hba *hba);
+static int ufshcd_clear_ua_wluns(struct ufs_hba *hba);
 static int ufshcd_probe_hba(struct ufs_hba *hba, bool async);
 static int ufshcd_setup_clocks(struct ufs_hba *hba, bool on);
 static int ufshcd_uic_hibern8_enter(struct ufs_hba *hba);
@@ -580,6 +581,23 @@ static void ufshcd_print_pwr_info(struct ufs_hba *hba)
                 hba->pwr_info.hs_rate);
 }
 
+static void ufshcd_device_reset(struct ufs_hba *hba)
+{
+       int err;
+
+       err = ufshcd_vops_device_reset(hba);
+
+       if (!err) {
+               ufshcd_set_ufs_dev_active(hba);
+               if (ufshcd_is_wb_allowed(hba)) {
+                       hba->wb_enabled = false;
+                       hba->wb_buf_flush_enabled = false;
+               }
+       }
+       if (err != -EOPNOTSUPP)
+               ufshcd_update_evt_hist(hba, UFS_EVT_DEV_RESET, err);
+}
+
 void ufshcd_delay_us(unsigned long us, unsigned long tolerance)
 {
        if (!us)
@@ -3665,7 +3683,7 @@ static int ufshcd_dme_enable(struct ufs_hba *hba)
        ret = ufshcd_send_uic_cmd(hba, &uic_cmd);
        if (ret)
                dev_err(hba->dev,
-                       "dme-reset: error code %d\n", ret);
+                       "dme-enable: error code %d\n", ret);
 
        return ret;
 }
@@ -3964,7 +3982,7 @@ int ufshcd_link_recovery(struct ufs_hba *hba)
        spin_unlock_irqrestore(hba->host->host_lock, flags);
 
        /* Reset the attached device */
-       ufshcd_vops_device_reset(hba);
+       ufshcd_device_reset(hba);
 
        ret = ufshcd_host_reset_and_restore(hba);
 
@@ -6930,7 +6948,8 @@ static int ufshcd_host_reset_and_restore(struct ufs_hba *hba)
 
        /* Establish the link again and restore the device */
        err = ufshcd_probe_hba(hba, false);
-
+       if (!err)
+               ufshcd_clear_ua_wluns(hba);
 out:
        if (err)
                dev_err(hba->dev, "%s: Host init failed %d\n", __func__, err);
@@ -6968,7 +6987,7 @@ static int ufshcd_reset_and_restore(struct ufs_hba *hba)
 
        do {
                /* Reset the attached device */
-               ufshcd_vops_device_reset(hba);
+               ufshcd_device_reset(hba);
 
                err = ufshcd_host_reset_and_restore(hba);
        } while (err && --retries);
@@ -8045,7 +8064,7 @@ static int ufshcd_disable_vreg(struct device *dev, struct ufs_vreg *vreg)
 {
        int ret = 0;
 
-       if (!vreg || !vreg->enabled)
+       if (!vreg || !vreg->enabled || vreg->always_on)
                goto out;
 
        ret = regulator_disable(vreg->reg);
@@ -8414,13 +8433,7 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
         * handling context.
         */
        hba->host->eh_noresume = 1;
-       if (hba->wlun_dev_clr_ua) {
-               ret = ufshcd_send_request_sense(hba, sdp);
-               if (ret)
-                       goto out;
-               /* Unit attention condition is cleared now */
-               hba->wlun_dev_clr_ua = false;
-       }
+       ufshcd_clear_ua_wluns(hba);
 
        cmd[4] = pwr_mode << 4;
 
@@ -8441,7 +8454,7 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
 
        if (!ret)
                hba->curr_dev_pwr_mode = pwr_mode;
-out:
+
        scsi_device_put(sdp);
        hba->host->eh_noresume = 0;
        return ret;
@@ -8747,7 +8760,7 @@ set_link_active:
         * further below.
         */
        if (ufshcd_is_ufs_dev_deepsleep(hba)) {
-               ufshcd_vops_device_reset(hba);
+               ufshcd_device_reset(hba);
                WARN_ON(!ufshcd_is_link_off(hba));
        }
        if (ufshcd_is_link_hibern8(hba) && !ufshcd_uic_hibern8_exit(hba))
@@ -8757,7 +8770,7 @@ set_link_active:
 set_dev_active:
        /* Can also get here needing to exit DeepSleep */
        if (ufshcd_is_ufs_dev_deepsleep(hba)) {
-               ufshcd_vops_device_reset(hba);
+               ufshcd_device_reset(hba);
                ufshcd_host_reset_and_restore(hba);
        }
        if (!ufshcd_set_dev_pwr_mode(hba, UFS_ACTIVE_PWR_MODE))
@@ -9353,7 +9366,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
        }
 
        /* Reset the attached device */
-       ufshcd_vops_device_reset(hba);
+       ufshcd_device_reset(hba);
 
        ufshcd_init_crypto(hba);
 
index f8c2467dc0142b47f47d81123fc73fc951ff2d2a..aa9ea355232395f4915830119a0e37698444e7cb 100644 (file)
@@ -1218,16 +1218,12 @@ static inline void ufshcd_vops_dbg_register_dump(struct ufs_hba *hba)
                hba->vops->dbg_register_dump(hba);
 }
 
-static inline void ufshcd_vops_device_reset(struct ufs_hba *hba)
+static inline int ufshcd_vops_device_reset(struct ufs_hba *hba)
 {
-       if (hba->vops && hba->vops->device_reset) {
-               int err = hba->vops->device_reset(hba);
-
-               if (!err)
-                       ufshcd_set_ufs_dev_active(hba);
-               if (err != -EOPNOTSUPP)
-                       ufshcd_update_evt_hist(hba, UFS_EVT_DEV_RESET, err);
-       }
+       if (hba->vops && hba->vops->device_reset)
+               return hba->vops->device_reset(hba);
+
+       return -EOPNOTSUPP;
 }
 
 static inline void ufshcd_vops_config_scaling_param(struct ufs_hba *hba,
index 9293045e128cdcc7eb1d467cfaace1e5c5850441..3e5b02f6606c429210597d30f00dadbfd73e47a9 100644 (file)
@@ -1055,7 +1055,6 @@ static void bd_finish_claiming(struct block_device *bdev, void *holder)
 /**
  * bd_abort_claiming - abort claiming of a block device
  * @bdev: block device of interest
- * @whole: whole block device
  * @holder: holder that has claimed @bdev
  *
  * Abort claiming of a block device when the exclusive open failed. This can be
@@ -1828,6 +1827,7 @@ const struct file_operations def_blk_fops = {
 /**
  * lookup_bdev  - lookup a struct block_device by name
  * @pathname:  special file representing the block device
+ * @dev:       return value of the block device's dev_t
  *
  * Get a reference to the blockdevice at @pathname in the current
  * namespace if possible and return it.  Return ERR_PTR(error)
index 98c15ff2e599a46babba662464a53971d6111ee7..840587037b59bcceefd8a715482c05249c3d3e88 100644 (file)
@@ -2475,6 +2475,22 @@ static int set_request_path_attr(struct inode *rinode, struct dentry *rdentry,
        return r;
 }
 
+static void encode_timestamp_and_gids(void **p,
+                                     const struct ceph_mds_request *req)
+{
+       struct ceph_timespec ts;
+       int i;
+
+       ceph_encode_timespec64(&ts, &req->r_stamp);
+       ceph_encode_copy(p, &ts, sizeof(ts));
+
+       /* gid_list */
+       ceph_encode_32(p, req->r_cred->group_info->ngroups);
+       for (i = 0; i < req->r_cred->group_info->ngroups; i++)
+               ceph_encode_64(p, from_kgid(&init_user_ns,
+                                           req->r_cred->group_info->gid[i]));
+}
+
 /*
  * called under mdsc->mutex
  */
@@ -2491,7 +2507,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_session *session,
        u64 ino1 = 0, ino2 = 0;
        int pathlen1 = 0, pathlen2 = 0;
        bool freepath1 = false, freepath2 = false;
-       int len, i;
+       int len;
        u16 releases;
        void *p, *end;
        int ret;
@@ -2517,17 +2533,10 @@ static struct ceph_msg *create_request_message(struct ceph_mds_session *session,
                goto out_free1;
        }
 
-       if (legacy) {
-               /* Old style */
-               len = sizeof(*head);
-       } else {
-               /* New style: add gid_list and any later fields */
-               len = sizeof(struct ceph_mds_request_head) + sizeof(u32) +
-                     (sizeof(u64) * req->r_cred->group_info->ngroups);
-       }
-
+       len = legacy ? sizeof(*head) : sizeof(struct ceph_mds_request_head);
        len += pathlen1 + pathlen2 + 2*(1 + sizeof(u32) + sizeof(u64)) +
                sizeof(struct ceph_timespec);
+       len += sizeof(u32) + (sizeof(u64) * req->r_cred->group_info->ngroups);
 
        /* calculate (max) length for cap releases */
        len += sizeof(struct ceph_mds_request_release) *
@@ -2548,7 +2557,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_session *session,
        msg->hdr.tid = cpu_to_le64(req->r_tid);
 
        /*
-        * The old ceph_mds_request_header didn't contain a version field, and
+        * The old ceph_mds_request_head didn't contain a version field, and
         * one was added when we moved the message version from 3->4.
         */
        if (legacy) {
@@ -2609,20 +2618,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_session *session,
 
        head->num_releases = cpu_to_le16(releases);
 
-       /* time stamp */
-       {
-               struct ceph_timespec ts;
-               ceph_encode_timespec64(&ts, &req->r_stamp);
-               ceph_encode_copy(&p, &ts, sizeof(ts));
-       }
-
-       /* gid list */
-       if (!legacy) {
-               ceph_encode_32(&p, req->r_cred->group_info->ngroups);
-               for (i = 0; i < req->r_cred->group_info->ngroups; i++)
-                       ceph_encode_64(&p, from_kgid(&init_user_ns,
-                                      req->r_cred->group_info->gid[i]));
-       }
+       encode_timestamp_and_gids(&p, req);
 
        if (WARN_ON_ONCE(p > end)) {
                ceph_msg_put(msg);
@@ -2730,13 +2726,8 @@ static int __prepare_send_request(struct ceph_mds_session *session,
                /* remove cap/dentry releases from message */
                rhead->num_releases = 0;
 
-               /* time stamp */
                p = msg->front.iov_base + req->r_request_release_offset;
-               {
-                       struct ceph_timespec ts;
-                       ceph_encode_timespec64(&ts, &req->r_stamp);
-                       ceph_encode_copy(&p, &ts, sizeof(ts));
-               }
+               encode_timestamp_and_gids(&p, req);
 
                msg->front.iov_len = p - msg->front.iov_base;
                msg->hdr.front_len = cpu_to_le32(msg->front.iov_len);
index c0b60961c67222fe95e60641313192f494dcde48..dab120b71e44d9faeedf56371793067ab92984e6 100644 (file)
--- a/fs/file.c
+++ b/fs/file.c
@@ -21,7 +21,6 @@
 #include <linux/rcupdate.h>
 #include <linux/close_range.h>
 #include <net/sock.h>
-#include <linux/io_uring.h>
 
 unsigned int sysctl_nr_open __read_mostly = 1024*1024;
 unsigned int sysctl_nr_open_min = BITS_PER_LONG;
@@ -428,7 +427,6 @@ void exit_files(struct task_struct *tsk)
        struct files_struct * files = tsk->files;
 
        if (files) {
-               io_uring_files_cancel(files);
                task_lock(tsk);
                tsk->files = NULL;
                task_unlock(tsk);
index 7e35283fc0b1040d968786cdcaa4a800d9257ddc..ca46f314640b150e97d38301d89ada6183497cf7 100644 (file)
@@ -992,6 +992,10 @@ enum io_mem_account {
        ACCT_PINNED,
 };
 
+static void destroy_fixed_file_ref_node(struct fixed_file_ref_node *ref_node);
+static struct fixed_file_ref_node *alloc_fixed_file_ref_node(
+                       struct io_ring_ctx *ctx);
+
 static void __io_complete_rw(struct io_kiocb *req, long res, long res2,
                             struct io_comp_state *cs);
 static void io_cqring_fill_event(struct io_kiocb *req, long res);
@@ -1501,6 +1505,13 @@ static bool io_grab_identity(struct io_kiocb *req)
                spin_unlock_irq(&ctx->inflight_lock);
                req->work.flags |= IO_WQ_WORK_FILES;
        }
+       if (!(req->work.flags & IO_WQ_WORK_MM) &&
+           (def->work_flags & IO_WQ_WORK_MM)) {
+               if (id->mm != current->mm)
+                       return false;
+               mmgrab(id->mm);
+               req->work.flags |= IO_WQ_WORK_MM;
+       }
 
        return true;
 }
@@ -1525,13 +1536,6 @@ static void io_prep_async_work(struct io_kiocb *req)
                        req->work.flags |= IO_WQ_WORK_UNBOUND;
        }
 
-       /* ->mm can never change on us */
-       if (!(req->work.flags & IO_WQ_WORK_MM) &&
-           (def->work_flags & IO_WQ_WORK_MM)) {
-               mmgrab(id->mm);
-               req->work.flags |= IO_WQ_WORK_MM;
-       }
-
        /* if we fail grabbing identity, we must COW, regrab, and retry */
        if (io_grab_identity(req))
                return;
@@ -7231,14 +7235,28 @@ static void io_file_ref_kill(struct percpu_ref *ref)
        complete(&data->done);
 }
 
+static void io_sqe_files_set_node(struct fixed_file_data *file_data,
+                                 struct fixed_file_ref_node *ref_node)
+{
+       spin_lock_bh(&file_data->lock);
+       file_data->node = ref_node;
+       list_add_tail(&ref_node->node, &file_data->ref_list);
+       spin_unlock_bh(&file_data->lock);
+       percpu_ref_get(&file_data->refs);
+}
+
 static int io_sqe_files_unregister(struct io_ring_ctx *ctx)
 {
        struct fixed_file_data *data = ctx->file_data;
-       struct fixed_file_ref_node *ref_node = NULL;
+       struct fixed_file_ref_node *backup_node, *ref_node = NULL;
        unsigned nr_tables, i;
+       int ret;
 
        if (!data)
                return -ENXIO;
+       backup_node = alloc_fixed_file_ref_node(ctx);
+       if (!backup_node)
+               return -ENOMEM;
 
        spin_lock_bh(&data->lock);
        ref_node = data->node;
@@ -7250,7 +7268,18 @@ static int io_sqe_files_unregister(struct io_ring_ctx *ctx)
 
        /* wait for all refs nodes to complete */
        flush_delayed_work(&ctx->file_put_work);
-       wait_for_completion(&data->done);
+       do {
+               ret = wait_for_completion_interruptible(&data->done);
+               if (!ret)
+                       break;
+               ret = io_run_task_work_sig();
+               if (ret < 0) {
+                       percpu_ref_resurrect(&data->refs);
+                       reinit_completion(&data->done);
+                       io_sqe_files_set_node(data, backup_node);
+                       return ret;
+               }
+       } while (1);
 
        __io_sqe_files_unregister(ctx);
        nr_tables = DIV_ROUND_UP(ctx->nr_user_files, IORING_MAX_FILES_TABLE);
@@ -7261,6 +7290,7 @@ static int io_sqe_files_unregister(struct io_ring_ctx *ctx)
        kfree(data);
        ctx->file_data = NULL;
        ctx->nr_user_files = 0;
+       destroy_fixed_file_ref_node(backup_node);
        return 0;
 }
 
@@ -7758,11 +7788,7 @@ static int io_sqe_files_register(struct io_ring_ctx *ctx, void __user *arg,
                return PTR_ERR(ref_node);
        }
 
-       file_data->node = ref_node;
-       spin_lock_bh(&file_data->lock);
-       list_add_tail(&ref_node->node, &file_data->ref_list);
-       spin_unlock_bh(&file_data->lock);
-       percpu_ref_get(&file_data->refs);
+       io_sqe_files_set_node(file_data, ref_node);
        return ret;
 out_fput:
        for (i = 0; i < ctx->nr_user_files; i++) {
@@ -7918,11 +7944,7 @@ static int __io_sqe_files_update(struct io_ring_ctx *ctx,
 
        if (needs_switch) {
                percpu_ref_kill(&data->node->refs);
-               spin_lock_bh(&data->lock);
-               list_add_tail(&ref_node->node, &data->ref_list);
-               data->node = ref_node;
-               spin_unlock_bh(&data->lock);
-               percpu_ref_get(&ctx->file_data->refs);
+               io_sqe_files_set_node(data, ref_node);
        } else
                destroy_fixed_file_ref_node(ref_node);
 
index 4365b9aa3e3f631086d9b31af9c3e78b9947c6dc..267f6dfb8960b0c2131c6f91ee1bc482f8fb3993 100644 (file)
@@ -34,6 +34,7 @@ mandatory-y += kmap_size.h
 mandatory-y += kprobes.h
 mandatory-y += linkage.h
 mandatory-y += local.h
+mandatory-y += local64.h
 mandatory-y += mm-arch-hooks.h
 mandatory-y += mmiowb.h
 mandatory-y += mmu.h
index ab8b8a737a0ad8805dc82c7e6bf2cad9ce18e865..9cfcc3baa52c6eef0439c859200cf44446a1cd17 100644 (file)
 #define TEGRA210_CLK_AUDIO4 275
 #define TEGRA210_CLK_SPDIF 276
 /* 277 */
-/* 278 */
+#define TEGRA210_CLK_QSPI_PM 278
 /* 279 */
 /* 280 */
 #define TEGRA210_CLK_SOR0_LVDS 281 /* deprecated */
index 47b021952ac753d92ad2137080ce771b2bbe46e6..d705b174d346ac54d344b732a6e6c1c327768c36 100644 (file)
@@ -447,8 +447,8 @@ enum {
        BLK_MQ_REQ_NOWAIT       = (__force blk_mq_req_flags_t)(1 << 0),
        /* allocate from reserved pool */
        BLK_MQ_REQ_RESERVED     = (__force blk_mq_req_flags_t)(1 << 1),
-       /* set RQF_PREEMPT */
-       BLK_MQ_REQ_PREEMPT      = (__force blk_mq_req_flags_t)(1 << 3),
+       /* set RQF_PM */
+       BLK_MQ_REQ_PM           = (__force blk_mq_req_flags_t)(1 << 2),
 };
 
 struct request *blk_mq_alloc_request(struct request_queue *q, unsigned int op,
index 070de09425ada7233f8899eecab0c404b30fb40b..f94ee3089e015ebe2424d899e70a3f824889c299 100644 (file)
@@ -79,9 +79,6 @@ typedef __u32 __bitwise req_flags_t;
 #define RQF_MQ_INFLIGHT                ((__force req_flags_t)(1 << 6))
 /* don't call prep for this one */
 #define RQF_DONTPREP           ((__force req_flags_t)(1 << 7))
-/* set for "ide_preempt" requests and also for requests for which the SCSI
-   "quiesce" state must be ignored. */
-#define RQF_PREEMPT            ((__force req_flags_t)(1 << 8))
 /* vaguely specified driver internal error.  Ignored by the block layer */
 #define RQF_FAILED             ((__force req_flags_t)(1 << 10))
 /* don't warn about errors */
@@ -430,8 +427,7 @@ struct request_queue {
        unsigned long           queue_flags;
        /*
         * Number of contexts that have called blk_set_pm_only(). If this
-        * counter is above zero then only RQF_PM and RQF_PREEMPT requests are
-        * processed.
+        * counter is above zero then only RQF_PM requests are processed.
         */
        atomic_t                pm_only;
 
@@ -696,6 +692,18 @@ static inline bool queue_is_mq(struct request_queue *q)
        return q->mq_ops;
 }
 
+#ifdef CONFIG_PM
+static inline enum rpm_status queue_rpm_status(struct request_queue *q)
+{
+       return q->rpm_status;
+}
+#else
+static inline enum rpm_status queue_rpm_status(struct request_queue *q)
+{
+       return RPM_ACTIVE;
+}
+#endif
+
 static inline enum blk_zoned_model
 blk_queue_zoned_model(struct request_queue *q)
 {
index 7bb66e15b481b27cd51e0c522f80d6206233f9bb..e3a0be2c90ad9846167f65740be7c6f97763e3c3 100644 (file)
@@ -77,9 +77,4 @@
 #define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, #expr)
 #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
 
-#ifdef __GENKSYMS__
-/* genksyms gets confused by _Static_assert */
-#define _Static_assert(expr, ...)
-#endif
-
 #endif /* _LINUX_BUILD_BUG_H */
index f5e02f6c06555966119b245ce4615adc0e2f892d..3989dcb94d3d1cfa733ace3685f5123b96d42d71 100644 (file)
@@ -33,8 +33,8 @@
 #define CEPH_MSGR2_INCARNATION_1 (0ull)
 
 #define DEFINE_MSGR2_FEATURE(bit, incarnation, name)               \
-       static const uint64_t CEPH_MSGR2_FEATURE_##name = (1ULL << bit); \
-       static const uint64_t CEPH_MSGR2_FEATUREMASK_##name =            \
+       static const uint64_t __maybe_unused CEPH_MSGR2_FEATURE_##name = (1ULL << bit); \
+       static const uint64_t __maybe_unused CEPH_MSGR2_FEATUREMASK_##name =            \
                        (1ULL << bit | CEPH_MSGR2_INCARNATION_##incarnation);
 
 #define HAVE_MSGR2_FEATURE(x, name) \
index 85b5151911cfd098ca97d0397e440f737de1493a..4856706fbfeb4537a67e40cb54887584045a474f 100644 (file)
        })
 
 /* acceptable for old filesystems */
-static inline bool old_valid_dev(dev_t dev)
+static __always_inline bool old_valid_dev(dev_t dev)
 {
        return MAJOR(dev) < 256 && MINOR(dev) < 256;
 }
 
-static inline u16 old_encode_dev(dev_t dev)
+static __always_inline u16 old_encode_dev(dev_t dev)
 {
        return (MAJOR(dev) << 8) | MINOR(dev);
 }
 
-static inline dev_t old_decode_dev(u16 val)
+static __always_inline dev_t old_decode_dev(u16 val)
 {
        return MKDEV((val >> 8) & 255, val & 255);
 }
 
-static inline u32 new_encode_dev(dev_t dev)
+static __always_inline u32 new_encode_dev(dev_t dev)
 {
        unsigned major = MAJOR(dev);
        unsigned minor = MINOR(dev);
        return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12);
 }
 
-static inline dev_t new_decode_dev(u32 dev)
+static __always_inline dev_t new_decode_dev(u32 dev)
 {
        unsigned major = (dev & 0xfff00) >> 8;
        unsigned minor = (dev & 0xff) | ((dev >> 12) & 0xfff00);
        return MKDEV(major, minor);
 }
 
-static inline u64 huge_encode_dev(dev_t dev)
+static __always_inline u64 huge_encode_dev(dev_t dev)
 {
        return new_encode_dev(dev);
 }
 
-static inline dev_t huge_decode_dev(u64 dev)
+static __always_inline dev_t huge_decode_dev(u64 dev)
 {
        return new_decode_dev(dev);
 }
 
-static inline int sysv_valid_dev(dev_t dev)
+static __always_inline int sysv_valid_dev(dev_t dev)
 {
        return MAJOR(dev) < (1<<14) && MINOR(dev) < (1<<18);
 }
 
-static inline u32 sysv_encode_dev(dev_t dev)
+static __always_inline u32 sysv_encode_dev(dev_t dev)
 {
        return MINOR(dev) | (MAJOR(dev) << 18);
 }
 
-static inline unsigned sysv_major(u32 dev)
+static __always_inline unsigned sysv_major(u32 dev)
 {
        return (dev >> 18) & 0x3fff;
 }
 
-static inline unsigned sysv_minor(u32 dev)
+static __always_inline unsigned sysv_minor(u32 dev)
 {
        return dev & 0x3ffff;
 }
index 5299b90a6c403e3098d5402a60cd9318cde7eb72..ecdf8a8cd6aebe62f49ae45bf7aab623b9e5282b 100644 (file)
@@ -216,6 +216,13 @@ int overcommit_kbytes_handler(struct ctl_table *, int, void *, size_t *,
                loff_t *);
 int overcommit_policy_handler(struct ctl_table *, int, void *, size_t *,
                loff_t *);
+/*
+ * Any attempt to mark this function as static leads to build failure
+ * when CONFIG_DEBUG_INFO_BTF is enabled because __add_to_page_cache_locked()
+ * is referred to by BPF code. This must be visible for error injection.
+ */
+int __add_to_page_cache_locked(struct page *page, struct address_space *mapping,
+               pgoff_t index, gfp_t gfp, void **shadowp);
 
 #define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n))
 
@@ -2432,8 +2439,9 @@ extern int __meminit early_pfn_to_nid(unsigned long pfn);
 #endif
 
 extern void set_dma_reserve(unsigned long new_dma_reserve);
-extern void memmap_init_zone(unsigned long, int, unsigned long, unsigned long,
-               enum meminit_context, struct vmem_altmap *, int migratetype);
+extern void memmap_init_zone(unsigned long, int, unsigned long,
+               unsigned long, unsigned long, enum meminit_context,
+               struct vmem_altmap *, int migratetype);
 extern void setup_per_zone_wmarks(void);
 extern int __meminit init_per_zone_wmark_min(void);
 extern void mem_init(void);
index 9874f6f675374010c657d36f6c1b85f1f3a76bda..1ac79bcee2bb71e4f3ae1a18b87dc55bd64554dc 100644 (file)
@@ -44,6 +44,9 @@
 #define SZ_2G                          0x80000000
 
 #define SZ_4G                          _AC(0x100000000, ULL)
+#define SZ_8G                          _AC(0x200000000, ULL)
+#define SZ_16G                         _AC(0x400000000, ULL)
+#define SZ_32G                         _AC(0x800000000, ULL)
 #define SZ_64T                         _AC(0x400000000000, ULL)
 
 #endif /* __LINUX_SIZES_H__ */
index 191c329e482ad97952445f4544f18efc83b26cdd..32596fdbcd5b8ecc77374a4bc80bf004f37a314a 100644 (file)
@@ -908,6 +908,8 @@ int cgroup1_parse_param(struct fs_context *fc, struct fs_parameter *param)
        opt = fs_parse(fc, cgroup1_fs_parameters, param, &result);
        if (opt == -ENOPARAM) {
                if (strcmp(param->key, "source") == 0) {
+                       if (fc->source)
+                               return invalf(fc, "Multiple sources not supported");
                        fc->source = param->string;
                        param->string = NULL;
                        return 0;
index fefa21981027da293d5d3e213bc8949f3913cfc7..613845769103cd36ab9ef9340b9dd90f5c20f5f9 100644 (file)
@@ -244,7 +244,7 @@ bool cgroup_ssid_enabled(int ssid)
  *
  * The default hierarchy is the v2 interface of cgroup and this function
  * can be used to test whether a cgroup is on the default hierarchy for
- * cases where a subsystem should behave differnetly depending on the
+ * cases where a subsystem should behave differently depending on the
  * interface version.
  *
  * List of changed behaviors:
@@ -262,7 +262,7 @@ bool cgroup_ssid_enabled(int ssid)
  *   "cgroup.procs" instead.
  *
  * - "cgroup.procs" is not sorted.  pids will be unique unless they got
- *   recycled inbetween reads.
+ *   recycled in-between reads.
  *
  * - "release_agent" and "notify_on_release" are removed.  Replacement
  *   notification mechanism will be implemented.
@@ -342,7 +342,7 @@ static bool cgroup_is_mixable(struct cgroup *cgrp)
        return !cgroup_parent(cgrp);
 }
 
-/* can @cgrp become a thread root? should always be true for a thread root */
+/* can @cgrp become a thread root? Should always be true for a thread root */
 static bool cgroup_can_be_thread_root(struct cgroup *cgrp)
 {
        /* mixables don't care */
@@ -527,7 +527,7 @@ static struct cgroup_subsys_state *cgroup_e_css_by_mask(struct cgroup *cgrp,
  * the root css is returned, so this function always returns a valid css.
  *
  * The returned css is not guaranteed to be online, and therefore it is the
- * callers responsiblity to tryget a reference for it.
+ * callers responsibility to try get a reference for it.
  */
 struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgrp,
                                         struct cgroup_subsys *ss)
@@ -699,7 +699,7 @@ EXPORT_SYMBOL_GPL(of_css);
                        ;                                               \
                else
 
-/* walk live descendants in preorder */
+/* walk live descendants in pre order */
 #define cgroup_for_each_live_descendant_pre(dsct, d_css, cgrp)         \
        css_for_each_descendant_pre((d_css), cgroup_css((cgrp), NULL))  \
                if (({ lockdep_assert_held(&cgroup_mutex);              \
@@ -933,7 +933,7 @@ void put_css_set_locked(struct css_set *cset)
 
        WARN_ON_ONCE(!list_empty(&cset->threaded_csets));
 
-       /* This css_set is dead. unlink it and release cgroup and css refs */
+       /* This css_set is dead. Unlink it and release cgroup and css refs */
        for_each_subsys(ss, ssid) {
                list_del(&cset->e_cset_node[ssid]);
                css_put(cset->subsys[ssid]);
@@ -1058,7 +1058,7 @@ static struct css_set *find_existing_css_set(struct css_set *old_cset,
 
        /*
         * Build the set of subsystem state objects that we want to see in the
-        * new css_set. while subsystems can change globally, the entries here
+        * new css_set. While subsystems can change globally, the entries here
         * won't change, so no need for locking.
         */
        for_each_subsys(ss, i) {
@@ -1148,7 +1148,7 @@ static void link_css_set(struct list_head *tmp_links, struct css_set *cset,
 
        /*
         * Always add links to the tail of the lists so that the lists are
-        * in choronological order.
+        * in chronological order.
         */
        list_move_tail(&link->cset_link, &cgrp->cset_links);
        list_add_tail(&link->cgrp_link, &cset->cgrp_links);
@@ -3654,7 +3654,7 @@ static ssize_t cgroup_freeze_write(struct kernfs_open_file *of,
 
 static int cgroup_file_open(struct kernfs_open_file *of)
 {
-       struct cftype *cft = of->kn->priv;
+       struct cftype *cft = of_cft(of);
 
        if (cft->open)
                return cft->open(of);
@@ -3663,7 +3663,7 @@ static int cgroup_file_open(struct kernfs_open_file *of)
 
 static void cgroup_file_release(struct kernfs_open_file *of)
 {
-       struct cftype *cft = of->kn->priv;
+       struct cftype *cft = of_cft(of);
 
        if (cft->release)
                cft->release(of);
@@ -3674,7 +3674,7 @@ static ssize_t cgroup_file_write(struct kernfs_open_file *of, char *buf,
 {
        struct cgroup_namespace *ns = current->nsproxy->cgroup_ns;
        struct cgroup *cgrp = of->kn->parent->priv;
-       struct cftype *cft = of->kn->priv;
+       struct cftype *cft = of_cft(of);
        struct cgroup_subsys_state *css;
        int ret;
 
@@ -3724,7 +3724,7 @@ static ssize_t cgroup_file_write(struct kernfs_open_file *of, char *buf,
 
 static __poll_t cgroup_file_poll(struct kernfs_open_file *of, poll_table *pt)
 {
-       struct cftype *cft = of->kn->priv;
+       struct cftype *cft = of_cft(of);
 
        if (cft->poll)
                return cft->poll(of, pt);
@@ -4134,7 +4134,7 @@ struct cgroup_subsys_state *css_next_child(struct cgroup_subsys_state *pos,
         * implies that if we observe !CSS_RELEASED on @pos in this RCU
         * critical section, the one pointed to by its next pointer is
         * guaranteed to not have finished its RCU grace period even if we
-        * have dropped rcu_read_lock() inbetween iterations.
+        * have dropped rcu_read_lock() in-between iterations.
         *
         * If @pos has CSS_RELEASED set, its next pointer can't be
         * dereferenced; however, as each css is given a monotonically
@@ -4382,7 +4382,7 @@ static struct css_set *css_task_iter_next_css_set(struct css_task_iter *it)
 }
 
 /**
- * css_task_iter_advance_css_set - advance a task itererator to the next css_set
+ * css_task_iter_advance_css_set - advance a task iterator to the next css_set
  * @it: the iterator to advance
  *
  * Advance @it to the next css_set to walk.
@@ -6308,7 +6308,7 @@ struct cgroup_subsys_state *css_from_id(int id, struct cgroup_subsys *ss)
  *
  * Find the cgroup at @path on the default hierarchy, increment its
  * reference count and return it.  Returns pointer to the found cgroup on
- * success, ERR_PTR(-ENOENT) if @path doens't exist and ERR_PTR(-ENOTDIR)
+ * success, ERR_PTR(-ENOENT) if @path doesn't exist and ERR_PTR(-ENOTDIR)
  * if @path points to a non-directory.
  */
 struct cgroup *cgroup_get_from_path(const char *path)
index 3594291a854286545de8c33048bb57396871b083..04029e35e69af40942815b96e39ebb576f8394c3 100644 (file)
@@ -63,6 +63,7 @@
 #include <linux/random.h>
 #include <linux/rcuwait.h>
 #include <linux/compat.h>
+#include <linux/io_uring.h>
 
 #include <linux/uaccess.h>
 #include <asm/unistd.h>
@@ -776,6 +777,7 @@ void __noreturn do_exit(long code)
                schedule();
        }
 
+       io_uring_files_cancel(tsk->files);
        exit_signals(tsk);  /* sets PF_EXITING */
 
        /* sync mm's RSS info before statistics gathering */
index b5295a0b05369c9927b01afb1fbcf88e220777e7..9880b6c0e2721fe5c0758eda58d82c1f36576d19 100644 (file)
@@ -3731,17 +3731,24 @@ static void pwq_adjust_max_active(struct pool_workqueue *pwq)
         * is updated and visible.
         */
        if (!freezable || !workqueue_freezing) {
+               bool kick = false;
+
                pwq->max_active = wq->saved_max_active;
 
                while (!list_empty(&pwq->delayed_works) &&
-                      pwq->nr_active < pwq->max_active)
+                      pwq->nr_active < pwq->max_active) {
                        pwq_activate_first_delayed(pwq);
+                       kick = true;
+               }
 
                /*
                 * Need to kick a worker after thawed or an unbound wq's
-                * max_active is bumped.  It's a slow path.  Do it always.
+                * max_active is bumped. In realtime scenarios, always kicking a
+                * worker will cause interference on the isolated cpu cores, so
+                * let's kick iff work items were activated.
                 */
-               wake_up_worker(pwq->pool);
+               if (kick)
+                       wake_up_worker(pwq->pool);
        } else {
                pwq->max_active = 0;
        }
index 7f1244b5294a8a73b534e33aca40d993b7bcbfd0..dab97bb69df63e70beac7f956fdf239b963cd7bd 100644 (file)
@@ -81,14 +81,14 @@ static int clear_bits_ll(unsigned long *addr, unsigned long mask_to_clear)
  * users set the same bit, one user will return remain bits, otherwise
  * return 0.
  */
-static int bitmap_set_ll(unsigned long *map, int start, int nr)
+static int bitmap_set_ll(unsigned long *map, unsigned long start, unsigned long nr)
 {
        unsigned long *p = map + BIT_WORD(start);
-       const int size = start + nr;
+       const unsigned long size = start + nr;
        int bits_to_set = BITS_PER_LONG - (start % BITS_PER_LONG);
        unsigned long mask_to_set = BITMAP_FIRST_WORD_MASK(start);
 
-       while (nr - bits_to_set >= 0) {
+       while (nr >= bits_to_set) {
                if (set_bits_ll(p, mask_to_set))
                        return nr;
                nr -= bits_to_set;
@@ -116,14 +116,15 @@ static int bitmap_set_ll(unsigned long *map, int start, int nr)
  * users clear the same bit, one user will return remain bits,
  * otherwise return 0.
  */
-static int bitmap_clear_ll(unsigned long *map, int start, int nr)
+static unsigned long
+bitmap_clear_ll(unsigned long *map, unsigned long start, unsigned long nr)
 {
        unsigned long *p = map + BIT_WORD(start);
-       const int size = start + nr;
+       const unsigned long size = start + nr;
        int bits_to_clear = BITS_PER_LONG - (start % BITS_PER_LONG);
        unsigned long mask_to_clear = BITMAP_FIRST_WORD_MASK(start);
 
-       while (nr - bits_to_clear >= 0) {
+       while (nr >= bits_to_clear) {
                if (clear_bits_ll(p, mask_to_clear))
                        return nr;
                nr -= bits_to_clear;
@@ -183,8 +184,8 @@ int gen_pool_add_owner(struct gen_pool *pool, unsigned long virt, phys_addr_t ph
                 size_t size, int nid, void *owner)
 {
        struct gen_pool_chunk *chunk;
-       int nbits = size >> pool->min_alloc_order;
-       int nbytes = sizeof(struct gen_pool_chunk) +
+       unsigned long nbits = size >> pool->min_alloc_order;
+       unsigned long nbytes = sizeof(struct gen_pool_chunk) +
                                BITS_TO_LONGS(nbits) * sizeof(long);
 
        chunk = vzalloc_node(nbytes, nid);
@@ -242,7 +243,7 @@ void gen_pool_destroy(struct gen_pool *pool)
        struct list_head *_chunk, *_next_chunk;
        struct gen_pool_chunk *chunk;
        int order = pool->min_alloc_order;
-       int bit, end_bit;
+       unsigned long bit, end_bit;
 
        list_for_each_safe(_chunk, _next_chunk, &pool->chunks) {
                chunk = list_entry(_chunk, struct gen_pool_chunk, next_chunk);
@@ -278,7 +279,7 @@ unsigned long gen_pool_alloc_algo_owner(struct gen_pool *pool, size_t size,
        struct gen_pool_chunk *chunk;
        unsigned long addr = 0;
        int order = pool->min_alloc_order;
-       int nbits, start_bit, end_bit, remain;
+       unsigned long nbits, start_bit, end_bit, remain;
 
 #ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
        BUG_ON(in_nmi());
@@ -487,7 +488,7 @@ void gen_pool_free_owner(struct gen_pool *pool, unsigned long addr, size_t size,
 {
        struct gen_pool_chunk *chunk;
        int order = pool->min_alloc_order;
-       int start_bit, nbits, remain;
+       unsigned long start_bit, nbits, remain;
 
 #ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
        BUG_ON(in_nmi());
@@ -755,7 +756,7 @@ unsigned long gen_pool_best_fit(unsigned long *map, unsigned long size,
        index = bitmap_find_next_zero_area(map, size, start, nr, 0);
 
        while (index < size) {
-               int next_bit = find_next_bit(map, size, index + nr);
+               unsigned long next_bit = find_next_bit(map, size, index + nr);
                if ((next_bit - index) < len) {
                        len = next_bit - index;
                        start_bit = index;
index 8e4d5afbbb1094c337c0a0b95b815f3f83234efe..66e1c96387c407c1ab1745c97d51a46bf33b94ee 100644 (file)
@@ -8,4 +8,4 @@
 
 obj-$(CONFIG_ZLIB_DFLTCC) += zlib_dfltcc.o
 
-zlib_dfltcc-objs := dfltcc.o dfltcc_deflate.o dfltcc_inflate.o dfltcc_syms.o
+zlib_dfltcc-objs := dfltcc.o dfltcc_deflate.o dfltcc_inflate.o
index c30de430b30ca64ae30d3299949e59ddb9520604..782f76e9d4dab1d339748c58599cba3a9378058b 100644 (file)
@@ -1,7 +1,8 @@
 // SPDX-License-Identifier: Zlib
 /* dfltcc.c - SystemZ DEFLATE CONVERSION CALL support. */
 
-#include <linux/zutil.h>
+#include <linux/export.h>
+#include <linux/module.h>
 #include "dfltcc_util.h"
 #include "dfltcc.h"
 
@@ -53,3 +54,6 @@ void dfltcc_reset(
     dfltcc_state->dht_threshold = DFLTCC_DHT_MIN_SAMPLE_SIZE;
     dfltcc_state->param.ribm = DFLTCC_RIBM;
 }
+EXPORT_SYMBOL(dfltcc_reset);
+
+MODULE_LICENSE("GPL");
index 00c185101c6d14a145d16b54b739f8b8caa2d830..6c946e8532eec6deb8a744dda760153ac7a1ca04 100644 (file)
@@ -4,6 +4,7 @@
 #include "dfltcc_util.h"
 #include "dfltcc.h"
 #include <asm/setup.h>
+#include <linux/export.h>
 #include <linux/zutil.h>
 
 /*
@@ -34,6 +35,7 @@ int dfltcc_can_deflate(
 
     return 1;
 }
+EXPORT_SYMBOL(dfltcc_can_deflate);
 
 static void dfltcc_gdht(
     z_streamp strm
@@ -277,3 +279,4 @@ again:
         goto again; /* deflate() must use all input or all output */
     return 1;
 }
+EXPORT_SYMBOL(dfltcc_deflate);
index db107016d29b32952efa5def52873176292ec720..fb60b5a6a1cb678acb2111cb2331a3a7e3f80a0d 100644 (file)
@@ -125,7 +125,7 @@ dfltcc_inflate_action dfltcc_inflate(
     param->ho = (state->write - state->whave) & ((1 << HB_BITS) - 1);
     if (param->hl)
         param->nt = 0; /* Honor history for the first block */
-    param->cv = state->flags ? REVERSE(state->check) : state->check;
+    param->cv = state->check;
 
     /* Inflate */
     do {
@@ -138,7 +138,7 @@ dfltcc_inflate_action dfltcc_inflate(
     state->bits = param->sbb;
     state->whave = param->hl;
     state->write = (param->ho + param->hl) & ((1 << HB_BITS) - 1);
-    state->check = state->flags ? REVERSE(param->cv) : param->cv;
+    state->check = param->cv;
     if (cc == DFLTCC_CC_OP2_CORRUPT && param->oesc != 0) {
         /* Report an error if stream is corrupted */
         state->mode = BAD;
diff --git a/lib/zlib_dfltcc/dfltcc_syms.c b/lib/zlib_dfltcc/dfltcc_syms.c
deleted file mode 100644 (file)
index 6f23481..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/lib/zlib_dfltcc/dfltcc_syms.c
- *
- * Exported symbols for the s390 zlib dfltcc support.
- *
- */
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/zlib.h>
-#include "dfltcc.h"
-
-EXPORT_SYMBOL(dfltcc_can_deflate);
-EXPORT_SYMBOL(dfltcc_deflate);
-EXPORT_SYMBOL(dfltcc_reset);
-MODULE_LICENSE("GPL");
index cbf32d2824fd473d309c157c514dfff38783be9b..a2602969873dcf6c6bc989bcccb2136bc45348b0 100644 (file)
@@ -4105,10 +4105,30 @@ retry_avoidcopy:
                 * may get SIGKILLed if it later faults.
                 */
                if (outside_reserve) {
+                       struct address_space *mapping = vma->vm_file->f_mapping;
+                       pgoff_t idx;
+                       u32 hash;
+
                        put_page(old_page);
                        BUG_ON(huge_pte_none(pte));
+                       /*
+                        * Drop hugetlb_fault_mutex and i_mmap_rwsem before
+                        * unmapping.  unmapping needs to hold i_mmap_rwsem
+                        * in write mode.  Dropping i_mmap_rwsem in read mode
+                        * here is OK as COW mappings do not interact with
+                        * PMD sharing.
+                        *
+                        * Reacquire both after unmap operation.
+                        */
+                       idx = vma_hugecache_offset(h, vma, haddr);
+                       hash = hugetlb_fault_mutex_hash(mapping, idx);
+                       mutex_unlock(&hugetlb_fault_mutex_table[hash]);
+                       i_mmap_unlock_read(mapping);
+
                        unmap_ref_private(mm, vma, old_page, haddr);
-                       BUG_ON(huge_pte_none(pte));
+
+                       i_mmap_lock_read(mapping);
+                       mutex_lock(&hugetlb_fault_mutex_table[hash]);
                        spin_lock(ptl);
                        ptep = huge_pte_offset(mm, haddr, huge_page_size(h));
                        if (likely(ptep &&
index 1dd5a0f9937261fa3ccfbcb5ac8125986838ce34..5106b84b07d4353a3d44618d49f30f544667af5c 100644 (file)
@@ -337,6 +337,8 @@ void kasan_record_aux_stack(void *addr)
        cache = page->slab_cache;
        object = nearest_obj(cache, page, addr);
        alloc_meta = kasan_get_alloc_meta(cache, object);
+       if (!alloc_meta)
+               return;
 
        alloc_meta->aux_stack[1] = alloc_meta->aux_stack[0];
        alloc_meta->aux_stack[0] = kasan_save_stack(GFP_NOWAIT);
index 7d608765932b99e95aa5ba49e88328412084b1c4..feff48e1465a6ee652d130560617e2425109ee2f 100644 (file)
@@ -2892,11 +2892,13 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf)
                entry = mk_pte(new_page, vma->vm_page_prot);
                entry = pte_sw_mkyoung(entry);
                entry = maybe_mkwrite(pte_mkdirty(entry), vma);
+
                /*
                 * Clear the pte entry and flush it first, before updating the
-                * pte with the new entry. This will avoid a race condition
-                * seen in the presence of one thread doing SMC and another
-                * thread doing COW.
+                * pte with the new entry, to keep TLBs on different CPUs in
+                * sync. This code used to set the new PTE then flush TLBs, but
+                * that left a window where the new PTE could be loaded into
+                * some TLBs while the old PTE remains in others.
                 */
                ptep_clear_flush_notify(vma, vmf->address, vmf->pte);
                page_add_new_anon_rmap(new_page, vma, vmf->address, false);
index af41fb99082004bcfcdfbf4f2c5eb0445705e188..f9d57b9be8c71d5b35a17bd3752a8c7c070b674d 100644 (file)
@@ -713,7 +713,7 @@ void __ref move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn,
         * expects the zone spans the pfn range. All the pages in the range
         * are reserved so nobody should be touching them so we should be safe
         */
-       memmap_init_zone(nr_pages, nid, zone_idx(zone), start_pfn,
+       memmap_init_zone(nr_pages, nid, zone_idx(zone), start_pfn, 0,
                         MEMINIT_HOTPLUG, altmap, migratetype);
 
        set_zone_contiguous(zone);
index c5590afe71650a21b98b33f748d97dd99850f30a..f554320281ccd830fd171c04d33e970e158d30fa 100644 (file)
@@ -358,7 +358,9 @@ static unsigned long get_extent(enum pgt_entry entry, unsigned long old_addr,
 
        next = (old_addr + size) & mask;
        /* even if next overflowed, extent below will be ok */
-       extent = (next > old_end) ? old_end - old_addr : next - old_addr;
+       extent = next - old_addr;
+       if (extent > old_end - old_addr)
+               extent = old_end - old_addr;
        next = (new_addr + size) & mask;
        if (extent > next - new_addr)
                extent = next - new_addr;
index 7a2c89b21115011e738823181fccfffe9e321158..bdbec4c981738dc4e821564d32abc0d897de29d1 100644 (file)
@@ -423,6 +423,8 @@ defer_init(int nid, unsigned long pfn, unsigned long end_pfn)
        if (end_pfn < pgdat_end_pfn(NODE_DATA(nid)))
                return false;
 
+       if (NODE_DATA(nid)->first_deferred_pfn != ULONG_MAX)
+               return true;
        /*
         * We start only with one section of pages, more pages are added as
         * needed until the rest of deferred pages are initialized.
@@ -6116,7 +6118,7 @@ overlap_memmap_init(unsigned long zone, unsigned long *pfn)
  * zone stats (e.g., nr_isolate_pageblock) are touched.
  */
 void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
-               unsigned long start_pfn,
+               unsigned long start_pfn, unsigned long zone_end_pfn,
                enum meminit_context context,
                struct vmem_altmap *altmap, int migratetype)
 {
@@ -6152,7 +6154,7 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
                if (context == MEMINIT_EARLY) {
                        if (overlap_memmap_init(zone, &pfn))
                                continue;
-                       if (defer_init(nid, pfn, end_pfn))
+                       if (defer_init(nid, pfn, zone_end_pfn))
                                break;
                }
 
@@ -6266,7 +6268,7 @@ void __meminit __weak memmap_init(unsigned long size, int nid,
 
                if (end_pfn > start_pfn) {
                        size = end_pfn - start_pfn;
-                       memmap_init_zone(size, nid, zone, start_pfn,
+                       memmap_init_zone(size, nid, zone, start_pfn, range_end_pfn,
                                         MEMINIT_EARLY, NULL, MIGRATE_MOVABLE);
                }
        }
index 0c8b43a5b3b0339820c891cb9cde893387e03b13..dc5b42e700b853eabd668d56fd04f9eb64c5c4d0 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1619,9 +1619,6 @@ static inline struct page *alloc_slab_page(struct kmem_cache *s,
        else
                page = __alloc_pages_node(node, flags, order);
 
-       if (page)
-               account_slab_page(page, order, s);
-
        return page;
 }
 
@@ -1774,6 +1771,8 @@ static struct page *allocate_slab(struct kmem_cache *s, gfp_t flags, int node)
 
        page->objects = oo_objects(oo);
 
+       account_slab_page(page, oo_order(oo), s);
+
        page->slab_cache = s;
        __SetPageSlab(page);
        if (page_is_pfmemalloc(page))
index c1ebb2aa08b5cb604a085d06198767442ef6f28d..c38d8de93836371f0beb51bee80c1ef9b81485f2 100644 (file)
@@ -1333,7 +1333,8 @@ static int prepare_auth_signature(struct ceph_connection *con)
        void *buf;
        int ret;
 
-       buf = alloc_conn_buf(con, head_onwire_len(SHA256_DIGEST_SIZE, false));
+       buf = alloc_conn_buf(con, head_onwire_len(SHA256_DIGEST_SIZE,
+                                                 con_secure(con)));
        if (!buf)
                return -ENOMEM;
 
@@ -2032,10 +2033,18 @@ bad:
        return -EINVAL;
 }
 
+/*
+ * Align session_key and con_secret to avoid GFP_ATOMIC allocation
+ * inside crypto_shash_setkey() and crypto_aead_setkey() called from
+ * setup_crypto().  __aligned(16) isn't guaranteed to work for stack
+ * objects, so do it by hand.
+ */
 static int process_auth_done(struct ceph_connection *con, void *p, void *end)
 {
-       u8 session_key[CEPH_KEY_LEN];
-       u8 con_secret[CEPH_MAX_CON_SECRET_LEN];
+       u8 session_key_buf[CEPH_KEY_LEN + 16];
+       u8 con_secret_buf[CEPH_MAX_CON_SECRET_LEN + 16];
+       u8 *session_key = PTR_ALIGN(&session_key_buf[0], 16);
+       u8 *con_secret = PTR_ALIGN(&con_secret_buf[0], 16);
        int session_key_len, con_secret_len;
        int payload_len;
        u64 global_id;
index 00085308ed9da97a53467b0a8bbfc2613d3ccc2c..92e888ed939f9833a3b17f32ae7d15813ec4c46f 100755 (executable)
@@ -6646,6 +6646,12 @@ sub process {
 #                      }
 #              }
 
+# strlcpy uses that should likely be strscpy
+               if ($line =~ /\bstrlcpy\s*\(/) {
+                       WARN("STRLCPY",
+                            "Prefer strscpy over strlcpy - see: https://lore.kernel.org/r/CAHk-=wgfRnXz0W3D37d01q3JFkr_i_uTL=V6A6G1oUZcprmknw\@mail.gmail.com/\n" . $herecurr);
+               }
+
 # typecasts on min/max could be min_t/max_t
                if ($perl_version_ok &&
                    defined $stat &&
index e083bcae343f3e71290e433b7fd50861fd819ca4..3643b4f896eded47c9d8517ffc9585438bd62398 100755 (executable)
@@ -15,6 +15,8 @@ if ! test -r System.map ; then
        exit 0
 fi
 
+# legacy behavior: "depmod" in /sbin, no /sbin in PATH
+PATH="$PATH:/sbin"
 if [ -z $(command -v $DEPMOD) ]; then
        echo "Warning: 'make modules_install' requires $DEPMOD. Please install it." >&2
        echo "This is probably in the kmod package." >&2
index 9a25307f6115484c5d1d2425751cac8f1673390a..d42115e4284d75fea30850c19b3c172ff52f4a49 100644 (file)
@@ -4,7 +4,7 @@
 include local_config.mk
 
 uname_M := $(shell uname -m 2>/dev/null || echo not)
-MACHINE ?= $(shell echo $(uname_M) | sed -e 's/aarch64.*/arm64/')
+MACHINE ?= $(shell echo $(uname_M) | sed -e 's/aarch64.*/arm64/' -e 's/ppc64.*/ppc64/')
 
 # Without this, failed build products remain, with up-to-date timestamps,
 # thus tricking Make (and you!) into believing that All Is Well, in subsequent
@@ -43,7 +43,7 @@ TEST_GEN_FILES += thuge-gen
 TEST_GEN_FILES += transhuge-stress
 TEST_GEN_FILES += userfaultfd
 
-ifeq ($(ARCH),x86_64)
+ifeq ($(MACHINE),x86_64)
 CAN_BUILD_I386 := $(shell ./../x86/check_cc.sh $(CC) ../x86/trivial_32bit_program.c -m32)
 CAN_BUILD_X86_64 := $(shell ./../x86/check_cc.sh $(CC) ../x86/trivial_64bit_program.c)
 CAN_BUILD_WITH_NOPIE := $(shell ./../x86/check_cc.sh $(CC) ../x86/trivial_program.c -no-pie)
@@ -65,13 +65,13 @@ TEST_GEN_FILES += $(BINARIES_64)
 endif
 else
 
-ifneq (,$(findstring $(ARCH),powerpc))
+ifneq (,$(findstring $(MACHINE),ppc64))
 TEST_GEN_FILES += protection_keys
 endif
 
 endif
 
-ifneq (,$(filter $(MACHINE),arm64 ia64 mips64 parisc64 ppc64 ppc64le riscv64 s390x sh64 sparc64 x86_64))
+ifneq (,$(filter $(MACHINE),arm64 ia64 mips64 parisc64 ppc64 riscv64 s390x sh64 sparc64 x86_64))
 TEST_GEN_FILES += va_128TBswitch
 TEST_GEN_FILES += virtual_address_range
 TEST_GEN_FILES += write_to_hugetlbfs
@@ -84,7 +84,7 @@ TEST_FILES := test_vmalloc.sh
 KSFT_KHDR_INSTALL := 1
 include ../lib.mk
 
-ifeq ($(ARCH),x86_64)
+ifeq ($(MACHINE),x86_64)
 BINARIES_32 := $(patsubst %,$(OUTPUT)/%,$(BINARIES_32))
 BINARIES_64 := $(patsubst %,$(OUTPUT)/%,$(BINARIES_64))