arm64: dts: qcom: Add device tree for Longcheer L8150
authorStephan Gerhold <stephan@gerhold.net>
Mon, 22 Jul 2019 09:22:11 +0000 (11:22 +0200)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Mon, 5 Aug 2019 22:14:54 +0000 (15:14 -0700)
Longcheer L8150 is a smartphone based on MSM8916 which is
used in several rebrands like the Snapdragon 410
Android One devices or the Wileyfox Swift.

Add a device tree for L8150 with initial support for:
  - SDHCI (internal and external storage)
  - USB Device Mode
  - UART
  - Regulators

Co-developed-by: Nikita Travkin <nikitos.tr@gmail.com>
Signed-off-by: Nikita Travkin <nikitos.tr@gmail.com>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
arch/arm64/boot/dts/qcom/Makefile
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts [new file with mode: 0644]

index 9189996..90ae315 100644 (file)
@@ -3,6 +3,7 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += apq8096-db820c.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += ipq8074-hk01.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-mtp.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8916-longcheer-l8150.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-samsung-a3u-eur.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-samsung-a5u-eur.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8992-bullhead-rev-101.dtb
diff --git a/arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts b/arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts
new file mode 100644 (file)
index 0000000..2b28e38
--- /dev/null
@@ -0,0 +1,228 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+/dts-v1/;
+
+#include "msm8916.dtsi"
+#include "pm8916.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "Longcheer L8150";
+       compatible = "longcheer,l8150", "qcom,msm8916-v1-qrd/9-v1", "qcom,msm8916";
+
+       aliases {
+               serial0 = &blsp1_uart2;
+       };
+
+       chosen {
+               stdout-path = "serial0";
+       };
+
+       soc {
+               sdhci@7824000 {
+                       status = "okay";
+
+                       vmmc-supply = <&pm8916_l8>;
+                       vqmmc-supply = <&pm8916_l5>;
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
+                       pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
+               };
+
+               sdhci@7864000 {
+                       status = "okay";
+
+                       vmmc-supply = <&pm8916_l11>;
+                       vqmmc-supply = <&pm8916_l12>;
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
+                       pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
+
+                       non-removable;
+               };
+
+               serial@78b0000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&blsp1_uart2_default>;
+                       pinctrl-1 = <&blsp1_uart2_sleep>;
+               };
+
+               usb@78d9000 {
+                       status = "okay";
+                       dr_mode = "peripheral";
+                       extcon = <&usb_vbus>;
+
+                       hnp-disable;
+                       srp-disable;
+                       adp-disable;
+
+                       ulpi {
+                               phy {
+                                       extcon = <&usb_vbus>;
+                                       v1p8-supply = <&pm8916_l7>;
+                                       v3p3-supply = <&pm8916_l13>;
+                               };
+                       };
+               };
+
+               /*
+                * Attempting to enable these devices causes a "synchronous
+                * external abort". Suspected cause is that the debug power
+                * domain is not enabled by default on this device.
+                * Disable these devices for now to avoid the crash.
+                *
+                * See: https://lore.kernel.org/linux-arm-msm/20190618202623.GA53651@gerhold.net/
+                */
+               tpiu@820000 { status = "disabled"; };
+               funnel@821000 { status = "disabled"; };
+               replicator@824000 { status = "disabled"; };
+               etf@825000 { status = "disabled"; };
+               etr@826000 { status = "disabled"; };
+               funnel@841000 { status = "disabled"; };
+               debug@850000 { status = "disabled"; };
+               debug@852000 { status = "disabled"; };
+               debug@854000 { status = "disabled"; };
+               debug@856000 { status = "disabled"; };
+               etm@85c000 { status = "disabled"; };
+               etm@85d000 { status = "disabled"; };
+               etm@85e000 { status = "disabled"; };
+               etm@85f000 { status = "disabled"; };
+       };
+
+       // FIXME: Use extcon device provided by charger driver when available
+       usb_vbus: usb-vbus {
+               compatible = "linux,extcon-usb-gpio";
+               vbus-gpio = <&msmgpio 62 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_vbus_default>;
+       };
+};
+
+&msmgpio {
+       usb_vbus_default: usb-vbus-default {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio62";
+               };
+               pinconf {
+                       pins = "gpio62";
+                       bias-pull-up;
+               };
+       };
+};
+
+&smd_rpm_regulators {
+       vdd_l1_l2_l3-supply = <&pm8916_s3>;
+       vdd_l4_l5_l6-supply = <&pm8916_s4>;
+       vdd_l7-supply = <&pm8916_s4>;
+
+       s1 {
+               regulator-min-microvolt = <500000>;
+               regulator-max-microvolt = <1300000>;
+       };
+
+       s3 {
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1300000>;
+       };
+
+       s4 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2100000>;
+       };
+
+       l1 {
+               regulator-min-microvolt = <1225000>;
+               regulator-max-microvolt = <1225000>;
+       };
+
+       l2 {
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+       };
+
+       l3 {
+               regulator-min-microvolt = <500000>;
+               regulator-max-microvolt = <1287500>;
+       };
+
+       l4 {
+               regulator-min-microvolt = <2050000>;
+               regulator-max-microvolt = <2050000>;
+       };
+
+       l5 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l6 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l7 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l8 {
+               regulator-min-microvolt = <2850000>;
+               regulator-max-microvolt = <2900000>;
+       };
+
+       l9 {
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l10 {
+               regulator-min-microvolt = <2700000>;
+               regulator-max-microvolt = <2800000>;
+       };
+
+       l11 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2950000>;
+               regulator-allow-set-load;
+               regulator-system-load = <200000>;
+       };
+
+       l12 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2950000>;
+       };
+
+       l13 {
+               regulator-min-microvolt = <3075000>;
+               regulator-max-microvolt = <3075000>;
+       };
+
+       l14 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l15 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l16 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l17 {
+               regulator-min-microvolt = <2850000>;
+               regulator-max-microvolt = <2850000>;
+       };
+
+       l18 {
+               regulator-min-microvolt = <2700000>;
+               regulator-max-microvolt = <2700000>;
+       };
+};