116e8e807SStephan Gerhold// SPDX-License-Identifier: GPL-2.0-only
216e8e807SStephan Gerhold
316e8e807SStephan Gerhold/dts-v1/;
416e8e807SStephan Gerhold
516e8e807SStephan Gerhold#include "msm8916.dtsi"
616e8e807SStephan Gerhold#include "pm8916.dtsi"
716e8e807SStephan Gerhold#include <dt-bindings/gpio/gpio.h>
83ba8bbc4SNikita Travkin#include <dt-bindings/input/input.h>
916e8e807SStephan Gerhold
1016e8e807SStephan Gerhold/ {
1116e8e807SStephan Gerhold	model = "Longcheer L8150";
1216e8e807SStephan Gerhold	compatible = "longcheer,l8150", "qcom,msm8916-v1-qrd/9-v1", "qcom,msm8916";
1316e8e807SStephan Gerhold
1416e8e807SStephan Gerhold	aliases {
1516e8e807SStephan Gerhold		serial0 = &blsp1_uart2;
1616e8e807SStephan Gerhold	};
1716e8e807SStephan Gerhold
1816e8e807SStephan Gerhold	chosen {
1916e8e807SStephan Gerhold		stdout-path = "serial0";
2016e8e807SStephan Gerhold	};
2116e8e807SStephan Gerhold
22b0e1600dSNikita Travkin	reserved-memory {
23b0e1600dSNikita Travkin		// wcnss.mdt is not relocatable, so it must be loaded at 0x8b600000
24b0e1600dSNikita Travkin		/delete-node/ wcnss@89300000;
25b0e1600dSNikita Travkin
26b0e1600dSNikita Travkin		wcnss_mem: wcnss@8b600000 {
27b0e1600dSNikita Travkin			reg = <0x0 0x8b600000 0x0 0x600000>;
28b0e1600dSNikita Travkin			no-map;
29b0e1600dSNikita Travkin		};
30b0e1600dSNikita Travkin	};
31b0e1600dSNikita Travkin
3216e8e807SStephan Gerhold	soc {
3316e8e807SStephan Gerhold		sdhci@7824000 {
3416e8e807SStephan Gerhold			status = "okay";
3516e8e807SStephan Gerhold
3616e8e807SStephan Gerhold			vmmc-supply = <&pm8916_l8>;
3716e8e807SStephan Gerhold			vqmmc-supply = <&pm8916_l5>;
3816e8e807SStephan Gerhold
3916e8e807SStephan Gerhold			pinctrl-names = "default", "sleep";
4016e8e807SStephan Gerhold			pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
4116e8e807SStephan Gerhold			pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
4216e8e807SStephan Gerhold		};
4316e8e807SStephan Gerhold
4416e8e807SStephan Gerhold		sdhci@7864000 {
4516e8e807SStephan Gerhold			status = "okay";
4616e8e807SStephan Gerhold
4716e8e807SStephan Gerhold			vmmc-supply = <&pm8916_l11>;
4816e8e807SStephan Gerhold			vqmmc-supply = <&pm8916_l12>;
4916e8e807SStephan Gerhold
5016e8e807SStephan Gerhold			pinctrl-names = "default", "sleep";
5116e8e807SStephan Gerhold			pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
5216e8e807SStephan Gerhold			pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
5316e8e807SStephan Gerhold
5416e8e807SStephan Gerhold			non-removable;
5516e8e807SStephan Gerhold		};
5616e8e807SStephan Gerhold
5716e8e807SStephan Gerhold		serial@78b0000 {
5816e8e807SStephan Gerhold			status = "okay";
5916e8e807SStephan Gerhold			pinctrl-names = "default", "sleep";
6016e8e807SStephan Gerhold			pinctrl-0 = <&blsp1_uart2_default>;
6116e8e807SStephan Gerhold			pinctrl-1 = <&blsp1_uart2_sleep>;
6216e8e807SStephan Gerhold		};
6316e8e807SStephan Gerhold
6416e8e807SStephan Gerhold		usb@78d9000 {
6516e8e807SStephan Gerhold			status = "okay";
6616e8e807SStephan Gerhold			dr_mode = "peripheral";
6716e8e807SStephan Gerhold			extcon = <&usb_vbus>;
6816e8e807SStephan Gerhold
6916e8e807SStephan Gerhold			hnp-disable;
7016e8e807SStephan Gerhold			srp-disable;
7116e8e807SStephan Gerhold			adp-disable;
7216e8e807SStephan Gerhold
7316e8e807SStephan Gerhold			ulpi {
7416e8e807SStephan Gerhold				phy {
7516e8e807SStephan Gerhold					extcon = <&usb_vbus>;
7616e8e807SStephan Gerhold					v1p8-supply = <&pm8916_l7>;
7716e8e807SStephan Gerhold					v3p3-supply = <&pm8916_l13>;
7816e8e807SStephan Gerhold				};
7916e8e807SStephan Gerhold			};
8016e8e807SStephan Gerhold		};
8116e8e807SStephan Gerhold
82b0e1600dSNikita Travkin		wcnss@a21b000 {
83b0e1600dSNikita Travkin			status = "okay";
84b0e1600dSNikita Travkin		};
85b0e1600dSNikita Travkin
8616e8e807SStephan Gerhold		/*
8716e8e807SStephan Gerhold		 * Attempting to enable these devices causes a "synchronous
8816e8e807SStephan Gerhold		 * external abort". Suspected cause is that the debug power
8916e8e807SStephan Gerhold		 * domain is not enabled by default on this device.
9016e8e807SStephan Gerhold		 * Disable these devices for now to avoid the crash.
9116e8e807SStephan Gerhold		 *
9216e8e807SStephan Gerhold		 * See: https://lore.kernel.org/linux-arm-msm/20190618202623.GA53651@gerhold.net/
9316e8e807SStephan Gerhold		 */
9416e8e807SStephan Gerhold		tpiu@820000 { status = "disabled"; };
9516e8e807SStephan Gerhold		funnel@821000 { status = "disabled"; };
9616e8e807SStephan Gerhold		replicator@824000 { status = "disabled"; };
9716e8e807SStephan Gerhold		etf@825000 { status = "disabled"; };
9816e8e807SStephan Gerhold		etr@826000 { status = "disabled"; };
9916e8e807SStephan Gerhold		funnel@841000 { status = "disabled"; };
10016e8e807SStephan Gerhold		debug@850000 { status = "disabled"; };
10116e8e807SStephan Gerhold		debug@852000 { status = "disabled"; };
10216e8e807SStephan Gerhold		debug@854000 { status = "disabled"; };
10316e8e807SStephan Gerhold		debug@856000 { status = "disabled"; };
10416e8e807SStephan Gerhold		etm@85c000 { status = "disabled"; };
10516e8e807SStephan Gerhold		etm@85d000 { status = "disabled"; };
10616e8e807SStephan Gerhold		etm@85e000 { status = "disabled"; };
10716e8e807SStephan Gerhold		etm@85f000 { status = "disabled"; };
10816e8e807SStephan Gerhold	};
10916e8e807SStephan Gerhold
11016e8e807SStephan Gerhold	// FIXME: Use extcon device provided by charger driver when available
11116e8e807SStephan Gerhold	usb_vbus: usb-vbus {
11216e8e807SStephan Gerhold		compatible = "linux,extcon-usb-gpio";
11316e8e807SStephan Gerhold		vbus-gpio = <&msmgpio 62 GPIO_ACTIVE_HIGH>;
11416e8e807SStephan Gerhold		pinctrl-names = "default";
11516e8e807SStephan Gerhold		pinctrl-0 = <&usb_vbus_default>;
11616e8e807SStephan Gerhold	};
1173ba8bbc4SNikita Travkin
1183ba8bbc4SNikita Travkin	gpio-keys {
1193ba8bbc4SNikita Travkin		compatible = "gpio-keys";
1203ba8bbc4SNikita Travkin
1213ba8bbc4SNikita Travkin		pinctrl-names = "default";
1223ba8bbc4SNikita Travkin		pinctrl-0 = <&gpio_keys_default>;
1233ba8bbc4SNikita Travkin
1243ba8bbc4SNikita Travkin		label = "GPIO Buttons";
1253ba8bbc4SNikita Travkin
1263ba8bbc4SNikita Travkin		volume-up {
1273ba8bbc4SNikita Travkin			label = "Volume Up";
1283ba8bbc4SNikita Travkin			gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
1293ba8bbc4SNikita Travkin			linux,code = <KEY_VOLUMEUP>;
1303ba8bbc4SNikita Travkin		};
1313ba8bbc4SNikita Travkin	};
13216e8e807SStephan Gerhold};
13316e8e807SStephan Gerhold
13416e8e807SStephan Gerhold&msmgpio {
1353ba8bbc4SNikita Travkin	gpio_keys_default: gpio_keys_default {
1363ba8bbc4SNikita Travkin		pinmux {
1373ba8bbc4SNikita Travkin			function = "gpio";
1383ba8bbc4SNikita Travkin			pins = "gpio107";
1393ba8bbc4SNikita Travkin		};
1403ba8bbc4SNikita Travkin		pinconf {
1413ba8bbc4SNikita Travkin			pins = "gpio107";
1423ba8bbc4SNikita Travkin			drive-strength = <2>;
1433ba8bbc4SNikita Travkin			bias-pull-up;
1443ba8bbc4SNikita Travkin		};
1453ba8bbc4SNikita Travkin	};
1463ba8bbc4SNikita Travkin
14716e8e807SStephan Gerhold	usb_vbus_default: usb-vbus-default {
14816e8e807SStephan Gerhold		pinmux {
14916e8e807SStephan Gerhold			function = "gpio";
15016e8e807SStephan Gerhold			pins = "gpio62";
15116e8e807SStephan Gerhold		};
15216e8e807SStephan Gerhold		pinconf {
15316e8e807SStephan Gerhold			pins = "gpio62";
15416e8e807SStephan Gerhold			bias-pull-up;
15516e8e807SStephan Gerhold		};
15616e8e807SStephan Gerhold	};
15716e8e807SStephan Gerhold};
15816e8e807SStephan Gerhold
1593ba8bbc4SNikita Travkin&spmi_bus {
1603ba8bbc4SNikita Travkin	pm8916@0 {
1613ba8bbc4SNikita Travkin		pon@800 {
1623ba8bbc4SNikita Travkin			volume-down {
1633ba8bbc4SNikita Travkin				compatible = "qcom,pm8941-resin";
1643ba8bbc4SNikita Travkin				interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
1653ba8bbc4SNikita Travkin				bias-pull-up;
1663ba8bbc4SNikita Travkin				linux,code = <KEY_VOLUMEDOWN>;
1673ba8bbc4SNikita Travkin			};
1683ba8bbc4SNikita Travkin		};
1693ba8bbc4SNikita Travkin	};
1703ba8bbc4SNikita Travkin};
1713ba8bbc4SNikita Travkin
17216e8e807SStephan Gerhold&smd_rpm_regulators {
17316e8e807SStephan Gerhold	vdd_l1_l2_l3-supply = <&pm8916_s3>;
17416e8e807SStephan Gerhold	vdd_l4_l5_l6-supply = <&pm8916_s4>;
17516e8e807SStephan Gerhold	vdd_l7-supply = <&pm8916_s4>;
17616e8e807SStephan Gerhold
17716e8e807SStephan Gerhold	s1 {
17816e8e807SStephan Gerhold		regulator-min-microvolt = <500000>;
17916e8e807SStephan Gerhold		regulator-max-microvolt = <1300000>;
18016e8e807SStephan Gerhold	};
18116e8e807SStephan Gerhold
18216e8e807SStephan Gerhold	s3 {
18316e8e807SStephan Gerhold		regulator-min-microvolt = <1200000>;
18416e8e807SStephan Gerhold		regulator-max-microvolt = <1300000>;
18516e8e807SStephan Gerhold	};
18616e8e807SStephan Gerhold
18716e8e807SStephan Gerhold	s4 {
18816e8e807SStephan Gerhold		regulator-min-microvolt = <1800000>;
18916e8e807SStephan Gerhold		regulator-max-microvolt = <2100000>;
19016e8e807SStephan Gerhold	};
19116e8e807SStephan Gerhold
19216e8e807SStephan Gerhold	l1 {
19316e8e807SStephan Gerhold		regulator-min-microvolt = <1225000>;
19416e8e807SStephan Gerhold		regulator-max-microvolt = <1225000>;
19516e8e807SStephan Gerhold	};
19616e8e807SStephan Gerhold
19716e8e807SStephan Gerhold	l2 {
19816e8e807SStephan Gerhold		regulator-min-microvolt = <1200000>;
19916e8e807SStephan Gerhold		regulator-max-microvolt = <1200000>;
20016e8e807SStephan Gerhold	};
20116e8e807SStephan Gerhold
20216e8e807SStephan Gerhold	l3 {
20316e8e807SStephan Gerhold		regulator-min-microvolt = <500000>;
20416e8e807SStephan Gerhold		regulator-max-microvolt = <1287500>;
20516e8e807SStephan Gerhold	};
20616e8e807SStephan Gerhold
20716e8e807SStephan Gerhold	l4 {
20816e8e807SStephan Gerhold		regulator-min-microvolt = <2050000>;
20916e8e807SStephan Gerhold		regulator-max-microvolt = <2050000>;
21016e8e807SStephan Gerhold	};
21116e8e807SStephan Gerhold
21216e8e807SStephan Gerhold	l5 {
21316e8e807SStephan Gerhold		regulator-min-microvolt = <1800000>;
21416e8e807SStephan Gerhold		regulator-max-microvolt = <1800000>;
21516e8e807SStephan Gerhold	};
21616e8e807SStephan Gerhold
21716e8e807SStephan Gerhold	l6 {
21816e8e807SStephan Gerhold		regulator-min-microvolt = <1800000>;
21916e8e807SStephan Gerhold		regulator-max-microvolt = <1800000>;
22016e8e807SStephan Gerhold	};
22116e8e807SStephan Gerhold
22216e8e807SStephan Gerhold	l7 {
22316e8e807SStephan Gerhold		regulator-min-microvolt = <1800000>;
22416e8e807SStephan Gerhold		regulator-max-microvolt = <1800000>;
22516e8e807SStephan Gerhold	};
22616e8e807SStephan Gerhold
22716e8e807SStephan Gerhold	l8 {
22816e8e807SStephan Gerhold		regulator-min-microvolt = <2850000>;
22916e8e807SStephan Gerhold		regulator-max-microvolt = <2900000>;
23016e8e807SStephan Gerhold	};
23116e8e807SStephan Gerhold
23216e8e807SStephan Gerhold	l9 {
23316e8e807SStephan Gerhold		regulator-min-microvolt = <3300000>;
23416e8e807SStephan Gerhold		regulator-max-microvolt = <3300000>;
23516e8e807SStephan Gerhold	};
23616e8e807SStephan Gerhold
23716e8e807SStephan Gerhold	l10 {
23816e8e807SStephan Gerhold		regulator-min-microvolt = <2700000>;
23916e8e807SStephan Gerhold		regulator-max-microvolt = <2800000>;
24016e8e807SStephan Gerhold	};
24116e8e807SStephan Gerhold
24216e8e807SStephan Gerhold	l11 {
24316e8e807SStephan Gerhold		regulator-min-microvolt = <1800000>;
24416e8e807SStephan Gerhold		regulator-max-microvolt = <2950000>;
24516e8e807SStephan Gerhold		regulator-allow-set-load;
24616e8e807SStephan Gerhold		regulator-system-load = <200000>;
24716e8e807SStephan Gerhold	};
24816e8e807SStephan Gerhold
24916e8e807SStephan Gerhold	l12 {
25016e8e807SStephan Gerhold		regulator-min-microvolt = <1800000>;
25116e8e807SStephan Gerhold		regulator-max-microvolt = <2950000>;
25216e8e807SStephan Gerhold	};
25316e8e807SStephan Gerhold
25416e8e807SStephan Gerhold	l13 {
25516e8e807SStephan Gerhold		regulator-min-microvolt = <3075000>;
25616e8e807SStephan Gerhold		regulator-max-microvolt = <3075000>;
25716e8e807SStephan Gerhold	};
25816e8e807SStephan Gerhold
25916e8e807SStephan Gerhold	l14 {
26016e8e807SStephan Gerhold		regulator-min-microvolt = <1800000>;
26116e8e807SStephan Gerhold		regulator-max-microvolt = <3300000>;
26216e8e807SStephan Gerhold	};
26316e8e807SStephan Gerhold
26416e8e807SStephan Gerhold	l15 {
26516e8e807SStephan Gerhold		regulator-min-microvolt = <1800000>;
26616e8e807SStephan Gerhold		regulator-max-microvolt = <3300000>;
26716e8e807SStephan Gerhold	};
26816e8e807SStephan Gerhold
26916e8e807SStephan Gerhold	l16 {
27016e8e807SStephan Gerhold		regulator-min-microvolt = <1800000>;
27116e8e807SStephan Gerhold		regulator-max-microvolt = <3300000>;
27216e8e807SStephan Gerhold	};
27316e8e807SStephan Gerhold
27416e8e807SStephan Gerhold	l17 {
27516e8e807SStephan Gerhold		regulator-min-microvolt = <2850000>;
27616e8e807SStephan Gerhold		regulator-max-microvolt = <2850000>;
27716e8e807SStephan Gerhold	};
27816e8e807SStephan Gerhold
27916e8e807SStephan Gerhold	l18 {
28016e8e807SStephan Gerhold		regulator-min-microvolt = <2700000>;
28116e8e807SStephan Gerhold		regulator-max-microvolt = <2700000>;
28216e8e807SStephan Gerhold	};
28316e8e807SStephan Gerhold};
284