diff --git a/arch/arm/mach-qcom/Kconfig b/arch/arm/mach-qcom/Kconfig index 89a4ca771139..19c502031748 100644 --- a/arch/arm/mach-qcom/Kconfig +++ b/arch/arm/mach-qcom/Kconfig @@ -139,33 +139,16 @@ config ARCH_QM215 select COMMON_CLK_MSM config ARCH_MSM8940 - bool "MSM8940" - select MSM_CORTEX_A53 - select ARCH_MSM_CORTEXMP + bool "Enable support for MSM8940" select CPU_V7 - select HAVE_SMP - select ARM_GIC - select MSM_IRQ - select SPARSE_IRQ - select MULTI_IRQ_HANDLER select HAVE_ARM_ARCH_TIMER - select MAY_HAVE_SPARSE_IRQ select PINCTRL - select PINCTRL_MSM_TLMM - select USE_PINCTRL_IRQ - select MSM_PM if PM - select QMI_ENCDEC - select CPU_FREQ - select CPU_FREQ_MSM + select QCOM_SCM if SMP select PM_DEVFREQ - select MSM_DEVFREQ_DEVBW - select DEVFREQ_SIMPLE_DEV - select DEVFREQ_GOV_MSM_BW_HWMON - select MSM_BIMC_BWMON - select MSM_QDSP6V2_CODECS - select MSM_AUDIO_QDSP6V2 if SND_SOC - select ARM_HAS_SG_CHAIN - select MSM_JTAGV8 if CORESIGHT_ETMV4 + select CLKDEV_LOOKUP + select HAVE_CLK + select HAVE_CLK_PREPARE + select COMMON_CLK_MSM config ARCH_SDM439 bool "Enable support for SDM439" diff --git a/arch/arm/mach-qcom/board-msm8940.c b/arch/arm/mach-qcom/board-msm8940.c index 3e60902551aa..2c5f371abea5 100644 --- a/arch/arm/mach-qcom/board-msm8940.c +++ b/arch/arm/mach-qcom/board-msm8940.c @@ -26,7 +26,7 @@ static void __init msm8940_init(void) } DT_MACHINE_START(MSM8940_DT, - "Qualcomm Technologies, Inc. MSM8940-PMI8950 MTP") + "Qualcomm Technologies, Inc. MSM8940 MTP") .init_machine = msm8940_init, .dt_compat = msm8940_dt_match, MACHINE_END diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index a5f8efc21f10..fb236fcae2a6 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -336,6 +336,8 @@ dtb-$(CONFIG_ARCH_SDM670) += sdm670-rumi.dtb \ endif ifeq ($(CONFIG_BUILD_ARM64_DT_OVERLAY),y) +dtbo-$(CONFIG_ARCH_MSM8940) += msm8940-mtp-overlay.dtbo + dtbo-$(CONFIG_ARCH_MSM8917) += msm8917-mtp-overlay.dtbo \ msm8917-qrd-overlay.dtbo \ msm8917-cdp-overlay.dtbo \ @@ -386,6 +388,10 @@ dtbo-$(CONFIG_ARCH_SDM429) += sdm429-mtp-overlay.dtbo \ sdm429-cdp-overlay.dtbo \ sdm429-qrd-overlay.dtbo +msm8940-mtp-overlay.dtbo-base := msm8940-pmi8950.dtb \ + msm8940-pmi8937.dtb \ + msm8940-pmi8940.dtb + msm8917-mtp-overlay.dtbo-base := msm8917-pmi8950.dtb \ msm8917-pmi8937.dtb \ msm8917-pmi8940.dtb diff --git a/arch/arm64/boot/dts/qcom/msm8940-mtp-overlay.dts b/arch/arm64/boot/dts/qcom/msm8940-mtp-overlay.dts new file mode 100644 index 000000000000..21c11902a977 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8940-mtp-overlay.dts @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2018, The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/dts-v1/; +/plugin/; + +#include +#include +#include "msm8940-mtp.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. MSM8940-MTP"; + qcom,msm-id = <313 0x10000>; + qcom,board-id = <8 0>; +}; + +&vendor { + mtp_batterydata: qcom,battery-data { + qcom,batt-id-range-pct = <15>; + #include "batterydata-itech-3000mah.dtsi" + #include "batterydata-ascent-3450mAh.dtsi" + }; +}; + +&qpnp_fg { + qcom,battery-data = <&mtp_batterydata>; +}; + +&qpnp_smbcharger { + qcom,battery-data = <&mtp_batterydata>; +}; diff --git a/arch/arm64/boot/dts/qcom/msm8940-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8940-mtp.dtsi index 4414279a0433..60f3d798904d 100644 --- a/arch/arm64/boot/dts/qcom/msm8940-mtp.dtsi +++ b/arch/arm64/boot/dts/qcom/msm8940-mtp.dtsi @@ -11,8 +11,188 @@ * GNU General Public License for more details. */ -#include "msm8937-mtp.dtsi" -#include "msm8940-pinctrl.dtsi" +#include +#include "msm8937-camera-sensor-mtp.dtsi" + +&blsp1_uart2 { + status = "ok"; + pinctrl-names = "default"; + pinctrl-0 = <&uart_console_active>; +}; + +&sdhc_1 { + /* device core power supply */ + vdd-supply = <&pm8937_l8>; + qcom,vdd-voltage-level = <2900000 2900000>; + qcom,vdd-current-level = <200 570000>; + + /* device communication power supply */ + vdd-io-supply = <&pm8937_l5>; + qcom,vdd-io-always-on; + qcom,vdd-io-lpm-sup; + qcom,vdd-io-voltage-level = <1800000 1800000>; + qcom,vdd-io-current-level = <200 325000>; + + pinctrl-names = "active", "sleep"; + pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on &sdc1_rclk_on>; + pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off &sdc1_rclk_off>; + + qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 192000000 + 384000000>; + qcom,nonremovable; + qcom,bus-speed-mode = "HS400_1p8v", "HS200_1p8v", "DDR_1p8v"; + + status = "ok"; +}; + +&sdhc_2 { + /* device core power supply */ + vdd-supply = <&pm8937_l11>; + qcom,vdd-voltage-level = <2950000 2950000>; + qcom,vdd-current-level = <15000 800000>; + + /* device communication power supply */ + vdd-io-supply = <&pm8937_l12>; + qcom,vdd-io-voltage-level = <1800000 2950000>; + qcom,vdd-io-current-level = <200 22000>; + + pinctrl-names = "active", "sleep"; + pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>; + pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>; + + cd-gpios = <&tlmm 67 0x1>; + + qcom,clk-rates = <400000 20000000 25000000 50000000 100000000 + 200000000>; + qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104"; + + status = "ok"; +}; + +#include "msm8937-mdss-panels.dtsi" + +&mdss_mdp { + qcom,mdss-pref-prim-intf = "dsi"; +}; + +&mdss_dsi { + hw-config = "single_dsi"; +}; + +&mdss_dsi0 { + qcom,dsi-pref-prim-pan = <&dsi_truly_1080_vid>; + pinctrl-names = "mdss_default", "mdss_sleep"; + pinctrl-0 = <&mdss_dsi_active &mdss_te_active>; + pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>; + + qcom,platform-te-gpio = <&tlmm 24 0>; + qcom,platform-reset-gpio = <&tlmm 61 0>; + qcom,platform-bklight-en-gpio = <&tlmm 59 0>; +}; + +&mdss_dsi1 { + status = "disabled"; + qcom,dsi-pref-prim-pan = <&dsi_adv7533_1080p>; + pinctrl-names = "mdss_default", "mdss_sleep"; + pinctrl-0 = <&mdss_dsi_active &mdss_te_active>; + pinctrl-1 = <&mdss_dsi_suspend &mdss_te_suspend>; + + qcom,pluggable; + qcom,platform-te-gpio = <&tlmm 24 0>; + qcom,platform-reset-gpio = <&tlmm 61 0>; + qcom,platform-bklight-en-gpio = <&tlmm 59 0>; +}; + +&dsi_truly_1080_vid { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply>; + qcom,mdss-dsi-pan-enable-dynamic-fps; + qcom,mdss-dsi-min-refresh-rate = <48>; + qcom,mdss-dsi-max-refresh-rate = <60>; + qcom,mdss-dsi-pan-fps-update = "dfps_immediate_porch_mode_vfp"; +}; + +&dsi_truly_1080_cmd { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply>; + qcom,ulps-enabled; + qcom,partial-update-enabled; + qcom,panel-roi-alignment = <2 2 4 2 1080 2>; +}; &soc { + gpio_keys { + compatible = "gpio-keys"; + input-name = "gpio-keys"; + pinctrl-names = "default"; + pinctrl-0 = <&gpio_key_active>; + + camera_focus { + label = "camera_focus"; + gpios = <&tlmm 128 0x1>; + linux,input-type = <1>; + linux,code = <0x210>; + debounce-interval = <15>; + linux,can-disable; + gpio-key,wakeup; + }; + + camera_snapshot { + label = "camera_snapshot"; + gpios = <&tlmm 127 0x1>; + linux,input-type = <1>; + linux,code = <0x2fe>; + debounce-interval = <15>; + linux,can-disable; + gpio-key,wakeup; + }; + + vol_up { + label = "volume_up"; + gpios = <&tlmm 91 0x1>; + linux,input-type = <1>; + linux,code = <115>; + debounce-interval = <15>; + linux,can-disable; + gpio-key,wakeup; + }; + + }; +}; + +&pm8937_gpios { + nfc_clk { + nfc_clk_default: nfc_clk_default { + pins = "gpio5"; + function = "normal"; + input-enable; + power-source = <1>; + }; + }; +}; + +&i2c_5 { /* BLSP2 QUP1 (NFC) */ + status = "ok"; + nq@28 { + compatible = "qcom,nq-nci"; + reg = <0x28>; + qcom,nq-irq = <&tlmm 17 0x00>; + qcom,nq-ven = <&tlmm 16 0x00>; + qcom,nq-firm = <&tlmm 130 0x00>; + qcom,nq-clkreq = <&pm8937_gpios 5 0x00>; + interrupt-parent = <&tlmm>; + qcom,clk-src = "BBCLK2"; + interrupts = <17 0>; + interrupt-names = "nfc_irq"; + pinctrl-names = "nfc_active", "nfc_suspend"; + pinctrl-0 = <&nfc_int_active &nfc_disable_active + &nfc_clk_default>; + pinctrl-1 = <&nfc_int_suspend &nfc_disable_suspend>; + clocks = <&clock_gcc clk_bb_clk2_pin>; + clock-names = "ref_clk"; + }; +}; + +&thermal_zones { + quiet-therm-step { + status = "disabled"; + }; }; diff --git a/arch/arm64/boot/dts/qcom/msm8940-pmi8937-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8940-pmi8937-mtp.dtsi index a1e7bcbd556b..9be16647ae59 100644 --- a/arch/arm64/boot/dts/qcom/msm8940-pmi8937-mtp.dtsi +++ b/arch/arm64/boot/dts/qcom/msm8940-pmi8937-mtp.dtsi @@ -12,7 +12,6 @@ */ #include "pmi8937.dtsi" -#include "msm8937-mtp.dtsi" #include "msm8940-mtp.dtsi" &soc { diff --git a/arch/arm64/boot/dts/qcom/msm8940-pmi8937.dts b/arch/arm64/boot/dts/qcom/msm8940-pmi8937.dts new file mode 100644 index 000000000000..3f7b358f731f --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8940-pmi8937.dts @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2018, The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/dts-v1/; + +#include "msm8940.dtsi" +#include "msm8940-pmi8937.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. MSM8940 + PMI8937 SOC"; + compatible = "qcom,msm8940"; + qcom,pmic-id = <0x10019 0x020037 0x0 0x0>; + qcom,pmic-name = "PMI8937"; +}; diff --git a/arch/arm64/boot/dts/qcom/msm8940-pmi8937.dtsi b/arch/arm64/boot/dts/qcom/msm8940-pmi8937.dtsi new file mode 100644 index 000000000000..55e8e211060a --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8940-pmi8937.dtsi @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2018 The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "pmi8937.dtsi" + +&qpnp_smbcharger { + qcom,chg-led-sw-controls; + qcom,chg-led-support; + dpdm-supply = <&usb_otg>; +}; + +&usb_otg { + extcon = <&qpnp_smbcharger>; +}; + +&soc { + led_flash0: qcom,camera-flash { + cell-index = <0>; + compatible = "qcom,camera-flash"; + qcom,flash-type = <1>; + qcom,flash-source = <&pmi8937_flash0 &pmi8937_flash1>; + qcom,torch-source = <&pmi8937_torch0 &pmi8937_torch1>; + qcom,switch-source = <&pmi8937_switch>; + }; +}; diff --git a/arch/arm64/boot/dts/qcom/msm8940-pmi8940.dts b/arch/arm64/boot/dts/qcom/msm8940-pmi8940.dts new file mode 100644 index 000000000000..7d47af53d35e --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8940-pmi8940.dts @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2018, The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/dts-v1/; + +#include "msm8940.dtsi" +#include "msm8940-pmi8940.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. MSM8940 + PMI8940 SOC"; + compatible = "qcom,msm8940"; + qcom,pmic-id = <0x10019 0x020040 0x0 0x0>; + qcom,pmic-name = "PMI8940"; +}; diff --git a/arch/arm64/boot/dts/qcom/msm8940-pmi8950.dts b/arch/arm64/boot/dts/qcom/msm8940-pmi8950.dts new file mode 100644 index 000000000000..216b675203b5 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8940-pmi8950.dts @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2018, The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/dts-v1/; + +#include "msm8940.dtsi" +#include "msm8940-pmi8950.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. MSM8940 + PMI8950 SOC "; + compatible = "qcom,msm8940"; + qcom,pmic-id = <0x10019 0x020011 0x0 0x0>; + qcom,pmic-name = "PMI8950"; +}; diff --git a/arch/arm64/boot/dts/qcom/msm8940-pmi8950.dtsi b/arch/arm64/boot/dts/qcom/msm8940-pmi8950.dtsi new file mode 100644 index 000000000000..95e003b57b5f --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8940-pmi8950.dtsi @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2018 The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "pmi8950.dtsi" + +&qpnp_smbcharger { + qcom,chg-led-sw-controls; + qcom,chg-led-support; + dpdm-supply = <&usb_otg>; +}; + +&usb_otg { + extcon = <&qpnp_smbcharger>; +}; + +&labibb { + status = "ok"; + qpnp,qpnp-labibb-mode = "lcd"; +}; + +&mdss_dsi0 { + lab-supply = <&lab_regulator>; + ibb-supply = <&ibb_regulator>; +};