~postmarketos/upstreaming

RESEND: ARM: dts: qcom: msm8974: klte: Enable some hardware v1 PROPOSED

Iskren Chernev
Enable support for various hw found on the Samsung Galaxy S5:
- touchkey (the two buttons around the home button)
- touchscreen
- notification led
- wifi
- external SD card

Please note that for working wifi the correct firmware is needed. Check [1]
for links and locations.

Also note, that to actually run a mainline kernel on the klte, you'd need
to apply this patch [2]. Any feedback on getting this to run on pure
mainline are welcome.

Original patch series submission: [3]

[1] https://gitlab.com/postmarketOS/pmaports/-/blob/master/firmware/firmware-samsung-klte/APKBUILD
[2] https://gitlab.com/postmarketOS/linux-postmarketos/-/commit/765f55b248cd3b231af8431fe2f2aeca263b4e4b
[3] https://lkml.org/lkml/2020/6/30/643

Iskren Chernev (7):
  ARM: dts: qcom: msm8974-klte: Merge pinctrl nodes
  ARM: dts: qcom: msm8974-klte: Add support for touchkey
  ARM: dts: qcom: msm8974-klte: Add support for touchscreen
  ARM: dts: qcom: msm8974-klte: Add support for led
  ARM: dts: qcom: msm8974-klte: Add gpio expander chip
  ARM: dts: qcom: msm8974-klte: Add support for wifi
  ARM: dts: qcom: msm8974-klte: Add support for SD card

 .../boot/dts/qcom-msm8974-samsung-klte.dts    | 301 +++++++++++++++++-
 1 file changed, 292 insertions(+), 9 deletions(-)


base-commit: b652d2a5f2a4e93d803cc33eb57fdc41ee528500
--
2.28.0
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~postmarketos/upstreaming/patches/13982/mbox | git am -3
Learn more about email & git
View this thread in the archives

[PATCH RESEND 1/7] ARM: dts: qcom: msm8974-klte: Merge pinctrl nodes Export this patch

Iskren Chernev
commit cd13c72c1853f219e1f ("ARM: dts: qcom: msm8974-klte: Add max77826
pmic node") and commit 8bf7a360a92cc6b2aebc8 ("ARM: dts: qcom:
msm8974-klte: Add sdhci1 node") both added pinctrl node. This patch merges
the two nodes.

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 .../boot/dts/qcom-msm8974-samsung-klte.dts    | 22 +++++++++----------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
index d4dc98214225a..9520c6e7910ce 100644
--- a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
@@ -258,6 +258,16 @@ cmd-data {
				bias-pull-up;
			};
		};

		i2c6_pins: i2c6 {
			mux {
				pins = "gpio29", "gpio30";
				function = "blsp_i2c6";

				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	sdhci@f9824900 {
@@ -298,18 +308,6 @@ phy@a {
		};
	};

	pinctrl@fd510000 {
		i2c6_pins: i2c6 {
			mux {
				pins = "gpio29", "gpio30";
				function = "blsp_i2c6";

				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	i2c@f9928000 {
		status = "okay";

-- 
2.28.0

[PATCH RESEND 2/7] ARM: dts: qcom: msm8974-klte: Add support for touchkey Export this patch

Iskren Chernev
Add support for the touchkey found on the Samsung Galaxy S5. The
touchkey is responsible for handling the application and back buttons
found around the home button.

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 .../boot/dts/qcom-msm8974-samsung-klte.dts    | 44 ++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
index 9520c6e7910ce..750e2f261139a 100644
--- a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
@@ -145,7 +145,7 @@ pma8084_l18: l18 {
					};

					pma8084_l19: l19 {
						regulator-min-microvolt = <2900000>;
						regulator-min-microvolt = <3300000>;
						regulator-max-microvolt = <3300000>;
					};

@@ -203,6 +203,31 @@ pma8084_l27: l27 {
		};
	};

	i2c-gpio-touchkey {
		compatible = "i2c-gpio";
		#address-cells = <1>;
		#size-cells = <0>;
		sda-gpios = <&msmgpio 95 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		scl-gpios = <&msmgpio 96 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2c_touchkey_pins>;

		touchkey@20 {
			compatible = "cypress,tm2-touchkey";
			reg = <0x20>;

			interrupt-parent = <&pma8084_gpios>;
			interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
			pinctrl-names = "default";
			pinctrl-0 = <&touchkey_pin>;

			vcc-supply = <&max77826_ldo15>;
			vdd-supply = <&pma8084_l19>;

			linux,keycodes = <KEY_APPSELECT KEY_BACK>;
		};
	};

	/delete-node/ vreg-boost;
};

@@ -268,6 +293,15 @@ mux {
				bias-disable;
			};
		};

		i2c_touchkey_pins: i2c-touchkey {
			mux {
				pins = "gpio95", "gpio96";
				function = "gpio";
				input-enable;
				bias-pull-up;
			};
		};
	};

	sdhci@f9824900 {
@@ -418,6 +452,14 @@ gpio_keys_pin_a: gpio-keys-active {
				bias-pull-up;
				power-source = <PMA8084_GPIO_S4>;
			};

			touchkey_pin: touchkey-int-pin {
				pins = "gpio6";
				function = "normal";
				bias-disable;
				input-enable;
				power-source = <PMA8084_GPIO_S4>;
			};
		};
	};
};
-- 
2.28.0

[PATCH RESEND 3/7] ARM: dts: qcom: msm8974-klte: Add support for touchscreen Export this patch

Iskren Chernev
Add support for the touchscreen found on the Samsung Galaxy S5.

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 .../boot/dts/qcom-msm8974-samsung-klte.dts    | 54 +++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
index 750e2f261139a..085636f182d01 100644
--- a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
@@ -284,6 +284,16 @@ cmd-data {
			};
		};

		i2c2_pins: i2c2 {
			mux {
				pins = "gpio6", "gpio7";
				function = "blsp_i2c2";

				drive-strength = <2>;
				bias-disable;
			};
		};

		i2c6_pins: i2c6 {
			mux {
				pins = "gpio29", "gpio30";
@@ -342,6 +352,42 @@ phy@a {
		};
	};

	i2c@f9924000 {
		status = "okay";

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

		touchscreen@20 {
			compatible = "syna,rmi4-i2c";
			reg = <0x20>;

			interrupt-parent = <&pma8084_gpios>;
			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;

			vdd-supply = <&max77826_ldo13>;
			vio-supply = <&pma8084_lvs2>;

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

			syna,startup-delay-ms = <100>;

			#address-cells = <1>;
			#size-cells = <0>;

			rmi4-f01@1 {
				reg = <0x1>;
				syna,nosleep-mode = <1>;
			};

			rmi4-f12@12 {
				reg = <0x12>;
				syna,sensor-type = <1>;
			};
		};
	};

	i2c@f9928000 {
		status = "okay";

@@ -460,6 +506,14 @@ touchkey_pin: touchkey-int-pin {
				input-enable;
				power-source = <PMA8084_GPIO_S4>;
			};

			touch_pin: touchscreen-int-pin {
				pins = "gpio8";
				function = "normal";
				bias-disable;
				input-enable;
				power-source = <PMA8084_GPIO_S4>;
			};
		};
	};
};
-- 
2.28.0

[PATCH RESEND 4/7] ARM: dts: qcom: msm8974-klte: Add support for led Export this patch

Iskren Chernev
The klte uses a Panasonic AN30259A LED controller for it's indicator
led.

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 .../boot/dts/qcom-msm8974-samsung-klte.dts    | 48 +++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
index 085636f182d01..7b398da9b75ed 100644
--- a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
@@ -4,6 +4,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/leds/common.h>

/ {
	model = "Samsung Galaxy S5";
@@ -228,6 +229,44 @@ touchkey@20 {
		};
	};

	i2c-gpio-led {
		compatible = "i2c-gpio";
		#address-cells = <1>;
		#size-cells = <0>;
		scl-gpios = <&msmgpio 121 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		sda-gpios = <&msmgpio 120 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2c_led_pins>;

		i2c-gpio,delay-us = <2>;

		led-controller@30 {
			compatible = "panasonic,an30259a";
			reg = <0x30>;

			#address-cells = <1>;
			#size-cells = <0>;

			led@1 {
				reg = <1>;
				function = LED_FUNCTION_STATUS;
				color = <LED_COLOR_ID_RED>;
			};

			led@2 {
				reg = <2>;
				function = LED_FUNCTION_STATUS;
				color = <LED_COLOR_ID_GREEN>;
			};

			led@3 {
				reg = <3>;
				function = LED_FUNCTION_STATUS;
				color = <LED_COLOR_ID_BLUE>;
			};
		};
	};

	/delete-node/ vreg-boost;
};

@@ -312,6 +351,15 @@ mux {
				bias-pull-up;
			};
		};

		i2c_led_pins: i2c-led {
			mux {
				pins = "gpio120", "gpio121";
				function = "gpio";
				input-enable;
				bias-pull-down;
			};
		};
	};

	sdhci@f9824900 {
-- 
2.28.0

[PATCH RESEND 5/7] ARM: dts: qcom: msm8974-klte: Add gpio expander chip Export this patch

Iskren Chernev
The Samsung Galaxy S5 has a GPIO Expander chip, the PCAL6416A with 16
ports on a i2c bus. These pins are used for WiFi, NFC, IR among other
things.

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 .../boot/dts/qcom-msm8974-samsung-klte.dts    | 29 +++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
index 7b398da9b75ed..29099b83b231d 100644
--- a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
@@ -236,10 +236,25 @@ i2c-gpio-led {
		scl-gpios = <&msmgpio 121 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		sda-gpios = <&msmgpio 120 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
		pinctrl-names = "default";
		pinctrl-0 = <&i2c_led_pins>;
		pinctrl-0 = <&i2c_led_gpioex_pins>;

		i2c-gpio,delay-us = <2>;

		gpio_expander: gpio@20 {
			compatible = "nxp,pcal6416";
			reg = <0x20>;

			gpio-controller;
			#gpio-cells = <2>;

			vcc-supply = <&pma8084_s4>;

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

			reset-gpios = <&msmgpio 145 GPIO_ACTIVE_LOW>;
		};

		led-controller@30 {
			compatible = "panasonic,an30259a";
			reg = <0x30>;
@@ -352,7 +367,7 @@ mux {
			};
		};

		i2c_led_pins: i2c-led {
		i2c_led_gpioex_pins: i2c-led-gpioex {
			mux {
				pins = "gpio120", "gpio121";
				function = "gpio";
@@ -360,6 +375,16 @@ mux {
				bias-pull-down;
			};
		};

		gpioex_pin: gpioex {
			res {
				pins = "gpio145";
				function = "gpio";

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

	sdhci@f9824900 {
-- 
2.28.0

[PATCH RESEND 6/7] ARM: dts: qcom: msm8974-klte: Add support for wifi Export this patch

Iskren Chernev
The Samsung Galaxy S5 (klte), uses a Broadcom 4354 Chip connected on the
SDIO bus. The chip also requires a corresponding firmware + txt file[1].

[1] https://gitlab.com/postmarketOS/pmaports/-/blob/master/firmware/firmware-samsung-klte/APKBUILD

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 .../boot/dts/qcom-msm8974-samsung-klte.dts    | 74 +++++++++++++++++++
 1 file changed, 74 insertions(+)

diff --git a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
index 29099b83b231d..989447beb4319 100644
--- a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
@@ -282,6 +282,17 @@ led@3 {
		};
	};

	vreg_wlan: wlan-regulator {
		compatible = "regulator-fixed";

		regulator-name = "wl-reg";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;

		gpio = <&gpio_expander 8 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	/delete-node/ vreg-boost;
};

@@ -338,6 +349,20 @@ cmd-data {
			};
		};

		sdhc3_pin_a: sdhc3-pin-active {
			clk {
				pins = "sdc2_clk";
				drive-strength = <6>;
				bias-disable;
			};

			cmd-data {
				pins = "sdc2_cmd", "sdc2_data";
				drive-strength = <6>;
				bias-pull-up;
			};
		};

		i2c2_pins: i2c2 {
			mux {
				pins = "gpio6", "gpio7";
@@ -385,6 +410,16 @@ res {
				drive-strength = <2>;
			};
		};

		wifi_pin: wifi {
			int {
				pins = "gpio92";
				function = "gpio";

				input-enable;
				bias-pull-down;
			};
		};
	};

	sdhci@f9824900 {
@@ -400,6 +435,36 @@ sdhci@f9824900 {
		pinctrl-0 = <&sdhc1_pin_a>;
	};

	sdhci@f98a4900 {
		status = "okay";

		#address-cells = <1>;
		#size-cells = <0>;

		max-frequency = <100000000>;

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

		vmmc-supply = <&vreg_wlan>;
		vqmmc-supply = <&pma8084_s4>;

		bus-width = <4>;
		non-removable;

		wifi@1 {
			reg = <1>;
			compatible = "brcm,bcm4329-fmac";

			interrupt-parent = <&msmgpio>;
			interrupts = <92 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-names = "host-wake";

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

	usb@f9a55000 {
		status = "ok";

@@ -587,6 +652,15 @@ touch_pin: touchscreen-int-pin {
				input-enable;
				power-source = <PMA8084_GPIO_S4>;
			};

			wlan_sleep_clk_pin: wlan-sleep-clk-pin {
				pins = "gpio16";
				function = "func2";

				output-high;
				power-source = <PMA8084_GPIO_S4>;
				qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
			};
		};
	};
};
-- 
2.28.0

[PATCH RESEND 7/7] ARM: dts: qcom: msm8974-klte: Add support for SD card Export this patch

Iskren Chernev
The Samsung Galaxy S5 (klte), has 3 SDHCI nodes used for internal
storage, WiFi, external SD card slot. The external SD card slot is
similar to the internal storage.

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 .../boot/dts/qcom-msm8974-samsung-klte.dts    | 44 ++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
index 989447beb4319..b0899107f3ced 100644
--- a/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
@@ -12,6 +12,8 @@ / {

	aliases {
		serial0 = &blsp1_uart1;
		sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
		sdhc2 = &sdhc_2; /* SDC2 SD card slot */
	};

	chosen {
@@ -161,6 +163,9 @@ pma8084_l20: l20 {
					pma8084_l21: l21 {
						regulator-min-microvolt = <2950000>;
						regulator-max-microvolt = <2950000>;

						regulator-allow-set-load;
						regulator-system-load = <200000>;
					};

					pma8084_l22: l22 {
@@ -349,6 +354,24 @@ cmd-data {
			};
		};

		sdhc2_pin_a: sdhc2-pin-active {
			clk-cmd-data {
				pins = "gpio35", "gpio36", "gpio37", "gpio38",
					"gpio39", "gpio40";
				function = "sdc3";
				drive-strength = <8>;
				bias-disable;
			};
		};

		sdhc2_cd_pin: sdhc2-cd {
			pins = "gpio62";
			function = "gpio";

			drive-strength = <2>;
			bias-disable;
		};

		sdhc3_pin_a: sdhc3-pin-active {
			clk {
				pins = "sdc2_clk";
@@ -422,7 +445,7 @@ int {
		};
	};

	sdhci@f9824900 {
	sdhc_1: sdhci@f9824900 {
		status = "ok";

		vmmc-supply = <&pma8084_l20>;
@@ -435,6 +458,25 @@ sdhci@f9824900 {
		pinctrl-0 = <&sdhc1_pin_a>;
	};

	sdhc_2: sdhci@f9864900 {
		status = "ok";

		max-frequency = <100000000>;

		vmmc-supply = <&pma8084_l21>;
		vqmmc-supply = <&pma8084_l13>;

		bus-width = <4>;

		/* cd-gpio is intentionally disabled. If enabled, an SD card
		 * present during boot is not initialized correctly. Without
		 * cd-gpios the driver resorts to polling, so hotplug works.
		 */
		pinctrl-names = "default";
		pinctrl-0 = <&sdhc2_pin_a /* &sdhc2_cd_pin */>;
		// cd-gpios = <&msmgpio 62 GPIO_ACTIVE_LOW>;
	};

	sdhci@f98a4900 {
		status = "okay";

-- 
2.28.0