1*865a0d06SJerome Brunet// SPDX-License-Identifier: GPL-2.0 2*865a0d06SJerome Brunet/* 3*865a0d06SJerome Brunet * Copyright (c) 2019 BayLibre SAS. 4*865a0d06SJerome Brunet * Author: Jerome Brunet <jbrunet@baylibre.com> 5*865a0d06SJerome Brunet */ 6*865a0d06SJerome Brunet 7*865a0d06SJerome Brunet/* Libretech Amlogic GX PC form factor - AKA: Tartiflette */ 8*865a0d06SJerome Brunet 9*865a0d06SJerome Brunet#include <dt-bindings/input/input.h> 10*865a0d06SJerome Brunet#include <dt-bindings/leds/common.h> 11*865a0d06SJerome Brunet 12*865a0d06SJerome Brunet/ { 13*865a0d06SJerome Brunet adc-keys { 14*865a0d06SJerome Brunet compatible = "adc-keys"; 15*865a0d06SJerome Brunet io-channels = <&saradc 0>; 16*865a0d06SJerome Brunet io-channel-names = "buttons"; 17*865a0d06SJerome Brunet keyup-threshold-microvolt = <1800000>; 18*865a0d06SJerome Brunet 19*865a0d06SJerome Brunet update-button { 20*865a0d06SJerome Brunet label = "update"; 21*865a0d06SJerome Brunet linux,code = <KEY_VENDOR>; 22*865a0d06SJerome Brunet press-threshold-microvolt = <1300000>; 23*865a0d06SJerome Brunet }; 24*865a0d06SJerome Brunet }; 25*865a0d06SJerome Brunet 26*865a0d06SJerome Brunet aliases { 27*865a0d06SJerome Brunet serial0 = &uart_AO; 28*865a0d06SJerome Brunet ethernet0 = ðmac; 29*865a0d06SJerome Brunet spi0 = &spifc; 30*865a0d06SJerome Brunet }; 31*865a0d06SJerome Brunet 32*865a0d06SJerome Brunet chosen { 33*865a0d06SJerome Brunet stdout-path = "serial0:115200n8"; 34*865a0d06SJerome Brunet }; 35*865a0d06SJerome Brunet 36*865a0d06SJerome Brunet cvbs-connector { 37*865a0d06SJerome Brunet compatible = "composite-video-connector"; 38*865a0d06SJerome Brunet status = "disabled"; 39*865a0d06SJerome Brunet 40*865a0d06SJerome Brunet port { 41*865a0d06SJerome Brunet cvbs_connector_in: endpoint { 42*865a0d06SJerome Brunet remote-endpoint = <&cvbs_vdac_out>; 43*865a0d06SJerome Brunet }; 44*865a0d06SJerome Brunet }; 45*865a0d06SJerome Brunet }; 46*865a0d06SJerome Brunet 47*865a0d06SJerome Brunet emmc_pwrseq: emmc-pwrseq { 48*865a0d06SJerome Brunet compatible = "mmc-pwrseq-emmc"; 49*865a0d06SJerome Brunet reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 50*865a0d06SJerome Brunet }; 51*865a0d06SJerome Brunet 52*865a0d06SJerome Brunet hdmi-connector { 53*865a0d06SJerome Brunet compatible = "hdmi-connector"; 54*865a0d06SJerome Brunet type = "a"; 55*865a0d06SJerome Brunet 56*865a0d06SJerome Brunet port { 57*865a0d06SJerome Brunet hdmi_connector_in: endpoint { 58*865a0d06SJerome Brunet remote-endpoint = <&hdmi_tx_tmds_out>; 59*865a0d06SJerome Brunet }; 60*865a0d06SJerome Brunet }; 61*865a0d06SJerome Brunet }; 62*865a0d06SJerome Brunet 63*865a0d06SJerome Brunet gpio-keys-polled { 64*865a0d06SJerome Brunet compatible = "gpio-keys-polled"; 65*865a0d06SJerome Brunet poll-interval = <100>; 66*865a0d06SJerome Brunet 67*865a0d06SJerome Brunet power-button { 68*865a0d06SJerome Brunet label = "power"; 69*865a0d06SJerome Brunet linux,code = <KEY_POWER>; 70*865a0d06SJerome Brunet gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; 71*865a0d06SJerome Brunet }; 72*865a0d06SJerome Brunet }; 73*865a0d06SJerome Brunet 74*865a0d06SJerome Brunet memory@0 { 75*865a0d06SJerome Brunet device_type = "memory"; 76*865a0d06SJerome Brunet reg = <0x0 0x0 0x0 0x80000000>; 77*865a0d06SJerome Brunet }; 78*865a0d06SJerome Brunet 79*865a0d06SJerome Brunet ao_5v: regulator-ao_5v { 80*865a0d06SJerome Brunet compatible = "regulator-fixed"; 81*865a0d06SJerome Brunet regulator-name = "AO_5V"; 82*865a0d06SJerome Brunet regulator-min-microvolt = <5000000>; 83*865a0d06SJerome Brunet regulator-max-microvolt = <5000000>; 84*865a0d06SJerome Brunet vin-supply = <&dc_in>; 85*865a0d06SJerome Brunet regulator-always-on; 86*865a0d06SJerome Brunet }; 87*865a0d06SJerome Brunet 88*865a0d06SJerome Brunet dc_in: regulator-dc_in { 89*865a0d06SJerome Brunet compatible = "regulator-fixed"; 90*865a0d06SJerome Brunet regulator-name = "DC_IN"; 91*865a0d06SJerome Brunet regulator-min-microvolt = <5000000>; 92*865a0d06SJerome Brunet regulator-max-microvolt = <5000000>; 93*865a0d06SJerome Brunet regulator-always-on; 94*865a0d06SJerome Brunet }; 95*865a0d06SJerome Brunet 96*865a0d06SJerome Brunet leds { 97*865a0d06SJerome Brunet compatible = "gpio-leds"; 98*865a0d06SJerome Brunet 99*865a0d06SJerome Brunet green { 100*865a0d06SJerome Brunet color = <LED_COLOR_ID_GREEN>; 101*865a0d06SJerome Brunet function = LED_FUNCTION_DISK_ACTIVITY; 102*865a0d06SJerome Brunet gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>; 103*865a0d06SJerome Brunet linux,default-trigger = "disk-activity"; 104*865a0d06SJerome Brunet }; 105*865a0d06SJerome Brunet 106*865a0d06SJerome Brunet blue { 107*865a0d06SJerome Brunet color = <LED_COLOR_ID_BLUE>; 108*865a0d06SJerome Brunet function = LED_FUNCTION_STATUS; 109*865a0d06SJerome Brunet gpios = <&gpio GPIODV_28 GPIO_ACTIVE_HIGH>; 110*865a0d06SJerome Brunet linux,default-trigger = "heartbeat"; 111*865a0d06SJerome Brunet panic-indicator; 112*865a0d06SJerome Brunet }; 113*865a0d06SJerome Brunet }; 114*865a0d06SJerome Brunet 115*865a0d06SJerome Brunet vcc_card: regulator-vcc_card { 116*865a0d06SJerome Brunet compatible = "regulator-fixed"; 117*865a0d06SJerome Brunet regulator-name = "VCC_CARD"; 118*865a0d06SJerome Brunet regulator-min-microvolt = <3300000>; 119*865a0d06SJerome Brunet regulator-max-microvolt = <3300000>; 120*865a0d06SJerome Brunet vin-supply = <&vddio_ao3v3>; 121*865a0d06SJerome Brunet 122*865a0d06SJerome Brunet gpio = <&gpio GPIODV_4 GPIO_ACTIVE_HIGH>; 123*865a0d06SJerome Brunet enable-active-high; 124*865a0d06SJerome Brunet }; 125*865a0d06SJerome Brunet 126*865a0d06SJerome Brunet vcc5v: regulator-vcc5v { 127*865a0d06SJerome Brunet compatible = "regulator-fixed"; 128*865a0d06SJerome Brunet regulator-name = "VCC5V"; 129*865a0d06SJerome Brunet regulator-min-microvolt = <5000000>; 130*865a0d06SJerome Brunet regulator-max-microvolt = <5000000>; 131*865a0d06SJerome Brunet vin-supply = <&ao_5v>; 132*865a0d06SJerome Brunet 133*865a0d06SJerome Brunet gpio = <&gpio GPIOH_3 GPIO_OPEN_DRAIN>; 134*865a0d06SJerome Brunet }; 135*865a0d06SJerome Brunet 136*865a0d06SJerome Brunet vddio_ao18: regulator-vddio_ao18 { 137*865a0d06SJerome Brunet compatible = "regulator-fixed"; 138*865a0d06SJerome Brunet regulator-name = "VDDIO_AO18"; 139*865a0d06SJerome Brunet regulator-min-microvolt = <1800000>; 140*865a0d06SJerome Brunet regulator-max-microvolt = <1800000>; 141*865a0d06SJerome Brunet vin-supply = <&ao_5v>; 142*865a0d06SJerome Brunet regulator-always-on; 143*865a0d06SJerome Brunet }; 144*865a0d06SJerome Brunet 145*865a0d06SJerome Brunet vddio_ao3v3: regulator-vddio_ao3v3 { 146*865a0d06SJerome Brunet compatible = "regulator-fixed"; 147*865a0d06SJerome Brunet regulator-name = "VDDIO_AO3V3"; 148*865a0d06SJerome Brunet regulator-min-microvolt = <3300000>; 149*865a0d06SJerome Brunet regulator-max-microvolt = <3300000>; 150*865a0d06SJerome Brunet vin-supply = <&ao_5v>; 151*865a0d06SJerome Brunet regulator-always-on; 152*865a0d06SJerome Brunet }; 153*865a0d06SJerome Brunet 154*865a0d06SJerome Brunet vddio_boot: regulator-vddio_boot { 155*865a0d06SJerome Brunet compatible = "regulator-fixed"; 156*865a0d06SJerome Brunet regulator-name = "VDDIO_BOOT"; 157*865a0d06SJerome Brunet regulator-min-microvolt = <1800000>; 158*865a0d06SJerome Brunet regulator-max-microvolt = <1800000>; 159*865a0d06SJerome Brunet vin-supply = <&vddio_ao3v3>; 160*865a0d06SJerome Brunet regulator-always-on; 161*865a0d06SJerome Brunet }; 162*865a0d06SJerome Brunet 163*865a0d06SJerome Brunet vddio_card: regulator-vddio-card { 164*865a0d06SJerome Brunet compatible = "regulator-gpio"; 165*865a0d06SJerome Brunet regulator-name = "VDDIO_CARD"; 166*865a0d06SJerome Brunet regulator-min-microvolt = <1800000>; 167*865a0d06SJerome Brunet regulator-max-microvolt = <3300000>; 168*865a0d06SJerome Brunet 169*865a0d06SJerome Brunet gpios = <&gpio GPIODV_5 GPIO_ACTIVE_HIGH>; 170*865a0d06SJerome Brunet gpios-states = <0>; 171*865a0d06SJerome Brunet 172*865a0d06SJerome Brunet states = <3300000 0>, 173*865a0d06SJerome Brunet <1800000 1>; 174*865a0d06SJerome Brunet 175*865a0d06SJerome Brunet regulator-settling-time-up-us = <200>; 176*865a0d06SJerome Brunet regulator-settling-time-down-us = <50000>; 177*865a0d06SJerome Brunet }; 178*865a0d06SJerome Brunet}; 179*865a0d06SJerome Brunet 180*865a0d06SJerome Brunet&cec_AO { 181*865a0d06SJerome Brunet pinctrl-0 = <&ao_cec_pins>; 182*865a0d06SJerome Brunet pinctrl-names = "default"; 183*865a0d06SJerome Brunet hdmi-phandle = <&hdmi_tx>; 184*865a0d06SJerome Brunet status = "okay"; 185*865a0d06SJerome Brunet}; 186*865a0d06SJerome Brunet 187*865a0d06SJerome Brunet&cvbs_vdac_port { 188*865a0d06SJerome Brunet cvbs_vdac_out: endpoint { 189*865a0d06SJerome Brunet remote-endpoint = <&cvbs_connector_in>; 190*865a0d06SJerome Brunet }; 191*865a0d06SJerome Brunet}; 192*865a0d06SJerome Brunet 193*865a0d06SJerome Brunetðmac { 194*865a0d06SJerome Brunet pinctrl-0 = <ð_pins>, <ð_phy_irq_pins>; 195*865a0d06SJerome Brunet pinctrl-names = "default"; 196*865a0d06SJerome Brunet phy-handle = <&external_phy>; 197*865a0d06SJerome Brunet amlogic,tx-delay-ns = <2>; 198*865a0d06SJerome Brunet phy-mode = "rgmii"; 199*865a0d06SJerome Brunet status = "okay"; 200*865a0d06SJerome Brunet}; 201*865a0d06SJerome Brunet 202*865a0d06SJerome Brunet&external_mdio { 203*865a0d06SJerome Brunet external_phy: ethernet-phy@0 { 204*865a0d06SJerome Brunet reg = <0>; 205*865a0d06SJerome Brunet max-speed = <1000>; 206*865a0d06SJerome Brunet reset-assert-us = <10000>; 207*865a0d06SJerome Brunet reset-deassert-us = <30000>; 208*865a0d06SJerome Brunet reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; 209*865a0d06SJerome Brunet interrupt-parent = <&gpio_intc>; 210*865a0d06SJerome Brunet interrupts = <25 IRQ_TYPE_LEVEL_LOW>; 211*865a0d06SJerome Brunet }; 212*865a0d06SJerome Brunet}; 213*865a0d06SJerome Brunet 214*865a0d06SJerome Brunet&pinctrl_periphs { 215*865a0d06SJerome Brunet /* 216*865a0d06SJerome Brunet * Make sure the reset pin of the usb HUB is driven high to take 217*865a0d06SJerome Brunet * it out of reset. 218*865a0d06SJerome Brunet */ 219*865a0d06SJerome Brunet usb1_rst_pins: usb1_rst_irq { 220*865a0d06SJerome Brunet mux { 221*865a0d06SJerome Brunet groups = "GPIODV_3"; 222*865a0d06SJerome Brunet function = "gpio_periphs"; 223*865a0d06SJerome Brunet bias-disable; 224*865a0d06SJerome Brunet output-high; 225*865a0d06SJerome Brunet }; 226*865a0d06SJerome Brunet }; 227*865a0d06SJerome Brunet 228*865a0d06SJerome Brunet /* Make sure the phy irq pin is properly configured as input */ 229*865a0d06SJerome Brunet eth_phy_irq_pins: eth_phy_irq { 230*865a0d06SJerome Brunet mux { 231*865a0d06SJerome Brunet groups = "GPIOZ_15"; 232*865a0d06SJerome Brunet function = "gpio_periphs"; 233*865a0d06SJerome Brunet bias-disable; 234*865a0d06SJerome Brunet output-disable; 235*865a0d06SJerome Brunet }; 236*865a0d06SJerome Brunet }; 237*865a0d06SJerome Brunet}; 238*865a0d06SJerome Brunet 239*865a0d06SJerome Brunet&hdmi_tx { 240*865a0d06SJerome Brunet pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 241*865a0d06SJerome Brunet pinctrl-names = "default"; 242*865a0d06SJerome Brunet hdmi-supply = <&vcc5v>; 243*865a0d06SJerome Brunet status = "okay"; 244*865a0d06SJerome Brunet}; 245*865a0d06SJerome Brunet 246*865a0d06SJerome Brunet&hdmi_tx_tmds_port { 247*865a0d06SJerome Brunet hdmi_tx_tmds_out: endpoint { 248*865a0d06SJerome Brunet remote-endpoint = <&hdmi_connector_in>; 249*865a0d06SJerome Brunet }; 250*865a0d06SJerome Brunet}; 251*865a0d06SJerome Brunet 252*865a0d06SJerome Brunet&ir { 253*865a0d06SJerome Brunet pinctrl-0 = <&remote_input_ao_pins>; 254*865a0d06SJerome Brunet pinctrl-names = "default"; 255*865a0d06SJerome Brunet status = "okay"; 256*865a0d06SJerome Brunet}; 257*865a0d06SJerome Brunet 258*865a0d06SJerome Brunet&i2c_C { 259*865a0d06SJerome Brunet pinctrl-0 = <&i2c_c_dv18_pins>; 260*865a0d06SJerome Brunet pinctrl-names = "default"; 261*865a0d06SJerome Brunet status = "okay"; 262*865a0d06SJerome Brunet 263*865a0d06SJerome Brunet rtc: rtc@51 { 264*865a0d06SJerome Brunet reg = <0x51>; 265*865a0d06SJerome Brunet compatible = "nxp,pcf8563"; 266*865a0d06SJerome Brunet #clock-cells = <0>; 267*865a0d06SJerome Brunet clock-output-names = "rtc_clkout"; 268*865a0d06SJerome Brunet }; 269*865a0d06SJerome Brunet}; 270*865a0d06SJerome Brunet 271*865a0d06SJerome Brunet&pwm_AO_ab { 272*865a0d06SJerome Brunet pinctrl-0 = <&pwm_ao_a_3_pins>; 273*865a0d06SJerome Brunet pinctrl-names = "default"; 274*865a0d06SJerome Brunet clocks = <&clkc CLKID_FCLK_DIV4>; 275*865a0d06SJerome Brunet clock-names = "clkin0"; 276*865a0d06SJerome Brunet status = "okay"; 277*865a0d06SJerome Brunet}; 278*865a0d06SJerome Brunet 279*865a0d06SJerome Brunet&pwm_ab { 280*865a0d06SJerome Brunet pinctrl-0 = <&pwm_b_pins>; 281*865a0d06SJerome Brunet pinctrl-names = "default"; 282*865a0d06SJerome Brunet clocks = <&clkc CLKID_FCLK_DIV4>; 283*865a0d06SJerome Brunet clock-names = "clkin0"; 284*865a0d06SJerome Brunet status = "okay"; 285*865a0d06SJerome Brunet}; 286*865a0d06SJerome Brunet 287*865a0d06SJerome Brunet&pwm_ef { 288*865a0d06SJerome Brunet pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>; 289*865a0d06SJerome Brunet pinctrl-names = "default"; 290*865a0d06SJerome Brunet clocks = <&clkc CLKID_FCLK_DIV4>; 291*865a0d06SJerome Brunet clock-names = "clkin0"; 292*865a0d06SJerome Brunet status = "okay"; 293*865a0d06SJerome Brunet}; 294*865a0d06SJerome Brunet 295*865a0d06SJerome Brunet&saradc { 296*865a0d06SJerome Brunet vref-supply = <&vddio_ao18>; 297*865a0d06SJerome Brunet status = "okay"; 298*865a0d06SJerome Brunet}; 299*865a0d06SJerome Brunet 300*865a0d06SJerome Brunet/* SD card */ 301*865a0d06SJerome Brunet&sd_emmc_b { 302*865a0d06SJerome Brunet pinctrl-0 = <&sdcard_pins>; 303*865a0d06SJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 304*865a0d06SJerome Brunet pinctrl-names = "default", "clk-gate"; 305*865a0d06SJerome Brunet 306*865a0d06SJerome Brunet bus-width = <4>; 307*865a0d06SJerome Brunet cap-sd-highspeed; 308*865a0d06SJerome Brunet sd-uhs-sdr12; 309*865a0d06SJerome Brunet sd-uhs-sdr25; 310*865a0d06SJerome Brunet sd-uhs-sdr50; 311*865a0d06SJerome Brunet sd-uhs-ddr50; 312*865a0d06SJerome Brunet max-frequency = <200000000>; 313*865a0d06SJerome Brunet disable-wp; 314*865a0d06SJerome Brunet 315*865a0d06SJerome Brunet cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 316*865a0d06SJerome Brunet 317*865a0d06SJerome Brunet vmmc-supply = <&vcc_card>; 318*865a0d06SJerome Brunet vqmmc-supply = <&vddio_card>; 319*865a0d06SJerome Brunet 320*865a0d06SJerome Brunet status = "okay"; 321*865a0d06SJerome Brunet}; 322*865a0d06SJerome Brunet 323*865a0d06SJerome Brunet/* eMMC */ 324*865a0d06SJerome Brunet&sd_emmc_c { 325*865a0d06SJerome Brunet pinctrl-0 = <&emmc_pins>; 326*865a0d06SJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 327*865a0d06SJerome Brunet pinctrl-names = "default", "clk-gate"; 328*865a0d06SJerome Brunet 329*865a0d06SJerome Brunet bus-width = <8>; 330*865a0d06SJerome Brunet cap-mmc-highspeed; 331*865a0d06SJerome Brunet mmc-ddr-1_8v; 332*865a0d06SJerome Brunet mmc-hs200-1_8v; 333*865a0d06SJerome Brunet max-frequency = <200000000>; 334*865a0d06SJerome Brunet disable-wp; 335*865a0d06SJerome Brunet 336*865a0d06SJerome Brunet mmc-pwrseq = <&emmc_pwrseq>; 337*865a0d06SJerome Brunet vmmc-supply = <&vddio_ao3v3>; 338*865a0d06SJerome Brunet vqmmc-supply = <&vddio_boot>; 339*865a0d06SJerome Brunet 340*865a0d06SJerome Brunet status = "okay"; 341*865a0d06SJerome Brunet}; 342*865a0d06SJerome Brunet 343*865a0d06SJerome Brunet&spifc { 344*865a0d06SJerome Brunet pinctrl-0 = <&nor_pins>; 345*865a0d06SJerome Brunet pinctrl-names = "default"; 346*865a0d06SJerome Brunet status = "okay"; 347*865a0d06SJerome Brunet 348*865a0d06SJerome Brunet gd25lq128: spi-flash@0 { 349*865a0d06SJerome Brunet compatible = "jedec,spi-nor"; 350*865a0d06SJerome Brunet #address-cells = <1>; 351*865a0d06SJerome Brunet #size-cells = <1>; 352*865a0d06SJerome Brunet reg = <0>; 353*865a0d06SJerome Brunet spi-max-frequency = <12000000>; 354*865a0d06SJerome Brunet }; 355*865a0d06SJerome Brunet}; 356*865a0d06SJerome Brunet 357*865a0d06SJerome Brunet&uart_AO { 358*865a0d06SJerome Brunet pinctrl-0 = <&uart_ao_a_pins>; 359*865a0d06SJerome Brunet pinctrl-names = "default"; 360*865a0d06SJerome Brunet status = "okay"; 361*865a0d06SJerome Brunet}; 362*865a0d06SJerome Brunet 363*865a0d06SJerome Brunet&usb0 { 364*865a0d06SJerome Brunet status = "okay"; 365*865a0d06SJerome Brunet}; 366*865a0d06SJerome Brunet 367*865a0d06SJerome Brunet&usb2_phy0 { 368*865a0d06SJerome Brunet pinctrl-0 = <&usb1_rst_pins>; 369*865a0d06SJerome Brunet pinctrl-names = "default"; 370*865a0d06SJerome Brunet phy-supply = <&vcc5v>; 371*865a0d06SJerome Brunet}; 372*865a0d06SJerome Brunet 373*865a0d06SJerome Brunet&usb2_phy1 { 374*865a0d06SJerome Brunet phy-supply = <&vcc5v>; 375*865a0d06SJerome Brunet}; 376