1f64f2e0fSJagan Teki// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2f64f2e0fSJagan Teki/* 3f64f2e0fSJagan Teki * Copyright (C) 2018 Amarula Solutions B.V. 4f64f2e0fSJagan Teki * Author: Jagan Teki <jagan@amarulasolutions.com> 5f64f2e0fSJagan Teki */ 6f64f2e0fSJagan Teki 7f64f2e0fSJagan Teki/dts-v1/; 8f64f2e0fSJagan Teki 9f64f2e0fSJagan Teki#include "sun50i-a64.dtsi" 10f64f2e0fSJagan Teki 11f64f2e0fSJagan Teki#include <dt-bindings/gpio/gpio.h> 12f64f2e0fSJagan Teki 13f64f2e0fSJagan Teki/ { 14f64f2e0fSJagan Teki model = "Amarula A64-Relic"; 15f64f2e0fSJagan Teki compatible = "amarula,a64-relic", "allwinner,sun50i-a64"; 16f64f2e0fSJagan Teki 17f64f2e0fSJagan Teki aliases { 18f64f2e0fSJagan Teki serial0 = &uart0; 19f64f2e0fSJagan Teki }; 20f64f2e0fSJagan Teki 21f64f2e0fSJagan Teki chosen { 22f64f2e0fSJagan Teki stdout-path = "serial0:115200n8"; 23f64f2e0fSJagan Teki }; 2433c3d4ebSJagan Teki 257cc399f2SJagan Teki i2c { 267cc399f2SJagan Teki compatible = "i2c-gpio"; 277cc399f2SJagan Teki sda-gpios = <&pio 4 13 GPIO_ACTIVE_HIGH>; 287cc399f2SJagan Teki scl-gpios = <&pio 4 12 GPIO_ACTIVE_HIGH>; 297cc399f2SJagan Teki i2c-gpio,delay-us = <5>; 307cc399f2SJagan Teki #address-cells = <1>; 317cc399f2SJagan Teki #size-cells = <0>; 327cc399f2SJagan Teki 337cc399f2SJagan Teki ov5640: camera@3c { 347cc399f2SJagan Teki compatible = "ovti,ov5640"; 357cc399f2SJagan Teki reg = <0x3c>; 367cc399f2SJagan Teki pinctrl-names = "default"; 377cc399f2SJagan Teki pinctrl-0 = <&csi_mclk_pin>; 387cc399f2SJagan Teki clocks = <&ccu CLK_CSI_MCLK>; 397cc399f2SJagan Teki clock-names = "xclk"; 407cc399f2SJagan Teki 417cc399f2SJagan Teki AVDD-supply = <®_aldo1>; 427cc399f2SJagan Teki DOVDD-supply = <®_dldo3>; 437cc399f2SJagan Teki DVDD-supply = <®_eldo3>; 447cc399f2SJagan Teki reset-gpios = <&pio 4 14 GPIO_ACTIVE_LOW>; /* CSI-RST-R: PE14 */ 457cc399f2SJagan Teki powerdown-gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* CSI-STBY-R: PE15 */ 467cc399f2SJagan Teki 477cc399f2SJagan Teki port { 487cc399f2SJagan Teki ov5640_ep: endpoint { 497cc399f2SJagan Teki remote-endpoint = <&csi_ep>; 507cc399f2SJagan Teki bus-width = <8>; 517cc399f2SJagan Teki hsync-active = <1>; /* Active high */ 527cc399f2SJagan Teki vsync-active = <0>; /* Active low */ 537cc399f2SJagan Teki data-active = <1>; /* Active high */ 547cc399f2SJagan Teki pclk-sample = <1>; /* Rising */ 557cc399f2SJagan Teki }; 567cc399f2SJagan Teki }; 577cc399f2SJagan Teki }; 587cc399f2SJagan Teki }; 597cc399f2SJagan Teki 6033c3d4ebSJagan Teki wifi_pwrseq: wifi-pwrseq { 6133c3d4ebSJagan Teki compatible = "mmc-pwrseq-simple"; 6233c3d4ebSJagan Teki clocks = <&rtc 1>; 6333c3d4ebSJagan Teki clock-names = "ext_clock"; 6433c3d4ebSJagan Teki reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* WL-PMU-EN: PL2 */ 6533c3d4ebSJagan Teki }; 66f64f2e0fSJagan Teki}; 67f64f2e0fSJagan Teki 687cc399f2SJagan Teki&csi { 697cc399f2SJagan Teki status = "okay"; 707cc399f2SJagan Teki 717cc399f2SJagan Teki port { 727cc399f2SJagan Teki csi_ep: endpoint { 737cc399f2SJagan Teki remote-endpoint = <&ov5640_ep>; 747cc399f2SJagan Teki bus-width = <8>; 757cc399f2SJagan Teki hsync-active = <1>; /* Active high */ 767cc399f2SJagan Teki vsync-active = <0>; /* Active low */ 777cc399f2SJagan Teki data-active = <1>; /* Active high */ 787cc399f2SJagan Teki pclk-sample = <1>; /* Rising */ 797cc399f2SJagan Teki }; 807cc399f2SJagan Teki }; 817cc399f2SJagan Teki}; 827cc399f2SJagan Teki 83f64f2e0fSJagan Teki&ehci0 { 84f64f2e0fSJagan Teki status = "okay"; 85f64f2e0fSJagan Teki}; 86f64f2e0fSJagan Teki 87ea738c32SJagan Teki&i2c0 { 88ea738c32SJagan Teki status = "okay"; 89ea738c32SJagan Teki 90ea738c32SJagan Teki sensor@48 { 91ea738c32SJagan Teki compatible = "st,stlm75"; 92ea738c32SJagan Teki reg = <0x48>; 93ea738c32SJagan Teki }; 94ea738c32SJagan Teki}; 95ea738c32SJagan Teki 96ea738c32SJagan Teki&i2c0_pins { 97ea738c32SJagan Teki bias-pull-up; 98ea738c32SJagan Teki}; 99ea738c32SJagan Teki 100*5aa45a24SJagan Teki&i2c1 { 101*5aa45a24SJagan Teki status = "okay"; 102*5aa45a24SJagan Teki 103*5aa45a24SJagan Teki touchscreen@5d { 104*5aa45a24SJagan Teki compatible = "goodix,gt5663"; 105*5aa45a24SJagan Teki reg = <0x5d>; 106*5aa45a24SJagan Teki AVDD28-supply = <®_ldo_io0>; /* VCC-CTP: GPIO0-LDO */ 107*5aa45a24SJagan Teki interrupt-parent = <&pio>; 108*5aa45a24SJagan Teki interrupts = <7 4 IRQ_TYPE_EDGE_FALLING>; 109*5aa45a24SJagan Teki irq-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* CTP-INT: PH4 */ 110*5aa45a24SJagan Teki reset-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* CTP-RST: PH8 */ 111*5aa45a24SJagan Teki touchscreen-inverted-x; 112*5aa45a24SJagan Teki touchscreen-inverted-y; 113*5aa45a24SJagan Teki }; 114*5aa45a24SJagan Teki}; 115*5aa45a24SJagan Teki 11633c3d4ebSJagan Teki&mmc1 { 11733c3d4ebSJagan Teki pinctrl-names = "default"; 11833c3d4ebSJagan Teki pinctrl-0 = <&mmc1_pins>; 11933c3d4ebSJagan Teki vmmc-supply = <®_dcdc1>; 12033c3d4ebSJagan Teki /* 12133c3d4ebSJagan Teki * Schematic shows both dldo4 and eldo1 connected for vcc-io-wifi, but 12233c3d4ebSJagan Teki * dldo4 connection shows DNP(Do Not Populate) and eldo1 connected with 12333c3d4ebSJagan Teki * 0Ohm register to vcc-io-wifi so eldo1 is used. 12433c3d4ebSJagan Teki */ 12533c3d4ebSJagan Teki vqmmc-supply = <®_eldo1>; 12633c3d4ebSJagan Teki mmc-pwrseq = <&wifi_pwrseq>; 12733c3d4ebSJagan Teki bus-width = <4>; 12833c3d4ebSJagan Teki non-removable; 12933c3d4ebSJagan Teki status = "okay"; 13033c3d4ebSJagan Teki 13133c3d4ebSJagan Teki brcmf: wifi@1 { 13233c3d4ebSJagan Teki reg = <1>; 13333c3d4ebSJagan Teki compatible = "brcm,bcm4329-fmac"; 13433c3d4ebSJagan Teki interrupt-parent = <&r_pio>; 13533c3d4ebSJagan Teki interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* WL-WAKE-AP: PL3 */ 13633c3d4ebSJagan Teki interrupt-names = "host-wake"; 13733c3d4ebSJagan Teki }; 13833c3d4ebSJagan Teki}; 13933c3d4ebSJagan Teki 140f64f2e0fSJagan Teki&mmc2 { 141f64f2e0fSJagan Teki pinctrl-names = "default"; 142f64f2e0fSJagan Teki pinctrl-0 = <&mmc2_pins>; 143f64f2e0fSJagan Teki vmmc-supply = <®_dcdc1>; 144f64f2e0fSJagan Teki bus-width = <8>; 145f64f2e0fSJagan Teki non-removable; 146f64f2e0fSJagan Teki cap-mmc-hw-reset; 147f64f2e0fSJagan Teki status = "okay"; 148f64f2e0fSJagan Teki}; 149f64f2e0fSJagan Teki 150f64f2e0fSJagan Teki&ohci0 { 151f64f2e0fSJagan Teki status = "okay"; 152f64f2e0fSJagan Teki}; 153f64f2e0fSJagan Teki 154f64f2e0fSJagan Teki&r_rsb { 155f64f2e0fSJagan Teki status = "okay"; 156f64f2e0fSJagan Teki 157f64f2e0fSJagan Teki axp803: pmic@3a3 { 158f64f2e0fSJagan Teki compatible = "x-powers,axp803"; 159f64f2e0fSJagan Teki reg = <0x3a3>; 160f64f2e0fSJagan Teki interrupt-parent = <&r_intc>; 161f64f2e0fSJagan Teki interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 162f64f2e0fSJagan Teki x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ 163f64f2e0fSJagan Teki }; 164f64f2e0fSJagan Teki}; 165f64f2e0fSJagan Teki 166f64f2e0fSJagan Teki#include "axp803.dtsi" 167f64f2e0fSJagan Teki 168f64f2e0fSJagan Teki®_aldo1 { 169f64f2e0fSJagan Teki regulator-always-on; 170f64f2e0fSJagan Teki regulator-min-microvolt = <2800000>; 171f64f2e0fSJagan Teki regulator-max-microvolt = <2800000>; 172f64f2e0fSJagan Teki regulator-name = "avdd-csi"; 173f64f2e0fSJagan Teki}; 174f64f2e0fSJagan Teki 175f64f2e0fSJagan Teki®_aldo2 { 176f64f2e0fSJagan Teki regulator-always-on; 177f64f2e0fSJagan Teki regulator-min-microvolt = <1800000>; 178f64f2e0fSJagan Teki regulator-max-microvolt = <3300000>; 179f64f2e0fSJagan Teki regulator-name = "vcc-pl"; 180f64f2e0fSJagan Teki}; 181f64f2e0fSJagan Teki 182f64f2e0fSJagan Teki®_aldo3 { 183f64f2e0fSJagan Teki regulator-always-on; 184f64f2e0fSJagan Teki regulator-min-microvolt = <3000000>; 185f64f2e0fSJagan Teki regulator-max-microvolt = <3000000>; 186f64f2e0fSJagan Teki regulator-name = "vcc-pll-avcc"; 187f64f2e0fSJagan Teki}; 188f64f2e0fSJagan Teki 189f64f2e0fSJagan Teki®_dcdc1 { 190f64f2e0fSJagan Teki regulator-always-on; 191f64f2e0fSJagan Teki regulator-min-microvolt = <3300000>; 192f64f2e0fSJagan Teki regulator-max-microvolt = <3300000>; 193f64f2e0fSJagan Teki regulator-name = "vcc-3v3"; 194f64f2e0fSJagan Teki}; 195f64f2e0fSJagan Teki 196f64f2e0fSJagan Teki®_dcdc2 { 197f64f2e0fSJagan Teki regulator-always-on; 198f64f2e0fSJagan Teki regulator-min-microvolt = <1040000>; 199f64f2e0fSJagan Teki regulator-max-microvolt = <1300000>; 200f64f2e0fSJagan Teki regulator-name = "vdd-cpux"; 201f64f2e0fSJagan Teki}; 202f64f2e0fSJagan Teki 203f64f2e0fSJagan Teki/* DCDC3 is polyphased with DCDC2 */ 204f64f2e0fSJagan Teki 205f64f2e0fSJagan Teki®_dcdc5 { 206f64f2e0fSJagan Teki regulator-always-on; 207f64f2e0fSJagan Teki regulator-min-microvolt = <1500000>; 208f64f2e0fSJagan Teki regulator-max-microvolt = <1500000>; 209f64f2e0fSJagan Teki regulator-name = "vcc-dram"; 210f64f2e0fSJagan Teki}; 211f64f2e0fSJagan Teki 212f64f2e0fSJagan Teki®_dcdc6 { 213f64f2e0fSJagan Teki regulator-always-on; 214f64f2e0fSJagan Teki regulator-min-microvolt = <1100000>; 215f64f2e0fSJagan Teki regulator-max-microvolt = <1100000>; 216f64f2e0fSJagan Teki regulator-name = "vdd-sys"; 217f64f2e0fSJagan Teki}; 218f64f2e0fSJagan Teki 219f64f2e0fSJagan Teki®_dldo1 { 220f64f2e0fSJagan Teki regulator-min-microvolt = <3300000>; 221f64f2e0fSJagan Teki regulator-max-microvolt = <3300000>; 222f64f2e0fSJagan Teki regulator-name = "vcc-hdmi-dsi-sensor"; 223f64f2e0fSJagan Teki}; 224f64f2e0fSJagan Teki 225f64f2e0fSJagan Teki®_dldo2 { 226f64f2e0fSJagan Teki regulator-min-microvolt = <3300000>; 227f64f2e0fSJagan Teki regulator-max-microvolt = <3300000>; 228f64f2e0fSJagan Teki regulator-name = "vcc-mipi"; 229f64f2e0fSJagan Teki}; 230f64f2e0fSJagan Teki 231f64f2e0fSJagan Teki®_dldo3 { 232f64f2e0fSJagan Teki regulator-min-microvolt = <2800000>; 233f64f2e0fSJagan Teki regulator-max-microvolt = <2800000>; 234f64f2e0fSJagan Teki regulator-name = "dovdd-csi"; 235f64f2e0fSJagan Teki}; 236f64f2e0fSJagan Teki 237f64f2e0fSJagan Teki®_dldo4 { 238f64f2e0fSJagan Teki regulator-min-microvolt = <3300000>; 239f64f2e0fSJagan Teki regulator-max-microvolt = <3300000>; 240f64f2e0fSJagan Teki regulator-name = "vcc-wifi-io"; 241f64f2e0fSJagan Teki}; 242f64f2e0fSJagan Teki 243f64f2e0fSJagan Teki®_drivevbus { 244f64f2e0fSJagan Teki regulator-name = "usb0-vbus"; 245f64f2e0fSJagan Teki status = "okay"; 246f64f2e0fSJagan Teki}; 247f64f2e0fSJagan Teki 248f64f2e0fSJagan Teki®_eldo1 { 249f64f2e0fSJagan Teki regulator-always-on; 250f64f2e0fSJagan Teki regulator-min-microvolt = <1800000>; 251f64f2e0fSJagan Teki regulator-max-microvolt = <1800000>; 252f64f2e0fSJagan Teki regulator-name = "cpvdd"; 253f64f2e0fSJagan Teki}; 254f64f2e0fSJagan Teki 255f64f2e0fSJagan Teki®_eldo3 { 256f64f2e0fSJagan Teki regulator-min-microvolt = <1800000>; 257f64f2e0fSJagan Teki regulator-max-microvolt = <1800000>; 258f64f2e0fSJagan Teki regulator-name = "dvdd-csi"; 259f64f2e0fSJagan Teki}; 260f64f2e0fSJagan Teki 261f64f2e0fSJagan Teki®_fldo1 { 262f64f2e0fSJagan Teki regulator-min-microvolt = <1200000>; 263f64f2e0fSJagan Teki regulator-max-microvolt = <1200000>; 264f64f2e0fSJagan Teki regulator-name = "vcc-1v2-hsic"; 265f64f2e0fSJagan Teki}; 266f64f2e0fSJagan Teki 267f64f2e0fSJagan Teki/* 268f64f2e0fSJagan Teki * The A64 chip cannot work without this regulator off, although 269f64f2e0fSJagan Teki * it seems to be only driving the AR100 core. 270f64f2e0fSJagan Teki * Maybe we don't still know well about CPUs domain. 271f64f2e0fSJagan Teki */ 272f64f2e0fSJagan Teki®_fldo2 { 273f64f2e0fSJagan Teki regulator-always-on; 274f64f2e0fSJagan Teki regulator-min-microvolt = <1100000>; 275f64f2e0fSJagan Teki regulator-max-microvolt = <1100000>; 276f64f2e0fSJagan Teki regulator-name = "vdd-cpus"; 277f64f2e0fSJagan Teki}; 278f64f2e0fSJagan Teki 279*5aa45a24SJagan Teki®_ldo_io0 { 280*5aa45a24SJagan Teki regulator-min-microvolt = <2800000>; 281*5aa45a24SJagan Teki regulator-max-microvolt = <2800000>; 282*5aa45a24SJagan Teki regulator-name = "vcc-ctp"; 283*5aa45a24SJagan Teki status = "okay"; 284*5aa45a24SJagan Teki}; 285*5aa45a24SJagan Teki 286f64f2e0fSJagan Teki®_rtc_ldo { 287f64f2e0fSJagan Teki regulator-name = "vcc-rtc"; 288f64f2e0fSJagan Teki}; 289f64f2e0fSJagan Teki 290f64f2e0fSJagan Teki&uart0 { 291f64f2e0fSJagan Teki pinctrl-names = "default"; 292d91ebb95SChen-Yu Tsai pinctrl-0 = <&uart0_pb_pins>; 293f64f2e0fSJagan Teki status = "okay"; 294f64f2e0fSJagan Teki}; 295f64f2e0fSJagan Teki 296f64f2e0fSJagan Teki&usb_otg { 297f64f2e0fSJagan Teki dr_mode = "otg"; 298f64f2e0fSJagan Teki status = "okay"; 299f64f2e0fSJagan Teki}; 300f64f2e0fSJagan Teki 301f64f2e0fSJagan Teki&usbphy { 302f64f2e0fSJagan Teki usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ 303f64f2e0fSJagan Teki usb0_vbus-supply = <®_drivevbus>; 304f64f2e0fSJagan Teki status = "okay"; 305f64f2e0fSJagan Teki}; 306