1865a0d06SJerome Brunet// SPDX-License-Identifier: GPL-2.0 2865a0d06SJerome Brunet/* 3865a0d06SJerome Brunet * Copyright (c) 2019 BayLibre SAS. 4865a0d06SJerome Brunet * Author: Jerome Brunet <jbrunet@baylibre.com> 5865a0d06SJerome Brunet */ 6865a0d06SJerome Brunet 7865a0d06SJerome Brunet/* Libretech Amlogic GX PC form factor - AKA: Tartiflette */ 8865a0d06SJerome Brunet 9865a0d06SJerome Brunet#include <dt-bindings/input/input.h> 10865a0d06SJerome Brunet#include <dt-bindings/leds/common.h> 11865a0d06SJerome Brunet 12865a0d06SJerome Brunet/ { 13865a0d06SJerome Brunet adc-keys { 14865a0d06SJerome Brunet compatible = "adc-keys"; 15865a0d06SJerome Brunet io-channels = <&saradc 0>; 16865a0d06SJerome Brunet io-channel-names = "buttons"; 17865a0d06SJerome Brunet keyup-threshold-microvolt = <1800000>; 18865a0d06SJerome Brunet 19865a0d06SJerome Brunet update-button { 20865a0d06SJerome Brunet label = "update"; 21865a0d06SJerome Brunet linux,code = <KEY_VENDOR>; 22865a0d06SJerome Brunet press-threshold-microvolt = <1300000>; 23865a0d06SJerome Brunet }; 24865a0d06SJerome Brunet }; 25865a0d06SJerome Brunet 26865a0d06SJerome Brunet aliases { 27865a0d06SJerome Brunet serial0 = &uart_AO; 28865a0d06SJerome Brunet ethernet0 = ðmac; 29865a0d06SJerome Brunet spi0 = &spifc; 30865a0d06SJerome Brunet }; 31865a0d06SJerome Brunet 32865a0d06SJerome Brunet chosen { 33865a0d06SJerome Brunet stdout-path = "serial0:115200n8"; 34865a0d06SJerome Brunet }; 35865a0d06SJerome Brunet 36865a0d06SJerome Brunet cvbs-connector { 37865a0d06SJerome Brunet compatible = "composite-video-connector"; 38865a0d06SJerome Brunet status = "disabled"; 39865a0d06SJerome Brunet 40865a0d06SJerome Brunet port { 41865a0d06SJerome Brunet cvbs_connector_in: endpoint { 42865a0d06SJerome Brunet remote-endpoint = <&cvbs_vdac_out>; 43865a0d06SJerome Brunet }; 44865a0d06SJerome Brunet }; 45865a0d06SJerome Brunet }; 46865a0d06SJerome Brunet 47865a0d06SJerome Brunet emmc_pwrseq: emmc-pwrseq { 48865a0d06SJerome Brunet compatible = "mmc-pwrseq-emmc"; 49865a0d06SJerome Brunet reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 50865a0d06SJerome Brunet }; 51865a0d06SJerome Brunet 52865a0d06SJerome Brunet hdmi-connector { 53865a0d06SJerome Brunet compatible = "hdmi-connector"; 54865a0d06SJerome Brunet type = "a"; 55865a0d06SJerome Brunet 56865a0d06SJerome Brunet port { 57865a0d06SJerome Brunet hdmi_connector_in: endpoint { 58865a0d06SJerome Brunet remote-endpoint = <&hdmi_tx_tmds_out>; 59865a0d06SJerome Brunet }; 60865a0d06SJerome Brunet }; 61865a0d06SJerome Brunet }; 62865a0d06SJerome Brunet 63865a0d06SJerome Brunet gpio-keys-polled { 64865a0d06SJerome Brunet compatible = "gpio-keys-polled"; 65865a0d06SJerome Brunet poll-interval = <100>; 66865a0d06SJerome Brunet 67865a0d06SJerome Brunet power-button { 68865a0d06SJerome Brunet label = "power"; 69865a0d06SJerome Brunet linux,code = <KEY_POWER>; 70865a0d06SJerome Brunet gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; 71865a0d06SJerome Brunet }; 72865a0d06SJerome Brunet }; 73865a0d06SJerome Brunet 74865a0d06SJerome Brunet memory@0 { 75865a0d06SJerome Brunet device_type = "memory"; 76865a0d06SJerome Brunet reg = <0x0 0x0 0x0 0x80000000>; 77865a0d06SJerome Brunet }; 78865a0d06SJerome Brunet 79865a0d06SJerome Brunet ao_5v: regulator-ao_5v { 80865a0d06SJerome Brunet compatible = "regulator-fixed"; 81865a0d06SJerome Brunet regulator-name = "AO_5V"; 82865a0d06SJerome Brunet regulator-min-microvolt = <5000000>; 83865a0d06SJerome Brunet regulator-max-microvolt = <5000000>; 84865a0d06SJerome Brunet vin-supply = <&dc_in>; 85865a0d06SJerome Brunet regulator-always-on; 86865a0d06SJerome Brunet }; 87865a0d06SJerome Brunet 88865a0d06SJerome Brunet dc_in: regulator-dc_in { 89865a0d06SJerome Brunet compatible = "regulator-fixed"; 90865a0d06SJerome Brunet regulator-name = "DC_IN"; 91865a0d06SJerome Brunet regulator-min-microvolt = <5000000>; 92865a0d06SJerome Brunet regulator-max-microvolt = <5000000>; 93865a0d06SJerome Brunet regulator-always-on; 94865a0d06SJerome Brunet }; 95865a0d06SJerome Brunet 96865a0d06SJerome Brunet leds { 97865a0d06SJerome Brunet compatible = "gpio-leds"; 98865a0d06SJerome Brunet 99865a0d06SJerome Brunet green { 100865a0d06SJerome Brunet color = <LED_COLOR_ID_GREEN>; 101865a0d06SJerome Brunet function = LED_FUNCTION_DISK_ACTIVITY; 102865a0d06SJerome Brunet gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>; 103865a0d06SJerome Brunet linux,default-trigger = "disk-activity"; 104865a0d06SJerome Brunet }; 105865a0d06SJerome Brunet 106865a0d06SJerome Brunet blue { 107865a0d06SJerome Brunet color = <LED_COLOR_ID_BLUE>; 108865a0d06SJerome Brunet function = LED_FUNCTION_STATUS; 109865a0d06SJerome Brunet gpios = <&gpio GPIODV_28 GPIO_ACTIVE_HIGH>; 110865a0d06SJerome Brunet linux,default-trigger = "heartbeat"; 111865a0d06SJerome Brunet panic-indicator; 112865a0d06SJerome Brunet }; 113865a0d06SJerome Brunet }; 114865a0d06SJerome Brunet 115865a0d06SJerome Brunet vcc_card: regulator-vcc_card { 116865a0d06SJerome Brunet compatible = "regulator-fixed"; 117865a0d06SJerome Brunet regulator-name = "VCC_CARD"; 118865a0d06SJerome Brunet regulator-min-microvolt = <3300000>; 119865a0d06SJerome Brunet regulator-max-microvolt = <3300000>; 120865a0d06SJerome Brunet vin-supply = <&vddio_ao3v3>; 121865a0d06SJerome Brunet 122865a0d06SJerome Brunet gpio = <&gpio GPIODV_4 GPIO_ACTIVE_HIGH>; 123865a0d06SJerome Brunet enable-active-high; 124865a0d06SJerome Brunet }; 125865a0d06SJerome Brunet 126865a0d06SJerome Brunet vcc5v: regulator-vcc5v { 127865a0d06SJerome Brunet compatible = "regulator-fixed"; 128865a0d06SJerome Brunet regulator-name = "VCC5V"; 129865a0d06SJerome Brunet regulator-min-microvolt = <5000000>; 130865a0d06SJerome Brunet regulator-max-microvolt = <5000000>; 131865a0d06SJerome Brunet vin-supply = <&ao_5v>; 132865a0d06SJerome Brunet 133865a0d06SJerome Brunet gpio = <&gpio GPIOH_3 GPIO_OPEN_DRAIN>; 134865a0d06SJerome Brunet }; 135865a0d06SJerome Brunet 136865a0d06SJerome Brunet vddio_ao18: regulator-vddio_ao18 { 137865a0d06SJerome Brunet compatible = "regulator-fixed"; 138865a0d06SJerome Brunet regulator-name = "VDDIO_AO18"; 139865a0d06SJerome Brunet regulator-min-microvolt = <1800000>; 140865a0d06SJerome Brunet regulator-max-microvolt = <1800000>; 141865a0d06SJerome Brunet vin-supply = <&ao_5v>; 142865a0d06SJerome Brunet regulator-always-on; 143865a0d06SJerome Brunet }; 144865a0d06SJerome Brunet 145865a0d06SJerome Brunet vddio_ao3v3: regulator-vddio_ao3v3 { 146865a0d06SJerome Brunet compatible = "regulator-fixed"; 147865a0d06SJerome Brunet regulator-name = "VDDIO_AO3V3"; 148865a0d06SJerome Brunet regulator-min-microvolt = <3300000>; 149865a0d06SJerome Brunet regulator-max-microvolt = <3300000>; 150865a0d06SJerome Brunet vin-supply = <&ao_5v>; 151865a0d06SJerome Brunet regulator-always-on; 152865a0d06SJerome Brunet }; 153865a0d06SJerome Brunet 154865a0d06SJerome Brunet vddio_boot: regulator-vddio_boot { 155865a0d06SJerome Brunet compatible = "regulator-fixed"; 156865a0d06SJerome Brunet regulator-name = "VDDIO_BOOT"; 157865a0d06SJerome Brunet regulator-min-microvolt = <1800000>; 158865a0d06SJerome Brunet regulator-max-microvolt = <1800000>; 159865a0d06SJerome Brunet vin-supply = <&vddio_ao3v3>; 160865a0d06SJerome Brunet regulator-always-on; 161865a0d06SJerome Brunet }; 162865a0d06SJerome Brunet 163865a0d06SJerome Brunet vddio_card: regulator-vddio-card { 164865a0d06SJerome Brunet compatible = "regulator-gpio"; 165865a0d06SJerome Brunet regulator-name = "VDDIO_CARD"; 166865a0d06SJerome Brunet regulator-min-microvolt = <1800000>; 167865a0d06SJerome Brunet regulator-max-microvolt = <3300000>; 168865a0d06SJerome Brunet 169865a0d06SJerome Brunet gpios = <&gpio GPIODV_5 GPIO_ACTIVE_HIGH>; 170865a0d06SJerome Brunet gpios-states = <0>; 171865a0d06SJerome Brunet 172865a0d06SJerome Brunet states = <3300000 0>, 173865a0d06SJerome Brunet <1800000 1>; 174865a0d06SJerome Brunet 175865a0d06SJerome Brunet regulator-settling-time-up-us = <200>; 176865a0d06SJerome Brunet regulator-settling-time-down-us = <50000>; 177865a0d06SJerome Brunet }; 178865a0d06SJerome Brunet}; 179865a0d06SJerome Brunet 180865a0d06SJerome Brunet&cec_AO { 181865a0d06SJerome Brunet pinctrl-0 = <&ao_cec_pins>; 182865a0d06SJerome Brunet pinctrl-names = "default"; 183865a0d06SJerome Brunet hdmi-phandle = <&hdmi_tx>; 184865a0d06SJerome Brunet status = "okay"; 185865a0d06SJerome Brunet}; 186865a0d06SJerome Brunet 187865a0d06SJerome Brunet&cvbs_vdac_port { 188865a0d06SJerome Brunet cvbs_vdac_out: endpoint { 189865a0d06SJerome Brunet remote-endpoint = <&cvbs_connector_in>; 190865a0d06SJerome Brunet }; 191865a0d06SJerome Brunet}; 192865a0d06SJerome Brunet 193865a0d06SJerome Brunetðmac { 194865a0d06SJerome Brunet pinctrl-0 = <ð_pins>, <ð_phy_irq_pins>; 195865a0d06SJerome Brunet pinctrl-names = "default"; 196865a0d06SJerome Brunet phy-handle = <&external_phy>; 197865a0d06SJerome Brunet amlogic,tx-delay-ns = <2>; 198865a0d06SJerome Brunet phy-mode = "rgmii"; 199865a0d06SJerome Brunet status = "okay"; 200865a0d06SJerome Brunet}; 201865a0d06SJerome Brunet 202865a0d06SJerome Brunet&external_mdio { 203865a0d06SJerome Brunet external_phy: ethernet-phy@0 { 204865a0d06SJerome Brunet reg = <0>; 205865a0d06SJerome Brunet max-speed = <1000>; 206865a0d06SJerome Brunet reset-assert-us = <10000>; 207865a0d06SJerome Brunet reset-deassert-us = <30000>; 208865a0d06SJerome Brunet reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; 209865a0d06SJerome Brunet interrupt-parent = <&gpio_intc>; 210865a0d06SJerome Brunet interrupts = <25 IRQ_TYPE_LEVEL_LOW>; 211865a0d06SJerome Brunet }; 212865a0d06SJerome Brunet}; 213865a0d06SJerome Brunet 214865a0d06SJerome Brunet&pinctrl_periphs { 215865a0d06SJerome Brunet /* 216865a0d06SJerome Brunet * Make sure the reset pin of the usb HUB is driven high to take 217865a0d06SJerome Brunet * it out of reset. 218865a0d06SJerome Brunet */ 219865a0d06SJerome Brunet usb1_rst_pins: usb1_rst_irq { 220865a0d06SJerome Brunet mux { 221865a0d06SJerome Brunet groups = "GPIODV_3"; 222865a0d06SJerome Brunet function = "gpio_periphs"; 223865a0d06SJerome Brunet bias-disable; 224865a0d06SJerome Brunet output-high; 225865a0d06SJerome Brunet }; 226865a0d06SJerome Brunet }; 227865a0d06SJerome Brunet 228865a0d06SJerome Brunet /* Make sure the phy irq pin is properly configured as input */ 229865a0d06SJerome Brunet eth_phy_irq_pins: eth_phy_irq { 230865a0d06SJerome Brunet mux { 231865a0d06SJerome Brunet groups = "GPIOZ_15"; 232865a0d06SJerome Brunet function = "gpio_periphs"; 233865a0d06SJerome Brunet bias-disable; 234865a0d06SJerome Brunet output-disable; 235865a0d06SJerome Brunet }; 236865a0d06SJerome Brunet }; 237865a0d06SJerome Brunet}; 238865a0d06SJerome Brunet 239865a0d06SJerome Brunet&hdmi_tx { 240865a0d06SJerome Brunet pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 241865a0d06SJerome Brunet pinctrl-names = "default"; 242865a0d06SJerome Brunet hdmi-supply = <&vcc5v>; 243865a0d06SJerome Brunet status = "okay"; 244865a0d06SJerome Brunet}; 245865a0d06SJerome Brunet 246865a0d06SJerome Brunet&hdmi_tx_tmds_port { 247865a0d06SJerome Brunet hdmi_tx_tmds_out: endpoint { 248865a0d06SJerome Brunet remote-endpoint = <&hdmi_connector_in>; 249865a0d06SJerome Brunet }; 250865a0d06SJerome Brunet}; 251865a0d06SJerome Brunet 252865a0d06SJerome Brunet&ir { 253865a0d06SJerome Brunet pinctrl-0 = <&remote_input_ao_pins>; 254865a0d06SJerome Brunet pinctrl-names = "default"; 255865a0d06SJerome Brunet status = "okay"; 256865a0d06SJerome Brunet}; 257865a0d06SJerome Brunet 258865a0d06SJerome Brunet&i2c_C { 259865a0d06SJerome Brunet pinctrl-0 = <&i2c_c_dv18_pins>; 260865a0d06SJerome Brunet pinctrl-names = "default"; 261865a0d06SJerome Brunet status = "okay"; 262865a0d06SJerome Brunet 263865a0d06SJerome Brunet rtc: rtc@51 { 264865a0d06SJerome Brunet reg = <0x51>; 265865a0d06SJerome Brunet compatible = "nxp,pcf8563"; 266865a0d06SJerome Brunet #clock-cells = <0>; 267865a0d06SJerome Brunet clock-output-names = "rtc_clkout"; 268865a0d06SJerome Brunet }; 269865a0d06SJerome Brunet}; 270865a0d06SJerome Brunet 271865a0d06SJerome Brunet&pwm_AO_ab { 272865a0d06SJerome Brunet pinctrl-0 = <&pwm_ao_a_3_pins>; 273865a0d06SJerome Brunet pinctrl-names = "default"; 274865a0d06SJerome Brunet clocks = <&clkc CLKID_FCLK_DIV4>; 275865a0d06SJerome Brunet clock-names = "clkin0"; 276865a0d06SJerome Brunet status = "okay"; 277865a0d06SJerome Brunet}; 278865a0d06SJerome Brunet 279865a0d06SJerome Brunet&pwm_ab { 280865a0d06SJerome Brunet pinctrl-0 = <&pwm_b_pins>; 281865a0d06SJerome Brunet pinctrl-names = "default"; 282865a0d06SJerome Brunet clocks = <&clkc CLKID_FCLK_DIV4>; 283865a0d06SJerome Brunet clock-names = "clkin0"; 284865a0d06SJerome Brunet status = "okay"; 285865a0d06SJerome Brunet}; 286865a0d06SJerome Brunet 287865a0d06SJerome Brunet&pwm_ef { 288865a0d06SJerome Brunet pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>; 289865a0d06SJerome Brunet pinctrl-names = "default"; 290865a0d06SJerome Brunet clocks = <&clkc CLKID_FCLK_DIV4>; 291865a0d06SJerome Brunet clock-names = "clkin0"; 292865a0d06SJerome Brunet status = "okay"; 293865a0d06SJerome Brunet}; 294865a0d06SJerome Brunet 295865a0d06SJerome Brunet&saradc { 296865a0d06SJerome Brunet vref-supply = <&vddio_ao18>; 297865a0d06SJerome Brunet status = "okay"; 298865a0d06SJerome Brunet}; 299865a0d06SJerome Brunet 300865a0d06SJerome Brunet/* SD card */ 301865a0d06SJerome Brunet&sd_emmc_b { 302865a0d06SJerome Brunet pinctrl-0 = <&sdcard_pins>; 303865a0d06SJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 304865a0d06SJerome Brunet pinctrl-names = "default", "clk-gate"; 305865a0d06SJerome Brunet 306865a0d06SJerome Brunet bus-width = <4>; 307865a0d06SJerome Brunet cap-sd-highspeed; 308865a0d06SJerome Brunet sd-uhs-sdr12; 309865a0d06SJerome Brunet sd-uhs-sdr25; 310865a0d06SJerome Brunet sd-uhs-sdr50; 311865a0d06SJerome Brunet sd-uhs-ddr50; 312865a0d06SJerome Brunet max-frequency = <200000000>; 313865a0d06SJerome Brunet disable-wp; 314865a0d06SJerome Brunet 315865a0d06SJerome Brunet cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 316865a0d06SJerome Brunet 317865a0d06SJerome Brunet vmmc-supply = <&vcc_card>; 318865a0d06SJerome Brunet vqmmc-supply = <&vddio_card>; 319865a0d06SJerome Brunet 320865a0d06SJerome Brunet status = "okay"; 321865a0d06SJerome Brunet}; 322865a0d06SJerome Brunet 323865a0d06SJerome Brunet/* eMMC */ 324865a0d06SJerome Brunet&sd_emmc_c { 325865a0d06SJerome Brunet pinctrl-0 = <&emmc_pins>; 326865a0d06SJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 327865a0d06SJerome Brunet pinctrl-names = "default", "clk-gate"; 328865a0d06SJerome Brunet 329865a0d06SJerome Brunet bus-width = <8>; 330865a0d06SJerome Brunet cap-mmc-highspeed; 331865a0d06SJerome Brunet mmc-ddr-1_8v; 332865a0d06SJerome Brunet mmc-hs200-1_8v; 333865a0d06SJerome Brunet max-frequency = <200000000>; 334865a0d06SJerome Brunet disable-wp; 335865a0d06SJerome Brunet 336865a0d06SJerome Brunet mmc-pwrseq = <&emmc_pwrseq>; 337865a0d06SJerome Brunet vmmc-supply = <&vddio_ao3v3>; 338865a0d06SJerome Brunet vqmmc-supply = <&vddio_boot>; 339865a0d06SJerome Brunet 340865a0d06SJerome Brunet status = "okay"; 341865a0d06SJerome Brunet}; 342865a0d06SJerome Brunet 343865a0d06SJerome Brunet&spifc { 344865a0d06SJerome Brunet pinctrl-0 = <&nor_pins>; 345865a0d06SJerome Brunet pinctrl-names = "default"; 346865a0d06SJerome Brunet status = "okay"; 347865a0d06SJerome Brunet 348865a0d06SJerome Brunet gd25lq128: spi-flash@0 { 349865a0d06SJerome Brunet compatible = "jedec,spi-nor"; 350865a0d06SJerome Brunet #address-cells = <1>; 351865a0d06SJerome Brunet #size-cells = <1>; 352865a0d06SJerome Brunet reg = <0>; 353865a0d06SJerome Brunet spi-max-frequency = <12000000>; 354865a0d06SJerome Brunet }; 355865a0d06SJerome Brunet}; 356865a0d06SJerome Brunet 357865a0d06SJerome Brunet&uart_AO { 358865a0d06SJerome Brunet pinctrl-0 = <&uart_ao_a_pins>; 359865a0d06SJerome Brunet pinctrl-names = "default"; 360865a0d06SJerome Brunet status = "okay"; 361865a0d06SJerome Brunet}; 362865a0d06SJerome Brunet 363865a0d06SJerome Brunet&usb0 { 364865a0d06SJerome Brunet status = "okay"; 365865a0d06SJerome Brunet}; 366865a0d06SJerome Brunet 367865a0d06SJerome Brunet&usb2_phy0 { 368865a0d06SJerome Brunet pinctrl-0 = <&usb1_rst_pins>; 369865a0d06SJerome Brunet pinctrl-names = "default"; 370865a0d06SJerome Brunet phy-supply = <&vcc5v>; 371865a0d06SJerome Brunet}; 372865a0d06SJerome Brunet 373865a0d06SJerome Brunet&usb2_phy1 { 374865a0d06SJerome Brunet phy-supply = <&vcc5v>; 375865a0d06SJerome Brunet}; 376