// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) 2019 BayLibre SAS. * Author: Jerome Brunet */ /* Libretech Amlogic GX PC form factor - AKA: Tartiflette */ #include #include / { adc-keys { compatible = "adc-keys"; io-channels = <&saradc 0>; io-channel-names = "buttons"; keyup-threshold-microvolt = <1800000>; update-button { label = "update"; linux,code = ; press-threshold-microvolt = <1300000>; }; }; aliases { serial0 = &uart_AO; ethernet0 = ðmac; spi0 = &spifc; }; chosen { stdout-path = "serial0:115200n8"; }; cvbs-connector { compatible = "composite-video-connector"; status = "disabled"; port { cvbs_connector_in: endpoint { remote-endpoint = <&cvbs_vdac_out>; }; }; }; emmc_pwrseq: emmc-pwrseq { compatible = "mmc-pwrseq-emmc"; reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; }; hdmi-connector { compatible = "hdmi-connector"; type = "a"; port { hdmi_connector_in: endpoint { remote-endpoint = <&hdmi_tx_tmds_out>; }; }; }; gpio-keys-polled { compatible = "gpio-keys-polled"; poll-interval = <100>; power-button { label = "power"; linux,code = ; gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; }; }; memory@0 { device_type = "memory"; reg = <0x0 0x0 0x0 0x80000000>; }; ao_5v: regulator-ao_5v { compatible = "regulator-fixed"; regulator-name = "AO_5V"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&dc_in>; regulator-always-on; }; dc_in: regulator-dc_in { compatible = "regulator-fixed"; regulator-name = "DC_IN"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-always-on; }; leds { compatible = "gpio-leds"; green { color = ; function = LED_FUNCTION_DISK_ACTIVITY; gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>; linux,default-trigger = "disk-activity"; }; blue { color = ; function = LED_FUNCTION_STATUS; gpios = <&gpio GPIODV_28 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; panic-indicator; }; }; vcc_card: regulator-vcc_card { compatible = "regulator-fixed"; regulator-name = "VCC_CARD"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&vddio_ao3v3>; gpio = <&gpio GPIODV_4 GPIO_ACTIVE_HIGH>; enable-active-high; }; vcc5v: regulator-vcc5v { compatible = "regulator-fixed"; regulator-name = "VCC5V"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&ao_5v>; gpio = <&gpio GPIOH_3 GPIO_OPEN_DRAIN>; }; vddio_ao18: regulator-vddio_ao18 { compatible = "regulator-fixed"; regulator-name = "VDDIO_AO18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; vin-supply = <&ao_5v>; regulator-always-on; }; vddio_ao3v3: regulator-vddio_ao3v3 { compatible = "regulator-fixed"; regulator-name = "VDDIO_AO3V3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&ao_5v>; regulator-always-on; }; vddio_boot: regulator-vddio_boot { compatible = "regulator-fixed"; regulator-name = "VDDIO_BOOT"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; vin-supply = <&vddio_ao3v3>; regulator-always-on; }; vddio_card: regulator-vddio-card { compatible = "regulator-gpio"; regulator-name = "VDDIO_CARD"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; gpios = <&gpio GPIODV_5 GPIO_ACTIVE_HIGH>; gpios-states = <0>; states = <3300000 0>, <1800000 1>; regulator-settling-time-up-us = <200>; regulator-settling-time-down-us = <50000>; }; }; &cec_AO { pinctrl-0 = <&ao_cec_pins>; pinctrl-names = "default"; hdmi-phandle = <&hdmi_tx>; status = "okay"; }; &cvbs_vdac_port { cvbs_vdac_out: endpoint { remote-endpoint = <&cvbs_connector_in>; }; }; ðmac { pinctrl-0 = <ð_pins>, <ð_phy_irq_pins>; pinctrl-names = "default"; phy-handle = <&external_phy>; amlogic,tx-delay-ns = <2>; phy-mode = "rgmii"; status = "okay"; }; &external_mdio { external_phy: ethernet-phy@0 { reg = <0>; max-speed = <1000>; reset-assert-us = <10000>; reset-deassert-us = <30000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio_intc>; interrupts = <25 IRQ_TYPE_LEVEL_LOW>; }; }; &pinctrl_periphs { /* * Make sure the reset pin of the usb HUB is driven high to take * it out of reset. */ usb1_rst_pins: usb1_rst_irq { mux { groups = "GPIODV_3"; function = "gpio_periphs"; bias-disable; output-high; }; }; /* Make sure the phy irq pin is properly configured as input */ eth_phy_irq_pins: eth_phy_irq { mux { groups = "GPIOZ_15"; function = "gpio_periphs"; bias-disable; output-disable; }; }; }; &hdmi_tx { pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; pinctrl-names = "default"; hdmi-supply = <&vcc5v>; status = "okay"; }; &hdmi_tx_tmds_port { hdmi_tx_tmds_out: endpoint { remote-endpoint = <&hdmi_connector_in>; }; }; &ir { pinctrl-0 = <&remote_input_ao_pins>; pinctrl-names = "default"; status = "okay"; }; &i2c_C { pinctrl-0 = <&i2c_c_dv18_pins>; pinctrl-names = "default"; status = "okay"; rtc: rtc@51 { reg = <0x51>; compatible = "nxp,pcf8563"; #clock-cells = <0>; clock-output-names = "rtc_clkout"; }; }; &pwm_AO_ab { pinctrl-0 = <&pwm_ao_a_3_pins>; pinctrl-names = "default"; clocks = <&clkc CLKID_FCLK_DIV4>; clock-names = "clkin0"; status = "okay"; }; &pwm_ab { pinctrl-0 = <&pwm_b_pins>; pinctrl-names = "default"; clocks = <&clkc CLKID_FCLK_DIV4>; clock-names = "clkin0"; status = "okay"; }; &pwm_ef { pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>; pinctrl-names = "default"; clocks = <&clkc CLKID_FCLK_DIV4>; clock-names = "clkin0"; status = "okay"; }; &saradc { vref-supply = <&vddio_ao18>; status = "okay"; }; /* SD card */ &sd_emmc_b { pinctrl-0 = <&sdcard_pins>; pinctrl-1 = <&sdcard_clk_gate_pins>; pinctrl-names = "default", "clk-gate"; bus-width = <4>; cap-sd-highspeed; sd-uhs-sdr12; sd-uhs-sdr25; sd-uhs-sdr50; sd-uhs-ddr50; max-frequency = <200000000>; disable-wp; cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; vmmc-supply = <&vcc_card>; vqmmc-supply = <&vddio_card>; status = "okay"; }; /* eMMC */ &sd_emmc_c { pinctrl-0 = <&emmc_pins>; pinctrl-1 = <&emmc_clk_gate_pins>; pinctrl-names = "default", "clk-gate"; bus-width = <8>; cap-mmc-highspeed; mmc-ddr-1_8v; mmc-hs200-1_8v; max-frequency = <200000000>; disable-wp; mmc-pwrseq = <&emmc_pwrseq>; vmmc-supply = <&vddio_ao3v3>; vqmmc-supply = <&vddio_boot>; status = "okay"; }; &spifc { pinctrl-0 = <&nor_pins>; pinctrl-names = "default"; status = "okay"; gd25lq128: spi-flash@0 { compatible = "jedec,spi-nor"; #address-cells = <1>; #size-cells = <1>; reg = <0>; spi-max-frequency = <12000000>; }; }; &uart_AO { pinctrl-0 = <&uart_ao_a_pins>; pinctrl-names = "default"; status = "okay"; }; &usb0 { status = "okay"; }; &usb2_phy0 { pinctrl-0 = <&usb1_rst_pins>; pinctrl-names = "default"; phy-supply = <&vcc5v>; }; &usb2_phy1 { phy-supply = <&vcc5v>; };