// 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>;
};
