Merge tag 'qcom-arm64-for-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorArnd Bergmann <arnd@arndb.de>
Tue, 9 Feb 2021 16:53:44 +0000 (17:53 +0100)
committerArnd Bergmann <arnd@arndb.de>
Tue, 9 Feb 2021 16:53:44 +0000 (17:53 +0100)
Qualcomm ARM64 DT updates for 5.12

This introduces initial support for the new SM8350 platform, aka
Snapdragon 888, and the MTP device for this.

It adds PCIe, audio, display, GPU, HDMI watchdog, LLCC and PMIC ADC
support to the SM8250 platform and RB5 in particular, as well as improve
the definition of CPUs, thermal zones and fixes a few smaller issues.

It introduces new Devicetree files for the Alcatel Idol 3, ASUS Zenfone
2 Laser and BQ Aquaris X5, based on the MSM8916 platform.

It contains an overhaul of the existing MSM8992 and MSM8994 platform
files and introduces RPM power domains and SMP2P nodes. It adds
touchscreen, additional regulators, microSD card support and adds the
Sony Mobile Ivy, Karin, Suzuran and Satsuki devices. It joins the common
parts of the Lumia 950 and 950XL and extend these with support for
sensors, NFC, bluetooth, audio, microSD and Type-C mux pins.

It introduces support for the OnePlus6 and 6t, adds the missing higher
frequences for the SDM850 laptops, adds CPU cluster idle support on
SM8150  and a few tweaks to the SC7180 platform.

* tag 'qcom-arm64-for-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (100 commits)
  arm64: dts: qcom: msm8998: Use rpmpd definitions for opp table levels
  arm64: dts: qcom: msm8996: Add missing device_type under pcie[01]
  arm64: dts: qcom: sc7180: Add support for gpu fuse
  arm64: dts: qcom: msm8998: Disable some components by default
  arm64: dts: qcom: msm8998: Add capacity-dmips-mhz to CPU cores
  arm64: dts: qcom: msm8998: Add I2C pinctrl and fix BLSP2_I2C naming
  arm64: dts: qcom: msm8998: Add DMA to I2C hosts
  arm64: dts: qcom: msm8998: Merge in msm8998-pins.dtsi to msm8998.dtsi
  arm64: dts: msm8916: Fix reserved and rfsa nodes unit address
  arm64: dts: qcom: msm8994-octagon: Add AD7147 and APDS9930 sensors
  arm64: dts: qcom: msm8994-octagon: Add TAS2553 codec
  arm64: dts: qcom: msm8994-octagon: Add sensors on blsp1_i2c5
  arm64: dts: qcom: msm8994-octagon: Add NXP NFC node
  arm64: dts: qcom: msm8994-octagon: Add FM Radio and DDR regulator nodes
  arm64: dts: qcom: msm8994-octagon: Configure PON keys
  arm64: dts: qcom: msm8994-octagon: Configure Lattice iCE40 FPGA
  arm64: dts: qcom: msm8994-octagon: Add uSD card and disable HS400 on eMMC
  arm64: dts: qcom: msm8994-octagon: Configure HD3SS460 Type-C mux pins
  arm64: dts: qcom: msm8994-octagon: Add QCA6174 bluetooth
  arm64: dts: qcom: msm8994-octagon: Configure regulators
  ...

Link: https://lore.kernel.org/r/20210204052043.388621-1-bjorn.andersson@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
437 files changed:
Documentation/devicetree/bindings/arm/amlogic.yaml
Documentation/devicetree/bindings/arm/amlogic/amlogic,meson-mx-secbus2.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/arm/bcm/brcm,bcm4908.yaml
Documentation/devicetree/bindings/arm/mediatek.yaml
Documentation/devicetree/bindings/arm/renesas.yaml
Documentation/devicetree/bindings/arm/sunxi.yaml
Documentation/devicetree/bindings/arm/tegra.yaml
Documentation/devicetree/bindings/arm/xilinx.yaml
Documentation/devicetree/bindings/gpio/mrvl-gpio.yaml
Documentation/devicetree/bindings/iio/adc/x-powers,axp209-adc.yaml
Documentation/devicetree/bindings/interrupt-controller/allwinner,sun7i-a20-sc-nmi.yaml
Documentation/devicetree/bindings/media/allwinner,sun8i-h3-deinterlace.yaml
Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml
Documentation/devicetree/bindings/rtc/allwinner,sun6i-a31-rtc.yaml
Documentation/devicetree/bindings/sram/sram.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/armada-385-linksys.dtsi
arch/arm/boot/dts/armada-388-helios4.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/bcm21664.dtsi
arch/arm/boot/dts/bcm2711-rpi-4-b.dts
arch/arm/boot/dts/bcm2711.dtsi
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/exynos3250-artik5.dtsi
arch/arm/boot/dts/exynos3250-monk.dts
arch/arm/boot/dts/exynos3250-rinato.dts
arch/arm/boot/dts/exynos4210-i9100.dts
arch/arm/boot/dts/exynos5250-spring.dts
arch/arm/boot/dts/exynos5420-arndale-octa.dts
arch/arm/boot/dts/exynos5422-odroid-core.dtsi
arch/arm/boot/dts/exynos54xx.dtsi
arch/arm/boot/dts/keystone-k2e.dtsi
arch/arm/boot/dts/keystone.dtsi
arch/arm/boot/dts/meson.dtsi
arch/arm/boot/dts/meson8.dtsi
arch/arm/boot/dts/meson8b-ec100.dts
arch/arm/boot/dts/meson8b-mxq.dts
arch/arm/boot/dts/meson8b-odroidc1.dts
arch/arm/boot/dts/meson8b.dtsi
arch/arm/boot/dts/meson8m2-mxiii-plus.dts
arch/arm/boot/dts/mmp2-olpc-xo-1-75.dts
arch/arm/boot/dts/mmp2.dtsi
arch/arm/boot/dts/mmp3-dell-ariel.dts
arch/arm/boot/dts/mmp3.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/sun4i-a10-a1000.dts
arch/arm/boot/dts/sun4i-a10-cubieboard.dts
arch/arm/boot/dts/sun4i-a10-dserve-dsrv9703c.dts
arch/arm/boot/dts/sun4i-a10-inet1.dts
arch/arm/boot/dts/sun4i-a10-jesurun-q5.dts
arch/arm/boot/dts/sun4i-a10-marsboard.dts
arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts
arch/arm/boot/dts/sun4i-a10-pcduino.dts
arch/arm/boot/dts/sun4i-a10-pov-protab2-ips9.dts
arch/arm/boot/dts/sun5i-a10s-auxtek-t003.dts
arch/arm/boot/dts/sun5i-a10s-auxtek-t004.dts
arch/arm/boot/dts/sun5i-a10s-mk802.dts
arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts
arch/arm/boot/dts/sun5i-a10s-r7-tv-dongle.dts
arch/arm/boot/dts/sun5i-a10s-wobo-i5.dts
arch/arm/boot/dts/sun5i-a13-empire-electronix-d709.dts
arch/arm/boot/dts/sun5i-a13-licheepi-one.dts
arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts
arch/arm/boot/dts/sun5i-a13-olinuxino.dts
arch/arm/boot/dts/sun5i-a13-pocketbook-touch-lux-3.dts
arch/arm/boot/dts/sun5i-a13.dtsi
arch/arm/boot/dts/sun5i-gr8-evb.dts
arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi
arch/arm/boot/dts/sun5i.dtsi
arch/arm/boot/dts/sun6i-a31-hummingbird.dts
arch/arm/boot/dts/sun6i-a31-i7.dts
arch/arm/boot/dts/sun6i-a31-m9.dts
arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts
arch/arm/boot/dts/sun6i-a31.dtsi
arch/arm/boot/dts/sun6i-a31s-primo81.dts
arch/arm/boot/dts/sun6i-a31s-sina31s-core.dtsi
arch/arm/boot/dts/sun6i-a31s-sinovoip-bpi-m2.dts
arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts
arch/arm/boot/dts/sun6i-reference-design-tablet.dtsi
arch/arm/boot/dts/sun7i-a20-bananapi-m1-plus.dts
arch/arm/boot/dts/sun7i-a20-bananapi.dts
arch/arm/boot/dts/sun7i-a20-bananapro.dts
arch/arm/boot/dts/sun7i-a20-cubieboard2.dts
arch/arm/boot/dts/sun7i-a20-cubietruck.dts
arch/arm/boot/dts/sun7i-a20-i12-tvbox.dts
arch/arm/boot/dts/sun7i-a20-itead-ibox.dts
arch/arm/boot/dts/sun7i-a20-lamobo-r1.dts
arch/arm/boot/dts/sun7i-a20-m3.dts
arch/arm/boot/dts/sun7i-a20-olimex-som-evb.dts
arch/arm/boot/dts/sun7i-a20-olimex-som204-evb.dts
arch/arm/boot/dts/sun7i-a20-olinuxino-lime.dts
arch/arm/boot/dts/sun7i-a20-olinuxino-lime2.dts
arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
arch/arm/boot/dts/sun7i-a20-orangepi-mini.dts
arch/arm/boot/dts/sun7i-a20-orangepi.dts
arch/arm/boot/dts/sun7i-a20-pcduino3-nano.dts
arch/arm/boot/dts/sun7i-a20-pcduino3.dts
arch/arm/boot/dts/sun7i-a20-wexler-tab7200.dts
arch/arm/boot/dts/sun7i-a20.dtsi
arch/arm/boot/dts/sun8i-a23-a33.dtsi
arch/arm/boot/dts/sun8i-a33-inet-d978-rev2.dts
arch/arm/boot/dts/sun8i-a33-olinuxino.dts
arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dts
arch/arm/boot/dts/sun8i-a33.dtsi
arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts
arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts
arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
arch/arm/boot/dts/sun8i-a83t.dtsi
arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts
arch/arm/boot/dts/sun8i-h3-beelink-x2.dts
arch/arm/boot/dts/sun8i-h3-nanopi-duo2.dts
arch/arm/boot/dts/sun8i-h3-nanopi-neo-air.dts
arch/arm/boot/dts/sun8i-h3-nanopi-r1.dts
arch/arm/boot/dts/sun8i-h3-nanopi.dtsi
arch/arm/boot/dts/sun8i-h3-orangepi-zero-plus2.dts
arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts
arch/arm/boot/dts/sun8i-r16-parrot.dts
arch/arm/boot/dts/sun8i-r40.dtsi
arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi
arch/arm/boot/dts/sun8i-s3-elimo-impetus.dtsi
arch/arm/boot/dts/sun8i-s3-pinecube.dts
arch/arm/boot/dts/sun8i-v3-sl631-imx179.dts [new file with mode: 0644]
arch/arm/boot/dts/sun8i-v3-sl631.dtsi [new file with mode: 0644]
arch/arm/boot/dts/sun8i-v3s.dtsi
arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi
arch/arm/boot/dts/tegra30-ouya.dts
arch/arm/include/asm/Kbuild
arch/arm64/Kconfig.platforms
arch/arm64/boot/dts/allwinner/Makefile
arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.0.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.1.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone-1.2.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi
arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab-early-adopter.dts [new file with mode: 0644]
arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi
arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus.dts
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts
arch/arm64/boot/dts/allwinner/sun50i-h6-cpu-opp.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts
arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
arch/arm64/boot/dts/altera/socfpga_stratix10.dtsi
arch/arm64/boot/dts/amlogic/Makefile
arch/arm64/boot/dts/amlogic/meson-axg.dtsi
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts
arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts
arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-g12b-gtking-pro.dts
arch/arm64/boot/dts/amlogic/meson-g12b-gtking.dts
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts
arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi
arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
arch/arm64/boot/dts/amlogic/meson-gx.dtsi
arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-hub.dts
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek-play2.dts
arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dts
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc-v2.dts
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
arch/arm64/boot/dts/amlogic/meson-sm1-khadas-vim3l.dts
arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts
arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
arch/arm64/boot/dts/broadcom/bcm4908/Makefile
arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts [new file with mode: 0644]
arch/arm64/boot/dts/broadcom/bcm4908/bcm4906.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts
arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
arch/arm64/boot/dts/broadcom/stingray/bcm958742-base.dtsi
arch/arm64/boot/dts/broadcom/stingray/stingray-sata.dtsi [deleted file]
arch/arm64/boot/dts/broadcom/stingray/stingray.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/marvell/armada-3720-espressobin.dtsi
arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
arch/arm64/boot/dts/marvell/armada-37xx.dtsi
arch/arm64/boot/dts/marvell/armada-ap807.dtsi
arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
arch/arm64/boot/dts/marvell/armada-cp11x.dtsi
arch/arm64/boot/dts/marvell/cn9130-db.dts
arch/arm64/boot/dts/mediatek/Makefile
arch/arm64/boot/dts/mediatek/mt6779.dtsi
arch/arm64/boot/dts/mediatek/mt7622.dtsi
arch/arm64/boot/dts/mediatek/mt8183-evb.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui-krane-sku0.dts [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183-kukui-krane-sku176.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
arch/arm64/boot/dts/mediatek/mt8183.dtsi
arch/arm64/boot/dts/mediatek/mt8192.dtsi
arch/arm64/boot/dts/mediatek/mt8516.dtsi
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/boot/dts/xilinx/Makefile
arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi
arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revC.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revC.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu106-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu111-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp.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 3341788..5f6769b 100644 (file)
@@ -151,6 +151,7 @@ properties:
       - description: Boards with the Amlogic Meson G12B S922X SoC
         items:
           - enum:
+              - azw,gsking-x
               - azw,gtking
               - azw,gtking-pro
               - hardkernel,odroid-n2
@@ -163,9 +164,10 @@ properties:
       - description: Boards with the Amlogic Meson SM1 S905X3/D3/Y3 SoC
         items:
           - enum:
-              - seirobotics,sei610
-              - khadas,vim3l
               - hardkernel,odroid-c4
+              - hardkernel,odroid-hc4
+              - khadas,vim3l
+              - seirobotics,sei610
           - const: amlogic,sm1
 
       - description: Boards with the Amlogic Meson A1 A113L SoC
diff --git a/Documentation/devicetree/bindings/arm/amlogic/amlogic,meson-mx-secbus2.yaml b/Documentation/devicetree/bindings/arm/amlogic/amlogic,meson-mx-secbus2.yaml
new file mode 100644 (file)
index 0000000..eee7cda
--- /dev/null
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/arm/amlogic/amlogic,meson-mx-secbus2.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Amlogic Meson8/Meson8b/Meson8m2 SECBUS2 register interface
+
+maintainers:
+  - Martin Blumenstingl <martin.blumenstingl@googlemail.com>
+
+description: |
+  The Meson8/Meson8b/Meson8m2 SoCs have a register bank called SECBUS2 which
+  contains registers for various IP blocks such as pin-controller bits for
+  the BSD_EN and TEST_N GPIOs as well as some AO ARC core control bits.
+  The registers can be accessed directly when not running in "secure mode".
+  When "secure mode" is enabled then these registers have to be accessed
+  through secure monitor calls.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - amlogic,meson8-secbus2
+          - amlogic,meson8b-secbus2
+      - const: syscon
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    secbus2: system-controller@4000 {
+      compatible = "amlogic,meson8-secbus2", "syscon";
+      reg = <0x4000 0x2000>;
+    };
index 5fec063..e55731f 100644 (file)
@@ -19,6 +19,8 @@ properties:
     oneOf:
       - description: BCM4906 based boards
         items:
+          - enum:
+              - netgear,r8000p
           - const: brcm,bcm4906
           - const: brcm,bcm4908
 
index 53f0d4e..93b3bdf 100644 (file)
@@ -120,7 +120,9 @@ properties:
           - const: mediatek,mt8183
       - description: Google Krane (Lenovo IdeaPad Duet, 10e,...)
         items:
-          - const: google,krane-sku176
+          - enum:
+              - google,krane-sku0
+              - google,krane-sku176
           - const: google,krane
           - const: mediatek,mt8183
 
index fe11be6..5fd0696 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 6db32fb..08607c7 100644 (file)
@@ -657,7 +657,8 @@ properties:
       - description: Pine64 PineCube
         items:
           - const: pine64,pinecube
-          - const: allwinner,sun8i-s3
+          - const: sochip,s3
+          - const: allwinner,sun8i-v3
 
       - description: Pine64 PineH64 model A
         items:
@@ -683,23 +684,31 @@ properties:
       - description: Pine64 PinePhone Developer Batch (1.0)
         items:
           - const: pine64,pinephone-1.0
+          - const: pine64,pinephone
           - const: allwinner,sun50i-a64
 
       - description: Pine64 PinePhone Braveheart (1.1)
         items:
           - const: pine64,pinephone-1.1
+          - const: pine64,pinephone
           - const: allwinner,sun50i-a64
 
       - description: Pine64 PinePhone (1.2)
         items:
           - const: pine64,pinephone-1.2
+          - const: pine64,pinephone
           - const: allwinner,sun50i-a64
 
-      - description: Pine64 PineTab
+      - description: Pine64 PineTab, Development Sample
         items:
           - const: pine64,pinetab
           - const: allwinner,sun50i-a64
 
+      - description: Pine64 PineTab, Early Adopter's batch (and maybe later ones)
+        items:
+          - const: pine64,pinetab-early-adopter
+          - const: allwinner,sun50i-a64
+
       - description: Pine64 SoPine Baseboard
         items:
           - const: pine64,sopine-baseboard
@@ -777,6 +786,12 @@ properties:
           - const: sinlinx,sina33
           - const: allwinner,sun8i-a33
 
+      - description: SL631 Action Camera with IMX179
+        items:
+          - const: allwinner,sl631-imx179
+          - const: allwinner,sl631
+          - const: allwinner,sun8i-v3
+
       - description: Tanix TX6
         items:
           - const: oranth,tanix-tx6
index c5fbf86..b9f75e2 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 e0c6787..97e77b4 100644 (file)
@@ -91,6 +91,7 @@ properties:
         items:
           - enum:
               - xlnx,zynqmp-zcu104-revA
+              - xlnx,zynqmp-zcu104-revC
               - xlnx,zynqmp-zcu104-rev1.0
           - const: xlnx,zynqmp-zcu104
           - const: xlnx,zynqmp
@@ -107,7 +108,7 @@ properties:
         items:
           - enum:
               - xlnx,zynqmp-zcu111-revA
-              - xlnx,zynqmp-zcu11-rev1.0
+              - xlnx,zynqmp-zcu111-rev1.0
           - const: xlnx,zynqmp-zcu111
           - const: xlnx,zynqmp
 
index 4db3b8a..9cf6137 100644 (file)
@@ -82,8 +82,7 @@ properties:
   '#gpio-cells':
     const: 2
 
-  gpio-ranges:
-    maxItems: 1
+  gpio-ranges: true
 
   interrupts: true
 
index 5ccbb1f..e759a5d 100644 (file)
@@ -46,10 +46,14 @@ description: |
 
 properties:
   compatible:
-    enum:
-      - x-powers,axp209-adc
-      - x-powers,axp221-adc
-      - x-powers,axp813-adc
+    oneOf:
+      - const: x-powers,axp209-adc
+      - const: x-powers,axp221-adc
+      - const: x-powers,axp813-adc
+
+      - items:
+          - const: x-powers,axp803-adc
+          - const: x-powers,axp813-adc
 
   "#io-channel-cells":
     const: 1
index 8acca0a..4fd1e27 100644 (file)
@@ -29,6 +29,9 @@ properties:
       - items:
           - const: allwinner,sun8i-a83t-r-intc
           - const: allwinner,sun6i-a31-r-intc
+      - items:
+          - const: allwinner,sun8i-v3s-nmi
+          - const: allwinner,sun9i-a80-nmi
       - const: allwinner,sun9i-a80-nmi
       - items:
           - const: allwinner,sun50i-a64-r-intc
index 6a56214..b80980b 100644 (file)
@@ -20,6 +20,9 @@ properties:
     oneOf:
       - const: allwinner,sun8i-h3-deinterlace
       - items:
+          - const: allwinner,sun8i-r40-deinterlace
+          - const: allwinner,sun8i-h3-deinterlace
+      - items:
           - const: allwinner,sun50i-a64-deinterlace
           - const: allwinner,sun8i-h3-deinterlace
 
index 49bff73..52eab68 100644 (file)
@@ -23,6 +23,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  power-domains:
+    maxItems: 1
+
   port:
     type: object
     additionalProperties: false
@@ -75,6 +78,7 @@ additionalProperties: false
 examples:
   - |
     #include <dt-bindings/clock/marvell,mmp2.h>
+    #include <dt-bindings/power/marvell,mmp2.h>
 
     camera@d420a000 {
       compatible = "marvell,mmp2-ccic";
@@ -84,6 +88,7 @@ examples:
       clock-names = "axi";
       #clock-cells = <0>;
       clock-output-names = "mclk";
+      power-domains = <&soc_clocks MMP3_POWER_DOMAIN_CAMERA>;
 
       port {
         camera0_0: endpoint {
index 37c2a60..b1b0ee7 100644 (file)
@@ -128,7 +128,6 @@ required:
   - compatible
   - reg
   - interrupts
-  - clocks
   - clock-output-names
 
 additionalProperties: false
index 19d116f..6d65771 100644 (file)
@@ -72,6 +72,8 @@ patternProperties:
             - allwinner,sun4i-a10-sram-d
             - allwinner,sun9i-a80-smp-sram
             - allwinner,sun50i-a64-sram-c
+            - amlogic,meson8-ao-arc-sram
+            - amlogic,meson8b-ao-arc-sram
             - amlogic,meson8-smp-sram
             - amlogic,meson8b-smp-sram
             - amlogic,meson-gxbb-scp-shmem
index 08150a1..2f993f0 100644 (file)
@@ -469,10 +469,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 546aa66..4dd5cc0 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 3d328b7..8b2c3f8 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 81f4ede..3c1afa5 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 3d1ea0b..fef3d5f 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 \
@@ -1224,6 +1225,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \
        sun8i-s3-lichee-zero-plus.dtb \
        sun8i-s3-pinecube.dtb \
        sun8i-t3-cqa3t-bv3.dtb \
+       sun8i-v3-sl631-imx179.dtb \
        sun8i-v3s-licheepi-zero.dtb \
        sun8i-v3s-licheepi-zero-dock.dtb \
        sun8i-v40-bananapi-m2-berry.dtb
@@ -1278,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 7c6f2c1..902e295 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 b43b941..d5f8d5e 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 b958ab5..e923d06 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 7808850..1fb2208 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 3775876..1b8f3a2 100644 (file)
@@ -39,3 +39,7 @@
 &m_can0 {
        status = "disabled";
 };
+
+&emif1 {
+       status = "okay";
+};
index 827e82b..fb9c8a0 100644 (file)
                reg = <0>;
                label = "pxa3xx_nand-0";
                nand-rb = <0>;
+               nand-ecc-strength = <4>;
+               nand-ecc-step-size = <512>;
                marvell,nand-keep-config;
                nand-on-flash-bbt;
        };
index b3728de..ec134e2 100644 (file)
@@ -70,6 +70,9 @@
 
        system-leds {
                compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&helios_system_led_pins>;
+
                status-led {
                        label = "helios4:green:status";
                        gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
@@ -86,6 +89,9 @@
 
        io-leds {
                compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&helios_io_led_pins>;
+
                sata1-led {
                        label = "helios4:green:ata1";
                        gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
        fan1: j10-pwm {
                compatible = "pwm-fan";
                pwms = <&gpio1 9 40000>;        /* Target freq:25 kHz */
+               pinctrl-names = "default";
+               pinctrl-0 = <&helios_fan1_pins>;
        };
 
        fan2: j17-pwm {
                compatible = "pwm-fan";
                pwms = <&gpio1 23 40000>;       /* Target freq:25 kHz */
+               pinctrl-names = "default";
+               pinctrl-0 = <&helios_fan2_pins>;
        };
 
        usb2_phy: usb2-phy {
                                                       "mpp39", "mpp40";
                                        marvell,function = "sd0";
                                };
-                               helios_led_pins: helios-led-pins {
-                                       marvell,pins = "mpp24", "mpp25",
-                                                      "mpp49", "mpp50",
+                               helios_system_led_pins: helios-system-led-pins {
+                                       marvell,pins = "mpp24", "mpp25";
+                                       marvell,function = "gpio";
+                               };
+                               helios_io_led_pins: helios-io-led-pins {
+                                       marvell,pins = "mpp49", "mpp50",
                                                       "mpp52", "mpp53",
                                                       "mpp54";
                                        marvell,function = "gpio";
                                };
-                               helios_fan_pins: helios-fan-pins {
-                                       marvell,pins = "mpp41", "mpp43",
-                                                      "mpp48", "mpp55";
+                               helios_fan1_pins: helios_fan1_pins {
+                                       marvell,pins = "mpp41", "mpp43";
+                                       marvell,function = "gpio";
+                               };
+                               helios_fan2_pins: helios_fan2_pins {
+                                       marvell,pins = "mpp48", "mpp55";
                                        marvell,function = "gpio";
                                };
                                microsom_spi1_cs_pins: spi1-cs-pins {
index 9ce513d..c4b3750 100644 (file)
 
        input@0 {
                reg = <0>;
-               atmel,wakeup-type = "low";
        };
 };
 
index 0e159f8..84e1180 100644 (file)
 
                                input@0 {
                                        reg = <0>;
-                                       atmel,wakeup-type = "low";
                                };
                        };
 
index a06700e..025a783 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 6b38fa3..180a087 100644 (file)
 
        input@0 {
                reg = <0>;
-               atmel,wakeup-type = "low";
        };
 };
 
index 6783cf1..46722a1 100644 (file)
 
        input@0 {
                reg = <0>;
-               atmel,wakeup-type = "low";
        };
 };
 
index c894c7c..8de57d1 100644 (file)
 
                                input@0 {
                                        reg = <0>;
-                                       atmel,wakeup-type = "low";
                                };
                        };
 
index 058fae1..4e7cf21 100644 (file)
 
                                input@0 {
                                        reg = <0>;
-                                       atmel,wakeup-type = "low";
                                };
                        };
 
index 58ec1b2..cc58f2b 100644 (file)
@@ -27,7 +27,7 @@
                bootargs = "console=ttyS0,115200n8";
        };
 
-       cpus {
+       cpus {
                #address-cells = <1>;
                #size-cells = <0>;
 
index 403bacf..3b4ab94 100644 (file)
@@ -25,6 +25,7 @@
                emmc2bus = &emmc2bus;
                ethernet0 = &genet;
                pcie0 = &pcie0;
+               blconfig = &blconfig;
        };
 
        leds {
        status = "okay";
 };
 
+&rmem {
+       /*
+        * RPi4's co-processor will copy the board's bootloader configuration
+        * into memory for the OS to consume. It'll also update this node with
+        * its placement information.
+        */
+       blconfig: nvram@0 {
+               compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0 0x0 0x0>;
+               no-map;
+               status = "disabled";
+       };
+};
+
 /* SDHCI is used to control the SDIO for wireless */
 &sdhci {
        #address-cells = <1>;
index 4847dd3..462b1df 100644 (file)
                        #reset-cells = <1>;
                };
 
+               bsc_intr: interrupt-controller@7ef00040 {
+                       compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
+                       reg = <0x7ef00040 0x30>;
+                       interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               aon_intr: interrupt-controller@7ef00100 {
+                       compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
+                       reg = <0x7ef00100 0x30>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
                hdmi0: hdmi@7ef00700 {
                        compatible = "brcm,bcm2711-hdmi0";
                        reg = <0x7ef00700 0x300>,
                                    "hd";
                        clock-names = "hdmi", "bvb", "audio", "cec";
                        resets = <&dvp 0>;
+                       interrupt-parent = <&aon_intr>;
+                       interrupts = <0>, <1>, <2>,
+                                    <3>, <4>, <5>;
+                       interrupt-names = "cec-tx", "cec-rx", "cec-low",
+                                         "wakeup", "hpd-connected", "hpd-removed";
                        ddc = <&ddc0>;
                        dmas = <&dma 10>;
                        dma-names = "audio-rx";
                        reg = <0x7ef04500 0x100>, <0x7ef00b00 0x300>;
                        reg-names = "bsc", "auto-i2c";
                        clock-frequency = <97500>;
+                       interrupt-parent = <&bsc_intr>;
+                       interrupts = <0>;
                        status = "disabled";
                };
 
                        ddc = <&ddc1>;
                        clock-names = "hdmi", "bvb", "audio", "cec";
                        resets = <&dvp 1>;
+                       interrupt-parent = <&aon_intr>;
+                       interrupts = <8>, <7>, <6>,
+                                    <9>, <10>, <11>;
+                       interrupt-names = "cec-tx", "cec-rx", "cec-low",
+                                         "wakeup", "hpd-connected", "hpd-removed";
                        dmas = <&dma 17>;
                        dma-names = "audio-rx";
                        status = "disabled";
                        reg = <0x7ef09500 0x100>, <0x7ef05b00 0x300>;
                        reg-names = "bsc", "auto-i2c";
                        clock-frequency = <97500>;
+                       interrupt-parent = <&bsc_intr>;
+                       interrupts = <1>;
                        status = "disabled";
                };
        };
 
 &dsi1 {
        interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+       compatible = "brcm,bcm2711-dsi1";
 };
 
 &gpio {
index 6194857..1114c59 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 56fa951..c1d9142 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 6f30d7e..b2768f7 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 b6a0aca..598a46f 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 cad58f7..6d2cca6 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 2f32615..a09e7bd 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 04290ec..829c05b 100644 (file)
@@ -79,7 +79,7 @@
        pmic@66 {
                compatible = "samsung,s2mps14-pmic";
                interrupt-parent = <&gpx3>;
-               interrupts = <5 IRQ_TYPE_NONE>;
+               interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&s2mps14_irq>;
                reg = <0x66>;
index 6945156..fae046e 100644 (file)
        pmic@66 {
                compatible = "samsung,s2mps14-pmic";
                interrupt-parent = <&gpx0>;
-               interrupts = <7 IRQ_TYPE_NONE>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x66>;
                wakeup-source;
 
index a26e3e5..d64ccf4 100644 (file)
        pmic@66 {
                compatible = "samsung,s2mps14-pmic";
                interrupt-parent = <&gpx0>;
-               interrupts = <7 IRQ_TYPE_NONE>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x66>;
                wakeup-source;
 
index a0c3bab..304a8ee 100644 (file)
                                regulator-boot-on;
                        };
 
-                       charger_reg: CHARGER {
-                               regulator-name = "CHARGER";
-                               regulator-min-microamp = <60000>;
-                               regulator-max-microamp = <2580000>;
+                       EN32KHZ_AP {
+                               regulator-name = "EN32KHZ_AP";
                                regulator-always-on;
                        };
 
-                       chargercv_reg: CHARGER_CV {
-                               regulator-name = "CHARGER_CV";
-                               regulator-min-microvolt = <3800000>;
-                               regulator-max-microvolt = <4100000>;
+                       EN32KHZ_CP {
+                               regulator-name = "EN32KHZ_CP";
                                regulator-always-on;
                        };
 
-                       EN32KHZ_AP {
-                               regulator-name = "EN32KHZ_AP";
+                       charger_reg: CHARGER {
+                               regulator-name = "CHARGER";
+                               regulator-min-microamp = <200000>;
+                               regulator-max-microamp = <950000>;
+                       };
+
+                       chargercv_reg: CHARGER_CV {
+                               regulator-name = "CHARGER_CV";
+                               regulator-min-microvolt = <4200000>;
+                               regulator-max-microvolt = <4200000>;
                                regulator-always-on;
                        };
 
-                       EN32KHZ_CP {
-                               regulator-name = "EN32KHZ_CP";
+                       CHARGER_TOPOFF {
+                               regulator-name = "CHARGER_TOPOFF";
+                               regulator-min-microamp = <200000>;
+                               regulator-max-microamp = <200000>;
                                regulator-always-on;
                        };
                };
index 9d2baea..fba1462 100644 (file)
                compatible = "samsung,s5m8767-pmic";
                reg = <0x66>;
                interrupt-parent = <&gpx3>;
-               interrupts = <2 IRQ_TYPE_NONE>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
                wakeup-source;
index bf457d0..1aad485 100644 (file)
                reg = <0x66>;
 
                interrupt-parent = <&gpx3>;
-               interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&s2mps11_irq>;
 
index d0df560..6d690b1 100644 (file)
                samsung,s2mps11-acokb-ground;
 
                interrupt-parent = <&gpx0>;
-               interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
+               interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&s2mps11_irq>;
 
index fe9d34c..2ddb7a5 100644 (file)
                        compatible = "samsung,exynos4210-ehci";
                        reg = <0x12110000 0x100>;
                        interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
-                       phys = <&usb2_phy 1>;
+                       phys = <&usb2_phy 0>;
                        phy-names = "host";
                };
 
                        compatible = "samsung,exynos4210-ohci";
                        reg = <0x12120000 0x100>;
                        interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
-                       phys = <&usb2_phy 1>;
+                       phys = <&usb2_phy 0>;
                        phy-names = "host";
                };
 
                usb2_phy: phy@12130000 {
-                       compatible = "samsung,exynos5250-usb2-phy";
+                       compatible = "samsung,exynos5420-usb2-phy";
                        reg = <0x12130000 0x100>;
                        #phy-cells = <1>;
                };
index 2d94faf..b8f152e 100644 (file)
@@ -52,7 +52,7 @@
 
                usb: usb@2680000 {
                        interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
-                       dwc3@2690000 {
+                       usb@2690000 {
                                interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
                        };
                };
@@ -78,8 +78,8 @@
                        dma-ranges;
                        status = "disabled";
 
-                       usb1: dwc3@25010000 {
-                               compatible = "synopsys,dwc3";
+                       usb1: usb@25010000 {
+                               compatible = "snps,dwc3";
                                reg = <0x25010000 0x70000>;
                                interrupts = <GIC_SPI 414 IRQ_TYPE_EDGE_RISING>;
                                usb-phy = <&usb1_phy>, <&usb1_phy>;
index c298675..fc9fdc8 100644 (file)
                        dma-ranges;
                        status = "disabled";
 
-                       usb0: dwc3@2690000 {
-                               compatible = "synopsys,dwc3";
+                       usb0: usb@2690000 {
+                               compatible = "snps,dwc3";
                                reg = <0x2690000 0x70000>;
                                interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>;
                                usb-phy = <&usb_phy>, <&usb_phy>;
index 7649dd1..8bae6ed 100644 (file)
        #size-cells = <1>;
        interrupt-parent = <&gic>;
 
+       iio-hwmon {
+               compatible = "iio-hwmon";
+               io-channels = <&saradc 8>;
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <0x0 0xc8100000 0x100000>;
 
+                       ao_arc_rproc: remoteproc@1c {
+                               compatible= "amlogic,meson-mx-ao-arc";
+                               reg = <0x1c 0x8>, <0x38 0x8>;
+                               reg-names = "remap", "cpu";
+                               status = "disabled";
+                       };
+
                        ir_receiver: ir-receiver@480 {
                                compatible= "amlogic,meson6-ir";
                                reg = <0x480 0x20>;
                };
        };
 
+       thermal_sensor: thermal-sensor {
+               compatible = "generic-adc-thermal";
+               #thermal-sensor-cells = <0>;
+               io-channels = <&saradc 8>;
+               io-channel-names = "sensor-channel";
+       };
+
        xtal: xtal-clk {
                compatible = "fixed-clock";
                clock-frequency = <24000000>;
index 04688e8..157a950 100644 (file)
@@ -9,6 +9,7 @@
 #include <dt-bindings/power/meson8-power.h>
 #include <dt-bindings/reset/amlogic,meson8b-clkc-reset.h>
 #include <dt-bindings/reset/amlogic,meson8b-reset.h>
+#include <dt-bindings/thermal/thermal.h>
 #include "meson.dtsi"
 
 / {
@@ -28,6 +29,7 @@
                        resets = <&clkc CLKC_RESET_CPU0_SOFT_RESET>;
                        operating-points-v2 = <&cpu_opp_table>;
                        clocks = <&clkc CLKID_CPUCLK>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
 
                cpu1: cpu@201 {
@@ -39,6 +41,7 @@
                        resets = <&clkc CLKC_RESET_CPU1_SOFT_RESET>;
                        operating-points-v2 = <&cpu_opp_table>;
                        clocks = <&clkc CLKID_CPUCLK>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
 
                cpu2: cpu@202 {
@@ -50,6 +53,7 @@
                        resets = <&clkc CLKC_RESET_CPU2_SOFT_RESET>;
                        operating-points-v2 = <&cpu_opp_table>;
                        clocks = <&clkc CLKID_CPUCLK>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
 
                cpu3: cpu@203 {
@@ -61,6 +65,7 @@
                        resets = <&clkc CLKC_RESET_CPU3_SOFT_RESET>;
                        operating-points-v2 = <&cpu_opp_table>;
                        clocks = <&clkc CLKID_CPUCLK>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
        };
 
                };
        };
 
+       thermal-zones {
+               soc {
+                       polling-delay-passive = <250>; /* milliseconds */
+                       polling-delay = <1000>; /* milliseconds */
+                       thermal-sensors = <&thermal_sensor>;
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&soc_passive>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+
+                               map1 {
+                                       trip = <&soc_hot>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+
+                       trips {
+                               soc_passive: soc-passive {
+                                       temperature = <80000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "passive";
+                               };
+
+                               soc_hot: soc-hot {
+                                       temperature = <90000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "hot";
+                               };
+
+                               soc_critical: soc-critical {
+                                       temperature = <110000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+
        mmcbus: bus@c8000000 {
                compatible = "simple-bus";
                reg = <0xc8000000 0x8000>;
                        clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
                        clock-names = "bus", "core";
                        operating-points-v2 = <&gpu_opp_table>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
        };
 }; /* end of / */
        };
 };
 
+&ao_arc_rproc {
+       compatible= "amlogic,meson8-ao-arc", "amlogic,meson-mx-ao-arc";
+       amlogic,secbus2 = <&secbus2>;
+       sram = <&ao_arc_sram>;
+       resets = <&reset RESET_MEDIA_CPU>;
+       clocks = <&clkc CLKID_AO_MEDIA_CPU>;
+};
+
 &cbus {
        reset: reset-controller@4404 {
                compatible = "amlogic,meson8b-reset";
 };
 
 &ahb_sram {
+       ao_arc_sram: ao-arc-sram@0 {
+               compatible = "amlogic,meson8-ao-arc-sram";
+               reg = <0x0 0x8000>;
+               pool;
+       };
+
        smp-sram@1ff80 {
                compatible = "amlogic,meson8-smp-sram";
                reg = <0x1ff80 0x8>;
        clock-names = "clkin0", "clkin1", "clkin2", "clkin3", "pclk";
 };
 
+&secbus {
+       secbus2: system-controller@4000 {
+               compatible = "amlogic,meson8-secbus2", "syscon";
+               reg = <0x4000 0x2000>;
+       };
+};
+
 &sdio {
        compatible = "amlogic,meson8-sdio", "amlogic,meson-mx-sdio";
        clocks = <&clkc CLKID_SDIO>, <&clkc CLKID_CLK81>;
index ed06102..8e48ccc 100644 (file)
                timeout-ms = <20000>;
        };
 
-       iio-hwmon {
-               compatible = "iio-hwmon";
-               io-channels = <&saradc 8>;
-       };
-
        leds {
                compatible = "gpio-leds";
 
index 33037ef..f3937d5 100644 (file)
                reg = <0x40000000 0x40000000>;
        };
 
-       iio-hwmon {
-               compatible = "iio-hwmon";
-               io-channels = <&saradc 8>;
-       };
-
        vcck: regulator-vcck {
                compatible = "pwm-regulator";
 
index 5963566..c440ef9 100644 (file)
                          1800000 1>;
        };
 
-       iio-hwmon {
-               compatible = "iio-hwmon";
-               io-channels = <&saradc 8>;
-       };
-
        rtc32k_xtal: rtc32k-xtal-clk {
                /* X3 in the schematics */
                compatible = "fixed-clock";
index 2401cdf..c02b03c 100644 (file)
@@ -10,6 +10,7 @@
 #include <dt-bindings/power/meson8-power.h>
 #include <dt-bindings/reset/amlogic,meson8b-reset.h>
 #include <dt-bindings/reset/amlogic,meson8b-clkc-reset.h>
+#include <dt-bindings/thermal/thermal.h>
 #include "meson.dtsi"
 
 / {
@@ -26,6 +27,7 @@
                        resets = <&clkc CLKC_RESET_CPU0_SOFT_RESET>;
                        operating-points-v2 = <&cpu_opp_table>;
                        clocks = <&clkc CLKID_CPUCLK>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
 
                cpu1: cpu@201 {
@@ -37,6 +39,7 @@
                        resets = <&clkc CLKC_RESET_CPU1_SOFT_RESET>;
                        operating-points-v2 = <&cpu_opp_table>;
                        clocks = <&clkc CLKID_CPUCLK>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
 
                cpu2: cpu@202 {
@@ -48,6 +51,7 @@
                        resets = <&clkc CLKC_RESET_CPU2_SOFT_RESET>;
                        operating-points-v2 = <&cpu_opp_table>;
                        clocks = <&clkc CLKID_CPUCLK>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
 
                cpu3: cpu@203 {
@@ -59,6 +63,7 @@
                        resets = <&clkc CLKC_RESET_CPU3_SOFT_RESET>;
                        operating-points-v2 = <&cpu_opp_table>;
                        clocks = <&clkc CLKID_CPUCLK>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
        };
 
                };
        };
 
+       thermal-zones {
+               soc {
+                       polling-delay-passive = <250>; /* milliseconds */
+                       polling-delay = <1000>; /* milliseconds */
+                       thermal-sensors = <&thermal_sensor>;
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&soc_passive>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+
+                               map1 {
+                                       trip = <&soc_hot>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+
+                       trips {
+                               soc_passive: soc-passive {
+                                       temperature = <80000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "passive";
+                               };
+
+                               soc_hot: soc-hot {
+                                       temperature = <90000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "hot";
+                               };
+
+                               soc_critical: soc-critical {
+                                       temperature = <110000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+
        mmcbus: bus@c8000000 {
                compatible = "simple-bus";
                reg = <0xc8000000 0x8000>;
                        clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
                        clock-names = "bus", "core";
                        operating-points-v2 = <&gpu_opp_table>;
+                       #cooling-cells = <2>; /* min followed by max */
                };
        };
 }; /* end of / */
        };
 };
 
+&ao_arc_rproc {
+       compatible= "amlogic,meson8b-ao-arc", "amlogic,meson-mx-ao-arc";
+       amlogic,secbus2 = <&secbus2>;
+       sram = <&ao_arc_sram>;
+       resets = <&reset RESET_MEDIA_CPU>;
+       clocks = <&clkc CLKID_AO_MEDIA_CPU>;
+};
+
 &cbus {
        reset: reset-controller@4404 {
                compatible = "amlogic,meson8b-reset";
 };
 
 &ahb_sram {
+       ao_arc_sram: ao-arc-sram@0 {
+               compatible = "amlogic,meson8b-ao-arc-sram";
+               reg = <0x0 0x8000>;
+               pool;
+       };
+
        smp-sram@1ff80 {
                compatible = "amlogic,meson8b-smp-sram";
                reg = <0x1ff80 0x8>;
        clock-names = "clkin0", "clkin1", "clkin2", "clkin3", "pclk";
 };
 
+&secbus {
+       secbus2: system-controller@4000 {
+               compatible = "amlogic,meson8b-secbus2", "syscon";
+               reg = <0x4000 0x2000>;
+       };
+};
+
 &sdio {
        compatible = "amlogic,meson8b-sdio", "amlogic,meson-mx-sdio";
        clocks = <&clkc CLKID_SDIO>, <&clkc CLKID_CLK81>;
index 8f4eb1e..fa6d55f 100644 (file)
                };
        };
 
-       iio-hwmon {
-               compatible = "iio-hwmon";
-               io-channels = <&saradc 8>;
-       };
-
        vcc_3v3: regulator-vcc3v3 {
                compatible = "regulator-fixed";
                regulator-name = "VCC3V3";
index 342304f..55ea878 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * OLPC XO 1.75 Laptop.
  *
- * Copyright (C) 2018,2019 Lubomir Rintel <lkundrak@v3.sk>
+ * Copyright (C) 2018,2019,2020 Lubomir Rintel <lkundrak@v3.sk>
  */
 
 /dts-v1/;
@@ -10,6 +10,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/linux-event-codes.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/clock/marvell,mmp2-audio.h>
 
 / {
        model = "OLPC XO-1.75";
@@ -32,8 +33,7 @@
                };
        };
 
-       memory {
-               linux,usable-memory = <0x0 0x1f800000>;
+       memory@0 {
                available = <0xcf000 0x1ef31000 0x1000 0xbf000>;
                reg = <0x0 0x20000000>;
                device_type = "memory";
                port {
                        rt5631_0: endpoint {
                                mclk-fs = <256>;
-                               clocks = <&audio_clk 0>;
+                               clocks = <&audio_clk MMP2_CLK_AUDIO_SYSCLK>;
                                remote-endpoint = <&sspa0_0>;
                        };
                };
index 445bdcd..46984d4 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <dt-bindings/clock/marvell,mmp2.h>
 #include <dt-bindings/power/marvell,mmp2.h>
+#include <dt-bindings/clock/marvell,mmp2-audio.h>
 
 / {
        #address-cells = <1>;
                                interrupts = <2>;
                                clock-names = "audio", "bitclk";
                                clocks = <&soc_clocks MMP2_CLK_AUDIO>,
-                                        <&audio_clk 1>;
+                                        <&audio_clk MMP2_CLK_AUDIO_SSPA0>;
                                power-domains = <&soc_clocks MMP2_POWER_DOMAIN_AUDIO>;
                                #sound-dai-cells = <0>;
                                status = "disabled";
                                interrupts = <3>;
                                clock-names = "audio", "bitclk";
                                clocks = <&soc_clocks MMP2_CLK_AUDIO>,
-                                        <&audio_clk 2>;
+                                        <&audio_clk MMP2_CLK_AUDIO_SSPA1>;
                                power-domains = <&soc_clocks MMP2_POWER_DOMAIN_AUDIO>;
                                #sound-dai-cells = <0>;
                                status = "disabled";
index fe3b1cd..fe6df36 100644 (file)
        };
 
        memory@0 {
-               linux,usable-memory = <0x0 0x7f600000>;
                available = <0x7f700000 0x7ff00000 0x00000000 0x7f600000>;
                reg = <0x0 0x80000000>;
                device_type = "memory";
        };
+
+       ec_input_spi: spi {
+               compatible = "spi-gpio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               num-chipselects = <0>;
+               sck-gpios = <&gpio 55 GPIO_ACTIVE_HIGH>;
+               miso-gpios = <&gpio 57 GPIO_ACTIVE_HIGH>;
+               mosi-gpios = <&gpio 58 GPIO_ACTIVE_HIGH>;
+       };
 };
 
 &uart3 {
 
 &twsi4 {
        status = "okay";
+
+       embedded-controller@58 {
+               compatible = "dell,wyse-ariel-ec", "ene,kb3930";
+               reg = <0x58>;
+               system-power-controller;
+
+               off-gpios = <&gpio 126 GPIO_ACTIVE_HIGH>,
+                           <&gpio 127 GPIO_ACTIVE_HIGH>;
+       };
 };
 
 &ssp1 {
        };
 };
 
-&ssp2 {
-       cs-gpios = <&gpio 56 GPIO_ACTIVE_LOW>;
+&ec_input_spi {
        status = "okay";
+       cs-gpios = <&gpio 56 GPIO_ACTIVE_LOW>;
+
+       power-button@0 {
+               reg = <0>;
+               interrupt-parent = <&gpio>;
+               interrupts = <60 IRQ_TYPE_EDGE_RISING>;
+               compatible = "dell,wyse-ariel-ec-input", "ene,kb3930-input";
+               spi-max-frequency = <33000000>;
+       };
 };
 
 &gpu_2d {
index 4ae630d..a4fb920 100644 (file)
                        camera0: camera@d420a000 {
                                compatible = "marvell,mmp2-ccic";
                                reg = <0xd420a000 0x800>;
-                               interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <1>;
+                               interrupt-parent = <&ci_mux>;
                                clocks = <&soc_clocks MMP2_CLK_CCIC0>;
                                clock-names = "axi";
                                power-domains = <&soc_clocks MMP3_POWER_DOMAIN_CAMERA>;
                        camera1: camera@d420a800 {
                                compatible = "marvell,mmp2-ccic";
                                reg = <0xd420a800 0x800>;
-                               interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <2>;
+                               interrupt-parent = <&ci_mux>;
                                clocks = <&soc_clocks MMP2_CLK_CCIC1>;
                                clock-names = "axi";
                                power-domains = <&soc_clocks MMP3_POWER_DOMAIN_CAMERA>;
 
                soc_clocks: clocks@d4050000 {
                        compatible = "marvell,mmp3-clock";
-                       reg = <0xd4050000 0x1000>,
+                       reg = <0xd4050000 0x2000>,
                              <0xd4282800 0x400>,
                              <0xd4015000 0x1000>;
                        reg-names = "mpmu", "apmu", "apbc";
index f75806d..a4423ff 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 f9db2ff..db4910d 100644 (file)
@@ -6,6 +6,7 @@
 
 /dts-v1/;
 #include "mstar-infinity-msc313.dtsi"
+#include "mstar-infinity-breadbee-common.dtsi"
 
 / {
        model = "BreadBee Crust";
index f0eda80..e64ca4c 100644 (file)
@@ -6,6 +6,7 @@
 
 /dts-v1/;
 #include "mstar-infinity3-msc313e.dtsi"
+#include "mstar-infinity-breadbee-common.dtsi"
 
 / {
        model = "BreadBee";
index 93ffedd..b9fd113 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 c8745bc..cbe9ce7 100644 (file)
                };
 
                twl_power: power {
-                       compatible = "ti,twl4030-power";
-                       ti,use_poweroff;
+                       compatible = "ti,twl4030-power-idle";
+                       ti,system-power-controller;
                };
        };
 };
index 5de2be9..99f5585 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 af8aa5f..73d8f47 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 5672325..9dca5bf 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 e341535..c6f863b 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 71b0ae8..742e3e1 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 df6ba12..8e9c12c 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 32f3103..5188f96 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 05fe5ed..20844db 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 cb30974..8466161 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 0013ec3..a574ea9 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 4c16736..4fd0999 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 c72aa25..cc045b2 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 404b9c4..68607e4 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 ff47cbf..83b1796 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 f8c0c1e..a036a03 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 8ce6b72..dfc9332 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 142f547..4e6e443 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 115495d..29b67ab 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 1316886..52c56ed 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 5d4b824..9c2d2ee 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 05b4fbb..8f504ed 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 41ed21a..8142c01 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 4445446..f16314f 100644 (file)
                        status = "okay";
                };
                /* Configure card detect for the uSD slot */
-               mmcsd: sdi@101f6000 {
+               mmc@101f6000 {
                        cd-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
                };
        };
index 4f38aee..c9b9064 100644 (file)
                        interrupts = <10>;
                };
 
-               mmcsd: sdi@101f6000 {
+               mmcsd: mmc@101f6000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x101f6000 0x1000>;
                        clocks = <&sdiclk>, <&pclksdi>;
index be90e73..f32b07f 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 496f9d3..7010fdc 100644 (file)
@@ -5,6 +5,7 @@
 #include "ste-ab8505.dtsi"
 #include "ste-dbx5x0-pinctrl.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 
@@ -72,7 +73,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>;
                };
        };
 
+       /* Richtek RT8515GQW Flash LED Driver IC */
+       flash {
+               compatible = "richtek,rt8515";
+               /* GPIO 140 */
+               enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
+               /* GPIO 141 */
+               ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+               /*
+                * RFS is 16 kOhm and RTS is 100 kOhm giving
+                * the flash max current 343mA and torch max
+                * current 55 mA.
+                */
+               richtek,rfs-ohms = <16000>;
+               richtek,rts-ohms = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_flash_default_mode>;
+
+               led {
+                       function = LED_FUNCTION_FLASH;
+                       color = <LED_COLOR_ID_WHITE>;
+                       flash-max-timeout-us = <250000>;
+                       flash-max-microamp = <343750>;
+                       led-max-microamp = <55000>;
+               };
+       };
+
        vibrator {
                compatible = "gpio-vibrator";
                /* GPIO195 (MOT_EN) */
                };
        };
 
+       flash {
+               gpio_flash_default_mode: flash_default {
+                       golden_cfg1 {
+                               pins = "GPIO140_B11", "GPIO141_C12";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+
        i2c-gpio-1 {
                i2c_gpio_1_default: i2c_gpio_1 {
                        golden_cfg1 {
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..7411bfe
--- /dev/null
@@ -0,0 +1,930 @@
+// 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/leds/common.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>;
+               };
+       };
+
+       /* Richtek RT8515GQW Flash LED Driver IC */
+       flash {
+               compatible = "richtek,rt8515";
+               /* GPIO 140 */
+               enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
+               /* GPIO 141 */
+               ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+               /*
+                * RFS is 16 kOhm and RTS is 100 kOhm giving
+                * the flash max current 343mA and torch max
+                * current 55 mA.
+                */
+               richtek,rfs-ohms = <16000>;
+               richtek,rts-ohms = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_flash_default_mode>;
+
+               led {
+                       function = LED_FUNCTION_FLASH;
+                       color = <LED_COLOR_ID_WHITE>;
+                       flash-max-timeout-us = <250000>;
+                       flash-max-microamp = <343750>;
+                       led-max-microamp = <55000>;
+               };
+       };
+
+       /* 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>;
+                       };
+               };
+       };
+       /* Flash and torch */
+       flash {
+               gpio_flash_default_mode: flash_default {
+                       janice_cfg1 {
+                               pins = "GPIO140_B11", "GPIO141_C12";
+                               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 b50634c..d28a007 100644 (file)
@@ -8,6 +8,7 @@
 #include "ste-ab8505.dtsi"
 #include "ste-dbx5x0-pinctrl.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 
                pinctrl-0 = <&gpio_backlight_default_mode>;
        };
 
+       /* Richtek RT8515GQW Flash LED Driver IC */
+       flash {
+               compatible = "richtek,rt8515";
+               /* GPIO 140 */
+               enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
+               /* GPIO 141 */
+               ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+               /*
+                * RFS is 16 kOhm and RTS is 100 kOhm giving
+                * the flash max current 343mA and torch max
+                * current 55 mA.
+                */
+               richtek,rfs-ohms = <16000>;
+               richtek,rts-ohms = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_flash_default_mode>;
+
+               led {
+                       function = LED_FUNCTION_FLASH;
+                       color = <LED_COLOR_ID_WHITE>;
+                       flash-max-timeout-us = <250000>;
+                       flash-max-microamp = <343750>;
+                       led-max-microamp = <55000>;
+               };
+       };
+
        i2c-gpio-0 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
 
        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>;
                        };
                };
        };
+       flash {
+               gpio_flash_default_mode: flash_default {
+                       skomer_cfg1 {
+                               pins = "GPIO140_B11", "GPIO141_C12";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
        /* GPIO that enables the 2.9V SD card level translator */
        sd-level-translator {
                sd_level_translator_default: sd_level_translator_default {
index ad715a0..f6530d7 100644 (file)
                        };
                };
 
-               sdio: sdio@40012c00 {
+               sdio: mmc@40012c00 {
                        compatible = "arm,pl180", "arm,primecell";
                        arm,primecell-periphid = <0x00880180>;
                        reg = <0x40012c00 0x400>;
index 640ff54..e1df603 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 b083afd..4ebffb0 100644 (file)
                        dma-requests = <32>;
                };
 
-               sdmmc1: sdmmc@52007000 {
+               sdmmc1: mmc@52007000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        arm,primecell-periphid = <0x10153180>;
                        reg = <0x52007000 0x1000>;
index 20a59e8..7b4249e 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 3c75aba..4b80317 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 58275bc..113c48b 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 81a7d58..95b0887 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 cda8e87..1e9bf7e 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 62ab238..fad23d6 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 8456f17..5523f41 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 356150d..cd3a179 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 ac46ab3..2617815 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 ec02cee..b09e87f 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 89c0e1d..59f1884 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 af8ab73..20f9ed2 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               red {
+               led-0 {
                        label = "a1000:red:usr";
                        gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>;
                };
 
-               blue {
+               led-1 {
                        label = "a1000:blue:pwr";
                        gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 6ca02e8..0645d60 100644 (file)
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_cubieboard>;
 
-               blue {
+               led-0 {
                        label = "cubieboard:blue:usr";
                        gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>; /* LED1 */
                };
 
-               green {
+               led-1 {
                        label = "cubieboard:green:usr";
                        gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>; /* LED2 */
                        linux,default-trigger = "heartbeat";
index 8ee3ff4..63e77c0 100644 (file)
@@ -62,6 +62,7 @@
                brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
                default-brightness-level = <8>;
                enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
+               power-supply = <&reg_vcc3v3>;
        };
 
        chosen {
index ca87838..60e432a 100644 (file)
@@ -62,6 +62,7 @@
                brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
                default-brightness-level = <8>;
                enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
+               power-supply = <&reg_vcc3v3>;
        };
 
        chosen {
index 8a7b4c5..1aeb0bd 100644 (file)
@@ -63,7 +63,7 @@
        leds {
                compatible = "gpio-leds";
 
-               green {
+               led {
                        label = "q5:green:usr";
                        gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;  /* PH20 */
                };
index a843e57..81fdb21 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               red1 {
+               led-0 {
                        label = "marsboard:red1:usr";
                        gpios = <&pio 1 5 GPIO_ACTIVE_HIGH>;
                };
 
-               red2 {
+               led-1 {
                        label = "marsboard:red2:usr";
                        gpios = <&pio 1 6 GPIO_ACTIVE_HIGH>;
                };
 
-               red3 {
+               led-2 {
                        label = "marsboard:red3:usr";
                        gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>;
                };
 
-               red4 {
+               led-3 {
                        label = "marsboard:red4:usr";
                        gpios = <&pio 1 8 GPIO_ACTIVE_HIGH>;
                };
index 845f768..ad0e25a 100644 (file)
@@ -74,7 +74,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_olinuxinolime>;
 
-               green {
+               led {
                        label = "a10-olinuxino-lime:green:usr";
                        gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 83287b6..1ac8237 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               tx {
+               led-0 {
                        label = "pcduino:green:tx";
                        gpios = <&pio 7 15 GPIO_ACTIVE_LOW>;
                };
 
-               rx {
+               led-1 {
                        label = "pcduino:green:rx";
                        gpios = <&pio 7 16 GPIO_ACTIVE_LOW>;
                };
index 24a3d23..c325969 100644 (file)
@@ -62,6 +62,7 @@
                brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
                default-brightness-level = <8>;
                enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
+               power-supply = <&reg_vcc3v3>;
        };
 
        chosen {
index 64d50fc..04b0e6d 100644 (file)
@@ -62,7 +62,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_t003>;
 
-               red {
+               led {
                        label = "t003-tv-dongle:red:usr";
                        gpios = <&pio 1 2 GPIO_ACTIVE_HIGH>; /* PB2 */
                        default-state = "on";
index 8af0eae..667bc2d 100644 (file)
@@ -62,7 +62,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_t004>;
 
-               red {
+               led {
                        label = "t004-tv-dongle:red:usr";
                        gpios = <&pio 1 2 GPIO_ACTIVE_HIGH>; /* PB2 */
                        default-state = "on";
index 6e90ccb..d021940 100644 (file)
@@ -60,7 +60,7 @@
        leds {
                compatible = "gpio-leds";
 
-               red {
+               led {
                        label = "mk802:red:usr";
                        gpios = <&pio 1 2 GPIO_ACTIVE_HIGH>; /* PB2 */
                };
index d6bb82c..5832bb3 100644 (file)
@@ -79,7 +79,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_olinuxino>;
 
-               green {
+               led {
                        label = "a10s-olinuxino-micro:green:usr";
                        gpios = <&pio 4 3 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index b2a49a2..964360f 100644 (file)
@@ -63,7 +63,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_r7>;
 
-               green {
+               led {
                        label = "r7-tv-dongle:green:usr";
                        gpios = <&pio 1 2 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 1f74ba1..ef8baa9 100644 (file)
@@ -62,7 +62,7 @@
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led {
                        label = "a10s-wobo-i5:blue:usr";
                        gpios = <&pio 1 2 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index a23bf24..d059388 100644 (file)
@@ -61,6 +61,7 @@
                pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
                brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
                default-brightness-level = <8>;
+               power-supply = <&reg_vcc3v3>;
                /* TODO: backlight uses axp gpio1 as enable pin */
        };
 
index ba8d75b..2ce361f 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               red {
+               led-0 {
                        label ="licheepi:red:usr";
                        gpios = <&pio 2 5 GPIO_ACTIVE_LOW>;
                };
 
-               green {
+               led-1 {
                        label ="licheepi:green:usr";
                        gpios = <&pio 2 19 GPIO_ACTIVE_LOW>;
                        default-state = "on";
                };
 
-               blue {
+               led-2 {
                        label ="licheepi:blue:usr";
                        gpios = <&pio 2 4 GPIO_ACTIVE_LOW>;
                };
index 5df398d..bfe1075 100644 (file)
@@ -64,7 +64,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_olinuxinom>;
 
-               power {
+               led {
                        label = "a13-olinuxino-micro:green:power";
                        gpios = <&pio 6 9 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 3910122..fadeae3 100644 (file)
@@ -66,7 +66,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_olinuxino>;
 
-               power {
+               led {
                        gpios = <&pio 6 9 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
index e9ef97c..d604077 100644 (file)
@@ -28,6 +28,7 @@
                enable-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */
                brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
                default-brightness-level = <8>;
+               power-supply = <&reg_vcc3v3>;
        };
 
        chosen {
@@ -37,7 +38,7 @@
        leds {
                compatible = "gpio-leds";
 
-               power {
+               led {
                        gpios = <&pio 4 8 GPIO_ACTIVE_LOW>; /* PE8 */
                        default-state = "on";
                };
index ae04955..7075e10 100644 (file)
@@ -48,7 +48,7 @@
 
 / {
        thermal-zones {
-               cpu_thermal {
+               cpu-thermal {
                        /* milliseconds */
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
index 4c20d73..f4fe258 100644 (file)
@@ -71,7 +71,7 @@
                compatible = "pwm-backlight";
                pwms = <&pwm 0 10000 0>;
                enable-gpios = <&axp_gpio 1 GPIO_ACTIVE_HIGH>;
-
+               power-supply = <&reg_vcc3v3>;
                brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
                default-brightness-level = <8>;
        };
index 1a9926d..6847f66 100644 (file)
@@ -55,6 +55,7 @@
                brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
                default-brightness-level = <8>;
                enable-gpios = <&axp_gpio 1 GPIO_ACTIVE_HIGH>; /* AXP GPIO1 */
+               power-supply = <&reg_vcc3v0>;
        };
 
        chosen {
index c2b4fbf..250d6b8 100644 (file)
                        #size-cells = <0>;
                };
 
+               mali: gpu@1c40000 {
+                       compatible = "allwinner,sun4i-a10-mali", "arm,mali-400";
+                       reg = <0x01c40000 0x10000>;
+                       interrupts = <69>, <70>, <71>, <72>,  <73>;
+                       interrupt-names = "gp", "gpmmu", "pp0", "ppmmu0", "pmu";
+                       clocks = <&ccu CLK_AHB_GPU>, <&ccu CLK_GPU>;
+                       clock-names = "bus", "core";
+                       resets = <&ccu RST_GPU>;
+                       assigned-clocks = <&ccu CLK_GPU>;
+                       assigned-clock-rates = <320000000>;
+               };
+
                timer@1c60000 {
                        compatible = "allwinner,sun5i-a13-hstimer";
                        reg = <0x01c60000 0x1000>;
index 73de34a..486cec6 100644 (file)
        axp22x: pmic@68 {
                compatible = "x-powers,axp221";
                reg = <0x68>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                x-powers,drive-vbus-en;
        };
index 6cc8ccf..744723d 100644 (file)
@@ -72,7 +72,7 @@
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led {
                        label = "i7:blue:usr";
                        gpios = <&pio 7 13 GPIO_ACTIVE_HIGH>;
                };
index a645c8f..e4f3415 100644 (file)
@@ -61,7 +61,7 @@
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led {
                        label = "m9:blue:pwr";
                        gpios = <&pio 7 13 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
        axp22x: pmic@68 {
                compatible = "x-powers,axp221";
                reg = <0x68>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
        };
 };
index 648f247..7bd4bdd 100644 (file)
@@ -61,7 +61,7 @@
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led {
                        label = "a1000g:blue:pwr";
                        gpios = <&pio 7 13 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
        axp22x: pmic@68 {
                compatible = "x-powers,axp221";
                reg = <0x68>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
        };
 };
index f3425a6..a75033e 100644 (file)
        };
 
        thermal-zones {
-               cpu_thermal {
+               cpu-thermal {
                        /* milliseconds */
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
                        clock-output-names = "osc32k";
                };
 
-               nmi_intc: interrupt-controller@1f00c00 {
+               r_intc: interrupt-controller@1f00c00 {
                        compatible = "allwinner,sun6i-a31-r-intc";
                        interrupt-controller;
                        #interrupt-cells = <2>;
index bc3170a..66bc6ca 100644 (file)
                reg = <0x1c>;
                interrupt-parent = <&pio>;
                interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; /* PA9 */
-               #io-channel-cells = <1>;
        };
 };
 
        axp22x: pmic@68 {
                compatible = "x-powers,axp221";
                reg = <0x68>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                x-powers,drive-vbus-en;
        };
index 3099491..7455c0d 100644 (file)
@@ -78,7 +78,7 @@
        axp22x: pmic@68 {
                compatible = "x-powers,axp221";
                reg = <0x68>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
        };
 };
index 708caee..efb25b9 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led-0 {
                        label = "bpi-m2:blue:usr";
                        gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
                };
 
-               green {
+               led-1 {
                        label = "bpi-m2:green:usr";
                        gpios = <&pio 6 10 GPIO_ACTIVE_HIGH>; /* PG10 */
                };
 
-               red {
+               led-2 {
                        label = "bpi-m2:red:usr";
                        gpios = <&pio 6 5 GPIO_ACTIVE_HIGH>; /* PG5 */
                };
        axp22x: pmic@68 {
                compatible = "x-powers,axp221";
                reg = <0x68>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                eldoin-supply = <&reg_dcdc1>;
                x-powers,drive-vbus-en;
 &usbphy {
        status = "okay";
 };
+
+&pio {
+       gpio-line-names =
+               /* PA */
+               "ETXD0", "ETXD1", "ETXD2", "ETXD3", "SDC0-DET", "", "",
+               "", "ETXCLK", "ETXEN", "EGTXCLK", "ERXD0", "ERXD1",
+               "ERXD2", "ERXD3", "", "", "", "", "ERXDV", "ERXCK",
+               "ETXERR", "ERXERR", "ECOL", "ECRS", "ECLKIN", "EMDC",
+               "EMDIO", "", "", "", "",
+
+               /* PB */
+               "CN7-P29", "CN7-P31", "CN7-P33", "CN7-P35", "CN7-P37",
+               "CN7-P28", "CN7-P27", "CN7-P32", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+               "", "", "", "",
+
+               /* PC */
+               "", "", "", "", "", "", "WL-SDIO-CMD", "WL-SDIO-CLK",
+               "WL-SDIO-D0", "WL-SDIO-D2", "WL-SDIO-D2", "WL-SDIO-D3",
+               "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+               "", "USB-DRV", "", "", "", "",
+
+               /* PD */
+               "CN9-P09", "CN9-P11", "CN9-P13", "CN9-P15", "CN9-P17",
+               "CN9-P19", "CN9-P21", "CN9-P23", "CN9-P25", "CN9-P27",
+               "CN9-P29", "CN9-P31", "CN9-P33", "CN9-P35", "CN9-P37",
+               "CN9-P39", "CN9-P40", "CN9-P38", "CN9-P36", "CN9-P34",
+               "CN9-P32", "CN9-P30", "CN9-P28", "CN9-P26", "CN9-P22",
+               "CN9-P14", "CN9-P18", "CN9-P16", "", "", "", "",
+
+               /* PE */
+               "CN6-P20", "CN6-P24", "CN6-P30", "CN6-P28", "CN7-P08",
+               "CN7-P10", "CN7-P36", "CN7-P38", "CN6-P17", "CN6-P19",
+               "CN6-P21", "CN6-P23", "CN6-P25", "CN6-P27", "CN6-P29",
+               "CN6-P31", "", "", "", "", "", "", "", "", "", "", "",
+               "", "", "", "", "",
+
+               /* PF */
+               "SDC0-D1", "SDC0-D0", "SDC0-CLK", "SDC0-CMD", "SDC0-D3",
+               "SDC0-D2", "", "", "", "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+               "",
+
+               /* PG */
+               "CN9-P06", "CN9-P08", "CN9-P20", "CN9-P12", "CN9-P07",
+               "LED-PWR", "CN7-P13", "CN7-P11", "CN7-P22", "CN7-P15",
+               "LED-G", "LED-B", "CN7-P26", "CN7-P24", "CN7-P23",
+               "CN7-P19", "CN7-P21", "HCEC", "CN6-P22", "", "", "", "",
+               "", "", "", "", "", "", "", "", "",
+
+               /* PH */
+               "", "", "", "", "", "", "", "", "", "CN7-P07",
+               "CN7-P12", "CN7-P16", "CN7-P18", "CN9-P10", "CN6-P16",
+               "CN6-P14", "CN9-P04", "CN9-P02", "CN7-P05", "CN7-P03",
+               "CN8-P03", "CN8-P02", "", "", "CN6-P34", "CN6-P32",
+               "CN6-P26", "CN6-P18", "", "", "", "";
+};
+
+&r_pio {
+       gpio-line-names =
+               /* PL */
+               "PMU-SCK", "PMU-SDA", "VBAT-EN", "", "IR-RX",
+               "WL-WAKE-HOST", "BT-WAKE_HOST", "BT-ENABLE",
+               "WL-PMU-EN", "", "", "", "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "", "", "", "", "",
+
+               /* PM */
+               "CN6-P12", "CN6-P35", "CN7-P40", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "", "";
+};
index 2504e71..cadc452 100644 (file)
@@ -98,7 +98,7 @@
        axp22x: pmic@68 {
                compatible = "x-powers,axp221";
                reg = <0x68>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
        };
 };
index 7de2abd..6bf3fbd 100644 (file)
@@ -79,7 +79,7 @@
        axp22x: pmic@68 {
                compatible = "x-powers,axp221";
                reg = <0x68>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                drivevbus-supply = <&reg_vcc5v0>;
                x-powers,drive-vbus-en;
index 8945dbb..caa935c 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               green {
+               led-0 {
                        label = "bananapi-m1-plus:green:usr";
                        gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
                };
 
-               pwr {
+               led-1 {
                        label = "bananapi-m1-plus:pwr:usr";
                        gpios = <&pio 7 25 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 0b3d9ae..9d792d7 100644 (file)
@@ -77,7 +77,7 @@
        leds {
                compatible = "gpio-leds";
 
-               green {
+               led {
                        label = "bananapi:green:usr";
                        gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
                };
index 01ccff7..042badd 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led-0 {
                        label = "bananapro:blue:usr";
                        gpios = <&pio 6 2 GPIO_ACTIVE_HIGH>;
                };
 
-               green {
+               led-1 {
                        label = "bananapro:green:usr";
                        gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
                };
index b8203e4..e35e699 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led-0 {
                        label = "cubieboard2:blue:usr";
                        gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>;
                };
 
-               green {
+               led-1 {
                        label = "cubieboard2:green:usr";
                        gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
                };
index 9109ca0..52160e3 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led-0 {
                        label = "cubietruck:blue:usr";
                        gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>;
                };
 
-               orange {
+               led-1 {
                        label = "cubietruck:orange:usr";
                        gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
                };
 
-               white {
+               led-2 {
                        label = "cubietruck:white:usr";
                        gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>;
                };
 
-               green {
+               led-3 {
                        label = "cubietruck:green:usr";
                        gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>;
                };
index 358ed5f..b21ddd0 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               red {
+               led-0 {
                        label = "i12_tvbox:red:usr";
                        gpios = <&pio 7 9 GPIO_ACTIVE_LOW>;
                };
 
-               blue {
+               led-1 {
                        label = "i12_tvbox:blue:usr";
                        gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
                };
index 946c272..8ff8301 100644 (file)
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_itead_core>;
 
-               green {
+               led-0 {
                        label = "itead_core:green:usr";
                        gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
 
-               blue {
+               led-1 {
                        label = "itead_core:blue:usr";
                        gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 17fa890..97518af 100644 (file)
@@ -75,7 +75,7 @@
        leds {
                compatible = "gpio-leds";
 
-               green {
+               led {
                        label = "lamobo_r1:green:usr";
                        gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
                };
index 6bff9e7..f161d52 100644 (file)
@@ -64,7 +64,7 @@
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led {
                        label = "m3:blue:usr";
                        gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
                };
index 6f9c54b..f05ee32 100644 (file)
@@ -75,7 +75,7 @@
        leds {
                compatible = "gpio-leds";
 
-               green {
+               led {
                        label = "a20-olimex-som-evb:green:usr";
                        gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 230d62a..54af6c1 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               stat {
+               led-0 {
                        label = "a20-som204-evb:green:stat";
                        gpios = <&pio 8 0 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
 
-               led1 {
+               led-1 {
                        label = "a20-som204-evb:green:led1";
                        gpios = <&pio 8 10 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
 
-               led2 {
+               led-2 {
                        label = "a20-som204-evb:yellow:led2";
                        gpios = <&pio 8 11 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 2adbac8..92938d0 100644 (file)
@@ -78,7 +78,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_olinuxinolime>;
 
-               green {
+               led {
                        label = "a20-olinuxino-lime:green:usr";
                        gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 9ba6277..8077f17 100644 (file)
@@ -75,7 +75,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_olinuxinolime>;
 
-               green {
+               led {
                        label = "a20-olinuxino-lime2:green:usr";
                        gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 359bd0d..a1b89b2 100644 (file)
@@ -82,7 +82,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pins_olinuxino>;
 
-               green {
+               led {
                        label = "a20-olinuxino-micro:green:usr";
                        gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 2e328d2..84efa01 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               green {
+               led-0 {
                        label = "orangepi:green:usr";
                        gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>; /* PH24 */
                };
 
-               blue {
+               led-1 {
                        label = "orangepi:blue:usr";
                        gpios = <&pio 7 25 GPIO_ACTIVE_HIGH>; /* PH25 */
                };
index d75b2e2..5d77f1d 100644 (file)
@@ -64,7 +64,7 @@
        leds {
                compatible = "gpio-leds";
 
-               green {
+               led {
                        label = "orangepi:green:usr";
                        gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>; /* PH24 */
                };
index bf38c66..e40ecb4 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               /* Marked "LED3" on the PCB. */
-               usr1 {
+               led-3 {
                        label = "pcduino3-nano:green:usr1";
                        gpios = <&pio 7 16 GPIO_ACTIVE_LOW>; /* PH16 */
                };
 
-               /* Marked "LED4" on the PCB. */
-               usr2 {
+               led-4 {
                        label = "pcduino3-nano:green:usr2";
                        gpios = <&pio 7 15 GPIO_ACTIVE_LOW>; /* PH15 */
                };
index cc8271d..4f8d55d 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               tx {
+               led-0 {
                        label = "pcduino3:green:tx";
                        gpios = <&pio 7 15 GPIO_ACTIVE_LOW>;
                };
 
-               rx {
+               led-1 {
                        label = "pcduino3:green:rx";
                        gpios = <&pio 7 16 GPIO_ACTIVE_LOW>;
                };
index 6a66b04..fef02fc 100644 (file)
@@ -64,6 +64,7 @@
                brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
                default-brightness-level = <8>;
                enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
+               power-supply = <&reg_vcc3v3>;
        };
 
        chosen {
index 6d6a379..5a40e02 100644 (file)
        };
 
        thermal-zones {
-               cpu_thermal {
+               cpu-thermal {
                        /* milliseconds */
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
index c1362d0..a42fac6 100644 (file)
                        #clock-cells = <1>;
                };
 
-               nmi_intc: interrupt-controller@1f00c00 {
+               r_intc: interrupt-controller@1f00c00 {
                        compatible = "allwinner,sun6i-a31-r-intc";
                        interrupt-controller;
                        #interrupt-cells = <2>;
index 3177630..065cb62 100644 (file)
@@ -63,7 +63,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&led_pin_d978>;
 
-               home {
+               led {
                        label = "d978:blue:home";
                        gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */
                };
index a1953b2..8538514 100644 (file)
@@ -62,7 +62,7 @@
        leds {
                compatible = "gpio-leds";
 
-               green {
+               led {
                        label = "a33-olinuxino:green:usr";
                        gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>;
                };
@@ -98,7 +98,7 @@
        axp22x: pmic@3a3 {
                compatible = "x-powers,axp223";
                reg = <0x3a3>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                eldoin-supply = <&reg_dcdc1>;
                x-powers,drive-vbus-en;
index 785798e..d54a067 100644 (file)
@@ -63,6 +63,7 @@
 
        panel {
                compatible = "netron-dy,e231732";
+               power-supply = <&reg_vcc3v3>;
 
                port {
                        panel_input: endpoint {
        axp22x: pmic@3a3 {
                compatible = "x-powers,axp223";
                reg = <0x3a3>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                eldoin-supply = <&reg_dcdc1>;
        };
index c458f5f..7344c37 100644 (file)
        };
 
        thermal-zones {
-               cpu_thermal {
+               cpu-thermal {
                        /* milliseconds */
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
index 431f702..b60016a 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led-0 {
                        label = "bananapi-m3:blue:usr";
                        gpios = <&axp_gpio 1 GPIO_ACTIVE_HIGH>;
                };
 
-               green {
+               led-1 {
                        label = "bananapi-m3:green:usr";
                        gpios = <&axp_gpio 0 GPIO_ACTIVE_HIGH>;
                };
index d8326a5..e26af7c 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led-0 {
                        label = "cubietruck-plus:blue:usr";
                        gpios = <&pio 3 25 GPIO_ACTIVE_HIGH>; /* PD25 */
                };
 
-               orange {
+               led-1 {
                        label = "cubietruck-plus:orange:usr";
                        gpios = <&pio 3 26 GPIO_ACTIVE_HIGH>; /* PD26 */
                };
 
-               white {
+               led-2 {
                        label = "cubietruck-plus:white:usr";
                        gpios = <&pio 3 27 GPIO_ACTIVE_HIGH>; /* PD27 */
                };
 
-               green {
+               led-3 {
                        label = "cubietruck-plus:green:usr";
                        gpios = <&pio 4 4 GPIO_ACTIVE_HIGH>; /* PE4 */
                };
index bfc9bb2..83b01b0 100644 (file)
@@ -65,7 +65,7 @@
                compatible = "pwm-backlight";
                pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
                enable-gpios = <&pio 3 29 GPIO_ACTIVE_HIGH>;
-
+               power-supply = <&reg_sw>;
                brightness-levels = <0 1 2 4 8 16 32 64 128 255>;
                default-brightness-level = <9>;
        };
index c010b27..bd898b2 100644 (file)
                        clock-names = "bus", "mod", "ram";
                        resets = <&ccu RST_BUS_CSI>;
                        status = "disabled";
-
-                       csi_in: port {
-                       };
                };
 
                hdmi: hdmi@1ee0000 {
index e76d56a..f3f7a2c 100644 (file)
                states = <1100000 0>, <1300000 1>;
        };
 
+       reg_vcc_dram: vcc-dram {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-dram";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               regulator-always-on;
+               regulator-boot-on;
+               enable-active-high;
+               gpio = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */
+               vin-supply = <&reg_vcc5v0>;
+       };
+
+       reg_vcc1v2: vcc1v2 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v2";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-always-on;
+               regulator-boot-on;
+               enable-active-high;
+               gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
+               vin-supply = <&reg_vcc5v0>;
+       };
+
+       poweroff {
+               compatible = "regulator-poweroff";
+               cpu-supply = <&reg_vcc1v2>;
+       };
+
        wifi_pwrseq: wifi_pwrseq {
                compatible = "mmc-pwrseq-simple";
                reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
 
        bluetooth {
                compatible = "brcm,bcm43438-bt";
+               max-speed = <1500000>;
                clocks = <&rtc 1>;
                clock-names = "lpo";
                vbat-supply = <&reg_vcc3v3>;
index 45a2444..62b5280 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led-0 {
                        label = "beelink-x2:blue:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
                        default-state = "on";
                };
 
-               red {
+               led-1 {
                        label = "beelink-x2:red:standby";
                        gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; /* PA15 */
                };
index 6b14927..8e7dfcf 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr {
+               led-0 {
                        label = "nanopi:red:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "nanopi:green:status";
                        gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
                };
index 07867a0..be49eab 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr {
+               led-0 {
                        label = "nanopi:green:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "nanopi:blue:status";
                        gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
                };
index 204a39f..26e2e61 100644 (file)
@@ -39,8 +39,8 @@
                regulator-ramp-delay = <50>;
                gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
                gpios-states = <0x1>;
-               states = <1100000 0x0
-                         1300000 0x1>;
+               states = <1100000 0x0>,
+                        <1300000 0x1>;
        };
 
        wifi_pwrseq: wifi_pwrseq {
index 4df29a6..c7c3e7d 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               status {
+               led-0 {
                        label = "nanopi:blue:status";
                        gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>;
                        linux,default-trigger = "heartbeat";
                };
 
-               pwr {
+               led-1 {
                        label = "nanopi:green:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
index 251bbab..561ea1d 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr {
+               led-0 {
                        label = "orangepi:green:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "orangepi:red:status";
                        gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>;
                };
index e1c75f7..293016d 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led-0 {
                        label = "bpi-m2m:blue:usr";
                        gpios = <&pio 2 7 GPIO_ACTIVE_LOW>;
                };
 
-               green {
+               led-1 {
                        label = "bpi-m2m:green:usr";
                        gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>;
                };
 
-               red {
+               led-2 {
                        label = "bpi-m2m:red:power";
                        gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
                        default-state = "on";
        axp22x: pmic@3a3 {
                compatible = "x-powers,axp223";
                reg = <0x3a3>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                eldoin-supply = <&reg_dcdc1>;
                x-powers,drive-vbus-en;
index 4f48eec..2be1b76 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               led1 {
+               led-1 {
                        label = "parrot:led1:usr";
-                       gpio = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
+                       gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
                };
 
-               led2 {
+               led-2 {
                        label = "parrot:led2:usr";
-                       gpio = <&pio 4 16 GPIO_ACTIVE_HIGH>; /* PE16 */
+                       gpios = <&pio 4 16 GPIO_ACTIVE_HIGH>; /* PE16 */
                };
        };
 
        axp22x: pmic@3a3 {
                compatible = "x-powers,axp223";
                reg = <0x3a3>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                drivevbus-supply = <&reg_vcc5v0>;
                x-powers,drive-vbus-en;
index 7907569..d5ad3b9 100644 (file)
                        };
                };
 
+               deinterlace: deinterlace@1400000 {
+                       compatible = "allwinner,sun8i-r40-deinterlace",
+                                    "allwinner,sun8i-h3-deinterlace";
+                       reg = <0x01400000 0x20000>;
+                       clocks = <&ccu CLK_BUS_DEINTERLACE>,
+                                <&ccu CLK_DEINTERLACE>,
+                                /*
+                                 * NOTE: Contrary to what datasheet claims,
+                                 * DRAM deinterlace gate doesn't exist and
+                                 * it's shared with CSI1.
+                                 */
+                                <&ccu CLK_DRAM_CSI1>;
+                       clock-names = "bus", "mod", "ram";
+                       resets = <&ccu RST_BUS_DEINTERLACE>;
+                       interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                       interconnects = <&mbus 9>;
+                       interconnect-names = "dma-mem";
+               };
+
                syscon: system-control@1c00000 {
                        compatible = "allwinner,sun8i-r40-system-control",
                                     "allwinner,sun4i-a10-system-control";
index b3d8b8f..797d61c 100644 (file)
@@ -54,6 +54,7 @@
                brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
                default-brightness-level = <8>;
                enable-gpios = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
+               power-supply = <&reg_dc1sw>;
        };
 
        chosen {
@@ -92,7 +93,7 @@
        axp22x: pmic@3a3 {
                compatible = "x-powers,axp223";
                reg = <0x3a3>;
-               interrupt-parent = <&nmi_intc>;
+               interrupt-parent = <&r_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                eldoin-supply = <&reg_dcdc1>;
                drivevbus-supply = <&reg_vcc5v0>;
index 24d507c..052b010 100644 (file)
@@ -39,6 +39,6 @@
 };
 
 &usbphy {
-       usb0_id_det-gpio = <&pio 5 6 GPIO_ACTIVE_HIGH>;
+       usb0_id_det-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>;
        status = "okay";
 };
index 4aa0ee8..20966e9 100644 (file)
@@ -64,9 +64,6 @@
        status = "okay";
 
        port {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
                csi1_ep: endpoint {
                        remote-endpoint = <&ov5640_ep>;
                        bus-width = <8>;
        status = "okay";
 
        axp209: pmic@34 {
-               compatible = "x-powers,axp203",
-                            "x-powers,axp209";
                reg = <0x34>;
-               interrupt-parent = <&gic>;
-               interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-controller;
-               #interrupt-cells = <1>;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
        };
 };
 
diff --git a/arch/arm/boot/dts/sun8i-v3-sl631-imx179.dts b/arch/arm/boot/dts/sun8i-v3-sl631-imx179.dts
new file mode 100644 (file)
index 0000000..117aeec
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR X11)
+/*
+ * Copyright 2020 Paul Kocialkowski <contact@paulk.fr>
+ */
+
+#include "sun8i-v3-sl631.dtsi"
+
+/ {
+       model = "SL631 Action Camera with IMX179";
+       compatible = "allwinner,sl631-imx179", "allwinner,sl631",
+                    "allwinner,sun8i-v3";
+};
diff --git a/arch/arm/boot/dts/sun8i-v3-sl631.dtsi b/arch/arm/boot/dts/sun8i-v3-sl631.dtsi
new file mode 100644 (file)
index 0000000..e0d2a31
--- /dev/null
@@ -0,0 +1,138 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR X11)
+/*
+ * Copyright 2020 Paul Kocialkowski <contact@paulk.fr>
+ */
+
+/dts-v1/;
+
+#include "sun8i-v3.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "SL631 Action Camera";
+       compatible = "allwinner,sl631", "allwinner,sun8i-v3";
+
+       aliases {
+               serial0 = &uart1;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&i2c0 {
+       status = "okay";
+
+       axp209: pmic@34 {
+               reg = <0x34>;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pb_pins>;
+       status = "okay";
+};
+
+&lradc {
+       vref-supply = <&reg_ldo2>;
+       status = "okay";
+
+       button-174 {
+               label = "Down";
+               linux,code = <KEY_DOWN>;
+               channel = <0>;
+               voltage = <174603>;
+       };
+
+       button-384 {
+               label = "Up";
+               linux,code = <KEY_UP>;
+               channel = <0>;
+               voltage = <384126>;
+       };
+
+       button-593 {
+               label = "OK";
+               linux,code = <KEY_OK>;
+               channel = <0>;
+               voltage = <593650>;
+       };
+};
+
+&mmc0 {
+       cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
+       bus-width = <4>;
+       vmmc-supply = <&reg_dcdc3>;
+       status = "okay";
+};
+
+&pio {
+       vcc-pd-supply = <&reg_dcdc3>;
+       vcc-pe-supply = <&reg_dcdc3>;
+};
+
+#include "axp209.dtsi"
+
+&ac_power_supply {
+       status = "okay";
+};
+
+&battery_power_supply {
+       status = "okay";
+};
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1250000>;
+       regulator-max-microvolt = <1250000>;
+       regulator-name = "vdd-sys-cpu";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <3300000>;
+       regulator-max-microvolt = <3300000>;
+       regulator-name = "vdd-3v3";
+};
+
+&reg_ldo1 {
+       regulator-name = "vdd-rtc";
+};
+
+&reg_ldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <3000000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-name = "avcc";
+};
+
+&spi0 {
+       status = "okay";
+
+       spi-flash@0 {
+               reg = <0>;
+               compatible = "jedec,spi-nor";
+               spi-max-frequency = <50000000>;
+       };
+};
+
+&uart1 {
+       pinctrl-0 = <&uart1_pg_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
index f8f19d8..eb4cb63 100644 (file)
                syscon: system-control@1c00000 {
                        compatible = "allwinner,sun8i-v3s-system-control",
                                     "allwinner,sun8i-h3-system-control";
-                       reg = <0x01c00000 0x1000>;
+                       reg = <0x01c00000 0xd0>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                };
 
+               nmi_intc: interrupt-controller@1c000d0 {
+                       compatible = "allwinner,sun8i-v3s-nmi",
+                                    "allwinner,sun9i-a80-nmi";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       reg = <0x01c000d0 0x0c>;
+                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                tcon0: lcd-controller@1c0c000 {
                        compatible = "allwinner,sun8i-v3s-tcon";
                        reg = <0x01c0c000 0x1000>;
                        #interrupt-cells = <3>;
 
                        /omit-if-no-ref/
+                       csi0_mclk_pin: csi0-mclk-pin {
+                               pins = "PE20";
+                               function = "csi_mipi";
+                       };
+
+                       /omit-if-no-ref/
                        csi1_8bit_pins: csi1-8bit-pins {
                                pins = "PE0", "PE2", "PE3", "PE8", "PE9",
                                       "PE10", "PE11", "PE12", "PE13", "PE14",
index 484b93d..1fe251e 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               green {
+               led-0 {
                        label = "cubieboard4:green:usr";
                        gpios = <&pio 7 17 GPIO_ACTIVE_HIGH>; /* PH17 */
                };
 
-               red {
+               led-1 {
                        label = "cubieboard4:red:usr";
                        gpios = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
                };
index 8e5cb3b..7a6af54 100644 (file)
 
        bluetooth {
                compatible = "brcm,bcm43438-bt";
+               max-speed = <1500000>;
                clocks = <&rtc 1>;
                clock-names = "lpo";
                vbat-supply = <&reg_vcc3v3>;
index 74da136..0368b3b 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 4a0848a..03657ff 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 6eecdef..c20eacd 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 211d1e9..41ce680 100644 (file)
@@ -13,6 +13,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.0.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.1.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.2.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinetab.dtb
+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinetab-early-adopter.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb
 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a100-allwinner-perf1.dtb
index e5e840b..f7fe9fa 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr-led {
+               led-0 {
                        label = "bananapi-m64:red:pwr";
                        gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */
                        default-state = "on";
                };
 
-               green {
+               led-1 {
                        label = "bananapi-m64:green:user";
                        gpios = <&pio 4 14 GPIO_ACTIVE_HIGH>; /* PE14 */
                };
 
-               blue {
+               led-2 {
                        label = "bananapi-m64:blue:user";
                        gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* PE15 */
                };
index e58db8a..09b3c7f 100644 (file)
@@ -35,7 +35,7 @@
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led {
                        label = "nanopi-a64:blue:status";
                        gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
                };
index 302e24b..437ffe3 100644 (file)
@@ -1,10 +1,21 @@
 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 // Copyright (c) 2018 ARM Ltd.
 
+#include <dt-bindings/leds/common.h>
 #include "sun50i-a64-sopine-baseboard.dts"
 
 / {
        model = "Pine64 LTS";
        compatible = "pine64,pine64-lts", "allwinner,sun50i-r18",
                     "allwinner,sun50i-a64";
+
+       leds {
+               compatible = "gpio-leds";
+
+               led {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
+               };
+       };
 };
index 896f34f..7ae1654 100644 (file)
 };
 
 &ehci0 {
-       phys = <&usbphy 0>;
-       phy-names = "usb";
        status = "okay";
 };
 
        pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
        vmmc-supply = <&reg_dcdc1>;
        vqmmc-supply = <&reg_eldo1>;
+       max-frequency = <200000000>;
        bus-width = <8>;
        non-removable;
        cap-mmc-hw-reset;
 };
 
 &ohci0 {
-       phys = <&usbphy 0>;
-       phy-names = "usb";
        status = "okay";
 };
 
index 3d5a2ae..fb65319 100644 (file)
@@ -7,7 +7,7 @@
 
 / {
        model = "Pine64 PinePhone Developer Batch (1.0)";
-       compatible = "pine64,pinephone-1.0", "allwinner,sun50i-a64";
+       compatible = "pine64,pinephone-1.0", "pine64,pinephone", "allwinner,sun50i-a64";
 };
 
 &sgm3140 {
index c9b9f6e..5e59d37 100644 (file)
@@ -7,7 +7,7 @@
 
 / {
        model = "Pine64 PinePhone Braveheart (1.1)";
-       compatible = "pine64,pinephone-1.1", "allwinner,sun50i-a64";
+       compatible = "pine64,pinephone-1.1", "pine64,pinephone", "allwinner,sun50i-a64";
 };
 
 &backlight {
index acc0ab5..4e7e237 100644 (file)
@@ -7,7 +7,7 @@
 
 / {
        model = "Pine64 PinePhone (1.2)";
-       compatible = "pine64,pinephone-1.2", "allwinner,sun50i-a64";
+       compatible = "pine64,pinephone-1.2", "pine64,pinephone", "allwinner,sun50i-a64";
 
        wifi_pwrseq: wifi-pwrseq {
                compatible = "mmc-pwrseq-simple";
index 2dfe9ba..9f69d48 100644 (file)
@@ -21,6 +21,7 @@
                compatible = "pwm-backlight";
                pwms = <&r_pwm 0 50000 PWM_POLARITY_INVERTED>;
                enable-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */
+               power-supply = <&reg_ps>;
                /* Backlight configuration differs per PinePhone revision. */
        };
 
        leds {
                compatible = "gpio-leds";
 
-               blue {
+               led-0 {
                        function = LED_FUNCTION_INDICATOR;
                        color = <LED_COLOR_ID_BLUE>;
                        gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */
                };
 
-               green {
+               led-1 {
                        function = LED_FUNCTION_INDICATOR;
                        color = <LED_COLOR_ID_GREEN>;
                        gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */
                };
 
-               red {
+               led-2 {
                        function = LED_FUNCTION_INDICATOR;
                        color = <LED_COLOR_ID_RED>;
                        gpios = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */
                };
        };
 
+       reg_ps: ps-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "ps";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+       };
+
        reg_vbat_wifi: vbat-wifi {
                compatible = "regulator-fixed";
                regulator-min-microvolt = <3300000>;
                reg = <0x48>;
                interrupt-parent = <&pio>;
                interrupts = <1 0 IRQ_TYPE_EDGE_FALLING>; /* PB0 */
-               vdd-supply = <&reg_ldo_io0>;
-               leda-supply = <&reg_dldo1>;
        };
 
        /* Accelerometer/gyroscope */
 
 &lradc {
        vref-supply = <&reg_aldo3>;
+       wakeup-source;
        status = "okay";
 
        button-200 {
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab-early-adopter.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab-early-adopter.dts
new file mode 100644 (file)
index 0000000..6265360
--- /dev/null
@@ -0,0 +1,26 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2020 Icenowy Zheng <icenowy@aosc.io>
+ *
+ */
+
+/dts-v1/;
+
+#include "sun50i-a64-pinetab.dts"
+
+/ {
+       model = "PineTab, Early Adopter's version";
+       compatible = "pine64,pinetab-early-adopter", "allwinner,sun50i-a64";
+};
+
+&dsi {
+       /delete-node/ panel@0;
+
+       panel@0 {
+               compatible = "feixin,k101-im2byl02", "ilitek,ili9881c";
+               reg = <0>;
+               power-supply = <&reg_dc1sw>;
+               reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
+               backlight = <&backlight>;
+       };
+};
index 0494bfa..422a850 100644 (file)
@@ -14,7 +14,7 @@
 #include <dt-bindings/pwm/pwm.h>
 
 / {
-       model = "PineTab";
+       model = "PineTab, Development Sample";
        compatible = "pine64,pinetab", "allwinner,sun50i-a64";
 
        aliases {
index d406974..e22b94c 100644 (file)
        bus-width = <8>;
        non-removable;
        cap-mmc-hw-reset;
+       mmc-hs200-1_8v;
        status = "okay";
 };
 
index c48692b..3402cec 100644 (file)
@@ -32,7 +32,6 @@
        pinctrl-names = "default";
        pinctrl-0 = <&mmc0_pins>;
        vmmc-supply = <&reg_dcdc1>;
-       non-removable;
        disable-wp;
        bus-width = <4>;
        cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
index a1864a8..f0a16f3 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               capslock {
+               led-0 {
                        label = "teres-i:green:capslock";
                        gpios = <&pio 2 7 GPIO_ACTIVE_HIGH>; /* PC7 */
                };
 
-               numlock {
+               led-1 {
                        label = "teres-i:green:numlock";
                        gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>; /* PC4 */
                };
index 51cc30e..57786fc 100644 (file)
                        resets = <&ccu RST_BUS_MMC2>;
                        reset-names = "ahb";
                        interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
-                       max-frequency = <200000000>;
+                       max-frequency = <150000000>;
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                                 <&ccu CLK_USB_OHCI0>;
                        resets = <&ccu RST_BUS_OHCI0>,
                                 <&ccu RST_BUS_EHCI0>;
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
                        status = "disabled";
                };
 
                        clocks = <&ccu CLK_BUS_OHCI0>,
                                 <&ccu CLK_USB_OHCI0>;
                        resets = <&ccu RST_BUS_OHCI0>;
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
                        status = "disabled";
                };
 
index 9d93fe1..4c3921a 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr {
+               led-0 {
                        label = "nanopi:green:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "nanopi:red:status";
                        gpios = <&pio 0 20 GPIO_ACTIVE_HIGH>;
                };
index b059e20..02f8e72 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr {
+               led-0 {
                        label = "nanopi:green:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "nanopi:blue:status";
                        gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>;
                };
index 8bf2db9..1010c1b 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr {
+               led-0 {
                        label = "orangepi:green:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "orangepi:red:status";
                        gpios = <&pio 0 20 GPIO_ACTIVE_HIGH>;
                };
index 33ab440..74e0444 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr {
+               led-0 {
                        label = "orangepi:green:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "orangepi:red:status";
                        gpios = <&pio 0 20 GPIO_ACTIVE_HIGH>;
                };
index ef5ca64..d13980e 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr {
+               led-0 {
                        label = "orangepi:green:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "orangepi:red:status";
                        gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */
                };
index de19e68..22530ac 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               pwr {
+               led-0 {
                        label = "orangepi:green:pwr";
                        gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "orangepi:red:status";
                        gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>;
                };
index 10489e5..578a63d 100644 (file)
                        resets = <&ccu RST_BUS_CE>;
                };
 
+               deinterlace: deinterlace@1e00000 {
+                       compatible = "allwinner,sun8i-h3-deinterlace";
+                       reg = <0x01e00000 0x20000>;
+                       clocks = <&ccu CLK_BUS_DEINTERLACE>,
+                                <&ccu CLK_DEINTERLACE>,
+                                <&ccu CLK_DRAM_DEINTERLACE>;
+                       clock-names = "bus", "mod", "ram";
+                       resets = <&ccu RST_BUS_DEINTERLACE>;
+                       interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                       interconnects = <&mbus 9>;
+                       interconnect-names = "dma-mem";
+               };
+
                mali: gpu@1e80000 {
                        compatible = "allwinner,sun50i-h5-mali", "arm,mali-450";
                        reg = <0x01e80000 0x30000>;
index 7c9dbde..4f47551 100644 (file)
@@ -43,7 +43,7 @@
        leds {
                compatible = "gpio-leds";
 
-               power {
+               led {
                        label = "beelink:white:power";
                        gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
                        default-state = "on";
index 1a5eddc..8c6e853 100644 (file)
@@ -8,7 +8,7 @@
                nvmem-cells = <&cpu_speed_grade>;
                opp-shared;
 
-               opp@480000000 {
+               opp-480000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <480000000>;
 
@@ -17,7 +17,7 @@
                        opp-microvolt-speed2 = <820000 820000 1200000>;
                };
 
-               opp@720000000 {
+               opp-720000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <720000000>;
 
@@ -26,7 +26,7 @@
                        opp-microvolt-speed2 = <820000 820000 1200000>;
                };
 
-               opp@816000000 {
+               opp-816000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <816000000>;
 
@@ -35,7 +35,7 @@
                        opp-microvolt-speed2 = <820000 820000 1200000>;
                };
 
-               opp@888000000 {
+               opp-888000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <888000000>;
 
@@ -44,7 +44,7 @@
                        opp-microvolt-speed2 = <820000 820000 1200000>;
                };
 
-               opp@1080000000 {
+               opp-1080000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <1080000000>;
 
@@ -53,7 +53,7 @@
                        opp-microvolt-speed2 = <880000 880000 1200000>;
                };
 
-               opp@1320000000 {
+               opp-1320000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <1320000000>;
 
@@ -62,7 +62,7 @@
                        opp-microvolt-speed2 = <940000 940000 1200000>;
                };
 
-               opp@1488000000 {
+               opp-1488000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <1488000000>;
 
@@ -71,7 +71,7 @@
                        opp-microvolt-speed2 = <1000000 1000000 1200000>;
                };
 
-               opp@1608000000 {
+               opp-1608000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <1608000000>;
 
@@ -80,7 +80,7 @@
                        opp-microvolt-speed2 = <1030000 1030000 1200000>;
                };
 
-               opp@1704000000 {
+               opp-1704000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <1704000000>;
 
@@ -89,7 +89,7 @@
                        opp-microvolt-speed2 = <1060000 1060000 1200000>;
                };
 
-               opp@1800000000 {
+               opp-1800000000 {
                        clock-latency-ns = <244144>; /* 8 32k periods */
                        opp-hz = /bits/ 64 <1800000000>;
 
index 15c9dd8..7e83f61 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               power {
+               led-0 {
                        label = "orangepi:red:power";
                        gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "orangepi:green:status";
                        gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
                };
index ebc120a..da0875b 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               power {
+               led-0 {
                        label = "orangepi:red:power";
                        gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
                        default-state = "on";
                };
 
-               status {
+               led-1 {
                        label = "orangepi:green:status";
                        gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
                };
index 7fea1e4..686f58e 100644 (file)
        non-removable;
        status = "okay";
 };
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "realtek,rtl8723bs-bt";
+               device-wake-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */
+               host-wake-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */
+               enable-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */
+               max-speed = <1500000>;
+       };
+};
index 961732c..b868ad1 100644 (file)
        leds {
                compatible = "gpio-leds";
 
-               heartbeat {
+               led-0 {
                        label = "pine-h64:green:heartbeat";
                        gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
                };
 
-               link {
+               led-1 {
                        label = "pine-h64:white:link";
                        gpios = <&r_pio 0 3 GPIO_ACTIVE_HIGH>; /* PL3 */
                };
 
-               status {
+               led-2 {
                        label = "pine-h64:blue:status";
                        gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
                };
        vqmmc-supply = <&reg_bldo2>;
        non-removable;
        cap-mmc-hw-reset;
+       mmc-hs200-1_8v;
        bus-width = <8>;
        status = "okay";
 };
index 8a62a9f..49e9797 100644 (file)
                        interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc0_pins>;
+                       max-frequency = <150000000>;
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc1_pins>;
+                       max-frequency = <150000000>;
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc2_pins>;
+                       max-frequency = <150000000>;
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                                 <&ccu CLK_USB_OHCI0>;
                        resets = <&ccu RST_BUS_OHCI0>,
                                 <&ccu RST_BUS_EHCI0>;
+                       phys = <&usb2phy 0>;
+                       phy-names = "usb";
                        status = "disabled";
                };
 
                        clocks = <&ccu CLK_BUS_OHCI0>,
                                 <&ccu CLK_USB_OHCI0>;
                        resets = <&ccu RST_BUS_OHCI0>;
+                       phys = <&usb2phy 0>;
+                       phy-names = "usb";
                        status = "disabled";
                };
 
                                pins = "PL9";
                                function = "s_cir_rx";
                        };
+
+                       r_rsb_pins: r-rsb-pins {
+                               pins = "PL0", "PL1";
+                               function = "s_rsb";
+                       };
                };
 
                r_ir: ir@7040000 {
                        #size-cells = <0>;
                };
 
+               r_rsb: rsb@7083000 {
+                       compatible = "allwinner,sun8i-a23-rsb";
+                       reg = <0x07083000 0x400>;
+                       interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&r_ccu 13>;
+                       clock-frequency = <3000000>;
+                       resets = <&r_ccu 7>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&r_rsb_pins>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
                ths: thermal-sensor@5070400 {
                        compatible = "allwinner,sun50i-h6-ths";
                        reg = <0x05070400 0x100>;
index 0f89398..d301ac0 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 ced0394..78a569d 100644 (file)
@@ -3,6 +3,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12a-x96-max.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gsking-x.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
@@ -44,7 +45,8 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-rbox-pro.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-s912-libretech-pc.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-wetek-core2.dtb
-dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-c4.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-hc4.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-a1-ad401.dtb
index ba1c6df..d945c84 100644 (file)
                                      "timing-adjustment";
                        rx-fifo-depth = <4096>;
                        tx-fifo-depth = <2048>;
-                       resets = <&reset RESET_ETHERNET>;
-                       reset-names = "stmmaceth";
                        power-domains = <&pwrc PWRC_AXG_ETHERNET_MEM_ID>;
                        status = "disabled";
                };
index 9c90d56..b858c5e 100644 (file)
                                      "timing-adjustment";
                        rx-fifo-depth = <4096>;
                        tx-fifo-depth = <2048>;
-                       resets = <&reset RESET_ETHERNET>;
-                       reset-names = "stmmaceth";
                        status = "disabled";
 
                        mdio0: mdio {
                                interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
                                dr_mode = "host";
                                snps,dis_u2_susphy_quirk;
-                               snps,quirk-frame-length-adjustment;
+                               snps,quirk-frame-length-adjustment = <0x20>;
                                snps,parkmode-disable-ss-quirk;
                        };
                };
index b00d046..81269cc 100644 (file)
 
        sound {
                compatible = "amlogic,axg-sound-card";
-               model = "G12A-SEI510";
+               model = "SEI510";
                audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
                                 <&tdmin_a>, <&tdmin_b>;
                audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
index 463a72d..579f3d0 100644 (file)
 
        sound {
                compatible = "amlogic,axg-sound-card";
-               model = "G12A-X96-MAX";
+               model = "X96-MAX";
                audio-aux-devs = <&tdmout_b>;
                audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
                                "TDMOUT_B IN 1", "FRDDR_B OUT 1",
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-gsking-x.dts
new file mode 100644 (file)
index 0000000..211191f
--- /dev/null
@@ -0,0 +1,133 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ * Copyright (c) 2019 Christian Hewitt <christianshewitt@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "meson-g12b-w400.dtsi"
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+
+/ {
+       compatible = "azw,gsking-x", "amlogic,g12b";
+       model = "Beelink GS-King X";
+
+       aliases {
+               rtc0 = &rtc;
+               rtc1 = &vrtc;
+       };
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               poll-interval = <100>;
+
+               power-button {
+                       label = "power";
+                       linux,code = <KEY_POWER>;
+                       gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       sound {
+               compatible = "amlogic,axg-sound-card";
+               model = "GSKING-X";
+               audio-aux-devs = <&tdmout_a>;
+               audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 1",
+                               "TDMOUT_A IN 1", "FRDDR_B OUT 1",
+                               "TDMOUT_A IN 2", "FRDDR_C OUT 1",
+                               "TDM_A Playback", "TDMOUT_A OUT";
+
+               assigned-clocks = <&clkc CLKID_MPLL2>,
+                                 <&clkc CLKID_MPLL0>,
+                                 <&clkc CLKID_MPLL1>;
+               assigned-clock-parents = <0>, <0>, <0>;
+               assigned-clock-rates = <294912000>,
+                                      <270950400>,
+                                      <393216000>;
+               status = "okay";
+
+               dai-link-0 {
+                       sound-dai = <&frddr_a>;
+               };
+
+               dai-link-1 {
+                       sound-dai = <&frddr_b>;
+               };
+
+               dai-link-2 {
+                       sound-dai = <&frddr_c>;
+               };
+
+               /* 8ch hdmi interface */
+               dai-link-3 {
+                       sound-dai = <&tdmif_a>;
+                       dai-format = "i2s";
+                       dai-tdm-slot-tx-mask-0 = <1 1>;
+                       dai-tdm-slot-tx-mask-1 = <1 1>;
+                       dai-tdm-slot-tx-mask-2 = <1 1>;
+                       dai-tdm-slot-tx-mask-3 = <1 1>;
+                       mclk-fs = <256>;
+
+                       codec {
+                               sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
+                       };
+               };
+
+               dai-link-4 {
+                       sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
+
+                       codec {
+                               sound-dai = <&hdmi_tx>;
+                       };
+               };
+       };
+};
+
+&arb {
+       status = "okay";
+};
+
+&clkc_audio {
+       status = "okay";
+};
+
+&frddr_a {
+       status = "okay";
+};
+
+&frddr_b {
+       status = "okay";
+};
+
+&frddr_c {
+       status = "okay";
+};
+
+&i2c3 {
+       status = "okay";
+       pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
+       pinctrl-names = "default";
+
+       rtc: rtc@51 {
+               compatible = "nxp,pcf8563";
+               reg = <0x51>;
+               wakeup-source;
+       };
+};
+
+&tdmif_a {
+       status = "okay";
+};
+
+&tdmout_a {
+       status = "okay";
+};
+
+&tohdmitx {
+       status = "okay";
+};
index 0e5c500..0e331aa 100644 (file)
@@ -44,7 +44,7 @@
 
        sound {
                compatible = "amlogic,axg-sound-card";
-               model = "G12B-GTKING-PRO";
+               model = "GTKING-PRO";
                audio-aux-devs = <&tdmout_b>;
                audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
                                "TDMOUT_B IN 1", "FRDDR_B OUT 1",
index 10b87eb..a7db84a 100644 (file)
@@ -28,7 +28,7 @@
 
        sound {
                compatible = "amlogic,axg-sound-card";
-               model = "G12B-GTKING";
+               model = "GTKING";
                audio-aux-devs = <&tdmout_b>;
                audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
                                "TDMOUT_B IN 1", "FRDDR_B OUT 1",
index 39a0966..58ce569 100644 (file)
@@ -13,6 +13,8 @@
        aliases {
                serial0 = &uart_AO;
                ethernet0 = &ethmac;
+               rtc0 = &rtc;
+               rtc1 = &vrtc;
        };
 
        dioo2133: audio-amplifier-0 {
 
        sound {
                compatible = "amlogic,axg-sound-card";
-               model = "G12B-ODROID-N2";
+               model = "ODROID-N2";
                audio-widgets = "Line", "Lineout";
                audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>,
                                 <&tdmin_b>, <&tdmin_c>, <&tdmin_lb>,
        linux,rc-map-name = "rc-odroid";
 };
 
+&i2c3 {
+       status = "okay";
+       pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
+       pinctrl-names = "default";
+
+       rtc: rtc@51 {
+               compatible = "nxp,pcf8563";
+               reg = <0x51>;
+               wakeup-source;
+       };
+};
+
 &pwm_ab {
        pinctrl-0 = <&pwm_a_e_pins>;
        pinctrl-names = "default";
index b57bb0b..0c78926 100644 (file)
@@ -23,7 +23,7 @@
 
        sound {
                compatible = "amlogic,axg-sound-card";
-               model = "G12B-UGOOS-AM6";
+               model = "UGOOS-AM6";
                audio-aux-devs = <&tdmout_b>;
                audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
                                "TDMOUT_B IN 1", "FRDDR_B OUT 1",
index c2480ba..2d7032f 100644 (file)
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXL-LIBRETECH-S9XX-PC";
+               model = "LIBRETECH-PC";
                audio-aux-devs = <&dio2133>;
                audio-widgets = "Speaker", "7J4-14 LEFT",
                                "Speaker", "7J4-11 RIGHT";
index 6b57e15..dafc841 100644 (file)
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GX-P230-Q200";
+               model = "P230-Q200";
                audio-aux-devs = <&dio2133>;
                audio-widgets = "Line", "Lineout";
                audio-routing = "AU2 INL", "ACODEC LOLP",
index 726b91d..0edd137 100644 (file)
@@ -13,7 +13,6 @@
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/power/meson-gxbb-power.h>
-#include <dt-bindings/reset/amlogic,meson-gxbb-reset.h>
 #include <dt-bindings/thermal/thermal.h>
 
 / {
                        interrupt-names = "macirq";
                        rx-fifo-depth = <4096>;
                        tx-fifo-depth = <2048>;
-                       resets = <&reset RESET_ETHERNET>;
-                       reset-names = "stmmaceth";
                        power-domains = <&pwrc PWRC_GXBB_ETHERNET_MEM_ID>;
                        status = "disabled";
                };
index 089e063..7273eed 100644 (file)
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXBB-NANOPI-K2";
+               model = "NANOPI-K2";
                assigned-clocks = <&clkc CLKID_MPLL0>,
                                  <&clkc CLKID_MPLL1>,
                                  <&clkc CLKID_MPLL2>;
index b5b11cb..f887bfb 100644 (file)
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXBB-NEXBOX-A95X";
+               model = "NEXBOX-A95X";
                assigned-clocks = <&clkc CLKID_MPLL0>,
                                  <&clkc CLKID_MPLL1>,
                                  <&clkc CLKID_MPLL2>;
index c04ef57..bfaf7f4 100644 (file)
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXBB-ODROID-C2";
+               model = "ODROID-C2";
                assigned-clocks = <&clkc CLKID_MPLL0>,
                                  <&clkc CLKID_MPLL1>,
                                  <&clkc CLKID_MPLL2>;
index 0c15701..5873301 100644 (file)
@@ -15,7 +15,7 @@
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXBB-WETEK-HUB";
+               model = "WETEK-HUB";
                assigned-clocks = <&clkc CLKID_MPLL0>,
                                  <&clkc CLKID_MPLL1>,
                                  <&clkc CLKID_MPLL2>;
index f2562c7..6eae692 100644 (file)
@@ -50,7 +50,7 @@
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXBB-WETEK-PLAY2";
+               model = "WETEK-PLAY2";
                assigned-clocks = <&clkc CLKID_MPLL0>,
                                  <&clkc CLKID_MPLL1>,
                                  <&clkc CLKID_MPLL2>;
index 9e43f4d..2d76920 100644 (file)
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXL-LIBRETECH-S805X-AC";
+               model = "LIBRETECH-AC";
                audio-widgets = "Speaker", "9J5-3 LEFT",
                                "Speaker", "9J5-2 RIGHT";
                audio-routing = "9J5-3 LEFT", "ACODEC LOLN",
index 6fe589c..60feac0 100644 (file)
                };
        };
 
-       pwmleds {
+       led-controller {
                compatible = "pwm-leds";
 
-               power {
+               led-1 {
                        label = "vim:red:power";
                        pwms = <&pwm_AO_ab 1 7812500 0>;
                        max-brightness = <255>;
@@ -66,7 +66,7 @@
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXL-KHADAS-VIM1";
+               model = "KHADAS-VIM";
                assigned-clocks = <&clkc CLKID_MPLL0>,
                                  <&clkc CLKID_MPLL1>,
                                  <&clkc CLKID_MPLL2>;
index 9a3c08e..93d8f8a 100644 (file)
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXL-LIBRETECH-S905X-CC-V2";
+               model = "LIBRETECH-CC-V2";
                assigned-clocks = <&clkc CLKID_MPLL0>,
                                  <&clkc CLKID_MPLL1>,
                                  <&clkc CLKID_MPLL2>;
index 5ae7bb6..82bfabf 100644 (file)
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXL-LIBRETECH-S905X-CC";
+               model = "LIBRETECH-CC";
                audio-aux-devs = <&dio2133>;
                audio-widgets = "Line", "Lineout";
                audio-routing = "AU2 INL", "ACODEC LOLN",
index bf9877d..18a4b7a 100644 (file)
                };
        };
 
-       pwmleds {
+       led-controller {
                compatible = "pwm-leds";
 
-               power {
+               led-1 {
                        label = "vim:red:power";
                        pwms = <&pwm_AO_ab 1 7812500 0>;
                        max-brightness = <255>;
 
        sound {
                compatible = "amlogic,gx-sound-card";
-               model = "GXM-KHADAS-VIM2";
+               model = "KHADAS-VIM2";
                assigned-clocks = <&clkc CLKID_MPLL0>,
                                  <&clkc CLKID_MPLL1>,
                                  <&clkc CLKID_MPLL2>;
index 8f86562..877e3b9 100644 (file)
 
        sound {
                compatible = "amlogic,axg-sound-card";
-               model = "G12B-KHADAS-VIM3";
+               model = "KHADAS-VIM3";
                audio-aux-devs = <&tdmout_a>;
                audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
                                "TDMOUT_A IN 1", "FRDDR_B OUT 0",
 };
 
 &ethmac {
-        pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
-        pinctrl-names = "default";
-        status = "okay";
-        phy-mode = "rgmii";
-        phy-handle = <&external_phy>;
-        amlogic,tx-delay-ns = <2>;
+       pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+       phy-mode = "rgmii";
+       phy-handle = <&external_phy>;
+       amlogic,tx-delay-ns = <2>;
 };
 
 &frddr_a {
 };
 
 &pwm_ef {
-        status = "okay";
-        pinctrl-0 = <&pwm_e_pins>;
-        pinctrl-names = "default";
+       status = "okay";
+       pinctrl-0 = <&pwm_e_pins>;
+       pinctrl-names = "default";
 };
 
 &saradc {
        };
 };
 
-
 &tdmif_a {
        status = "okay";
 };
index 4b517ca..06de0b1 100644 (file)
        status = "okay";
 };
 
-&sd_emmc_a {
-       sd-uhs-sdr50;
-};
-
 &usb {
        phys = <&usb2_phy0>, <&usb2_phy1>;
        phy-names = "usb2-phy0", "usb2-phy1";
 };
  */
 
+&sd_emmc_a {
+       sd-uhs-sdr50;
+};
index cf5a98f..b2a4e82 100644 (file)
@@ -5,34 +5,12 @@
 
 /dts-v1/;
 
-#include "meson-sm1.dtsi"
-#include <dt-bindings/gpio/meson-g12a-gpio.h>
-#include <dt-bindings/leds/common.h>
-#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+#include "meson-sm1-odroid.dtsi"
 
 / {
        compatible = "hardkernel,odroid-c4", "amlogic,sm1";
        model = "Hardkernel ODROID-C4";
 
-       aliases {
-               serial0 = &uart_AO;
-               ethernet0 = &ethmac;
-       };
-
-       chosen {
-               stdout-path = "serial0:115200n8";
-       };
-
-       memory@0 {
-               device_type = "memory";
-               reg = <0x0 0x0 0x0 0x40000000>;
-       };
-
-       emmc_pwrseq: emmc-pwrseq {
-               compatible = "mmc-pwrseq-emmc";
-               reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
-       };
-
        leds {
                compatible = "gpio-leds";
 
                };
        };
 
-       tflash_vdd: regulator-tflash_vdd {
-               compatible = "regulator-fixed";
-
-               regulator-name = "TFLASH_VDD";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpio = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               regulator-always-on;
-       };
-
-       tf_io: gpio-regulator-tf_io {
-               compatible = "regulator-gpio";
-
-               regulator-name = "TF_IO";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpios = <&gpio_ao GPIOAO_6 GPIO_ACTIVE_HIGH>;
-               gpios-states = <0>;
-
-               states = <3300000 0>,
-                        <1800000 1>;
-       };
-
-       flash_1v8: regulator-flash_1v8 {
-               compatible = "regulator-fixed";
-               regulator-name = "FLASH_1V8";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               vin-supply = <&vcc_3v3>;
-               regulator-always-on;
-       };
-
-       main_12v: regulator-main_12v {
-               compatible = "regulator-fixed";
-               regulator-name = "12V";
-               regulator-min-microvolt = <12000000>;
-               regulator-max-microvolt = <12000000>;
-               regulator-always-on;
-       };
-
-       vcc_5v: regulator-vcc_5v {
-               compatible = "regulator-fixed";
-               regulator-name = "5V";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               regulator-always-on;
-               vin-supply = <&main_12v>;
-       };
-
-       vcc_1v8: regulator-vcc_1v8 {
-               compatible = "regulator-fixed";
-               regulator-name = "VCC_1V8";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               vin-supply = <&vcc_3v3>;
-               regulator-always-on;
-       };
-
-       vcc_3v3: regulator-vcc_3v3 {
-               compatible = "regulator-fixed";
-               regulator-name = "VCC_3V3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               vin-supply = <&vddao_3v3>;
-               regulator-always-on;
-               /* FIXME: actually controlled by VDDCPU_B_EN */
-       };
-
-       vddcpu: regulator-vddcpu {
-               /*
-                * MP8756GD Regulator.
-                */
-               compatible = "pwm-regulator";
-
-               regulator-name = "VDDCPU";
-               regulator-min-microvolt = <721000>;
-               regulator-max-microvolt = <1022000>;
-
-               vin-supply = <&main_12v>;
-
-               pwms = <&pwm_AO_cd 1 1250 0>;
-               pwm-dutycycle-range = <100 0>;
-
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
        hub_5v: regulator-hub_5v {
                compatible = "regulator-fixed";
                regulator-name = "HUB_5V";
                enable-active-high;
        };
 
-       usb_pwr_en: regulator-usb_pwr_en {
-               compatible = "regulator-fixed";
-               regulator-name = "USB_PWR_EN";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               vin-supply = <&vcc_5v>;
-
-               /* Connected to the microUSB port power enable */
-               gpio = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-       };
-
-       vddao_1v8: regulator-vddao_1v8 {
-               compatible = "regulator-fixed";
-               regulator-name = "VDDAO_1V8";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               vin-supply = <&vddao_3v3>;
-               regulator-always-on;
-       };
-
-       vddao_3v3: regulator-vddao_3v3 {
-               compatible = "regulator-fixed";
-               regulator-name = "VDDAO_3V3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               vin-supply = <&main_12v>;
-               regulator-always-on;
-       };
-
-       hdmi-connector {
-               compatible = "hdmi-connector";
-               type = "a";
-
-               port {
-                       hdmi_connector_in: endpoint {
-                               remote-endpoint = <&hdmi_tx_tmds_out>;
-                       };
-               };
-       };
-
        sound {
-               compatible = "amlogic,axg-sound-card";
-               model = "SM1-ODROID-C4";
-               audio-aux-devs = <&tdmout_b>;
-               audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
-                               "TDMOUT_B IN 1", "FRDDR_B OUT 1",
-                               "TDMOUT_B IN 2", "FRDDR_C OUT 1",
-                               "TDM_B Playback", "TDMOUT_B OUT";
-
-               assigned-clocks = <&clkc CLKID_MPLL2>,
-                                 <&clkc CLKID_MPLL0>,
-                                 <&clkc CLKID_MPLL1>;
-               assigned-clock-parents = <0>, <0>, <0>;
-               assigned-clock-rates = <294912000>,
-                                      <270950400>,
-                                      <393216000>;
-               status = "okay";
-
-               dai-link-0 {
-                       sound-dai = <&frddr_a>;
-               };
-
-               dai-link-1 {
-                       sound-dai = <&frddr_b>;
-               };
-
-               dai-link-2 {
-                       sound-dai = <&frddr_c>;
-               };
-
-               /* 8ch hdmi interface */
-               dai-link-3 {
-                       sound-dai = <&tdmif_b>;
-                       dai-format = "i2s";
-                       dai-tdm-slot-tx-mask-0 = <1 1>;
-                       dai-tdm-slot-tx-mask-1 = <1 1>;
-                       dai-tdm-slot-tx-mask-2 = <1 1>;
-                       dai-tdm-slot-tx-mask-3 = <1 1>;
-                       mclk-fs = <256>;
-
-                       codec {
-                               sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
-                       };
-               };
-
-               /* hdmi glue */
-               dai-link-4 {
-                       sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
-
-                       codec {
-                               sound-dai = <&hdmi_tx>;
-                       };
-               };
-       };
-};
-
-&arb {
-       status = "okay";
-};
-
-&clkc_audio {
-       status = "okay";
-};
-
-&cpu0 {
-       cpu-supply = <&vddcpu>;
-       operating-points-v2 = <&cpu_opp_table>;
-       clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
-};
-
-&cpu1 {
-       cpu-supply = <&vddcpu>;
-       operating-points-v2 = <&cpu_opp_table>;
-       clocks = <&clkc CLKID_CPU1_CLK>;
-       clock-latency = <50000>;
-};
-
-&cpu2 {
-       cpu-supply = <&vddcpu>;
-       operating-points-v2 = <&cpu_opp_table>;
-       clocks = <&clkc CLKID_CPU2_CLK>;
-       clock-latency = <50000>;
-};
-
-&cpu3 {
-       cpu-supply = <&vddcpu>;
-       operating-points-v2 = <&cpu_opp_table>;
-       clocks = <&clkc CLKID_CPU3_CLK>;
-       clock-latency = <50000>;
-};
-
-&ext_mdio {
-       external_phy: ethernet-phy@0 {
-               /* Realtek RTL8211F (0x001cc916) */
-               reg = <0>;
-               max-speed = <1000>;
-
-               interrupt-parent = <&gpio_intc>;
-               /* MAC_INTR on GPIOZ_14 */
-               interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+               model = "ODROID-C4";
        };
 };
 
-&ethmac {
-       pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-       phy-mode = "rgmii";
-       phy-handle = <&external_phy>;
-       amlogic,tx-delay-ns = <2>;
-};
-
-&frddr_a {
-       status = "okay";
-};
-
-&frddr_b {
-       status = "okay";
-};
-
-&frddr_c {
-       status = "okay";
-};
-
 &gpio {
-       gpio-line-names =
-               /* GPIOZ */
-               "", "", "", "", "", "", "", "",
-               "", "", "", "", "", "", "", "",
-               /* GPIOH */
-               "", "", "", "", "",
-               "PIN_36", /* GPIOH_5 */
-               "PIN_26", /* GPIOH_6 */
-               "PIN_32", /* GPIOH_7 */
-               "",
-               /* BOOT */
-               "", "", "", "", "", "", "", "",
-               "", "", "", "", "", "", "", "",
-               /* GPIOC */
-               "", "", "", "", "", "", "", "",
-               /* GPIOA */
-               "", "", "", "", "", "", "", "",
-               "", "", "", "", "", "",
-               "PIN_27", /* GPIOA_14 */
-               "PIN_28", /* GPIOA_15 */
-               /* GPIOX */
-               "PIN_16", /* GPIOX_0 */
-               "PIN_18", /* GPIOX_1 */
-               "PIN_22", /* GPIOX_2 */
-               "PIN_11", /* GPIOX_3 */
-               "PIN_13", /* GPIOX_4 */
-               "PIN_7",  /* GPIOX_5 */
-               "PIN_33", /* GPIOX_6 */
-               "PIN_15", /* GPIOX_7 */
-               "PIN_19", /* GPIOX_8 */
-               "PIN_21", /* GPIOX_9 */
-               "PIN_24", /* GPIOX_10 */
-               "PIN_23", /* GPIOX_11 */
-               "PIN_8",  /* GPIOX_12 */
-               "PIN_10", /* GPIOX_13 */
-               "PIN_29", /* GPIOX_14 */
-               "PIN_31", /* GPIOX_15 */
-               "PIN_12", /* GPIOX_16 */
-               "PIN_3",  /* GPIOX_17 */
-               "PIN_5",  /* GPIOX_18 */
-               "PIN_35"; /* GPIOX_19 */
-
        /*
         * WARNING: The USB Hub on the Odroid-C4 needs a reset signal
         * to be turned high in order to be detected by the USB Controller
        };
 };
 
-&gpio_ao {
-       gpio-line-names =
-               /* GPIOAO */
-               "", "", "", "",
-               "PIN_47", /* GPIOAO_4 */
-               "", "",
-               "PIN_45", /* GPIOAO_7 */
-               "PIN_46", /* GPIOAO_8 */
-               "PIN_44", /* GPIOAO_9 */
-               "PIN_42", /* GPIOAO_10 */
-               "",
-               /* GPIOE */
-               "", "", "";
-};
-
-&hdmi_tx {
-       status = "okay";
-       pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
-       pinctrl-names = "default";
-       hdmi-supply = <&vcc_5v>;
-};
-
-&hdmi_tx_tmds_port {
-       hdmi_tx_tmds_out: endpoint {
-               remote-endpoint = <&hdmi_connector_in>;
-       };
-};
-
 &ir {
-       status = "okay";
-       pinctrl-0 = <&remote_input_ao_pins>;
-       pinctrl-names = "default";
        linux,rc-map-name = "rc-odroid";
 };
 
-&pwm_AO_cd {
-       pinctrl-0 = <&pwm_ao_d_e_pins>;
-       pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
-       status = "okay";
-};
-
-&saradc {
-       status = "okay";
-};
-
-/* SD card */
-&sd_emmc_b {
-       status = "okay";
-       pinctrl-0 = <&sdcard_c_pins>;
-       pinctrl-1 = <&sdcard_clk_gate_c_pins>;
-       pinctrl-names = "default", "clk-gate";
-
-       bus-width = <4>;
-       cap-sd-highspeed;
-       max-frequency = <200000000>;
-       sd-uhs-sdr12;
-       sd-uhs-sdr25;
-       sd-uhs-sdr50;
-       sd-uhs-sdr104;
-       disable-wp;
-
-       cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
-       vmmc-supply = <&tflash_vdd>;
-       vqmmc-supply = <&tf_io>;
-};
-
-/* eMMC */
-&sd_emmc_c {
-       status = "okay";
-       pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
-       pinctrl-1 = <&emmc_clk_gate_pins>;
-       pinctrl-names = "default", "clk-gate";
-
-       bus-width = <8>;
-       cap-mmc-highspeed;
-       mmc-ddr-1_8v;
-       mmc-hs200-1_8v;
-       max-frequency = <200000000>;
-       disable-wp;
-
-       mmc-pwrseq = <&emmc_pwrseq>;
-       vmmc-supply = <&vcc_3v3>;
-       vqmmc-supply = <&flash_1v8>;
-};
-
-&tdmif_b {
-       status = "okay";
-};
-
-&tdmout_b {
-       status = "okay";
-};
-
-&tohdmitx {
-       status = "okay";
-};
-
-&uart_AO {
-       status = "okay";
-       pinctrl-0 = <&uart_ao_a_pins>;
-       pinctrl-names = "default";
-};
-
-&usb {
-       status = "okay";
-       vbus-supply = <&usb_pwr_en>;
-};
-
-&usb2_phy0 {
-       phy-supply = <&vcc_5v>;
-};
-
 &usb2_phy1 {
        /* Enable the hub which is connected to this port */
        phy-supply = <&hub_5v>;
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-hc4.dts
new file mode 100644 (file)
index 0000000..bf15700
--- /dev/null
@@ -0,0 +1,96 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2020 Dongjin Kim <tobetter@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "meson-sm1-odroid.dtsi"
+
+/ {
+       compatible = "hardkernel,odroid-hc4", "amlogic,sm1";
+       model = "Hardkernel ODROID-HC4";
+
+       aliases {
+               rtc0 = &rtc;
+               rtc1 = &vrtc;
+       };
+
+       fan0: pwm-fan {
+               compatible = "pwm-fan";
+               #cooling-cells = <2>;
+               cooling-min-state = <0>;
+               cooling-max-state = <3>;
+               cooling-levels = <0 120 170 220>;
+               pwms = <&pwm_cd 1 40000 0>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-blue {
+                       color = <LED_COLOR_ID_BLUE>;
+                       function = LED_FUNCTION_STATUS;
+                       gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       panic-indicator;
+               };
+
+               led-red {
+                       color = <LED_COLOR_ID_RED>;
+                       function = LED_FUNCTION_POWER;
+                       gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       sound {
+               model = "ODROID-HC4";
+       };
+};
+
+&cpu_thermal {
+       cooling-maps {
+               map {
+                       trip = <&cpu_passive>;
+                       cooling-device = <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+               };
+       };
+};
+
+&ir {
+       linux,rc-map-name = "rc-odroid";
+};
+
+&i2c2 {
+       status = "okay";
+       pinctrl-0 = <&i2c2_sda_x_pins>, <&i2c2_sck_x_pins>;
+       pinctrl-names = "default";
+
+       rtc: rtc@51 {
+               status = "okay";
+               compatible = "nxp,pcf8563";
+               reg = <0x51>;
+               wakeup-source;
+       };
+};
+
+&pcie {
+       status = "okay";
+       reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
+};
+
+&pwm_cd {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm_d_x6_pins>;
+};
+
+&sd_emmc_c {
+       status = "disabled";
+};
+
+&usb {
+       phys = <&usb2_phy0>, <&usb2_phy1>;
+       phy-names = "usb2-phy0", "usb2-phy1";
+};
diff --git a/arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi b/arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi
new file mode 100644 (file)
index 0000000..d14716b
--- /dev/null
@@ -0,0 +1,442 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2020 Dongjin Kim <tobetter@gmail.com>
+ */
+
+#include "meson-sm1.dtsi"
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+
+/ {
+       aliases {
+               serial0 = &uart_AO;
+               ethernet0 = &ethmac;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
+       };
+
+       tflash_vdd: regulator-tflash_vdd {
+               compatible = "regulator-fixed";
+
+               regulator-name = "TFLASH_VDD";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&gpio_ao GPIOAO_3 GPIO_OPEN_DRAIN>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       tf_io: gpio-regulator-tf_io {
+               compatible = "regulator-gpio";
+
+               regulator-name = "TF_IO";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpios = <&gpio_ao GPIOAO_6 GPIO_ACTIVE_HIGH>;
+               gpios-states = <0>;
+
+               states = <3300000 0>,
+                        <1800000 1>;
+       };
+
+       flash_1v8: regulator-flash_1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "FLASH_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_3v3>;
+               regulator-always-on;
+       };
+
+       main_12v: regulator-main_12v {
+               compatible = "regulator-fixed";
+               regulator-name = "12V";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-always-on;
+       };
+
+       vcc_5v: regulator-vcc_5v {
+               compatible = "regulator-fixed";
+               regulator-name = "5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               vin-supply = <&main_12v>;
+       };
+
+       vcc_1v8: regulator-vcc_1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_3v3>;
+               regulator-always-on;
+       };
+
+       vcc_3v3: regulator-vcc_3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vddao_3v3>;
+               regulator-always-on;
+               /* FIXME: actually controlled by VDDCPU_B_EN */
+       };
+
+       vddcpu: regulator-vddcpu {
+               /*
+                * MP8756GD Regulator.
+                */
+               compatible = "pwm-regulator";
+
+               regulator-name = "VDDCPU";
+               regulator-min-microvolt = <721000>;
+               regulator-max-microvolt = <1022000>;
+
+               vin-supply = <&main_12v>;
+
+               pwms = <&pwm_AO_cd 1 1250 0>;
+               pwm-dutycycle-range = <100 0>;
+
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       usb_pwr_en: regulator-usb_pwr_en {
+               compatible = "regulator-fixed";
+               regulator-name = "USB_PWR_EN";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc_5v>;
+
+               /* Connected to the microUSB port power enable */
+               gpio = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       vddao_1v8: regulator-vddao_1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDAO_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vddao_3v3>;
+               regulator-always-on;
+       };
+
+       vddao_3v3: regulator-vddao_3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDAO_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&main_12v>;
+               regulator-always-on;
+       };
+
+       hdmi-connector {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_connector_in: endpoint {
+                               remote-endpoint = <&hdmi_tx_tmds_out>;
+                       };
+               };
+       };
+
+       sound {
+               compatible = "amlogic,axg-sound-card";
+               audio-aux-devs = <&tdmout_b>;
+               audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
+                               "TDMOUT_B IN 1", "FRDDR_B OUT 1",
+                               "TDMOUT_B IN 2", "FRDDR_C OUT 1",
+                               "TDM_B Playback", "TDMOUT_B OUT";
+
+               assigned-clocks = <&clkc CLKID_MPLL2>,
+                                 <&clkc CLKID_MPLL0>,
+                                 <&clkc CLKID_MPLL1>;
+               assigned-clock-parents = <0>, <0>, <0>;
+               assigned-clock-rates = <294912000>,
+                                      <270950400>,
+                                      <393216000>;
+               status = "okay";
+
+               dai-link-0 {
+                       sound-dai = <&frddr_a>;
+               };
+
+               dai-link-1 {
+                       sound-dai = <&frddr_b>;
+               };
+
+               dai-link-2 {
+                       sound-dai = <&frddr_c>;
+               };
+
+               /* 8ch hdmi interface */
+               dai-link-3 {
+                       sound-dai = <&tdmif_b>;
+                       dai-format = "i2s";
+                       dai-tdm-slot-tx-mask-0 = <1 1>;
+                       dai-tdm-slot-tx-mask-1 = <1 1>;
+                       dai-tdm-slot-tx-mask-2 = <1 1>;
+                       dai-tdm-slot-tx-mask-3 = <1 1>;
+                       mclk-fs = <256>;
+
+                       codec {
+                               sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
+                       };
+               };
+
+               /* hdmi glue */
+               dai-link-4 {
+                       sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
+
+                       codec {
+                               sound-dai = <&hdmi_tx>;
+                       };
+               };
+       };
+};
+
+&arb {
+       status = "okay";
+};
+
+&clkc_audio {
+       status = "okay";
+};
+
+&cpu0 {
+       cpu-supply = <&vddcpu>;
+       operating-points-v2 = <&cpu_opp_table>;
+       clocks = <&clkc CLKID_CPU_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu1 {
+       cpu-supply = <&vddcpu>;
+       operating-points-v2 = <&cpu_opp_table>;
+       clocks = <&clkc CLKID_CPU1_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu2 {
+       cpu-supply = <&vddcpu>;
+       operating-points-v2 = <&cpu_opp_table>;
+       clocks = <&clkc CLKID_CPU2_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu3 {
+       cpu-supply = <&vddcpu>;
+       operating-points-v2 = <&cpu_opp_table>;
+       clocks = <&clkc CLKID_CPU3_CLK>;
+       clock-latency = <50000>;
+};
+
+&ext_mdio {
+       external_phy: ethernet-phy@0 {
+               /* Realtek RTL8211F (0x001cc916) */
+               reg = <0>;
+               max-speed = <1000>;
+
+               interrupt-parent = <&gpio_intc>;
+               /* MAC_INTR on GPIOZ_14 */
+               interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+&ethmac {
+       pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+       phy-mode = "rgmii";
+       phy-handle = <&external_phy>;
+       amlogic,tx-delay-ns = <2>;
+};
+
+&frddr_a {
+       status = "okay";
+};
+
+&frddr_b {
+       status = "okay";
+};
+
+&frddr_c {
+       status = "okay";
+};
+
+&gpio {
+       gpio-line-names =
+               /* GPIOZ */
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "",
+               /* GPIOH */
+               "", "", "", "", "",
+               "PIN_36", /* GPIOH_5 */
+               "PIN_26", /* GPIOH_6 */
+               "PIN_32", /* GPIOH_7 */
+               "",
+               /* BOOT */
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "",
+               /* GPIOC */
+               "", "", "", "", "", "", "", "",
+               /* GPIOA */
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "",
+               "PIN_27", /* GPIOA_14 */
+               "PIN_28", /* GPIOA_15 */
+               /* GPIOX */
+               "PIN_16", /* GPIOX_0 */
+               "PIN_18", /* GPIOX_1 */
+               "PIN_22", /* GPIOX_2 */
+               "PIN_11", /* GPIOX_3 */
+               "PIN_13", /* GPIOX_4 */
+               "PIN_7",  /* GPIOX_5 */
+               "PIN_33", /* GPIOX_6 */
+               "PIN_15", /* GPIOX_7 */
+               "PIN_19", /* GPIOX_8 */
+               "PIN_21", /* GPIOX_9 */
+               "PIN_24", /* GPIOX_10 */
+               "PIN_23", /* GPIOX_11 */
+               "PIN_8",  /* GPIOX_12 */
+               "PIN_10", /* GPIOX_13 */
+               "PIN_29", /* GPIOX_14 */
+               "PIN_31", /* GPIOX_15 */
+               "PIN_12", /* GPIOX_16 */
+               "PIN_3",  /* GPIOX_17 */
+               "PIN_5",  /* GPIOX_18 */
+               "PIN_35"; /* GPIOX_19 */
+};
+
+&gpio_ao {
+       gpio-line-names =
+               /* GPIOAO */
+               "", "", "", "",
+               "PIN_47", /* GPIOAO_4 */
+               "", "",
+               "PIN_45", /* GPIOAO_7 */
+               "PIN_46", /* GPIOAO_8 */
+               "PIN_44", /* GPIOAO_9 */
+               "PIN_42", /* GPIOAO_10 */
+               "",
+               /* GPIOE */
+               "", "", "";
+};
+
+&hdmi_tx {
+       status = "okay";
+       pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
+       pinctrl-names = "default";
+       hdmi-supply = <&vcc_5v>;
+};
+
+&hdmi_tx_tmds_port {
+       hdmi_tx_tmds_out: endpoint {
+               remote-endpoint = <&hdmi_connector_in>;
+       };
+};
+
+&ir {
+       status = "okay";
+       pinctrl-0 = <&remote_input_ao_pins>;
+       pinctrl-names = "default";
+};
+
+&pwm_AO_cd {
+       pinctrl-0 = <&pwm_ao_d_e_pins>;
+       pinctrl-names = "default";
+       clocks = <&xtal>;
+       clock-names = "clkin1";
+       status = "okay";
+};
+
+&saradc {
+       status = "okay";
+};
+
+/* SD card */
+&sd_emmc_b {
+       status = "okay";
+       pinctrl-0 = <&sdcard_c_pins>;
+       pinctrl-1 = <&sdcard_clk_gate_c_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <4>;
+       cap-sd-highspeed;
+       max-frequency = <200000000>;
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       disable-wp;
+
+       cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&tflash_vdd>;
+       vqmmc-supply = <&tf_io>;
+};
+
+/* eMMC */
+&sd_emmc_c {
+       status = "okay";
+       pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
+       pinctrl-1 = <&emmc_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+       max-frequency = <200000000>;
+       disable-wp;
+
+       mmc-pwrseq = <&emmc_pwrseq>;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&flash_1v8>;
+};
+
+&tdmif_b {
+       status = "okay";
+};
+
+&tdmout_b {
+       status = "okay";
+};
+
+&tohdmitx {
+       status = "okay";
+};
+
+&uart_AO {
+       status = "okay";
+       pinctrl-0 = <&uart_ao_a_pins>;
+       pinctrl-names = "default";
+};
+
+&usb {
+       status = "okay";
+       vbus-supply = <&usb_pwr_en>;
+};
+
+&usb2_phy0 {
+       phy-supply = <&vcc_5v>;
+};
+
index 5ab139a..2194a77 100644 (file)
                };
        };
 
-       leds {
+       led-controller-1 {
                compatible = "gpio-leds";
 
-               led-bluetooth {
+               led-1 {
                        label = "sei610:blue:bt";
                        gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
                        default-state = "off";
                };
        };
 
-       pwmleds {
+       led-controller-2 {
                compatible = "pwm-leds";
 
-               power {
+               led-2 {
                        label = "sei610:red:power";
                        pwms = <&pwm_AO_ab 0 30518 0>;
                        max-brightness = <255>;
 
        sound {
                compatible = "amlogic,axg-sound-card";
-               model = "SM1-SEI610";
+               model = "SEI610";
                audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
                                 <&tdmin_a>, <&tdmin_b>;
                audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
index ef26c23..ebebc0c 100644 (file)
@@ -1,2 +1,3 @@
 # SPDX-License-Identifier: GPL-2.0
+dtb-$(CONFIG_ARCH_BCM4908) += bcm4906-netgear-r8000p.dtb
 dtb-$(CONFIG_ARCH_BCM4908) += bcm4908-asus-gt-ac5300.dtb
diff --git a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts
new file mode 100644 (file)
index 0000000..ee3ed61
--- /dev/null
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+#include "bcm4906.dtsi"
+
+/ {
+       compatible = "netgear,r8000p", "brcm,bcm4906", "brcm,bcm4908";
+       model = "Netgear R8000P";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x00 0x00 0x00 0x20000000>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               wps {
+                       function = LED_FUNCTION_WPS;
+                       color = <LED_COLOR_ID_WHITE>;
+                       gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&nandcs {
+       nand-ecc-strength = <4>;
+       nand-ecc-step-size = <512>;
+       nand-on-flash-bbt;
+
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "cferom";
+                       reg = <0x0 0x100000>;
+               };
+
+               partition@100000 {
+                       label = "firmware";
+                       reg = <0x100000 0x4400000>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906.dtsi b/arch/arm64/boot/dts/broadcom/bcm4908/bcm4906.dtsi
new file mode 100644 (file)
index 0000000..66023d5
--- /dev/null
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "bcm4908.dtsi"
+
+/ {
+       cpus {
+               /delete-node/ cpu@2;
+
+               /delete-node/ cpu@3;
+       };
+
+       pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>;
+       };
+};
index 13c6b86..6e4ad66 100644 (file)
        };
 };
 
+&ports {
+       port@0 {
+               label = "lan2";
+       };
+
+       port@1 {
+               label = "lan1";
+       };
+
+       port@2 {
+               label = "lan6";
+       };
+
+       port@3 {
+               label = "lan5";
+       };
+
+       /* External BCM53134S switch */
+       port@7 {
+               label = "sw";
+               reg = <7>;
+
+               fixed-link {
+                       speed = <1000>;
+                       full-duplex;
+               };
+       };
+};
+
+&mdio {
+       /* lan8 */
+       ethernet-phy@0 {
+               reg = <0>;
+       };
+
+       /* lan7 */
+       ethernet-phy@1 {
+               reg = <1>;
+       };
+
+       /* lan4 */
+       ethernet-phy@2 {
+               reg = <2>;
+       };
+
+       /* lan3 */
+       ethernet-phy@3 {
+               reg = <3>;
+       };
+};
+
 &nandcs {
        nand-ecc-strength = <4>;
        nand-ecc-step-size = <512>;
index f873dc4..9354077 100644 (file)
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
-               ranges = <0x00 0x00 0x80000000 0x10000>;
+               ranges = <0x00 0x00 0x80000000 0x281000>;
 
                usb@c300 {
                        compatible = "generic-ehci";
                        interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
+
+               ethernet-switch@80000 {
+                       compatible = "simple-bus";
+                       #size-cells = <1>;
+                       #address-cells = <1>;
+                       ranges = <0 0x80000 0x50000>;
+
+                       ethernet-switch@0 {
+                               compatible = "brcm,bcm4908-switch";
+                               reg = <0x0 0x40000>,
+                                     <0x40000 0x110>,
+                                     <0x40340 0x30>,
+                                     <0x40380 0x30>,
+                                     <0x40600 0x34>,
+                                     <0x40800 0x208>;
+                               reg-names = "core", "reg", "intrl2_0",
+                                           "intrl2_1", "fcb", "acb";
+                               interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
+                               brcm,num-gphy = <5>;
+                               brcm,num-rgmii-ports = <2>;
+
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               ports: ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+                                               phy-mode = "internal";
+                                               phy-handle = <&phy8>;
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               phy-mode = "internal";
+                                               phy-handle = <&phy9>;
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+                                               phy-mode = "internal";
+                                               phy-handle = <&phy10>;
+                                       };
+
+                                       port@3 {
+                                               reg = <3>;
+                                               phy-mode = "internal";
+                                               phy-handle = <&phy11>;
+                                       };
+                               };
+                       };
+
+                       mdio: mdio@405c0 {
+                               compatible = "brcm,unimac-mdio";
+                               reg = <0x405c0 0x8>;
+                               reg-names = "mdio";
+                               #size-cells = <0>;
+                               #address-cells = <1>;
+
+                               phy8: ethernet-phy@8 {
+                                       reg = <8>;
+                               };
+
+                               phy9: ethernet-phy@9 {
+                                       reg = <9>;
+                               };
+
+                               phy10: ethernet-phy@a {
+                                       reg = <10>;
+                               };
+
+                               phy11: ethernet-phy@b {
+                                       reg = <11>;
+                               };
+
+                               phy12: ethernet-phy@c {
+                                       reg = <12>;
+                               };
+                       };
+               };
+
+               procmon: syscon@280000 {
+                       compatible = "simple-bus";
+                       reg = <0x280000 0x1000>;
+                       ranges;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       power-controller@2800c0 {
+                               compatible = "brcm,bcm4908-pmb";
+                               reg = <0x2800c0 0x40>;
+                               #power-domain-cells = <1>;
+                       };
+               };
        };
 
        bus@ff800000 {
                nand@1800 {
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       compatible = "brcm,brcmnand-v7.1", "brcm,brcmnand";
+                       compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.1", "brcm,brcmnand";
                        reg = <0x1800 0x600>, <0x2000 0x10>;
                        reg-names = "nand", "nand-int-base";
                        interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
                        };
                };
 
+               misc@2600 {
+                       compatible = "brcm,misc", "simple-mfd";
+                       reg = <0x2600 0xe4>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x00 0x2600 0xe4>;
+
+                       reset-controller@2644 {
+                               compatible = "brcm,bcm4908-misc-pcie-reset";
+                               reg = <0x44 0x04>;
+                               #reset-cells = <1>;
+                       };
+               };
+
                reboot {
                        compatible = "syscon-reboot";
                        regmap = <&timer>;
index 43aa5e9..8fe7325 100644 (file)
        };
 };
 
-&sata0 {
-       status = "okay";
-};
-
-&sata_phy0{
-       status = "okay";
-};
-
-&sata1 {
-       status = "okay";
-};
-
-&sata_phy1{
-       status = "okay";
-};
-
-&sata2 {
-       status = "okay";
-};
-
-&sata_phy2{
-       status = "okay";
-};
-
-&sata3 {
-       status = "okay";
-};
-
-&sata_phy3{
-       status = "okay";
-};
-
-&sata4 {
-       status = "okay";
-};
-
-&sata_phy4{
-       status = "okay";
-};
-
-&sata5 {
-       status = "okay";
-};
-
-&sata_phy5{
-       status = "okay";
-};
-
-&sata6 {
-       status = "okay";
-};
-
-&sata_phy6{
-       status = "okay";
-};
-
-&sata7 {
-       status = "okay";
-};
-
-&sata_phy7{
-       status = "okay";
-};
-
 &pwm {
        status = "okay";
 };
diff --git a/arch/arm64/boot/dts/broadcom/stingray/stingray-sata.dtsi b/arch/arm64/boot/dts/broadcom/stingray/stingray-sata.dtsi
deleted file mode 100644 (file)
index 8c68e0c..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- *  BSD LICENSE
- *
- *  Copyright(c) 2016-2017 Broadcom.  All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions
- *  are met:
- *
- *    * Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.
- *    * Redistributions in binary form must reproduce the above copyright
- *      notice, this list of conditions and the following disclaimer in
- *      the documentation and/or other materials provided with the
- *      distribution.
- *    * Neither the name of Broadcom nor the names of its
- *      contributors may be used to endorse or promote products derived
- *      from this software without specific prior written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-       sata {
-               compatible = "simple-bus";
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges = <0x0 0x0 0x67d00000 0x00800000>;
-
-               sata0: ahci@0 {
-                       compatible = "brcm,iproc-ahci", "generic-ahci";
-                       reg = <0x00000000 0x1000>;
-                       reg-names = "ahci";
-                       interrupts = <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata0_port0: sata-port@0 {
-                               reg = <0>;
-                               phys = <&sata0_phy0>;
-                               phy-names = "sata-phy";
-                       };
-               };
-
-               sata_phy0: sata_phy@2100 {
-                       compatible = "brcm,iproc-sr-sata-phy";
-                       reg = <0x00002100 0x1000>;
-                       reg-names = "phy";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata0_phy0: sata-phy@0 {
-                               reg = <0>;
-                               #phy-cells = <0>;
-                       };
-               };
-
-               sata1: ahci@10000 {
-                       compatible = "brcm,iproc-ahci", "generic-ahci";
-                       reg = <0x00010000 0x1000>;
-                       reg-names = "ahci";
-                       interrupts = <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata1_port0: sata-port@0 {
-                               reg = <0>;
-                               phys = <&sata1_phy0>;
-                               phy-names = "sata-phy";
-                       };
-               };
-
-               sata_phy1: sata_phy@12100 {
-                       compatible = "brcm,iproc-sr-sata-phy";
-                       reg = <0x00012100 0x1000>;
-                       reg-names = "phy";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata1_phy0: sata-phy@0 {
-                               reg = <0>;
-                               #phy-cells = <0>;
-                       };
-               };
-
-               sata2: ahci@20000 {
-                       compatible = "brcm,iproc-ahci", "generic-ahci";
-                       reg = <0x00020000 0x1000>;
-                       reg-names = "ahci";
-                       interrupts = <GIC_SPI 325 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata2_port0: sata-port@0 {
-                               reg = <0>;
-                               phys = <&sata2_phy0>;
-                               phy-names = "sata-phy";
-                       };
-               };
-
-               sata_phy2: sata_phy@22100 {
-                       compatible = "brcm,iproc-sr-sata-phy";
-                       reg = <0x00022100 0x1000>;
-                       reg-names = "phy";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata2_phy0: sata-phy@0 {
-                               reg = <0>;
-                               #phy-cells = <0>;
-                       };
-               };
-
-               sata3: ahci@30000 {
-                       compatible = "brcm,iproc-ahci", "generic-ahci";
-                       reg = <0x00030000 0x1000>;
-                       reg-names = "ahci";
-                       interrupts = <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata3_port0: sata-port@0 {
-                               reg = <0>;
-                               phys = <&sata3_phy0>;
-                               phy-names = "sata-phy";
-                       };
-               };
-
-               sata_phy3: sata_phy@32100 {
-                       compatible = "brcm,iproc-sr-sata-phy";
-                       reg = <0x00032100 0x1000>;
-                       reg-names = "phy";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata3_phy0: sata-phy@0 {
-                               reg = <0>;
-                               #phy-cells = <0>;
-                       };
-               };
-
-               sata4: ahci@100000 {
-                       compatible = "brcm,iproc-ahci", "generic-ahci";
-                       reg = <0x00100000 0x1000>;
-                       reg-names = "ahci";
-                       interrupts = <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata4_port0: sata-port@0 {
-                               reg = <0>;
-                               phys = <&sata4_phy0>;
-                               phy-names = "sata-phy";
-                       };
-               };
-
-               sata_phy4: sata_phy@102100 {
-                       compatible = "brcm,iproc-sr-sata-phy";
-                       reg = <0x00102100 0x1000>;
-                       reg-names = "phy";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata4_phy0: sata-phy@0 {
-                               reg = <0>;
-                               #phy-cells = <0>;
-                       };
-               };
-
-               sata5: ahci@110000 {
-                       compatible = "brcm,iproc-ahci", "generic-ahci";
-                       reg = <0x00110000 0x1000>;
-                       reg-names = "ahci";
-                       interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata5_port0: sata-port@0 {
-                               reg = <0>;
-                               phys = <&sata5_phy0>;
-                               phy-names = "sata-phy";
-                       };
-               };
-
-               sata_phy5: sata_phy@112100 {
-                       compatible = "brcm,iproc-sr-sata-phy";
-                       reg = <0x00112100 0x1000>;
-                       reg-names = "phy";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata5_phy0: sata-phy@0 {
-                               reg = <0>;
-                               #phy-cells = <0>;
-                       };
-               };
-
-               sata6: ahci@120000 {
-                       compatible = "brcm,iproc-ahci", "generic-ahci";
-                       reg = <0x00120000 0x1000>;
-                       reg-names = "ahci";
-                       interrupts = <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata6_port0: sata-port@0 {
-                               reg = <0>;
-                               phys = <&sata6_phy0>;
-                               phy-names = "sata-phy";
-                       };
-               };
-
-               sata_phy6: sata_phy@122100 {
-                       compatible = "brcm,iproc-sr-sata-phy";
-                       reg = <0x00122100 0x1000>;
-                       reg-names = "phy";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata6_phy0: sata-phy@0 {
-                               reg = <0>;
-                               #phy-cells = <0>;
-                       };
-               };
-
-               sata7: ahci@130000 {
-                       compatible = "brcm,iproc-ahci", "generic-ahci";
-                       reg = <0x00130000 0x1000>;
-                       reg-names = "ahci";
-                       interrupts = <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata7_port0: sata-port@0 {
-                               reg = <0>;
-                               phys = <&sata7_phy0>;
-                               phy-names = "sata-phy";
-                       };
-               };
-
-               sata_phy7: sata_phy@132100 {
-                       compatible = "brcm,iproc-sr-sata-phy";
-                       reg = <0x00132100 0x1000>;
-                       reg-names = "phy";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata7_phy0: sata-phy@0 {
-                               reg = <0>;
-                               #phy-cells = <0>;
-                       };
-               };
-       };
index b425b12..2ffb2c9 100644 (file)
        };
 
        #include "stingray-fs4.dtsi"
-       #include "stingray-sata.dtsi"
        #include "stingray-pcie.dtsi"
        #include "stingray-usb.dtsi"
 
                                #size-cells = <0>;
                        };
 
-                       mdio@2 { /* SATA */
-                               reg = <0x2>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                       };
-
                        mdio@3 { /* USB */
                                reg = <0x3>;
                                #address-cells = <1>;
index 03486a8..413cac6 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 695d4c1..125c03f 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 49c19c6..cab89dc 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 85b0dfb..8830795 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 81d0943..a83b9d4 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 c6580c9..d426c6c 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 d456b0a..77bd8c3 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 405acaa..4aed8d4 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 7980709..7deca5f 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 7832d9c..2172d80 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 296ecee..3a05254 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 daffe13..5fc613d 100644 (file)
@@ -67,8 +67,6 @@
 /* J6 */
 &sata {
        status = "okay";
-       phys = <&comphy2 0>;
-       phy-names = "sata-phy";
 };
 
 /* U11 */
index f5ec3b6..d239ab7 100644 (file)
                        };
 
                        partition@20000 {
-                               label = "u-boot";
+                               label = "a53-firmware";
                                reg = <0x20000 0x160000>;
                        };
 
index d5b6c0a..7a2df14 100644 (file)
                                reg = <0xe0000 0x178>;
                                interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&nb_periph_clk 1>;
+                               phys = <&comphy2 0>;
+                               phy-names = "sata-phy";
                                status = "disabled";
                        };
 
index 623010f..d9bbbfa 100644 (file)
@@ -27,3 +27,8 @@
                #clock-cells = <1>;
        };
 };
+
+&ap_sdhci0 {
+       compatible = "marvell,armada-ap807-sdhci";
+};
+
index 12e477f..6614472 100644 (file)
                                        gpio-controller;
                                        #gpio-cells = <2>;
                                        gpio-ranges = <&ap_pinctrl 0 0 20>;
+                                       marvell,pwm-offset = <0x10c0>;
+                                       #pwm-cells = <2>;
+                                       clocks = <&ap_clk 3>;
                                };
                        };
 
index 994a2fc..d774a39 100644 (file)
                                gpio-controller;
                                #gpio-cells = <2>;
                                gpio-ranges = <&CP11X_LABEL(pinctrl) 0 0 32>;
+                               marvell,pwm-offset = <0x1f0>;
+                               #pwm-cells = <2>;
                                interrupt-controller;
                                interrupts = <86 IRQ_TYPE_LEVEL_HIGH>,
                                        <85 IRQ_TYPE_LEVEL_HIGH>,
                                        <84 IRQ_TYPE_LEVEL_HIGH>,
                                        <83 IRQ_TYPE_LEVEL_HIGH>;
                                #interrupt-cells = <2>;
+                               clock-names = "core", "axi";
+                               clocks = <&CP11X_LABEL(clk) 1 21>,
+                                        <&CP11X_LABEL(clk) 1 17>;
                                status = "disabled";
                        };
 
                                gpio-controller;
                                #gpio-cells = <2>;
                                gpio-ranges = <&CP11X_LABEL(pinctrl) 0 32 31>;
+                               marvell,pwm-offset = <0x1f0>;
+                               #pwm-cells = <2>;
                                interrupt-controller;
                                interrupts = <82 IRQ_TYPE_LEVEL_HIGH>,
                                        <81 IRQ_TYPE_LEVEL_HIGH>,
                                        <80 IRQ_TYPE_LEVEL_HIGH>,
                                        <79 IRQ_TYPE_LEVEL_HIGH>;
                                #interrupt-cells = <2>;
+                               clock-names = "core", "axi";
+                               clocks = <&CP11X_LABEL(clk) 1 21>,
+                                        <&CP11X_LABEL(clk) 1 17>;
                                status = "disabled";
                        };
                };
index ce49a70..79020e6 100644 (file)
 &ap_sdhci0 {
        pinctrl-names = "default";
        bus-width = <8>;
+       mmc-ddr-1_8v;
+       mmc-hs400-1_8v;
        vqmmc-supply = <&ap0_reg_sd_vccq>;
        status = "okay";
 };
index 18f7b46..deba27a 100644 (file)
@@ -13,6 +13,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt8173-elm-hana.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8173-elm-hana-rev7.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8173-evb.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8183-evb.dtb
+dtb-$(CONFIG_ARCH_MEDIATEK) += mt8183-kukui-krane-sku0.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8183-kukui-krane-sku176.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8192-evb.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8516-pumpkin.dtb
index 370f309..9bdf514 100644 (file)
                        #clock-cells = <1>;
                };
 
+               pwrap: pwrap@1000d000 {
+                       compatible = "mediatek,mt6779-pwrap";
+                       reg = <0 0x1000d000 0 0x1000>;
+                       reg-names = "pwrap";
+                       interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk26m>, <&infracfg_ao CLK_INFRA_PMIC_AP>;
+                       clock-names = "spi", "wrap";
+               };
+
+               devapc: devapc@10207000 {
+                       compatible = "mediatek,mt6779-devapc";
+                       reg = <0 0x10207000 0 0x1000>;
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_LOW>;
+                       clocks = <&infracfg_ao CLK_INFRA_DEVICE_APC>;
+                       clock-names = "devapc-infra-clock";
+               };
+
                uart0: serial@11002000 {
                        compatible = "mediatek,mt6779-uart",
                                     "mediatek,mt6577-uart";
index 5b9ec03..7c6d871 100644 (file)
                clocks = <&pericfg CLK_PERI_MSDC30_1_PD>,
                         <&topckgen CLK_TOP_AXI_SEL>;
                clock-names = "source", "hclk";
+               resets = <&pericfg MT7622_PERI_MSDC1_SW_RST>;
+               reset-names = "hrst";
                status = "disabled";
        };
 
index cba2d89..3249c95 100644 (file)
                        bias-disable;
                };
        };
+
+       pwm_pins_1: pwm1 {
+               pins_pwm {
+                       pinmux = <PINMUX_GPIO90__FUNC_PWM_A>;
+               };
+       };
 };
 
 &spi0 {
 &uart0 {
        status = "okay";
 };
+
+&pwm1 {
+       status = "okay";
+       pinctrl-0 = <&pwm_pins_1>;
+       pinctrl-names = "default";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui-krane-sku0.dts b/arch/arm64/boot/dts/mediatek/mt8183-kukui-krane-sku0.dts
new file mode 100644 (file)
index 0000000..fb5ee91
--- /dev/null
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Device-tree for Krane sku0.
+ *
+ * SKU is a 8-bit value (0x00 == 0):
+ *  - Bits 7..4: Panel ID: 0x0 (AUO)
+ *  - Bits 3..0: SKU ID:   0x0 (default)
+ */
+
+/dts-v1/;
+#include "mt8183-kukui-krane.dtsi"
+
+/ {
+       model = "MediaTek krane sku0 board";
+       compatible = "google,krane-sku0", "google,krane", "mediatek,mt8183";
+};
+
+&panel {
+       status = "okay";
+       compatible = "auo,kd101n80-45na";
+};
index 47113e2..721d16f 100644 (file)
@@ -16,3 +16,8 @@
        model = "MediaTek krane sku176 board";
        compatible = "google,krane-sku176", "google,krane", "mediatek,mt8183";
 };
+
+&panel {
+        status = "okay";
+        compatible = "boe,tv101wum-nl6";
+};
index bf2ad12..ff56bcf 100644 (file)
        proc-supply = <&mt6358_vproc11_reg>;
 };
 
+&dsi0 {
+       status = "okay";
+       #address-cells = <1>;
+       #size-cells = <0>;
+       panel: panel@0 {
+               /* compatible will be set in board dts */
+               reg = <0>;
+               enable-gpios = <&pio 45 0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&panel_pins_default>;
+               avdd-supply = <&ppvarn_lcd>;
+               avee-supply = <&ppvarp_lcd>;
+               pp1800-supply = <&pp1800_lcd>;
+               backlight = <&backlight_lcd0>;
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&dsi_out>;
+                       };
+               };
+       };
+
+       ports {
+               port {
+                       dsi_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+};
+
 &i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0_pins>;
        clock-frequency = <100000>;
 };
 
+&mipi_tx0 {
+       status = "okay";
+};
+
 &mmc0 {
        status = "okay";
        pinctrl-names = "default", "state_uhs";
                };
        };
 
+       panel_pins_default: panel_pins_default {
+               panel_reset {
+                       pinmux = <PINMUX_GPIO45__FUNC_GPIO45>;
+                       output-low;
+                       bias-pull-up;
+               };
+       };
+
        pwm0_pin_default: pwm0_pin_default {
                pins1 {
                        pinmux = <PINMUX_GPIO176__FUNC_GPIO176>;
        };
 };
 
+&mfg {
+       domain-supply = <&mt6358_vgpu_reg>;
+};
+
 &soc_data {
        status = "okay";
 };
index 5b782a4..80519a1 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include <dt-bindings/clock/mt8183-clk.h>
-#include <dt-bindings/gce/mt8173-gce.h>
+#include <dt-bindings/gce/mt8183-gce.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/memory/mt8183-larb-port.h>
                                        #size-cells = <0>;
                                        #power-domain-cells = <1>;
 
-                                       power-domain@MT8183_POWER_DOMAIN_MFG {
+                                       mfg: power-domain@MT8183_POWER_DOMAIN_MFG {
                                                reg = <MT8183_POWER_DOMAIN_MFG>;
                                                #address-cells = <1>;
                                                #size-cells = <0>;
                        compatible = "mediatek,mt8183-disp-pwm";
                        reg = <0 0x1100e000 0 0x1000>;
                        interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
                        #pwm-cells = <2>;
                        clocks = <&topckgen CLK_TOP_MUX_DISP_PWM>,
                                        <&infracfg CLK_INFRA_DISP_PWM>;
                        clock-names = "main", "mm";
                };
 
+               pwm1: pwm@11006000 {
+                       compatible = "mediatek,mt8183-pwm";
+                       reg = <0 0x11006000 0 0x1000>;
+                       #pwm-cells = <2>;
+                       clocks = <&infracfg CLK_INFRA_PWM>,
+                                <&infracfg CLK_INFRA_PWM_HCLK>,
+                                <&infracfg CLK_INFRA_PWM1>,
+                                <&infracfg CLK_INFRA_PWM2>,
+                                <&infracfg CLK_INFRA_PWM3>,
+                                <&infracfg CLK_INFRA_PWM4>;
+                       clock-names = "top", "main", "pwm1", "pwm2", "pwm3",
+                                     "pwm4";
+               };
+
                i2c3: i2c@1100f000 {
                        compatible = "mediatek,mt8183-i2c";
                        reg = <0 0x1100f000 0 0x1000>,
                        clocks = <&mmsys CLK_MM_DISP_RDMA0>;
                        iommus = <&iommu M4U_PORT_DISP_RDMA0>;
                        mediatek,larb = <&larb0>;
-                       mediatek,rdma_fifo_size = <5120>;
+                       mediatek,rdma-fifo-size = <5120>;
                        mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0xb000 0x1000>;
                };
 
                        clocks = <&mmsys CLK_MM_DISP_RDMA1>;
                        iommus = <&iommu M4U_PORT_DISP_RDMA1>;
                        mediatek,larb = <&larb0>;
-                       mediatek,rdma_fifo_size = <2048>;
+                       mediatek,rdma-fifo-size = <2048>;
                        mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0xc000 0x1000>;
                };
 
                };
 
                gamma0: gamma@14011000 {
-                       compatible = "mediatek,mt8183-disp-gamma",
-                                    "mediatek,mt8173-disp-gamma";
+                       compatible = "mediatek,mt8183-disp-gamma";
                        reg = <0 0x14011000 0 0x1000>;
                        interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_LOW>;
                        power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
index e12e024..9757138 100644 (file)
@@ -39,6 +39,7 @@
                        reg = <0x000>;
                        enable-method = "psci";
                        clock-frequency = <1701000000>;
+                       cpu-idle-states = <&cpuoff_l &clusteroff_l>;
                        next-level-cache = <&l2_0>;
                        capacity-dmips-mhz = <530>;
                };
@@ -49,6 +50,7 @@
                        reg = <0x100>;
                        enable-method = "psci";
                        clock-frequency = <1701000000>;
+                       cpu-idle-states = <&cpuoff_l &clusteroff_l>;
                        next-level-cache = <&l2_0>;
                        capacity-dmips-mhz = <530>;
                };
@@ -59,6 +61,7 @@
                        reg = <0x200>;
                        enable-method = "psci";
                        clock-frequency = <1701000000>;
+                       cpu-idle-states = <&cpuoff_l &clusteroff_l>;
                        next-level-cache = <&l2_0>;
                        capacity-dmips-mhz = <530>;
                };
@@ -69,6 +72,7 @@
                        reg = <0x300>;
                        enable-method = "psci";
                        clock-frequency = <1701000000>;
+                       cpu-idle-states = <&cpuoff_l &clusteroff_l>;
                        next-level-cache = <&l2_0>;
                        capacity-dmips-mhz = <530>;
                };
@@ -79,6 +83,7 @@
                        reg = <0x400>;
                        enable-method = "psci";
                        clock-frequency = <2171000000>;
+                       cpu-idle-states = <&cpuoff_b &clusteroff_b>;
                        next-level-cache = <&l2_1>;
                        capacity-dmips-mhz = <1024>;
                };
@@ -89,6 +94,7 @@
                        reg = <0x500>;
                        enable-method = "psci";
                        clock-frequency = <2171000000>;
+                       cpu-idle-states = <&cpuoff_b &clusteroff_b>;
                        next-level-cache = <&l2_1>;
                        capacity-dmips-mhz = <1024>;
                };
                        reg = <0x600>;
                        enable-method = "psci";
                        clock-frequency = <2171000000>;
+                       cpu-idle-states = <&cpuoff_b &clusteroff_b>;
                        next-level-cache = <&l2_1>;
                        capacity-dmips-mhz = <1024>;
                };
                        reg = <0x700>;
                        enable-method = "psci";
                        clock-frequency = <2171000000>;
+                       cpu-idle-states = <&cpuoff_b &clusteroff_b>;
                        next-level-cache = <&l2_1>;
                        capacity-dmips-mhz = <1024>;
                };
                l3_0: l3-cache {
                        compatible = "cache";
                };
+
+               idle-states {
+                       entry-method = "arm,psci";
+                       cpuoff_l: cpuoff_l {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x00010001>;
+                               local-timer-stop;
+                               entry-latency-us = <55>;
+                               exit-latency-us = <140>;
+                               min-residency-us = <780>;
+                       };
+                       cpuoff_b: cpuoff_b {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x00010001>;
+                               local-timer-stop;
+                               entry-latency-us = <35>;
+                               exit-latency-us = <145>;
+                               min-residency-us = <720>;
+                       };
+                       clusteroff_l: clusteroff_l {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x01010002>;
+                               local-timer-stop;
+                               entry-latency-us = <60>;
+                               exit-latency-us = <155>;
+                               min-residency-us = <860>;
+                       };
+                       clusteroff_b: clusteroff_b {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x01010002>;
+                               local-timer-stop;
+                               entry-latency-us = <40>;
+                               exit-latency-us = <155>;
+                               min-residency-us = <780>;
+                       };
+               };
        };
 
        pmu-a55 {
                        status = "disabled";
                };
 
+               nor_flash: spi@11234000 {
+                       compatible = "mediatek,mt8192-nor";
+                       reg = <0 0x11234000 0 0xe0>;
+                       interrupts = <GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&clk26m>,
+                                <&clk26m>,
+                                <&clk26m>;
+                       clock-names = "spi", "sf", "axi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disable";
+               };
+
                i2c3: i2c3@11cb0000 {
                        compatible = "mediatek,mt8192-i2c";
                        reg = <0 0x11cb0000 0 0x1000>,
index e6e4d9d..b80e955 100644 (file)
                                (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
                };
 
+               apdma: dma-controller@11000480 {
+                       compatible = "mediatek,mt8516-uart-dma",
+                                    "mediatek,mt6577-uart-dma";
+                       reg = <0 0x11000480 0 0x80>,
+                             <0 0x11000500 0 0x80>,
+                             <0 0x11000580 0 0x80>,
+                             <0 0x11000600 0 0x80>,
+                             <0 0x11000980 0 0x80>,
+                             <0 0x11000a00 0 0x80>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>,
+                                    <GIC_SPI 97 IRQ_TYPE_LEVEL_LOW>,
+                                    <GIC_SPI 98 IRQ_TYPE_LEVEL_LOW>,
+                                    <GIC_SPI 99 IRQ_TYPE_LEVEL_LOW>,
+                                    <GIC_SPI 100 IRQ_TYPE_LEVEL_LOW>,
+                                    <GIC_SPI 101 IRQ_TYPE_LEVEL_LOW>;
+                       dma-requests = <6>;
+                       clocks = <&topckgen CLK_TOP_APDMA>;
+                       clock-names = "apdma";
+                       #dma-cells = <1>;
+               };
+
                uart0: serial@11005000 {
                        compatible = "mediatek,mt8516-uart",
                                     "mediatek,mt6577-uart";
                        clocks = <&topckgen CLK_TOP_UART0_SEL>,
                                 <&topckgen CLK_TOP_UART0>;
                        clock-names = "baud", "bus";
+                       dmas = <&apdma 0
+                               &apdma 1>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        clocks = <&topckgen CLK_TOP_UART1_SEL>,
                                 <&topckgen CLK_TOP_UART1>;
                        clock-names = "baud", "bus";
+                       dmas = <&apdma 2
+                               &apdma 3>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        clocks = <&topckgen CLK_TOP_UART2_SEL>,
                                 <&topckgen CLK_TOP_UART2>;
                        clock-names = "baud", "bus";
+                       dmas = <&apdma 4
+                               &apdma 5>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
index 9296d12..e13fb10 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 6fd2e05..9f5f5e1 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 58c5196..02b26b3 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 d71b7a1..7e7b0eb 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 54d057b..2888efc 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 7f97b34..1c3874b 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 0dc8304..7da3d48 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 25f36d6..9449156 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 69102dc..497635a 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 6a877de..14c128a 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 4fbf8c1..26b3f98 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 3b8b037..f2de2fa 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 e66b5b3..30c169b 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 8ac167a..8d3a4d6 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 2eda9f6..7a3da9b 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 2c5b057..501cb05 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 d37ec42..d64fb8b 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 8352391..5b05474 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 e0e5434..20fa3ca 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 1333b02..8eb006c 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 9d60bcf..5c39152 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 53b9aa2..25d947a 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 4b737c6..e8c31eb 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 4a913df..657b20d 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 422ec53..04d47c0 100644 (file)
        vqmmc-supply = <&vddq_vin01>;
        mmc-hs200-1_8v;
        bus-width = <8>;
+       no-sd;
+       no-sdio;
        non-removable;
        status = "okay";
 };
index e0ccca2..f74f8b9 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 87d41bc..5010f23 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 8f47188..6783c3a 100644 (file)
        vqmmc-supply = <&reg_1p8v>;
        bus-width = <8>;
        mmc-hs200-1_8v;
+       no-sd;
+       no-sdio;
        non-removable;
        status = "okay";
 };
index e1af7c4..2319271 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 4ba269a..fa284a7 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 8eda70e..5617b81 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 6cf77ce..dfd6ae8 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 6c643ed..c22bb38 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 8f8d737..a04eae5 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 addeb0e..4bb5d65 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 15625b9..0949ace 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 12591a8..ceb579f 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 d84c0bc..a9fc1af 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 331b388..4a7182a 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 b009421..17477ab 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 bb1fe9c..359e3e8 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 7b5e9aa..a988e2a 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 66169bc..b7005b8 100644 (file)
        };
 
        pmu: pmu {
-               compatible = "arm,armv8-pmuv3";
+               compatible = "arm,cortex-a72-pmu";
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
        };
 
index b32df59..8c84daf 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 cc483f7..f0587fd 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 ed0bf7f..37da418 100644 (file)
@@ -41,3 +41,8 @@
        clocks = <&uart_clk>;
        clock-names = "apb_pclk";
 };
+
+&wdt {
+       status = "okay";
+       clocks = <&wdt_clk>;
+};
index 242f25f..c360e68 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 60f5443..11fb4fd 100644 (file)
@@ -13,5 +13,6 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-revA.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-revB.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-rev1.0.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu104-revA.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu104-revC.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu106-revA.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu111-revA.dtb
index c94c3bb..cf52952 100644 (file)
        clocks = <&zynqmp_clk ADMA_REF>, <&zynqmp_clk LPD_LSBUS>;
 };
 
+&nand0 {
+       clocks = <&zynqmp_clk NAND_REF>, <&zynqmp_clk LPD_LSBUS>;
+};
+
 &gem0 {
        clocks = <&zynqmp_clk LPD_LSBUS>, <&zynqmp_clk GEM0_REF>,
                 <&zynqmp_clk GEM0_TX>, <&zynqmp_clk GEM0_RX>,
        clocks = <&zynqmp_clk PCIE_REF>;
 };
 
+&qspi {
+       clocks = <&zynqmp_clk QSPI_REF>, <&zynqmp_clk LPD_LSBUS>;
+};
+
 &sata {
        clocks = <&zynqmp_clk SATA_REF>;
 };
 &watchdog0 {
        clocks = <&zynqmp_clk WDT>;
 };
+
+&lpd_watchdog {
+       clocks = <&zynqmp_clk LPD_WDT>;
+};
+
+&zynqmp_dpdma {
+       clocks = <&zynqmp_clk DPDMA_REF>;
+};
+
+&zynqmp_dpsub {
+       clocks = <&zynqmp_clk TOPSW_LSBUS>,
+                <&zynqmp_clk DP_AUDIO_REF>,
+                <&zynqmp_clk DP_VIDEO_REF>;
+};
index 68ecd0f..a53598c 100644 (file)
@@ -15,6 +15,7 @@
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/phy/phy.h>
 
 / {
        model = "ZynqMP ZCU100 RevC";
                compatible = "iio-hwmon";
                io-channels = <&u35 0>, <&u35 1>, <&u35 2>, <&u35 3>;
        };
+
+       si5335a_0: clk26 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <26000000>;
+       };
+
+       si5335a_1: clk27 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <27000000>;
+       };
 };
 
 &dcc {
        };
 };
 
+&psgtr {
+       status = "okay";
+       /* usb3, dps */
+       clocks = <&si5335a_0>, <&si5335a_1>;
+       clock-names = "ref0", "ref1";
+};
+
 &rtc {
        status = "okay";
 };
        status = "okay";
        no-1-8-v;
        disable-wp;
+       xlnx,mio-bank = <0>;
 };
 
 &sdhci1 {
        status = "okay";
        bus-width = <0x4>;
+       xlnx,mio-bank = <0>;
        non-removable;
        disable-wp;
        cap-power-off-card;
 &watchdog0 {
        status = "okay";
 };
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&zynqmp_dpsub {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 1>,
+              <&psgtr 0 PHY_TYPE_DP 1 1>;
+};
index f1255f6..12e8bd4 100644 (file)
@@ -13,6 +13,7 @@
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/phy/phy.h>
 
 / {
        model = "ZynqMP ZCU102 RevA";
                compatible = "iio-hwmon";
                io-channels = <&u75 0>, <&u75 1>, <&u75 2>, <&u75 3>;
        };
+
+       /* 48MHz reference crystal */
+       ref48: ref48M {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <48000000>;
+       };
+
+       refhdmi: refhdmi {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <114285000>;
+       };
 };
 
 &can1 {
                        #size-cells = <0>;
                        reg = <1>;
                        si5341: clock-generator@36 { /* SI5341 - u69 */
+                               compatible = "silabs,si5341";
                                reg = <0x36>;
+                               #clock-cells = <2>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&ref48>;
+                               clock-names = "xtal";
+                               clock-output-names = "si5341";
+
+                               si5341_0: out@0 {
+                                       /* refclk0 for PS-GT, used for DP */
+                                       reg = <0>;
+                                       always-on;
+                               };
+                               si5341_2: out@2 {
+                                       /* refclk2 for PS-GT, used for USB3 */
+                                       reg = <2>;
+                                       always-on;
+                               };
+                               si5341_3: out@3 {
+                                       /* refclk3 for PS-GT, used for SATA */
+                                       reg = <3>;
+                                       always-on;
+                               };
+                               si5341_4: out@4 {
+                                       /* refclk4 for PS-GT, used for PCIE slot */
+                                       reg = <4>;
+                                       always-on;
+                               };
+                               si5341_5: out@5 {
+                                       /* refclk5 for PS-GT, used for PCIE */
+                                       reg = <5>;
+                                       always-on;
+                               };
+                               si5341_6: out@6 {
+                                       /* refclk6 PL CLK125 */
+                                       reg = <6>;
+                                       always-on;
+                               };
+                               si5341_7: out@7 {
+                                       /* refclk7 PL CLK74 */
+                                       reg = <7>;
+                                       always-on;
+                               };
+                               si5341_9: out@9 {
+                                       /* refclk9 used for PS_REF_CLK 33.3 MHz */
+                                       reg = <9>;
+                                       always-on;
+                               };
                        };
-
                };
                i2c@2 {
                        #address-cells = <1>;
                                 * interrupt-parent = <&>;
                                 * interrupts = <>;
                                 */
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               #clock-cells = <1>;
+                               clocks = <&refhdmi>;
+                               clock-names = "xtal";
+                               clock-output-names = "si5328";
+
+                               si5328_clk: clk0@0 {
+                                       reg = <0>;
+                                       clock-frequency = <27000000>;
+                               };
                        };
                };
                /* 5 - 7 unconnected */
        status = "okay";
 };
 
+&psgtr {
+       status = "okay";
+       /* pcie, sata, usb3, dp */
+       clocks = <&si5341 0 5>, <&si5341 0 3>, <&si5341 0 2>, <&si5341 0 0>;
+       clock-names = "ref0", "ref1", "ref2", "ref3";
+};
+
 &rtc {
        status = "okay";
 };
        ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
        ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
        ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&psgtr 3 PHY_TYPE_SATA 1 1>;
 };
 
 /* SD1 with level shifter */
 &sdhci1 {
        status = "okay";
        no-1-8-v;
+       xlnx,mio-bank = <1>;
 };
 
 &uart0 {
 &watchdog0 {
        status = "okay";
 };
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&zynqmp_dpsub {
+       status = "okay";
+       phy-names = "dp-phy0";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 3>;
+};
index 7a4614e..5637e1c 100644 (file)
@@ -12,6 +12,7 @@
 #include "zynqmp.dtsi"
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/phy/phy.h>
 
 / {
        model = "ZynqMP ZCU104 RevA";
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x80000000>;
        };
+
+       clock_8t49n287_5: clk125 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <125000000>;
+       };
+
+       clock_8t49n287_2: clk26 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <26000000>;
+       };
+
+       clock_8t49n287_3: clk27 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <27000000>;
+       };
 };
 
 &can1 {
        status = "okay";
 };
 
+&psgtr {
+       status = "okay";
+       /* nc, sata, usb3, dp */
+       clocks = <&clock_8t49n287_5>, <&clock_8t49n287_2>, <&clock_8t49n287_3>;
+       clock-names = "ref1", "ref2", "ref3";
+};
+
 &sata {
        status = "okay";
        /* SATA OOB timing settings */
        ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
        ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
        ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&psgtr 3 PHY_TYPE_SATA 1 1>;
 };
 
 /* SD1 with level shifter */
 &sdhci1 {
        status = "okay";
        no-1-8-v;
+       xlnx,mio-bank = <1>;
        disable-wp;
 };
 
 &watchdog0 {
        status = "okay";
 };
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&zynqmp_dpsub {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 3>,
+              <&psgtr 0 PHY_TYPE_DP 1 3>;
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revC.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revC.dts
new file mode 100644 (file)
index 0000000..7f2e328
--- /dev/null
@@ -0,0 +1,293 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for Xilinx ZynqMP ZCU104
+ *
+ * (C) Copyright 2017 - 2020, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP ZCU104 RevC";
+       compatible = "xlnx,zynqmp-zcu104-revC", "xlnx,zynqmp-zcu104", "xlnx,zynqmp";
+
+       aliases {
+               ethernet0 = &gem3;
+               i2c0 = &i2c1;
+               mmc0 = &sdhci1;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &dcc;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
+
+       ina226 {
+               compatible = "iio-hwmon";
+               io-channels = <&u183 0>, <&u183 1>, <&u183 2>, <&u183 3>;
+       };
+
+       clock_8t49n287_5: clk125 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <125000000>;
+       };
+
+       clock_8t49n287_2: clk26 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <26000000>;
+       };
+
+       clock_8t49n287_3: clk27 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <27000000>;
+       };
+};
+
+&can1 {
+       status = "okay";
+};
+
+&dcc {
+       status = "okay";
+};
+
+&fpd_dma_chan1 {
+       status = "okay";
+};
+
+&fpd_dma_chan2 {
+       status = "okay";
+};
+
+&fpd_dma_chan3 {
+       status = "okay";
+};
+
+&fpd_dma_chan4 {
+       status = "okay";
+};
+
+&fpd_dma_chan5 {
+       status = "okay";
+};
+
+&fpd_dma_chan6 {
+       status = "okay";
+};
+
+&fpd_dma_chan7 {
+       status = "okay";
+};
+
+&fpd_dma_chan8 {
+       status = "okay";
+};
+
+&gem3 {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       phy0: ethernet-phy@c {
+               reg = <0xc>;
+               ti,rx-internal-delay = <0x8>;
+               ti,tx-internal-delay = <0xa>;
+               ti,fifo-depth = <0x1>;
+               ti,dp83867-rxctrl-strap-quirk;
+       };
+};
+
+&gpio {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       tca6416_u97: gpio@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               /*
+                * IRQ not connected
+                * Lines:
+                * 0 - IRPS5401_ALERT_B
+                * 1 - HDMI_8T49N241_INT_ALM
+                * 2 - MAX6643_OT_B
+                * 3 - MAX6643_FANFAIL_B
+                * 5 - IIC_MUX_RESET_B
+                * 6 - GEM3_EXP_RESET_B
+                * 7 - FMC_LPC_PRSNT_M2C_B
+                * 4, 10 - 17 - not connected
+                */
+       };
+
+       /* Another connection to this bus via PL i2c via PCA9306 - u45 */
+       i2c-mux@74 { /* u34 */
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x74>;
+               i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       /*
+                        * IIC_EEPROM 1kB memory which uses 256B blocks
+                        * where every block has different address.
+                        *    0 - 256B address 0x54
+                        * 256B - 512B address 0x55
+                        * 512B - 768B address 0x56
+                        * 768B - 1024B address 0x57
+                        */
+                       eeprom: eeprom@54 { /* u23 */
+                               compatible = "atmel,24c08";
+                               reg = <0x54>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                       };
+               };
+
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       clock_8t49n287: clock-generator@6c { /* 8T49N287 - u182 */
+                               reg = <0x6c>;
+                       };
+               };
+
+               i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       irps5401_43: irps5401@43 { /* IRPS5401 - u175 */
+                               compatible = "infineon,irps5401";
+                               reg = <0x43>; /* pmbus / i2c 0x13 */
+                       };
+                       irps5401_44: irps5401@44 { /* IRPS5401 - u180 */
+                               compatible = "infineon,irps5401";
+                               reg = <0x44>; /* pmbus / i2c 0x14 */
+                       };
+               };
+
+               i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+                       u183: ina226@40 { /* u183 */
+                               compatible = "ti,ina226";
+                               #io-channel-cells = <1>;
+                               reg = <0x40>;
+                               shunt-resistor = <5000>;
+                       };
+               };
+
+               i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+
+               /* 4, 6 not connected */
+       };
+};
+
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor"; /* n25q512a 128MiB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&psgtr {
+       status = "okay";
+       /* nc, sata, usb3, dp */
+       clocks = <&clock_8t49n287_5>, <&clock_8t49n287_2>, <&clock_8t49n287_3>;
+       clock-names = "ref1", "ref2", "ref3";
+};
+
+&sata {
+       status = "okay";
+       /* SATA OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&psgtr 3 PHY_TYPE_SATA 1 1>;
+};
+
+/* SD1 with level shifter */
+&sdhci1 {
+       status = "okay";
+       no-1-8-v;
+       xlnx,mio-bank = <1>;
+       disable-wp;
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+/* ULPI SMSC USB3320 */
+&usb0 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&watchdog0 {
+       status = "okay";
+};
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&zynqmp_dpsub {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 3>,
+              <&psgtr 0 PHY_TYPE_DP 1 3>;
+};
index 6e9efe2..18771e8 100644 (file)
@@ -13,6 +13,7 @@
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/phy/phy.h>
 
 / {
        model = "ZynqMP ZCU106 RevA";
                compatible = "iio-hwmon";
                io-channels = <&u75 0>, <&u75 1>, <&u75 2>, <&u75 3>;
        };
+
+       /* 48MHz reference crystal */
+       ref48: ref48M {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <48000000>;
+       };
+
+       refhdmi: refhdmi {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <114285000>;
+       };
 };
 
 &can1 {
        status = "okay";
 };
 
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&zynqmp_dpsub {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 3>,
+              <&psgtr 0 PHY_TYPE_DP 1 3>;
+};
+
 /* fpd_dma clk 667MHz, lpd_dma 500MHz */
 &fpd_dma_chan1 {
        status = "okay";
                        #size-cells = <0>;
                        reg = <1>;
                        si5341: clock-generator@36 { /* SI5341 - u69 */
+                               compatible = "silabs,si5341";
                                reg = <0x36>;
+                               #clock-cells = <2>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&ref48>;
+                               clock-names = "xtal";
+                               clock-output-names = "si5341";
+
+                               si5341_0: out@0 {
+                                       /* refclk0 for PS-GT, used for DP */
+                                       reg = <0>;
+                                       always-on;
+                               };
+                               si5341_2: out@2 {
+                                       /* refclk2 for PS-GT, used for USB3 */
+                                       reg = <2>;
+                                       always-on;
+                               };
+                               si5341_3: out@3 {
+                                       /* refclk3 for PS-GT, used for SATA */
+                                       reg = <3>;
+                                       always-on;
+                               };
+                               si5341_6: out@6 {
+                                       /* refclk6 PL CLK125 */
+                                       reg = <6>;
+                                       always-on;
+                               };
+                               si5341_7: out@7 {
+                                       /* refclk7 PL CLK74 */
+                                       reg = <7>;
+                                       always-on;
+                               };
+                               si5341_9: out@9 {
+                                       /* refclk9 used for PS_REF_CLK 33.3 MHz */
+                                       reg = <9>;
+                                       always-on;
+                               };
                        };
 
                };
                        reg = <4>;
                        si5328: clock-generator@69 {/* SI5328 - u20 */
                                reg = <0x69>;
+                               /*
+                                * Chip has interrupt present connected to PL
+                                * interrupt-parent = <&>;
+                                * interrupts = <>;
+                                */
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               #clock-cells = <1>;
+                               clocks = <&refhdmi>;
+                               clock-names = "xtal";
+                               clock-output-names = "si5328";
+
+                               si5328_clk: clk0@0 {
+                                       reg = <0>;
+                                       clock-frequency = <27000000>;
+                               };
                        };
                };
                i2c@5 {
        };
 };
 
+&psgtr {
+       status = "okay";
+       /* nc, sata, usb3, dp */
+       clocks = <&si5341 0 3>, <&si5341 0 2>, <&si5341 0 0>;
+       clock-names = "ref1", "ref2", "ref3";
+};
+
 &rtc {
        status = "okay";
 };
        ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
        ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
        ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&psgtr 3 PHY_TYPE_SATA 1 1>;
 };
 
 /* SD1 with level shifter */
 &sdhci1 {
        status = "okay";
        no-1-8-v;
+       xlnx,mio-bank = <1>;
 };
 
 &uart0 {
index 2e92634..d4b68f0 100644 (file)
@@ -13,6 +13,7 @@
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/phy/phy.h>
 
 / {
        model = "ZynqMP ZCU111 RevA";
                compatible = "iio-hwmon";
                io-channels = <&u79 0>, <&u79 1>, <&u79 2>, <&u79 3>;
        };
+
+       /* 48MHz reference crystal */
+       ref48: ref48M {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <48000000>;
+       };
 };
 
 &dcc {
                        #size-cells = <0>;
                        reg = <1>;
                        si5341: clock-generator@36 { /* SI5341 - u46 */
+                               compatible = "silabs,si5341";
                                reg = <0x36>;
+                               #clock-cells = <2>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&ref48>;
+                               clock-names = "xtal";
+                               clock-output-names = "si5341";
+
+                               si5341_0: out@0 {
+                                       /* refclk0 for PS-GT, used for DP */
+                                       reg = <0>;
+                                       always-on;
+                               };
+                               si5341_2: out@2 {
+                                       /* refclk2 for PS-GT, used for USB3 */
+                                       reg = <2>;
+                                       always-on;
+                               };
+                               si5341_3: out@3 {
+                                       /* refclk3 for PS-GT, used for SATA */
+                                       reg = <3>;
+                                       always-on;
+                               };
+                               si5341_5: out@5 {
+                                       /* refclk5 PL CLK100 */
+                                       reg = <5>;
+                                       always-on;
+                               };
+                               si5341_6: out@6 {
+                                       /* refclk6 PL CLK125 */
+                                       reg = <6>;
+                                       always-on;
+                               };
+                               si5341_9: out@9 {
+                                       /* refclk9 used for PS_REF_CLK 33.3 MHz */
+                                       reg = <9>;
+                                       always-on;
+                               };
                        };
-
                };
                i2c@2 {
                        #address-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <4>;
-                       si5328: clock-generator@69 { /* SI5328 - u48 */
+                       si5382: clock-generator@69 { /* SI5382 - u48 */
                                reg = <0x69>;
                        };
                };
        };
 };
 
+&psgtr {
+       status = "okay";
+       /* nc, sata, usb3, dp */
+       clocks = <&si5341 0 3>, <&si5341 0 2>, <&si5341 0 0>;
+       clock-names = "ref1", "ref2", "ref3";
+};
+
 &rtc {
        status = "okay";
 };
        ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
        ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
        ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&psgtr 3 PHY_TYPE_SATA 1 1>;
 };
 
 /* SD1 with level shifter */
 &sdhci1 {
        status = "okay";
        no-1-8-v;
+       xlnx,mio-bank = <1>;
 };
 
 &uart0 {
        status = "okay";
        dr_mode = "host";
 };
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&zynqmp_dpsub {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 1>,
+              <&psgtr 0 PHY_TYPE_DP 1 1>;
+};
index 68923fb..a3b391d 100644 (file)
@@ -12,6 +12,7 @@
  * the License, or (at your option) any later version.
  */
 
+#include <dt-bindings/dma/xlnx-zynqmp-dpdma.h>
 #include <dt-bindings/power/xlnx-zynqmp-power.h>
 #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
 
                };
        };
 
-       zynqmp_ipi {
+       zynqmp_ipi: zynqmp_ipi {
                compatible = "xlnx,zynqmp-ipi-mailbox";
                interrupt-parent = <&gic>;
                interrupts = <0 35 4>;
                        xlnx_aes: zynqmp-aes {
                                compatible = "xlnx,zynqmp-aes";
                        };
+
+                       zynqmp_reset: reset-controller {
+                               compatible = "xlnx,zynqmp-reset";
+                               #reset-cells = <1>;
+                       };
                };
        };
 
                        interrupts = <0 124 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14e8>;
                        power-domains = <&zynqmp_firmware PD_GDMA>;
                };
 
                        interrupts = <0 125 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14e9>;
                        power-domains = <&zynqmp_firmware PD_GDMA>;
                };
 
                        interrupts = <0 126 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ea>;
                        power-domains = <&zynqmp_firmware PD_GDMA>;
                };
 
                        interrupts = <0 127 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14eb>;
                        power-domains = <&zynqmp_firmware PD_GDMA>;
                };
 
                        interrupts = <0 128 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ec>;
                        power-domains = <&zynqmp_firmware PD_GDMA>;
                };
 
                        interrupts = <0 129 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ed>;
                        power-domains = <&zynqmp_firmware PD_GDMA>;
                };
 
                        interrupts = <0 130 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ee>;
                        power-domains = <&zynqmp_firmware PD_GDMA>;
                };
 
                        interrupts = <0 131 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <128>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x14ef>;
                        power-domains = <&zynqmp_firmware PD_GDMA>;
                };
 
                gic: interrupt-controller@f9010000 {
                        compatible = "arm,gic-400";
+                       #address-cells = <0>;
                        #interrupt-cells = <3>;
                        reg = <0x0 0xf9010000 0x0 0x10000>,
                              <0x0 0xf9020000 0x0 0x20000>,
                        interrupts = <0 77 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x868>;
                        power-domains = <&zynqmp_firmware PD_ADMA>;
                };
 
                        interrupts = <0 78 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x869>;
                        power-domains = <&zynqmp_firmware PD_ADMA>;
                };
 
                        interrupts = <0 79 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x86a>;
                        power-domains = <&zynqmp_firmware PD_ADMA>;
                };
 
                        interrupts = <0 80 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x86b>;
                        power-domains = <&zynqmp_firmware PD_ADMA>;
                };
 
                        interrupts = <0 81 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x86c>;
                        power-domains = <&zynqmp_firmware PD_ADMA>;
                };
 
                        interrupts = <0 82 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x86d>;
                        power-domains = <&zynqmp_firmware PD_ADMA>;
                };
 
                        interrupts = <0 83 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x86e>;
                        power-domains = <&zynqmp_firmware PD_ADMA>;
                };
 
                        interrupts = <0 84 4>;
                        clock-names = "clk_main", "clk_apb";
                        xlnx,bus-width = <64>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x86f>;
                        power-domains = <&zynqmp_firmware PD_ADMA>;
                };
 
                        interrupts = <0 112 4>;
                };
 
+               nand0: nand-controller@ff100000 {
+                       compatible = "xlnx,zynqmp-nand-controller", "arasan,nfc-v3p10";
+                       status = "disabled";
+                       reg = <0x0 0xff100000 0x0 0x1000>;
+                       clock-names = "controller", "bus";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 14 4>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x872>;
+                       power-domains = <&zynqmp_firmware PD_NAND>;
+               };
+
                gem0: ethernet@ff0b0000 {
                        compatible = "cdns,zynqmp-gem", "cdns,gem";
                        status = "disabled";
                        clock-names = "pclk", "hclk", "tx_clk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x874>;
                        power-domains = <&zynqmp_firmware PD_ETH_0>;
                };
 
                        clock-names = "pclk", "hclk", "tx_clk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x875>;
                        power-domains = <&zynqmp_firmware PD_ETH_1>;
                };
 
                        clock-names = "pclk", "hclk", "tx_clk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x876>;
                        power-domains = <&zynqmp_firmware PD_ETH_2>;
                };
 
                        clock-names = "pclk", "hclk", "tx_clk";
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x877>;
                        power-domains = <&zynqmp_firmware PD_ETH_3>;
                };
 
                gpio: gpio@ff0a0000 {
                        compatible = "xlnx,zynqmp-gpio-1.0";
                        status = "disabled";
+                       #address-cells = <0>;
                        #gpio-cells = <0x2>;
                        gpio-controller;
                        interrupt-parent = <&gic>;
                        };
                };
 
+               qspi: spi@ff0f0000 {
+                       compatible = "xlnx,zynqmp-qspi-1.0";
+                       status = "disabled";
+                       clock-names = "ref_clk", "pclk";
+                       interrupts = <0 15 4>;
+                       interrupt-parent = <&gic>;
+                       num-cs = <1>;
+                       reg = <0x0 0xff0f0000 0x0 0x1000>,
+                             <0x0 0xc0000000 0x0 0x8000000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x873>;
+                       power-domains = <&zynqmp_firmware PD_QSPI>;
+               };
+
                psgtr: phy@fd400000 {
                        compatible = "xlnx,zynqmp-psgtr-v1.1";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 133 4>;
                        power-domains = <&zynqmp_firmware PD_SATA>;
+                       #stream-id-cells = <4>;
+                       iommus = <&smmu 0x4c0>, <&smmu 0x4c1>,
+                                <&smmu 0x4c2>, <&smmu 0x4c3>;
                };
 
                sdhci0: mmc@ff160000 {
                        interrupts = <0 48 4>;
                        reg = <0x0 0xff160000 0x0 0x1000>;
                        clock-names = "clk_xin", "clk_ahb";
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x870>;
                        #clock-cells = <1>;
                        clock-output-names = "clk_out_sd0", "clk_in_sd0";
                        power-domains = <&zynqmp_firmware PD_SD_0>;
                        interrupts = <0 49 4>;
                        reg = <0x0 0xff170000 0x0 0x1000>;
                        clock-names = "clk_xin", "clk_ahb";
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x871>;
                        #clock-cells = <1>;
                        clock-output-names = "clk_out_sd1", "clk_in_sd1";
                        power-domains = <&zynqmp_firmware PD_SD_1>;
                smmu: iommu@fd800000 {
                        compatible = "arm,mmu-500";
                        reg = <0x0 0xfd800000 0x0 0x20000>;
+                       #iommu-cells = <1>;
                        status = "disabled";
                        #global-interrupts = <1>;
                        interrupt-parent = <&gic>;
                        reg = <0x0 0xfd4d0000 0x0 0x1000>;
                        timeout-sec = <10>;
                };
+
+               lpd_watchdog: watchdog@ff150000 {
+                       compatible = "cdns,wdt-r1p2";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 52 1>;
+                       reg = <0x0 0xff150000 0x0 0x1000>;
+                       timeout-sec = <10>;
+               };
+
+               zynqmp_dpdma: dma-controller@fd4c0000 {
+                       compatible = "xlnx,zynqmp-dpdma";
+                       status = "disabled";
+                       reg = <0x0 0xfd4c0000 0x0 0x1000>;
+                       interrupts = <0 122 4>;
+                       interrupt-parent = <&gic>;
+                       clock-names = "axi_clk";
+                       #dma-cells = <1>;
+               };
+
+               zynqmp_dpsub: display@fd4a0000 {
+                       compatible = "xlnx,zynqmp-dpsub-1.7";
+                       status = "disabled";
+                       reg = <0x0 0xfd4a0000 0x0 0x1000>,
+                             <0x0 0xfd4aa000 0x0 0x1000>,
+                             <0x0 0xfd4ab000 0x0 0x1000>,
+                             <0x0 0xfd4ac000 0x0 0x1000>;
+                       reg-names = "dp", "blend", "av_buf", "aud";
+                       interrupts = <0 119 4>;
+                       interrupt-parent = <&gic>;
+                       clock-names = "dp_apb_clk", "dp_aud_clk",
+                                     "dp_vtc_pixel_clk_in";
+                       power-domains = <&zynqmp_firmware PD_DP>;
+                       resets = <&zynqmp_reset ZYNQMP_RESET_DP>;
+                       dma-names = "vid0", "vid1", "vid2", "gfx0";
+                       dmas = <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO0>,
+                              <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO1>,
+                              <&zynqmp_dpdma ZYNQMP_DPDMA_VIDEO2>,
+                              <&zynqmp_dpdma ZYNQMP_DPDMA_GRAPHICS>;
+               };
        };
 };
index ff9cbb6..07ac208 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 9337225..cc24bb8 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 ddf04f3..60ee7f0 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 373964b..3ece3c9 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 9b5acf8..e76386a 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 1bff55a..0dbf9c5 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 63bce83..29b0e55 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 198b3ba..95b4fa7 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 ff1e942..82a4453 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 442f3d3..ca5987e 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 f16c4db..4406475 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 90cd5c5..e1f9b4e 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 59dd7be..445ccc9 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 e84bdd1..c72874f 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 1be32fc..c4f6ff9 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 e2171a0..5113589 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 a302630..1ef211d 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 319efa0..1a18d7b 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 7435182..fc44d9c 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 5269a70..3688fda 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 9718e95..854c5e0 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 96e5fcd..7663a9b 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 3094542..4d6e83e 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 c338c9b..f285a91 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 b85234d..17bd020 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 ea5507d..a2283cc 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 6e23376..1a66046 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 2162bc8..013ad33 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 1a53c7a..4867b67 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 192e6c6..82ab308 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 d793355..28f93b9 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 5f9f9b3..5379113 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 4268eb3..8c905aa 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 b206e26..8b0deec 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 969baf4..6e23dc3 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 4848ae3..b3f14f0 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 f3d5b1b..c37dd15 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 fd6f84c..895e82e 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 3522458..80618af 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 93d3509..3f0d3bb 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 d593edb..14dfda7 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 df3a564..fadd566 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 9902b7e..82ad317 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 f8c2467..aa9ea35 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 9293045..3e5b02f 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 98c15ff..8405870 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 c0b6096..dab120b 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 7e35283..ca46f31 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 4365b9a..267f6df 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 ab8b8a7..9cfcc3b 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 47b0219..d705b17 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 070de09..f94ee30 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 7bb66e1..e3a0be2 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 f5e02f6..3989dcb 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 85b5151..4856706 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 5299b90..ecdf8a8 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 9874f6f..1ac79bc 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 191c329..32596fd 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 fefa219..6138457 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 3594291..04029e3 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 b5295a0..9880b6c 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 7f1244b..dab97bb 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 8e4d5af..66e1c96 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 c30de43..782f76e 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 00c1851..6c946e8 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 db10701..fb60b5a 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 cbf32d2..a260296 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 1dd5a0f..5106b84 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 7d60876..feff48e 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 af41fb9..f9d57b9 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 c5590af..f554320 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 7a2c89b..bdbec4c 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 0c8b43a..dc5b42e 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 c1ebb2a..c38d8de 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 0008530..92e888e 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 e083bca..3643b4f 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 9a25307..d42115e 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))