Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9a203a7 authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'v4.14-rockchip-dts64-2' of...

Merge tag 'v4.14-rockchip-dts64-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into next/dt64

Pull "second round of Rockchip dts64 changes for 4.14" from Heiko Stübner:

3 new boards, the rk3328-based Rock64 from the Pine64-makers, the
Sapphire som+baseboard which is another evaluation board for Rocckhip
customers and the rk3399-based som+baseboard from Austria-based
Theobroma Systems, which interestingly is in a miniITX formfactor
and provides a real PCIe x4 slot.

New nodes include on rk3399 graphics (vops, hdmi, etc) and more iommus,
on rk3328 iommus, pwm, thermal management, and sound as well as operating
points and rk3368 got iommu nodes and cpu operating points.

On existing boards firefly got operating points, the rk3328-evb got its
pmic and gru boards got some sound-related fixes.

* tag 'v4.14-rockchip-dts64-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip: (29 commits)
  arm64: dts: rockchip: add Haikou baseboard with RK3399-Q7 SoM
  arm64: dts: rockchip: add RK3399-Q7 (Puma) SoM
  dt-bindings: add rk3399-q7 SoM
  arm64: dts: rockchip: add rk3328-rock64 board
  arm64: dts: rockchip: add rk3328 pdm node
  arm64: dts: rockchip: add more rk3399 iommu nodes
  arm64: dts: rockchip: add rk3368 iommu nodes
  arm64: dts: rockchip: add rk3328 iommu nodes
  arm64: dts: rockchip: Add basic cpu frequencies for RK3368
  arm64: dts: rockchip: add rk805 node for rk3328-evb
  arm64: dts: rockchip: Assign mic irq to correct device for Gru
  arm64: dts: rockchip: init rk3399 vop clock rates
  arm64: dts: rockchip: Add pwm nodes for rk3328
  arm64: dts: rockchip: Fix wrong rt5514 dmic delay property for Gru
  arm64: dts: rockchip: disable tx ipgap linecheck for rk3399 dwc3
  arm64: dts: rockchip: remove num-slots property from rk3399-sapphire
  arm64: dts: rockchip: Enable tsadc module on RK3328 eavluation board
  arm64: dts: rockchip: add thermal nodes for rk3328 SoC
  arm64: dts: rockchip: add tsadc node for rk3328 SoC
  arm64: dts: rockchip: add rk3328 i2s nodes
  ...
parents 298f2a3a 60fd9f72
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -134,6 +134,10 @@ Rockchip platforms device tree bindings
    Required root node properties:
    Required root node properties:
     - compatible = "phytec,rk3288-pcm-947", "phytec,rk3288-phycore-som", "rockchip,rk3288";
     - compatible = "phytec,rk3288-pcm-947", "phytec,rk3288-phycore-som", "rockchip,rk3288";


- Pine64 Rock64 board:
    Required root node properties:
    - compatible = "pine64,rock64", "rockchip,rk3328";

- Rockchip PX3 Evaluation board:
- Rockchip PX3 Evaluation board:
    Required root node properties:
    Required root node properties:
      - compatible = "rockchip,px3-evb", "rockchip,px3", "rockchip,rk3188";
      - compatible = "rockchip,px3-evb", "rockchip,px3", "rockchip,rk3188";
@@ -173,6 +177,14 @@ Rockchip platforms device tree bindings
    Required root node properties:
    Required root node properties:
      - compatible = "rockchip,rk3399-evb", "rockchip,rk3399";
      - compatible = "rockchip,rk3399-evb", "rockchip,rk3399";


- Rockchip RK3399 Sapphire Excavator board:
    Required root node properties:
      - compatible = "rockchip,rk3399-sapphire-excavator", "rockchip,rk3399";

- Theobroma Systems RK3399-Q7 Haikou Baseboard:
    Required root node properties:
      - compatible = "tsd,rk3399-q7-haikou", "rockchip,rk3399";

- Tronsmart Orion R68 Meta
- Tronsmart Orion R68 Meta
    Required root node properties:
    Required root node properties:
      - compatible = "tronsmart,orion-r68-meta", "rockchip,rk3368";
      - compatible = "tronsmart,orion-r68-meta", "rockchip,rk3368";
+3 −0
Original line number Original line Diff line number Diff line
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock64.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-evb-act8846.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-evb-act8846.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-orion-r68-meta.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-orion-r68-meta.dtb
@@ -7,6 +8,8 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-r88.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-firefly.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-firefly.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-kevin.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-kevin.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire-excavator.dtb


always		:= $(dtb-y)
always		:= $(dtb-y)
subdir-y	:= $(dts-dirs)
subdir-y	:= $(dts-dirs)
+140 −0
Original line number Original line Diff line number Diff line
@@ -50,6 +50,146 @@
	chosen {
	chosen {
		stdout-path = "serial2:1500000n8";
		stdout-path = "serial2:1500000n8";
	};
	};

	dc_12v: dc-12v {
		compatible = "regulator-fixed";
		regulator-name = "dc_12v";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
	};

	vcc_sys: vcc-sys {
		compatible = "regulator-fixed";
		regulator-name = "vcc_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		vin-supply = <&dc_12v>;
	};
};

&i2c1 {
	status = "okay";

	rk805: rk805@18 {
		compatible = "rockchip,rk805";
		reg = <0x18>;
		interrupt-parent = <&gpio2>;
		interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
		#clock-cells = <1>;
		clock-output-names = "xin32k", "rk805-clkout2";
		gpio-controller;
		#gpio-cells = <2>;
		pinctrl-names = "default";
		pinctrl-0 = <&pmic_int_l>;
		rockchip,system-power-controller;
		wakeup-source;

		vcc1-supply = <&vcc_sys>;
		vcc2-supply = <&vcc_sys>;
		vcc3-supply = <&vcc_sys>;
		vcc4-supply = <&vcc_sys>;
		vcc5-supply = <&vcc_io>;
		vcc6-supply = <&vcc_io>;

		regulators {
			vdd_logic: DCDC_REG1 {
				regulator-name = "vdd_logic";
				regulator-min-microvolt = <712500>;
				regulator-max-microvolt = <1450000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};

			vdd_arm: DCDC_REG2 {
				regulator-name = "vdd_arm";
				regulator-min-microvolt = <712500>;
				regulator-max-microvolt = <1450000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <950000>;
				};
			};

			vcc_ddr: DCDC_REG3 {
				regulator-name = "vcc_ddr";
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			vcc_io: DCDC_REG4 {
				regulator-name = "vcc_io";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vcc_18: LDO_REG1 {
				regulator-name = "vcc_18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vcc18_emmc: LDO_REG2 {
				regulator-name = "vcc18_emmc";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vdd_10: LDO_REG3 {
				regulator-name = "vdd_10";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};
		};
	};
};

&pinctrl {
	pmic {
		pmic_int_l: pmic-int-l {
			rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};
};

&tsadc {
	status = "okay";
};
};


&uart2 {
&uart2 {
+333 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (c) 2017 PINE64
 *
 * This file is dual-licensed: you can use it either under the terms
 * of the GPL or the X11 license, at your option. Note that this dual
 * licensing only applies to this file, and not this project as a
 * whole.
 *
 *  a) This library is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of the
 *     License, or (at your option) any later version.
 *
 *     This library is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 * Or, alternatively,
 *
 *  b) Permission is hereby granted, free of charge, to any person
 *     obtaining a copy of this software and associated documentation
 *     files (the "Software"), to deal in the Software without
 *     restriction, including without limitation the rights to use,
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 *     sell copies of the Software, and to permit persons to whom the
 *     Software is furnished to do so, subject to the following
 *     conditions:
 *
 *     The above copyright notice and this permission notice shall be
 *     included in all copies or substantial portions of the Software.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *     OTHER DEALINGS IN THE SOFTWARE.
 */

/dts-v1/;
#include "rk3328.dtsi"

/ {
	model = "Pine64 Rock64";
	compatible = "pine64,rock64", "rockchip,rk3328";

	chosen {
		stdout-path = "serial2:1500000n8";
	};

	gmac_clkin: external-gmac-clock {
		compatible = "fixed-clock";
		clock-frequency = <125000000>;
		clock-output-names = "gmac_clkin";
		#clock-cells = <0>;
	};

	vcc_sd: sdmmc-regulator {
		compatible = "regulator-fixed";
		gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&sdmmc0m1_gpio>;
		regulator-name = "vcc_sd";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&vcc_io>;
	};

	vcc_host_5v: vcc-host-5v-regulator {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&usb30_host_drv>;
		regulator-name = "vcc_host_5v";
		regulator-always-on;
		vin-supply = <&vcc_sys>;
	};

	vcc_host1_5v: vcc_otg_5v: vcc-host1-5v-regulator {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio0 RK_PD3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&usb20_host_drv>;
		regulator-name = "vcc_host1_5v";
		regulator-always-on;
		vin-supply = <&vcc_sys>;
	};

	vcc_sys: vcc-sys {
		compatible = "regulator-fixed";
		regulator-name = "vcc_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};
};

&cpu0 {
	cpu-supply = <&vdd_arm>;
};

&cpu1 {
	cpu-supply = <&vdd_arm>;
};

&cpu2 {
	cpu-supply = <&vdd_arm>;
};

&cpu3 {
	cpu-supply = <&vdd_arm>;
};

&emmc {
	bus-width = <8>;
	cap-mmc-highspeed;
	non-removable;
	pinctrl-names = "default";
	pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
	vmmc-supply = <&vcc_io>;
	vqmmc-supply = <&vcc18_emmc>;
	status = "okay";
};

&gmac2io {
	assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
	assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>;
	clock_in_out = "input";
	phy-supply = <&vcc_io>;
	phy-mode = "rgmii";
	pinctrl-names = "default";
	pinctrl-0 = <&rgmiim1_pins>;
	snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
	snps,reset-active-low;
	snps,reset-delays-us = <0 10000 50000>;
	tx_delay = <0x26>;
	rx_delay = <0x11>;
	status = "okay";
};

&i2c1 {
	status = "okay";

	rk805: rk805@18 {
		compatible = "rockchip,rk805";
		reg = <0x18>;
		interrupt-parent = <&gpio2>;
		interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
		#clock-cells = <1>;
		clock-output-names = "xin32k", "rk805-clkout2";
		pinctrl-names = "default";
		pinctrl-0 = <&pmic_int_l>;
		rockchip,system-power-controller;
		wakeup-source;

		vcc1-supply = <&vcc_sys>;
		vcc2-supply = <&vcc_sys>;
		vcc3-supply = <&vcc_sys>;
		vcc4-supply = <&vcc_sys>;
		vcc5-supply = <&vcc_io>;
		vcc6-supply = <&vcc_sys>;

		regulators {
			vdd_logic: DCDC_REG1 {
				regulator-name = "vdd_logic";
				regulator-min-microvolt = <712500>;
				regulator-max-microvolt = <1450000>;
				regulator-ramp-delay = <12500>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};

			vdd_arm: DCDC_REG2 {
				regulator-name = "vdd_arm";
				regulator-min-microvolt = <712500>;
				regulator-max-microvolt = <1450000>;
				regulator-ramp-delay = <12500>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <950000>;
				};
			};

			vcc_ddr: DCDC_REG3 {
				regulator-name = "vcc_ddr";
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			vcc_io: DCDC_REG4 {
				regulator-name = "vcc_io";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vcc_18: LDO_REG1 {
				regulator-name = "vdd_18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vcc18_emmc: LDO_REG2 {
				regulator-name = "vcc_18emmc";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vdd_10: LDO_REG3 {
				regulator-name = "vdd_10";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};
		};
	};
};

&io_domains {
	status = "okay";

	vccio1-supply = <&vcc_io>;
	vccio2-supply = <&vcc18_emmc>;
	vccio3-supply = <&vcc_io>;
	vccio4-supply = <&vcc_18>;
	vccio5-supply = <&vcc_io>;
	vccio6-supply = <&vcc_io>;
	pmuio-supply = <&vcc_io>;
};

&pinctrl {
	pmic {
		pmic_int_l: pmic-int-l {
			rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	usb2 {
		usb20_host_drv: usb20-host-drv {
			rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	usb3 {
		usb30_host_drv: usb30-host-drv {
			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

&sdmmc {
	bus-width = <4>;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	disable-wp;
	max-frequency = <150000000>;
	pinctrl-names = "default";
	pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>;
	vmmc-supply = <&vcc_sd>;
	status = "okay";
};

&tsadc {
	rockchip,hw-tshut-mode = <0>;
	rockchip,hw-tshut-polarity = <0>;
	status = "okay";
};

&uart2 {
	status = "okay";
};

&u2phy {
	status = "okay";

	u2phy_host: host-port {
		status = "okay";
	};

	u2phy_otg: otg-port {
		status = "okay";
	};
};

&usb20_otg {
	dr_mode = "host";
	status = "okay";
};

&usb_host0_ehci {
	status = "okay";
};

&usb_host0_ohci {
	status = "okay";
};
+304 −0
Original line number Original line Diff line number Diff line
@@ -47,6 +47,7 @@
#include <dt-bindings/pinctrl/rockchip.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include <dt-bindings/power/rk3328-power.h>
#include <dt-bindings/power/rk3328-power.h>
#include <dt-bindings/soc/rockchip,boot-mode.h>
#include <dt-bindings/soc/rockchip,boot-mode.h>
#include <dt-bindings/thermal/thermal.h>


/ {
/ {
	compatible = "rockchip,rk3328";
	compatible = "rockchip,rk3328";
@@ -74,8 +75,11 @@
			compatible = "arm,cortex-a53", "arm,armv8";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x0>;
			reg = <0x0 0x0>;
			clocks = <&cru ARMCLK>;
			clocks = <&cru ARMCLK>;
			#cooling-cells = <2>;
			dynamic-power-coefficient = <120>;
			enable-method = "psci";
			enable-method = "psci";
			next-level-cache = <&l2>;
			next-level-cache = <&l2>;
			operating-points-v2 = <&cpu0_opp_table>;
		};
		};


		cpu1: cpu@1 {
		cpu1: cpu@1 {
@@ -83,8 +87,10 @@
			compatible = "arm,cortex-a53", "arm,armv8";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x1>;
			reg = <0x0 0x1>;
			clocks = <&cru ARMCLK>;
			clocks = <&cru ARMCLK>;
			dynamic-power-coefficient = <120>;
			enable-method = "psci";
			enable-method = "psci";
			next-level-cache = <&l2>;
			next-level-cache = <&l2>;
			operating-points-v2 = <&cpu0_opp_table>;
		};
		};


		cpu2: cpu@2 {
		cpu2: cpu@2 {
@@ -92,8 +98,10 @@
			compatible = "arm,cortex-a53", "arm,armv8";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x2>;
			reg = <0x0 0x2>;
			clocks = <&cru ARMCLK>;
			clocks = <&cru ARMCLK>;
			dynamic-power-coefficient = <120>;
			enable-method = "psci";
			enable-method = "psci";
			next-level-cache = <&l2>;
			next-level-cache = <&l2>;
			operating-points-v2 = <&cpu0_opp_table>;
		};
		};


		cpu3: cpu@3 {
		cpu3: cpu@3 {
@@ -101,8 +109,10 @@
			compatible = "arm,cortex-a53", "arm,armv8";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x3>;
			reg = <0x0 0x3>;
			clocks = <&cru ARMCLK>;
			clocks = <&cru ARMCLK>;
			dynamic-power-coefficient = <120>;
			enable-method = "psci";
			enable-method = "psci";
			next-level-cache = <&l2>;
			next-level-cache = <&l2>;
			operating-points-v2 = <&cpu0_opp_table>;
		};
		};


		l2: l2-cache0 {
		l2: l2-cache0 {
@@ -110,6 +120,43 @@
		};
		};
	};
	};


	cpu0_opp_table: opp_table0 {
		compatible = "operating-points-v2";
		opp-shared;

		opp-408000000 {
			opp-hz = /bits/ 64 <408000000>;
			opp-microvolt = <950000>;
			clock-latency-ns = <40000>;
			opp-suspend;
		};
		opp-600000000 {
			opp-hz = /bits/ 64 <600000000>;
			opp-microvolt = <950000>;
			clock-latency-ns = <40000>;
		};
		opp-816000000 {
			opp-hz = /bits/ 64 <816000000>;
			opp-microvolt = <1000000>;
			clock-latency-ns = <40000>;
		};
		opp-1008000000 {
			opp-hz = /bits/ 64 <1008000000>;
			opp-microvolt = <1100000>;
			clock-latency-ns = <40000>;
		};
		opp-1200000000 {
			opp-hz = /bits/ 64 <1200000000>;
			opp-microvolt = <1225000>;
			clock-latency-ns = <40000>;
		};
		opp-1296000000 {
			opp-hz = /bits/ 64 <1296000000>;
			opp-microvolt = <1300000>;
			clock-latency-ns = <40000>;
		};
	};

	amba {
	amba {
		compatible = "simple-bus";
		compatible = "simple-bus";
		#address-cells = <2>;
		#address-cells = <2>;
@@ -156,6 +203,39 @@
		clock-output-names = "xin24m";
		clock-output-names = "xin24m";
	};
	};


	i2s0: i2s@ff000000 {
		compatible = "rockchip,rk3328-i2s", "rockchip,rk3066-i2s";
		reg = <0x0 0xff000000 0x0 0x1000>;
		interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru SCLK_I2S0>, <&cru HCLK_I2S0_8CH>;
		clock-names = "i2s_clk", "i2s_hclk";
		dmas = <&dmac 11>, <&dmac 12>;
		dma-names = "tx", "rx";
		status = "disabled";
	};

	i2s1: i2s@ff010000 {
		compatible = "rockchip,rk3328-i2s", "rockchip,rk3066-i2s";
		reg = <0x0 0xff010000 0x0 0x1000>;
		interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru SCLK_I2S1>, <&cru HCLK_I2S1_8CH>;
		clock-names = "i2s_clk", "i2s_hclk";
		dmas = <&dmac 14>, <&dmac 15>;
		dma-names = "tx", "rx";
		status = "disabled";
	};

	i2s2: i2s@ff020000 {
		compatible = "rockchip,rk3328-i2s", "rockchip,rk3066-i2s";
		reg = <0x0 0xff020000 0x0 0x1000>;
		interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru SCLK_I2S2>, <&cru HCLK_I2S2_2CH>;
		clock-names = "i2s_clk", "i2s_hclk";
		dmas = <&dmac 0>, <&dmac 1>;
		dma-names = "tx", "rx";
		status = "disabled";
	};

	spdif: spdif@ff030000 {
	spdif: spdif@ff030000 {
		compatible = "rockchip,rk3328-spdif";
		compatible = "rockchip,rk3328-spdif";
		reg = <0x0 0xff030000 0x0 0x1000>;
		reg = <0x0 0xff030000 0x0 0x1000>;
@@ -169,6 +249,27 @@
		status = "disabled";
		status = "disabled";
	};
	};


	pdm: pdm@ff040000 {
		compatible = "rockchip,pdm";
		reg = <0x0 0xff040000 0x0 0x1000>;
		clocks = <&cru SCLK_PDM>, <&cru HCLK_PDM>;
		clock-names = "pdm_clk", "pdm_hclk";
		dmas = <&dmac 16>;
		dma-names = "rx";
		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&pdmm0_clk
			     &pdmm0_sdi0
			     &pdmm0_sdi1
			     &pdmm0_sdi2
			     &pdmm0_sdi3>;
		pinctrl-1 = <&pdmm0_clk_sleep
			     &pdmm0_sdi0_sleep
			     &pdmm0_sdi1_sleep
			     &pdmm0_sdi2_sleep
			     &pdmm0_sdi3_sleep>;
		status = "disabled";
	};

	grf: syscon@ff100000 {
	grf: syscon@ff100000 {
		compatible = "rockchip,rk3328-grf", "syscon", "simple-mfd";
		compatible = "rockchip,rk3328-grf", "syscon", "simple-mfd";
		reg = <0x0 0xff100000 0x0 0x1000>;
		reg = <0x0 0xff100000 0x0 0x1000>;
@@ -326,6 +427,108 @@
		interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
		interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
	};
	};


	pwm0: pwm@ff1b0000 {
		compatible = "rockchip,rk3328-pwm";
		reg = <0x0 0xff1b0000 0x0 0x10>;
		clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
		clock-names = "pwm", "pclk";
		pinctrl-names = "default";
		pinctrl-0 = <&pwm0_pin>;
		#pwm-cells = <3>;
		status = "disabled";
	};

	pwm1: pwm@ff1b0010 {
		compatible = "rockchip,rk3328-pwm";
		reg = <0x0 0xff1b0010 0x0 0x10>;
		clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
		clock-names = "pwm", "pclk";
		pinctrl-names = "default";
		pinctrl-0 = <&pwm1_pin>;
		#pwm-cells = <3>;
		status = "disabled";
	};

	pwm2: pwm@ff1b0020 {
		compatible = "rockchip,rk3328-pwm";
		reg = <0x0 0xff1b0020 0x0 0x10>;
		clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
		clock-names = "pwm", "pclk";
		pinctrl-names = "default";
		pinctrl-0 = <&pwm2_pin>;
		#pwm-cells = <3>;
		status = "disabled";
	};

	pwm3: pwm@ff1b0030 {
		compatible = "rockchip,rk3328-pwm";
		reg = <0x0 0xff1b0030 0x0 0x10>;
		interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
		clock-names = "pwm", "pclk";
		pinctrl-names = "default";
		pinctrl-0 = <&pwmir_pin>;
		#pwm-cells = <3>;
		status = "disabled";
	};

	thermal-zones {
		soc_thermal: soc-thermal {
			polling-delay-passive = <20>;
			polling-delay = <1000>;
			sustainable-power = <1000>;

			thermal-sensors = <&tsadc 0>;

			trips {
				threshold: trip-point0 {
					temperature = <70000>;
					hysteresis = <2000>;
					type = "passive";
				};
				target: trip-point1 {
					temperature = <85000>;
					hysteresis = <2000>;
					type = "passive";
				};
				soc_crit: soc-crit {
					temperature = <95000>;
					hysteresis = <2000>;
					type = "critical";
				};
			};

			cooling-maps {
				map0 {
					trip = <&target>;
					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
					contribution = <4096>;
				};
			};
		};

	};

	tsadc: tsadc@ff250000 {
		compatible = "rockchip,rk3328-tsadc";
		reg = <0x0 0xff250000 0x0 0x100>;
		interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH 0>;
		assigned-clocks = <&cru SCLK_TSADC>;
		assigned-clock-rates = <50000>;
		clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
		clock-names = "tsadc", "apb_pclk";
		pinctrl-names = "init", "default", "sleep";
		pinctrl-0 = <&otp_gpio>;
		pinctrl-1 = <&otp_out>;
		pinctrl-2 = <&otp_gpio>;
		resets = <&cru SRST_TSADC>;
		reset-names = "tsadc-apb";
		rockchip,grf = <&grf>;
		rockchip,hw-tshut-temp = <100000>;
		#thermal-sensor-cells = <1>;
		status = "disabled";
	};

	saradc: adc@ff280000 {
	saradc: adc@ff280000 {
		compatible = "rockchip,rk3328-saradc", "rockchip,rk3399-saradc";
		compatible = "rockchip,rk3328-saradc", "rockchip,rk3399-saradc";
		reg = <0x0 0xff280000 0x0 0x100>;
		reg = <0x0 0xff280000 0x0 0x100>;
@@ -338,6 +541,51 @@
		status = "disabled";
		status = "disabled";
	};
	};


	h265e_mmu: iommu@ff330200 {
		compatible = "rockchip,iommu";
		reg = <0x0 0xff330200 0 0x100>;
		interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "h265e_mmu";
		#iommu-cells = <0>;
		status = "disabled";
	};

	vepu_mmu: iommu@ff340800 {
		compatible = "rockchip,iommu";
		reg = <0x0 0xff340800 0x0 0x40>;
		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "vepu_mmu";
		#iommu-cells = <0>;
		status = "disabled";
	};

	vpu_mmu: iommu@ff350800 {
		compatible = "rockchip,iommu";
		reg = <0x0 0xff350800 0x0 0x40>;
		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "vpu_mmu";
		#iommu-cells = <0>;
		status = "disabled";
	};

	rkvdec_mmu: iommu@ff360480 {
		compatible = "rockchip,iommu";
		reg = <0x0 0xff360480 0x0 0x40>, <0x0 0xff3604c0 0x0 0x40>;
		interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "rkvdec_mmu";
		#iommu-cells = <0>;
		status = "disabled";
	};

	vop_mmu: iommu@ff373f00 {
		compatible = "rockchip,iommu";
		reg = <0x0 0xff373f00 0x0 0x100>;
		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH 0>;
		interrupt-names = "vop_mmu";
		#iommu-cells = <0>;
		status = "disabled";
	};

	cru: clock-controller@ff440000 {
	cru: clock-controller@ff440000 {
		compatible = "rockchip,rk3328-cru", "rockchip,cru", "syscon";
		compatible = "rockchip,rk3328-cru", "rockchip,cru", "syscon";
		reg = <0x0 0xff440000 0x0 0x1000>;
		reg = <0x0 0xff440000 0x0 0x1000>;
@@ -704,6 +952,62 @@
			};
			};
		};
		};


		pdm-0 {
			pdmm0_clk: pdmm0-clk {
				rockchip,pins = <2 RK_PC2 2 &pcfg_pull_none>;
			};

			pdmm0_fsync: pdmm0-fsync {
				rockchip,pins = <2 RK_PC7 2 &pcfg_pull_none>;
			};

			pdmm0_sdi0: pdmm0-sdi0 {
				rockchip,pins = <2 RK_PC3 2 &pcfg_pull_none>;
			};

			pdmm0_sdi1: pdmm0-sdi1 {
				rockchip,pins = <2 RK_PC4 2 &pcfg_pull_none>;
			};

			pdmm0_sdi2: pdmm0-sdi2 {
				rockchip,pins = <2 RK_PC5 2 &pcfg_pull_none>;
			};

			pdmm0_sdi3: pdmm0-sdi3 {
				rockchip,pins = <2 RK_PC6 2 &pcfg_pull_none>;
			};

			pdmm0_clk_sleep: pdmm0-clk-sleep {
				rockchip,pins =
					<2 RK_PC2 RK_FUNC_GPIO &pcfg_input_high>;
			};

			pdmm0_sdi0_sleep: pdmm0-sdi0-sleep {
				rockchip,pins =
					<2 RK_PC3 RK_FUNC_GPIO &pcfg_input_high>;
			};

			pdmm0_sdi1_sleep: pdmm0-sdi1-sleep {
				rockchip,pins =
					<2 RK_PC4 RK_FUNC_GPIO &pcfg_input_high>;
			};

			pdmm0_sdi2_sleep: pdmm0-sdi2-sleep {
				rockchip,pins =
					<2 RK_PC5 RK_FUNC_GPIO &pcfg_input_high>;
			};

			pdmm0_sdi3_sleep: pdmm0-sdi3-sleep {
				rockchip,pins =
					<2 RK_PC6 RK_FUNC_GPIO &pcfg_input_high>;
			};

			pdmm0_fsync_sleep: pdmm0-fsync-sleep {
				rockchip,pins =
					<2 RK_PC7 RK_FUNC_GPIO &pcfg_input_high>;
			};
		};

		tsadc {
		tsadc {
			otp_gpio: otp-gpio {
			otp_gpio: otp-gpio {
				rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
				rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
Loading