| // SPDX-License-Identifier: GPL-2.0-only |
| /* |
| * Copyright (c) 2022, Collabora Ltd |
| * Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> |
| */ |
| |
| /dts-v1/; |
| #include <dt-bindings/gpio/gpio.h> |
| #include "mt6795.dtsi" |
| #include "mt6331.dtsi" |
| |
| / { |
| model = "Sony Xperia M5"; |
| compatible = "sony,xperia-m5", "mediatek,mt6795"; |
| chassis-type = "handset"; |
| |
| aliases { |
| mmc0 = &mmc0; |
| mmc1 = &mmc1; |
| mmc2 = &mmc2; |
| serial0 = &uart0; |
| serial1 = &uart1; |
| }; |
| |
| backlight_lcd0: backlight { |
| compatible = "led-backlight"; |
| leds = <&disp_led_pwm>, <&pmic_bl_led>; |
| |
| default-brightness-level = <300>; |
| }; |
| |
| led-controller-display { |
| compatible = "pwm-leds"; |
| |
| disp_led_pwm: led-0 { |
| label = "backlight-pwm"; |
| pwms = <&pwm0 0 500000>; |
| max-brightness = <1024>; |
| }; |
| }; |
| |
| memory@40000000 { |
| device_type = "memory"; |
| reg = <0 0x40000000 0 0x1e800000>; |
| }; |
| |
| reserved_memory: reserved-memory { |
| #address-cells = <2>; |
| #size-cells = <2>; |
| ranges; |
| |
| /* 128 KiB reserved for ARM Trusted Firmware (BL31) */ |
| bl31_secmon_reserved: secmon@43000000 { |
| reg = <0 0x43000000 0 0x30000>; |
| no-map; |
| }; |
| |
| /* preloader and bootloader regions cannot be touched */ |
| preloader-region@44800000 { |
| reg = <0 0x44800000 0 0x100000>; |
| no-map; |
| }; |
| |
| bootloader-region@46000000 { |
| reg = <0 0x46000000 0 0x400000>; |
| no-map; |
| }; |
| }; |
| |
| vreg_disp_avdd: regulator-disp-avdd { |
| compatible = "regulator-fixed"; |
| regulator-name = "disp_avdd"; |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| gpio = <&pio 138 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| }; |
| |
| vreg_disp_avee: regulator-disp-avee { |
| compatible = "regulator-fixed"; |
| regulator-name = "disp_avee"; |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| gpio = <&pio 139 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| }; |
| |
| vreg_disp_vddh: regulator-disp-vddh { |
| compatible = "regulator-fixed"; |
| regulator-name = "disp_vddh"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| }; |
| |
| &dsi0 { |
| status = "okay"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| panel: panel@0 { |
| compatible = "sharp,ls060t1sx01"; |
| reg = <0>; |
| avdd-supply = <&vreg_disp_avdd>; |
| avee-supply = <&vreg_disp_avee>; |
| vddi-supply = <&mt6331_vgp3_reg>; |
| vddh-supply = <&vreg_disp_vddh>; |
| reset-gpios = <&pio 106 GPIO_ACTIVE_LOW>; |
| backlight = <&backlight_lcd0>; |
| |
| pinctrl-0 = <&disp_rst_pins>; |
| pinctrl-names = "default"; |
| |
| port { |
| panel_in: endpoint { |
| remote-endpoint = <&dsi0_out>; |
| }; |
| }; |
| }; |
| |
| port { |
| dsi0_out: endpoint { |
| remote-endpoint = <&panel_in>; |
| }; |
| }; |
| }; |
| |
| &fhctl { |
| clocks = <&apmixedsys CLK_APMIXED_MAINPLL>, <&apmixedsys CLK_APMIXED_MPLL>, |
| <&apmixedsys CLK_APMIXED_MSDCPLL>; |
| mediatek,hopping-ssc-percent = <8>, <5>, <8>; |
| status = "okay"; |
| }; |
| |
| &i2c0 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c0_pins>; |
| status = "okay"; |
| }; |
| |
| &i2c1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c1_pins>; |
| status = "okay"; |
| |
| accelerometer@10 { |
| compatible = "bosch,bma255"; |
| reg = <0x10>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&accel_pins>; |
| }; |
| |
| magnetometer@12 { |
| compatible = "bosch,bmm150"; |
| reg = <0x12>; |
| }; |
| }; |
| |
| &i2c2 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c2_pins>; |
| status = "okay"; |
| |
| touchscreen@20 { |
| compatible = "syna,rmi4-i2c"; |
| reg = <0x20>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| interrupts-extended = <&pio 6 IRQ_TYPE_EDGE_FALLING>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&ts_pins>; |
| syna,startup-delay-ms = <160>; |
| syna,reset-delay-ms = <90>; |
| |
| rmi4-f01@1 { |
| reg = <0x1>; |
| syna,nosleep-mode = <1>; |
| }; |
| |
| rmi4-f12@12 { |
| reg = <0x12>; |
| syna,sensor-type = <1>; |
| }; |
| }; |
| }; |
| |
| &i2c3 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c3_pins>; |
| status = "okay"; |
| |
| pn547: nfc@28 { |
| compatible = "nxp,pn544-i2c"; |
| reg = <0x28>; |
| interrupts-extended = <&pio 3 IRQ_TYPE_EDGE_RISING>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&nfc_pins>; |
| enable-gpios = <&pio 149 GPIO_ACTIVE_HIGH>; |
| firmware-gpios = <&pio 94 GPIO_ACTIVE_HIGH>; |
| }; |
| |
| proximity@48 { |
| compatible = "sensortek,stk3310"; |
| reg = <0x48>; |
| interrupts-extended = <&pio 8 IRQ_TYPE_EDGE_FALLING>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&proximity_pins>; |
| }; |
| }; |
| |
| &mmc0 { |
| /* eMMC controller */ |
| mediatek,latch-ck = <0x14>; /* hs400 */ |
| mediatek,hs200-cmd-int-delay = <1>; |
| mediatek,hs400-cmd-int-delay = <1>; |
| mediatek,hs400-ds-dly3 = <0x1a>; |
| non-removable; |
| pinctrl-names = "default", "state_uhs"; |
| pinctrl-0 = <&mmc0_pins_default>; |
| pinctrl-1 = <&mmc0_pins_uhs>; |
| vmmc-supply = <&mt6331_vemc33_reg>; |
| vqmmc-supply = <&mt6331_vio18_reg>; |
| status = "okay"; |
| }; |
| |
| &mmc1 { |
| /* MicroSD card slot */ |
| vmmc-supply = <&mt6331_vmc_reg>; |
| vqmmc-supply = <&mt6331_vmch_reg>; |
| status = "okay"; |
| }; |
| |
| &mmc2 { |
| /* SDIO WiFi on MMC2 */ |
| vmmc-supply = <&mt6331_vmc_reg>; |
| vqmmc-supply = <&mt6331_vmch_reg>; |
| status = "okay"; |
| }; |
| |
| &mt6331_vgp3_reg { |
| regulator-min-microvolt = <1800000>; |
| }; |
| |
| &pio { |
| disp_rst_pins: lcm-pins { |
| pins-rst { |
| pinmux = <PINMUX_GPIO106__FUNC_GPIO106>; |
| }; |
| }; |
| |
| mmc0_pins_default: emmc-sdr-pins { |
| pins-cmd-dat { |
| pinmux = <PINMUX_GPIO154__FUNC_MSDC0_DAT0>, |
| <PINMUX_GPIO155__FUNC_MSDC0_DAT1>, |
| <PINMUX_GPIO156__FUNC_MSDC0_DAT2>, |
| <PINMUX_GPIO157__FUNC_MSDC0_DAT3>, |
| <PINMUX_GPIO158__FUNC_MSDC0_DAT4>, |
| <PINMUX_GPIO159__FUNC_MSDC0_DAT5>, |
| <PINMUX_GPIO160__FUNC_MSDC0_DAT6>, |
| <PINMUX_GPIO161__FUNC_MSDC0_DAT7>, |
| <PINMUX_GPIO162__FUNC_MSDC0_CMD>; |
| input-enable; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_01>; |
| }; |
| |
| pins-clk { |
| pinmux = <PINMUX_GPIO163__FUNC_MSDC0_CLK>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| |
| pins-rst { |
| pinmux = <PINMUX_GPIO165__FUNC_MSDC0_RSTB>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| }; |
| |
| mmc0_pins_uhs: emmc-uhs-pins { |
| pins-cmd-dat { |
| pinmux = <PINMUX_GPIO154__FUNC_MSDC0_DAT0>, |
| <PINMUX_GPIO155__FUNC_MSDC0_DAT1>, |
| <PINMUX_GPIO156__FUNC_MSDC0_DAT2>, |
| <PINMUX_GPIO157__FUNC_MSDC0_DAT3>, |
| <PINMUX_GPIO158__FUNC_MSDC0_DAT4>, |
| <PINMUX_GPIO159__FUNC_MSDC0_DAT5>, |
| <PINMUX_GPIO160__FUNC_MSDC0_DAT6>, |
| <PINMUX_GPIO161__FUNC_MSDC0_DAT7>, |
| <PINMUX_GPIO162__FUNC_MSDC0_CMD>; |
| input-enable; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_01>; |
| }; |
| |
| pins-clk { |
| pinmux = <PINMUX_GPIO163__FUNC_MSDC0_CLK>; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| |
| pins-rst { |
| pinmux = <PINMUX_GPIO165__FUNC_MSDC0_RSTB>; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-up = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| |
| pins-ds { |
| pinmux = <PINMUX_GPIO164__FUNC_MSDC0_DSL>; |
| drive-strength = <MTK_DRIVE_6mA>; |
| bias-pull-down = <MTK_PUPD_SET_R1R0_10>; |
| }; |
| }; |
| |
| nfc_pins: nfc-pins { |
| pins-irq { |
| pinmux = <PINMUX_GPIO3__FUNC_GPIO3>; |
| bias-pull-down; |
| input-enable; |
| }; |
| |
| pins-fw-ven { |
| pinmux = <PINMUX_GPIO94__FUNC_GPIO94>, |
| <PINMUX_GPIO149__FUNC_GPIO149>; |
| }; |
| }; |
| |
| ts_pins: touchscreen-pins { |
| pins-irq { |
| pinmux = <PINMUX_GPIO6__FUNC_GPIO6>; |
| bias-pull-up; |
| input-enable; |
| }; |
| |
| pins-rst { |
| pinmux = <PINMUX_GPIO102__FUNC_GPIO102>; |
| output-high; |
| }; |
| }; |
| |
| proximity_pins: proximity-pins { |
| pins-irq { |
| pinmux = <PINMUX_GPIO8__FUNC_GPIO8>; |
| bias-pull-up; |
| input-enable; |
| }; |
| }; |
| |
| accel_pins: accelerometer-pins { |
| pins-irq { |
| pinmux = <PINMUX_GPIO12__FUNC_GPIO12>; |
| bias-pull-up; |
| input-enable; |
| }; |
| }; |
| |
| i2c0_pins: i2c0-pins { |
| pins-bus { |
| pinmux = <PINMUX_GPIO45__FUNC_SDA0>, |
| <PINMUX_GPIO46__FUNC_SCL0>; |
| input-enable; |
| }; |
| }; |
| |
| i2c1_pins: i2c1-pins { |
| pins-bus { |
| pinmux = <PINMUX_GPIO125__FUNC_SDA1>, |
| <PINMUX_GPIO126__FUNC_SCL1>; |
| bias-disable; |
| }; |
| }; |
| |
| i2c2_pins: i2c2-pins { |
| pins-bus { |
| pinmux = <PINMUX_GPIO43__FUNC_SDA2>, |
| <PINMUX_GPIO44__FUNC_SCL2>; |
| bias-disable; |
| }; |
| }; |
| |
| i2c3_pins: i2c3-pins { |
| pins-bus { |
| pinmux = <PINMUX_GPIO136__FUNC_SDA3>, |
| <PINMUX_GPIO137__FUNC_SCL3>; |
| bias-disable; |
| }; |
| }; |
| |
| i2c4_pins: i2c4-pins { |
| pins-bus { |
| pinmux = <PINMUX_GPIO100__FUNC_SDA4>, |
| <PINMUX_GPIO101__FUNC_SCL4>; |
| bias-disable; |
| }; |
| }; |
| |
| uart0_pins: uart0-pins { |
| pins-rx { |
| pinmux = <PINMUX_GPIO113__FUNC_URXD0>; |
| bias-pull-up; |
| input-enable; |
| }; |
| pins-tx { |
| pinmux = <PINMUX_GPIO114__FUNC_UTXD0>; |
| output-high; |
| }; |
| }; |
| |
| uart2_pins: uart2-pins { |
| pins-rx { |
| pinmux = <PINMUX_GPIO31__FUNC_URXD2>; |
| bias-pull-up; |
| input-enable; |
| }; |
| pins-tx { |
| pinmux = <PINMUX_GPIO32__FUNC_UTXD2>; |
| }; |
| }; |
| }; |
| |
| &pmic { |
| /* |
| * Smartphones, including the Xperia M5, are equipped with a companion |
| * MT6332 PMIC: when this is present, the main MT6331 PMIC will fire |
| * an interrupt on the companion, so we use the MT6332 IRQ GPIO. |
| */ |
| interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>; |
| |
| mt6332-led { |
| compatible = "mediatek,mt6332-led"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| pmic_bl_led: led@0 { |
| reg = <0>; |
| label = "backlight-pmic"; |
| }; |
| }; |
| }; |
| |
| &pwm0 { |
| status = "okay"; |
| }; |
| |
| &uart0 { |
| status = "okay"; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <&uart0_pins>; |
| }; |
| |
| &uart2 { |
| status = "okay"; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <&uart2_pins>; |
| }; |