Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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
...

+2820 -9
+12
Documentation/devicetree/bindings/arm/rockchip.txt
··· 134 134 Required root node properties: 135 135 - compatible = "phytec,rk3288-pcm-947", "phytec,rk3288-phycore-som", "rockchip,rk3288"; 136 136 137 + - Pine64 Rock64 board: 138 + Required root node properties: 139 + - compatible = "pine64,rock64", "rockchip,rk3328"; 140 + 137 141 - Rockchip PX3 Evaluation board: 138 142 Required root node properties: 139 143 - compatible = "rockchip,px3-evb", "rockchip,px3", "rockchip,rk3188"; ··· 176 172 - Rockchip RK3399 evb: 177 173 Required root node properties: 178 174 - compatible = "rockchip,rk3399-evb", "rockchip,rk3399"; 175 + 176 + - Rockchip RK3399 Sapphire Excavator board: 177 + Required root node properties: 178 + - compatible = "rockchip,rk3399-sapphire-excavator", "rockchip,rk3399"; 179 + 180 + - Theobroma Systems RK3399-Q7 Haikou Baseboard: 181 + Required root node properties: 182 + - compatible = "tsd,rk3399-q7-haikou", "rockchip,rk3399"; 179 183 180 184 - Tronsmart Orion R68 Meta 181 185 Required root node properties:
+3
arch/arm64/boot/dts/rockchip/Makefile
··· 1 1 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb 2 + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock64.dtb 2 3 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-evb-act8846.dtb 3 4 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox.dtb 4 5 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-orion-r68-meta.dtb ··· 8 7 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-evb.dtb 9 8 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-firefly.dtb 10 9 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-kevin.dtb 10 + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb 11 + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire-excavator.dtb 11 12 12 13 always := $(dtb-y) 13 14 subdir-y := $(dts-dirs)
+140
arch/arm64/boot/dts/rockchip/rk3328-evb.dts
··· 50 50 chosen { 51 51 stdout-path = "serial2:1500000n8"; 52 52 }; 53 + 54 + dc_12v: dc-12v { 55 + compatible = "regulator-fixed"; 56 + regulator-name = "dc_12v"; 57 + regulator-always-on; 58 + regulator-boot-on; 59 + regulator-min-microvolt = <12000000>; 60 + regulator-max-microvolt = <12000000>; 61 + }; 62 + 63 + vcc_sys: vcc-sys { 64 + compatible = "regulator-fixed"; 65 + regulator-name = "vcc_sys"; 66 + regulator-always-on; 67 + regulator-boot-on; 68 + regulator-min-microvolt = <5000000>; 69 + regulator-max-microvolt = <5000000>; 70 + vin-supply = <&dc_12v>; 71 + }; 72 + }; 73 + 74 + &i2c1 { 75 + status = "okay"; 76 + 77 + rk805: rk805@18 { 78 + compatible = "rockchip,rk805"; 79 + reg = <0x18>; 80 + interrupt-parent = <&gpio2>; 81 + interrupts = <6 IRQ_TYPE_LEVEL_LOW>; 82 + #clock-cells = <1>; 83 + clock-output-names = "xin32k", "rk805-clkout2"; 84 + gpio-controller; 85 + #gpio-cells = <2>; 86 + pinctrl-names = "default"; 87 + pinctrl-0 = <&pmic_int_l>; 88 + rockchip,system-power-controller; 89 + wakeup-source; 90 + 91 + vcc1-supply = <&vcc_sys>; 92 + vcc2-supply = <&vcc_sys>; 93 + vcc3-supply = <&vcc_sys>; 94 + vcc4-supply = <&vcc_sys>; 95 + vcc5-supply = <&vcc_io>; 96 + vcc6-supply = <&vcc_io>; 97 + 98 + regulators { 99 + vdd_logic: DCDC_REG1 { 100 + regulator-name = "vdd_logic"; 101 + regulator-min-microvolt = <712500>; 102 + regulator-max-microvolt = <1450000>; 103 + regulator-always-on; 104 + regulator-boot-on; 105 + regulator-state-mem { 106 + regulator-on-in-suspend; 107 + regulator-suspend-microvolt = <1000000>; 108 + }; 109 + }; 110 + 111 + vdd_arm: DCDC_REG2 { 112 + regulator-name = "vdd_arm"; 113 + regulator-min-microvolt = <712500>; 114 + regulator-max-microvolt = <1450000>; 115 + regulator-always-on; 116 + regulator-boot-on; 117 + regulator-state-mem { 118 + regulator-on-in-suspend; 119 + regulator-suspend-microvolt = <950000>; 120 + }; 121 + }; 122 + 123 + vcc_ddr: DCDC_REG3 { 124 + regulator-name = "vcc_ddr"; 125 + regulator-always-on; 126 + regulator-boot-on; 127 + regulator-state-mem { 128 + regulator-on-in-suspend; 129 + }; 130 + }; 131 + 132 + vcc_io: DCDC_REG4 { 133 + regulator-name = "vcc_io"; 134 + regulator-min-microvolt = <3300000>; 135 + regulator-max-microvolt = <3300000>; 136 + regulator-always-on; 137 + regulator-boot-on; 138 + regulator-state-mem { 139 + regulator-on-in-suspend; 140 + regulator-suspend-microvolt = <3300000>; 141 + }; 142 + }; 143 + 144 + vcc_18: LDO_REG1 { 145 + regulator-name = "vcc_18"; 146 + regulator-min-microvolt = <1800000>; 147 + regulator-max-microvolt = <1800000>; 148 + regulator-always-on; 149 + regulator-boot-on; 150 + regulator-state-mem { 151 + regulator-on-in-suspend; 152 + regulator-suspend-microvolt = <1800000>; 153 + }; 154 + }; 155 + 156 + vcc18_emmc: LDO_REG2 { 157 + regulator-name = "vcc18_emmc"; 158 + regulator-min-microvolt = <1800000>; 159 + regulator-max-microvolt = <1800000>; 160 + regulator-always-on; 161 + regulator-boot-on; 162 + regulator-state-mem { 163 + regulator-on-in-suspend; 164 + regulator-suspend-microvolt = <1800000>; 165 + }; 166 + }; 167 + 168 + vdd_10: LDO_REG3 { 169 + regulator-name = "vdd_10"; 170 + regulator-min-microvolt = <1000000>; 171 + regulator-max-microvolt = <1000000>; 172 + regulator-always-on; 173 + regulator-boot-on; 174 + regulator-state-mem { 175 + regulator-on-in-suspend; 176 + regulator-suspend-microvolt = <1000000>; 177 + }; 178 + }; 179 + }; 180 + }; 181 + }; 182 + 183 + &pinctrl { 184 + pmic { 185 + pmic_int_l: pmic-int-l { 186 + rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>; 187 + }; 188 + }; 189 + }; 190 + 191 + &tsadc { 192 + status = "okay"; 53 193 }; 54 194 55 195 &uart2 {
+333
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
··· 1 + /* 2 + * Copyright (c) 2017 PINE64 3 + * 4 + * This file is dual-licensed: you can use it either under the terms 5 + * of the GPL or the X11 license, at your option. Note that this dual 6 + * licensing only applies to this file, and not this project as a 7 + * whole. 8 + * 9 + * a) This library is free software; you can redistribute it and/or 10 + * modify it under the terms of the GNU General Public License as 11 + * published by the Free Software Foundation; either version 2 of the 12 + * License, or (at your option) any later version. 13 + * 14 + * This library is distributed in the hope that it will be useful, 15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 + * GNU General Public License for more details. 18 + * 19 + * Or, alternatively, 20 + * 21 + * b) Permission is hereby granted, free of charge, to any person 22 + * obtaining a copy of this software and associated documentation 23 + * files (the "Software"), to deal in the Software without 24 + * restriction, including without limitation the rights to use, 25 + * copy, modify, merge, publish, distribute, sublicense, and/or 26 + * sell copies of the Software, and to permit persons to whom the 27 + * Software is furnished to do so, subject to the following 28 + * conditions: 29 + * 30 + * The above copyright notice and this permission notice shall be 31 + * included in all copies or substantial portions of the Software. 32 + * 33 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 + * OTHER DEALINGS IN THE SOFTWARE. 41 + */ 42 + 43 + /dts-v1/; 44 + #include "rk3328.dtsi" 45 + 46 + / { 47 + model = "Pine64 Rock64"; 48 + compatible = "pine64,rock64", "rockchip,rk3328"; 49 + 50 + chosen { 51 + stdout-path = "serial2:1500000n8"; 52 + }; 53 + 54 + gmac_clkin: external-gmac-clock { 55 + compatible = "fixed-clock"; 56 + clock-frequency = <125000000>; 57 + clock-output-names = "gmac_clkin"; 58 + #clock-cells = <0>; 59 + }; 60 + 61 + vcc_sd: sdmmc-regulator { 62 + compatible = "regulator-fixed"; 63 + gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>; 64 + pinctrl-names = "default"; 65 + pinctrl-0 = <&sdmmc0m1_gpio>; 66 + regulator-name = "vcc_sd"; 67 + regulator-min-microvolt = <3300000>; 68 + regulator-max-microvolt = <3300000>; 69 + vin-supply = <&vcc_io>; 70 + }; 71 + 72 + vcc_host_5v: vcc-host-5v-regulator { 73 + compatible = "regulator-fixed"; 74 + enable-active-high; 75 + gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; 76 + pinctrl-names = "default"; 77 + pinctrl-0 = <&usb30_host_drv>; 78 + regulator-name = "vcc_host_5v"; 79 + regulator-always-on; 80 + vin-supply = <&vcc_sys>; 81 + }; 82 + 83 + vcc_host1_5v: vcc_otg_5v: vcc-host1-5v-regulator { 84 + compatible = "regulator-fixed"; 85 + enable-active-high; 86 + gpio = <&gpio0 RK_PD3 GPIO_ACTIVE_HIGH>; 87 + pinctrl-names = "default"; 88 + pinctrl-0 = <&usb20_host_drv>; 89 + regulator-name = "vcc_host1_5v"; 90 + regulator-always-on; 91 + vin-supply = <&vcc_sys>; 92 + }; 93 + 94 + vcc_sys: vcc-sys { 95 + compatible = "regulator-fixed"; 96 + regulator-name = "vcc_sys"; 97 + regulator-always-on; 98 + regulator-boot-on; 99 + regulator-min-microvolt = <5000000>; 100 + regulator-max-microvolt = <5000000>; 101 + }; 102 + }; 103 + 104 + &cpu0 { 105 + cpu-supply = <&vdd_arm>; 106 + }; 107 + 108 + &cpu1 { 109 + cpu-supply = <&vdd_arm>; 110 + }; 111 + 112 + &cpu2 { 113 + cpu-supply = <&vdd_arm>; 114 + }; 115 + 116 + &cpu3 { 117 + cpu-supply = <&vdd_arm>; 118 + }; 119 + 120 + &emmc { 121 + bus-width = <8>; 122 + cap-mmc-highspeed; 123 + non-removable; 124 + pinctrl-names = "default"; 125 + pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>; 126 + vmmc-supply = <&vcc_io>; 127 + vqmmc-supply = <&vcc18_emmc>; 128 + status = "okay"; 129 + }; 130 + 131 + &gmac2io { 132 + assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>; 133 + assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>; 134 + clock_in_out = "input"; 135 + phy-supply = <&vcc_io>; 136 + phy-mode = "rgmii"; 137 + pinctrl-names = "default"; 138 + pinctrl-0 = <&rgmiim1_pins>; 139 + snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>; 140 + snps,reset-active-low; 141 + snps,reset-delays-us = <0 10000 50000>; 142 + tx_delay = <0x26>; 143 + rx_delay = <0x11>; 144 + status = "okay"; 145 + }; 146 + 147 + &i2c1 { 148 + status = "okay"; 149 + 150 + rk805: rk805@18 { 151 + compatible = "rockchip,rk805"; 152 + reg = <0x18>; 153 + interrupt-parent = <&gpio2>; 154 + interrupts = <6 IRQ_TYPE_LEVEL_LOW>; 155 + #clock-cells = <1>; 156 + clock-output-names = "xin32k", "rk805-clkout2"; 157 + pinctrl-names = "default"; 158 + pinctrl-0 = <&pmic_int_l>; 159 + rockchip,system-power-controller; 160 + wakeup-source; 161 + 162 + vcc1-supply = <&vcc_sys>; 163 + vcc2-supply = <&vcc_sys>; 164 + vcc3-supply = <&vcc_sys>; 165 + vcc4-supply = <&vcc_sys>; 166 + vcc5-supply = <&vcc_io>; 167 + vcc6-supply = <&vcc_sys>; 168 + 169 + regulators { 170 + vdd_logic: DCDC_REG1 { 171 + regulator-name = "vdd_logic"; 172 + regulator-min-microvolt = <712500>; 173 + regulator-max-microvolt = <1450000>; 174 + regulator-ramp-delay = <12500>; 175 + regulator-always-on; 176 + regulator-boot-on; 177 + regulator-state-mem { 178 + regulator-on-in-suspend; 179 + regulator-suspend-microvolt = <1000000>; 180 + }; 181 + }; 182 + 183 + vdd_arm: DCDC_REG2 { 184 + regulator-name = "vdd_arm"; 185 + regulator-min-microvolt = <712500>; 186 + regulator-max-microvolt = <1450000>; 187 + regulator-ramp-delay = <12500>; 188 + regulator-always-on; 189 + regulator-boot-on; 190 + regulator-state-mem { 191 + regulator-on-in-suspend; 192 + regulator-suspend-microvolt = <950000>; 193 + }; 194 + }; 195 + 196 + vcc_ddr: DCDC_REG3 { 197 + regulator-name = "vcc_ddr"; 198 + regulator-always-on; 199 + regulator-boot-on; 200 + regulator-state-mem { 201 + regulator-on-in-suspend; 202 + }; 203 + }; 204 + 205 + vcc_io: DCDC_REG4 { 206 + regulator-name = "vcc_io"; 207 + regulator-min-microvolt = <3300000>; 208 + regulator-max-microvolt = <3300000>; 209 + regulator-always-on; 210 + regulator-boot-on; 211 + regulator-state-mem { 212 + regulator-on-in-suspend; 213 + regulator-suspend-microvolt = <3300000>; 214 + }; 215 + }; 216 + 217 + vcc_18: LDO_REG1 { 218 + regulator-name = "vdd_18"; 219 + regulator-min-microvolt = <1800000>; 220 + regulator-max-microvolt = <1800000>; 221 + regulator-always-on; 222 + regulator-boot-on; 223 + regulator-state-mem { 224 + regulator-on-in-suspend; 225 + regulator-suspend-microvolt = <1800000>; 226 + }; 227 + }; 228 + 229 + vcc18_emmc: LDO_REG2 { 230 + regulator-name = "vcc_18emmc"; 231 + regulator-min-microvolt = <1800000>; 232 + regulator-max-microvolt = <1800000>; 233 + regulator-always-on; 234 + regulator-boot-on; 235 + regulator-state-mem { 236 + regulator-on-in-suspend; 237 + regulator-suspend-microvolt = <1800000>; 238 + }; 239 + }; 240 + 241 + vdd_10: LDO_REG3 { 242 + regulator-name = "vdd_10"; 243 + regulator-min-microvolt = <1000000>; 244 + regulator-max-microvolt = <1000000>; 245 + regulator-always-on; 246 + regulator-boot-on; 247 + regulator-state-mem { 248 + regulator-on-in-suspend; 249 + regulator-suspend-microvolt = <1000000>; 250 + }; 251 + }; 252 + }; 253 + }; 254 + }; 255 + 256 + &io_domains { 257 + status = "okay"; 258 + 259 + vccio1-supply = <&vcc_io>; 260 + vccio2-supply = <&vcc18_emmc>; 261 + vccio3-supply = <&vcc_io>; 262 + vccio4-supply = <&vcc_18>; 263 + vccio5-supply = <&vcc_io>; 264 + vccio6-supply = <&vcc_io>; 265 + pmuio-supply = <&vcc_io>; 266 + }; 267 + 268 + &pinctrl { 269 + pmic { 270 + pmic_int_l: pmic-int-l { 271 + rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>; 272 + }; 273 + }; 274 + 275 + usb2 { 276 + usb20_host_drv: usb20-host-drv { 277 + rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; 278 + }; 279 + }; 280 + 281 + usb3 { 282 + usb30_host_drv: usb30-host-drv { 283 + rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; 284 + }; 285 + }; 286 + }; 287 + 288 + &sdmmc { 289 + bus-width = <4>; 290 + cap-mmc-highspeed; 291 + cap-sd-highspeed; 292 + disable-wp; 293 + max-frequency = <150000000>; 294 + pinctrl-names = "default"; 295 + pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>; 296 + vmmc-supply = <&vcc_sd>; 297 + status = "okay"; 298 + }; 299 + 300 + &tsadc { 301 + rockchip,hw-tshut-mode = <0>; 302 + rockchip,hw-tshut-polarity = <0>; 303 + status = "okay"; 304 + }; 305 + 306 + &uart2 { 307 + status = "okay"; 308 + }; 309 + 310 + &u2phy { 311 + status = "okay"; 312 + 313 + u2phy_host: host-port { 314 + status = "okay"; 315 + }; 316 + 317 + u2phy_otg: otg-port { 318 + status = "okay"; 319 + }; 320 + }; 321 + 322 + &usb20_otg { 323 + dr_mode = "host"; 324 + status = "okay"; 325 + }; 326 + 327 + &usb_host0_ehci { 328 + status = "okay"; 329 + }; 330 + 331 + &usb_host0_ohci { 332 + status = "okay"; 333 + };
+304
arch/arm64/boot/dts/rockchip/rk3328.dtsi
··· 47 47 #include <dt-bindings/pinctrl/rockchip.h> 48 48 #include <dt-bindings/power/rk3328-power.h> 49 49 #include <dt-bindings/soc/rockchip,boot-mode.h> 50 + #include <dt-bindings/thermal/thermal.h> 50 51 51 52 / { 52 53 compatible = "rockchip,rk3328"; ··· 75 74 compatible = "arm,cortex-a53", "arm,armv8"; 76 75 reg = <0x0 0x0>; 77 76 clocks = <&cru ARMCLK>; 77 + #cooling-cells = <2>; 78 + dynamic-power-coefficient = <120>; 78 79 enable-method = "psci"; 79 80 next-level-cache = <&l2>; 81 + operating-points-v2 = <&cpu0_opp_table>; 80 82 }; 81 83 82 84 cpu1: cpu@1 { ··· 87 83 compatible = "arm,cortex-a53", "arm,armv8"; 88 84 reg = <0x0 0x1>; 89 85 clocks = <&cru ARMCLK>; 86 + dynamic-power-coefficient = <120>; 90 87 enable-method = "psci"; 91 88 next-level-cache = <&l2>; 89 + operating-points-v2 = <&cpu0_opp_table>; 92 90 }; 93 91 94 92 cpu2: cpu@2 { ··· 98 92 compatible = "arm,cortex-a53", "arm,armv8"; 99 93 reg = <0x0 0x2>; 100 94 clocks = <&cru ARMCLK>; 95 + dynamic-power-coefficient = <120>; 101 96 enable-method = "psci"; 102 97 next-level-cache = <&l2>; 98 + operating-points-v2 = <&cpu0_opp_table>; 103 99 }; 104 100 105 101 cpu3: cpu@3 { ··· 109 101 compatible = "arm,cortex-a53", "arm,armv8"; 110 102 reg = <0x0 0x3>; 111 103 clocks = <&cru ARMCLK>; 104 + dynamic-power-coefficient = <120>; 112 105 enable-method = "psci"; 113 106 next-level-cache = <&l2>; 107 + operating-points-v2 = <&cpu0_opp_table>; 114 108 }; 115 109 116 110 l2: l2-cache0 { 117 111 compatible = "cache"; 112 + }; 113 + }; 114 + 115 + cpu0_opp_table: opp_table0 { 116 + compatible = "operating-points-v2"; 117 + opp-shared; 118 + 119 + opp-408000000 { 120 + opp-hz = /bits/ 64 <408000000>; 121 + opp-microvolt = <950000>; 122 + clock-latency-ns = <40000>; 123 + opp-suspend; 124 + }; 125 + opp-600000000 { 126 + opp-hz = /bits/ 64 <600000000>; 127 + opp-microvolt = <950000>; 128 + clock-latency-ns = <40000>; 129 + }; 130 + opp-816000000 { 131 + opp-hz = /bits/ 64 <816000000>; 132 + opp-microvolt = <1000000>; 133 + clock-latency-ns = <40000>; 134 + }; 135 + opp-1008000000 { 136 + opp-hz = /bits/ 64 <1008000000>; 137 + opp-microvolt = <1100000>; 138 + clock-latency-ns = <40000>; 139 + }; 140 + opp-1200000000 { 141 + opp-hz = /bits/ 64 <1200000000>; 142 + opp-microvolt = <1225000>; 143 + clock-latency-ns = <40000>; 144 + }; 145 + opp-1296000000 { 146 + opp-hz = /bits/ 64 <1296000000>; 147 + opp-microvolt = <1300000>; 148 + clock-latency-ns = <40000>; 118 149 }; 119 150 }; 120 151 ··· 203 156 clock-output-names = "xin24m"; 204 157 }; 205 158 159 + i2s0: i2s@ff000000 { 160 + compatible = "rockchip,rk3328-i2s", "rockchip,rk3066-i2s"; 161 + reg = <0x0 0xff000000 0x0 0x1000>; 162 + interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; 163 + clocks = <&cru SCLK_I2S0>, <&cru HCLK_I2S0_8CH>; 164 + clock-names = "i2s_clk", "i2s_hclk"; 165 + dmas = <&dmac 11>, <&dmac 12>; 166 + dma-names = "tx", "rx"; 167 + status = "disabled"; 168 + }; 169 + 170 + i2s1: i2s@ff010000 { 171 + compatible = "rockchip,rk3328-i2s", "rockchip,rk3066-i2s"; 172 + reg = <0x0 0xff010000 0x0 0x1000>; 173 + interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>; 174 + clocks = <&cru SCLK_I2S1>, <&cru HCLK_I2S1_8CH>; 175 + clock-names = "i2s_clk", "i2s_hclk"; 176 + dmas = <&dmac 14>, <&dmac 15>; 177 + dma-names = "tx", "rx"; 178 + status = "disabled"; 179 + }; 180 + 181 + i2s2: i2s@ff020000 { 182 + compatible = "rockchip,rk3328-i2s", "rockchip,rk3066-i2s"; 183 + reg = <0x0 0xff020000 0x0 0x1000>; 184 + interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 185 + clocks = <&cru SCLK_I2S2>, <&cru HCLK_I2S2_2CH>; 186 + clock-names = "i2s_clk", "i2s_hclk"; 187 + dmas = <&dmac 0>, <&dmac 1>; 188 + dma-names = "tx", "rx"; 189 + status = "disabled"; 190 + }; 191 + 206 192 spdif: spdif@ff030000 { 207 193 compatible = "rockchip,rk3328-spdif"; 208 194 reg = <0x0 0xff030000 0x0 0x1000>; ··· 246 166 dma-names = "tx"; 247 167 pinctrl-names = "default"; 248 168 pinctrl-0 = <&spdifm2_tx>; 169 + status = "disabled"; 170 + }; 171 + 172 + pdm: pdm@ff040000 { 173 + compatible = "rockchip,pdm"; 174 + reg = <0x0 0xff040000 0x0 0x1000>; 175 + clocks = <&cru SCLK_PDM>, <&cru HCLK_PDM>; 176 + clock-names = "pdm_clk", "pdm_hclk"; 177 + dmas = <&dmac 16>; 178 + dma-names = "rx"; 179 + pinctrl-names = "default", "sleep"; 180 + pinctrl-0 = <&pdmm0_clk 181 + &pdmm0_sdi0 182 + &pdmm0_sdi1 183 + &pdmm0_sdi2 184 + &pdmm0_sdi3>; 185 + pinctrl-1 = <&pdmm0_clk_sleep 186 + &pdmm0_sdi0_sleep 187 + &pdmm0_sdi1_sleep 188 + &pdmm0_sdi2_sleep 189 + &pdmm0_sdi3_sleep>; 249 190 status = "disabled"; 250 191 }; 251 192 ··· 427 326 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; 428 327 }; 429 328 329 + pwm0: pwm@ff1b0000 { 330 + compatible = "rockchip,rk3328-pwm"; 331 + reg = <0x0 0xff1b0000 0x0 0x10>; 332 + clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>; 333 + clock-names = "pwm", "pclk"; 334 + pinctrl-names = "default"; 335 + pinctrl-0 = <&pwm0_pin>; 336 + #pwm-cells = <3>; 337 + status = "disabled"; 338 + }; 339 + 340 + pwm1: pwm@ff1b0010 { 341 + compatible = "rockchip,rk3328-pwm"; 342 + reg = <0x0 0xff1b0010 0x0 0x10>; 343 + clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>; 344 + clock-names = "pwm", "pclk"; 345 + pinctrl-names = "default"; 346 + pinctrl-0 = <&pwm1_pin>; 347 + #pwm-cells = <3>; 348 + status = "disabled"; 349 + }; 350 + 351 + pwm2: pwm@ff1b0020 { 352 + compatible = "rockchip,rk3328-pwm"; 353 + reg = <0x0 0xff1b0020 0x0 0x10>; 354 + clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>; 355 + clock-names = "pwm", "pclk"; 356 + pinctrl-names = "default"; 357 + pinctrl-0 = <&pwm2_pin>; 358 + #pwm-cells = <3>; 359 + status = "disabled"; 360 + }; 361 + 362 + pwm3: pwm@ff1b0030 { 363 + compatible = "rockchip,rk3328-pwm"; 364 + reg = <0x0 0xff1b0030 0x0 0x10>; 365 + interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 366 + clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>; 367 + clock-names = "pwm", "pclk"; 368 + pinctrl-names = "default"; 369 + pinctrl-0 = <&pwmir_pin>; 370 + #pwm-cells = <3>; 371 + status = "disabled"; 372 + }; 373 + 374 + thermal-zones { 375 + soc_thermal: soc-thermal { 376 + polling-delay-passive = <20>; 377 + polling-delay = <1000>; 378 + sustainable-power = <1000>; 379 + 380 + thermal-sensors = <&tsadc 0>; 381 + 382 + trips { 383 + threshold: trip-point0 { 384 + temperature = <70000>; 385 + hysteresis = <2000>; 386 + type = "passive"; 387 + }; 388 + target: trip-point1 { 389 + temperature = <85000>; 390 + hysteresis = <2000>; 391 + type = "passive"; 392 + }; 393 + soc_crit: soc-crit { 394 + temperature = <95000>; 395 + hysteresis = <2000>; 396 + type = "critical"; 397 + }; 398 + }; 399 + 400 + cooling-maps { 401 + map0 { 402 + trip = <&target>; 403 + cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 404 + contribution = <4096>; 405 + }; 406 + }; 407 + }; 408 + 409 + }; 410 + 411 + tsadc: tsadc@ff250000 { 412 + compatible = "rockchip,rk3328-tsadc"; 413 + reg = <0x0 0xff250000 0x0 0x100>; 414 + interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH 0>; 415 + assigned-clocks = <&cru SCLK_TSADC>; 416 + assigned-clock-rates = <50000>; 417 + clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>; 418 + clock-names = "tsadc", "apb_pclk"; 419 + pinctrl-names = "init", "default", "sleep"; 420 + pinctrl-0 = <&otp_gpio>; 421 + pinctrl-1 = <&otp_out>; 422 + pinctrl-2 = <&otp_gpio>; 423 + resets = <&cru SRST_TSADC>; 424 + reset-names = "tsadc-apb"; 425 + rockchip,grf = <&grf>; 426 + rockchip,hw-tshut-temp = <100000>; 427 + #thermal-sensor-cells = <1>; 428 + status = "disabled"; 429 + }; 430 + 430 431 saradc: adc@ff280000 { 431 432 compatible = "rockchip,rk3328-saradc", "rockchip,rk3399-saradc"; 432 433 reg = <0x0 0xff280000 0x0 0x100>; ··· 538 335 clock-names = "saradc", "apb_pclk"; 539 336 resets = <&cru SRST_SARADC_P>; 540 337 reset-names = "saradc-apb"; 338 + status = "disabled"; 339 + }; 340 + 341 + h265e_mmu: iommu@ff330200 { 342 + compatible = "rockchip,iommu"; 343 + reg = <0x0 0xff330200 0 0x100>; 344 + interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 345 + interrupt-names = "h265e_mmu"; 346 + #iommu-cells = <0>; 347 + status = "disabled"; 348 + }; 349 + 350 + vepu_mmu: iommu@ff340800 { 351 + compatible = "rockchip,iommu"; 352 + reg = <0x0 0xff340800 0x0 0x40>; 353 + interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 354 + interrupt-names = "vepu_mmu"; 355 + #iommu-cells = <0>; 356 + status = "disabled"; 357 + }; 358 + 359 + vpu_mmu: iommu@ff350800 { 360 + compatible = "rockchip,iommu"; 361 + reg = <0x0 0xff350800 0x0 0x40>; 362 + interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 363 + interrupt-names = "vpu_mmu"; 364 + #iommu-cells = <0>; 365 + status = "disabled"; 366 + }; 367 + 368 + rkvdec_mmu: iommu@ff360480 { 369 + compatible = "rockchip,iommu"; 370 + reg = <0x0 0xff360480 0x0 0x40>, <0x0 0xff3604c0 0x0 0x40>; 371 + interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; 372 + interrupt-names = "rkvdec_mmu"; 373 + #iommu-cells = <0>; 374 + status = "disabled"; 375 + }; 376 + 377 + vop_mmu: iommu@ff373f00 { 378 + compatible = "rockchip,iommu"; 379 + reg = <0x0 0xff373f00 0x0 0x100>; 380 + interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH 0>; 381 + interrupt-names = "vop_mmu"; 382 + #iommu-cells = <0>; 541 383 status = "disabled"; 542 384 }; 543 385 ··· 949 701 hdmii2c_xfer: hdmii2c-xfer { 950 702 rockchip,pins = <0 RK_PA5 1 &pcfg_pull_none>, 951 703 <0 RK_PA6 1 &pcfg_pull_none>; 704 + }; 705 + }; 706 + 707 + pdm-0 { 708 + pdmm0_clk: pdmm0-clk { 709 + rockchip,pins = <2 RK_PC2 2 &pcfg_pull_none>; 710 + }; 711 + 712 + pdmm0_fsync: pdmm0-fsync { 713 + rockchip,pins = <2 RK_PC7 2 &pcfg_pull_none>; 714 + }; 715 + 716 + pdmm0_sdi0: pdmm0-sdi0 { 717 + rockchip,pins = <2 RK_PC3 2 &pcfg_pull_none>; 718 + }; 719 + 720 + pdmm0_sdi1: pdmm0-sdi1 { 721 + rockchip,pins = <2 RK_PC4 2 &pcfg_pull_none>; 722 + }; 723 + 724 + pdmm0_sdi2: pdmm0-sdi2 { 725 + rockchip,pins = <2 RK_PC5 2 &pcfg_pull_none>; 726 + }; 727 + 728 + pdmm0_sdi3: pdmm0-sdi3 { 729 + rockchip,pins = <2 RK_PC6 2 &pcfg_pull_none>; 730 + }; 731 + 732 + pdmm0_clk_sleep: pdmm0-clk-sleep { 733 + rockchip,pins = 734 + <2 RK_PC2 RK_FUNC_GPIO &pcfg_input_high>; 735 + }; 736 + 737 + pdmm0_sdi0_sleep: pdmm0-sdi0-sleep { 738 + rockchip,pins = 739 + <2 RK_PC3 RK_FUNC_GPIO &pcfg_input_high>; 740 + }; 741 + 742 + pdmm0_sdi1_sleep: pdmm0-sdi1-sleep { 743 + rockchip,pins = 744 + <2 RK_PC4 RK_FUNC_GPIO &pcfg_input_high>; 745 + }; 746 + 747 + pdmm0_sdi2_sleep: pdmm0-sdi2-sleep { 748 + rockchip,pins = 749 + <2 RK_PC5 RK_FUNC_GPIO &pcfg_input_high>; 750 + }; 751 + 752 + pdmm0_sdi3_sleep: pdmm0-sdi3-sleep { 753 + rockchip,pins = 754 + <2 RK_PC6 RK_FUNC_GPIO &pcfg_input_high>; 755 + }; 756 + 757 + pdmm0_fsync_sleep: pdmm0-fsync-sleep { 758 + rockchip,pins = 759 + <2 RK_PC7 RK_FUNC_GPIO &pcfg_input_high>; 952 760 }; 953 761 }; 954 762
+119 -2
arch/arm64/boot/dts/rockchip/rk3368.dtsi
··· 113 113 compatible = "arm,cortex-a53", "arm,armv8"; 114 114 reg = <0x0 0x0>; 115 115 enable-method = "psci"; 116 - 116 + clocks = <&cru ARMCLKL>; 117 + operating-points-v2 = <&cluster0_opp>; 117 118 #cooling-cells = <2>; /* min followed by max */ 118 119 }; 119 120 ··· 123 122 compatible = "arm,cortex-a53", "arm,armv8"; 124 123 reg = <0x0 0x1>; 125 124 enable-method = "psci"; 125 + clocks = <&cru ARMCLKL>; 126 + operating-points-v2 = <&cluster0_opp>; 126 127 }; 127 128 128 129 cpu_l2: cpu@2 { ··· 132 129 compatible = "arm,cortex-a53", "arm,armv8"; 133 130 reg = <0x0 0x2>; 134 131 enable-method = "psci"; 132 + clocks = <&cru ARMCLKL>; 133 + operating-points-v2 = <&cluster0_opp>; 135 134 }; 136 135 137 136 cpu_l3: cpu@3 { ··· 141 136 compatible = "arm,cortex-a53", "arm,armv8"; 142 137 reg = <0x0 0x3>; 143 138 enable-method = "psci"; 139 + clocks = <&cru ARMCLKL>; 140 + operating-points-v2 = <&cluster0_opp>; 144 141 }; 145 142 146 143 cpu_b0: cpu@100 { ··· 150 143 compatible = "arm,cortex-a53", "arm,armv8"; 151 144 reg = <0x0 0x100>; 152 145 enable-method = "psci"; 153 - 146 + clocks = <&cru ARMCLKB>; 147 + operating-points-v2 = <&cluster1_opp>; 154 148 #cooling-cells = <2>; /* min followed by max */ 155 149 }; 156 150 ··· 160 152 compatible = "arm,cortex-a53", "arm,armv8"; 161 153 reg = <0x0 0x101>; 162 154 enable-method = "psci"; 155 + clocks = <&cru ARMCLKB>; 156 + operating-points-v2 = <&cluster1_opp>; 163 157 }; 164 158 165 159 cpu_b2: cpu@102 { ··· 169 159 compatible = "arm,cortex-a53", "arm,armv8"; 170 160 reg = <0x0 0x102>; 171 161 enable-method = "psci"; 162 + clocks = <&cru ARMCLKB>; 163 + operating-points-v2 = <&cluster1_opp>; 172 164 }; 173 165 174 166 cpu_b3: cpu@103 { ··· 178 166 compatible = "arm,cortex-a53", "arm,armv8"; 179 167 reg = <0x0 0x103>; 180 168 enable-method = "psci"; 169 + clocks = <&cru ARMCLKB>; 170 + operating-points-v2 = <&cluster1_opp>; 171 + }; 172 + }; 173 + 174 + cluster0_opp: opp-table0 { 175 + compatible = "operating-points-v2"; 176 + opp-shared; 177 + 178 + opp00 { 179 + opp-hz = /bits/ 64 <312000000>; 180 + opp-microvolt = <950000>; 181 + clock-latency-ns = <40000>; 182 + }; 183 + opp01 { 184 + opp-hz = /bits/ 64 <408000000>; 185 + opp-microvolt = <950000>; 186 + }; 187 + opp02 { 188 + opp-hz = /bits/ 64 <600000000>; 189 + opp-microvolt = <950000>; 190 + }; 191 + opp03 { 192 + opp-hz = /bits/ 64 <816000000>; 193 + opp-microvolt = <1025000>; 194 + }; 195 + opp04 { 196 + opp-hz = /bits/ 64 <1008000000>; 197 + opp-microvolt = <1125000>; 198 + }; 199 + }; 200 + 201 + cluster1_opp: opp-table1 { 202 + compatible = "operating-points-v2"; 203 + opp-shared; 204 + 205 + opp00 { 206 + opp-hz = /bits/ 64 <312000000>; 207 + opp-microvolt = <950000>; 208 + clock-latency-ns = <40000>; 209 + }; 210 + opp01 { 211 + opp-hz = /bits/ 64 <408000000>; 212 + opp-microvolt = <950000>; 213 + }; 214 + opp02 { 215 + opp-hz = /bits/ 64 <600000000>; 216 + opp-microvolt = <950000>; 217 + }; 218 + opp03 { 219 + opp-hz = /bits/ 64 <816000000>; 220 + opp-microvolt = <975000>; 221 + }; 222 + opp04 { 223 + opp-hz = /bits/ 64 <1008000000>; 224 + opp-microvolt = <1050000>; 181 225 }; 182 226 }; 183 227 ··· 802 734 dma-names = "tx", "rx"; 803 735 pinctrl-names = "default"; 804 736 pinctrl-0 = <&i2s_8ch_bus>; 737 + status = "disabled"; 738 + }; 739 + 740 + iep_mmu: iommu@ff900800 { 741 + compatible = "rockchip,iommu"; 742 + reg = <0x0 0xff900800 0x0 0x100>; 743 + interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH 0>; 744 + interrupt-names = "iep_mmu"; 745 + #iommu-cells = <0>; 746 + status = "disabled"; 747 + }; 748 + 749 + isp_mmu: iommu@ff914000 { 750 + compatible = "rockchip,iommu"; 751 + reg = <0x0 0xff914000 0x0 0x100>, 752 + <0x0 0xff915000 0x0 0x100>; 753 + interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 754 + interrupt-names = "isp_mmu"; 755 + #iommu-cells = <0>; 756 + rockchip,disable-mmu-reset; 757 + status = "disabled"; 758 + }; 759 + 760 + vop_mmu: iommu@ff930300 { 761 + compatible = "rockchip,iommu"; 762 + reg = <0x0 0xff930300 0x0 0x100>; 763 + interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; 764 + interrupt-names = "vop_mmu"; 765 + #iommu-cells = <0>; 766 + status = "disabled"; 767 + }; 768 + 769 + hevc_mmu: iommu@ff9a0440 { 770 + compatible = "rockchip,iommu"; 771 + reg = <0x0 0xff9a0440 0x0 0x40>, 772 + <0x0 0xff9a0480 0x0 0x40>; 773 + interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 774 + interrupt-names = "hevc_mmu"; 775 + #iommu-cells = <0>; 776 + status = "disabled"; 777 + }; 778 + 779 + vpu_mmu: iommu@ff9a0800 { 780 + compatible = "rockchip,iommu"; 781 + reg = <0x0 0xff9a0800 0x0 0x100>; 782 + interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, 783 + <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; 784 + interrupt-names = "vepu_mmu", "vdpu_mmu"; 785 + #iommu-cells = <0>; 805 786 status = "disabled"; 806 787 }; 807 788
+1
arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
··· 43 43 /dts-v1/; 44 44 #include <dt-bindings/pwm/pwm.h> 45 45 #include "rk3399.dtsi" 46 + #include "rk3399-opp.dtsi" 46 47 47 48 / { 48 49 model = "Firefly-RK3399 Board";
+6 -7
arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi
··· 612 612 headsetcodec: rt5514@57 { 613 613 compatible = "realtek,rt5514"; 614 614 reg = <0x57>; 615 - interrupt-parent = <&gpio1>; 616 - interrupts = <13 IRQ_TYPE_LEVEL_HIGH>; 617 - pinctrl-names = "default"; 618 - pinctrl-0 = <&mic_int>; 619 - realtek,dmic-init-delay = <20>; 620 - wakeup-source; 615 + realtek,dmic-init-delay-ms = <20>; 621 616 }; 622 617 }; 623 618 ··· 821 826 wacky_spi_audio: spi2@0 { 822 827 compatible = "realtek,rt5514"; 823 828 reg = <0>; 824 - 829 + interrupt-parent = <&gpio1>; 830 + interrupts = <13 IRQ_TYPE_LEVEL_HIGH>; 831 + pinctrl-names = "default"; 832 + pinctrl-0 = <&mic_int>; 825 833 /* May run faster once verified. */ 826 834 spi-max-frequency = <10000000>; 835 + wakeup-source; 827 836 }; 828 837 }; 829 838
+228
arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts
··· 1 + /* 2 + * Copyright (c) 2017 Theobroma Systems Design und Consulting GmbH 3 + * 4 + * This file is dual-licensed: you can use it either under the terms 5 + * of the GPL or the X11 license, at your option. Note that this dual 6 + * licensing only applies to this file, and not this project as a 7 + * whole. 8 + * 9 + * a) This file is free software; you can redistribute it and/or 10 + * modify it under the terms of the GNU General Public License as 11 + * published by the Free Software Foundation; either version 2 of the 12 + * License, or (at your option) any later version. 13 + * 14 + * This file is distributed in the hope that it will be useful, 15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 + * GNU General Public License for more details. 18 + * 19 + * Or, alternatively, 20 + * 21 + * b) Permission is hereby granted, free of charge, to any person 22 + * obtaining a copy of this software and associated documentation 23 + * files (the "Software"), to deal in the Software without 24 + * restriction, including without limitation the rights to use, 25 + * copy, modify, merge, publish, distribute, sublicense, and/or 26 + * sell copies of the Software, and to permit persons to whom the 27 + * Software is furnished to do so, subject to the following 28 + * conditions: 29 + * 30 + * The above copyright notice and this permission notice shall be 31 + * included in all copies or substantial portions of the Software. 32 + * 33 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 + * OTHER DEALINGS IN THE SOFTWARE. 41 + */ 42 + 43 + /dts-v1/; 44 + #include "rk3399-puma.dtsi" 45 + 46 + / { 47 + model = "Theobroma Systems RK3399-Q7 SoM"; 48 + compatible = "tsd,rk3399-puma-haikou", "rockchip,rk3399"; 49 + 50 + chosen { 51 + stdout-path = "serial0:115200n8"; 52 + }; 53 + 54 + leds { 55 + pinctrl-0 = <&led_pin_module>, <&led_sd_haikou>; 56 + 57 + sd-card-led { 58 + label = "sd_card_led"; 59 + gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>; 60 + linux,default-trigger = "mmc0"; 61 + }; 62 + }; 63 + 64 + dc_12v: dc-12v { 65 + compatible = "regulator-fixed"; 66 + regulator-name = "dc_12v"; 67 + regulator-always-on; 68 + regulator-boot-on; 69 + regulator-min-microvolt = <12000000>; 70 + regulator-max-microvolt = <12000000>; 71 + }; 72 + 73 + vcc3v3_baseboard: vcc3v3-baseboard { 74 + compatible = "regulator-fixed"; 75 + regulator-name = "vcc3v3_baseboard"; 76 + regulator-always-on; 77 + regulator-boot-on; 78 + regulator-min-microvolt = <3300000>; 79 + regulator-max-microvolt = <3300000>; 80 + vin-supply = <&dc_12v>; 81 + }; 82 + 83 + vcc5v0_otg: vcc5v0-otg-regulator { 84 + compatible = "regulator-fixed"; 85 + enable-active-high; 86 + gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; 87 + pinctrl-names = "default"; 88 + pinctrl-0 = <&otg_vbus_drv>; 89 + regulator-name = "vcc5v0_otg"; 90 + regulator-always-on; 91 + }; 92 + }; 93 + 94 + &i2c1 { 95 + status = "okay"; 96 + clock-frequency = <400000>; 97 + }; 98 + 99 + &i2c2 { 100 + status = "okay"; 101 + clock-frequency = <400000>; 102 + }; 103 + 104 + &i2c3 { 105 + i2c-scl-rising-time-ns = <450>; 106 + i2c-scl-falling-time-ns = <15>; 107 + status = "okay"; 108 + }; 109 + 110 + &i2c4 { 111 + status = "okay"; 112 + clock-frequency = <400000>; 113 + }; 114 + 115 + &i2c6 { 116 + status = "okay"; 117 + clock-frequency = <400000>; 118 + }; 119 + 120 + &i2s0 { 121 + status = "okay"; 122 + rockchip,playback-channels = <8>; 123 + rockchip,capture-channels = <8>; 124 + #sound-dai-cells = <0>; 125 + status = "okay"; 126 + }; 127 + 128 + &pcie_phy { 129 + status = "okay"; 130 + }; 131 + 132 + &pcie0 { 133 + ep-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_LOW>; 134 + num-lanes = <4>; 135 + pinctrl-names = "default"; 136 + pinctrl-0 = <&pcie_clkreqn_cpm>; 137 + status = "okay"; 138 + }; 139 + 140 + &pinctrl { 141 + pinctrl-names = "default"; 142 + pinctrl-0 = <&haikou_pin_hog>; 143 + 144 + hog { 145 + haikou_pin_hog: haikou-pin-hog { 146 + rockchip,pins = 147 + /* LID_BTN */ 148 + <RK_GPIO0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, 149 + /* BATLOW# */ 150 + <RK_GPIO0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, 151 + /* SLP_BTN# */ 152 + <RK_GPIO0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>, 153 + /* BIOS_DISABLE# */ 154 + <RK_GPIO0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>; 155 + }; 156 + }; 157 + 158 + leds { 159 + led_sd_haikou: led-sd-gpio { 160 + rockchip,pins = 161 + <RK_GPIO1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; 162 + }; 163 + }; 164 + 165 + usb2 { 166 + otg_vbus_drv: otg-vbus-drv { 167 + rockchip,pins = 168 + <RK_GPIO0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; 169 + }; 170 + }; 171 + }; 172 + 173 + &pwm0 { 174 + status = "okay"; 175 + }; 176 + 177 + &sdmmc { 178 + bus-width = <4>; 179 + cap-mmc-highspeed; 180 + cap-sd-highspeed; 181 + cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; 182 + disable-wp; 183 + max-frequency = <150000000>; 184 + pinctrl-names = "default"; 185 + pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; 186 + vmmc-supply = <&vcc3v3_baseboard>; 187 + status = "okay"; 188 + }; 189 + 190 + &spi5 { 191 + status = "okay"; 192 + }; 193 + 194 + &u2phy0 { 195 + status = "okay"; 196 + }; 197 + 198 + &usbdrd3_0 { 199 + status = "okay"; 200 + }; 201 + 202 + &usbdrd_dwc3_0 { 203 + dr_mode = "otg"; 204 + status = "okay"; 205 + }; 206 + 207 + &u2phy0_host { 208 + phy-supply = <&vcc5v0_otg>; 209 + status = "okay"; 210 + }; 211 + 212 + &uart0 { 213 + pinctrl-names = "default"; 214 + pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; 215 + status = "okay"; 216 + }; 217 + 218 + &uart2 { 219 + status = "okay"; 220 + }; 221 + 222 + &usb_host0_ehci { 223 + status = "okay"; 224 + }; 225 + 226 + &usb_host0_ohci { 227 + status = "okay"; 228 + };
+547
arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi
··· 1 + /* 2 + * Copyright (c) 2017 Theobroma Systems Design und Consulting GmbH 3 + * 4 + * This file is dual-licensed: you can use it either under the terms 5 + * of the GPL or the X11 license, at your option. Note that this dual 6 + * licensing only applies to this file, and not this project as a 7 + * whole. 8 + * 9 + * a) This file is free software; you can redistribute it and/or 10 + * modify it under the terms of the GNU General Public License as 11 + * published by the Free Software Foundation; either version 2 of the 12 + * License, or (at your option) any later version. 13 + * 14 + * This file is distributed in the hope that it will be useful, 15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 + * GNU General Public License for more details. 18 + * 19 + * Or, alternatively, 20 + * 21 + * b) Permission is hereby granted, free of charge, to any person 22 + * obtaining a copy of this software and associated documentation 23 + * files (the "Software"), to deal in the Software without 24 + * restriction, including without limitation the rights to use, 25 + * copy, modify, merge, publish, distribute, sublicense, and/or 26 + * sell copies of the Software, and to permit persons to whom the 27 + * Software is furnished to do so, subject to the following 28 + * conditions: 29 + * 30 + * The above copyright notice and this permission notice shall be 31 + * included in all copies or substantial portions of the Software. 32 + * 33 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 + * OTHER DEALINGS IN THE SOFTWARE. 41 + */ 42 + 43 + #include <dt-bindings/pwm/pwm.h> 44 + #include "rk3399.dtsi" 45 + #include "rk3399-opp.dtsi" 46 + 47 + / { 48 + leds { 49 + compatible = "gpio-leds"; 50 + pinctrl-names = "default"; 51 + pinctrl-0 = <&led_pin_module>; 52 + 53 + module-led { 54 + label = "module_led"; 55 + gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_HIGH>; 56 + linux,default-trigger = "heartbeat"; 57 + panic-indicator; 58 + }; 59 + }; 60 + 61 + /* 62 + * Overwrite the opp-table for CPUB as this board uses a different 63 + * regulator (FAN53555) that only allows 10mV steps and therefore 64 + * can't reach the operation point target voltages from rk3399-opp.dtsi 65 + */ 66 + /delete-node/ opp-table1; 67 + cluster1_opp: opp-table1 { 68 + compatible = "operating-points-v2"; 69 + opp-shared; 70 + 71 + opp00 { 72 + opp-hz = /bits/ 64 <408000000>; 73 + opp-microvolt = <800000>; 74 + clock-latency-ns = <40000>; 75 + }; 76 + opp01 { 77 + opp-hz = /bits/ 64 <600000000>; 78 + opp-microvolt = <800000>; 79 + }; 80 + opp02 { 81 + opp-hz = /bits/ 64 <816000000>; 82 + opp-microvolt = <830000>; 83 + opp-suspend; 84 + }; 85 + opp03 { 86 + opp-hz = /bits/ 64 <1008000000>; 87 + opp-microvolt = <880000>; 88 + }; 89 + opp04 { 90 + opp-hz = /bits/ 64 <1200000000>; 91 + opp-microvolt = <950000>; 92 + }; 93 + opp05 { 94 + opp-hz = /bits/ 64 <1416000000>; 95 + opp-microvolt = <1030000>; 96 + }; 97 + opp06 { 98 + opp-hz = /bits/ 64 <1608000000>; 99 + opp-microvolt = <1100000>; 100 + }; 101 + opp07 { 102 + opp-hz = /bits/ 64 <1800000000>; 103 + opp-microvolt = <1200000>; 104 + }; 105 + opp08 { 106 + opp-hz = /bits/ 64 <1992000000>; 107 + opp-microvolt = <1230000>; 108 + turbo-mode; 109 + }; 110 + }; 111 + 112 + clkin_gmac: external-gmac-clock { 113 + compatible = "fixed-clock"; 114 + clock-frequency = <125000000>; 115 + clock-output-names = "clkin_gmac"; 116 + #clock-cells = <0>; 117 + }; 118 + 119 + vcc1v2_phy: vcc1v2-phy { 120 + compatible = "regulator-fixed"; 121 + regulator-name = "vcc1v2_phy"; 122 + regulator-always-on; 123 + regulator-boot-on; 124 + regulator-min-microvolt = <1200000>; 125 + regulator-max-microvolt = <1200000>; 126 + vin-supply = <&vcc5v0_sys>; 127 + }; 128 + 129 + vcc3v3_sys: vcc3v3-sys { 130 + compatible = "regulator-fixed"; 131 + regulator-name = "vcc3v3_sys"; 132 + regulator-always-on; 133 + regulator-boot-on; 134 + regulator-min-microvolt = <3300000>; 135 + regulator-max-microvolt = <3300000>; 136 + vin-supply = <&vcc5v0_sys>; 137 + }; 138 + 139 + vcc5v0_host: vcc5v0-host-regulator { 140 + compatible = "regulator-fixed"; 141 + gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>; 142 + enable-active-low; 143 + pinctrl-names = "default"; 144 + pinctrl-0 = <&vcc5v0_host_en>; 145 + regulator-name = "vcc5v0_host"; 146 + regulator-always-on; 147 + vin-supply = <&vcc5v0_sys>; 148 + }; 149 + 150 + vcc5v0_sys: vcc5v0-sys { 151 + compatible = "regulator-fixed"; 152 + regulator-name = "vcc5v0_sys"; 153 + regulator-always-on; 154 + regulator-boot-on; 155 + regulator-min-microvolt = <5000000>; 156 + regulator-max-microvolt = <5000000>; 157 + }; 158 + 159 + vdd_log: vdd-log { 160 + compatible = "pwm-regulator"; 161 + pwms = <&pwm2 0 25000 0>; 162 + regulator-name = "vdd_log"; 163 + regulator-min-microvolt = <800000>; 164 + regulator-max-microvolt = <1400000>; 165 + regulator-always-on; 166 + regulator-boot-on; 167 + status = "okay"; 168 + }; 169 + }; 170 + 171 + &cpu_b0 { 172 + cpu-supply = <&vdd_cpu_b>; 173 + }; 174 + 175 + &cpu_b1 { 176 + cpu-supply = <&vdd_cpu_b>; 177 + }; 178 + 179 + &cpu_l0 { 180 + cpu-supply = <&vdd_cpu_l>; 181 + }; 182 + 183 + &cpu_l1 { 184 + cpu-supply = <&vdd_cpu_l>; 185 + }; 186 + 187 + &cpu_l2 { 188 + cpu-supply = <&vdd_cpu_l>; 189 + }; 190 + 191 + &cpu_l3 { 192 + cpu-supply = <&vdd_cpu_l>; 193 + }; 194 + 195 + &emmc_phy { 196 + status = "okay"; 197 + }; 198 + 199 + &gmac { 200 + assigned-clocks = <&cru SCLK_RMII_SRC>; 201 + assigned-clock-parents = <&clkin_gmac>; 202 + clock_in_out = "input"; 203 + phy-supply = <&vcc1v2_phy>; 204 + phy-mode = "rgmii"; 205 + pinctrl-names = "default"; 206 + pinctrl-0 = <&rgmii_pins>; 207 + snps,reset-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>; 208 + snps,reset-active-low; 209 + snps,reset-delays-us = <0 10000 50000>; 210 + tx_delay = <0x10>; 211 + rx_delay = <0x10>; 212 + status = "okay"; 213 + }; 214 + 215 + &i2c0 { 216 + status = "okay"; 217 + i2c-scl-rising-time-ns = <168>; 218 + i2c-scl-falling-time-ns = <4>; 219 + clock-frequency = <400000>; 220 + 221 + rk808: pmic@1b { 222 + compatible = "rockchip,rk808"; 223 + reg = <0x1b>; 224 + interrupt-parent = <&gpio1>; 225 + interrupts = <22 IRQ_TYPE_LEVEL_LOW>; 226 + #clock-cells = <1>; 227 + clock-output-names = "xin32k", "rk808-clkout2"; 228 + pinctrl-names = "default"; 229 + pinctrl-0 = <&pmic_int_l>; 230 + rockchip,system-power-controller; 231 + wakeup-source; 232 + 233 + vcc1-supply = <&vcc5v0_sys>; 234 + vcc2-supply = <&vcc5v0_sys>; 235 + vcc3-supply = <&vcc5v0_sys>; 236 + vcc4-supply = <&vcc5v0_sys>; 237 + vcc6-supply = <&vcc5v0_sys>; 238 + vcc7-supply = <&vcc5v0_sys>; 239 + vcc8-supply = <&vcc3v3_sys>; 240 + vcc9-supply = <&vcc5v0_sys>; 241 + vcc10-supply = <&vcc5v0_sys>; 242 + vcc11-supply = <&vcc5v0_sys>; 243 + vcc12-supply = <&vcc3v3_sys>; 244 + vddio-supply = <&vcc1v8_pmu>; 245 + 246 + regulators { 247 + vdd_center: DCDC_REG1 { 248 + regulator-name = "vdd_center"; 249 + regulator-min-microvolt = <750000>; 250 + regulator-max-microvolt = <1350000>; 251 + regulator-ramp-delay = <6001>; 252 + regulator-always-on; 253 + regulator-boot-on; 254 + regulator-state-mem { 255 + regulator-off-in-suspend; 256 + }; 257 + }; 258 + 259 + vdd_cpu_l: DCDC_REG2 { 260 + regulator-name = "vdd_cpu_l"; 261 + regulator-min-microvolt = <750000>; 262 + regulator-max-microvolt = <1350000>; 263 + regulator-ramp-delay = <6001>; 264 + regulator-always-on; 265 + regulator-boot-on; 266 + regulator-state-mem { 267 + regulator-off-in-suspend; 268 + }; 269 + }; 270 + 271 + vcc_ddr: DCDC_REG3 { 272 + regulator-name = "vcc_ddr"; 273 + regulator-always-on; 274 + regulator-boot-on; 275 + regulator-state-mem { 276 + regulator-on-in-suspend; 277 + }; 278 + }; 279 + 280 + vcc_1v8: DCDC_REG4 { 281 + regulator-name = "vcc_1v8"; 282 + regulator-min-microvolt = <1800000>; 283 + regulator-max-microvolt = <1800000>; 284 + regulator-always-on; 285 + regulator-boot-on; 286 + regulator-state-mem { 287 + regulator-on-in-suspend; 288 + regulator-suspend-microvolt = <1800000>; 289 + }; 290 + }; 291 + 292 + vcc_ldo1: LDO_REG1 { 293 + regulator-name = "vcc_ldo1"; 294 + regulator-min-microvolt = <1800000>; 295 + regulator-max-microvolt = <1800000>; 296 + regulator-boot-on; 297 + regulator-state-mem { 298 + regulator-off-in-suspend; 299 + }; 300 + }; 301 + 302 + vcc1v8_hdmi: LDO_REG2 { 303 + regulator-name = "vcc1v8_hdmi"; 304 + regulator-min-microvolt = <1800000>; 305 + regulator-max-microvolt = <1800000>; 306 + regulator-always-on; 307 + regulator-boot-on; 308 + regulator-state-mem { 309 + regulator-off-in-suspend; 310 + }; 311 + }; 312 + 313 + vcc1v8_pmu: LDO_REG3 { 314 + regulator-name = "vcc1v8_pmu"; 315 + regulator-min-microvolt = <1800000>; 316 + regulator-max-microvolt = <1800000>; 317 + regulator-always-on; 318 + regulator-boot-on; 319 + regulator-state-mem { 320 + regulator-on-in-suspend; 321 + regulator-suspend-microvolt = <1800000>; 322 + }; 323 + }; 324 + 325 + vcc_sd: LDO_REG4 { 326 + regulator-name = "vcc_sd"; 327 + regulator-min-microvolt = <1800000>; 328 + regulator-max-microvolt = <3300000>; 329 + regulator-always-on; 330 + regulator-boot-on; 331 + regulator-state-mem { 332 + regulator-on-in-suspend; 333 + regulator-suspend-microvolt = <3300000>; 334 + }; 335 + }; 336 + 337 + vcc_ldo5: LDO_REG5 { 338 + regulator-name = "vcc_ldo5"; 339 + regulator-min-microvolt = <3000000>; 340 + regulator-max-microvolt = <3000000>; 341 + regulator-boot-on; 342 + regulator-state-mem { 343 + regulator-off-in-suspend; 344 + }; 345 + }; 346 + 347 + vcc_ldo6: LDO_REG6 { 348 + regulator-name = "vcc_ldo6"; 349 + regulator-min-microvolt = <1500000>; 350 + regulator-max-microvolt = <1500000>; 351 + regulator-boot-on; 352 + regulator-state-mem { 353 + regulator-off-in-suspend; 354 + }; 355 + }; 356 + 357 + vcc0v9_hdmi: LDO_REG7 { 358 + regulator-name = "vcc0v9_hdmi"; 359 + regulator-min-microvolt = <900000>; 360 + regulator-max-microvolt = <900000>; 361 + regulator-always-on; 362 + regulator-boot-on; 363 + regulator-state-mem { 364 + regulator-off-in-suspend; 365 + }; 366 + }; 367 + 368 + vcc_efuse: LDO_REG8 { 369 + regulator-name = "vcc_efuse"; 370 + regulator-min-microvolt = <1800000>; 371 + regulator-max-microvolt = <1800000>; 372 + regulator-always-on; 373 + regulator-boot-on; 374 + regulator-state-mem { 375 + regulator-off-in-suspend; 376 + }; 377 + }; 378 + 379 + vcc3v3_s3: SWITCH_REG1 { 380 + regulator-name = "vcc3v3_s3"; 381 + regulator-always-on; 382 + regulator-boot-on; 383 + regulator-state-mem { 384 + regulator-off-in-suspend; 385 + }; 386 + }; 387 + 388 + vcc3v3_s0: SWITCH_REG2 { 389 + regulator-name = "vcc3v3_s0"; 390 + regulator-always-on; 391 + regulator-boot-on; 392 + regulator-state-mem { 393 + regulator-off-in-suspend; 394 + }; 395 + }; 396 + }; 397 + }; 398 + 399 + vdd_gpu: regulator@60 { 400 + compatible = "fcs,fan53555"; 401 + reg = <0x60>; 402 + fcs,suspend-voltage-selector = <1>; 403 + regulator-name = "vdd_gpu"; 404 + regulator-min-microvolt = <600000>; 405 + regulator-max-microvolt = <1230000>; 406 + regulator-ramp-delay = <1000>; 407 + regulator-always-on; 408 + regulator-boot-on; 409 + vin-supply = <&vcc5v0_sys>; 410 + }; 411 + }; 412 + 413 + &i2c7 { 414 + status = "okay"; 415 + clock-frequency = <400000>; 416 + 417 + fan: fan@18 { 418 + compatible = "ti,amc6821"; 419 + reg = <0x18>; 420 + cooling-min-state = <0>; 421 + cooling-max-state = <9>; 422 + #cooling-cells = <2>; 423 + }; 424 + 425 + rtc_twi: rtc@6f { 426 + compatible = "isil,isl1208"; 427 + reg = <0x6f>; 428 + }; 429 + }; 430 + 431 + &i2c8 { 432 + status = "okay"; 433 + clock-frequency = <400000>; 434 + 435 + vdd_cpu_b: regulator@60 { 436 + compatible = "fcs,fan53555"; 437 + reg = <0x60>; 438 + vin-supply = <&vcc5v0_sys>; 439 + regulator-name = "vdd_cpu_b"; 440 + regulator-min-microvolt = <600000>; 441 + regulator-max-microvolt = <1230000>; 442 + regulator-ramp-delay = <1000>; 443 + fcs,suspend-voltage-selector = <1>; 444 + regulator-always-on; 445 + regulator-boot-on; 446 + }; 447 + }; 448 + 449 + &io_domains { 450 + status = "okay"; 451 + bt656-supply = <&vcc_1v8>; 452 + audio-supply = <&vcc_1v8>; 453 + sdmmc-supply = <&vcc_sd>; 454 + gpio1830-supply = <&vcc_1v8>; 455 + }; 456 + 457 + &pmu_io_domains { 458 + status = "okay"; 459 + pmu1830-supply = <&vcc_1v8>; 460 + }; 461 + 462 + &pwm2 { 463 + status = "okay"; 464 + }; 465 + 466 + &pinctrl { 467 + i2c8 { 468 + i2c8_xfer_a: i2c8-xfer { 469 + rockchip,pins = 470 + <RK_GPIO1 RK_PC4 RK_FUNC_1 &pcfg_pull_up>, 471 + <RK_GPIO1 RK_PC5 RK_FUNC_1 &pcfg_pull_up>; 472 + }; 473 + }; 474 + 475 + leds { 476 + led_pin_module: led-module-gpio { 477 + rockchip,pins = 478 + <RK_GPIO2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>; 479 + }; 480 + }; 481 + 482 + pmic { 483 + pmic_int_l: pmic-int-l { 484 + rockchip,pins = 485 + <RK_GPIO1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>; 486 + }; 487 + }; 488 + 489 + usb2 { 490 + vcc5v0_host_en: vcc5v0-host-en { 491 + rockchip,pins = 492 + <RK_GPIO4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; 493 + }; 494 + }; 495 + }; 496 + 497 + &sdhci { 498 + bus-width = <8>; 499 + mmc-hs400-1_8v; 500 + mmc-hs400-enhanced-strobe; 501 + non-removable; 502 + status = "okay"; 503 + }; 504 + 505 + &sdmmc { 506 + vqmmc = <&vcc_sd>; 507 + }; 508 + 509 + &spi1 { 510 + status = "okay"; 511 + 512 + norflash: flash@0 { 513 + compatible = "jedec,spi-nor"; 514 + reg = <0>; 515 + spi-max-frequency = <50000000>; 516 + }; 517 + }; 518 + 519 + &u2phy1 { 520 + status = "okay"; 521 + 522 + u2phy1_otg: otg-port { 523 + status = "okay"; 524 + }; 525 + 526 + u2phy1_host: host-port { 527 + phy-supply = <&vcc5v0_host>; 528 + status = "okay"; 529 + }; 530 + }; 531 + 532 + &usbdrd3_1 { 533 + status = "okay"; 534 + }; 535 + 536 + &usbdrd_dwc3_1 { 537 + status = "okay"; 538 + dr_mode = "host"; 539 + }; 540 + 541 + &usb_host1_ehci { 542 + status = "okay"; 543 + }; 544 + 545 + &usb_host1_ohci { 546 + status = "okay"; 547 + };
+240
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator.dts
··· 1 + /* 2 + * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd. 3 + * 4 + * This file is dual-licensed: you can use it either under the terms 5 + * of the GPL or the X11 license, at your option. Note that this dual 6 + * licensing only applies to this file, and not this project as a 7 + * whole. 8 + * 9 + * a) This file is free software; you can redistribute it and/or 10 + * modify it under the terms of the GNU General Public License as 11 + * published by the Free Software Foundation; either version 2 of the 12 + * License, or (at your option) any later version. 13 + * 14 + * This file is distributed in the hope that it will be useful, 15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 + * GNU General Public License for more details. 18 + * 19 + * Or, alternatively, 20 + * 21 + * b) Permission is hereby granted, free of charge, to any person 22 + * obtaining a copy of this software and associated documentation 23 + * files (the "Software"), to deal in the Software without 24 + * restriction, including without limitation the rights to use, 25 + * copy, modify, merge, publish, distribute, sublicense, and/or 26 + * sell copies of the Software, and to permit persons to whom the 27 + * Software is furnished to do so, subject to the following 28 + * conditions: 29 + * 30 + * The above copyright notice and this permission notice shall be 31 + * included in all copies or substantial portions of the Software. 32 + * 33 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 + * OTHER DEALINGS IN THE SOFTWARE. 41 + */ 42 + 43 + /dts-v1/; 44 + #include <dt-bindings/input/input.h> 45 + #include "rk3399-sapphire.dtsi" 46 + 47 + / { 48 + model = "Excavator-RK3399 Board"; 49 + compatible = "rockchip,rk3399-sapphire-excavator", "rockchip,rk3399"; 50 + 51 + adc-keys { 52 + compatible = "adc-keys"; 53 + io-channels = <&saradc 1>; 54 + io-channel-names = "buttons"; 55 + keyup-threshold-microvolt = <1800000>; 56 + poll-interval = <100>; 57 + 58 + button-up { 59 + label = "Volume Up"; 60 + linux,code = <KEY_VOLUMEUP>; 61 + press-threshold-microvolt = <100000>; 62 + }; 63 + 64 + button-down { 65 + label = "Volume Down"; 66 + linux,code = <KEY_VOLUMEDOWN>; 67 + press-threshold-microvolt = <300000>; 68 + }; 69 + 70 + back { 71 + label = "Back"; 72 + linux,code = <KEY_BACK>; 73 + press-threshold-microvolt = <985000>; 74 + }; 75 + 76 + menu { 77 + label = "Menu"; 78 + linux,code = <KEY_MENU>; 79 + press-threshold-microvolt = <1314000>; 80 + }; 81 + }; 82 + 83 + edp_panel: edp-panel { 84 + compatible ="lg,lp079qx1-sp0v", "simple-panel"; 85 + backlight = <&backlight>; 86 + enable-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; 87 + pinctrl-names = "default"; 88 + pinctrl-0 = <&lcd_panel_reset>; 89 + power-supply = <&vcc3v3_s0>; 90 + 91 + ports { 92 + panel_in_edp: endpoint { 93 + remote-endpoint = <&edp_out_panel>; 94 + }; 95 + }; 96 + }; 97 + 98 + keys: gpio-keys { 99 + compatible = "gpio-keys"; 100 + autorepeat; 101 + 102 + power { 103 + debounce-interval = <100>; 104 + gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; 105 + label = "GPIO Power"; 106 + linux,code = <KEY_POWER>; 107 + linux,input-type = <1>; 108 + pinctrl-names = "default"; 109 + pinctrl-0 = <&pwr_btn>; 110 + wakeup-source; 111 + }; 112 + }; 113 + 114 + rt5651-sound { 115 + compatible = "simple-audio-card"; 116 + simple-audio-card,name = "realtek,rt5651-codec"; 117 + simple-audio-card,format = "i2s"; 118 + simple-audio-card,mclk-fs = <256>; 119 + simple-audio-card,widgets = 120 + "Microphone", "Mic Jack", 121 + "Headphone", "Headphone Jack"; 122 + simple-audio-card,routing = 123 + "Mic Jack", "MICBIAS1", 124 + "IN1P", "Mic Jack", 125 + "Headphone Jack", "HPOL", 126 + "Headphone Jack", "HPOR"; 127 + simple-audio-card,cpu { 128 + sound-dai = <&i2s0>; 129 + }; 130 + simple-audio-card,codec { 131 + sound-dai = <&rt5651>; 132 + }; 133 + }; 134 + 135 + sdio_pwrseq: sdio-pwrseq { 136 + compatible = "mmc-pwrseq-simple"; 137 + clocks = <&rk808 1>; 138 + clock-names = "ext_clock"; 139 + pinctrl-names = "default"; 140 + pinctrl-0 = <&wifi_enable_h>; 141 + 142 + /* 143 + * On the module itself this is one of these (depending 144 + * on the actual card populated): 145 + * - SDIO_RESET_L_WL_REG_ON 146 + * - PDN (power down when low) 147 + */ 148 + reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; 149 + }; 150 + }; 151 + 152 + &backlight { 153 + enable-gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; 154 + status = "okay"; 155 + }; 156 + 157 + &edp { 158 + status = "okay"; 159 + 160 + ports { 161 + edp_out: port@1 { 162 + reg = <1>; 163 + #address-cells = <1>; 164 + #size-cells = <0>; 165 + 166 + edp_out_panel: endpoint@0 { 167 + reg = <0>; 168 + remote-endpoint = <&panel_in_edp>; 169 + }; 170 + }; 171 + }; 172 + }; 173 + 174 + &i2c1 { 175 + i2c-scl-rising-time-ns = <300>; 176 + i2c-scl-falling-time-ns = <15>; 177 + status = "okay"; 178 + 179 + rt5651: rt5651@1a { 180 + compatible = "rockchip,rt5651"; 181 + reg = <0x1a>; 182 + clocks = <&cru SCLK_I2S_8CH_OUT>; 183 + clock-names = "mclk"; 184 + hp-det-gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_LOW>; 185 + spk-con-gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; 186 + #sound-dai-cells = <0>; 187 + }; 188 + }; 189 + 190 + &i2c4 { 191 + i2c-scl-rising-time-ns = <600>; 192 + i2c-scl-falling-time-ns = <20>; 193 + status = "okay"; 194 + 195 + accelerometer@68 { 196 + compatible = "invensense,mpu6500"; 197 + reg = <0x68>; 198 + interrupt-parent = <&gpio1>; 199 + interrupts = <RK_PC6 IRQ_TYPE_EDGE_RISING>; 200 + }; 201 + }; 202 + 203 + &i2s0 { 204 + rockchip,playback-channels = <8>; 205 + rockchip,capture-channels = <8>; 206 + #sound-dai-cells = <0>; 207 + status = "okay"; 208 + }; 209 + 210 + &i2s2 { 211 + #sound-dai-cells = <0>; 212 + status = "okay"; 213 + }; 214 + 215 + &pinctrl { 216 + buttons { 217 + pwr_btn: pwr-btn { 218 + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; 219 + }; 220 + }; 221 + 222 + sdio-pwrseq { 223 + wifi_enable_h: wifi-enable-h { 224 + rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; 225 + }; 226 + }; 227 + 228 + lcd-panel { 229 + lcd_panel_reset: lcd-panel-reset { 230 + rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>; 231 + }; 232 + }; 233 + }; 234 + 235 + &spdif { 236 + i2c-scl-rising-time-ns = <450>; 237 + i2c-scl-falling-time-ns = <15>; 238 + #sound-dai-cells = <0>; 239 + status = "okay"; 240 + };
+644
arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
··· 1 + /* 2 + * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd. 3 + * 4 + * This file is dual-licensed: you can use it either under the terms 5 + * of the GPL or the X11 license, at your option. Note that this dual 6 + * licensing only applies to this file, and not this project as a 7 + * whole. 8 + * 9 + * a) This file is free software; you can redistribute it and/or 10 + * modify it under the terms of the GNU General Public License as 11 + * published by the Free Software Foundation; either version 2 of the 12 + * License, or (at your option) any later version. 13 + * 14 + * This file is distributed in the hope that it will be useful, 15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 + * GNU General Public License for more details. 18 + * 19 + * Or, alternatively, 20 + * 21 + * b) Permission is hereby granted, free of charge, to any person 22 + * obtaining a copy of this software and associated documentation 23 + * files (the "Software"), to deal in the Software without 24 + * restriction, including without limitation the rights to use, 25 + * copy, modify, merge, publish, distribute, sublicense, and/or 26 + * sell copies of the Software, and to permit persons to whom the 27 + * Software is furnished to do so, subject to the following 28 + * conditions: 29 + * 30 + * The above copyright notice and this permission notice shall be 31 + * included in all copies or substantial portions of the Software. 32 + * 33 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 + * OTHER DEALINGS IN THE SOFTWARE. 41 + */ 42 + 43 + #include "dt-bindings/pwm/pwm.h" 44 + #include "rk3399.dtsi" 45 + #include "rk3399-opp.dtsi" 46 + 47 + / { 48 + compatible = "rockchip,rk3399-sapphire", "rockchip,rk3399"; 49 + 50 + backlight: backlight { 51 + compatible = "pwm-backlight"; 52 + brightness-levels = < 53 + 0 1 2 3 4 5 6 7 54 + 8 9 10 11 12 13 14 15 55 + 16 17 18 19 20 21 22 23 56 + 24 25 26 27 28 29 30 31 57 + 32 33 34 35 36 37 38 39 58 + 40 41 42 43 44 45 46 47 59 + 48 49 50 51 52 53 54 55 60 + 56 57 58 59 60 61 62 63 61 + 64 65 66 67 68 69 70 71 62 + 72 73 74 75 76 77 78 79 63 + 80 81 82 83 84 85 86 87 64 + 88 89 90 91 92 93 94 95 65 + 96 97 98 99 100 101 102 103 66 + 104 105 106 107 108 109 110 111 67 + 112 113 114 115 116 117 118 119 68 + 120 121 122 123 124 125 126 127 69 + 128 129 130 131 132 133 134 135 70 + 136 137 138 139 140 141 142 143 71 + 144 145 146 147 148 149 150 151 72 + 152 153 154 155 156 157 158 159 73 + 160 161 162 163 164 165 166 167 74 + 168 169 170 171 172 173 174 175 75 + 176 177 178 179 180 181 182 183 76 + 184 185 186 187 188 189 190 191 77 + 192 193 194 195 196 197 198 199 78 + 200 201 202 203 204 205 206 207 79 + 208 209 210 211 212 213 214 215 80 + 216 217 218 219 220 221 222 223 81 + 224 225 226 227 228 229 230 231 82 + 232 233 234 235 236 237 238 239 83 + 240 241 242 243 244 245 246 247 84 + 248 249 250 251 252 253 254 255>; 85 + default-brightness-level = <200>; 86 + pwms = <&pwm0 0 25000 0>; 87 + }; 88 + 89 + clkin_gmac: external-gmac-clock { 90 + compatible = "fixed-clock"; 91 + clock-frequency = <125000000>; 92 + clock-output-names = "clkin_gmac"; 93 + #clock-cells = <0>; 94 + }; 95 + 96 + dc_12v: dc-12v { 97 + compatible = "regulator-fixed"; 98 + regulator-name = "dc_12v"; 99 + regulator-always-on; 100 + regulator-boot-on; 101 + regulator-min-microvolt = <12000000>; 102 + regulator-max-microvolt = <12000000>; 103 + }; 104 + 105 + /* switched by pmic_sleep */ 106 + vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 { 107 + compatible = "regulator-fixed"; 108 + regulator-name = "vcc1v8_s3"; 109 + regulator-always-on; 110 + regulator-boot-on; 111 + regulator-min-microvolt = <1800000>; 112 + regulator-max-microvolt = <1800000>; 113 + vin-supply = <&vcc_1v8>; 114 + }; 115 + 116 + vcc3v3_sys: vcc3v3-sys { 117 + compatible = "regulator-fixed"; 118 + regulator-name = "vcc3v3_sys"; 119 + regulator-always-on; 120 + regulator-boot-on; 121 + regulator-min-microvolt = <3300000>; 122 + regulator-max-microvolt = <3300000>; 123 + vin-supply = <&vcc_sys>; 124 + }; 125 + 126 + vcc_sys: vcc-sys { 127 + compatible = "regulator-fixed"; 128 + regulator-name = "vcc_sys"; 129 + regulator-always-on; 130 + regulator-boot-on; 131 + regulator-min-microvolt = <5000000>; 132 + regulator-max-microvolt = <5000000>; 133 + vin-supply = <&dc_12v>; 134 + }; 135 + 136 + vcc5v0_host: vcc5v0-host-regulator { 137 + compatible = "regulator-fixed"; 138 + enable-active-high; 139 + gpio = <&gpio1 RK_PD1 GPIO_ACTIVE_HIGH>; 140 + pinctrl-names = "default"; 141 + pinctrl-0 = <&vcc5v0_host_en>; 142 + regulator-name = "vcc5v0_host"; 143 + regulator-always-on; 144 + vin-supply = <&vcc_sys>; 145 + }; 146 + }; 147 + 148 + &cpu_l0 { 149 + cpu-supply = <&vdd_cpu_l>; 150 + }; 151 + 152 + &cpu_l1 { 153 + cpu-supply = <&vdd_cpu_l>; 154 + }; 155 + 156 + &cpu_l2 { 157 + cpu-supply = <&vdd_cpu_l>; 158 + }; 159 + 160 + &cpu_l3 { 161 + cpu-supply = <&vdd_cpu_l>; 162 + }; 163 + 164 + &cpu_b0 { 165 + cpu-supply = <&vdd_cpu_b>; 166 + }; 167 + 168 + &cpu_b1 { 169 + cpu-supply = <&vdd_cpu_b>; 170 + }; 171 + 172 + &emmc_phy { 173 + status = "okay"; 174 + }; 175 + 176 + &gmac { 177 + assigned-clocks = <&cru SCLK_RMII_SRC>; 178 + assigned-clock-parents = <&clkin_gmac>; 179 + clock_in_out = "input"; 180 + phy-supply = <&vcc_lan>; 181 + phy-mode = "rgmii"; 182 + pinctrl-names = "default"; 183 + pinctrl-0 = <&rgmii_pins>; 184 + snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; 185 + snps,reset-active-low; 186 + snps,reset-delays-us = <0 10000 50000>; 187 + tx_delay = <0x28>; 188 + rx_delay = <0x11>; 189 + status = "okay"; 190 + }; 191 + 192 + &gpu { 193 + mali-supply = <&vdd_gpu>; 194 + status = "okay"; 195 + }; 196 + 197 + &hdmi { 198 + ddc-i2c-bus = <&i2c3>; 199 + status = "okay"; 200 + }; 201 + 202 + &i2c0 { 203 + clock-frequency = <400000>; 204 + i2c-scl-rising-time-ns = <168>; 205 + i2c-scl-falling-time-ns = <4>; 206 + status = "okay"; 207 + 208 + rk808: pmic@1b { 209 + compatible = "rockchip,rk808"; 210 + reg = <0x1b>; 211 + interrupt-parent = <&gpio1>; 212 + interrupts = <21 IRQ_TYPE_LEVEL_LOW>; 213 + #clock-cells = <1>; 214 + clock-output-names = "xin32k", "rk808-clkout2"; 215 + pinctrl-names = "default"; 216 + pinctrl-0 = <&pmic_int_l &pmic_dvs2>; 217 + rockchip,system-power-controller; 218 + wakeup-source; 219 + 220 + vcc1-supply = <&vcc_sys>; 221 + vcc2-supply = <&vcc_sys>; 222 + vcc3-supply = <&vcc_sys>; 223 + vcc4-supply = <&vcc_sys>; 224 + vcc6-supply = <&vcc_sys>; 225 + vcc7-supply = <&vcc_sys>; 226 + vcc8-supply = <&vcc3v3_sys>; 227 + vcc9-supply = <&vcc_sys>; 228 + vcc10-supply = <&vcc_sys>; 229 + vcc11-supply = <&vcc_sys>; 230 + vcc12-supply = <&vcc3v3_sys>; 231 + vddio-supply = <&vcc1v8_pmu>; 232 + 233 + regulators { 234 + vdd_center: DCDC_REG1 { 235 + regulator-name = "vdd_center"; 236 + regulator-always-on; 237 + regulator-boot-on; 238 + regulator-min-microvolt = <750000>; 239 + regulator-max-microvolt = <1350000>; 240 + regulator-ramp-delay = <6001>; 241 + regulator-state-mem { 242 + regulator-off-in-suspend; 243 + }; 244 + }; 245 + 246 + vdd_cpu_l: DCDC_REG2 { 247 + regulator-name = "vdd_cpu_l"; 248 + regulator-always-on; 249 + regulator-boot-on; 250 + regulator-min-microvolt = <750000>; 251 + regulator-max-microvolt = <1350000>; 252 + regulator-ramp-delay = <6001>; 253 + regulator-state-mem { 254 + regulator-off-in-suspend; 255 + }; 256 + }; 257 + 258 + vcc_ddr: DCDC_REG3 { 259 + regulator-name = "vcc_ddr"; 260 + regulator-always-on; 261 + regulator-boot-on; 262 + regulator-state-mem { 263 + regulator-on-in-suspend; 264 + }; 265 + }; 266 + 267 + vcc_1v8: DCDC_REG4 { 268 + regulator-name = "vcc_1v8"; 269 + regulator-always-on; 270 + regulator-boot-on; 271 + regulator-min-microvolt = <1800000>; 272 + regulator-max-microvolt = <1800000>; 273 + regulator-state-mem { 274 + regulator-on-in-suspend; 275 + regulator-suspend-microvolt = <1800000>; 276 + }; 277 + }; 278 + 279 + vcc1v8_dvp: LDO_REG1 { 280 + regulator-name = "vcc1v8_dvp"; 281 + regulator-always-on; 282 + regulator-boot-on; 283 + regulator-min-microvolt = <1800000>; 284 + regulator-max-microvolt = <1800000>; 285 + regulator-state-mem { 286 + regulator-off-in-suspend; 287 + }; 288 + }; 289 + 290 + vcc3v0_tp: LDO_REG2 { 291 + regulator-name = "vcc3v0_tp"; 292 + regulator-always-on; 293 + regulator-boot-on; 294 + regulator-min-microvolt = <3000000>; 295 + regulator-max-microvolt = <3000000>; 296 + regulator-state-mem { 297 + regulator-off-in-suspend; 298 + }; 299 + }; 300 + 301 + vcc1v8_pmu: LDO_REG3 { 302 + regulator-name = "vcc1v8_pmu"; 303 + regulator-always-on; 304 + regulator-boot-on; 305 + regulator-min-microvolt = <1800000>; 306 + regulator-max-microvolt = <1800000>; 307 + regulator-state-mem { 308 + regulator-on-in-suspend; 309 + regulator-suspend-microvolt = <1800000>; 310 + }; 311 + }; 312 + 313 + vcc_sdio: LDO_REG4 { 314 + regulator-name = "vcc_sdio"; 315 + regulator-always-on; 316 + regulator-boot-on; 317 + regulator-min-microvolt = <1800000>; 318 + regulator-max-microvolt = <3300000>; 319 + regulator-state-mem { 320 + regulator-on-in-suspend; 321 + regulator-suspend-microvolt = <3300000>; 322 + }; 323 + }; 324 + 325 + vcca3v0_codec: LDO_REG5 { 326 + regulator-name = "vcca3v0_codec"; 327 + regulator-always-on; 328 + regulator-boot-on; 329 + regulator-min-microvolt = <3000000>; 330 + regulator-max-microvolt = <3000000>; 331 + regulator-state-mem { 332 + regulator-off-in-suspend; 333 + }; 334 + }; 335 + 336 + vcc_1v5: LDO_REG6 { 337 + regulator-name = "vcc_1v5"; 338 + regulator-always-on; 339 + regulator-boot-on; 340 + regulator-min-microvolt = <1500000>; 341 + regulator-max-microvolt = <1500000>; 342 + regulator-state-mem { 343 + regulator-on-in-suspend; 344 + regulator-suspend-microvolt = <1500000>; 345 + }; 346 + }; 347 + 348 + vcca1v8_codec: LDO_REG7 { 349 + regulator-name = "vcca1v8_codec"; 350 + regulator-always-on; 351 + regulator-boot-on; 352 + regulator-min-microvolt = <1800000>; 353 + regulator-max-microvolt = <1800000>; 354 + regulator-state-mem { 355 + regulator-off-in-suspend; 356 + }; 357 + }; 358 + 359 + vcc_3v0: LDO_REG8 { 360 + regulator-name = "vcc_3v0"; 361 + regulator-always-on; 362 + regulator-boot-on; 363 + regulator-min-microvolt = <3000000>; 364 + regulator-max-microvolt = <3000000>; 365 + regulator-state-mem { 366 + regulator-on-in-suspend; 367 + regulator-suspend-microvolt = <3000000>; 368 + }; 369 + }; 370 + 371 + vcc3v3_s3: vcc_lan: SWITCH_REG1 { 372 + regulator-name = "vcc3v3_s3"; 373 + regulator-always-on; 374 + regulator-boot-on; 375 + regulator-state-mem { 376 + regulator-off-in-suspend; 377 + }; 378 + }; 379 + 380 + vcc3v3_s0: SWITCH_REG2 { 381 + regulator-name = "vcc3v3_s0"; 382 + regulator-always-on; 383 + regulator-boot-on; 384 + regulator-state-mem { 385 + regulator-off-in-suspend; 386 + }; 387 + }; 388 + }; 389 + }; 390 + 391 + vdd_cpu_b: regulator@40 { 392 + compatible = "silergy,syr827"; 393 + reg = <0x40>; 394 + fcs,suspend-voltage-selector = <1>; 395 + regulator-name = "vdd_cpu_b"; 396 + regulator-min-microvolt = <712500>; 397 + regulator-max-microvolt = <1500000>; 398 + regulator-ramp-delay = <1000>; 399 + regulator-always-on; 400 + regulator-boot-on; 401 + vin-supply = <&vcc_sys>; 402 + 403 + regulator-state-mem { 404 + regulator-off-in-suspend; 405 + }; 406 + }; 407 + 408 + vdd_gpu: regulator@41 { 409 + compatible = "silergy,syr828"; 410 + reg = <0x41>; 411 + fcs,suspend-voltage-selector = <1>; 412 + regulator-name = "vdd_gpu"; 413 + regulator-min-microvolt = <712500>; 414 + regulator-max-microvolt = <1500000>; 415 + regulator-ramp-delay = <1000>; 416 + regulator-always-on; 417 + regulator-boot-on; 418 + vin-supply = <&vcc_sys>; 419 + 420 + regulator-state-mem { 421 + regulator-off-in-suspend; 422 + }; 423 + }; 424 + 425 + vdd_log: vdd-log { 426 + compatible = "pwm-regulator"; 427 + pwms = <&pwm2 0 25000 1>; 428 + regulator-name = "vdd_log"; 429 + regulator-always-on; 430 + regulator-boot-on; 431 + regulator-min-microvolt = <800000>; 432 + regulator-max-microvolt = <1400000>; 433 + vin-supply = <&vcc_sys>; 434 + }; 435 + }; 436 + 437 + &i2c3 { 438 + i2c-scl-rising-time-ns = <450>; 439 + i2c-scl-falling-time-ns = <15>; 440 + status = "okay"; 441 + }; 442 + 443 + &io_domains { 444 + status = "okay"; 445 + 446 + bt656-supply = <&vcc_3v0>; 447 + audio-supply = <&vcca1v8_codec>; 448 + sdmmc-supply = <&vcc_sdio>; 449 + gpio1830-supply = <&vcc_3v0>; 450 + }; 451 + 452 + &pcie_phy { 453 + status = "okay"; 454 + }; 455 + 456 + &pcie0 { 457 + assigned-clocks = <&cru SCLK_PCIEPHY_REF>; 458 + assigned-clock-parents = <&cru SCLK_PCIEPHY_REF100M>; 459 + assigned-clock-rates = <100000000>; 460 + ep-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_HIGH>; 461 + num-lanes = <4>; 462 + pinctrl-names = "default"; 463 + pinctrl-0 = <&pcie_clkreqn_cpm>; 464 + status = "okay"; 465 + }; 466 + 467 + &pmu_io_domains { 468 + pmu1830-supply = <&vcc_3v0>; 469 + status = "okay"; 470 + }; 471 + 472 + &pinctrl { 473 + pmic { 474 + pmic_int_l: pmic-int-l { 475 + rockchip,pins = 476 + <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; 477 + }; 478 + 479 + pmic_dvs2: pmic-dvs2 { 480 + rockchip,pins = 481 + <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>; 482 + }; 483 + 484 + vsel1_gpio: vsel1-gpio { 485 + rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; 486 + }; 487 + 488 + vsel2_gpio: vsel2-gpio { 489 + rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; 490 + }; 491 + }; 492 + 493 + usb2 { 494 + vcc5v0_host_en: vcc5v0-host-en { 495 + rockchip,pins = 496 + <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>; 497 + }; 498 + }; 499 + }; 500 + 501 + &pwm0 { 502 + status = "okay"; 503 + }; 504 + 505 + &pwm2 { 506 + status = "okay"; 507 + }; 508 + 509 + &saradc { 510 + vref-supply = <&vcca1v8_s3>; 511 + status = "okay"; 512 + }; 513 + 514 + &sdhci { 515 + bus-width = <8>; 516 + keep-power-in-suspend; 517 + mmc-hs400-1_8v; 518 + mmc-hs400-enhanced-strobe; 519 + non-removable; 520 + status = "okay"; 521 + }; 522 + 523 + &sdio0 { 524 + bus-width = <4>; 525 + cap-sd-highspeed; 526 + cap-sdio-irq; 527 + clock-frequency = <50000000>; 528 + disable-wp; 529 + keep-power-in-suspend; 530 + max-frequency = <50000000>; 531 + mmc-pwrseq = <&sdio_pwrseq>; 532 + non-removable; 533 + pinctrl-names = "default"; 534 + pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; 535 + sd-uhs-sdr104; 536 + status = "okay"; 537 + }; 538 + 539 + &sdmmc { 540 + bus-width = <4>; 541 + cap-mmc-highspeed; 542 + cap-sd-highspeed; 543 + clock-frequency = <150000000>; 544 + disable-wp; 545 + max-frequency = <150000000>; 546 + pinctrl-names = "default"; 547 + pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; 548 + vqmmc-supply = <&vcc_sdio>; 549 + status = "okay"; 550 + }; 551 + 552 + &tsadc { 553 + /* tshut mode 0:CRU 1:GPIO */ 554 + rockchip,hw-tshut-mode = <1>; 555 + /* tshut polarity 0:LOW 1:HIGH */ 556 + rockchip,hw-tshut-polarity = <1>; 557 + status = "okay"; 558 + }; 559 + 560 + &u2phy0 { 561 + status = "okay"; 562 + 563 + u2phy0_otg: otg-port { 564 + status = "okay"; 565 + }; 566 + 567 + u2phy0_host: host-port { 568 + phy-supply = <&vcc5v0_host>; 569 + status = "okay"; 570 + }; 571 + }; 572 + 573 + &u2phy1 { 574 + status = "okay"; 575 + 576 + u2phy1_otg: otg-port { 577 + status = "okay"; 578 + }; 579 + 580 + u2phy1_host: host-port { 581 + phy-supply = <&vcc5v0_host>; 582 + status = "okay"; 583 + }; 584 + }; 585 + 586 + &uart0 { 587 + pinctrl-names = "default"; 588 + pinctrl-0 = <&uart0_xfer &uart0_cts>; 589 + status = "okay"; 590 + }; 591 + 592 + &uart2 { 593 + status = "okay"; 594 + }; 595 + 596 + &usb_host0_ehci { 597 + status = "okay"; 598 + }; 599 + 600 + &usb_host0_ohci { 601 + status = "okay"; 602 + }; 603 + 604 + &usb_host1_ehci { 605 + status = "okay"; 606 + }; 607 + 608 + &usb_host1_ohci { 609 + status = "okay"; 610 + }; 611 + 612 + &usbdrd3_0 { 613 + status = "okay"; 614 + }; 615 + 616 + &usbdrd_dwc3_0 { 617 + status = "okay"; 618 + dr_mode = "otg"; 619 + }; 620 + 621 + &usbdrd3_1 { 622 + status = "okay"; 623 + }; 624 + 625 + &usbdrd_dwc3_1 { 626 + status = "okay"; 627 + dr_mode = "host"; 628 + }; 629 + 630 + &vopb { 631 + status = "okay"; 632 + }; 633 + 634 + &vopb_mmu { 635 + status = "okay"; 636 + }; 637 + 638 + &vopl { 639 + status = "okay"; 640 + }; 641 + 642 + &vopl_mmu { 643 + status = "okay"; 644 + };
+243
arch/arm64/boot/dts/rockchip/rk3399.dtsi
··· 160 160 }; 161 161 }; 162 162 163 + display-subsystem { 164 + compatible = "rockchip,display-subsystem"; 165 + ports = <&vopl_out>, <&vopb_out>; 166 + }; 167 + 163 168 pmu_a53 { 164 169 compatible = "arm,cortex-a53-pmu"; 165 170 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_cluster0>; ··· 412 407 snps,dis-u2-freeclk-exists-quirk; 413 408 snps,dis_u2_susphy_quirk; 414 409 snps,dis-del-phy-power-chg-quirk; 410 + snps,dis-tx-ipgap-linecheck-quirk; 415 411 status = "disabled"; 416 412 }; 417 413 }; ··· 440 434 snps,dis-u2-freeclk-exists-quirk; 441 435 snps,dis_u2_susphy_quirk; 442 436 snps,dis-del-phy-power-chg-quirk; 437 + snps,dis-tx-ipgap-linecheck-quirk; 443 438 status = "disabled"; 444 439 }; 445 440 }; ··· 963 956 }; 964 957 965 958 /* These power domains are grouped by VD_LOGIC */ 959 + pd_edp@RK3399_PD_EDP { 960 + reg = <RK3399_PD_EDP>; 961 + clocks = <&cru PCLK_EDP_CTRL>; 962 + }; 966 963 pd_emmc@RK3399_PD_EMMC { 967 964 reg = <RK3399_PD_EMMC>; 968 965 clocks = <&cru ACLK_EMMC>; ··· 1172 1161 pinctrl-0 = <&pwm3a_pin>; 1173 1162 clocks = <&pmucru PCLK_RKPWM_PMU>; 1174 1163 clock-names = "pwm"; 1164 + status = "disabled"; 1165 + }; 1166 + 1167 + vpu_mmu: iommu@ff650800 { 1168 + compatible = "rockchip,iommu"; 1169 + reg = <0x0 0xff650800 0x0 0x40>; 1170 + interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH 0>; 1171 + interrupt-names = "vpu_mmu"; 1172 + #iommu-cells = <0>; 1173 + status = "disabled"; 1174 + }; 1175 + 1176 + vdec_mmu: iommu@ff660480 { 1177 + compatible = "rockchip,iommu"; 1178 + reg = <0x0 0xff660480 0x0 0x40>, <0x0 0xff6604c0 0x0 0x40>; 1179 + interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH 0>; 1180 + interrupt-names = "vdec_mmu"; 1181 + #iommu-cells = <0>; 1182 + status = "disabled"; 1183 + }; 1184 + 1185 + iep_mmu: iommu@ff670800 { 1186 + compatible = "rockchip,iommu"; 1187 + reg = <0x0 0xff670800 0x0 0x40>; 1188 + interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH 0>; 1189 + interrupt-names = "iep_mmu"; 1190 + #iommu-cells = <0>; 1175 1191 status = "disabled"; 1176 1192 }; 1177 1193 ··· 1479 1441 clocks = <&cru SCLK_I2S2_8CH>, <&cru HCLK_I2S2_8CH>; 1480 1442 power-domains = <&power RK3399_PD_SDIOAUDIO>; 1481 1443 status = "disabled"; 1444 + }; 1445 + 1446 + vopl: vop@ff8f0000 { 1447 + compatible = "rockchip,rk3399-vop-lit"; 1448 + reg = <0x0 0xff8f0000 0x0 0x3efc>; 1449 + interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH 0>; 1450 + assigned-clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>; 1451 + assigned-clock-rates = <400000000>, <100000000>; 1452 + clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>; 1453 + clock-names = "aclk_vop", "dclk_vop", "hclk_vop"; 1454 + iommus = <&vopl_mmu>; 1455 + power-domains = <&power RK3399_PD_VOPL>; 1456 + resets = <&cru SRST_A_VOP1>, <&cru SRST_H_VOP1>, <&cru SRST_D_VOP1>; 1457 + reset-names = "axi", "ahb", "dclk"; 1458 + status = "disabled"; 1459 + 1460 + vopl_out: port { 1461 + #address-cells = <1>; 1462 + #size-cells = <0>; 1463 + 1464 + vopl_out_mipi: endpoint@0 { 1465 + reg = <0>; 1466 + remote-endpoint = <&mipi_in_vopl>; 1467 + }; 1468 + 1469 + vopl_out_edp: endpoint@1 { 1470 + reg = <1>; 1471 + remote-endpoint = <&edp_in_vopl>; 1472 + }; 1473 + 1474 + vopl_out_hdmi: endpoint@2 { 1475 + reg = <2>; 1476 + remote-endpoint = <&hdmi_in_vopl>; 1477 + }; 1478 + }; 1479 + }; 1480 + 1481 + vopl_mmu: iommu@ff8f3f00 { 1482 + compatible = "rockchip,iommu"; 1483 + reg = <0x0 0xff8f3f00 0x0 0x100>; 1484 + interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH 0>; 1485 + interrupt-names = "vopl_mmu"; 1486 + clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>; 1487 + clock-names = "aclk", "hclk"; 1488 + power-domains = <&power RK3399_PD_VOPL>; 1489 + #iommu-cells = <0>; 1490 + status = "disabled"; 1491 + }; 1492 + 1493 + vopb: vop@ff900000 { 1494 + compatible = "rockchip,rk3399-vop-big"; 1495 + reg = <0x0 0xff900000 0x0 0x3efc>; 1496 + interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>; 1497 + assigned-clocks = <&cru ACLK_VOP0>, <&cru HCLK_VOP0>; 1498 + assigned-clock-rates = <400000000>, <100000000>; 1499 + clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>; 1500 + clock-names = "aclk_vop", "dclk_vop", "hclk_vop"; 1501 + iommus = <&vopb_mmu>; 1502 + power-domains = <&power RK3399_PD_VOPB>; 1503 + resets = <&cru SRST_A_VOP0>, <&cru SRST_H_VOP0>, <&cru SRST_D_VOP0>; 1504 + reset-names = "axi", "ahb", "dclk"; 1505 + status = "disabled"; 1506 + 1507 + vopb_out: port { 1508 + #address-cells = <1>; 1509 + #size-cells = <0>; 1510 + 1511 + vopb_out_edp: endpoint@0 { 1512 + reg = <0>; 1513 + remote-endpoint = <&edp_in_vopb>; 1514 + }; 1515 + 1516 + vopb_out_mipi: endpoint@1 { 1517 + reg = <1>; 1518 + remote-endpoint = <&mipi_in_vopb>; 1519 + }; 1520 + 1521 + vopb_out_hdmi: endpoint@2 { 1522 + reg = <2>; 1523 + remote-endpoint = <&hdmi_in_vopb>; 1524 + }; 1525 + }; 1526 + }; 1527 + 1528 + vopb_mmu: iommu@ff903f00 { 1529 + compatible = "rockchip,iommu"; 1530 + reg = <0x0 0xff903f00 0x0 0x100>; 1531 + interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>; 1532 + interrupt-names = "vopb_mmu"; 1533 + clocks = <&cru ACLK_VOP0>, <&cru HCLK_VOP0>; 1534 + clock-names = "aclk", "hclk"; 1535 + power-domains = <&power RK3399_PD_VOPB>; 1536 + #iommu-cells = <0>; 1537 + status = "disabled"; 1538 + }; 1539 + 1540 + isp0_mmu: iommu@ff914000 { 1541 + compatible = "rockchip,iommu"; 1542 + reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>; 1543 + interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>; 1544 + interrupt-names = "isp0_mmu"; 1545 + #iommu-cells = <0>; 1546 + rockchip,disable-mmu-reset; 1547 + status = "disabled"; 1548 + }; 1549 + 1550 + isp1_mmu: iommu@ff924000 { 1551 + compatible = "rockchip,iommu"; 1552 + reg = <0x0 0xff924000 0x0 0x100>, <0x0 0xff925000 0x0 0x100>; 1553 + interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH 0>; 1554 + interrupt-names = "isp1_mmu"; 1555 + #iommu-cells = <0>; 1556 + rockchip,disable-mmu-reset; 1557 + status = "disabled"; 1558 + }; 1559 + 1560 + hdmi: hdmi@ff940000 { 1561 + compatible = "rockchip,rk3399-dw-hdmi"; 1562 + reg = <0x0 0xff940000 0x0 0x20000>; 1563 + interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>; 1564 + clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_SFR>, <&cru PLL_VPLL>, <&cru PCLK_VIO_GRF>; 1565 + clock-names = "iahb", "isfr", "vpll", "grf"; 1566 + power-domains = <&power RK3399_PD_HDCP>; 1567 + reg-io-width = <4>; 1568 + rockchip,grf = <&grf>; 1569 + status = "disabled"; 1570 + 1571 + ports { 1572 + hdmi_in: port { 1573 + #address-cells = <1>; 1574 + #size-cells = <0>; 1575 + 1576 + hdmi_in_vopb: endpoint@0 { 1577 + reg = <0>; 1578 + remote-endpoint = <&vopb_out_hdmi>; 1579 + }; 1580 + hdmi_in_vopl: endpoint@1 { 1581 + reg = <1>; 1582 + remote-endpoint = <&vopl_out_hdmi>; 1583 + }; 1584 + }; 1585 + }; 1586 + }; 1587 + 1588 + mipi_dsi: mipi@ff960000 { 1589 + compatible = "rockchip,rk3399-mipi-dsi", "snps,dw-mipi-dsi"; 1590 + reg = <0x0 0xff960000 0x0 0x8000>; 1591 + interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH 0>; 1592 + clocks = <&cru SCLK_MIPIDPHY_REF>, <&cru PCLK_MIPI_DSI0>, 1593 + <&cru SCLK_DPHY_TX0_CFG>; 1594 + clock-names = "ref", "pclk", "phy_cfg"; 1595 + power-domains = <&power RK3399_PD_VIO>; 1596 + rockchip,grf = <&grf>; 1597 + status = "disabled"; 1598 + 1599 + ports { 1600 + mipi_in: port { 1601 + #address-cells = <1>; 1602 + #size-cells = <0>; 1603 + 1604 + mipi_in_vopb: endpoint@0 { 1605 + reg = <0>; 1606 + remote-endpoint = <&vopb_out_mipi>; 1607 + }; 1608 + mipi_in_vopl: endpoint@1 { 1609 + reg = <1>; 1610 + remote-endpoint = <&vopl_out_mipi>; 1611 + }; 1612 + }; 1613 + }; 1614 + }; 1615 + 1616 + edp: edp@ff970000 { 1617 + compatible = "rockchip,rk3399-edp"; 1618 + reg = <0x0 0xff970000 0x0 0x8000>; 1619 + interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH 0>; 1620 + clocks = <&cru PCLK_EDP>, <&cru PCLK_EDP_CTRL>; 1621 + clock-names = "dp", "pclk"; 1622 + pinctrl-names = "default"; 1623 + pinctrl-0 = <&edp_hpd>; 1624 + power-domains = <&power RK3399_PD_EDP>; 1625 + resets = <&cru SRST_P_EDP_CTRL>; 1626 + reset-names = "dp"; 1627 + rockchip,grf = <&grf>; 1628 + status = "disabled"; 1629 + 1630 + ports { 1631 + #address-cells = <1>; 1632 + #size-cells = <0>; 1633 + edp_in: port@0 { 1634 + reg = <0>; 1635 + #address-cells = <1>; 1636 + #size-cells = <0>; 1637 + 1638 + edp_in_vopb: endpoint@0 { 1639 + reg = <0>; 1640 + remote-endpoint = <&vopb_out_edp>; 1641 + }; 1642 + 1643 + edp_in_vopl: endpoint@1 { 1644 + reg = <1>; 1645 + remote-endpoint = <&vopl_out_edp>; 1646 + }; 1647 + }; 1648 + }; 1482 1649 }; 1483 1650 1484 1651 gpu: gpu@ff9a0000 {