Skip to content

Commit

Permalink
arm64: dts: qcom: sc8180x: Introduce Lenovo Flex 5G
Browse files Browse the repository at this point in the history
Introduce support for the Lenovo Flex 5G laptop, built on the Qualcomm
SC8180X platform. Supported peripherals includes keyboard, touchpad,
UFS storage, external USB and WiFi.

Signed-off-by: Bjorn Andersson <[email protected]>
Signed-off-by: Vinod Koul <[email protected]>
Signed-off-by: Bjorn Andersson <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
andersson committed May 30, 2023
1 parent 2ce38cc commit 20dea72
Showing 2 changed files with 584 additions and 0 deletions.
1 change: 1 addition & 0 deletions arch/arm64/boot/dts/qcom/Makefile
Original file line number Diff line number Diff line change
@@ -147,6 +147,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sc7280-herobrine-zombie-nvme-lte.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7280-idp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7280-idp2.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7280-crd-r3.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc8180x-lenovo-flex-5g.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc8180x-primus.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc8280xp-crd.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc8280xp-lenovo-thinkpad-x13s.dtb
583 changes: 583 additions & 0 deletions arch/arm64/boot/dts/qcom/sc8180x-lenovo-flex-5g.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,583 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2020-2023, Linaro Limited
*/

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "sc8180x.dtsi"
#include "sc8180x-pmics.dtsi"

/ {
model = "Lenovo Flex 5G";
compatible = "lenovo,flex-5g", "qcom,sc8180x";

aliases {
serial0 = &uart13;
};

backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pmc8180c_lpg 4 1000000>;
enable-gpios = <&pmc8180c_gpios 8 GPIO_ACTIVE_HIGH>;

pinctrl-0 = <&bl_pwm_default>;
pinctrl-names = "default";
};

gpio-keys {
compatible = "gpio-keys";

pinctrl-0 = <&hall_int_active_state>;
pinctrl-names = "default";

lid {
gpios = <&tlmm 121 GPIO_ACTIVE_LOW>;
linux,input-type = <EV_SW>;
linux,code = <SW_LID>;
wakeup-source;
wakeup-event-action = <EV_ACT_DEASSERTED>;
};
};

reserved-memory {
rmtfs_mem: rmtfs-region@85500000 {
compatible = "qcom,rmtfs-mem";
reg = <0x0 0x85500000 0x0 0x200000>;
no-map;

qcom,client-id = <1>;
qcom,vmid = <15>;
};

wlan_mem: wlan-region@8bc00000 {
reg = <0x0 0x8bc00000 0x0 0x180000>;
no-map;
};

mpss_mem: mpss-region@8d800000 {
reg = <0x0 0x8d800000 0x0 0x3000000>;
no-map;
};

adsp_mem: adsp-region@90800000 {
reg = <0x0 0x90800000 0x0 0x1c00000>;
no-map;
};

gpu_mem: gpu-region@98715000 {
reg = <0x0 0x98715000 0x0 0x2000>;
no-map;
};

cdsp_mem: cdsp-region@98900000 {
reg = <0x0 0x98900000 0x0 0x1400000>;
no-map;
};
};

vph_pwr: vph-pwr-regulator {
compatible = "regulator-fixed";
regulator-name = "vph_pwr";
regulator-min-microvolt = <3700000>;
regulator-max-microvolt = <3700000>;
};

vreg_s4a_1p8: pm8150-s4-regulator {
compatible = "regulator-fixed";
regulator-name = "vreg_s4a_1p8";

regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;

regulator-always-on;
regulator-boot-on;

vin-supply = <&vph_pwr>;
};
};

&apps_rsc {
regulators-0 {
compatible = "qcom,pmc8180-rpmh-regulators";
qcom,pmic-id = "a";

vdd-s5-supply = <&vph_pwr>;
vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p0>;

vreg_s5a_2p0: smps5 {
regulator-min-microvolt = <2040000>;
regulator-max-microvolt = <2100000>;
};

vreg_l7a_1p8: ldo7 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l9a_1p3: ldo9 {
regulator-min-microvolt = <1296000>;
regulator-max-microvolt = <1304000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l12a_1p8: ldo12 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};

regulators-1 {
compatible = "qcom,pmc8180c-rpmh-regulators";
qcom,pmic-id = "c";

vdd-s6-supply = <&vph_pwr>;
vdd-l2-l3-supply = <&vreg_s6c_1p35>;
vdd-bob-supply = <&vph_pwr>;

vreg_s6c_1p35: smps6 {
regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1372000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l3c_1p2: ldo3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l10c_3p3: ldo10 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3312000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l11c_3p3: ldo11 {
regulator-min-microvolt = <3296000>;
regulator-max-microvolt = <3304000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_bob: bob {
regulator-min-microvolt = <3296000>;
regulator-max-microvolt = <3350000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};

regulators-2 {
compatible = "qcom,pmc8180-rpmh-regulators";
qcom,pmic-id = "e";

vdd-s4-supply = <&vph_pwr>;
vdd-s5-supply = <&vph_pwr>;
vdd-l2-l10-supply = <&vreg_bob>;
vdd-l3-l4-l5-l18-supply = <&vreg_s4e_0p98>;
vdd-l7-l12-l14-l15-supply = <&vreg_s5e_2p05>;
vdd-l13-l16-l17-supply = <&vreg_bob>;

vreg_s4e_0p98: smps4 {
regulator-min-microvolt = <992000>;
regulator-max-microvolt = <992000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_s5e_2p05: smps5 {
regulator-min-microvolt = <2040000>;
regulator-max-microvolt = <2040000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l1e_0p75: ldo1 {
regulator-min-microvolt = <752000>;
regulator-max-microvolt = <752000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l5e_0p88: ldo5 {
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <880000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l7e_1p8: ldo7 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l10e_2p9: ldo10 {
regulator-min-microvolt = <2904000>;
regulator-max-microvolt = <2904000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};

vreg_l16e_3p0: ldo16 {
regulator-min-microvolt = <3072000>;
regulator-max-microvolt = <3072000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
};

&gpu {
status = "okay";

zap-shader {
memory-region = <&gpu_mem>;
firmware-name = "qcom/sc8180x/qcdxkmsuc8180.mbn";
};
};

&i2c1 {
clock-frequency = <100000>;

pinctrl-0 = <&i2c1_active>, <&i2c1_hid_active>;
pinctrl-names = "default";

status = "okay";

hid@10 {
compatible = "hid-over-i2c";
reg = <0x10>;
hid-descr-addr = <0x1>;

interrupts-extended = <&tlmm 122 IRQ_TYPE_LEVEL_LOW>;
};
};

&i2c7 {
clock-frequency = <100000>;

pinctrl-0 = <&i2c7_active>, <&i2c7_hid_active>;
pinctrl-names = "default";

status = "okay";

hid@5 {
compatible = "hid-over-i2c";
reg = <0x5>;
hid-descr-addr = <0x20>;

interrupts-extended = <&tlmm 37 IRQ_TYPE_LEVEL_LOW>;
};

hid@2c {
compatible = "hid-over-i2c";
reg = <0x2c>;
hid-descr-addr = <0x20>;

interrupts-extended = <&tlmm 24 IRQ_TYPE_LEVEL_LOW>;
};
};

&mdss {
status = "okay";
};

&mdss_edp {
data-lanes = <0 1 2 3>;

pinctrl-0 = <&edp_hpd_active>;
pinctrl-names = "default";

status = "okay";

aux-bus {
panel {
compatible = "edp-panel";
no-hpd;

backlight = <&backlight>;

ports {
port {
auo_b140han06_in: endpoint {
remote-endpoint = <&mdss_edp_out>;
};
};
};
};
};

ports {
port@1 {
reg = <1>;
mdss_edp_out: endpoint {
remote-endpoint = <&auo_b140han06_in>;
};
};
};
};

&pcie3 {
perst-gpio = <&tlmm 178 GPIO_ACTIVE_LOW>;
wake-gpio = <&tlmm 180 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&pcie3_default_state>;
pinctrl-names = "default";

status = "okay";
};

&pcie3_phy {
vdda-phy-supply = <&vreg_l5e_0p88>;
vdda-pll-supply = <&vreg_l3c_1p2>;

status = "okay";
};

&pmc8180c_lpg {
status = "okay";
};

&qupv3_id_0 {
status = "okay";
};

&qupv3_id_1 {
status = "okay";
};

&qupv3_id_2 {
status = "okay";
};

&remoteproc_adsp {
memory-region = <&adsp_mem>;
firmware-name = "qcom/sc8180x/LENOVO/82AK/qcadsp8180.mbn";

status = "okay";
};

&remoteproc_cdsp {
memory-region = <&cdsp_mem>;
firmware-name = "qcom/sc8180x/LENOVO/82AK/qccdsp8180.mbn";

status = "okay";
};

&remoteproc_mpss {
memory-region = <&mpss_mem>;
firmware-name = "qcom/sc8180x/LENOVO/82AK/qcmpss8180_nm.mbn";

status = "okay";
};

&uart13 {
pinctrl-0 = <&uart13_state>;
pinctrl-names = "default";

status = "okay";

bluetooth {
compatible = "qcom,wcn3998-bt";

vddio-supply = <&vreg_s4a_1p8>;
vddxo-supply = <&vreg_l7a_1p8>;
vddrf-supply = <&vreg_l9a_1p3>;
vddch0-supply = <&vreg_l11c_3p3>;
max-speed = <3200000>;
};
};

&ufs_mem_hc {
reset-gpios = <&tlmm 190 GPIO_ACTIVE_LOW>;

vcc-supply = <&vreg_l10e_2p9>;
vcc-max-microamp = <155000>;

vccq2-supply = <&vreg_l7e_1p8>;
vccq2-max-microamp = <425000>;

status = "okay";
};

&ufs_mem_phy {
vdda-phy-supply = <&vreg_l5e_0p88>;
vdda-pll-supply = <&vreg_l3c_1p2>;

status = "okay";
};

&usb_prim_hsphy {
vdda-pll-supply = <&vreg_l5e_0p88>;
vdda18-supply = <&vreg_l12a_1p8>;
vdda33-supply = <&vreg_l16e_3p0>;

status = "okay";
};

&usb_prim_qmpphy {
vdda-phy-supply = <&vreg_l3c_1p2>;
vdda-pll-supply = <&vreg_l5e_0p88>;

status = "okay";
};

&usb_prim {
status = "okay";
};

&usb_prim_dwc3 {
dr_mode = "host";
};

&usb_sec_hsphy {
vdda-pll-supply = <&vreg_l5e_0p88>;
vdda18-supply = <&vreg_l12a_1p8>;
vdda33-supply = <&vreg_l16e_3p0>;

status = "okay";
};

&usb_sec_qmpphy {
vdda-phy-supply = <&vreg_l3c_1p2>;
vdda-pll-supply = <&vreg_l5e_0p88>;

status = "okay";
};

&usb_sec {
status = "okay";
};

&usb_sec_dwc3 {
dr_mode = "host";
};

&wifi {
memory-region = <&wlan_mem>;

vdd-0.8-cx-mx-supply = <&vreg_l1e_0p75>;
vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
vdd-1.3-rfa-supply = <&vreg_l9a_1p3>;
vdd-3.3-ch0-supply = <&vreg_l11c_3p3>;
vdd-3.3-ch1-supply = <&vreg_l10c_3p3>;

status = "okay";
};

&xo_board_clk {
clock-frequency = <38400000>;
};

/* PINCTRL */

&pmc8180c_gpios {
bl_pwm_default: bl-pwm-default-state {
en-pins {
pins = "gpio8";
function = "normal";
};

pwm-pins {
pins = "gpio10";
function = "func1";
};
};
};

&tlmm {
gpio-reserved-ranges = <0 4>, <47 4>, <126 4>;

edp_hpd_active: epd-hpd-active-state {
pins = "gpio10";
function = "edp_hot";
};

hall_int_active_state: hall-int-active-state {
pins = "gpio121";
function = "gpio";

input-enable;
bias-disable;
};

i2c1_active: i2c1-active-state {
pins = "gpio114", "gpio115";
function = "qup1";

bias-pull-up = <1>;
drive-strength = <2>;
};

i2c1_hid_active: i2c1-hid-active-state {
pins = "gpio122";
function = "gpio";

input-enable;
bias-pull-up;
drive-strength = <2>;
};

i2c7_active: i2c7-active-state {
pins = "gpio98", "gpio99";
function = "qup7";

bias-pull-up;
drive-strength = <2>;
};

i2c7_hid_active: i2c7-hid-active-state {
pins = "gpio37", "gpio24";
function = "gpio";

input-enable;
bias-pull-up;
drive-strength = <2>;
};

pcie3_default_state: pcie3-default-state {
clkreq-pins {
pins = "gpio179";
function = "pci_e3";
bias-pull-up;
};

reset-n-pins {
pins = "gpio178";
function = "gpio";

drive-strength = <2>;
output-low;
bias-pull-down;
};

wake-n-pins {
pins = "gpio180";
function = "gpio";

drive-strength = <2>;
bias-pull-up;
};
};

uart13_state: uart13-state {
cts-pins {
pins = "gpio43";
function = "qup13";
bias-pull-down;
};

rts-tx-pins {
pins = "gpio44", "gpio45";
function = "qup13";
drive-strength = <2>;
bias-disable;
};

rx-pins {
pins = "gpio46";
function = "qup13";
bias-pull-up;
};
};
};

0 comments on commit 20dea72

Please sign in to comment.