diff --git a/arch/arm64/boot/dts/seco/include/qcs6490-e81-common.dtsi b/arch/arm64/boot/dts/seco/include/qcs6490-e81-common.dtsi new file mode 100644 index 0000000000000000000000000000000000000000..950b105f01d42e64892ff37f6d3aa464d118432b --- /dev/null +++ b/arch/arm64/boot/dts/seco/include/qcs6490-e81-common.dtsi @@ -0,0 +1,557 @@ +/*****************************************************************************/ +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ +/* + * Device-tree-include-file for SECO SMARC Module with QCS5430/6490 + * + * Copyright 2024 SECO Dietmar Muscholik <dietmar.muscholik@seco.com> + * + * Rules to keep this file readable: + * - try to maintain an alphabetical order + * - when nodes have more than a couple of children or child-nodes exceed + * a couple of lines, move them out of the main-node + * - do the pinmuxing at the end of the file and keep the order of the + * corresponding device-nodes + * - use generic names for nodes that are referenced from outside this file + * - avoid conditional compilation if possible + * - use tabs for indention + * - don't be afraid of comments + * + *****************************************************************************/ + +#ifndef SECO_QCS6490_E81_DTSI +#define SECO_QCS6490_E81_DTSI + +#include <dt-bindings/iio/qcom,spmi-adc7-pm7325.h> +#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h> +#include <dt-bindings/input/linux-event-codes.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> +#include "../../qcom/qcm6490.dtsi" // includes qcom/sc7280.dtsi +#include "../../qcom/pm7325.dtsi" +#include "../../qcom/pm8350c.dtsi" + +#include "qcs6490-pinfunc.h" + +/ { + + reg_5v_sleep: 5v_sleep { + compatible = "regulator-fixed"; + regulator-name = "5V_SLEEP"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + }; + + reg_5v_run: 5v_run { + compatible = "regulator-fixed"; + regulator-name = "5V_RUN"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-always-on; + vin-supply = <®_5v_sleep>; + }; + + reg_3v3_sleep: 3v3_sleep { + compatible = "regulator-fixed"; + regulator-name = "3V3_SLEEP"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + vin-supply = <®_5v_sleep>; + }; + + reg_1v0_run: 1v0_run { + compatible = "regulator-fixed"; + regulator-name = "1V0_RUN"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + vin-supply = <&vreg_l8c_1p8>; + }; + + reg_2v5_run: 2v5_run { + compatible = "regulator-fixed"; + regulator-name = "2V5_RUN"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <2500000>; + regulator-always-on; + //vin-supply = <&vreg_l11c_3p3>; + vin-supply = <®_5v_run>; + }; + + reg_0v9_qps: 0v9_qps { + compatible = "regulator-fixed"; + regulator-name = "0V9_QPS"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + //gpio = <&qps_0v9_en>; + gpio = <&pm8350c_gpios 2 GPIO_ACTIVE_HIGH>; + enable-active-high; + vin-supply = <®_5v_run>; + }; + + reg_1v8_qps: 1v8_qps { + compatible = "regulator-fixed"; + regulator-name = "1V8_QPS"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + //gpio = <&qps_1v8_en>; + gpio = <&pm8350c_gpios 3 GPIO_ACTIVE_HIGH>; + enable-active-high; + vin-supply = <®_5v_run>; + }; + + reg_3v3_wifi: 3v3_wifi { + compatible = "regulator-fixed"; + regulator-name = "3V3_WIFI"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + vin-supply = <®_5v_run>; + }; +}; + +&apps_rsc { + // PM7325, U1900 + regulators-0 { + compatible = "qcom,pm7325-rpmh-regulators"; + qcom,pmic-id = "b"; + + vreg_s1b_1p872: smps1 { + regulator-name = "VDD_SYS_1V8"; + regulator-min-microvolt = <1840000>; + regulator-max-microvolt = <2040000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_s2b_0p876: smps2 { + regulator-name = "VDDA_0V7"; + regulator-min-microvolt = <570070>; + regulator-max-microvolt = <1050000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; +/* + // kernel hang + vreg_s3b_0v752: smps3 { + regulator-name = "VDD_APC1"; + regulator-min-microvolt = <752000>; + regulator-max-microvolt = <752000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; +*/ + /* + // kernel hang + vreg_s6b_0v752: smps6 { + regulator-name = "VDD_APC0"; + regulator-min-microvolt = <752000>; + regulator-max-microvolt = <752000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + */ + vreg_s7b_0p972: smps7 { + regulator-name = "VDD_SYS_0V952"; + regulator-min-microvolt = <904000>; + regulator-max-microvolt = <1120000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_s8b_1p272: smps8 { + regulator-name = "VDD_SYS_1V256"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1500000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1b_0p912: ldo1 { + regulator-name = "VDDA_USB_0V9"; + regulator-min-microvolt = <912000>; + regulator-max-microvolt = <925000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2b_3p072: ldo2 { + regulator-name = "VDDA_USB_3V1"; + regulator-min-microvolt = <2700000>; + regulator-max-microvolt = <3544000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3b_0p504: ldo3 { + regulator-name = "LPDDR5_VDDQ"; + regulator-min-microvolt = <312000>; + regulator-max-microvolt = <910000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l4b_0p752: ldo4 { + regulator-name = "VDD_LPI_MX"; + regulator-min-microvolt = <752000>; + regulator-max-microvolt = <820000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l5b_0p752: ldo5 { + regulator-name = "VDD_LPI_CX"; + regulator-min-microvolt = <752000>; + regulator-max-microvolt = <820000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l6b_1p2: ldo6 { + regulator-name = "VDDA_1V2"; + regulator-min-microvolt = <1140000>; + regulator-max-microvolt = <1260000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l7b_2p952: ldo7 { + regulator-name = "VCC_UFS_EMMC"; + //regulator-min-microvolt = <2400000>; + //regulator-max-microvolt = <3544000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l8b_0p904: ldo8 { + regulator-name = "LPDDR5_VDD2L"; + regulator-min-microvolt = <870000>; + regulator-max-microvolt = <970000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l9b_1p2: ldo9 { + regulator-name = "UFS_1V2"; + //regulator-min-microvolt = <1200000>; + //regulator-max-microvolt = <1304000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM RPMH_REGULATOR_MODE_HPM>; + }; +/* + // kernel hang + vreg_l10b_1v504: ldo10 { + regulator-name = "VREG_10B_1V25"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; +*/ + vreg_l11b_1p504: ldo11 { + regulator-name = "ETH0_1V8"; + regulator-min-microvolt = <1504000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + +// according to schematics page 3+4 these regulators are to used +/* + vreg_l12b_0p751: ldo12 { + regulator-name = "VREG_L12B_0V8"; + regulator-min-microvolt = <751000>; + regulator-max-microvolt = <824000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l13b_0p53: ldo13 { + regulator-min-microvolt = <530000>; + regulator-max-microvolt = <824000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l14b_1p08: ldo14 { + regulator-min-microvolt = <1080000>; + regulator-max-microvolt = <1304000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l15b_0p765: ldo15 { + regulator-min-microvolt = <765000>; + regulator-max-microvolt = <1020000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l16b_1p1: ldo16 { + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1300000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; +*/ + vreg_l17b_1p7: ldo17 { + regulator-name = "ETH1_1V8"; + regulator-min-microvolt = <1700000>; + regulator-max-microvolt = <1900000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l18b_1p8: ldo18 { + regulator-name = "VDD_1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l19b_1p8: ldo19 { + regulator-name = "EMMC_VCCQ"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + // PM7350C, U2300 + regulators-1 { + compatible = "qcom,pm8350c-rpmh-regulators"; + qcom,pmic-id = "c"; + + vreg_s2c_0v752: smps2 { + regulator-name = "VDD_CX"; + regulator-min-microvolt = <752000>; + regulator-max-microvolt = <752000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_s5c_0v752: smps5 { + regulator-name = "VDD_MODEM"; + regulator-min-microvolt = <752000>; + regulator-max-microvolt = <752000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_s7c_0v752: smps7 { + regulator-name = "VDD_GFX"; + regulator-min-microvolt = <752000>; + regulator-max-microvolt = <752000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; +/* + vreg_s8c_0v752: smps8 { + regulator-name = "VDD_GFX_1"; + regulator-min-microvolt = <752000>; + regulator-max-microvolt = <752000>; + }; +*/ + vreg_s9c_1v1: smps9 { + regulator-name = "LPDDR5_VDD2H"; + regulator-min-microvolt = <1084000>; + regulator-max-microvolt = <1084000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_s10c_0v752: smps10 { + regulator-name = "VDD_MX"; + regulator-min-microvolt = <752000>; + regulator-max-microvolt = <752000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1c_1v8: ldo1 { + regulator-name = "VDDA_1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l4c_1v8: ldo4 { + regulator-name = "VDD_UIM1"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l5c_1v8: ldo5 { + regulator-name = "VDD_UIM2"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l6c_2v96: ldo6 { + regulator-name = "VDD_SDIO"; + regulator-min-microvolt = <2960000>; + regulator-max-microvolt = <2960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l7c_3p3: ldo7 { + //regulator-name = "vreg_l7c_3p3"; + regulator-name = "3V3_USB_HUB"; + //regulator-min-microvolt = <3300000>; + //regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3540000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l8c_1p8: ldo8 { + //regulator-name = "vreg_l8c_1p62"; + regulator-name = "1V8_RUN"; + //regulator-min-microvolt = <1620000>; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2000000>; + regulator-always-on; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l10c_0v9: ldo10 { + regulator-name = "VDDA_0V9"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <880000>; + regulator-always-on; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l11c_3p3: ldo11 { + //regulator-name = "vreg_l11c_3p3"; + regulator-name = "3V3_RUN"; + //regulator-min-microvolt = <3300000>; + //regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3540000>; + regulator-always-on; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; +}; + +// dma-controller +&gpi_dma0 { + status = "okay"; +}; + +&gpi_dma1 { + status = "okay"; +}; + + +// i2c +&i2c0 { // QPS615_I2C + clock-frequency = <100000>; + status = "okay"; +}; + +&i2c1 { // I2C_GP + clock-frequency = <100000>; + status = "okay"; +}; + +&i2c2 { // I2C_PM + clock-frequency = <100000>; + status = "okay"; +}; + + +&i2c4 { // TPM_I2C + status = "okay"; +}; + +&i2c13 { // TS_I2C + clock-frequency = <100000>; + status = "okay"; +}; + +// GENI Serial Engine QUP Wrapper Controller +// (parent of all serial interfaces) +&qupv3_id_0 { + status = "okay"; +}; + +&qupv3_id_1 { + status = "okay"; +}; + +// remote processors +/* +&remoteproc_adsp { + firmware-name = "qcom/qcs6490/adsp.mdt"; + status = "okay"; +}; + +&remoteproc_cdsp { + firmware-name = "qcom/qcs6490/cdsp.mdt"; + status = "okay"; +}; + +&remoteproc_mpss { + firmware-name = "qcom/qcs6490/modem.mdt"; + status = "okay"; +}; + +&remoteproc_wpss { + firmware-name = "qcom/qcs6490/wpss.mdt"; + status = "okay"; +}; +*/ + +// eMMC +&sdhc_1 { + ///delete-property/pinctrl-names; + ///delete-property/pinctrl-0; + ///delete-property/pinctrl-1; + + non-removable; + //no-sd; + //no-sdio; + + vmmc-supply = <&vreg_l7b_2p952>; + vqmmc-supply = <&vreg_l19b_1p8>; + + status = "okay"; +}; + +// uarts +&uart6 { // SER0 + status = "okay"; +}; + +&uart5 { // SER1 + status = "okay"; +}; + +&uart10 { // SER2 + status = "okay"; +}; + +&uart9 { // SER3 + compatible = "qcom,geni-uart"; + pinctrl-names = "default"; + pinctrl-0 = <&qup_uart9_tx>, <&qup_uart9_rx>; + + status = "okay"; +}; + + +&ufs_mem_hc { + reset-gpios = <&tlmm 175 GPIO_ACTIVE_LOW>; + vcc-supply = <&vreg_l7b_2p952>; + vcc-max-microamp = <800000>; + vccq-supply = <&vreg_l9b_1p2>; + vccq-max-microamp = <900000>; + vccq2-supply = <&vreg_l9b_1p2>; + vccq2-max-microamp = <900000>; + + status = "okay"; +}; + +&ufs_mem_phy { + vdda-phy-supply = <&vreg_l9b_1p2>; + vdda-pll-supply = <&vreg_l6b_1p2>; + + status = "okay"; +}; + +// children of i2c2 (I2C_PM) +&i2c2 { + stm32: stm32@40 { + reg = <0x40>; + compatible = "seco,stm32"; + gpio-controller; + #gpio-cells = <2>; + ngpios =/bits/ 16 <STM32_NGPIOS>; + + status = "okay"; + }; +}; + +#endif diff --git a/arch/arm64/boot/dts/seco/include/qcs6490-pinfunc.h b/arch/arm64/boot/dts/seco/include/qcs6490-pinfunc.h new file mode 100644 index 0000000000000000000000000000000000000000..99d40597487fb1f950fda48fca6008406dc992e3 --- /dev/null +++ b/arch/arm64/boot/dts/seco/include/qcs6490-pinfunc.h @@ -0,0 +1,11 @@ + +#ifndef QCS6490_PINFUNC_H +#define QCS6490_PINFUNC_H + +#define STM32_NGPIOS 30 + +#define LCD0_VDD_EN &stm32 24 +#define LCD0_BKLT_EN &pm8350c_gpios 7 +#define LCD0_BKLT_PWM &pm8350c_pwm 3 + +#endif