1dcc8c66bSPeter Geis// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2dcc8c66bSPeter Geis 3dcc8c66bSPeter Geis/dts-v1/; 4dcc8c66bSPeter Geis 5dcc8c66bSPeter Geis#include <dt-bindings/gpio/gpio.h> 6dcc8c66bSPeter Geis#include <dt-bindings/pinctrl/rockchip.h> 7d99efdabSNicolas Frattaroli#include <dt-bindings/soc/rockchip,vop2.h> 8dcc8c66bSPeter Geis#include "rk3566.dtsi" 9dcc8c66bSPeter Geis 10dcc8c66bSPeter Geis/ { 11adbc5e6bSDragan Simic model = "Pine64 Quartz64 Model B"; 12dcc8c66bSPeter Geis compatible = "pine64,quartz64-b", "rockchip,rk3566"; 13dcc8c66bSPeter Geis 14dcc8c66bSPeter Geis aliases { 15dcc8c66bSPeter Geis ethernet0 = &gmac1; 16dcc8c66bSPeter Geis mmc0 = &sdmmc0; 17dcc8c66bSPeter Geis mmc1 = &sdhci; 18dcc8c66bSPeter Geis mmc2 = &sdmmc1; 19dcc8c66bSPeter Geis }; 20dcc8c66bSPeter Geis 21dcc8c66bSPeter Geis chosen: chosen { 22dcc8c66bSPeter Geis stdout-path = "serial2:1500000n8"; 23dcc8c66bSPeter Geis }; 24dcc8c66bSPeter Geis 25dcc8c66bSPeter Geis gmac1_clkin: external-gmac1-clock { 26dcc8c66bSPeter Geis compatible = "fixed-clock"; 27dcc8c66bSPeter Geis clock-frequency = <125000000>; 28dcc8c66bSPeter Geis clock-output-names = "gmac1_clkin"; 29dcc8c66bSPeter Geis #clock-cells = <0>; 30dcc8c66bSPeter Geis }; 31dcc8c66bSPeter Geis 32d99efdabSNicolas Frattaroli hdmi-con { 33d99efdabSNicolas Frattaroli compatible = "hdmi-connector"; 34d99efdabSNicolas Frattaroli type = "a"; 35d99efdabSNicolas Frattaroli 36d99efdabSNicolas Frattaroli port { 37d99efdabSNicolas Frattaroli hdmi_con_in: endpoint { 38d99efdabSNicolas Frattaroli remote-endpoint = <&hdmi_out_con>; 39d99efdabSNicolas Frattaroli }; 40d99efdabSNicolas Frattaroli }; 41d99efdabSNicolas Frattaroli }; 42d99efdabSNicolas Frattaroli 43dcc8c66bSPeter Geis leds { 44dcc8c66bSPeter Geis compatible = "gpio-leds"; 45dcc8c66bSPeter Geis 46dcc8c66bSPeter Geis led-user { 47dcc8c66bSPeter Geis label = "user-led"; 48dcc8c66bSPeter Geis default-state = "on"; 49dcc8c66bSPeter Geis gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; 50dcc8c66bSPeter Geis linux,default-trigger = "heartbeat"; 51dcc8c66bSPeter Geis pinctrl-names = "default"; 52dcc8c66bSPeter Geis pinctrl-0 = <&user_led_enable_h>; 53dcc8c66bSPeter Geis retain-state-suspended; 54dcc8c66bSPeter Geis }; 55dcc8c66bSPeter Geis }; 56dcc8c66bSPeter Geis 57db7ad415SNicolas Frattaroli sound { 58db7ad415SNicolas Frattaroli compatible = "simple-audio-card"; 59db7ad415SNicolas Frattaroli simple-audio-card,format = "i2s"; 60db7ad415SNicolas Frattaroli simple-audio-card,name = "Analog RK809"; 61db7ad415SNicolas Frattaroli simple-audio-card,mclk-fs = <256>; 62db7ad415SNicolas Frattaroli 63db7ad415SNicolas Frattaroli simple-audio-card,cpu { 64db7ad415SNicolas Frattaroli sound-dai = <&i2s1_8ch>; 65db7ad415SNicolas Frattaroli }; 66db7ad415SNicolas Frattaroli 67db7ad415SNicolas Frattaroli simple-audio-card,codec { 68db7ad415SNicolas Frattaroli sound-dai = <&rk809>; 69db7ad415SNicolas Frattaroli }; 70db7ad415SNicolas Frattaroli }; 71db7ad415SNicolas Frattaroli 72dcc8c66bSPeter Geis sdio_pwrseq: sdio-pwrseq { 73dcc8c66bSPeter Geis status = "okay"; 74dcc8c66bSPeter Geis compatible = "mmc-pwrseq-simple"; 75dcc8c66bSPeter Geis clocks = <&rk809 1>; 76dcc8c66bSPeter Geis clock-names = "ext_clock"; 77dcc8c66bSPeter Geis pinctrl-names = "default"; 78dcc8c66bSPeter Geis pinctrl-0 = <&wifi_enable_h>; 79dcc8c66bSPeter Geis reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>; 80dcc8c66bSPeter Geis post-power-on-delay-ms = <100>; 81dcc8c66bSPeter Geis power-off-delay-us = <5000000>; 82dcc8c66bSPeter Geis }; 83dcc8c66bSPeter Geis 845c96e633SJohan Jonker vcc3v3_pcie_p: regulator-vcc3v3-pcie-p { 85cd4e5f30SNicolas Frattaroli compatible = "regulator-fixed"; 86cd4e5f30SNicolas Frattaroli enable-active-high; 87cd4e5f30SNicolas Frattaroli gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; 88cd4e5f30SNicolas Frattaroli pinctrl-names = "default"; 89cd4e5f30SNicolas Frattaroli pinctrl-0 = <&pcie_enable_h>; 90cd4e5f30SNicolas Frattaroli regulator-name = "vcc3v3_pcie_p"; 91cd4e5f30SNicolas Frattaroli regulator-min-microvolt = <3300000>; 92cd4e5f30SNicolas Frattaroli regulator-max-microvolt = <3300000>; 93cd4e5f30SNicolas Frattaroli vin-supply = <&vcc_3v3>; 94cd4e5f30SNicolas Frattaroli }; 95cd4e5f30SNicolas Frattaroli 965c96e633SJohan Jonker vcc5v0_in: regulator-vcc5v0-in { 97dcc8c66bSPeter Geis compatible = "regulator-fixed"; 98dcc8c66bSPeter Geis regulator-name = "vcc5v0_in"; 99dcc8c66bSPeter Geis regulator-always-on; 100dcc8c66bSPeter Geis regulator-boot-on; 101dcc8c66bSPeter Geis regulator-min-microvolt = <5000000>; 102dcc8c66bSPeter Geis regulator-max-microvolt = <5000000>; 103dcc8c66bSPeter Geis }; 104dcc8c66bSPeter Geis 1055c96e633SJohan Jonker vcc5v0_sys: regulator-vcc5v0-sys { 106dcc8c66bSPeter Geis compatible = "regulator-fixed"; 107dcc8c66bSPeter Geis regulator-name = "vcc5v0_sys"; 108dcc8c66bSPeter Geis regulator-always-on; 109dcc8c66bSPeter Geis regulator-boot-on; 110dcc8c66bSPeter Geis regulator-min-microvolt = <5000000>; 111dcc8c66bSPeter Geis regulator-max-microvolt = <5000000>; 112dcc8c66bSPeter Geis vin-supply = <&vcc5v0_in>; 113dcc8c66bSPeter Geis }; 114dcc8c66bSPeter Geis 1155c96e633SJohan Jonker vcc3v3_sys: regulator-vcc3v3-sys { 116dcc8c66bSPeter Geis compatible = "regulator-fixed"; 117dcc8c66bSPeter Geis regulator-name = "vcc3v3_sys"; 118dcc8c66bSPeter Geis regulator-min-microvolt = <3300000>; 119dcc8c66bSPeter Geis regulator-max-microvolt = <3300000>; 120dcc8c66bSPeter Geis regulator-always-on; 121dcc8c66bSPeter Geis vin-supply = <&vcc5v0_sys>; 122dcc8c66bSPeter Geis }; 123dcc8c66bSPeter Geis 1245c96e633SJohan Jonker vcc5v0_usb30_host: regulator-vcc5v0-usb30-host { 125dcc8c66bSPeter Geis compatible = "regulator-fixed"; 126dcc8c66bSPeter Geis regulator-name = "vcc5v0_usb30_host"; 127dcc8c66bSPeter Geis enable-active-high; 128dcc8c66bSPeter Geis gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>; 129dcc8c66bSPeter Geis pinctrl-names = "default"; 130dcc8c66bSPeter Geis pinctrl-0 = <&vcc5v0_usb30_host_en_h>; 131dcc8c66bSPeter Geis regulator-always-on; 132dcc8c66bSPeter Geis regulator-min-microvolt = <5000000>; 133dcc8c66bSPeter Geis regulator-max-microvolt = <5000000>; 134dcc8c66bSPeter Geis vin-supply = <&vcc5v0_sys>; 135dcc8c66bSPeter Geis }; 136dcc8c66bSPeter Geis 1375c96e633SJohan Jonker vcc5v0_usb_otg: regulator-vcc5v0-usb-otg { 138dcc8c66bSPeter Geis compatible = "regulator-fixed"; 139dcc8c66bSPeter Geis regulator-name = "vcc5v0_usb_otg"; 140dcc8c66bSPeter Geis enable-active-high; 141dcc8c66bSPeter Geis gpio = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>; 142dcc8c66bSPeter Geis pinctrl-names = "default"; 143dcc8c66bSPeter Geis pinctrl-0 = <&vcc5v0_usb_otg_en_h>; 144dcc8c66bSPeter Geis regulator-always-on; 145dcc8c66bSPeter Geis regulator-min-microvolt = <5000000>; 146dcc8c66bSPeter Geis regulator-max-microvolt = <5000000>; 147dcc8c66bSPeter Geis vin-supply = <&vcc5v0_sys>; 148dcc8c66bSPeter Geis }; 149dcc8c66bSPeter Geis}; 150dcc8c66bSPeter Geis 151dcc8c66bSPeter Geis&combphy1 { 152dcc8c66bSPeter Geis status = "okay"; 153dcc8c66bSPeter Geis}; 154dcc8c66bSPeter Geis 155cd4e5f30SNicolas Frattaroli&combphy2 { 156cd4e5f30SNicolas Frattaroli status = "okay"; 157cd4e5f30SNicolas Frattaroli}; 158cd4e5f30SNicolas Frattaroli 159dcc8c66bSPeter Geis&cpu0 { 160dcc8c66bSPeter Geis cpu-supply = <&vdd_cpu>; 161dcc8c66bSPeter Geis}; 162dcc8c66bSPeter Geis 163dcc8c66bSPeter Geis&cpu1 { 164dcc8c66bSPeter Geis cpu-supply = <&vdd_cpu>; 165dcc8c66bSPeter Geis}; 166dcc8c66bSPeter Geis 167dcc8c66bSPeter Geis&cpu2 { 168dcc8c66bSPeter Geis cpu-supply = <&vdd_cpu>; 169dcc8c66bSPeter Geis}; 170dcc8c66bSPeter Geis 171dcc8c66bSPeter Geis&cpu3 { 172dcc8c66bSPeter Geis cpu-supply = <&vdd_cpu>; 173dcc8c66bSPeter Geis}; 174dcc8c66bSPeter Geis 175dcc8c66bSPeter Geis&gmac1 { 176e857cdedSDragan Simic assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, 177e857cdedSDragan Simic <&cru SCLK_GMAC1_RGMII_SPEED>, 178e857cdedSDragan Simic <&cru SCLK_GMAC1>; 179e857cdedSDragan Simic assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, 180e857cdedSDragan Simic <&cru SCLK_GMAC1>, 181e857cdedSDragan Simic <&gmac1_clkin>; 182dcc8c66bSPeter Geis clock_in_out = "input"; 18316bc4d19SPeter Geis phy-mode = "rgmii"; 184dcc8c66bSPeter Geis phy-supply = <&vcc_3v3>; 185dcc8c66bSPeter Geis pinctrl-names = "default"; 186dcc8c66bSPeter Geis pinctrl-0 = <&gmac1m1_miim 187dcc8c66bSPeter Geis &gmac1m1_tx_bus2 188dcc8c66bSPeter Geis &gmac1m1_rx_bus2 189dcc8c66bSPeter Geis &gmac1m1_rgmii_clk 190dcc8c66bSPeter Geis &gmac1m1_clkinout 191dcc8c66bSPeter Geis &gmac1m1_rgmii_bus>; 192dcc8c66bSPeter Geis snps,reset-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; 193dcc8c66bSPeter Geis snps,reset-active-low; 194dcc8c66bSPeter Geis /* Reset time is 20ms, 100ms for rtl8211f, also works well here */ 195dcc8c66bSPeter Geis snps,reset-delays-us = <0 20000 100000>; 196dcc8c66bSPeter Geis tx_delay = <0x4f>; 197dcc8c66bSPeter Geis rx_delay = <0x24>; 198dcc8c66bSPeter Geis phy-handle = <&rgmii_phy1>; 199dcc8c66bSPeter Geis status = "okay"; 200dcc8c66bSPeter Geis}; 201dcc8c66bSPeter Geis 202d99efdabSNicolas Frattaroli&gpu { 203d99efdabSNicolas Frattaroli mali-supply = <&vdd_gpu>; 204d99efdabSNicolas Frattaroli status = "okay"; 205d99efdabSNicolas Frattaroli}; 206d99efdabSNicolas Frattaroli 207d99efdabSNicolas Frattaroli&hdmi { 208d99efdabSNicolas Frattaroli avdd-0v9-supply = <&vdda0v9_image>; 209d99efdabSNicolas Frattaroli avdd-1v8-supply = <&vcca1v8_image>; 210d99efdabSNicolas Frattaroli status = "okay"; 211d99efdabSNicolas Frattaroli}; 212d99efdabSNicolas Frattaroli 213d99efdabSNicolas Frattaroli&hdmi_in { 214d99efdabSNicolas Frattaroli hdmi_in_vp0: endpoint { 215d99efdabSNicolas Frattaroli remote-endpoint = <&vp0_out_hdmi>; 216d99efdabSNicolas Frattaroli }; 217d99efdabSNicolas Frattaroli}; 218d99efdabSNicolas Frattaroli 219d99efdabSNicolas Frattaroli&hdmi_out { 220d99efdabSNicolas Frattaroli hdmi_out_con: endpoint { 221d99efdabSNicolas Frattaroli remote-endpoint = <&hdmi_con_in>; 222d99efdabSNicolas Frattaroli }; 223d99efdabSNicolas Frattaroli}; 224d99efdabSNicolas Frattaroli 225d99efdabSNicolas Frattaroli&hdmi_sound { 226d99efdabSNicolas Frattaroli status = "okay"; 227d99efdabSNicolas Frattaroli}; 228d99efdabSNicolas Frattaroli 229dcc8c66bSPeter Geis&i2c0 { 230dcc8c66bSPeter Geis status = "okay"; 231dcc8c66bSPeter Geis 232dcc8c66bSPeter Geis vdd_cpu: regulator@1c { 233dcc8c66bSPeter Geis compatible = "tcs,tcs4525"; 234dcc8c66bSPeter Geis reg = <0x1c>; 235dcc8c66bSPeter Geis fcs,suspend-voltage-selector = <1>; 236dcc8c66bSPeter Geis regulator-name = "vdd_cpu"; 237dcc8c66bSPeter Geis regulator-min-microvolt = <800000>; 238dcc8c66bSPeter Geis regulator-max-microvolt = <1150000>; 239dcc8c66bSPeter Geis regulator-ramp-delay = <2300>; 240dcc8c66bSPeter Geis regulator-always-on; 241dcc8c66bSPeter Geis regulator-boot-on; 242dcc8c66bSPeter Geis vin-supply = <&vcc5v0_sys>; 243dcc8c66bSPeter Geis 244dcc8c66bSPeter Geis regulator-state-mem { 245dcc8c66bSPeter Geis regulator-off-in-suspend; 246dcc8c66bSPeter Geis }; 247dcc8c66bSPeter Geis }; 248dcc8c66bSPeter Geis 249dcc8c66bSPeter Geis rk809: pmic@20 { 250dcc8c66bSPeter Geis compatible = "rockchip,rk809"; 251dcc8c66bSPeter Geis reg = <0x20>; 252dcc8c66bSPeter Geis interrupt-parent = <&gpio0>; 253562105c1SChen-Yu Tsai interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; 254db7ad415SNicolas Frattaroli assigned-clocks = <&cru I2S1_MCLKOUT_TX>; 255db7ad415SNicolas Frattaroli assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>; 256db7ad415SNicolas Frattaroli clock-names = "mclk"; 257db7ad415SNicolas Frattaroli clocks = <&cru I2S1_MCLKOUT_TX>; 258dcc8c66bSPeter Geis clock-output-names = "rk808-clkout1", "rk808-clkout2"; 259dcc8c66bSPeter Geis 260dcc8c66bSPeter Geis pinctrl-names = "default"; 261db7ad415SNicolas Frattaroli pinctrl-0 = <&pmic_int>, <&i2s1m0_mclk>; 262b99ac7e2SDiederik de Haas system-power-controller; 263db7ad415SNicolas Frattaroli #sound-dai-cells = <0>; 264dcc8c66bSPeter Geis wakeup-source; 265dcc8c66bSPeter Geis #clock-cells = <1>; 266dcc8c66bSPeter Geis 267dcc8c66bSPeter Geis vcc1-supply = <&vcc3v3_sys>; 268dcc8c66bSPeter Geis vcc2-supply = <&vcc3v3_sys>; 269dcc8c66bSPeter Geis vcc3-supply = <&vcc3v3_sys>; 270dcc8c66bSPeter Geis vcc4-supply = <&vcc3v3_sys>; 271dcc8c66bSPeter Geis vcc5-supply = <&vcc3v3_sys>; 272dcc8c66bSPeter Geis vcc6-supply = <&vcc3v3_sys>; 273dcc8c66bSPeter Geis vcc7-supply = <&vcc3v3_sys>; 274dcc8c66bSPeter Geis vcc8-supply = <&vcc3v3_sys>; 275dcc8c66bSPeter Geis vcc9-supply = <&vcc3v3_sys>; 276dcc8c66bSPeter Geis 277dcc8c66bSPeter Geis regulators { 278dcc8c66bSPeter Geis vdd_log: DCDC_REG1 { 279dcc8c66bSPeter Geis regulator-name = "vdd_log"; 280dcc8c66bSPeter Geis regulator-always-on; 281dcc8c66bSPeter Geis regulator-boot-on; 282dcc8c66bSPeter Geis regulator-min-microvolt = <500000>; 283dcc8c66bSPeter Geis regulator-max-microvolt = <1350000>; 284dcc8c66bSPeter Geis regulator-ramp-delay = <6001>; 285dcc8c66bSPeter Geis 286dcc8c66bSPeter Geis regulator-state-mem { 287dcc8c66bSPeter Geis regulator-on-in-suspend; 288dcc8c66bSPeter Geis regulator-suspend-microvolt = <900000>; 289dcc8c66bSPeter Geis }; 290dcc8c66bSPeter Geis }; 291dcc8c66bSPeter Geis 292dcc8c66bSPeter Geis vdd_gpu: DCDC_REG2 { 293dcc8c66bSPeter Geis regulator-name = "vdd_gpu"; 294dcc8c66bSPeter Geis regulator-always-on; 295dcc8c66bSPeter Geis regulator-boot-on; 296d201c92bSDragan Simic regulator-min-microvolt = <500000>; 297dcc8c66bSPeter Geis regulator-max-microvolt = <1350000>; 298dcc8c66bSPeter Geis regulator-ramp-delay = <6001>; 299dcc8c66bSPeter Geis 300dcc8c66bSPeter Geis regulator-state-mem { 301dcc8c66bSPeter Geis regulator-off-in-suspend; 302dcc8c66bSPeter Geis regulator-suspend-microvolt = <900000>; 303dcc8c66bSPeter Geis }; 304dcc8c66bSPeter Geis }; 305dcc8c66bSPeter Geis 306dcc8c66bSPeter Geis vcc_ddr: DCDC_REG3 { 307dcc8c66bSPeter Geis regulator-name = "vcc_ddr"; 308dcc8c66bSPeter Geis regulator-always-on; 309dcc8c66bSPeter Geis regulator-boot-on; 310dcc8c66bSPeter Geis regulator-initial-mode = <0x2>; 311dcc8c66bSPeter Geis regulator-state-mem { 312dcc8c66bSPeter Geis regulator-on-in-suspend; 313dcc8c66bSPeter Geis }; 314dcc8c66bSPeter Geis }; 315dcc8c66bSPeter Geis 316dcc8c66bSPeter Geis vdd_npu: DCDC_REG4 { 317dcc8c66bSPeter Geis regulator-name = "vdd_npu"; 318dcc8c66bSPeter Geis regulator-min-microvolt = <900000>; 319dcc8c66bSPeter Geis regulator-max-microvolt = <1350000>; 320dcc8c66bSPeter Geis regulator-initial-mode = <0x2>; 321dcc8c66bSPeter Geis regulator-state-mem { 322dcc8c66bSPeter Geis regulator-off-in-suspend; 323dcc8c66bSPeter Geis }; 324dcc8c66bSPeter Geis }; 325dcc8c66bSPeter Geis 326dcc8c66bSPeter Geis vcc_1v8: DCDC_REG5 { 327dcc8c66bSPeter Geis regulator-name = "vcc_1v8"; 328dcc8c66bSPeter Geis regulator-always-on; 329dcc8c66bSPeter Geis regulator-boot-on; 330dcc8c66bSPeter Geis regulator-min-microvolt = <1800000>; 331dcc8c66bSPeter Geis regulator-max-microvolt = <1800000>; 332dcc8c66bSPeter Geis 333dcc8c66bSPeter Geis regulator-state-mem { 334dcc8c66bSPeter Geis regulator-on-in-suspend; 335dcc8c66bSPeter Geis regulator-suspend-microvolt = <1800000>; 336dcc8c66bSPeter Geis }; 337dcc8c66bSPeter Geis }; 338dcc8c66bSPeter Geis 339dcc8c66bSPeter Geis vdda0v9_image: LDO_REG1 { 340dcc8c66bSPeter Geis regulator-name = "vdda0v9_image"; 341dcc8c66bSPeter Geis regulator-always-on; 342dcc8c66bSPeter Geis regulator-boot-on; 343dcc8c66bSPeter Geis regulator-min-microvolt = <900000>; 344dcc8c66bSPeter Geis regulator-max-microvolt = <900000>; 345dcc8c66bSPeter Geis 346dcc8c66bSPeter Geis regulator-state-mem { 347dcc8c66bSPeter Geis regulator-on-in-suspend; 348dcc8c66bSPeter Geis regulator-suspend-microvolt = <900000>; 349dcc8c66bSPeter Geis }; 350dcc8c66bSPeter Geis }; 351dcc8c66bSPeter Geis 352dcc8c66bSPeter Geis vdda_0v9: LDO_REG2 { 353dcc8c66bSPeter Geis regulator-name = "vdda_0v9"; 354dcc8c66bSPeter Geis regulator-always-on; 355dcc8c66bSPeter Geis regulator-boot-on; 356dcc8c66bSPeter Geis regulator-min-microvolt = <900000>; 357dcc8c66bSPeter Geis regulator-max-microvolt = <900000>; 358dcc8c66bSPeter Geis 359dcc8c66bSPeter Geis regulator-state-mem { 360dcc8c66bSPeter Geis regulator-on-in-suspend; 361dcc8c66bSPeter Geis regulator-suspend-microvolt = <900000>; 362dcc8c66bSPeter Geis }; 363dcc8c66bSPeter Geis }; 364dcc8c66bSPeter Geis 365dcc8c66bSPeter Geis vdda0v9_pmu: LDO_REG3 { 366dcc8c66bSPeter Geis regulator-name = "vdda0v9_pmu"; 367dcc8c66bSPeter Geis regulator-always-on; 368dcc8c66bSPeter Geis regulator-boot-on; 369dcc8c66bSPeter Geis regulator-min-microvolt = <900000>; 370dcc8c66bSPeter Geis regulator-max-microvolt = <900000>; 371dcc8c66bSPeter Geis regulator-state-mem { 372dcc8c66bSPeter Geis regulator-on-in-suspend; 373dcc8c66bSPeter Geis regulator-suspend-microvolt = <900000>; 374dcc8c66bSPeter Geis }; 375dcc8c66bSPeter Geis }; 376dcc8c66bSPeter Geis 377dcc8c66bSPeter Geis vccio_acodec: LDO_REG4 { 378dcc8c66bSPeter Geis regulator-name = "vccio_acodec"; 379dcc8c66bSPeter Geis regulator-always-on; 380dcc8c66bSPeter Geis regulator-boot-on; 381dcc8c66bSPeter Geis regulator-min-microvolt = <3300000>; 382dcc8c66bSPeter Geis regulator-max-microvolt = <3300000>; 383dcc8c66bSPeter Geis 384dcc8c66bSPeter Geis regulator-state-mem { 385dcc8c66bSPeter Geis regulator-on-in-suspend; 386dcc8c66bSPeter Geis regulator-suspend-microvolt = <3300000>; 387dcc8c66bSPeter Geis 388dcc8c66bSPeter Geis }; 389dcc8c66bSPeter Geis }; 390dcc8c66bSPeter Geis 391dcc8c66bSPeter Geis vccio_sd: LDO_REG5 { 392dcc8c66bSPeter Geis regulator-name = "vccio_sd"; 393dcc8c66bSPeter Geis regulator-always-on; 394dcc8c66bSPeter Geis regulator-boot-on; 395dcc8c66bSPeter Geis regulator-min-microvolt = <1800000>; 396dcc8c66bSPeter Geis regulator-max-microvolt = <3300000>; 397dcc8c66bSPeter Geis 398dcc8c66bSPeter Geis regulator-state-mem { 399dcc8c66bSPeter Geis regulator-on-in-suspend; 400dcc8c66bSPeter Geis regulator-suspend-microvolt = <3300000>; 401dcc8c66bSPeter Geis }; 402dcc8c66bSPeter Geis }; 403dcc8c66bSPeter Geis 404dcc8c66bSPeter Geis vcc3v3_pmu: LDO_REG6 { 405dcc8c66bSPeter Geis regulator-name = "vcc3v3_pmu"; 406dcc8c66bSPeter Geis regulator-always-on; 407dcc8c66bSPeter Geis regulator-boot-on; 408dcc8c66bSPeter Geis regulator-min-microvolt = <3300000>; 409dcc8c66bSPeter Geis regulator-max-microvolt = <3300000>; 410dcc8c66bSPeter Geis 411dcc8c66bSPeter Geis regulator-state-mem { 412dcc8c66bSPeter Geis regulator-on-in-suspend; 413dcc8c66bSPeter Geis regulator-suspend-microvolt = <3300000>; 414dcc8c66bSPeter Geis }; 415dcc8c66bSPeter Geis }; 416dcc8c66bSPeter Geis 417dcc8c66bSPeter Geis vcca_1v8: LDO_REG7 { 418dcc8c66bSPeter Geis regulator-name = "vcca_1v8"; 419dcc8c66bSPeter Geis regulator-always-on; 420dcc8c66bSPeter Geis regulator-boot-on; 421dcc8c66bSPeter Geis regulator-min-microvolt = <1800000>; 422dcc8c66bSPeter Geis regulator-max-microvolt = <1800000>; 423dcc8c66bSPeter Geis 424dcc8c66bSPeter Geis regulator-state-mem { 425dcc8c66bSPeter Geis regulator-on-in-suspend; 426dcc8c66bSPeter Geis regulator-suspend-microvolt = <1800000>; 427dcc8c66bSPeter Geis }; 428dcc8c66bSPeter Geis }; 429dcc8c66bSPeter Geis 430dcc8c66bSPeter Geis vcca1v8_pmu: LDO_REG8 { 431dcc8c66bSPeter Geis regulator-name = "vcca1v8_pmu"; 432dcc8c66bSPeter Geis regulator-always-on; 433dcc8c66bSPeter Geis regulator-boot-on; 434dcc8c66bSPeter Geis regulator-min-microvolt = <1800000>; 435dcc8c66bSPeter Geis regulator-max-microvolt = <1800000>; 436dcc8c66bSPeter Geis 437dcc8c66bSPeter Geis regulator-state-mem { 438dcc8c66bSPeter Geis regulator-on-in-suspend; 439dcc8c66bSPeter Geis regulator-suspend-microvolt = <1800000>; 440dcc8c66bSPeter Geis }; 441dcc8c66bSPeter Geis }; 442dcc8c66bSPeter Geis 443dcc8c66bSPeter Geis vcca1v8_image: LDO_REG9 { 444dcc8c66bSPeter Geis regulator-name = "vcca1v8_image"; 445dcc8c66bSPeter Geis regulator-always-on; 446dcc8c66bSPeter Geis regulator-boot-on; 447dcc8c66bSPeter Geis regulator-min-microvolt = <1800000>; 448dcc8c66bSPeter Geis regulator-max-microvolt = <1800000>; 449dcc8c66bSPeter Geis 450dcc8c66bSPeter Geis regulator-state-mem { 451dcc8c66bSPeter Geis regulator-on-in-suspend; 452dcc8c66bSPeter Geis regulator-suspend-microvolt = <1800000>; 453dcc8c66bSPeter Geis }; 454dcc8c66bSPeter Geis }; 455dcc8c66bSPeter Geis 456dcc8c66bSPeter Geis vcc_3v3: SWITCH_REG1 { 457dcc8c66bSPeter Geis regulator-boot-on; 458dcc8c66bSPeter Geis regulator-name = "vcc_3v3"; 459dcc8c66bSPeter Geis }; 460dcc8c66bSPeter Geis 461dcc8c66bSPeter Geis vcc3v3_sd: SWITCH_REG2 { 462dcc8c66bSPeter Geis regulator-name = "vcc3v3_sd"; 463dcc8c66bSPeter Geis }; 464dcc8c66bSPeter Geis }; 465dcc8c66bSPeter Geis }; 466dcc8c66bSPeter Geis}; 467dcc8c66bSPeter Geis 468dcc8c66bSPeter Geis/* i2c2_m1 exposed on csi port, pulled up to vcc_3v3 */ 469dcc8c66bSPeter Geis&i2c2 { 470dcc8c66bSPeter Geis pinctrl-names = "default"; 471dcc8c66bSPeter Geis pinctrl-0 = <&i2c2m1_xfer>; 472dcc8c66bSPeter Geis status = "okay"; 473dcc8c66bSPeter Geis}; 474dcc8c66bSPeter Geis 475dcc8c66bSPeter Geis/* i2c3_m1 exposed on dsi port, pulled up to vcc_3v3 */ 476dcc8c66bSPeter Geis&i2c3 { 477dcc8c66bSPeter Geis pinctrl-names = "default"; 478dcc8c66bSPeter Geis pinctrl-0 = <&i2c3m1_xfer>; 479dcc8c66bSPeter Geis status = "okay"; 480dcc8c66bSPeter Geis}; 481dcc8c66bSPeter Geis 482dcc8c66bSPeter Geis/* 483dcc8c66bSPeter Geis * i2c4_m0 is exposed on PI40, pulled up to vcc_3v3 484dcc8c66bSPeter Geis * pin 27 - i2c4_sda_m0 485dcc8c66bSPeter Geis * pin 28 - i2c4_scl_m0 486dcc8c66bSPeter Geis */ 487dcc8c66bSPeter Geis&i2c4 { 488dcc8c66bSPeter Geis status = "okay"; 489dcc8c66bSPeter Geis}; 490dcc8c66bSPeter Geis 491dcc8c66bSPeter Geis/* 492dcc8c66bSPeter Geis * i2c5_m0 is exposed on PI40 493dcc8c66bSPeter Geis * pin 29 - i2c5_scl_m0 494dcc8c66bSPeter Geis * pin 31 - i2c5_sda_m0 495dcc8c66bSPeter Geis */ 496dcc8c66bSPeter Geis&i2c5 { 497dcc8c66bSPeter Geis status = "disabled"; 498dcc8c66bSPeter Geis}; 499dcc8c66bSPeter Geis 500d99efdabSNicolas Frattaroli&i2s0_8ch { 501d99efdabSNicolas Frattaroli status = "okay"; 502d99efdabSNicolas Frattaroli}; 503d99efdabSNicolas Frattaroli 504db7ad415SNicolas Frattaroli&i2s1_8ch { 505db7ad415SNicolas Frattaroli pinctrl-names = "default"; 506db7ad415SNicolas Frattaroli pinctrl-0 = <&i2s1m0_sclktx 507db7ad415SNicolas Frattaroli &i2s1m0_lrcktx 508db7ad415SNicolas Frattaroli &i2s1m0_sdi0 509db7ad415SNicolas Frattaroli &i2s1m0_sdo0>; 510db7ad415SNicolas Frattaroli rockchip,trcm-sync-tx-only; 511db7ad415SNicolas Frattaroli status = "okay"; 512db7ad415SNicolas Frattaroli}; 513db7ad415SNicolas Frattaroli 514dcc8c66bSPeter Geis&mdio1 { 515dcc8c66bSPeter Geis rgmii_phy1: ethernet-phy@1 { 516dcc8c66bSPeter Geis compatible = "ethernet-phy-ieee802.3-c22"; 517dcc8c66bSPeter Geis reg = <0x1>; 518dcc8c66bSPeter Geis }; 519dcc8c66bSPeter Geis}; 520dcc8c66bSPeter Geis 521cd4e5f30SNicolas Frattaroli&pcie2x1 { 522cd4e5f30SNicolas Frattaroli pinctrl-names = "default"; 523cd4e5f30SNicolas Frattaroli pinctrl-0 = <&pcie_reset_h>; 524cd4e5f30SNicolas Frattaroli reset-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>; 525cd4e5f30SNicolas Frattaroli vpcie3v3-supply = <&vcc3v3_pcie_p>; 526cd4e5f30SNicolas Frattaroli status = "okay"; 527cd4e5f30SNicolas Frattaroli}; 528cd4e5f30SNicolas Frattaroli 529dcc8c66bSPeter Geis&pinctrl { 530dcc8c66bSPeter Geis bt { 531dcc8c66bSPeter Geis bt_enable_h: bt-enable-h { 532dcc8c66bSPeter Geis rockchip,pins = <0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>; 533dcc8c66bSPeter Geis }; 534dcc8c66bSPeter Geis 535dcc8c66bSPeter Geis bt_host_wake_l: bt-host-wake-l { 536dcc8c66bSPeter Geis rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_down>; 537dcc8c66bSPeter Geis }; 538dcc8c66bSPeter Geis 539dcc8c66bSPeter Geis bt_wake_l: bt-wake-l { 540dcc8c66bSPeter Geis rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>; 541dcc8c66bSPeter Geis }; 542dcc8c66bSPeter Geis }; 543dcc8c66bSPeter Geis 544dcc8c66bSPeter Geis leds { 545dcc8c66bSPeter Geis user_led_enable_h: user-led-enable-h { 546dcc8c66bSPeter Geis rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; 547dcc8c66bSPeter Geis }; 548dcc8c66bSPeter Geis }; 549dcc8c66bSPeter Geis 550cd4e5f30SNicolas Frattaroli pcie { 551cd4e5f30SNicolas Frattaroli pcie_enable_h: pcie-enable-h { 552cd4e5f30SNicolas Frattaroli rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; 553cd4e5f30SNicolas Frattaroli }; 554cd4e5f30SNicolas Frattaroli 555cd4e5f30SNicolas Frattaroli pcie_reset_h: pcie-reset-h { 556cd4e5f30SNicolas Frattaroli rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; 557cd4e5f30SNicolas Frattaroli }; 558cd4e5f30SNicolas Frattaroli }; 559cd4e5f30SNicolas Frattaroli 560dcc8c66bSPeter Geis pmic { 561dcc8c66bSPeter Geis pmic_int: pmic_int { 562dcc8c66bSPeter Geis rockchip,pins = 563dcc8c66bSPeter Geis <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; 564dcc8c66bSPeter Geis }; 565dcc8c66bSPeter Geis }; 566dcc8c66bSPeter Geis 567dcc8c66bSPeter Geis sdio-pwrseq { 568dcc8c66bSPeter Geis wifi_enable_h: wifi-enable-h { 569dcc8c66bSPeter Geis rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; 570dcc8c66bSPeter Geis }; 571dcc8c66bSPeter Geis }; 572dcc8c66bSPeter Geis 573dcc8c66bSPeter Geis usb { 574dcc8c66bSPeter Geis vcc5v0_usb30_host_en_h: vcc5v0-usb30-host-en_h { 575dcc8c66bSPeter Geis rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>; 576dcc8c66bSPeter Geis }; 577dcc8c66bSPeter Geis 578dcc8c66bSPeter Geis vcc5v0_usb_otg_en_h: vcc5v0-usb-otg-en_h { 579dcc8c66bSPeter Geis rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; 580dcc8c66bSPeter Geis }; 581dcc8c66bSPeter Geis }; 582dcc8c66bSPeter Geis}; 583dcc8c66bSPeter Geis 584dcc8c66bSPeter Geis&pmu_io_domains { 585dcc8c66bSPeter Geis status = "okay"; 586dcc8c66bSPeter Geis pmuio1-supply = <&vcc3v3_pmu>; 587dcc8c66bSPeter Geis pmuio2-supply = <&vcca1v8_pmu>; 588dcc8c66bSPeter Geis vccio1-supply = <&vccio_acodec>; 589dcc8c66bSPeter Geis vccio2-supply = <&vcc_1v8>; 590dcc8c66bSPeter Geis vccio3-supply = <&vccio_sd>; 591dcc8c66bSPeter Geis vccio4-supply = <&vcca1v8_pmu>; 592dcc8c66bSPeter Geis vccio5-supply = <&vcc_3v3>; 593dcc8c66bSPeter Geis vccio6-supply = <&vcc_3v3>; 594dcc8c66bSPeter Geis vccio7-supply = <&vcc_3v3>; 595dcc8c66bSPeter Geis}; 596dcc8c66bSPeter Geis 597dcc8c66bSPeter Geis&saradc { 598dcc8c66bSPeter Geis vref-supply = <&vcca_1v8>; 599dcc8c66bSPeter Geis status = "okay"; 600dcc8c66bSPeter Geis}; 601dcc8c66bSPeter Geis 602dcc8c66bSPeter Geis&sdhci { 603dcc8c66bSPeter Geis bus-width = <8>; 604dcc8c66bSPeter Geis mmc-hs200-1_8v; 605dcc8c66bSPeter Geis non-removable; 606dcc8c66bSPeter Geis vmmc-supply = <&vcc_3v3>; 607dcc8c66bSPeter Geis vqmmc-supply = <&vcc_1v8>; 608dcc8c66bSPeter Geis status = "okay"; 609dcc8c66bSPeter Geis}; 610dcc8c66bSPeter Geis 611dcc8c66bSPeter Geis&sdmmc0 { 612dcc8c66bSPeter Geis bus-width = <4>; 613dcc8c66bSPeter Geis cap-sd-highspeed; 614dcc8c66bSPeter Geis cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; 615dcc8c66bSPeter Geis disable-wp; 616dcc8c66bSPeter Geis pinctrl-names = "default"; 617dcc8c66bSPeter Geis pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; 6181ea90b2dSNicolas Frattaroli sd-uhs-sdr50; 619dcc8c66bSPeter Geis vmmc-supply = <&vcc3v3_sd>; 620dcc8c66bSPeter Geis vqmmc-supply = <&vccio_sd>; 621dcc8c66bSPeter Geis status = "okay"; 622dcc8c66bSPeter Geis}; 623dcc8c66bSPeter Geis 624dcc8c66bSPeter Geis&sdmmc1 { 625dcc8c66bSPeter Geis bus-width = <4>; 626dcc8c66bSPeter Geis cap-sd-highspeed; 627dcc8c66bSPeter Geis cap-sdio-irq; 628dcc8c66bSPeter Geis keep-power-in-suspend; 629dcc8c66bSPeter Geis mmc-pwrseq = <&sdio_pwrseq>; 630dcc8c66bSPeter Geis non-removable; 631dcc8c66bSPeter Geis pinctrl-names = "default"; 632dcc8c66bSPeter Geis pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>; 633dcc8c66bSPeter Geis vmmc-supply = <&vcc3v3_sys>; 634dcc8c66bSPeter Geis vqmmc-supply = <&vcca1v8_pmu>; 635dcc8c66bSPeter Geis status = "okay"; 636dcc8c66bSPeter Geis}; 637dcc8c66bSPeter Geis 638dcc8c66bSPeter Geis&sfc { 639dcc8c66bSPeter Geis pinctrl-0 = <&fspi_pins>; 640dcc8c66bSPeter Geis pinctrl-names = "default"; 641dcc8c66bSPeter Geis #address-cells = <1>; 642dcc8c66bSPeter Geis #size-cells = <0>; 643dcc8c66bSPeter Geis status = "okay"; 644dcc8c66bSPeter Geis 645dcc8c66bSPeter Geis flash@0 { 646dcc8c66bSPeter Geis compatible = "jedec,spi-nor"; 647dcc8c66bSPeter Geis reg = <0>; 648dcc8c66bSPeter Geis spi-max-frequency = <24000000>; 649dcc8c66bSPeter Geis spi-rx-bus-width = <4>; 650dcc8c66bSPeter Geis spi-tx-bus-width = <1>; 651*ec79aee7SDiederik de Haas vcc-supply = <&vcc_1v8>; 652dcc8c66bSPeter Geis }; 653dcc8c66bSPeter Geis}; 654dcc8c66bSPeter Geis 655dcc8c66bSPeter Geis&tsadc { 65693f5fb80SDiederik de Haas rockchip,hw-tshut-mode = <1>; 65793f5fb80SDiederik de Haas rockchip,hw-tshut-polarity = <0>; 658dcc8c66bSPeter Geis status = "okay"; 659dcc8c66bSPeter Geis}; 660dcc8c66bSPeter Geis 661dcc8c66bSPeter Geis&uart1 { 662bf6f26deSDiederik de Haas dma-names = "tx", "rx"; 663dcc8c66bSPeter Geis pinctrl-names = "default"; 664dcc8c66bSPeter Geis pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>; 665dcc8c66bSPeter Geis status = "okay"; 666dcc8c66bSPeter Geis uart-has-rtscts; 667dcc8c66bSPeter Geis 668dcc8c66bSPeter Geis bluetooth { 669dcc8c66bSPeter Geis compatible = "brcm,bcm4345c5"; 670dcc8c66bSPeter Geis clocks = <&rk809 1>; 671dcc8c66bSPeter Geis clock-names = "lpo"; 672dcc8c66bSPeter Geis device-wakeup-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>; 673dcc8c66bSPeter Geis host-wakeup-gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; 674dcc8c66bSPeter Geis shutdown-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; 675dcc8c66bSPeter Geis pinctrl-names = "default"; 676dcc8c66bSPeter Geis pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>; 677dcc8c66bSPeter Geis vbat-supply = <&vcc3v3_sys>; 678dcc8c66bSPeter Geis vddio-supply = <&vcca1v8_pmu>; 679dcc8c66bSPeter Geis }; 680dcc8c66bSPeter Geis}; 681dcc8c66bSPeter Geis 682dcc8c66bSPeter Geis/* 683dcc8c66bSPeter Geis * uart2_m0 is exposed on PI40 684dcc8c66bSPeter Geis * pin 8 - uart2_tx_m0 685dcc8c66bSPeter Geis * pin 10 - uart2_rx_m0 686dcc8c66bSPeter Geis */ 687dcc8c66bSPeter Geis&uart2 { 688dcc8c66bSPeter Geis status = "okay"; 689dcc8c66bSPeter Geis}; 690dcc8c66bSPeter Geis 691dcc8c66bSPeter Geis&usb2phy0_host { 692dcc8c66bSPeter Geis phy-supply = <&vcc5v0_usb30_host>; 693dcc8c66bSPeter Geis status = "okay"; 694dcc8c66bSPeter Geis}; 695dcc8c66bSPeter Geis 696dcc8c66bSPeter Geis&usb2phy0_otg { 697dcc8c66bSPeter Geis phy-supply = <&vcc5v0_usb_otg>; 698dcc8c66bSPeter Geis status = "okay"; 699dcc8c66bSPeter Geis}; 700dcc8c66bSPeter Geis 701dcc8c66bSPeter Geis&usb2phy1_otg { 702dcc8c66bSPeter Geis phy-supply = <&vcc5v0_usb30_host>; 703dcc8c66bSPeter Geis status = "okay"; 704dcc8c66bSPeter Geis}; 705dcc8c66bSPeter Geis 706dcc8c66bSPeter Geis&usb2phy0 { 707dcc8c66bSPeter Geis status = "okay"; 708dcc8c66bSPeter Geis}; 709dcc8c66bSPeter Geis 710dcc8c66bSPeter Geis&usb2phy1 { 711dcc8c66bSPeter Geis status = "okay"; 712dcc8c66bSPeter Geis}; 713dcc8c66bSPeter Geis 714dcc8c66bSPeter Geis&usb_host0_xhci { 715dcc8c66bSPeter Geis status = "okay"; 716dcc8c66bSPeter Geis}; 717dcc8c66bSPeter Geis 718dcc8c66bSPeter Geis&usb_host1_xhci { 719dcc8c66bSPeter Geis status = "okay"; 720dcc8c66bSPeter Geis}; 721dcc8c66bSPeter Geis 722dcc8c66bSPeter Geis&usb_host0_ehci { 723dcc8c66bSPeter Geis status = "okay"; 724dcc8c66bSPeter Geis}; 725dcc8c66bSPeter Geis 726dcc8c66bSPeter Geis&usb_host0_ohci { 727dcc8c66bSPeter Geis status = "okay"; 728dcc8c66bSPeter Geis}; 729d99efdabSNicolas Frattaroli 730d99efdabSNicolas Frattaroli&vop { 731d99efdabSNicolas Frattaroli assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; 732d99efdabSNicolas Frattaroli assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; 733d99efdabSNicolas Frattaroli status = "okay"; 734d99efdabSNicolas Frattaroli}; 735d99efdabSNicolas Frattaroli 736d99efdabSNicolas Frattaroli&vop_mmu { 737d99efdabSNicolas Frattaroli status = "okay"; 738d99efdabSNicolas Frattaroli}; 739d99efdabSNicolas Frattaroli 740d99efdabSNicolas Frattaroli&vp0 { 741d99efdabSNicolas Frattaroli vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { 742d99efdabSNicolas Frattaroli reg = <ROCKCHIP_VOP2_EP_HDMI0>; 743d99efdabSNicolas Frattaroli remote-endpoint = <&hdmi_in_vp0>; 744d99efdabSNicolas Frattaroli }; 745d99efdabSNicolas Frattaroli}; 746