From f01e70b285e894e32993e9b50dc174e7f0407b32 Mon Sep 17 00:00:00 2001 From: Vishwanath Raju K Date: Tue, 11 Aug 2020 23:54:55 +0530 Subject: [PATCH] ARM: dts: msm: Add initial device tree for prairie-iot Add initial device tree to support prairie-iot on reference IIOT platforms. Change-Id: Ic64b1d4291dbfb65b69bc474c7e82876116ab315 Signed-off-by: Vishwanath Raju K --- .../devicetree/bindings/arm/msm/msm.txt | 1 + arch/arm64/boot/dts/qcom/Makefile | 19 +- ...airie-iot-cmd-mode-display-idp-overlay.dts | 62 +++ .../qcom/prairie-iot-cmd-mode-display-idp.dts | 23 + ...prairie-iot-external-codec-idp-overlay.dts | 32 ++ .../qcom/prairie-iot-external-codec-idp.dts | 24 ++ .../qcom/prairie-iot-external-codec-idp.dtsi | 153 +++++++ .../boot/dts/qcom/prairie-iot-idp-overlay.dts | 31 ++ arch/arm64/boot/dts/qcom/prairie-iot-idp.dts | 23 + arch/arm64/boot/dts/qcom/prairie-iot-idp.dtsi | 403 ++++++++++++++++++ .../dts/qcom/prairie-iot-usbc-idp-overlay.dts | 31 ++ .../boot/dts/qcom/prairie-iot-usbc-idp.dts | 23 + .../boot/dts/qcom/prairie-iot-usbc-idp.dtsi | 19 + .../prairie-iot-usbc-minidp-idp-overlay.dts | 32 ++ .../dts/qcom/prairie-iot-usbc-minidp-idp.dts | 29 ++ 15 files changed, 903 insertions(+), 2 deletions(-) create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-cmd-mode-display-idp-overlay.dts create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-cmd-mode-display-idp.dts create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp-overlay.dts create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp.dts create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp.dtsi create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-idp-overlay.dts create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-idp.dts create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-idp.dtsi create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp-overlay.dts create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp.dts create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp.dtsi create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-usbc-minidp-idp-overlay.dts create mode 100644 arch/arm64/boot/dts/qcom/prairie-iot-usbc-minidp-idp.dts diff --git a/Documentation/devicetree/bindings/arm/msm/msm.txt b/Documentation/devicetree/bindings/arm/msm/msm.txt index 288832098310..6ab9d8a49f5b 100644 --- a/Documentation/devicetree/bindings/arm/msm/msm.txt +++ b/Documentation/devicetree/bindings/arm/msm/msm.txt @@ -314,3 +314,4 @@ compatible = "qcom,trinket-iot" compatible = "qcom,trinketp-iot" compatible = "qcom,trinket-iot-idp" compatible = "qcom,trinketp-iot-idp" +compatible = "qcom,qcs610-idp" diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 8c75307eaa28..acaead85cf18 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -248,7 +248,12 @@ ifeq ($(CONFIG_BUILD_ARM64_DT_OVERLAY),y) sa6155p-v2-adp-air-overlay.dtbo \ qcs610-iot-overlay.dtbo \ qcs610-ipc-overlay.dtbo \ - qcs410-iot-overlay.dtbo + qcs410-iot-overlay.dtbo \ + prairie-iot-idp-overlay.dtbo \ + prairie-iot-external-codec-idp-overlay.dtbo \ + prairie-iot-usbc-idp-overlay.dtbo \ + prairie-iot-cmd-mone-display-idp-overlay.dtbo \ + prairie-iot-usbc-minidp-idp-overlay.dtbo sm6150-rumi-overlay.dtbo-base := sm6150.dtb sm6150-qrd-overlay.dtbo-base := sm6150.dtb @@ -268,6 +273,11 @@ sa6155p-v2-adp-air-overlay.dtbo-base := sa6155p.dtb qcs610-iot-overlay.dtbo-base := qcs610.dtb qcs610-ipc-overlay.dtbo-base := qcs610.dtb qcs410-iot-overlay.dtbo-base := qcs410.dtb +prairie-iot-idp-overlay.dtbo-base := qcs610.dtb +prairie-iot-external-codec-idp-overlay.dtbo-base := qcs610.dtb +prairie-iot-usbc-idp-overlay.dtbo-base := qcs610.dtb +prairie-iot-cmd-mode-display-idp-overlay.dtbo-base := qcs610.dtb +prairie-iot-usbc-minidp-idp-overlay.dtbo-base := qcs610.dtb else dtb-$(CONFIG_ARCH_SM6150) += sm6150-rumi.dtb \ sm6150-qrd.dtb \ @@ -286,7 +296,12 @@ dtb-$(CONFIG_ARCH_SM6150) += sm6150-rumi.dtb \ sa6155p-v2-adp-air.dtb \ qcs610-iot.dtb \ qcs610-ipc.dtb \ - qcs410-iot.dtb + qcs410-iot.dtb \ + prairie-iot-idp.dtb \ + prairie-iot-external-codec-idp.dtb \ + prairie-iot-usbc-idp.dtb \ + prairie-iot-cmd-mode-display-idp.dtb \ + prairie-iot-usbc-minidp-idp.dtb endif diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-cmd-mode-display-idp-overlay.dts b/arch/arm64/boot/dts/qcom/prairie-iot-cmd-mode-display-idp-overlay.dts new file mode 100644 index 000000000000..451b46b4bc9c --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-cmd-mode-display-idp-overlay.dts @@ -0,0 +1,62 @@ +/* Copyright (c) 2020, 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 "prairie-iot-idp.dtsi" +#include "sm6150-audio-overlay.dtsi" + +/ { + model = "Command mode display IDP overlay"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,msm-id = <401 0x0>; + qcom,board-id = <34 3>; +}; + +&qupv3_se1_i2c { + synaptics_dsx@20 { + compatible = "synaptics,dsx-i2c"; + reg = <0x20>; + interrupt-parent = <&tlmm>; + interrupts = <89 0x2008>; + vdd-supply = <&pm6150_l10>; + avdd-supply = <&pm6150l_l7>; + pinctrl-names = "pmx_ts_active","pmx_ts_suspend", + "pmx_ts_release"; + pinctrl-0 = <&ts_int_active &ts_reset_active>; + pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>; + pinctrl-2 = <&ts_release>; + synaptics,pwr-reg-name = "avdd"; + synaptics,bus-reg-name = "vdd"; + synaptics,ub-i2c-addr = <0x20>; + synaptics,max-y-for-2d = <2159>; + synaptics,irq-gpio = <&tlmm 89 0x2008>; + synaptics,reset-gpio = <&tlmm 88 0x0>; + synaptics,irq-on-state = <0>; + synaptics,power-delay-ms = <200>; + synaptics,reset-delay-ms = <200>; + synaptics,reset-on-state = <0>; + synaptics,reset-active-ms = <20>; + }; + + himax_ts@48 { + status = "disabled"; + }; +}; + +&dsi_td4328_truly_cmd_display { + qcom,dsi-display-active; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-cmd-mode-display-idp.dts b/arch/arm64/boot/dts/qcom/prairie-iot-cmd-mode-display-idp.dts new file mode 100644 index 000000000000..24f4ca89323c --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-cmd-mode-display-idp.dts @@ -0,0 +1,23 @@ +/* Copyright (c) 2020, 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 "qcs610.dtsi" +#include "prairie-iot-idp.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. QCS610 Command mode display IDP"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,msm-id = <401 0x0>; + qcom,board-id = <34 3>; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp-overlay.dts b/arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp-overlay.dts new file mode 100644 index 000000000000..81ef59c3fe4d --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp-overlay.dts @@ -0,0 +1,32 @@ +/* Copyright (c) 2020, 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 "prairie-iot-idp.dtsi" +#include "sm6150-ext-codec-audio-overlay.dtsi" +#include "sm6150-external-codec.dtsi" + +/ { + model = "External Audio Codec IDP overlay"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,msm-id = <401 0x0>; + qcom,board-id = <34 1>; +}; + +&dsi_hx83112a_truly_vid_display { + qcom,dsi-display-active; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp.dts b/arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp.dts new file mode 100644 index 000000000000..b958ecea7061 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp.dts @@ -0,0 +1,24 @@ +/* Copyright (c) 2020, 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 "qcs610.dtsi" +#include "prairie-iot-idp.dtsi" +#include "prairie-iot-external-codec-idp.dtsi" +#include "sm6150-ext-codec-audio-overlay.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. QCS610 External Audio Codec IDP"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,board-id = <34 1>; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp.dtsi b/arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp.dtsi new file mode 100644 index 000000000000..1a7cc75f7cf0 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-external-codec-idp.dtsi @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2020, 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 +#include "sm6150-wcd.dtsi" + +&sm6150_snd { + qcom,model = "sm6150-tavil-snd-card"; + qcom,tavil_codec = <1>; + qcom,ext-disp-audio-rx = <1>; + qcom,audio-routing = + "AIF4 VI", "MCLK", + "RX_BIAS", "MCLK", + "MADINPUT", "MCLK", + "hifi amp", "LINEOUT1", + "hifi amp", "LINEOUT2", + "AMIC2", "MIC BIAS2", + "MIC BIAS2", "Headset Mic", + "AMIC3", "MIC BIAS2", + "MIC BIAS2", "ANCRight Headset Mic", + "AMIC4", "MIC BIAS2", + "MIC BIAS2", "ANCLeft Headset Mic", + "AMIC5", "MIC BIAS3", + "MIC BIAS3", "Handset Mic", + "DMIC0", "MIC BIAS1", + "MIC BIAS1", "Digital Mic0", + "DMIC1", "MIC BIAS1", + "MIC BIAS1", "Digital Mic1", + "DMIC2", "MIC BIAS3", + "MIC BIAS3", "Digital Mic2", + "DMIC3", "MIC BIAS3", + "MIC BIAS3", "Digital Mic3", + "DMIC4", "MIC BIAS4", + "MIC BIAS4", "Digital Mic4", + "DMIC5", "MIC BIAS4", + "MIC BIAS4", "Digital Mic5", + "SpkrLeft IN", "SPK1 OUT", + "SpkrRight IN", "SPK2 OUT"; + asoc-cpu = <&dai_dp>, <&dai_mi2s0>, <&dai_mi2s1>, + <&dai_mi2s2>, <&dai_mi2s3>, <&dai_mi2s4>, + <&dai_pri_auxpcm>, <&dai_sec_auxpcm>, + <&dai_tert_auxpcm>, <&dai_quat_auxpcm>, + <&dai_quin_auxpcm>, + <&sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>, + <&sb_2_rx>, <&sb_2_tx>, <&sb_3_rx>, <&sb_3_tx>, + <&sb_4_rx>, <&sb_4_tx>, <&sb_5_rx>, <&sb_5_tx>, + <&sb_6_rx>, <&sb_7_rx>, <&sb_7_tx>, + <&sb_8_rx>, <&sb_8_tx>, + <&proxy_rx>, <&proxy_tx>, + <&afe_pcm_rx>, <&afe_pcm_tx>, <&afe_proxy_rx>, + <&afe_proxy_tx>, <&incall_record_rx>, + <&incall_record_tx>, <&incall_music_rx>, + <&incall_music_2_rx>, + <&usb_audio_rx>, <&usb_audio_tx>, + <&dai_pri_tdm_rx_0>, <&dai_pri_tdm_tx_0>, + <&dai_sec_tdm_rx_0>, <&dai_sec_tdm_tx_0>, + <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_tx_0>, + <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_tx_0>, + <&dai_quin_tdm_rx_0>, <&dai_quin_tdm_tx_0>; + asoc-cpu-names = "msm-dai-q6-dp.24608", + "msm-dai-q6-mi2s.0", "msm-dai-q6-mi2s.1", + "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", + "msm-dai-q6-mi2s.4", + "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", + "msm-dai-q6-auxpcm.3", "msm-dai-q6-auxpcm.4", + "msm-dai-q6-auxpcm.5", + "msm-dai-q6-dev.16384", "msm-dai-q6-dev.16385", + "msm-dai-q6-dev.16386", "msm-dai-q6-dev.16387", + "msm-dai-q6-dev.16388", "msm-dai-q6-dev.16389", + "msm-dai-q6-dev.16390", "msm-dai-q6-dev.16391", + "msm-dai-q6-dev.16392", "msm-dai-q6-dev.16393", + "msm-dai-q6-dev.16394", "msm-dai-q6-dev.16395", + "msm-dai-q6-dev.16396", + "msm-dai-q6-dev.16398", "msm-dai-q6-dev.16399", + "msm-dai-q6-dev.16400", "msm-dai-q6-dev.16401", + "msm-dai-q6-dev.8194", "msm-dai-q6-dev.8195", + "msm-dai-q6-dev.224", "msm-dai-q6-dev.225", + "msm-dai-q6-dev.241", "msm-dai-q6-dev.240", + "msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772", + "msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770", + "msm-dai-q6-dev.28672", "msm-dai-q6-dev.28673", + "msm-dai-q6-tdm.36864", "msm-dai-q6-tdm.36865", + "msm-dai-q6-tdm.36880", "msm-dai-q6-tdm.36881", + "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36897", + "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36913", + "msm-dai-q6-tdm.36928", "msm-dai-q6-tdm.36929"; + asoc-codec = <&stub_codec>, <&ext_disp_audio_codec>; + asoc-codec-names = "msm-stub-codec.1", "msm-ext-disp-audio-codec-rx"; + qcom,hph-en0-gpio = <&tavil_hph_en0>; + qcom,hph-en1-gpio = <&tavil_hph_en1>; + qcom,wsa-max-devs = <2>; + qcom,wsa-devs = <&wsa881x_11>, <&wsa881x_12>, + <&wsa881x_13>, <&wsa881x_14>; + qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight", + "SpkrLeft", "SpkrRight"; + qcom,msm_audio_ssr_devs = <&audio_apr>, <&wcd934x_cdc>, + <&q6core>, <&lpi_tlmm>; +}; + +&slim_aud { + status = "okay"; + tavil_codec { + swr3: swr_master { + compatible = "qcom,swr-mstr"; + #address-cells = <2>; + #size-cells = <0>; + qcom,swr-num-ports = <8>; + qcom,swr-port-mapping = <1 SPKR_L 0x1>, + <2 SPKR_L_COMP 0xF>, <3 SPKR_L_BOOST 0x3>, + <4 SPKR_R 0x1>, <5 SPKR_R_COMP 0xF>, + <6 SPKR_R_BOOST 0x3>, <7 SPKR_L_VI 0x3>, + <8 SPKR_R_VI 0x3>; + qcom,swr_master_id = <1>; + wsa881x_11: wsa881x@11 { + compatible = "qcom,wsa881x"; + reg = <0x00 0x20170211>; + qcom,spkr-sd-n-node = <&wsa_spk_wcd_sd1>; + }; + + wsa881x_12: wsa881x@12 { + compatible = "qcom,wsa881x"; + reg = <0x00 0x20170212>; + qcom,spkr-sd-n-node = <&wsa_spk_wcd_sd2>; + }; + + wsa881x_13: wsa881x@13 { + compatible = "qcom,wsa881x"; + reg = <0x00 0x21170213>; + qcom,spkr-sd-n-node = <&wsa_spk_wcd_sd1>; + }; + + wsa881x_14: wsa881x@14 { + compatible = "qcom,wsa881x"; + reg = <0x00 0x21170214>; + qcom,spkr-sd-n-node = <&wsa_spk_wcd_sd2>; + }; + }; + }; +}; + +&dai_slim { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-idp-overlay.dts b/arch/arm64/boot/dts/qcom/prairie-iot-idp-overlay.dts new file mode 100644 index 000000000000..1a20dc4cc483 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-idp-overlay.dts @@ -0,0 +1,31 @@ +/* Copyright (c) 2020, 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 "prairie-iot-idp.dtsi" +#include "sm6150-audio-overlay.dtsi" + +/ { + model = "Internal Audio Codec IDP overlay"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,msm-id = <401 0x0>; + qcom,board-id = <34 0>; +}; + +&dsi_hx83112a_truly_vid_display { + qcom,dsi-display-active; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-idp.dts b/arch/arm64/boot/dts/qcom/prairie-iot-idp.dts new file mode 100644 index 000000000000..c17d7af7a4dc --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-idp.dts @@ -0,0 +1,23 @@ +/* Copyright (c) 2020, 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 "qcs610.dtsi" +#include "prairie-iot-idp.dtsi" +#include "sm6150-audio-overlay.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. QCS610 PM6150 IDP"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,board-id = <34 0>; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-idp.dtsi b/arch/arm64/boot/dts/qcom/prairie-iot-idp.dtsi new file mode 100644 index 000000000000..ee41933b2822 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-idp.dtsi @@ -0,0 +1,403 @@ +/* Copyright (c) 2020, 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 "sm6150-thermal-overlay.dtsi" +#include "sm6150-camera-sensor-idp.dtsi" +#include +#include +#include +#include "sm6150-sde-display.dtsi" +#include + +&qupv3_se3_i2c { + #address-cells = <1>; + #size-cells = <0>; + + status = "ok"; + #include "smb1390.dtsi" + #include "smb1355.dtsi" +}; + +&pm6150l_gpios { + key_vol_up { + key_vol_up_default: key_vol_up_default { + pins = "gpio2"; + function = "normal"; + input-enable; + bias-pull-up; + power-source = <0>; + }; + }; +}; + +&soc { + gpio_keys { + compatible = "gpio-keys"; + label = "gpio-keys"; + + pinctrl-names = "default"; + pinctrl-0 = <&key_vol_up_default>; + + vol_up { + label = "volume_up"; + gpios = <&pm6150l_gpios 2 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + linux,code = ; + linux,can-disable; + debounce-interval = <15>; + gpio-key,wakeup; + }; + }; + + mtp_batterydata: qcom,battery-data { + qcom,batt-id-range-pct = <15>; + #include "qg-batterydata-alium-3600mah.dtsi" + #include "qg-batterydata-mlp356477-2800mah.dtsi" + }; + emac_hw: qcom,emac@20000 { + compatible = "qcom,emac-dwc-eqos"; + qcom,arm-smmu; + reg = <0x20000 0x10000>, + <0x36000 0x100>; + reg-names = "emac-base", "rgmii-base"; + dma-bit-mask = <32>; + emac-core-version = <7>; + interrupts-extended = <&pdc 0 660 4>, <&pdc 0 661 4>, + <&tlmm 121 2>, <&pdc 0 651 4>, + <&pdc 0 652 4>, <&pdc 0 653 4>, + <&pdc 0 654 4>, <&pdc 0 655 4>, + <&pdc 0 656 4>, <&pdc 0 657 4>, + <&pdc 0 658 4>, <&pdc 0 659 4>, + <&pdc 0 668 4>, <&pdc 0 669 4>; + interrupt-names = "sbd-intr", "lpi-intr", + "phy-intr", "tx-ch0-intr", + "tx-ch1-intr", "tx-ch2-intr", + "tx-ch3-intr", "tx-ch4-intr", + "rx-ch0-intr", "rx-ch1-intr", + "rx-ch2-intr", "rx-ch3-intr", + "ptp_pps_irq_0","ptp_pps_irq_1"; + qcom,msm-bus,name = "emac"; + qcom,msm-bus,num-cases = <4>; + qcom,msm-bus,num-paths = <2>; + qcom,msm-bus,vectors-KBps = + <98 512 0 0>, <1 781 0 0>, /* No vote */ + <98 512 1250 0>, <1 781 0 40000>, /* 10Mbps vote */ + <98 512 12500 0>, <1 781 0 40000>, /* 100Mbps vote */ + <98 512 125000 0>, <1 781 0 40000>; /* 1000Mbps vote */ + qcom,bus-vector-names = "0", "10", "100", "1000"; + clocks = <&clock_gcc GCC_EMAC_AXI_CLK>, + <&clock_gcc GCC_EMAC_PTP_CLK>, + <&clock_gcc GCC_EMAC_RGMII_CLK>, + <&clock_gcc GCC_EMAC_SLV_AHB_CLK>; + clock-names = "eth_axi_clk", "eth_ptp_clk", + "eth_rgmii_clk", "eth_slave_ahb_clk"; + qcom,phy-reset = <&tlmm 104 GPIO_ACTIVE_HIGH>; + qcom,phy-intr-redirect = <&tlmm 121 GPIO_ACTIVE_LOW>; + gdsc_emac-supply = <&emac_gdsc>; + pinctrl-names = "dev-emac-mdc", "dev-emac-mdio", + "dev-emac-rgmii_txd0_state", "dev-emac-rgmii_txd1_state", + "dev-emac-rgmii_txd2_state", "dev-emac-rgmii_txd3_state", + "dev-emac-rgmii_txc_state", "dev-emac-rgmii_tx_ctl_state", + "dev-emac-rgmii_rxd0_state", "dev-emac-rgmii_rxd1_state", + "dev-emac-rgmii_rxd2_state", "dev-emac-rgmii_rxd3_state", + "dev-emac-rgmii_rxc_state", "dev-emac-rgmii_rx_ctl_state", + "dev-emac-phy_intr", "dev-emac-phy_reset_state", + "dev-emac_pin_pps_0"; + + pinctrl-0 = <&emac_mdc>; + pinctrl-1 = <&emac_mdio>; + pinctrl-2 = <&emac_rgmii_txd0>; + pinctrl-3 = <&emac_rgmii_txd1>; + pinctrl-4 = <&emac_rgmii_txd2>; + pinctrl-5 = <&emac_rgmii_txd3>; + pinctrl-6 = <&emac_rgmii_txc>; + pinctrl-7 = <&emac_rgmii_tx_ctl>; + pinctrl-8 = <&emac_rgmii_rxd0>; + pinctrl-9 = <&emac_rgmii_rxd1>; + pinctrl-10 = <&emac_rgmii_rxd2>; + pinctrl-11 = <&emac_rgmii_rxd3>; + pinctrl-12 = <&emac_rgmii_rxc>; + pinctrl-13 = <&emac_rgmii_rx_ctl>; + pinctrl-14 = <&emac_phy_intr>; + pinctrl-15 = <&emac_phy_reset_state>; + pinctrl-16 = <&emac_pin_pps_0>; + + io-macro-info { + io-macro-bypass-mode = <0>; + io-interface = "rgmii"; + }; + emac_emb_smmu: emac_emb_smmu { + compatible = "qcom,emac-smmu-embedded"; + iommus = <&apps_smmu 0x1C0 0x0>; + qcom,iova-mapping = <0x80000000 0x40000000>; + }; + }; +}; + +&qupv3_se0_2uart { + status = "ok"; +}; + +&qupv3_se7_4uart { + status = "ok"; +}; + +&pm6150l_wled { + qcom,string-cfg= <3>; + qcom,leds-per-string = <7>; + status = "ok"; +}; + +&pm6150l_lcdb { + status = "ok"; +}; + +&ufsphy_mem { + compatible = "qcom,ufs-phy-qmp-v3-660"; + + vdda-phy-supply = <&pm6150_l4>; /* 0.9v */ + vdda-phy-always-on; + vdda-pll-supply = <&pm6150_l11>; + vdda-phy-max-microamp = <30000>; + vdda-pll-max-microamp = <12000>; + + status = "ok"; +}; + +&ufshc_mem { + vdd-hba-supply = <&ufs_phy_gdsc>; + vdd-hba-fixed-regulator; + vcc-supply = <&pm6150l_l11>; + vcc-voltage-level = <2950000 2960000>; + vccq2-supply = <&pm6150_l12>; + vcc-max-microamp = <600000>; + vccq2-max-microamp = <600000>; + + qcom,vddp-ref-clk-supply = <&pm6150l_l3>; + qcom,vddp-ref-clk-max-microamp = <100>; + qcom,vddp-ref-clk-min-uV = <1232000>; + qcom,vddp-ref-clk-max-uV = <1260000>; + + status = "ok"; +}; + +&qupv3_se1_i2c { + status = "okay"; + himax_ts@48 { + compatible = "himax,hxcommon"; + reg = <0x48>; + interrupt-parent = <&tlmm>; + interrupts = <89 0x2008>; + vdd-supply = <&pm6150_l10>; + avdd-supply = <&pm6150l_l7>; + pinctrl-names = "pmx_ts_active","pmx_ts_suspend", + "pmx_ts_release"; + pinctrl-0 = <&ts_int_active &ts_reset_active>; + pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>; + pinctrl-2 = <&ts_release>; + himax,panel-coords = <0 1080 0 2160>; + himax,display-coords = <0 1080 0 2160>; + himax,irq-gpio = <&tlmm 89 0x00>; + himax,rst-gpio = <&tlmm 88 0x00>; + report_type = <1>; + }; +}; + +&qupv3_se5_i2c { + status = "ok"; + qcom,clk-freq-out = <1000000>; + + #address-cells = <1>; + #size-cells = <0>; + + nq@28 { + compatible = "qcom,nq-nci"; + reg = <0x28>; + qcom,nq-irq = <&tlmm 86 0x00>; + qcom,nq-ven = <&tlmm 84 0x00>; + qcom,nq-firm = <&tlmm 85 0x00>; + qcom,nq-clkreq = <&tlmm 50 0x00>; + interrupt-parent = <&tlmm>; + interrupts = <86 0>; + interrupt-names = "nfc_irq"; + pinctrl-names = "nfc_active", "nfc_suspend"; + pinctrl-0 = <&nfc_int_active &nfc_enable_active + &nfc_clk_req_active>; + pinctrl-1 = <&nfc_int_suspend &nfc_enable_suspend + &nfc_clk_req_suspend>; + }; +}; + +&sdhc_1 { + vdd-supply = <&pm6150l_l11>; + qcom,vdd-voltage-level = <2950000 2950000>; + qcom,vdd-current-level = <0 570000>; + + vdd-io-supply = <&pm6150_l12>; + qcom,vdd-io-always-on; + qcom,vdd-io-lpm-sup; + qcom,vdd-io-voltage-level = <1800000 1800000>; + qcom,vdd-io-current-level = <0 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>; + + status = "ok"; +}; + +&sdhc_2 { + vdd-supply = <&pm6150l_l9>; + qcom,vdd-voltage-level = <2950000 2950000>; + qcom,vdd-current-level = <0 800000>; + + vdd-io-supply = <&pm6150l_l6>; + qcom,vdd-io-voltage-level = <1800000 3100000>; + qcom,vdd-io-current-level = <0 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 &sdc2_cd_off>; + + cd-gpios = <&tlmm 99 1>; + + status = "ok"; +}; + +&pm6150_qg { + qcom,battery-data = <&mtp_batterydata>; + qcom,qg-iterm-ma = <100>; + qcom,hold-soc-while-full; + qcom,linearize-soc; + qcom,cl-feedback-on; +}; + +&pm6150_charger { + io-channels = <&pm6150_vadc ADC_USB_IN_V_16>, + <&pm6150_vadc ADC_USB_IN_I>, + <&pm6150_vadc ADC_CHG_TEMP>, + <&pm6150_vadc ADC_DIE_TEMP>, + <&pm6150_vadc ADC_AMUX_THM4_PU2>, + <&pm6150_vadc ADC_SBUx>, + <&pm6150_vadc ADC_VPH_PWR>; + io-channel-names = "usb_in_voltage", + "usb_in_current", + "chg_temp", + "die_temp", + "conn_temp", + "sbux_res", + "vph_voltage"; + qcom,battery-data = <&mtp_batterydata>; + qcom,auto-recharge-soc = <98>; + qcom,step-charging-enable; + qcom,sw-jeita-enable; + qcom,fcc-stepping-enable; + qcom,suspend-input-on-debug-batt; + qcom,sec-charger-config = <3>; + qcom,thermal-mitigation = <4200000 3500000 3000000 + 2500000 2000000 1500000 1000000 500000>; + dpdm-supply = <&qusb_phy0>; + qcom,charger-temp-max = <800>; + qcom,smb-temp-max = <800>; +}; + +&smb1390 { + /delete-property/ interrupts; + interrupts = <0x0 0xc2 0x0 IRQ_TYPE_LEVEL_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&smb_stat_default>; + status = "ok"; +}; + +&smb1390_charger { + /delete-property/ compatible; + compatible = "qcom,smb1390-charger-psy"; + io-channels = <&pm6150_vadc ADC_AMUX_THM3>; + io-channel-names = "cp_die_temp"; + status = "ok"; +}; + +&smb1355 { + /delete-property/ interrupts; + interrupts = <0x0 0xc2 0x0 IRQ_TYPE_LEVEL_LOW>; + status = "ok"; +}; + +&smb1355_charger { + status = "ok"; +}; + +&dsi_sim_cmd { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply>; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs"; + qcom,platform-reset-gpio = <&tlmm 91 0>; +}; + +&dsi_sim_vid { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply>; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs"; + qcom,platform-reset-gpio = <&tlmm 91 0>; +}; + +&dsi_hx83112a_truly_video { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply>; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled"; + qcom,mdss-dsi-bl-min-level = <1>; + qcom,mdss-dsi-bl-max-level = <4095>; + qcom,platform-te-gpio = <&tlmm 90 0>; + qcom,platform-reset-gpio = <&tlmm 91 0>; +}; + +&dsi_td4328_truly_video { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply>; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled"; + qcom,mdss-dsi-bl-min-level = <1>; + qcom,mdss-dsi-bl-max-level = <4095>; + qcom,platform-te-gpio = <&tlmm 90 0>; + qcom,platform-reset-gpio = <&tlmm 91 0>; +}; + +&dsi_td4328_truly_cmd { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply>; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled"; + qcom,mdss-dsi-bl-min-level = <1>; + qcom,mdss-dsi-bl-max-level = <4095>; + qcom,platform-te-gpio = <&tlmm 90 0>; + qcom,platform-reset-gpio = <&tlmm 91 0>; +}; + +&dsi_rm69298_truly_amoled_video { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply_labibb_amoled>; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs"; + qcom,mdss-dsi-bl-min-level = <1>; + qcom,mdss-dsi-bl-max-level = <255>; + qcom,platform-te-gpio = <&tlmm 90 0>; + qcom,platform-reset-gpio = <&tlmm 91 0>; +}; + +&dsi_rm69298_truly_amoled_cmd { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply_labibb_amoled>; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs"; + qcom,mdss-dsi-bl-min-level = <1>; + qcom,mdss-dsi-bl-max-level = <255>; + qcom,platform-te-gpio = <&tlmm 90 0>; + qcom,platform-reset-gpio = <&tlmm 91 0>; +}; + +&dsi_sharp_split_link_wuxga_video { + qcom,panel-supply-entries = <&dsi_panel_pwr_supply>; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs"; + qcom,mdss-dsi-bl-min-level = <1>; + qcom,mdss-dsi-bl-max-level = <4095>; + qcom,platform-te-gpio = <&tlmm 90 0>; + qcom,platform-reset-gpio = <&tlmm 91 0>; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp-overlay.dts b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp-overlay.dts new file mode 100644 index 000000000000..931f6bd23ce1 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp-overlay.dts @@ -0,0 +1,31 @@ +/* Copyright (c) 2020, 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 "prairie-iot-idp.dtsi" +#include "sm6150-usbc-idp.dtsi" + +/ { + model = "USBC Audio IDP overlay"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,msm-id = <401 0x0>; + qcom,board-id = <34 2>; +}; + +&dsi_hx83112a_truly_vid_display { + qcom,dsi-display-active; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp.dts b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp.dts new file mode 100644 index 000000000000..961171b0fd9e --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp.dts @@ -0,0 +1,23 @@ +/* Copyright (c) 2020, 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 "qcs610.dtsi" +#include "prairie-iot-idp.dtsi" +#include "prairie-iot-usbc-idp.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. QCS610 PM6150 USBC Audio IDP"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,board-id = <34 2>; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp.dtsi b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp.dtsi new file mode 100644 index 000000000000..741dad2c56f5 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-idp.dtsi @@ -0,0 +1,19 @@ +/* Copyright (c) 2020, 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 "sm6150-audio-overlay.dtsi" + +&sm6150_snd { + qcom,msm-mbhc-usbc-audio-supported = <1>; + qcom,msm-mbhc-hphl-swh = <0>; + qcom,msm-mbhc-gnd-swh = <0>; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-usbc-minidp-idp-overlay.dts b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-minidp-idp-overlay.dts new file mode 100644 index 000000000000..4a3c2ea8d8c9 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-minidp-idp-overlay.dts @@ -0,0 +1,32 @@ +/* Copyright (c) 2020, 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 "prairie-iot-idp.dtsi" +#include "sm6150-usbc-idp.dtsi" + +/ { + model = "USBC mini DP Primary Panel IDP overlay"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,msm-id = <401 0x0>; + qcom,board-id = <34 4>; +}; + +&sde_dp { + qcom,dp-hpd-gpio = <&tlmm 103 0>; + qcom,dp-low-power-hw-hpd; +}; diff --git a/arch/arm64/boot/dts/qcom/prairie-iot-usbc-minidp-idp.dts b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-minidp-idp.dts new file mode 100644 index 000000000000..a9775189b0cb --- /dev/null +++ b/arch/arm64/boot/dts/qcom/prairie-iot-usbc-minidp-idp.dts @@ -0,0 +1,29 @@ +/* Copyright (c) 2020, 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 "qcs610.dtsi" +#include "prairie-iot-idp.dtsi" +#include "prairie-iot-usbc-idp.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. QCS610 USBC mini DP Panel IDP"; + compatible = "qcom,qcs610-idp", "qcom,qcs610", "qcom,idp"; + qcom,msm-id = <401 0x0>; + qcom,board-id = <34 4>; +}; + +&sde_dp { + qcom,dp-hpd-gpio = <&tlmm 103 0>; + qcom,dp-low-power-hw-hpd; +};