| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright (c) 2019 BayLibre, SAS. |
| * Author: Fabien Parent <fparent@baylibre.com> |
| */ |
| |
| /dts-v1/; |
| |
| #include <dt-bindings/gpio/gpio.h> |
| |
| #include "mt8167.dtsi" |
| #include "mt6392.dtsi" |
| |
| / { |
| model = "Google Coral MT8167"; |
| |
| aliases { |
| serial0 = &uart0; |
| }; |
| |
| chosen { |
| stdout-path = "serial0:921600n8"; |
| }; |
| |
| memory: memory@40000000 { |
| device_type = "memory"; |
| reg = <0 0x40000000 0 0x40000000>; |
| }; |
| |
| firmware { |
| optee: optee@4fd00000 { |
| compatible = "linaro,optee-tz"; |
| method = "smc"; |
| }; |
| }; |
| |
| usb0_vbus: regulator@0 { |
| compatible = "regulator-fixed"; |
| regulator-name = "usb0_vbus"; |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| gpio = <&pio 17 GPIO_ACTIVE_LOW>; |
| regulator-always-on; |
| }; |
| |
| ga1600_pmic: ga1600_pmic { |
| compatible = "regulator-fixed"; |
| regulator-name = "ga1600_pmic"; |
| regulator-min-microvolt = <1000000>; |
| regulator-max-microvolt = <1000000>; |
| gpio = <&pio 56 GPIO_ACTIVE_HIGH>; |
| startup-delay-us = <0>; |
| enable-active-high; |
| regulator-always-on; |
| }; |
| ga1600_reset: ga1600_reset { |
| compatible = "regulator-fixed"; |
| regulator-name = "ga1600_reset"; |
| regulator-min-microvolt = <1000000>; |
| regulator-max-microvolt = <1000000>; |
| gpio = <&pio 57 GPIO_ACTIVE_HIGH>; |
| startup-delay-us = <150>; |
| enable-active-high; |
| regulator-always-on; |
| }; |
| |
| mt8167_audio_codec: mt8167_audio_codec { |
| compatible = "mediatek,mt8167-codec"; |
| status = "okay"; |
| clocks = <&topckgen CLK_TOP_AUDIO>; |
| clock-names = "bus"; |
| mediatek,afe-regmap = <&afe>; |
| mediatek,apmixedsys-regmap = <&apmixedsys>; |
| mediatek,pwrap-regmap = <&pwrap>; |
| mediatek,dmic-wire-mode = <1>; // TWO_WIRE |
| mediatek,headphone-cap-sel = <1>; // 22uF |
| mediatek,speaker-mode = <0>; // Class D |
| }; |
| |
| sound: sound { |
| compatible = "mediatek,snd-soc-mt8167-excelsior"; |
| status = "okay"; |
| mediatek,platform = <&afe>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&aud_pins_default>; |
| mediatek,jack-detect-gpio = <&pio 40 0>; |
| }; |
| }; |
| |
| &afe { |
| status = "okay"; |
| mediatek,tdm-out-mode = <0>; // HDMI |
| }; |
| |
| &cpu0 { |
| proc-supply = <&mt6392_vproc_reg>; |
| }; |
| |
| &cpu1 { |
| proc-supply = <&mt6392_vproc_reg>; |
| }; |
| |
| &cpu2 { |
| proc-supply = <&mt6392_vproc_reg>; |
| }; |
| |
| &cpu3 { |
| proc-supply = <&mt6392_vproc_reg>; |
| }; |
| |
| &mt6392_pmic { |
| interrupt-parent = <&pio>; |
| interrupts = <28 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| }; |
| |
| &mt6392_vcamaf_reg { |
| regulator-always-on; |
| }; |
| |
| &mt6392_vgp1_reg { |
| regulator-min-microvolt = <3300000>; |
| regulator-always-on; |
| }; |
| |
| &uart0 { |
| status = "okay"; |
| }; |
| |
| &pio { |
| i2c0_pins_a: i2c0 { |
| pins1 { |
| pinmux = <MT8167_PIN_58_SDA0__FUNC_SDA0_0>, |
| <MT8167_PIN_59_SCL0__FUNC_SCL0_0>; |
| bias-disable; |
| }; |
| }; |
| |
| i2c1_pins_a: i2c1 { |
| pins1 { |
| pinmux = <MT8167_PIN_52_SDA1__FUNC_SDA1_0>, |
| <MT8167_PIN_53_SCL1__FUNC_SCL1_0>; |
| bias-disable; |
| }; |
| }; |
| |
| i2c2_pins_a: i2c2 { |
| pins1 { |
| pinmux = <MT8167_PIN_60_SDA2__FUNC_GPIO60>, |
| <MT8167_PIN_61_SCL2__FUNC_GPIO61>; |
| bias-disable; |
| }; |
| pins_a71ch_reset { |
| pinmux = <MT8516_PIN_23_EINT23__FUNC_GPIO23>; |
| output-high; |
| }; |
| }; |
| |
| aud_pins_default: audiodefault { |
| pins1 { |
| pinmux = <MT8167_PIN_40_KPROW0__FUNC_GPIO40>; |
| input-enable; |
| bias-pull-up; |
| }; |
| }; |
| |
| mmc0_pins_default: mmc0default { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_120_MSDC0_DAT0__FUNC_MSDC0_DAT0>, |
| <MT8167_PIN_119_MSDC0_DAT1__FUNC_MSDC0_DAT1>, |
| <MT8167_PIN_118_MSDC0_DAT2__FUNC_MSDC0_DAT2>, |
| <MT8167_PIN_117_MSDC0_DAT3__FUNC_MSDC0_DAT3>, |
| <MT8167_PIN_113_MSDC0_DAT4__FUNC_MSDC0_DAT4>, |
| <MT8167_PIN_112_MSDC0_DAT5__FUNC_MSDC0_DAT5>, |
| <MT8167_PIN_111_MSDC0_DAT6__FUNC_MSDC0_DAT6>, |
| <MT8167_PIN_110_MSDC0_DAT7__FUNC_MSDC0_DAT7>, |
| <MT8167_PIN_115_MSDC0_CMD__FUNC_MSDC0_CMD>; |
| input-enable; |
| bias-pull-up; |
| }; |
| |
| pins_clk { |
| pinmux = <MT8167_PIN_116_MSDC0_CLK__FUNC_MSDC0_CLK>; |
| bias-pull-down; |
| }; |
| |
| pins_rst { |
| pinmux = <MT8167_PIN_114_MSDC0_RSTB__FUNC_MSDC0_RSTB>; |
| bias-pull-up; |
| }; |
| |
| pins_user { |
| pinmux = <MT8167_PIN_2_EINT2__FUNC_GPIO2>; |
| bias-pull-up; |
| }; |
| }; |
| |
| mmc0_pins_uhs: mmc0@0{ |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_120_MSDC0_DAT0__FUNC_MSDC0_DAT0>, |
| <MT8167_PIN_119_MSDC0_DAT1__FUNC_MSDC0_DAT1>, |
| <MT8167_PIN_118_MSDC0_DAT2__FUNC_MSDC0_DAT2>, |
| <MT8167_PIN_117_MSDC0_DAT3__FUNC_MSDC0_DAT3>, |
| <MT8167_PIN_113_MSDC0_DAT4__FUNC_MSDC0_DAT4>, |
| <MT8167_PIN_112_MSDC0_DAT5__FUNC_MSDC0_DAT5>, |
| <MT8167_PIN_111_MSDC0_DAT6__FUNC_MSDC0_DAT6>, |
| <MT8167_PIN_110_MSDC0_DAT7__FUNC_MSDC0_DAT7>, |
| <MT8167_PIN_115_MSDC0_CMD__FUNC_MSDC0_CMD>; |
| input-enable; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_01>; |
| }; |
| |
| pins_clk { |
| pinmux = <MT8167_PIN_116_MSDC0_CLK__FUNC_MSDC0_CLK>; |
| drive-strength = <MTK_DRIVE_8mA>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| |
| pins_rst { |
| pinmux = <MT8167_PIN_114_MSDC0_RSTB__FUNC_MSDC0_RSTB>; |
| bias-pull-up; |
| }; |
| }; |
| |
| mmc1_pins_default: mmc1default { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_106_MSDC1_DAT0__FUNC_MSDC1_DAT0>, |
| <MT8167_PIN_107_MSDC1_DAT1__FUNC_MSDC1_DAT1>, |
| <MT8167_PIN_108_MSDC1_DAT2__FUNC_MSDC1_DAT2>, |
| <MT8167_PIN_109_MSDC1_DAT3__FUNC_MSDC1_DAT3>, |
| <MT8167_PIN_104_MSDC1_CMD__FUNC_MSDC1_CMD>; |
| input-enable; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_01>; |
| }; |
| |
| pins_clk { |
| pinmux = <MT8167_PIN_105_MSDC1_CLK__FUNC_MSDC1_CLK>; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| |
| pins_pmu_en { |
| pinmux = <MT8167_PIN_48_SPI_CS__FUNC_GPIO48>; |
| output-low; |
| }; |
| |
| pins_test_en { |
| pinmux = <MT8167_PIN_38_MRG_DI__FUNC_GPIO38>; |
| output-low; |
| }; |
| |
| pins_sys_rst { |
| pinmux = <MT8167_PIN_47_JTDO__FUNC_GPIO47>; |
| output-high; |
| }; |
| }; |
| |
| mmc1_pins_uhs: mmc1@0 { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_106_MSDC1_DAT0__FUNC_MSDC1_DAT0>, |
| <MT8167_PIN_107_MSDC1_DAT1__FUNC_MSDC1_DAT1>, |
| <MT8167_PIN_108_MSDC1_DAT2__FUNC_MSDC1_DAT2>, |
| <MT8167_PIN_109_MSDC1_DAT3__FUNC_MSDC1_DAT3>, |
| <MT8167_PIN_104_MSDC1_CMD__FUNC_MSDC1_CMD>; |
| input-enable; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_01>; |
| }; |
| |
| pins_clk { |
| pinmux = <MT8167_PIN_105_MSDC1_CLK__FUNC_MSDC1_CLK>; |
| drive-strength = <MTK_DRIVE_8mA>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| |
| pins_pmu_en { |
| pinmux = <MT8167_PIN_48_SPI_CS__FUNC_GPIO48>; |
| output-high; |
| }; |
| |
| pins_test_en { |
| pinmux = <MT8167_PIN_38_MRG_DI__FUNC_GPIO38>; |
| output-low; |
| }; |
| |
| pins_sys_rst { |
| pinmux = <MT8167_PIN_47_JTDO__FUNC_GPIO47>; |
| output-high; |
| }; |
| }; |
| |
| mmc2_pins_default: mmc2default { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_70_MSDC2_DAT0__FUNC_MSDC2_DAT0>, |
| <MT8167_PIN_71_MSDC2_DAT1__FUNC_MSDC2_DAT1>, |
| <MT8167_PIN_72_MSDC2_DAT2__FUNC_MSDC2_DAT2>, |
| <MT8167_PIN_73_MSDC2_DAT3__FUNC_MSDC2_DAT3>, |
| <MT8167_PIN_68_MSDC2_CMD__FUNC_MSDC2_CMD>; |
| input-enable; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_01>; |
| }; |
| |
| pins_clk { |
| pinmux = <MT8167_PIN_69_MSDC2_CLK__FUNC_MSDC2_CLK>; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| }; |
| |
| mmc2_pins_uhs: mmc2@0 { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_70_MSDC2_DAT0__FUNC_MSDC2_DAT0>, |
| <MT8167_PIN_71_MSDC2_DAT1__FUNC_MSDC2_DAT1>, |
| <MT8167_PIN_72_MSDC2_DAT2__FUNC_MSDC2_DAT2>, |
| <MT8167_PIN_73_MSDC2_DAT3__FUNC_MSDC2_DAT3>, |
| <MT8167_PIN_68_MSDC2_CMD__FUNC_MSDC2_CMD>; |
| input-enable; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_01>; |
| }; |
| |
| pins_clk { |
| pinmux = <MT8167_PIN_69_MSDC2_CLK__FUNC_MSDC2_CLK>; |
| drive-strength = <MTK_DRIVE_8mA>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| }; |
| |
| mmc2_pins_default: mmc2default { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_70_MSDC2_DAT0__FUNC_MSDC2_DAT0>, |
| <MT8167_PIN_71_MSDC2_DAT1__FUNC_MSDC2_DAT1>, |
| <MT8167_PIN_72_MSDC2_DAT2__FUNC_MSDC2_DAT2>, |
| <MT8167_PIN_73_MSDC2_DAT3__FUNC_MSDC2_DAT3>, |
| <MT8167_PIN_68_MSDC2_CMD__FUNC_MSDC2_CMD>; |
| input-enable; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_01>; |
| }; |
| |
| pins_clk { |
| pinmux = <MT8167_PIN_69_MSDC2_CLK__FUNC_MSDC2_CLK>; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| }; |
| |
| mmc2_pins_uhs: mmc2@0 { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_70_MSDC2_DAT0__FUNC_MSDC2_DAT0>, |
| <MT8167_PIN_71_MSDC2_DAT1__FUNC_MSDC2_DAT1>, |
| <MT8167_PIN_72_MSDC2_DAT2__FUNC_MSDC2_DAT2>, |
| <MT8167_PIN_73_MSDC2_DAT3__FUNC_MSDC2_DAT3>, |
| <MT8167_PIN_68_MSDC2_CMD__FUNC_MSDC2_CMD>; |
| input-enable; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_01>; |
| }; |
| |
| pins_clk { |
| pinmux = <MT8167_PIN_69_MSDC2_CLK__FUNC_MSDC2_CLK>; |
| drive-strength = <MTK_DRIVE_8mA>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| }; |
| |
| hdmi_pins_default: hdmi_pins_default { |
| }; |
| |
| hdmi_pins_hpd: hdmi_pins_hpd { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_122_HTPLG__FUNC_HTPLG>; |
| bias-pull-down; |
| }; |
| }; |
| |
| /* GA1600 GPIO start */ |
| ga1600_boot_fail: boot_fail { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_55_I2S_DATA_IN__FUNC_GPIO55>; |
| slew-rate = <1>; |
| input-enable; |
| bias-pull-up; |
| }; |
| }; |
| |
| ga1600_pmic_en: pmic_en { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_56_I2S_LRCK__FUNC_GPIO56>; |
| slew-rate = <1>; |
| output-high; |
| }; |
| }; |
| |
| ga1600_reset_n: reset_n { |
| pins_cmd_dat { |
| pinmux = <MT8167_PIN_57_I2S_BCK__FUNC_GPIO57>; |
| slew-rate = <1>; |
| output-high; |
| }; |
| }; |
| /* GA1600 GPIO end */ |
| }; |
| |
| &i2c0 { |
| status = "okay"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c0_pins_a>; |
| clock-div = <2>; |
| }; |
| |
| &i2c1 { |
| status = "okay"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c1_pins_a>; |
| clock-div = <2>; |
| }; |
| |
| &i2c2 { |
| status = "okay"; |
| compatible = "i2c-gpio"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c2_pins_a>; |
| sda-gpios = <&pio 60 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; |
| scl-gpios = <&pio 61 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; |
| }; |
| |
| &mmc0 { |
| pinctrl-names = "default", "state_uhs"; |
| pinctrl-0 = <&mmc0_pins_default>; |
| pinctrl-1 = <&mmc0_pins_uhs>; |
| status = "okay"; |
| bus-width = <8>; |
| max-frequency = <200000000>; |
| cap-mmc-highspeed; |
| mmc-hs200-1_8v; |
| cap-mmc-hw-reset; |
| vmmc-supply = <&mt6392_vemc3v3_reg>; |
| vqmmc-supply = <&mt6392_vio18_reg>; |
| non-removable; |
| }; |
| |
| &mmc1 { |
| status = "okay"; |
| pinctrl-names = "default", "state_uhs"; |
| pinctrl-0 = <&mmc1_pins_default>; |
| pinctrl-1 = <&mmc1_pins_uhs>; |
| vmmc-supply = <&mt6392_vemc3v3_reg>; |
| vqmmc-supply = <&mt6392_vio18_reg>; |
| bus-width = <4>; |
| max-frequency = <200000000>; |
| keep-power-in-suspend; |
| cap-sd-highspeed; |
| enable-sdio-wakeup; |
| sd-uhs-sdr50; |
| sd-uhs-sdr104; |
| cap-sdio-irq; |
| non-removable; |
| |
| mt7668 { |
| wifi: mt7668-wifi@0 { |
| compatible = "mediatek,mt8516-wifi", "mediatek,mt7668-wifi"; |
| mac-address = [00 00 00 00 00 00]; |
| }; |
| bluetooth: mt7668-bluetooth@0 { |
| compatible = "mediatek,mt8516-bluetooth", "mediatek,mt7668-bluetooth"; |
| mac-address = [00 00 00 00 00 00]; |
| }; |
| }; |
| }; |
| |
| &mmc2 { |
| pinctrl-names = "default", "state_uhs"; |
| pinctrl-0 = <&mmc2_pins_default>; |
| pinctrl-1 = <&mmc2_pins_uhs>; |
| status = "okay"; |
| bus-width = <4>; |
| max-frequency = <200000000>; |
| cap-sd-highspeed; |
| sd-uhs-sdr50; |
| sd-uhs-sdr104; |
| broken-cd; |
| vmmc-supply = <&mt6392_vmch_reg>; |
| vqmmc-supply = <&mt6392_vmc_reg>; |
| }; |
| |
| &dpi1 { |
| status = "okay"; |
| ddc-i2c-bus = <&hdmiddc>; |
| |
| port { |
| hdmi_connector_in: endpoint@0 { |
| remote-endpoint = <&hdmi_out>; |
| }; |
| }; |
| }; |
| |
| &hdmi_phy { |
| status = "okay"; |
| }; |
| |
| &cec { |
| status = "okay"; |
| }; |
| |
| &hdmi { |
| pinctrl-names = "default", "hdmi_hpd"; |
| pinctrl-0 = <&hdmi_pins_default>; |
| pinctrl-1 = <&hdmi_pins_hpd>; |
| status = "okay"; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@1 { |
| reg = <1>; |
| |
| hdmi_out: endpoint { |
| remote-endpoint = <&hdmi_connector_in>; |
| }; |
| }; |
| }; |
| }; |
| |
| &usb0 { |
| status = "okay"; |
| dr_mode = "otg"; |
| usb-role-switch; |
| |
| port { |
| usb0_role_switch: endpoint { |
| remote-endpoint = <&mt6392_typec_ep>; |
| }; |
| }; |
| }; |
| |
| &usb0_phy { |
| status = "okay"; |
| }; |
| |
| &mt6392typec { |
| usb_con: connector { |
| compatible = "usb-c-connector"; |
| label = "USB-C"; |
| vbus-supply = <&usb0_vbus>; |
| }; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@1 { |
| reg = <1>; |
| mt6392_typec_ep: endpoint { |
| remote-endpoint = <&usb0_role_switch>; |
| }; |
| }; |
| }; |
| }; |
| |
| &usb1 { |
| status = "okay"; |
| }; |