2021-06-16 01:00:19

by Konrad Dybcio

[permalink] [raw]
Subject: [PATCH 1/6] arm64: dts: qcom: sm8250-edo: Add hardware keys

Volume Down, GAssist (pdx206 only) and camera keys live on PMIC pins,
with the latter kind being broken for now.. Add these and PON-connected
Volume Up & PWR.

Signed-off-by: Konrad Dybcio <[email protected]>
---
Depends on https://patchwork.kernel.org/project/linux-arm-msm/patch/[email protected]/
.../qcom/sm8250-sony-xperia-edo-pdx206.dts | 11 +++++++
.../boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 30 +++++++++++++++++++
2 files changed, 41 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
index 999b662f4679..16c96e838534 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
@@ -18,6 +18,17 @@ &framebuffer {
stride = <(1080 * 4)>;
};

+&gpio_keys {
+ g-assist-key {
+ label = "Google Assistant Key";
+ linux,code = <KEY_LEFTMETA>;
+ gpios = <&pm8150_gpios 6 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ gpio-key,wakeup;
+ };
+};
+
&vreg_l2f_1p3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
index 0db63eb08c60..52ed4b082bd7 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
@@ -47,6 +47,26 @@ framebuffer: framebuffer@9c000000 {
};
};

+ gpio_keys: gpio-keys {
+ compatible = "gpio-keys";
+
+ /*
+ * Camera focus (light press) and camera snapshot (full press)
+ * seem not to work properly.. Adding the former one stalls the CPU
+ * and the latter kills the volume down key for whatever reason. In any
+ * case, they are both on &pm8150b_gpios: camera focus(2), camera snapshot(1).
+ */
+
+ vol-down {
+ label = "Volume Down";
+ linux,code = <KEY_VOLUMEDOWN>;
+ gpios = <&pm8150_gpios 1 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ gpio-key,wakeup;
+ };
+ };
+
vph_pwr: vph-pwr-regulator {
compatible = "regulator-fixed";
regulator-name = "vph_pwr";
@@ -436,6 +456,16 @@ &i2c15 {
/* Richwave RTC6226 FM Radio Receiver @ 64 */
};

+&pon_pwrkey {
+ status = "okay";
+};
+
+&pon_resin {
+ status = "okay";
+
+ linux,code = <KEY_VOLUMEUP>;
+};
+
&qupv3_id_0 {
status = "okay";
};
--
2.32.0


2021-06-16 01:00:23

by Konrad Dybcio

[permalink] [raw]
Subject: [PATCH 3/6] arm64: dts: qcom: sm8250-edo: Enable PCIe

Enable PCIe0 (Wi-Fi) and 2 (SDX55m) interfaces and PHYs and assign relevant
pins and regulators.

Signed-off-by: Konrad Dybcio <[email protected]>
---
.../boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 24 +++++++++++++++++++
1 file changed, 24 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
index 52ed4b082bd7..0d7e3dbb12b1 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
@@ -456,6 +456,30 @@ &i2c15 {
/* Richwave RTC6226 FM Radio Receiver @ 64 */
};

+&pcie0 {
+ status = "okay";
+};
+
+&pcie0_phy {
+ status = "okay";
+
+ vdda-phy-supply = <&vreg_l5a_0p88>;
+ vdda-pll-supply = <&vreg_l9a_1p2>;
+};
+
+&pcie2 {
+ status = "okay";
+
+ pinctrl-0 = <&pcie2_default_state &mdm2ap_default &ap2mdm_default>;
+};
+
+&pcie2_phy {
+ status = "okay";
+
+ vdda-phy-supply = <&vreg_l5a_0p88>;
+ vdda-pll-supply = <&vreg_l9a_1p2>;
+};
+
&pon_pwrkey {
status = "okay";
};
--
2.32.0

2021-06-16 01:00:24

by Konrad Dybcio

[permalink] [raw]
Subject: [PATCH 2/6] arm64: dts: qcom: sm8250: Commonize PCIe pins

Commonize PCIe pins, along with pin definitions for PCIe-connected
MHI modem (not enabled by default, as it's useless on modem-less boards).

While at it, remove "output-low" from the RB5 board, as it's
not necessary - we already explicitly pull the perst pin low.

Signed-off-by: Konrad Dybcio <[email protected]>
---
arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 87 -------------------
arch/arm64/boot/dts/qcom/sm8250.dtsi | 101 +++++++++++++++++++++++
2 files changed, 101 insertions(+), 87 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts
index d5a4f5a27da6..8ac96f8e79d4 100644
--- a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts
+++ b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts
@@ -669,10 +669,6 @@ wifi-therm@1 {

&pcie0 {
status = "okay";
- perst-gpio = <&tlmm 79 GPIO_ACTIVE_LOW>;
- wake-gpio = <&tlmm 81 GPIO_ACTIVE_HIGH>;
- pinctrl-names = "default";
- pinctrl-0 = <&pcie0_default_state>;
};

&pcie0_phy {
@@ -683,10 +679,6 @@ &pcie0_phy {

&pcie1 {
status = "okay";
- perst-gpio = <&tlmm 82 GPIO_ACTIVE_LOW>;
- wake-gpio = <&tlmm 84 GPIO_ACTIVE_HIGH>;
- pinctrl-names = "default";
- pinctrl-0 = <&pcie1_default_state>;
};

&pcie1_phy {
@@ -697,10 +689,6 @@ &pcie1_phy {

&pcie2 {
status = "okay";
- perst-gpio = <&tlmm 85 GPIO_ACTIVE_LOW>;
- wake-gpio = <&tlmm 87 GPIO_ACTIVE_HIGH>;
- pinctrl-names = "default";
- pinctrl-0 = <&pcie2_default_state>;
};

&pcie2_phy {
@@ -1178,81 +1166,6 @@ lt9611_irq_pin: lt9611-irq {
bias-disable;
};

- pcie0_default_state: pcie0-default {
- clkreq {
- pins = "gpio80";
- function = "pci_e0";
- bias-pull-up;
- };
-
- reset-n {
- pins = "gpio79";
- function = "gpio";
-
- drive-strength = <2>;
- output-low;
- bias-pull-down;
- };
-
- wake-n {
- pins = "gpio81";
- function = "gpio";
-
- drive-strength = <2>;
- bias-pull-up;
- };
- };
-
- pcie1_default_state: pcie1-default {
- clkreq {
- pins = "gpio83";
- function = "pci_e1";
- bias-pull-up;
- };
-
- reset-n {
- pins = "gpio82";
- function = "gpio";
-
- drive-strength = <2>;
- output-low;
- bias-pull-down;
- };
-
- wake-n {
- pins = "gpio84";
- function = "gpio";
-
- drive-strength = <2>;
- bias-pull-up;
- };
- };
-
- pcie2_default_state: pcie2-default {
- clkreq {
- pins = "gpio86";
- function = "pci_e2";
- bias-pull-up;
- };
-
- reset-n {
- pins = "gpio85";
- function = "gpio";
-
- drive-strength = <2>;
- output-low;
- bias-pull-down;
- };
-
- wake-n {
- pins = "gpio87";
- function = "gpio";
-
- drive-strength = <2>;
- bias-pull-up;
- };
- };
-
sdc2_default_state: sdc2-default {
clk {
pins = "sdc2_clk";
diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
index 1665eac49f3b..e2413aee2f21 100644
--- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
@@ -1314,6 +1314,12 @@ pcie0: pci@1c00000 {
phys = <&pcie0_lane>;
phy-names = "pciephy";

+ perst-gpio = <&tlmm 79 GPIO_ACTIVE_LOW>;
+ enable-gpio = <&tlmm 81 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie0_default_state>;
+
status = "disabled";
};

@@ -1412,6 +1418,12 @@ pcie1: pci@1c08000 {
phys = <&pcie1_lane>;
phy-names = "pciephy";

+ perst-gpio = <&tlmm 82 GPIO_ACTIVE_LOW>;
+ enable-gpio = <&tlmm 84 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie1_default_state>;
+
status = "disabled";
};

@@ -1512,6 +1524,12 @@ pcie2: pci@1c10000 {
phys = <&pcie2_lane>;
phy-names = "pciephy";

+ perst-gpio = <&tlmm 85 GPIO_ACTIVE_LOW>;
+ enable-gpio = <&tlmm 87 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie2_default_state>;
+
status = "disabled";
};

@@ -3490,6 +3508,89 @@ data {
bias-pull-up;
};
};
+
+ pcie0_default_state: pcie0-default {
+ pcie0_perst_default: perst {
+ pins = "gpio79";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ clkreq {
+ pins = "gpio80";
+ function = "pci_e0";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ wake {
+ pins = "gpio81";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie1_default_state: pcie1-default {
+ pcie1_perst_default: perst {
+ pins = "gpio82";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ clkreq {
+ pins = "gpio83";
+ function = "pci_e1";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ wake {
+ pins = "gpio84";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie2_default_state: pcie2-default {
+ pcie2_perst_default: perst {
+ pins = "gpio85";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ clkreq {
+ pins = "gpio86";
+ function = "pci_e2";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ wake {
+ pins = "gpio87";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ mdm2ap_default: mdm2ap-default {
+ pins = "gpio1", "gpio3";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ap2mdm_default: ap2mdm-default {
+ pins = "gpio56", "gpio57";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
};

apps_smmu: iommu@15000000 {
--
2.32.0

2021-06-16 01:01:13

by Konrad Dybcio

[permalink] [raw]
Subject: [PATCH 4/6] arm64: dts: qcom: sm8250-edo: Enable ADSP/CDSP/SLPI

Enabling the hardware thankfully comes down to a simple status = "okay".
We assume that the firmware is provided by the Linux distribution, as it's
signed and needs to come from the stock Android.

Signed-off-by: Konrad Dybcio <[email protected]>
---
arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
index 0d7e3dbb12b1..82ae246694ad 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
@@ -118,6 +118,10 @@ ramoops@ffc00000 {
};
};

+&adsp {
+ status = "okay";
+};
+
&apps_rsc {
pm8150-rpmh-regulators {
compatible = "qcom,pm8150-rpmh-regulators";
@@ -410,6 +414,10 @@ vreg_l7f_1p8: ldo7 {
};
};

+&cdsp {
+ status = "okay";
+};
+
&i2c1 {
status = "okay";
clock-frequency = <400000>;
@@ -516,6 +524,10 @@ &sdhc_2 {
no-emmc;
};

+&slpi {
+ status = "okay";
+};
+
&tlmm {
gpio-reserved-ranges = <40 4>, <52 4>;

--
2.32.0

2021-06-16 01:03:02

by Konrad Dybcio

[permalink] [raw]
Subject: [PATCH 6/6] arm64: dts: qcom: sm8250-edo: Add Samsung touchscreen

Add Samsung touchscreen node and relevant pin configuration to make the phones
actually interactable with.

Signed-off-by: Konrad Dybcio <[email protected]>
---
.../boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 21 ++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
index f0b595cfea51..f62ff3ce974d 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
@@ -462,7 +462,18 @@ &i2c13 {
status = "okay";
clock-frequency = <400000>;

- /* Samsung touchscreen @ 48 */
+ touchscreen@48 {
+ compatible = "samsung,s6sy761";
+ reg = <0x48>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <39 0x2008>;
+ /* It's "vddio" downstream but it works anyway! */
+ vdd-supply = <&vreg_l1c_1p8>;
+ avdd-supply = <&vreg_l10c_3p3>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&ts_int_default>;
+ };
};

&i2c15 {
@@ -563,6 +574,14 @@ data {
};
};

+ ts_int_default: ts-int-default {
+ pins = "gpio39";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disabled;
+ input-enable;
+ };
+
sdc2_card_det_n: sd-card-det-n {
pins = "gpio77";
function = "gpio";
--
2.32.0

2021-06-16 01:03:23

by Konrad Dybcio

[permalink] [raw]
Subject: [PATCH 5/6] arm64: dts: qcom: sm8250-edo: Enable GPI DMA

Enable GPI DMA for Edo devices.

Signed-off-by: Konrad Dybcio <[email protected]>
---
arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
index 82ae246694ad..f0b595cfea51 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
@@ -418,6 +418,18 @@ &cdsp {
status = "okay";
};

+&gpi_dma0 {
+ status = "okay";
+};
+
+&gpi_dma1 {
+ status = "okay";
+};
+
+&gpi_dma2 {
+ status = "okay";
+};
+
&i2c1 {
status = "okay";
clock-frequency = <400000>;
--
2.32.0

2021-06-16 02:43:36

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH 2/6] arm64: dts: qcom: sm8250: Commonize PCIe pins

On Tue 15 Jun 19:58 CDT 2021, Konrad Dybcio wrote:
[..]
> diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
[..]
> @@ -3490,6 +3508,89 @@ data {
> bias-pull-up;
> };
> };
> +
> + pcie0_default_state: pcie0-default {

I thought I answered the other way around (that it should be in the
board file), that said I don't think these are moving much, so I'm not
against keeping them here.

> + pcie0_perst_default: perst {
> + pins = "gpio79";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + clkreq {
> + pins = "gpio80";
> + function = "pci_e0";
> + drive-strength = <2>;
> + bias-pull-up;
> + };
> +
> + wake {
> + pins = "gpio81";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-up;
> + };
> + };
[..]
> +
> + mdm2ap_default: mdm2ap-default {

These however are presumably only present on devices with SDX55, so
please move these two to your board file.

Thanks,
Bjorn

2021-06-16 02:45:44

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH 4/6] arm64: dts: qcom: sm8250-edo: Enable ADSP/CDSP/SLPI

On Tue 15 Jun 19:58 CDT 2021, Konrad Dybcio wrote:

> Enabling the hardware thankfully comes down to a simple status = "okay".
> We assume that the firmware is provided by the Linux distribution, as it's
> signed and needs to come from the stock Android.
>

Are you okay with the default firmware paths? Or perhaps would it be
better to shove them into qcom/sm8250/sony/<some-identifier>/* to avoid
moving them later?

Regards,
Bjorn

> Signed-off-by: Konrad Dybcio <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
> index 0d7e3dbb12b1..82ae246694ad 100644
> --- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
> @@ -118,6 +118,10 @@ ramoops@ffc00000 {
> };
> };
>
> +&adsp {
> + status = "okay";
> +};
> +
> &apps_rsc {
> pm8150-rpmh-regulators {
> compatible = "qcom,pm8150-rpmh-regulators";
> @@ -410,6 +414,10 @@ vreg_l7f_1p8: ldo7 {
> };
> };
>
> +&cdsp {
> + status = "okay";
> +};
> +
> &i2c1 {
> status = "okay";
> clock-frequency = <400000>;
> @@ -516,6 +524,10 @@ &sdhc_2 {
> no-emmc;
> };
>
> +&slpi {
> + status = "okay";
> +};
> +
> &tlmm {
> gpio-reserved-ranges = <40 4>, <52 4>;
>
> --
> 2.32.0
>

2021-06-16 18:12:56

by Konrad Dybcio

[permalink] [raw]
Subject: Re: [PATCH 4/6] arm64: dts: qcom: sm8250-edo: Enable ADSP/CDSP/SLPI


> Are you okay with the default firmware paths? Or perhaps would it be
> better to shove them into qcom/sm8250/sony/<some-identifier>/* to avoid
> moving them later?

Since we have to either symlink or copy the binaries from the device Linux

is running on to stay clear wrt proprietary blobs licensing, the default

path is fine, as there won't be any other firmware there. If it turns out we

have a better way of managing this, one can always send a patch changing

it.


Konrad