linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 01/13] arm: dts: s5pv210: Add helper define for sleep gpio config
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
@ 2020-04-26 18:35 ` Jonathan Bakker
  2020-04-26 18:35 ` [PATCH 02/13] arm: dts: s5pv210: fascinate4g: Add sleep GPIO configuration Jonathan Bakker
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:35 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

To simplify writing of sleep gpio configs, add a common helper
similar to what is present for other Samsung CPUs.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-pinctrl.dtsi | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-pinctrl.dtsi b/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
index 7f0c9d447871..609f323d0805 100644
--- a/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
+++ b/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
@@ -18,6 +18,13 @@
 
 #include <dt-bindings/pinctrl/samsung.h>
 
+#define PIN_SLP(_pin, _mode, _pull)					\
+	_pin {								\
+		samsung,pins = #_pin;					\
+		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_ ##_mode>;	\
+		samsung,pin-pud-pdn = <S3C64XX_PIN_PULL_ ##_pull>;	\
+	}
+
 &pinctrl0 {
 	gpa0: gpa0 {
 		gpio-controller;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 02/13] arm: dts: s5pv210: fascinate4g: Add sleep GPIO configuration
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
  2020-04-26 18:35 ` [PATCH 01/13] arm: dts: s5pv210: Add helper define for sleep gpio config Jonathan Bakker
@ 2020-04-26 18:35 ` Jonathan Bakker
  2020-04-28 10:02   ` Krzysztof Kozlowski
  2020-04-26 18:35 ` [PATCH 03/13] arm: dts: s5pv210: galaxys: " Jonathan Bakker
                   ` (12 subsequent siblings)
  14 siblings, 1 reply; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:35 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

In order to minimize leakage current during sleep, set a config
for sleep GPIOs.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-fascinate4g.dts | 242 ++++++++++++++++++++++
 1 file changed, 242 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
index 07a8d9bbe5b8..94dcb9b64b9a 100644
--- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
+++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
@@ -36,3 +36,245 @@
 		};
 	};
 };
+
+&pinctrl0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&sleep_cfg>;
+
+	sleep_cfg: sleep-cfg {
+		PIN_SLP(gpa0-0, PREV, NONE);
+		PIN_SLP(gpa0-1, PREV, NONE);
+		PIN_SLP(gpa0-2, PREV, NONE);
+		PIN_SLP(gpa0-3, OUT1, NONE);
+		PIN_SLP(gpa0-4, PREV, NONE);
+		PIN_SLP(gpa0-5, PREV, NONE);
+		PIN_SLP(gpa0-6, PREV, NONE);
+		PIN_SLP(gpa0-7, PREV, NONE);
+
+		PIN_SLP(gpa1-0, INPUT, DOWN);
+		PIN_SLP(gpa1-1, OUT0, NONE);
+		PIN_SLP(gpa1-2, INPUT, DOWN);
+		PIN_SLP(gpa1-3, OUT0, NONE);
+
+		PIN_SLP(gpb-0, OUT0, NONE);
+		PIN_SLP(gpb-1, OUT1, NONE);
+		PIN_SLP(gpb-2, OUT0, NONE);
+		PIN_SLP(gpb-3, PREV, NONE);
+		PIN_SLP(gpb-4, INPUT, NONE);
+		PIN_SLP(gpb-5, PREV, NONE);
+		PIN_SLP(gpb-6, INPUT, DOWN);
+		PIN_SLP(gpb-7, OUT0, NONE);
+
+		PIN_SLP(gpc0-0, OUT0, NONE);
+		PIN_SLP(gpc0-1, INPUT, DOWN);
+		PIN_SLP(gpc0-2, OUT0, NONE);
+		PIN_SLP(gpc0-3, INPUT, DOWN);
+		PIN_SLP(gpc0-4, OUT0, NONE);
+
+		PIN_SLP(gpc1-0, INPUT, DOWN);
+		PIN_SLP(gpc1-1, INPUT, DOWN);
+		PIN_SLP(gpc1-2, INPUT, DOWN);
+		PIN_SLP(gpc1-3, INPUT, DOWN);
+		PIN_SLP(gpc1-4, INPUT, DOWN);
+
+		PIN_SLP(gpd0-0, INPUT, DOWN);
+		PIN_SLP(gpd0-1, OUT0, NONE);
+		PIN_SLP(gpd0-2, INPUT, DOWN);
+		PIN_SLP(gpd0-3, INPUT, DOWN);
+
+		PIN_SLP(gpd1-0, INPUT, NONE);
+		PIN_SLP(gpd1-1, INPUT, NONE);
+		PIN_SLP(gpd1-2, INPUT, DOWN);
+		PIN_SLP(gpd1-3, INPUT, DOWN);
+		PIN_SLP(gpd1-4, INPUT, DOWN);
+		PIN_SLP(gpd1-5, INPUT, DOWN);
+
+		PIN_SLP(gpe0-0, INPUT, DOWN);
+		PIN_SLP(gpe0-1, INPUT, DOWN);
+		PIN_SLP(gpe0-2, INPUT, DOWN);
+		PIN_SLP(gpe0-3, INPUT, DOWN);
+		PIN_SLP(gpe0-4, INPUT, DOWN);
+		PIN_SLP(gpe0-5, INPUT, DOWN);
+		PIN_SLP(gpe0-6, INPUT, DOWN);
+		PIN_SLP(gpe0-7, INPUT, DOWN);
+
+		PIN_SLP(gpe1-0, INPUT, DOWN);
+		PIN_SLP(gpe1-1, INPUT, DOWN);
+		PIN_SLP(gpe1-2, INPUT, DOWN);
+		PIN_SLP(gpe1-3, OUT0, NONE);
+		PIN_SLP(gpe1-4, INPUT, DOWN);
+
+		PIN_SLP(gpf0-0, OUT0, NONE);
+		PIN_SLP(gpf0-1, OUT0, NONE);
+		PIN_SLP(gpf0-2, OUT0, NONE);
+		PIN_SLP(gpf0-3, OUT0, NONE);
+		PIN_SLP(gpf0-4, OUT0, NONE);
+		PIN_SLP(gpf0-5, OUT0, NONE);
+		PIN_SLP(gpf0-6, OUT0, NONE);
+		PIN_SLP(gpf0-7, OUT0, NONE);
+
+		PIN_SLP(gpf1-0, OUT0, NONE);
+		PIN_SLP(gpf1-1, OUT0, NONE);
+		PIN_SLP(gpf1-2, OUT0, NONE);
+		PIN_SLP(gpf1-3, OUT0, NONE);
+		PIN_SLP(gpf1-4, OUT0, NONE);
+		PIN_SLP(gpf1-5, OUT0, NONE);
+		PIN_SLP(gpf1-6, OUT0, NONE);
+		PIN_SLP(gpf1-7, OUT0, NONE);
+
+		PIN_SLP(gpf2-0, OUT0, NONE);
+		PIN_SLP(gpf2-1, OUT0, NONE);
+		PIN_SLP(gpf2-2, OUT0, NONE);
+		PIN_SLP(gpf2-3, OUT0, NONE);
+		PIN_SLP(gpf2-4, OUT0, NONE);
+		PIN_SLP(gpf2-5, OUT0, NONE);
+		PIN_SLP(gpf2-6, OUT0, NONE);
+		PIN_SLP(gpf2-7, OUT0, NONE);
+
+		PIN_SLP(gpf3-0, OUT0, NONE);
+		PIN_SLP(gpf3-1, OUT0, NONE);
+		PIN_SLP(gpf3-2, OUT0, NONE);
+		PIN_SLP(gpf3-3, OUT0, NONE);
+		PIN_SLP(gpf3-4, PREV, NONE);
+		PIN_SLP(gpf3-5, INPUT, DOWN);
+
+		PIN_SLP(gpg0-0, INPUT, DOWN);
+		PIN_SLP(gpg0-1, INPUT, DOWN);
+		PIN_SLP(gpg0-2, INPUT, NONE);
+		PIN_SLP(gpg0-3, INPUT, DOWN);
+		PIN_SLP(gpg0-4, INPUT, DOWN);
+		PIN_SLP(gpg0-5, INPUT, DOWN);
+		PIN_SLP(gpg0-6, INPUT, DOWN);
+
+		PIN_SLP(gpg1-0, OUT0, NONE);
+		PIN_SLP(gpg1-1, OUT1, NONE);
+		PIN_SLP(gpg1-2, PREV, NONE);
+		PIN_SLP(gpg1-3, OUT1, NONE);
+		PIN_SLP(gpg1-4, OUT1, NONE);
+		PIN_SLP(gpg1-5, OUT1, NONE);
+		PIN_SLP(gpg1-6, OUT1, NONE);
+
+		PIN_SLP(gpg2-0, OUT0, NONE);
+		PIN_SLP(gpg2-1, OUT0, NONE);
+		PIN_SLP(gpg2-2, INPUT, NONE);
+		PIN_SLP(gpg2-3, OUT0, NONE);
+		PIN_SLP(gpg2-4, OUT0, NONE);
+		PIN_SLP(gpg2-5, OUT0, NONE);
+		PIN_SLP(gpg2-6, OUT0, NONE);
+
+		PIN_SLP(gpg3-0, PREV, UP);
+		PIN_SLP(gpg3-1, PREV, UP);
+		PIN_SLP(gpg3-2, INPUT, NONE);
+		PIN_SLP(gpg3-3, INPUT, DOWN);
+		PIN_SLP(gpg3-4, OUT0, NONE);
+		PIN_SLP(gpg3-5, OUT0, NONE);
+		PIN_SLP(gpg3-6, INPUT, DOWN);
+
+		PIN_SLP(gpi-0, PREV, NONE);
+		PIN_SLP(gpi-1, INPUT, DOWN);
+		PIN_SLP(gpi-2, PREV, NONE);
+		PIN_SLP(gpi-3, PREV, NONE);
+		PIN_SLP(gpi-4, PREV, NONE);
+		PIN_SLP(gpi-5, INPUT, DOWN);
+		PIN_SLP(gpi-6, INPUT, DOWN);
+
+		PIN_SLP(gpj0-0, INPUT, NONE);
+		PIN_SLP(gpj0-1, INPUT, NONE);
+		PIN_SLP(gpj0-2, INPUT, NONE);
+		PIN_SLP(gpj0-3, INPUT, NONE);
+		PIN_SLP(gpj0-4, INPUT, NONE);
+		PIN_SLP(gpj0-5, INPUT, DOWN);
+		PIN_SLP(gpj0-6, OUT0, NONE);
+		PIN_SLP(gpj0-7, INPUT, NONE);
+
+		PIN_SLP(gpj1-0, OUT1, NONE);
+		PIN_SLP(gpj1-1, OUT0, NONE);
+		PIN_SLP(gpj1-2, INPUT, DOWN);
+		PIN_SLP(gpj1-3, PREV, NONE);
+		PIN_SLP(gpj1-4, PREV, NONE);
+		PIN_SLP(gpj1-5, OUT0, NONE);
+
+		PIN_SLP(gpj2-0, INPUT, DOWN);
+		PIN_SLP(gpj2-1, INPUT, DOWN);
+		PIN_SLP(gpj2-2, OUT0, NONE);
+		PIN_SLP(gpj2-3, INPUT, DOWN);
+		PIN_SLP(gpj2-4, INPUT, DOWN);
+		PIN_SLP(gpj2-5, PREV, NONE);
+		PIN_SLP(gpj2-6, PREV, NONE);
+		PIN_SLP(gpj2-7, INPUT, DOWN);
+
+		PIN_SLP(gpj3-0, INPUT, NONE);
+		PIN_SLP(gpj3-1, INPUT, NONE);
+		PIN_SLP(gpj3-2, OUT0, NONE);
+		PIN_SLP(gpj3-3, INPUT, DOWN);
+		PIN_SLP(gpj3-4, INPUT, NONE);
+		PIN_SLP(gpj3-5, INPUT, NONE);
+		PIN_SLP(gpj3-6, INPUT, NONE);
+		PIN_SLP(gpj3-7, INPUT, NONE);
+
+		PIN_SLP(gpj4-0, INPUT, NONE);
+		PIN_SLP(gpj4-1, INPUT, DOWN);
+		PIN_SLP(gpj4-2, PREV, NONE);
+		PIN_SLP(gpj4-3, INPUT, NONE);
+		PIN_SLP(gpj4-4, INPUT, DOWN);
+
+		PIN_SLP(mp01-0, OUT1, NONE);
+		PIN_SLP(mp01-1, OUT0, NONE);
+		PIN_SLP(mp01-2, INPUT, DOWN);
+		PIN_SLP(mp01-3, INPUT, DOWN);
+		PIN_SLP(mp01-4, OUT1, NONE);
+		PIN_SLP(mp01-5, INPUT, DOWN);
+		PIN_SLP(mp01-6, INPUT, DOWN);
+		PIN_SLP(mp01-7, INPUT, DOWN);
+
+		PIN_SLP(mp02-0, INPUT, DOWN);
+		PIN_SLP(mp02-1, INPUT, DOWN);
+		PIN_SLP(mp02-2, INPUT, NONE);
+		PIN_SLP(mp02-3, INPUT, DOWN);
+
+		PIN_SLP(mp03-0, INPUT, DOWN);
+		PIN_SLP(mp03-1, INPUT, DOWN);
+		PIN_SLP(mp03-2, OUT1, NONE);
+		PIN_SLP(mp03-3, OUT0, NONE);
+		PIN_SLP(mp03-4, INPUT, NONE);
+		PIN_SLP(mp03-5, OUT0, NONE);
+		PIN_SLP(mp03-6, INPUT, DOWN);
+		PIN_SLP(mp03-7, INPUT, DOWN);
+
+		PIN_SLP(mp04-0, INPUT, DOWN);
+		PIN_SLP(mp04-1, OUT0, NONE);
+		PIN_SLP(mp04-2, INPUT, DOWN);
+		PIN_SLP(mp04-3, OUT0, NONE);
+		PIN_SLP(mp04-4, INPUT, DOWN);
+		PIN_SLP(mp04-5, INPUT, DOWN);
+		PIN_SLP(mp04-6, OUT0, NONE);
+		PIN_SLP(mp04-7, INPUT, DOWN);
+
+		PIN_SLP(mp05-0, INPUT, NONE);
+		PIN_SLP(mp05-1, INPUT, NONE);
+		PIN_SLP(mp05-2, INPUT, NONE);
+		PIN_SLP(mp05-3, INPUT, NONE);
+		PIN_SLP(mp05-4, INPUT, DOWN);
+		PIN_SLP(mp05-5, OUT0, NONE);
+		PIN_SLP(mp05-6, INPUT, DOWN);
+		PIN_SLP(mp05-7, PREV, NONE);
+
+		PIN_SLP(mp06-0, INPUT, DOWN);
+		PIN_SLP(mp06-1, INPUT, DOWN);
+		PIN_SLP(mp06-2, INPUT, DOWN);
+		PIN_SLP(mp06-3, INPUT, DOWN);
+		PIN_SLP(mp06-4, INPUT, DOWN);
+		PIN_SLP(mp06-5, INPUT, DOWN);
+		PIN_SLP(mp06-6, INPUT, DOWN);
+		PIN_SLP(mp06-7, INPUT, DOWN);
+
+		PIN_SLP(mp07-0, INPUT, DOWN);
+		PIN_SLP(mp07-1, INPUT, DOWN);
+		PIN_SLP(mp07-2, INPUT, DOWN);
+		PIN_SLP(mp07-3, INPUT, DOWN);
+		PIN_SLP(mp07-4, INPUT, DOWN);
+		PIN_SLP(mp07-5, INPUT, DOWN);
+		PIN_SLP(mp07-6, INPUT, DOWN);
+		PIN_SLP(mp07-7, INPUT, DOWN);
+	};
+};
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 03/13] arm: dts: s5pv210: galaxys: Add sleep GPIO configuration
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
  2020-04-26 18:35 ` [PATCH 01/13] arm: dts: s5pv210: Add helper define for sleep gpio config Jonathan Bakker
  2020-04-26 18:35 ` [PATCH 02/13] arm: dts: s5pv210: fascinate4g: Add sleep GPIO configuration Jonathan Bakker
@ 2020-04-26 18:35 ` Jonathan Bakker
  2020-04-26 18:35 ` [PATCH 04/13] arm: dts: s5pv210: aries: Set keep-power-in-suspend for SDHCI1 Jonathan Bakker
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:35 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

In order to minimize leakage current during sleep, set a config
for sleep GPIOs.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-galaxys.dts | 240 ++++++++++++++++++++++++++
 1 file changed, 240 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-galaxys.dts b/arch/arm/boot/dts/s5pv210-galaxys.dts
index cf161bbfbacf..2eff1e66a2a5 100644
--- a/arch/arm/boot/dts/s5pv210-galaxys.dts
+++ b/arch/arm/boot/dts/s5pv210-galaxys.dts
@@ -52,12 +52,252 @@
 };
 
 &pinctrl0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&sleep_cfg>;
+
 	massmemory_en: massmemory-en {
 		samsung,pins = "gpj2-7";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
+
+	sleep_cfg: sleep-cfg {
+		PIN_SLP(gpa0-0, PREV, NONE);
+		PIN_SLP(gpa0-1, PREV, NONE);
+		PIN_SLP(gpa0-2, PREV, NONE);
+		PIN_SLP(gpa0-3, OUT1, NONE);
+		PIN_SLP(gpa0-4, INPUT, DOWN);
+		PIN_SLP(gpa0-5, OUT0, NONE);
+		PIN_SLP(gpa0-6, INPUT, DOWN);
+		PIN_SLP(gpa0-7, OUT1, NONE);
+
+		PIN_SLP(gpa1-0, INPUT, DOWN);
+		PIN_SLP(gpa1-1, OUT0, NONE);
+		PIN_SLP(gpa1-2, INPUT, NONE);
+		PIN_SLP(gpa1-3, OUT0, NONE);
+
+		PIN_SLP(gpb-0, OUT0, NONE);
+		PIN_SLP(gpb-1, OUT1, NONE);
+		PIN_SLP(gpb-2, OUT0, NONE);
+		PIN_SLP(gpb-3, PREV, NONE);
+		PIN_SLP(gpb-4, INPUT, NONE);
+		PIN_SLP(gpb-5, PREV, NONE);
+		PIN_SLP(gpb-6, INPUT, DOWN);
+		PIN_SLP(gpb-7, OUT0, NONE);
+
+		PIN_SLP(gpc0-0, OUT0, NONE);
+		PIN_SLP(gpc0-1, INPUT, DOWN);
+		PIN_SLP(gpc0-2, OUT0, NONE);
+		PIN_SLP(gpc0-3, INPUT, NONE);
+		PIN_SLP(gpc0-4, OUT0, NONE);
+
+		PIN_SLP(gpc1-0, INPUT, DOWN);
+		PIN_SLP(gpc1-1, INPUT, DOWN);
+		PIN_SLP(gpc1-2, INPUT, DOWN);
+		PIN_SLP(gpc1-3, INPUT, DOWN);
+		PIN_SLP(gpc1-4, INPUT, DOWN);
+
+		PIN_SLP(gpd0-0, INPUT, DOWN);
+		PIN_SLP(gpd0-1, OUT0, NONE);
+		PIN_SLP(gpd0-2, INPUT, DOWN);
+		PIN_SLP(gpd0-3, INPUT, DOWN);
+
+		PIN_SLP(gpd1-0, INPUT, NONE);
+		PIN_SLP(gpd1-1, INPUT, NONE);
+		PIN_SLP(gpd1-2, INPUT, NONE);
+		PIN_SLP(gpd1-3, INPUT, NONE);
+		PIN_SLP(gpd1-4, INPUT, DOWN);
+		PIN_SLP(gpd1-5, INPUT, DOWN);
+
+		PIN_SLP(gpe0-0, INPUT, DOWN);
+		PIN_SLP(gpe0-1, INPUT, DOWN);
+		PIN_SLP(gpe0-2, INPUT, DOWN);
+		PIN_SLP(gpe0-3, INPUT, DOWN);
+		PIN_SLP(gpe0-4, INPUT, DOWN);
+		PIN_SLP(gpe0-5, INPUT, DOWN);
+		PIN_SLP(gpe0-6, INPUT, DOWN);
+		PIN_SLP(gpe0-7, INPUT, DOWN);
+
+		PIN_SLP(gpe1-0, INPUT, DOWN);
+		PIN_SLP(gpe1-1, INPUT, DOWN);
+		PIN_SLP(gpe1-2, INPUT, DOWN);
+		PIN_SLP(gpe1-3, OUT0, NONE);
+		PIN_SLP(gpe1-4, INPUT, DOWN);
+
+		PIN_SLP(gpf0-0, OUT0, NONE);
+		PIN_SLP(gpf0-1, OUT0, NONE);
+		PIN_SLP(gpf0-2, OUT0, NONE);
+		PIN_SLP(gpf0-3, OUT0, NONE);
+		PIN_SLP(gpf0-4, OUT0, NONE);
+		PIN_SLP(gpf0-5, OUT0, NONE);
+		PIN_SLP(gpf0-6, OUT0, NONE);
+		PIN_SLP(gpf0-7, OUT0, NONE);
+
+		PIN_SLP(gpf1-0, OUT0, NONE);
+		PIN_SLP(gpf1-1, OUT0, NONE);
+		PIN_SLP(gpf1-2, OUT0, NONE);
+		PIN_SLP(gpf1-3, OUT0, NONE);
+		PIN_SLP(gpf1-4, OUT0, NONE);
+		PIN_SLP(gpf1-5, OUT0, NONE);
+		PIN_SLP(gpf1-6, OUT0, NONE);
+		PIN_SLP(gpf1-7, OUT0, NONE);
+
+		PIN_SLP(gpf2-0, OUT0, NONE);
+		PIN_SLP(gpf2-1, OUT0, NONE);
+		PIN_SLP(gpf2-2, OUT0, NONE);
+		PIN_SLP(gpf2-3, OUT0, NONE);
+		PIN_SLP(gpf2-4, OUT0, NONE);
+		PIN_SLP(gpf2-5, OUT0, NONE);
+		PIN_SLP(gpf2-6, OUT0, NONE);
+		PIN_SLP(gpf2-7, OUT0, NONE);
+
+		PIN_SLP(gpf3-0, OUT0, NONE);
+		PIN_SLP(gpf3-1, OUT0, NONE);
+		PIN_SLP(gpf3-2, OUT0, NONE);
+		PIN_SLP(gpf3-3, OUT0, NONE);
+		PIN_SLP(gpf3-4, PREV, NONE);
+		PIN_SLP(gpf3-5, INPUT, DOWN);
+
+		PIN_SLP(gpg0-0, OUT0, NONE);
+		PIN_SLP(gpg0-1, INPUT, NONE);
+		PIN_SLP(gpg0-2, INPUT, NONE);
+		PIN_SLP(gpg0-3, INPUT, NONE);
+		PIN_SLP(gpg0-4, INPUT, NONE);
+		PIN_SLP(gpg0-5, INPUT, NONE);
+		PIN_SLP(gpg0-6, INPUT, NONE);
+
+		PIN_SLP(gpg1-0, OUT0, NONE);
+		PIN_SLP(gpg1-1, OUT1, NONE);
+		PIN_SLP(gpg1-2, PREV, NONE);
+		PIN_SLP(gpg1-3, OUT1, NONE);
+		PIN_SLP(gpg1-4, OUT1, NONE);
+		PIN_SLP(gpg1-5, OUT1, NONE);
+		PIN_SLP(gpg1-6, OUT1, NONE);
+
+		PIN_SLP(gpg2-0, OUT0, NONE);
+		PIN_SLP(gpg2-1, OUT0, NONE);
+		PIN_SLP(gpg2-2, INPUT, NONE);
+		PIN_SLP(gpg2-3, OUT0, NONE);
+		PIN_SLP(gpg2-4, OUT0, NONE);
+		PIN_SLP(gpg2-5, OUT0, NONE);
+		PIN_SLP(gpg2-6, OUT0, NONE);
+
+		PIN_SLP(gpg3-0, OUT1, NONE);
+		PIN_SLP(gpg3-1, OUT0, NONE);
+		PIN_SLP(gpg3-2, INPUT, NONE);
+		PIN_SLP(gpg3-3, INPUT, DOWN);
+		PIN_SLP(gpg3-4, OUT0, NONE);
+		PIN_SLP(gpg3-5, OUT0, NONE);
+		PIN_SLP(gpg3-6, INPUT, DOWN);
+
+		PIN_SLP(gpi-0, PREV, NONE);
+		PIN_SLP(gpi-1, INPUT, DOWN);
+		PIN_SLP(gpi-2, PREV, NONE);
+		PIN_SLP(gpi-3, PREV, NONE);
+		PIN_SLP(gpi-4, PREV, NONE);
+		PIN_SLP(gpi-5, INPUT, DOWN);
+		PIN_SLP(gpi-6, INPUT, DOWN);
+
+		PIN_SLP(gpj0-0, INPUT, NONE);
+		PIN_SLP(gpj0-1, INPUT, NONE);
+		PIN_SLP(gpj0-2, INPUT, NONE);
+		PIN_SLP(gpj0-3, INPUT, NONE);
+		PIN_SLP(gpj0-4, INPUT, NONE);
+		PIN_SLP(gpj0-5, INPUT, DOWN);
+		PIN_SLP(gpj0-6, OUT0, NONE);
+		PIN_SLP(gpj0-7, INPUT, NONE);
+
+		PIN_SLP(gpj1-0, INPUT, DOWN);
+		PIN_SLP(gpj1-1, OUT0, NONE);
+		PIN_SLP(gpj1-2, INPUT, DOWN);
+		PIN_SLP(gpj1-3, PREV, NONE);
+		PIN_SLP(gpj1-4, PREV, NONE);
+		PIN_SLP(gpj1-5, OUT0, NONE);
+
+		PIN_SLP(gpj2-0, INPUT, DOWN);
+		PIN_SLP(gpj2-1, INPUT, DOWN);
+		PIN_SLP(gpj2-2, OUT0, NONE);
+		PIN_SLP(gpj2-3, INPUT, DOWN);
+		PIN_SLP(gpj2-4, INPUT, UP);
+		PIN_SLP(gpj2-5, PREV, NONE);
+		PIN_SLP(gpj2-6, PREV, NONE);
+		PIN_SLP(gpj2-7, OUT1, NONE);
+
+		PIN_SLP(gpj3-0, INPUT, NONE);
+		PIN_SLP(gpj3-1, INPUT, NONE);
+		PIN_SLP(gpj3-2, OUT0, NONE);
+		PIN_SLP(gpj3-3, INPUT, DOWN);
+		PIN_SLP(gpj3-4, INPUT, NONE);
+		PIN_SLP(gpj3-5, INPUT, NONE);
+		PIN_SLP(gpj3-6, INPUT, NONE);
+		PIN_SLP(gpj3-7, INPUT, NONE);
+
+		PIN_SLP(gpj4-0, INPUT, NONE);
+		PIN_SLP(gpj4-1, INPUT, DOWN);
+		PIN_SLP(gpj4-2, PREV, NONE);
+		PIN_SLP(gpj4-3, INPUT, NONE);
+		PIN_SLP(gpj4-4, INPUT, DOWN);
+
+		PIN_SLP(mp01-0, INPUT, DOWN);
+		PIN_SLP(mp01-1, OUT0, NONE);
+		PIN_SLP(mp01-2, INPUT, DOWN);
+		PIN_SLP(mp01-3, INPUT, DOWN);
+		PIN_SLP(mp01-4, OUT1, NONE);
+		PIN_SLP(mp01-5, INPUT, DOWN);
+		PIN_SLP(mp01-6, INPUT, DOWN);
+		PIN_SLP(mp01-7, INPUT, DOWN);
+
+		PIN_SLP(mp02-0, INPUT, DOWN);
+		PIN_SLP(mp02-1, INPUT, DOWN);
+		PIN_SLP(mp02-2, INPUT, NONE);
+		PIN_SLP(mp02-3, INPUT, DOWN);
+
+		PIN_SLP(mp03-0, INPUT, DOWN);
+		PIN_SLP(mp03-1, INPUT, DOWN);
+		PIN_SLP(mp03-2, OUT1, NONE);
+		PIN_SLP(mp03-3, OUT0, NONE);
+		PIN_SLP(mp03-4, INPUT, NONE);
+		PIN_SLP(mp03-5, OUT1, NONE);
+		PIN_SLP(mp03-6, INPUT, DOWN);
+		PIN_SLP(mp03-7, INPUT, DOWN);
+
+		PIN_SLP(mp04-0, INPUT, DOWN);
+		PIN_SLP(mp04-1, OUT0, NONE);
+		PIN_SLP(mp04-2, INPUT, DOWN);
+		PIN_SLP(mp04-3, OUT0, NONE);
+		PIN_SLP(mp04-4, INPUT, DOWN);
+		PIN_SLP(mp04-5, INPUT, DOWN);
+		PIN_SLP(mp04-6, OUT0, NONE);
+		PIN_SLP(mp04-7, INPUT, DOWN);
+
+		PIN_SLP(mp05-0, INPUT, NONE);
+		PIN_SLP(mp05-1, INPUT, NONE);
+		PIN_SLP(mp05-2, INPUT, NONE);
+		PIN_SLP(mp05-3, INPUT, NONE);
+		PIN_SLP(mp05-4, INPUT, DOWN);
+		PIN_SLP(mp05-5, OUT0, NONE);
+		PIN_SLP(mp05-6, INPUT, DOWN);
+		PIN_SLP(mp05-7, PREV, NONE);
+
+		PIN_SLP(mp06-0, INPUT, DOWN);
+		PIN_SLP(mp06-1, INPUT, DOWN);
+		PIN_SLP(mp06-2, INPUT, DOWN);
+		PIN_SLP(mp06-3, INPUT, DOWN);
+		PIN_SLP(mp06-4, INPUT, DOWN);
+		PIN_SLP(mp06-5, INPUT, DOWN);
+		PIN_SLP(mp06-6, INPUT, DOWN);
+		PIN_SLP(mp06-7, INPUT, DOWN);
+
+		PIN_SLP(mp07-0, INPUT, DOWN);
+		PIN_SLP(mp07-1, INPUT, DOWN);
+		PIN_SLP(mp07-2, INPUT, DOWN);
+		PIN_SLP(mp07-3, INPUT, DOWN);
+		PIN_SLP(mp07-4, INPUT, DOWN);
+		PIN_SLP(mp07-5, INPUT, DOWN);
+		PIN_SLP(mp07-6, INPUT, DOWN);
+		PIN_SLP(mp07-7, INPUT, DOWN);
+	};
 };
 
 &sdhci0 {
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 04/13] arm: dts: s5pv210: aries: Set keep-power-in-suspend for SDHCI1
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (2 preceding siblings ...)
  2020-04-26 18:35 ` [PATCH 03/13] arm: dts: s5pv210: galaxys: " Jonathan Bakker
@ 2020-04-26 18:35 ` Jonathan Bakker
  2020-04-26 18:35 ` [PATCH 05/13] arm: dts: s5pv210: aries: Disable pulls on GPIO i2c adapters Jonathan Bakker
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:35 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

SDHCI1 is connected to a BCM4329 WiFi/BT chip which requires
power to be kept over suspend.  As the surrounding hardware supports
this, mark it as such.  This fixes wifi after a suspend/resume cycle.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 8ff70b856334..d419b77201f7 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -454,6 +454,7 @@
 	pinctrl-names = "default";
 	cap-sd-highspeed;
 	cap-mmc-highspeed;
+	keep-power-in-suspend;
 
 	mmc-pwrseq = <&wifi_pwrseq>;
 	non-removable;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 05/13] arm: dts: s5pv210: aries: Disable pulls on GPIO i2c adapters
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (3 preceding siblings ...)
  2020-04-26 18:35 ` [PATCH 04/13] arm: dts: s5pv210: aries: Set keep-power-in-suspend for SDHCI1 Jonathan Bakker
@ 2020-04-26 18:35 ` Jonathan Bakker
  2020-04-26 18:35 ` [PATCH 06/13] arm: dts: s5pv210: aries: Add support for more devices Jonathan Bakker
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:35 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The bitbanged GPIO i2c adapters have external pull-ups attached
so the internal pulls should be disabled for lower power usage.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index d419b77201f7..f83df426f2b6 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -65,6 +65,9 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 
+		pinctrl-names = "default";
+		pinctrl-0 = <&pmic_i2c_pins>;
+
 		pmic@66 {
 			compatible = "maxim,max8998";
 			reg = <0x66>;
@@ -314,6 +317,9 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 
+		pinctrl-names = "default";
+		pinctrl-0 = <&fg_i2c_pins>;
+
 		fuelgauge@36 {
 			compatible = "maxim,max17040";
 			interrupt-parent = <&vic0>;
@@ -438,6 +444,18 @@
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
+
+	pmic_i2c_pins: pmic-i2c-pins {
+		samsung,pins = "gpj4-0", "gpj4-3";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	fg_i2c_pins: fg-i2c-pins {
+		samsung,pins = "mp05-0", "mp05-1";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
 };
 
 &pwm {
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 06/13] arm: dts: s5pv210: aries: Add support for more devices
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (4 preceding siblings ...)
  2020-04-26 18:35 ` [PATCH 05/13] arm: dts: s5pv210: aries: Disable pulls on GPIO i2c adapters Jonathan Bakker
@ 2020-04-26 18:35 ` Jonathan Bakker
  2020-04-28 10:20   ` Krzysztof Kozlowski
  2020-04-26 18:35 ` [PATCH 07/13] arm: dts: s5pv210: galaxys: Add si470x fmradio Jonathan Bakker
                   ` (8 subsequent siblings)
  14 siblings, 1 reply; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:35 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker, Paweł Chmiel

Add support for following devices:
  - touchkeys connected over i2c-gpio
  - s6e63m0 panel connected over spi-gpio
  - fsa9480 microusb switch over i2c-gpio
  - wm8994 over i2c-gpio (no machine driver yet)
  - all common i2c-gpio devices

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi      | 282 ++++++++++++++++++++--
 arch/arm/boot/dts/s5pv210-fascinate4g.dts |   6 +
 2 files changed, 270 insertions(+), 18 deletions(-)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index f83df426f2b6..ef966d13d83d 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -12,8 +12,14 @@
 	compatible = "samsung,aries", "samsung,s5pv210";
 
 	aliases {
+		i2c4 = &i2c_sound;
+		i2c5 = &i2c_accel;
 		i2c6 = &i2c_pmic;
+		i2c7 = &i2c_musb;
 		i2c9 = &i2c_fuel;
+		i2c10 = &i2c_touchkey;
+		i2c11 = &i2c_prox;
+		i2c12 = &i2c_magnetometer;
 	};
 
 	memory@30000000 {
@@ -48,6 +54,18 @@
 		gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
 	};
 
+	touchkey_vdd: regulator-fixed-1 {
+		compatible = "regulator-fixed";
+		regulator-name = "VTOUCH_3.3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		enable-active-high;
+		gpio = <&gpj3 2 GPIO_ACTIVE_HIGH>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&touchkey_vdd_ena>;
+	};
+
 	wifi_pwrseq: wifi-pwrseq {
 		compatible = "mmc-pwrseq-simple";
 		reset-gpios = <&gpg1 2 GPIO_ACTIVE_LOW>;
@@ -57,7 +75,69 @@
 		power-off-delay-us = <500>;
 	};
 
-	i2c_pmic: i2c-gpio-0 {
+	i2c_sound: i2c-gpio-0 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&mp05 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&mp05 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&sound_i2c_pins>;
+
+		wm8994: wm8994@1a {
+			compatible = "wlf,wm8994";
+			reg = <0x1a>;
+
+			#sound-dai-cells = <0>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			clocks = <&clocks MOUT_CLKOUT>;
+			clock-names = "MCLK1";
+
+			AVDD2-supply = <&buck3_reg>;
+			DBVDD-supply = <&buck3_reg>;
+			CPVDD-supply = <&buck3_reg>;
+			SPKVDD1-supply = <&buck3_reg>;
+			SPKVDD2-supply = <&buck3_reg>;
+
+			wlf,gpio-cfg = <0xa101 0x8100 0x0100 0x0100 0x8100
+					0xa101 0x0100 0x8100 0x0100 0x0100
+					0x0100>;
+
+			wlf,ldo1ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
+			wlf,ldo2ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
+
+			wlf,lineout1-se;
+			wlf,lineout2-se;
+
+			assigned-clocks = <&clocks MOUT_CLKOUT>;
+			assigned-clock-rates = <0>;
+			assigned-clock-parents = <&xusbxti>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&codec_ldo>;
+		};
+	};
+
+	i2c_accel: i2c-gpio-1 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpj3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpj3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&accel_i2c_pins>;
+
+		/* bma023 accelerometer, no mainline binding */
+	};
+
+	i2c_pmic: i2c-gpio-2 {
 		compatible = "i2c-gpio";
 		sda-gpios = <&gpj4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
 		scl-gpios = <&gpj4 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
@@ -137,8 +217,6 @@
 					regulator-name = "VLCD_1.8V";
 					regulator-min-microvolt = <1800000>;
 					regulator-max-microvolt = <1800000>;
-					/* Till we get panel driver */
-					regulator-always-on;
 
 					regulator-state-mem {
 						regulator-off-in-suspend;
@@ -237,8 +315,6 @@
 					regulator-name = "VCC_3.0V_LCD";
 					regulator-min-microvolt = <3000000>;
 					regulator-max-microvolt = <3000000>;
-					/* Till we get panel driver */
-					regulator-always-on;
 
 					regulator-state-mem {
 						regulator-off-in-suspend;
@@ -309,7 +385,26 @@
 		};
 	};
 
-	i2c_fuel: i2c-gpio-1 {
+	i2c_musb: i2c-gpio-3 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpj3 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpj3 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&musb_i2c_pins>;
+
+		fsa9480: musb@25 {
+			compatible = "fcs,fsa9480";
+			reg = <0x25>;
+			interrupt-parent = <&gph2>;
+			interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+		};
+	};
+
+	i2c_fuel: i2c-gpio-4 {
 		compatible = "i2c-gpio";
 		sda-gpios = <&mp05 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
 		scl-gpios = <&mp05 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
@@ -328,6 +423,60 @@
 		};
 	};
 
+	i2c_touchkey: i2c-gpio-5 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpj3 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpj3 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&touchkey_i2c_pins>;
+
+		touchkey@20 {
+			compatible = "cypress,aries-touchkey";
+			reg = <0x20>;
+			vdd-supply = <&touchkey_vdd>;
+			vcc-supply = <&buck3_reg>;
+			linux,keycodes = <KEY_MENU KEY_BACK
+					  KEY_HOMEPAGE KEY_SEARCH>;
+			interrupt-parent = <&gpj4>;
+			interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&touchkey_irq>;
+		};
+	};
+
+	i2c_prox: i2c-gpio-6 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpg2 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpg0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&prox_i2c_pins>;
+
+		/* Sharp gp2a prox/light sensor, incomplete mainline binding */
+	};
+
+	i2c_magnetometer: i2c-gpio-7 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpj0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpj0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&magnetometer_i2c_pins>;
+
+		/* Yamaha yas529 magnetometer, no mainline binding */
+	};
+
 	vibrator: pwm-vibrator {
 		compatible = "pwm-vibrator";
 		pwms = <&pwm 1 44642 0>;
@@ -343,6 +492,39 @@
 		offset = <0x681c>; /* PS_HOLD_CONTROL */
 		value = <0x5200>;
 	};
+
+	spi_lcd: spi-gpio-0 {
+		compatible = "spi-gpio";
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		sck-gpios = <&mp04 1 GPIO_ACTIVE_HIGH>;
+		mosi-gpios = <&mp04 3 GPIO_ACTIVE_HIGH>;
+		cs-gpios = <&mp01 1 GPIO_ACTIVE_HIGH>;
+		num-chipselects = <1>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&lcd_spi_pins>;
+
+		panel@0 {
+			compatible = "samsung,s6e63m0";
+			reg = <0>;
+			reset-gpios = <&mp05 5 GPIO_ACTIVE_LOW>;
+			vdd3-supply = <&ldo7_reg>;
+			vci-supply = <&ldo17_reg>;
+			spi-cs-high;
+			spi-max-frequency = <1200000>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&panel_rst>;
+
+			port {
+				lcd_ep: endpoint {
+					remote-endpoint = <&fimd_ep>;
+				};
+			};
+		};
+	};
 };
 
 &fimd {
@@ -353,18 +535,13 @@
 	samsung,invert-vden;
 	samsung,invert-vclk;
 
-	display-timings {
-		timing-0 {
-			/* 480x800@60Hz */
-			clock-frequency = <25628040>;
-			hactive = <480>;
-			vactive = <800>;
-			hfront-porch = <16>;
-			hback-porch = <16>;
-			hsync-len = <2>;
-			vfront-porch = <28>;
-			vback-porch = <1>;
-			vsync-len = <2>;
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	port@3 {
+		reg = <3>;
+		fimd_ep: endpoint {
+			remote-endpoint = <&lcd_ep>;
 		};
 	};
 };
@@ -405,6 +582,19 @@
 		samsung,pin-val = <1>;
 	};
 
+	codec_ldo: codec-ldo {
+		samsung,pins = "gpf3-4";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+	};
+
+	prox_i2c_pins: gp2a-i2c-pins {
+		samsung,pins = "gpg0-2", "gpg2-2";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	wlan_gpio_rst: wlan-gpio-rst {
 		samsung,pins = "gpg1-2";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
@@ -438,6 +628,13 @@
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 	};
 
+	magnetometer_i2c_pins: yas529-i2c-pins {
+		samsung,pins = "gpj0-0", "gpj0-1";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	ts_irq: ts-irq {
 		samsung,pins = "gpj0-5";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
@@ -445,17 +642,66 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	touchkey_i2c_pins: touchkey-i2c-pins {
+		samsung,pins = "gpj3-0", "gpj3-1";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	touchkey_vdd_ena: touchkey-vdd-ena {
+		samsung,pins = "gpj3-2";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	musb_i2c_pins: musb-i2c-pins {
+		samsung,pins = "gpj3-4", "gpj3-5";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	accel_i2c_pins: accel-i2c-pins {
+		samsung,pins = "gpj3-6", "gpj3-7";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	pmic_i2c_pins: pmic-i2c-pins {
 		samsung,pins = "gpj4-0", "gpj4-3";
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	touchkey_irq: touchkey-irq {
+		samsung,pins = "gpj4-1";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_UP>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	lcd_spi_pins: spi-lcd-pins {
+		samsung,pins = "mp01-1", "mp04-1", "mp04-3";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	fg_i2c_pins: fg-i2c-pins {
 		samsung,pins = "mp05-0", "mp05-1";
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
+
+	sound_i2c_pins: sound-i2c-pins {
+		samsung,pins = "mp05-2", "mp05-3";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	panel_rst: panel-rst {
+		samsung,pins = "mp05-5";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
 };
 
 &pwm {
diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
index 94dcb9b64b9a..42e6e2de197d 100644
--- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
+++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
@@ -278,3 +278,9 @@
 		PIN_SLP(mp07-7, INPUT, DOWN);
 	};
 };
+
+&wm8994 {
+	/* GPIO3 (BCLK2) and GPIO4 (LRCLK2) as outputs */
+	wlf,gpio-cfg = <0xa101 0x8100 0x8100 0x8100 0x8100 0xa101
+		0x0100 0x8100 0x0100 0x0100 0x0100>;
+};
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 07/13] arm: dts: s5pv210: galaxys: Add si470x fmradio
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (5 preceding siblings ...)
  2020-04-26 18:35 ` [PATCH 06/13] arm: dts: s5pv210: aries: Add support for more devices Jonathan Bakker
@ 2020-04-26 18:35 ` Jonathan Bakker
  2020-04-26 18:35 ` [PATCH 08/13] arm: dts: s5pv210: aries: Disable pull for vibrator ena GPIO Jonathan Bakker
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:35 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Paweł Chmiel, Jonathan Bakker

From: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>

Add support for the Silicon Labs si4709 fmradio, which can be found
on Galaxy S GT-i9000 (but not most other Galaxy S variants).

Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi  |  2 +-
 arch/arm/boot/dts/s5pv210-galaxys.dts | 47 +++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index ef966d13d83d..12575d64aa06 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -11,7 +11,7 @@
 / {
 	compatible = "samsung,aries", "samsung,s5pv210";
 
-	aliases {
+	aliases: aliases {
 		i2c4 = &i2c_sound;
 		i2c5 = &i2c_accel;
 		i2c6 = &i2c_pmic;
diff --git a/arch/arm/boot/dts/s5pv210-galaxys.dts b/arch/arm/boot/dts/s5pv210-galaxys.dts
index 2eff1e66a2a5..f5c13eb8ae71 100644
--- a/arch/arm/boot/dts/s5pv210-galaxys.dts
+++ b/arch/arm/boot/dts/s5pv210-galaxys.dts
@@ -49,12 +49,59 @@
 			wakeup-source;
 		};
 	};
+
+	i2c_fmradio: i2c-gpio-8 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpd1 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpd1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&fm_i2c_pins>;
+
+		fmradio@10 {
+			compatible = "silabs,si470x";
+			reg = <0x10>;
+			interrupt-parent = <&gpj2>;
+			interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
+			reset-gpios = <&gpj2 5 GPIO_ACTIVE_HIGH>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&fm_irq &fm_rst>;
+		};
+	};
+};
+
+&aliases {
+	i2c8 = &i2c_fmradio;
 };
 
 &pinctrl0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&sleep_cfg>;
 
+	fm_i2c_pins: fm-i2c-pins {
+		samsung,pins = "gpd1-2", "gpd1-3";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	fm_irq: fm-irq {
+		samsung,pins = "gpj2-4";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_UP>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	fm_rst: fm-rst {
+		samsung,pins = "gpj2-5";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	massmemory_en: massmemory-en {
 		samsung,pins = "gpj2-7";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 08/13] arm: dts: s5pv210: aries: Disable pull for vibrator ena GPIO
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (6 preceding siblings ...)
  2020-04-26 18:35 ` [PATCH 07/13] arm: dts: s5pv210: galaxys: Add si470x fmradio Jonathan Bakker
@ 2020-04-26 18:35 ` Jonathan Bakker
  2020-04-26 18:36 ` [PATCH 09/13] arm: dts: s5pv210: Add an ADC node Jonathan Bakker
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:35 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The enable GPIO for the fixed vibrator regulator shouldn't be
pulled in one direction or the other.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 12575d64aa06..f30bdcb9c083 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -52,6 +52,9 @@
 		regulator-name = "vibrator-en";
 		enable-active-high;
 		gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
+
+		pinctrl-names = "default";
+		pinctr-0 = <&vibrator_ena>;
 	};
 
 	touchkey_vdd: regulator-fixed-1 {
@@ -642,6 +645,12 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	vibrator_ena: vibrator-ena {
+		samsung,pins = "gpj1-1";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	touchkey_i2c_pins: touchkey-i2c-pins {
 		samsung,pins = "gpj3-0", "gpj3-1";
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 09/13] arm: dts: s5pv210: Add an ADC node
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (7 preceding siblings ...)
  2020-04-26 18:35 ` [PATCH 08/13] arm: dts: s5pv210: aries: Disable pull for vibrator ena GPIO Jonathan Bakker
@ 2020-04-26 18:36 ` Jonathan Bakker
  2020-04-28 10:26   ` Krzysztof Kozlowski
  2020-04-26 18:36 ` [PATCH 10/13] arm: dts: s5pv210: aries: Enable " Jonathan Bakker
                   ` (5 subsequent siblings)
  14 siblings, 1 reply; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:36 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The exynos-adc driver now supports the S5PV210, so add the DT
node so that devices can use it.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
index 2ad642f51fd9..b3b6ad2889f9 100644
--- a/arch/arm/boot/dts/s5pv210.dtsi
+++ b/arch/arm/boot/dts/s5pv210.dtsi
@@ -159,6 +159,18 @@
 			};
 		};
 
+		adc: adc@126c0000 {
+			compatible = "samsung,s5pv210-adc";
+			reg = <0xe1700000 0x1000>;
+			interrupt-parent = <&vic2>;
+			interrupts = <23>, <24>;
+			clocks = <&clocks CLK_TSADC>;
+			clock-names = "adc";
+			#io-channel-cells = <1>;
+			io-channel-ranges;
+			status = "disabled";
+		};
+
 		spi0: spi@e1300000 {
 			compatible = "samsung,s5pv210-spi";
 			reg = <0xe1300000 0x1000>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 10/13] arm: dts: s5pv210: aries: Enable ADC node
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (8 preceding siblings ...)
  2020-04-26 18:36 ` [PATCH 09/13] arm: dts: s5pv210: Add an ADC node Jonathan Bakker
@ 2020-04-26 18:36 ` Jonathan Bakker
  2020-04-28 10:29   ` Krzysztof Kozlowski
  2020-04-26 18:36 ` [PATCH 11/13] arm: dts: s5pv210: Assign clocks to MMC devices Jonathan Bakker
                   ` (4 subsequent siblings)
  14 siblings, 1 reply; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:36 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

On aries boards, the ADC is used for things such as jack detection
and battery temperature monitoring.  It is connected to ldo4 of max8998,
so only enable that regulator when we are actually using the ADC.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index f30bdcb9c083..a103ddb0d720 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -193,11 +193,6 @@
 					regulator-name = "VADC_3.3V";
 					regulator-min-microvolt = <3300000>;
 					regulator-max-microvolt = <3300000>;
-					regulator-always-on;
-
-					regulator-state-mem {
-						regulator-off-in-suspend;
-					};
 				};
 
 				ldo5_reg: LDO5 {
@@ -530,6 +525,12 @@
 	};
 };
 
+&adc {
+	vdd-supply = <&ldo4_reg>;
+
+	status = "okay";
+};
+
 &fimd {
 	pinctrl-names = "default";
 	pinctrl-0 = <&lcd_clk &lcd_data24>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 11/13] arm: dts: s5pv210: Assign clocks to MMC devices
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (9 preceding siblings ...)
  2020-04-26 18:36 ` [PATCH 10/13] arm: dts: s5pv210: aries: Enable " Jonathan Bakker
@ 2020-04-26 18:36 ` Jonathan Bakker
  2020-04-26 18:36 ` [PATCH 12/13] arm: dts: s5pv210: Correct FIMC definitions Jonathan Bakker
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:36 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The SHDCI controller on aries devices is a little bit peculiar about
the clocks and with a slightly off clock can run into errors such as

[ 141.533993] mmc2: ADMA error: 0x02000000
[ 141.535137] mmc2: sdhci: ============ SDHCI REGISTER DUMP ===========
[ 141.540246] mmc2: sdhci: Sys addr: 0x347e4cc4 | Version: 0x00002401
[ 141.545358] mmc2: sdhci: Blk size: 0x00007004 | Blk cnt: 0x0000fffc
[ 141.550470] mmc2: sdhci: Argument: 0x00000000 | Trn mode: 0x00000013
[ 141.555583] mmc2: sdhci: Present: 0x01fa0000 | Host ctl: 0x00000012
[ 141.560696] mmc2: sdhci: Power: 0x00000000 | Blk gap: 0x00000000
[ 141.565809] mmc2: sdhci: Wake-up: 0x00000000 | Clock: 0x0000010f
[ 141.570921] mmc2: sdhci: Timeout: 0x0000000a | Int stat: 0x00000003
[ 141.576034] mmc2: sdhci: Int enab: 0x03ff004b | Sig enab: 0x03ff004b
[ 141.581147] mmc2: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000001
[ 141.586259] mmc2: sdhci: Caps: 0x05e80080 | Caps_1: 0x00000000
[ 141.591372] mmc2: sdhci: Cmd: 0x0000163a | Max curr: 0x00000000
[ 141.596485] mmc2: sdhci: Resp[0]: 0x00000920 | Resp[1]: 0x00000000
[ 141.601597] mmc2: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
[ 141.606710] mmc2: sdhci: Host ctl2: 0x00000000
[ 141.609831] mmc2: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x349a3208
[ 141.614942] mmc2: sdhci: ============================================
[ 141.620057] mmc2: sdhci: 349a3200: DMA 0x347e4cc0, LEN 0x0004, Attr=0x23

Specifically assign the mmc sclks to be parented from MPLL with specific
rates that match the vendor kernel.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi  | 8 ++++++++
 arch/arm/boot/dts/s5pv210-galaxys.dts | 4 ++++
 2 files changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index a103ddb0d720..7e113d750b97 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -734,6 +734,10 @@
 	non-removable;
 	status = "okay";
 
+	assigned-clocks = <&clocks MOUT_MMC1>, <&clocks SCLK_MMC1>;
+	assigned-clock-rates = <0>, <50000000>;
+	assigned-clock-parents = <&clocks MOUT_MPLL>;
+
 	wlan@1 {
 		reg = <1>;
 		compatible = "brcm,bcm4329-fmac";
@@ -750,6 +754,10 @@
 	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &tf_detect>;
 	pinctrl-names = "default";
 	status = "okay";
+
+	assigned-clocks = <&clocks MOUT_MMC2>, <&clocks SCLK_MMC2>;
+	assigned-clock-rates = <0>, <50000000>;
+	assigned-clock-parents = <&clocks MOUT_MPLL>;
 };
 
 &uart0 {
diff --git a/arch/arm/boot/dts/s5pv210-galaxys.dts b/arch/arm/boot/dts/s5pv210-galaxys.dts
index f5c13eb8ae71..6958fe040106 100644
--- a/arch/arm/boot/dts/s5pv210-galaxys.dts
+++ b/arch/arm/boot/dts/s5pv210-galaxys.dts
@@ -354,4 +354,8 @@
 	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4>;
 	pinctrl-names = "default";
 	status = "okay";
+
+	assigned-clocks = <&clocks MOUT_MMC0>, <&clocks SCLK_MMC0>;
+	assigned-clock-rates = <0>, <52000000>;
+	assigned-clock-parents = <&clocks MOUT_MPLL>;
 };
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 12/13] arm: dts: s5pv210: Correct FIMC definitions
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (10 preceding siblings ...)
  2020-04-26 18:36 ` [PATCH 11/13] arm: dts: s5pv210: Assign clocks to MMC devices Jonathan Bakker
@ 2020-04-26 18:36 ` Jonathan Bakker
  2020-04-28 10:32   ` Krzysztof Kozlowski
  2020-04-26 18:36 ` [PATCH 13/13] arm: dts: s5pv210: aries: Set MAX8998 GPIO pulls Jonathan Bakker
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:36 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The extended mainscaler is only available on FIMC1 and there
are minimum pixel alignments that differ from the default.
Additionally, the cam-if interface is available on all three
while FIMC2 has no rotators.  The lcd-wb interface is supported
on FIMC1.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210.dtsi | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
index b3b6ad2889f9..3cbf6c05f42a 100644
--- a/arch/arm/boot/dts/s5pv210.dtsi
+++ b/arch/arm/boot/dts/s5pv210.dtsi
@@ -626,7 +626,7 @@
 				clock-names = "fimc",
 						"sclk_fimc";
 				samsung,pix-limits = <4224 8192 1920 4224>;
-				samsung,mainscaler-ext;
+				samsung,min-pix-alignment = <16 8>;
 				samsung,cam-if;
 			};
 
@@ -639,9 +639,11 @@
 						<&clocks SCLK_FIMC1>;
 				clock-names = "fimc",
 						"sclk_fimc";
-				samsung,pix-limits = <4224 8192 1920 4224>;
 				samsung,mainscaler-ext;
+				samsung,min-pix-alignment = <1 1>;
+				samsung,pix-limits = <4224 8192 1920 4224>;
 				samsung,cam-if;
+				samsung,lcd-wb;
 			};
 
 			fimc2: fimc@fb400000 {
@@ -653,9 +655,10 @@
 						<&clocks SCLK_FIMC2>;
 				clock-names = "fimc",
 						"sclk_fimc";
-				samsung,pix-limits = <4224 8192 1920 4224>;
-				samsung,mainscaler-ext;
-				samsung,lcd-wb;
+				samsung,pix-limits = <1920 8192 1280 1920>;
+				samsung,min-pix-alignment = <16 8>;
+				samsung,rotators = <0>;
+				samsung,cam-if;
 			};
 		};
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH 13/13] arm: dts: s5pv210: aries: Set MAX8998 GPIO pulls
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (11 preceding siblings ...)
  2020-04-26 18:36 ` [PATCH 12/13] arm: dts: s5pv210: Correct FIMC definitions Jonathan Bakker
@ 2020-04-26 18:36 ` Jonathan Bakker
  2020-05-01 23:50 ` [PATCH v2 00/18] S5PV210 and Aries DTS improvements Jonathan Bakker
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
  14 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-26 18:36 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

Make sure that the GPIOs are configured correctly
for the interrupt (otherwise it won't fire) and disable the
pulls on the DVS GPIOs which are outputs.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 7e113d750b97..000f582e9a0b 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -167,6 +167,9 @@
 			max8998,pmic-buck2-dvs-gpio = <&gph0 5 GPIO_ACTIVE_HIGH>;
 			max8998,pmic-buck2-dvs-voltage = <1100000>, <1000000>;
 
+			pinctrl-names = "default";
+			pinctrl-0 = <&pmic_dvs_pins &pmic_irq>;
+
 			regulators {
 				ldo2_reg: LDO2 {
 					regulator-name = "VALIVE_1.2V";
@@ -605,6 +608,21 @@
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 	};
 
+	pmic_dvs_pins: pmic-dvs-pins {
+		samsung,pins = "gph0-3", "gph0-4", "gph0-5";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+		samsung,pin-val = <0>;
+	};
+
+	pmic_irq: pmic-irq {
+		samsung,pins = "gph0-7";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	wifi_host_wake: wifi-host-wake {
 		samsung,pins = "gph2-4";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* Re: [PATCH 02/13] arm: dts: s5pv210: fascinate4g: Add sleep GPIO configuration
  2020-04-26 18:35 ` [PATCH 02/13] arm: dts: s5pv210: fascinate4g: Add sleep GPIO configuration Jonathan Bakker
@ 2020-04-28 10:02   ` Krzysztof Kozlowski
  2020-04-28 23:49     ` Jonathan Bakker
  0 siblings, 1 reply; 46+ messages in thread
From: Krzysztof Kozlowski @ 2020-04-28 10:02 UTC (permalink / raw)
  To: Jonathan Bakker
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

On Sun, Apr 26, 2020 at 11:35:53AM -0700, Jonathan Bakker wrote:
> In order to minimize leakage current during sleep, set a config
> for sleep GPIOs.
> 
> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
> ---
>  arch/arm/boot/dts/s5pv210-fascinate4g.dts | 242 ++++++++++++++++++++++
>  1 file changed, 242 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> index 07a8d9bbe5b8..94dcb9b64b9a 100644
> --- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> +++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> @@ -36,3 +36,245 @@
>  		};
>  	};
>  };
> +
> +&pinctrl0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&sleep_cfg>;
> +
> +	sleep_cfg: sleep-cfg {
> +		PIN_SLP(gpa0-0, PREV, NONE);
> +		PIN_SLP(gpa0-1, PREV, NONE);
> +		PIN_SLP(gpa0-2, PREV, NONE);
> +		PIN_SLP(gpa0-3, OUT1, NONE);

I would be happy to see some reasoning why certain pins have disabled
pull down (e.g. they are not connected or you use the same configuration
as running one) and why you set them as output.

> +		PIN_SLP(gpa0-4, PREV, NONE);
> +		PIN_SLP(gpa0-5, PREV, NONE);
> +		PIN_SLP(gpa0-6, PREV, NONE);
> +		PIN_SLP(gpa0-7, PREV, NONE);
> +
> +		PIN_SLP(gpa1-0, INPUT, DOWN);
> +		PIN_SLP(gpa1-1, OUT0, NONE);
> +		PIN_SLP(gpa1-2, INPUT, DOWN);
> +		PIN_SLP(gpa1-3, OUT0, NONE);
> +
> +		PIN_SLP(gpb-0, OUT0, NONE);
> +		PIN_SLP(gpb-1, OUT1, NONE);
> +		PIN_SLP(gpb-2, OUT0, NONE);
> +		PIN_SLP(gpb-3, PREV, NONE);
> +		PIN_SLP(gpb-4, INPUT, NONE);
> +		PIN_SLP(gpb-5, PREV, NONE);
> +		PIN_SLP(gpb-6, INPUT, DOWN);
> +		PIN_SLP(gpb-7, OUT0, NONE);
> +
> +		PIN_SLP(gpc0-0, OUT0, NONE);
> +		PIN_SLP(gpc0-1, INPUT, DOWN);
> +		PIN_SLP(gpc0-2, OUT0, NONE);
> +		PIN_SLP(gpc0-3, INPUT, DOWN);
> +		PIN_SLP(gpc0-4, OUT0, NONE);
> +
> +		PIN_SLP(gpc1-0, INPUT, DOWN);
> +		PIN_SLP(gpc1-1, INPUT, DOWN);
> +		PIN_SLP(gpc1-2, INPUT, DOWN);
> +		PIN_SLP(gpc1-3, INPUT, DOWN);
> +		PIN_SLP(gpc1-4, INPUT, DOWN);
> +
> +		PIN_SLP(gpd0-0, INPUT, DOWN);
> +		PIN_SLP(gpd0-1, OUT0, NONE);
> +		PIN_SLP(gpd0-2, INPUT, DOWN);
> +		PIN_SLP(gpd0-3, INPUT, DOWN);
> +
> +		PIN_SLP(gpd1-0, INPUT, NONE);
> +		PIN_SLP(gpd1-1, INPUT, NONE);
> +		PIN_SLP(gpd1-2, INPUT, DOWN);
> +		PIN_SLP(gpd1-3, INPUT, DOWN);
> +		PIN_SLP(gpd1-4, INPUT, DOWN);
> +		PIN_SLP(gpd1-5, INPUT, DOWN);
> +
> +		PIN_SLP(gpe0-0, INPUT, DOWN);
> +		PIN_SLP(gpe0-1, INPUT, DOWN);
> +		PIN_SLP(gpe0-2, INPUT, DOWN);
> +		PIN_SLP(gpe0-3, INPUT, DOWN);
> +		PIN_SLP(gpe0-4, INPUT, DOWN);
> +		PIN_SLP(gpe0-5, INPUT, DOWN);
> +		PIN_SLP(gpe0-6, INPUT, DOWN);
> +		PIN_SLP(gpe0-7, INPUT, DOWN);
> +
> +		PIN_SLP(gpe1-0, INPUT, DOWN);
> +		PIN_SLP(gpe1-1, INPUT, DOWN);
> +		PIN_SLP(gpe1-2, INPUT, DOWN);
> +		PIN_SLP(gpe1-3, OUT0, NONE);
> +		PIN_SLP(gpe1-4, INPUT, DOWN);
> +
> +		PIN_SLP(gpf0-0, OUT0, NONE);
> +		PIN_SLP(gpf0-1, OUT0, NONE);
> +		PIN_SLP(gpf0-2, OUT0, NONE);
> +		PIN_SLP(gpf0-3, OUT0, NONE);
> +		PIN_SLP(gpf0-4, OUT0, NONE);
> +		PIN_SLP(gpf0-5, OUT0, NONE);
> +		PIN_SLP(gpf0-6, OUT0, NONE);
> +		PIN_SLP(gpf0-7, OUT0, NONE);
> +
> +		PIN_SLP(gpf1-0, OUT0, NONE);
> +		PIN_SLP(gpf1-1, OUT0, NONE);
> +		PIN_SLP(gpf1-2, OUT0, NONE);
> +		PIN_SLP(gpf1-3, OUT0, NONE);
> +		PIN_SLP(gpf1-4, OUT0, NONE);
> +		PIN_SLP(gpf1-5, OUT0, NONE);
> +		PIN_SLP(gpf1-6, OUT0, NONE);
> +		PIN_SLP(gpf1-7, OUT0, NONE);
> +
> +		PIN_SLP(gpf2-0, OUT0, NONE);
> +		PIN_SLP(gpf2-1, OUT0, NONE);
> +		PIN_SLP(gpf2-2, OUT0, NONE);
> +		PIN_SLP(gpf2-3, OUT0, NONE);
> +		PIN_SLP(gpf2-4, OUT0, NONE);
> +		PIN_SLP(gpf2-5, OUT0, NONE);
> +		PIN_SLP(gpf2-6, OUT0, NONE);
> +		PIN_SLP(gpf2-7, OUT0, NONE);
> +
> +		PIN_SLP(gpf3-0, OUT0, NONE);
> +		PIN_SLP(gpf3-1, OUT0, NONE);
> +		PIN_SLP(gpf3-2, OUT0, NONE);
> +		PIN_SLP(gpf3-3, OUT0, NONE);
> +		PIN_SLP(gpf3-4, PREV, NONE);
> +		PIN_SLP(gpf3-5, INPUT, DOWN);
> +
> +		PIN_SLP(gpg0-0, INPUT, DOWN);
> +		PIN_SLP(gpg0-1, INPUT, DOWN);
> +		PIN_SLP(gpg0-2, INPUT, NONE);
> +		PIN_SLP(gpg0-3, INPUT, DOWN);
> +		PIN_SLP(gpg0-4, INPUT, DOWN);
> +		PIN_SLP(gpg0-5, INPUT, DOWN);
> +		PIN_SLP(gpg0-6, INPUT, DOWN);
> +
> +		PIN_SLP(gpg1-0, OUT0, NONE);
> +		PIN_SLP(gpg1-1, OUT1, NONE);
> +		PIN_SLP(gpg1-2, PREV, NONE);
> +		PIN_SLP(gpg1-3, OUT1, NONE);
> +		PIN_SLP(gpg1-4, OUT1, NONE);
> +		PIN_SLP(gpg1-5, OUT1, NONE);
> +		PIN_SLP(gpg1-6, OUT1, NONE);
> +
> +		PIN_SLP(gpg2-0, OUT0, NONE);
> +		PIN_SLP(gpg2-1, OUT0, NONE);
> +		PIN_SLP(gpg2-2, INPUT, NONE);
> +		PIN_SLP(gpg2-3, OUT0, NONE);
> +		PIN_SLP(gpg2-4, OUT0, NONE);
> +		PIN_SLP(gpg2-5, OUT0, NONE);
> +		PIN_SLP(gpg2-6, OUT0, NONE);
> +
> +		PIN_SLP(gpg3-0, PREV, UP);
> +		PIN_SLP(gpg3-1, PREV, UP);
> +		PIN_SLP(gpg3-2, INPUT, NONE);
> +		PIN_SLP(gpg3-3, INPUT, DOWN);
> +		PIN_SLP(gpg3-4, OUT0, NONE);
> +		PIN_SLP(gpg3-5, OUT0, NONE);
> +		PIN_SLP(gpg3-6, INPUT, DOWN);
> +
> +		PIN_SLP(gpi-0, PREV, NONE);

No such name. Did you mean gpgi?


> +		PIN_SLP(gpi-1, INPUT, DOWN);
> +		PIN_SLP(gpi-2, PREV, NONE);
> +		PIN_SLP(gpi-3, PREV, NONE);
> +		PIN_SLP(gpi-4, PREV, NONE);
> +		PIN_SLP(gpi-5, INPUT, DOWN);
> +		PIN_SLP(gpi-6, INPUT, DOWN);
> +
> +		PIN_SLP(gpj0-0, INPUT, NONE);
> +		PIN_SLP(gpj0-1, INPUT, NONE);
> +		PIN_SLP(gpj0-2, INPUT, NONE);
> +		PIN_SLP(gpj0-3, INPUT, NONE);
> +		PIN_SLP(gpj0-4, INPUT, NONE);
> +		PIN_SLP(gpj0-5, INPUT, DOWN);
> +		PIN_SLP(gpj0-6, OUT0, NONE);
> +		PIN_SLP(gpj0-7, INPUT, NONE);
> +
> +		PIN_SLP(gpj1-0, OUT1, NONE);
> +		PIN_SLP(gpj1-1, OUT0, NONE);
> +		PIN_SLP(gpj1-2, INPUT, DOWN);
> +		PIN_SLP(gpj1-3, PREV, NONE);
> +		PIN_SLP(gpj1-4, PREV, NONE);
> +		PIN_SLP(gpj1-5, OUT0, NONE);
> +
> +		PIN_SLP(gpj2-0, INPUT, DOWN);
> +		PIN_SLP(gpj2-1, INPUT, DOWN);
> +		PIN_SLP(gpj2-2, OUT0, NONE);
> +		PIN_SLP(gpj2-3, INPUT, DOWN);
> +		PIN_SLP(gpj2-4, INPUT, DOWN);
> +		PIN_SLP(gpj2-5, PREV, NONE);
> +		PIN_SLP(gpj2-6, PREV, NONE);
> +		PIN_SLP(gpj2-7, INPUT, DOWN);
> +
> +		PIN_SLP(gpj3-0, INPUT, NONE);
> +		PIN_SLP(gpj3-1, INPUT, NONE);
> +		PIN_SLP(gpj3-2, OUT0, NONE);
> +		PIN_SLP(gpj3-3, INPUT, DOWN);
> +		PIN_SLP(gpj3-4, INPUT, NONE);
> +		PIN_SLP(gpj3-5, INPUT, NONE);
> +		PIN_SLP(gpj3-6, INPUT, NONE);
> +		PIN_SLP(gpj3-7, INPUT, NONE);
> +
> +		PIN_SLP(gpj4-0, INPUT, NONE);
> +		PIN_SLP(gpj4-1, INPUT, DOWN);
> +		PIN_SLP(gpj4-2, PREV, NONE);
> +		PIN_SLP(gpj4-3, INPUT, NONE);
> +		PIN_SLP(gpj4-4, INPUT, DOWN);
> +
> +		PIN_SLP(mp01-0, OUT1, NONE);
> +		PIN_SLP(mp01-1, OUT0, NONE);
> +		PIN_SLP(mp01-2, INPUT, DOWN);
> +		PIN_SLP(mp01-3, INPUT, DOWN);
> +		PIN_SLP(mp01-4, OUT1, NONE);
> +		PIN_SLP(mp01-5, INPUT, DOWN);
> +		PIN_SLP(mp01-6, INPUT, DOWN);
> +		PIN_SLP(mp01-7, INPUT, DOWN);
> +
> +		PIN_SLP(mp02-0, INPUT, DOWN);
> +		PIN_SLP(mp02-1, INPUT, DOWN);
> +		PIN_SLP(mp02-2, INPUT, NONE);
> +		PIN_SLP(mp02-3, INPUT, DOWN);
> +
> +		PIN_SLP(mp03-0, INPUT, DOWN);
> +		PIN_SLP(mp03-1, INPUT, DOWN);
> +		PIN_SLP(mp03-2, OUT1, NONE);
> +		PIN_SLP(mp03-3, OUT0, NONE);
> +		PIN_SLP(mp03-4, INPUT, NONE);
> +		PIN_SLP(mp03-5, OUT0, NONE);
> +		PIN_SLP(mp03-6, INPUT, DOWN);
> +		PIN_SLP(mp03-7, INPUT, DOWN);
> +
> +		PIN_SLP(mp04-0, INPUT, DOWN);
> +		PIN_SLP(mp04-1, OUT0, NONE);
> +		PIN_SLP(mp04-2, INPUT, DOWN);
> +		PIN_SLP(mp04-3, OUT0, NONE);
> +		PIN_SLP(mp04-4, INPUT, DOWN);
> +		PIN_SLP(mp04-5, INPUT, DOWN);
> +		PIN_SLP(mp04-6, OUT0, NONE);
> +		PIN_SLP(mp04-7, INPUT, DOWN);
> +
> +		PIN_SLP(mp05-0, INPUT, NONE);
> +		PIN_SLP(mp05-1, INPUT, NONE);
> +		PIN_SLP(mp05-2, INPUT, NONE);
> +		PIN_SLP(mp05-3, INPUT, NONE);
> +		PIN_SLP(mp05-4, INPUT, DOWN);
> +		PIN_SLP(mp05-5, OUT0, NONE);
> +		PIN_SLP(mp05-6, INPUT, DOWN);
> +		PIN_SLP(mp05-7, PREV, NONE);
> +
> +		PIN_SLP(mp06-0, INPUT, DOWN);
> +		PIN_SLP(mp06-1, INPUT, DOWN);
> +		PIN_SLP(mp06-2, INPUT, DOWN);
> +		PIN_SLP(mp06-3, INPUT, DOWN);
> +		PIN_SLP(mp06-4, INPUT, DOWN);
> +		PIN_SLP(mp06-5, INPUT, DOWN);
> +		PIN_SLP(mp06-6, INPUT, DOWN);
> +		PIN_SLP(mp06-7, INPUT, DOWN);
> +
> +		PIN_SLP(mp07-0, INPUT, DOWN);
> +		PIN_SLP(mp07-1, INPUT, DOWN);
> +		PIN_SLP(mp07-2, INPUT, DOWN);
> +		PIN_SLP(mp07-3, INPUT, DOWN);
> +		PIN_SLP(mp07-4, INPUT, DOWN);
> +		PIN_SLP(mp07-5, INPUT, DOWN);
> +		PIN_SLP(mp07-6, INPUT, DOWN);
> +		PIN_SLP(mp07-7, INPUT, DOWN);
> +	};

What about gphX?

Best regards,
Krzysztof

> +};
> -- 
> 2.20.1
> 

^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 06/13] arm: dts: s5pv210: aries: Add support for more devices
  2020-04-26 18:35 ` [PATCH 06/13] arm: dts: s5pv210: aries: Add support for more devices Jonathan Bakker
@ 2020-04-28 10:20   ` Krzysztof Kozlowski
  2020-04-28 23:32     ` Jonathan Bakker
  0 siblings, 1 reply; 46+ messages in thread
From: Krzysztof Kozlowski @ 2020-04-28 10:20 UTC (permalink / raw)
  To: Jonathan Bakker
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel, Paweł Chmiel

On Sun, Apr 26, 2020 at 11:35:57AM -0700, Jonathan Bakker wrote:
> Add support for following devices:
>   - touchkeys connected over i2c-gpio
>   - s6e63m0 panel connected over spi-gpio
>   - fsa9480 microusb switch over i2c-gpio
>   - wm8994 over i2c-gpio (no machine driver yet)
>   - all common i2c-gpio devices

Please split it per functionality, e.g.:
1. Add sound,
2. Add panel,
3. Add touchkeys (unless part of panel),
4. The remaining i2c-gpio devices without bindings could go as one.

> 
> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
> Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
> ---
>  arch/arm/boot/dts/s5pv210-aries.dtsi      | 282 ++++++++++++++++++++--
>  arch/arm/boot/dts/s5pv210-fascinate4g.dts |   6 +
>  2 files changed, 270 insertions(+), 18 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
> index f83df426f2b6..ef966d13d83d 100644
> --- a/arch/arm/boot/dts/s5pv210-aries.dtsi
> +++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
> @@ -12,8 +12,14 @@
>  	compatible = "samsung,aries", "samsung,s5pv210";
>  
>  	aliases {
> +		i2c4 = &i2c_sound;
> +		i2c5 = &i2c_accel;
>  		i2c6 = &i2c_pmic;
> +		i2c7 = &i2c_musb;
>  		i2c9 = &i2c_fuel;
> +		i2c10 = &i2c_touchkey;
> +		i2c11 = &i2c_prox;
> +		i2c12 = &i2c_magnetometer;
>  	};
>  
>  	memory@30000000 {
> @@ -48,6 +54,18 @@
>  		gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
>  	};
>  
> +	touchkey_vdd: regulator-fixed-1 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "VTOUCH_3.3V";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		enable-active-high;
> +		gpio = <&gpj3 2 GPIO_ACTIVE_HIGH>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&touchkey_vdd_ena>;
> +	};
> +
>  	wifi_pwrseq: wifi-pwrseq {
>  		compatible = "mmc-pwrseq-simple";
>  		reset-gpios = <&gpg1 2 GPIO_ACTIVE_LOW>;
> @@ -57,7 +75,69 @@
>  		power-off-delay-us = <500>;
>  	};
>  
> -	i2c_pmic: i2c-gpio-0 {
> +	i2c_sound: i2c-gpio-0 {
> +		compatible = "i2c-gpio";
> +		sda-gpios = <&mp05 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		scl-gpios = <&mp05 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		i2c-gpio,delay-us = <2>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&sound_i2c_pins>;
> +
> +		wm8994: wm8994@1a {
> +			compatible = "wlf,wm8994";
> +			reg = <0x1a>;
> +
> +			#sound-dai-cells = <0>;
> +
> +			gpio-controller;
> +			#gpio-cells = <2>;
> +
> +			clocks = <&clocks MOUT_CLKOUT>;
> +			clock-names = "MCLK1";
> +
> +			AVDD2-supply = <&buck3_reg>;
> +			DBVDD-supply = <&buck3_reg>;

No such supply, check the bindings.

> +			CPVDD-supply = <&buck3_reg>;
> +			SPKVDD1-supply = <&buck3_reg>;
> +			SPKVDD2-supply = <&buck3_reg>;
> +
> +			wlf,gpio-cfg = <0xa101 0x8100 0x0100 0x0100 0x8100
> +					0xa101 0x0100 0x8100 0x0100 0x0100
> +					0x0100>;
> +
> +			wlf,ldo1ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
> +			wlf,ldo2ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
> +
> +			wlf,lineout1-se;
> +			wlf,lineout2-se;
> +
> +			assigned-clocks = <&clocks MOUT_CLKOUT>;
> +			assigned-clock-rates = <0>;
> +			assigned-clock-parents = <&xusbxti>;
> +
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&codec_ldo>;
> +		};
> +	};
> +
> +	i2c_accel: i2c-gpio-1 {
> +		compatible = "i2c-gpio";
> +		sda-gpios = <&gpj3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		scl-gpios = <&gpj3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		i2c-gpio,delay-us = <2>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&accel_i2c_pins>;
> +
> +		/* bma023 accelerometer, no mainline binding */

status disabled ... unless you need it for user-space I2C tools?

> +	};
> +
> +	i2c_pmic: i2c-gpio-2 {
>  		compatible = "i2c-gpio";
>  		sda-gpios = <&gpj4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>  		scl-gpios = <&gpj4 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> @@ -137,8 +217,6 @@
>  					regulator-name = "VLCD_1.8V";
>  					regulator-min-microvolt = <1800000>;
>  					regulator-max-microvolt = <1800000>;
> -					/* Till we get panel driver */
> -					regulator-always-on;
>  
>  					regulator-state-mem {
>  						regulator-off-in-suspend;
> @@ -237,8 +315,6 @@
>  					regulator-name = "VCC_3.0V_LCD";
>  					regulator-min-microvolt = <3000000>;
>  					regulator-max-microvolt = <3000000>;
> -					/* Till we get panel driver */
> -					regulator-always-on;
>  
>  					regulator-state-mem {
>  						regulator-off-in-suspend;
> @@ -309,7 +385,26 @@
>  		};
>  	};
>  
> -	i2c_fuel: i2c-gpio-1 {
> +	i2c_musb: i2c-gpio-3 {
> +		compatible = "i2c-gpio";
> +		sda-gpios = <&gpj3 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		scl-gpios = <&gpj3 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		i2c-gpio,delay-us = <2>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&musb_i2c_pins>;
> +
> +		fsa9480: musb@25 {
> +			compatible = "fcs,fsa9480";
> +			reg = <0x25>;
> +			interrupt-parent = <&gph2>;
> +			interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
> +		};
> +	};
> +
> +	i2c_fuel: i2c-gpio-4 {
>  		compatible = "i2c-gpio";
>  		sda-gpios = <&mp05 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>  		scl-gpios = <&mp05 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> @@ -328,6 +423,60 @@
>  		};
>  	};
>  
> +	i2c_touchkey: i2c-gpio-5 {
> +		compatible = "i2c-gpio";
> +		sda-gpios = <&gpj3 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		scl-gpios = <&gpj3 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		i2c-gpio,delay-us = <2>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&touchkey_i2c_pins>;
> +
> +		touchkey@20 {
> +			compatible = "cypress,aries-touchkey";
> +			reg = <0x20>;
> +			vdd-supply = <&touchkey_vdd>;
> +			vcc-supply = <&buck3_reg>;
> +			linux,keycodes = <KEY_MENU KEY_BACK
> +					  KEY_HOMEPAGE KEY_SEARCH>;
> +			interrupt-parent = <&gpj4>;
> +			interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
> +
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&touchkey_irq>;
> +		};
> +	};
> +
> +	i2c_prox: i2c-gpio-6 {
> +		compatible = "i2c-gpio";
> +		sda-gpios = <&gpg2 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		scl-gpios = <&gpg0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		i2c-gpio,delay-us = <2>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&prox_i2c_pins>;
> +
> +		/* Sharp gp2a prox/light sensor, incomplete mainline binding */

The same - disable, unless you access it from user-space.

> +	};
> +
> +	i2c_magnetometer: i2c-gpio-7 {
> +		compatible = "i2c-gpio";
> +		sda-gpios = <&gpj0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		scl-gpios = <&gpj0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +		i2c-gpio,delay-us = <2>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&magnetometer_i2c_pins>;
> +
> +		/* Yamaha yas529 magnetometer, no mainline binding */

The same - disable, unless you access it from user-space.

> +	};
> +
>  	vibrator: pwm-vibrator {
>  		compatible = "pwm-vibrator";
>  		pwms = <&pwm 1 44642 0>;
> @@ -343,6 +492,39 @@
>  		offset = <0x681c>; /* PS_HOLD_CONTROL */
>  		value = <0x5200>;
>  	};
> +
> +	spi_lcd: spi-gpio-0 {
> +		compatible = "spi-gpio";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		sck-gpios = <&mp04 1 GPIO_ACTIVE_HIGH>;
> +		mosi-gpios = <&mp04 3 GPIO_ACTIVE_HIGH>;
> +		cs-gpios = <&mp01 1 GPIO_ACTIVE_HIGH>;
> +		num-chipselects = <1>;
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&lcd_spi_pins>;
> +
> +		panel@0 {
> +			compatible = "samsung,s6e63m0";
> +			reg = <0>;
> +			reset-gpios = <&mp05 5 GPIO_ACTIVE_LOW>;
> +			vdd3-supply = <&ldo7_reg>;
> +			vci-supply = <&ldo17_reg>;
> +			spi-cs-high;
> +			spi-max-frequency = <1200000>;
> +
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&panel_rst>;
> +
> +			port {
> +				lcd_ep: endpoint {
> +					remote-endpoint = <&fimd_ep>;
> +				};
> +			};
> +		};
> +	};
>  };
>  
>  &fimd {
> @@ -353,18 +535,13 @@
>  	samsung,invert-vden;
>  	samsung,invert-vclk;
>  
> -	display-timings {
> -		timing-0 {
> -			/* 480x800@60Hz */
> -			clock-frequency = <25628040>;
> -			hactive = <480>;
> -			vactive = <800>;
> -			hfront-porch = <16>;
> -			hback-porch = <16>;
> -			hsync-len = <2>;
> -			vfront-porch = <28>;
> -			vback-porch = <1>;
> -			vsync-len = <2>;
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +
> +	port@3 {
> +		reg = <3>;
> +		fimd_ep: endpoint {
> +			remote-endpoint = <&lcd_ep>;
>  		};
>  	};
>  };
> @@ -405,6 +582,19 @@
>  		samsung,pin-val = <1>;
>  	};
>  
> +	codec_ldo: codec-ldo {
> +		samsung,pins = "gpf3-4";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +	};
> +
> +	prox_i2c_pins: gp2a-i2c-pins {
> +		samsung,pins = "gpg0-2", "gpg2-2";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
> +
>  	wlan_gpio_rst: wlan-gpio-rst {
>  		samsung,pins = "gpg1-2";
>  		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> @@ -438,6 +628,13 @@
>  		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
>  	};
>  
> +	magnetometer_i2c_pins: yas529-i2c-pins {
> +		samsung,pins = "gpj0-0", "gpj0-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
> +
>  	ts_irq: ts-irq {
>  		samsung,pins = "gpj0-5";
>  		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> @@ -445,17 +642,66 @@
>  		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
>  	};
>  
> +	touchkey_i2c_pins: touchkey-i2c-pins {
> +		samsung,pins = "gpj3-0", "gpj3-1";
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
> +
> +	touchkey_vdd_ena: touchkey-vdd-ena {
> +		samsung,pins = "gpj3-2";
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
> +
> +	musb_i2c_pins: musb-i2c-pins {
> +		samsung,pins = "gpj3-4", "gpj3-5";
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
> +
> +	accel_i2c_pins: accel-i2c-pins {
> +		samsung,pins = "gpj3-6", "gpj3-7";
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
> +
>  	pmic_i2c_pins: pmic-i2c-pins {
>  		samsung,pins = "gpj4-0", "gpj4-3";
>  		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
>  		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
>  	};
>  
> +	touchkey_irq: touchkey-irq {
> +		samsung,pins = "gpj4-1";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_UP>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
> +
> +	lcd_spi_pins: spi-lcd-pins {
> +		samsung,pins = "mp01-1", "mp04-1", "mp04-3";
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
> +
>  	fg_i2c_pins: fg-i2c-pins {
>  		samsung,pins = "mp05-0", "mp05-1";
>  		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
>  		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
>  	};
> +
> +	sound_i2c_pins: sound-i2c-pins {
> +		samsung,pins = "mp05-2", "mp05-3";
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
> +
> +	panel_rst: panel-rst {
> +		samsung,pins = "mp05-5";
> +		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +	};
>  };
>  
>  &pwm {
> diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> index 94dcb9b64b9a..42e6e2de197d 100644
> --- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> +++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> @@ -278,3 +278,9 @@
>  		PIN_SLP(mp07-7, INPUT, DOWN);
>  	};
>  };
> +
> +&wm8994 {
> +	/* GPIO3 (BCLK2) and GPIO4 (LRCLK2) as outputs */
> +	wlf,gpio-cfg = <0xa101 0x8100 0x8100 0x8100 0x8100 0xa101
> +		0x0100 0x8100 0x0100 0x0100 0x0100>;

Indent the line till opening <.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 09/13] arm: dts: s5pv210: Add an ADC node
  2020-04-26 18:36 ` [PATCH 09/13] arm: dts: s5pv210: Add an ADC node Jonathan Bakker
@ 2020-04-28 10:26   ` Krzysztof Kozlowski
  2020-04-28 22:27     ` Jonathan Bakker
  0 siblings, 1 reply; 46+ messages in thread
From: Krzysztof Kozlowski @ 2020-04-28 10:26 UTC (permalink / raw)
  To: Jonathan Bakker
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

On Sun, Apr 26, 2020 at 11:36:00AM -0700, Jonathan Bakker wrote:
> The exynos-adc driver now supports the S5PV210, so add the DT
> node so that devices can use it.
> 
> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
> ---
>  arch/arm/boot/dts/s5pv210.dtsi | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
> index 2ad642f51fd9..b3b6ad2889f9 100644
> --- a/arch/arm/boot/dts/s5pv210.dtsi
> +++ b/arch/arm/boot/dts/s5pv210.dtsi
> @@ -159,6 +159,18 @@
>  			};
>  		};
>  
> +		adc: adc@126c0000 {
> +			compatible = "samsung,s5pv210-adc";
> +			reg = <0xe1700000 0x1000>;

reg does not match the node address.

Run "make dtbs W=1" and be sure there are no new warnings.

Best regards,
Krzysztof


> +			interrupt-parent = <&vic2>;
> +			interrupts = <23>, <24>;
> +			clocks = <&clocks CLK_TSADC>;
> +			clock-names = "adc";
> +			#io-channel-cells = <1>;
> +			io-channel-ranges;
> +			status = "disabled";
> +		};
> +
>  		spi0: spi@e1300000 {
>  			compatible = "samsung,s5pv210-spi";
>  			reg = <0xe1300000 0x1000>;
> -- 
> 2.20.1
> 

^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 10/13] arm: dts: s5pv210: aries: Enable ADC node
  2020-04-26 18:36 ` [PATCH 10/13] arm: dts: s5pv210: aries: Enable " Jonathan Bakker
@ 2020-04-28 10:29   ` Krzysztof Kozlowski
  2020-04-28 22:26     ` Jonathan Bakker
  0 siblings, 1 reply; 46+ messages in thread
From: Krzysztof Kozlowski @ 2020-04-28 10:29 UTC (permalink / raw)
  To: Jonathan Bakker
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

On Sun, Apr 26, 2020 at 11:36:01AM -0700, Jonathan Bakker wrote:
> On aries boards, the ADC is used for things such as jack detection
> and battery temperature monitoring.  It is connected to ldo4 of max8998,
> so only enable that regulator when we are actually using the ADC.
> 
> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
> ---
>  arch/arm/boot/dts/s5pv210-aries.dtsi | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
> index f30bdcb9c083..a103ddb0d720 100644
> --- a/arch/arm/boot/dts/s5pv210-aries.dtsi
> +++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
> @@ -193,11 +193,6 @@
>  					regulator-name = "VADC_3.3V";
>  					regulator-min-microvolt = <3300000>;
>  					regulator-max-microvolt = <3300000>;
> -					regulator-always-on;
> -
> -					regulator-state-mem {
> -						regulator-off-in-suspend;
> -					};

I would expect to keep it disabled during suspend. Why you had to remove
this part?

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 12/13] arm: dts: s5pv210: Correct FIMC definitions
  2020-04-26 18:36 ` [PATCH 12/13] arm: dts: s5pv210: Correct FIMC definitions Jonathan Bakker
@ 2020-04-28 10:32   ` Krzysztof Kozlowski
  2020-04-28 22:31     ` Jonathan Bakker
  0 siblings, 1 reply; 46+ messages in thread
From: Krzysztof Kozlowski @ 2020-04-28 10:32 UTC (permalink / raw)
  To: Jonathan Bakker
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

On Sun, Apr 26, 2020 at 11:36:03AM -0700, Jonathan Bakker wrote:
> The extended mainscaler is only available on FIMC1 and there
> are minimum pixel alignments that differ from the default.
> Additionally, the cam-if interface is available on all three
> while FIMC2 has no rotators.  The lcd-wb interface is supported
> on FIMC1.
> 
> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
> ---
>  arch/arm/boot/dts/s5pv210.dtsi | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
> index b3b6ad2889f9..3cbf6c05f42a 100644
> --- a/arch/arm/boot/dts/s5pv210.dtsi
> +++ b/arch/arm/boot/dts/s5pv210.dtsi
> @@ -626,7 +626,7 @@
>  				clock-names = "fimc",
>  						"sclk_fimc";
>  				samsung,pix-limits = <4224 8192 1920 4224>;
> -				samsung,mainscaler-ext;
> +				samsung,min-pix-alignment = <16 8>;
>  				samsung,cam-if;
>  			};
>  
> @@ -639,9 +639,11 @@
>  						<&clocks SCLK_FIMC1>;
>  				clock-names = "fimc",
>  						"sclk_fimc";
> -				samsung,pix-limits = <4224 8192 1920 4224>;
>  				samsung,mainscaler-ext;
> +				samsung,min-pix-alignment = <1 1>;
> +				samsung,pix-limits = <4224 8192 1920 4224>;

The line just moved around. I guess this was not intended?

Best regards,
Krzysztof

>  				samsung,cam-if;
> +				samsung,lcd-wb;
>  			};
>  
>  			fimc2: fimc@fb400000 {
> @@ -653,9 +655,10 @@
>  						<&clocks SCLK_FIMC2>;
>  				clock-names = "fimc",
>  						"sclk_fimc";
> -				samsung,pix-limits = <4224 8192 1920 4224>;
> -				samsung,mainscaler-ext;
> -				samsung,lcd-wb;
> +				samsung,pix-limits = <1920 8192 1280 1920>;
> +				samsung,min-pix-alignment = <16 8>;
> +				samsung,rotators = <0>;
> +				samsung,cam-if;
>  			};
>  		};
>  
> -- 
> 2.20.1
> 

^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 10/13] arm: dts: s5pv210: aries: Enable ADC node
  2020-04-28 10:29   ` Krzysztof Kozlowski
@ 2020-04-28 22:26     ` Jonathan Bakker
  0 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-28 22:26 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

Hi Krzysztof,

On 2020-04-28 3:29 a.m., Krzysztof Kozlowski wrote:
> On Sun, Apr 26, 2020 at 11:36:01AM -0700, Jonathan Bakker wrote:
>> On aries boards, the ADC is used for things such as jack detection
>> and battery temperature monitoring.  It is connected to ldo4 of max8998,
>> so only enable that regulator when we are actually using the ADC.
>>
>> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
>> ---
>>  arch/arm/boot/dts/s5pv210-aries.dtsi | 11 ++++++-----
>>  1 file changed, 6 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
>> index f30bdcb9c083..a103ddb0d720 100644
>> --- a/arch/arm/boot/dts/s5pv210-aries.dtsi
>> +++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
>> @@ -193,11 +193,6 @@
>>  					regulator-name = "VADC_3.3V";
>>  					regulator-min-microvolt = <3300000>;
>>  					regulator-max-microvolt = <3300000>;
>> -					regulator-always-on;
>> -
>> -					regulator-state-mem {
>> -						regulator-off-in-suspend;
>> -					};
> 
> I would expect to keep it disabled during suspend. Why you had to remove
> this part?

It was my thinking that if nothing was using it, then it would automatically be disabled and stay
that way over suspend.

However, looking at things again, it does make sense to make sure that it is disabled as it serves
no purpose to stay enabled over suspend.  I'll remove this change for v2.

> 
> Best regards,
> Krzysztof
> 

Thanks,
Jonathan

^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 09/13] arm: dts: s5pv210: Add an ADC node
  2020-04-28 10:26   ` Krzysztof Kozlowski
@ 2020-04-28 22:27     ` Jonathan Bakker
  0 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-28 22:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

Hi Krzysztof,

On 2020-04-28 3:26 a.m., Krzysztof Kozlowski wrote:
> On Sun, Apr 26, 2020 at 11:36:00AM -0700, Jonathan Bakker wrote:
>> The exynos-adc driver now supports the S5PV210, so add the DT
>> node so that devices can use it.
>>
>> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
>> ---
>>  arch/arm/boot/dts/s5pv210.dtsi | 12 ++++++++++++
>>  1 file changed, 12 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
>> index 2ad642f51fd9..b3b6ad2889f9 100644
>> --- a/arch/arm/boot/dts/s5pv210.dtsi
>> +++ b/arch/arm/boot/dts/s5pv210.dtsi
>> @@ -159,6 +159,18 @@
>>  			};
>>  		};
>>  
>> +		adc: adc@126c0000 {
>> +			compatible = "samsung,s5pv210-adc";
>> +			reg = <0xe1700000 0x1000>;
> 
> reg does not match the node address.
> 
> Run "make dtbs W=1" and be sure there are no new warnings.

Thanks, will change for v2.

> 
> Best regards,
> Krzysztof
> 
> 
>> +			interrupt-parent = <&vic2>;
>> +			interrupts = <23>, <24>;
>> +			clocks = <&clocks CLK_TSADC>;
>> +			clock-names = "adc";
>> +			#io-channel-cells = <1>;
>> +			io-channel-ranges;
>> +			status = "disabled";
>> +		};
>> +
>>  		spi0: spi@e1300000 {
>>  			compatible = "samsung,s5pv210-spi";
>>  			reg = <0xe1300000 0x1000>;
>> -- 
>> 2.20.1
>>

Jonathan

^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 12/13] arm: dts: s5pv210: Correct FIMC definitions
  2020-04-28 10:32   ` Krzysztof Kozlowski
@ 2020-04-28 22:31     ` Jonathan Bakker
  0 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-28 22:31 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

Hi Krzysztof,

On 2020-04-28 3:32 a.m., Krzysztof Kozlowski wrote:
> On Sun, Apr 26, 2020 at 11:36:03AM -0700, Jonathan Bakker wrote:
>> The extended mainscaler is only available on FIMC1 and there
>> are minimum pixel alignments that differ from the default.
>> Additionally, the cam-if interface is available on all three
>> while FIMC2 has no rotators.  The lcd-wb interface is supported
>> on FIMC1.
>>
>> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
>> ---
>>  arch/arm/boot/dts/s5pv210.dtsi | 13 ++++++++-----
>>  1 file changed, 8 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
>> index b3b6ad2889f9..3cbf6c05f42a 100644
>> --- a/arch/arm/boot/dts/s5pv210.dtsi
>> +++ b/arch/arm/boot/dts/s5pv210.dtsi
>> @@ -626,7 +626,7 @@
>>  				clock-names = "fimc",
>>  						"sclk_fimc";
>>  				samsung,pix-limits = <4224 8192 1920 4224>;
>> -				samsung,mainscaler-ext;
>> +				samsung,min-pix-alignment = <16 8>;
>>  				samsung,cam-if;
>>  			};
>>  
>> @@ -639,9 +639,11 @@
>>  						<&clocks SCLK_FIMC1>;
>>  				clock-names = "fimc",
>>  						"sclk_fimc";
>> -				samsung,pix-limits = <4224 8192 1920 4224>;
>>  				samsung,mainscaler-ext;
>> +				samsung,min-pix-alignment = <1 1>;
>> +				samsung,pix-limits = <4224 8192 1920 4224>;
> 
> The line just moved around. I guess this was not intended?

Correct, will fix in v2.

> 
> Best regards,
> Krzysztof
> 

Thanks,
Jonathan

^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 06/13] arm: dts: s5pv210: aries: Add support for more devices
  2020-04-28 10:20   ` Krzysztof Kozlowski
@ 2020-04-28 23:32     ` Jonathan Bakker
  2020-05-01 13:31       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-28 23:32 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel, Paweł Chmiel

Hi Krzysztof,

On 2020-04-28 3:20 a.m., Krzysztof Kozlowski wrote:
> On Sun, Apr 26, 2020 at 11:35:57AM -0700, Jonathan Bakker wrote:
>> Add support for following devices:
>>   - touchkeys connected over i2c-gpio
>>   - s6e63m0 panel connected over spi-gpio
>>   - fsa9480 microusb switch over i2c-gpio
>>   - wm8994 over i2c-gpio (no machine driver yet)
>>   - all common i2c-gpio devices
> 
> Please split it per functionality, e.g.:
> 1. Add sound,
> 2. Add panel,
> 3. Add touchkeys (unless part of panel),
> 4. The remaining i2c-gpio devices without bindings could go as one.

Ok, will do.

> 
>>
>> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
>> Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
>> ---
>>  arch/arm/boot/dts/s5pv210-aries.dtsi      | 282 ++++++++++++++++++++--
>>  arch/arm/boot/dts/s5pv210-fascinate4g.dts |   6 +
>>  2 files changed, 270 insertions(+), 18 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
>> index f83df426f2b6..ef966d13d83d 100644
>> --- a/arch/arm/boot/dts/s5pv210-aries.dtsi
>> +++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
>> @@ -12,8 +12,14 @@
>>  	compatible = "samsung,aries", "samsung,s5pv210";
>>  
>>  	aliases {
>> +		i2c4 = &i2c_sound;
>> +		i2c5 = &i2c_accel;
>>  		i2c6 = &i2c_pmic;
>> +		i2c7 = &i2c_musb;
>>  		i2c9 = &i2c_fuel;
>> +		i2c10 = &i2c_touchkey;
>> +		i2c11 = &i2c_prox;
>> +		i2c12 = &i2c_magnetometer;
>>  	};
>>  
>>  	memory@30000000 {
>> @@ -48,6 +54,18 @@
>>  		gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
>>  	};
>>  
>> +	touchkey_vdd: regulator-fixed-1 {
>> +		compatible = "regulator-fixed";
>> +		regulator-name = "VTOUCH_3.3V";
>> +		regulator-min-microvolt = <3300000>;
>> +		regulator-max-microvolt = <3300000>;
>> +		enable-active-high;
>> +		gpio = <&gpj3 2 GPIO_ACTIVE_HIGH>;
>> +
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&touchkey_vdd_ena>;
>> +	};
>> +
>>  	wifi_pwrseq: wifi-pwrseq {
>>  		compatible = "mmc-pwrseq-simple";
>>  		reset-gpios = <&gpg1 2 GPIO_ACTIVE_LOW>;
>> @@ -57,7 +75,69 @@
>>  		power-off-delay-us = <500>;
>>  	};
>>  
>> -	i2c_pmic: i2c-gpio-0 {
>> +	i2c_sound: i2c-gpio-0 {
>> +		compatible = "i2c-gpio";
>> +		sda-gpios = <&mp05 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>> +		scl-gpios = <&mp05 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>> +		i2c-gpio,delay-us = <2>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&sound_i2c_pins>;
>> +
>> +		wm8994: wm8994@1a {
>> +			compatible = "wlf,wm8994";
>> +			reg = <0x1a>;
>> +
>> +			#sound-dai-cells = <0>;
>> +
>> +			gpio-controller;
>> +			#gpio-cells = <2>;
>> +
>> +			clocks = <&clocks MOUT_CLKOUT>;
>> +			clock-names = "MCLK1";
>> +
>> +			AVDD2-supply = <&buck3_reg>;
>> +			DBVDD-supply = <&buck3_reg>;
> 
> No such supply, check the bindings.
> 

Well, it may not be in the bindings, but the driver definitely requires it :) See drivers/mfd/wm8994-core.c

What's the best way of dealing with this situation?

>> +			CPVDD-supply = <&buck3_reg>;
>> +			SPKVDD1-supply = <&buck3_reg>;
>> +			SPKVDD2-supply = <&buck3_reg>;
>> +
>> +			wlf,gpio-cfg = <0xa101 0x8100 0x0100 0x0100 0x8100
>> +					0xa101 0x0100 0x8100 0x0100 0x0100
>> +					0x0100>;
>> +
>> +			wlf,ldo1ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
>> +			wlf,ldo2ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
>> +
>> +			wlf,lineout1-se;
>> +			wlf,lineout2-se;
>> +
>> +			assigned-clocks = <&clocks MOUT_CLKOUT>;
>> +			assigned-clock-rates = <0>;
>> +			assigned-clock-parents = <&xusbxti>;
>> +
>> +			pinctrl-names = "default";
>> +			pinctrl-0 = <&codec_ldo>;
>> +		};
>> +	};
>> +
>> +	i2c_accel: i2c-gpio-1 {
>> +		compatible = "i2c-gpio";
>> +		sda-gpios = <&gpj3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>> +		scl-gpios = <&gpj3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>> +		i2c-gpio,delay-us = <2>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&accel_i2c_pins>;
>> +
>> +		/* bma023 accelerometer, no mainline binding */
> 
> status disabled ... unless you need it for user-space I2C tools?
> 

Nope, but wanted to add them all in due to adding the si4709 in galaxys.  I was having
issues with accidentally overwriting previously named nodes (ie having i2c-gpio-0 in
both the common dtsi and the device specific dts) so I wanted to get the numbers
nailed down.



<snip>

>>  
>>  &pwm {
>> diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
>> index 94dcb9b64b9a..42e6e2de197d 100644
>> --- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
>> +++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
>> @@ -278,3 +278,9 @@
>>  		PIN_SLP(mp07-7, INPUT, DOWN);
>>  	};
>>  };
>> +
>> +&wm8994 {
>> +	/* GPIO3 (BCLK2) and GPIO4 (LRCLK2) as outputs */
>> +	wlf,gpio-cfg = <0xa101 0x8100 0x8100 0x8100 0x8100 0xa101
>> +		0x0100 0x8100 0x0100 0x0100 0x0100>;
> 
> Indent the line till opening <.

Will do.

> 
> Best regards,
> Krzysztof
> 


Thanks,
Jonathan

^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 02/13] arm: dts: s5pv210: fascinate4g: Add sleep GPIO configuration
  2020-04-28 10:02   ` Krzysztof Kozlowski
@ 2020-04-28 23:49     ` Jonathan Bakker
  2020-05-01 13:10       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 46+ messages in thread
From: Jonathan Bakker @ 2020-04-28 23:49 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

Hi Krzysztof,

On 2020-04-28 3:02 a.m., Krzysztof Kozlowski wrote:
> On Sun, Apr 26, 2020 at 11:35:53AM -0700, Jonathan Bakker wrote:
>> In order to minimize leakage current during sleep, set a config
>> for sleep GPIOs.
>>
>> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
>> ---
>>  arch/arm/boot/dts/s5pv210-fascinate4g.dts | 242 ++++++++++++++++++++++
>>  1 file changed, 242 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
>> index 07a8d9bbe5b8..94dcb9b64b9a 100644
>> --- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
>> +++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
>> @@ -36,3 +36,245 @@
>>  		};
>>  	};
>>  };
>> +
>> +&pinctrl0 {
>> +	pinctrl-names = "default";
>> +	pinctrl-0 = <&sleep_cfg>;
>> +
>> +	sleep_cfg: sleep-cfg {
>> +		PIN_SLP(gpa0-0, PREV, NONE);
>> +		PIN_SLP(gpa0-1, PREV, NONE);
>> +		PIN_SLP(gpa0-2, PREV, NONE);
>> +		PIN_SLP(gpa0-3, OUT1, NONE);
> 
> I would be happy to see some reasoning why certain pins have disabled
> pull down (e.g. they are not connected or you use the same configuration
> as running one) and why you set them as output.
> 

Mostly it's copied from the vendor kernel configuration.  Without schematics, I can
only guess what's actually there.  I can go through and note what each pin appears
to be used for if you'd like.

>> +		PIN_SLP(gpa0-4, PREV, NONE);
>> +		PIN_SLP(gpa0-5, PREV, NONE);
>> +		PIN_SLP(gpa0-6, PREV, NONE);
>> +		PIN_SLP(gpa0-7, PREV, NONE);
>> +
>> +		PIN_SLP(gpa1-0, INPUT, DOWN);
>> +		PIN_SLP(gpa1-1, OUT0, NONE);
>> +		PIN_SLP(gpa1-2, INPUT, DOWN);
>> +		PIN_SLP(gpa1-3, OUT0, NONE);
>> +
>> +		PIN_SLP(gpb-0, OUT0, NONE);
>> +		PIN_SLP(gpb-1, OUT1, NONE);
>> +		PIN_SLP(gpb-2, OUT0, NONE);
>> +		PIN_SLP(gpb-3, PREV, NONE);
>> +		PIN_SLP(gpb-4, INPUT, NONE);
>> +		PIN_SLP(gpb-5, PREV, NONE);
>> +		PIN_SLP(gpb-6, INPUT, DOWN);
>> +		PIN_SLP(gpb-7, OUT0, NONE);
>> +
>> +		PIN_SLP(gpc0-0, OUT0, NONE);
>> +		PIN_SLP(gpc0-1, INPUT, DOWN);
>> +		PIN_SLP(gpc0-2, OUT0, NONE);
>> +		PIN_SLP(gpc0-3, INPUT, DOWN);
>> +		PIN_SLP(gpc0-4, OUT0, NONE);
>> +
>> +		PIN_SLP(gpc1-0, INPUT, DOWN);
>> +		PIN_SLP(gpc1-1, INPUT, DOWN);
>> +		PIN_SLP(gpc1-2, INPUT, DOWN);
>> +		PIN_SLP(gpc1-3, INPUT, DOWN);
>> +		PIN_SLP(gpc1-4, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpd0-0, INPUT, DOWN);
>> +		PIN_SLP(gpd0-1, OUT0, NONE);
>> +		PIN_SLP(gpd0-2, INPUT, DOWN);
>> +		PIN_SLP(gpd0-3, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpd1-0, INPUT, NONE);
>> +		PIN_SLP(gpd1-1, INPUT, NONE);
>> +		PIN_SLP(gpd1-2, INPUT, DOWN);
>> +		PIN_SLP(gpd1-3, INPUT, DOWN);
>> +		PIN_SLP(gpd1-4, INPUT, DOWN);
>> +		PIN_SLP(gpd1-5, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpe0-0, INPUT, DOWN);
>> +		PIN_SLP(gpe0-1, INPUT, DOWN);
>> +		PIN_SLP(gpe0-2, INPUT, DOWN);
>> +		PIN_SLP(gpe0-3, INPUT, DOWN);
>> +		PIN_SLP(gpe0-4, INPUT, DOWN);
>> +		PIN_SLP(gpe0-5, INPUT, DOWN);
>> +		PIN_SLP(gpe0-6, INPUT, DOWN);
>> +		PIN_SLP(gpe0-7, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpe1-0, INPUT, DOWN);
>> +		PIN_SLP(gpe1-1, INPUT, DOWN);
>> +		PIN_SLP(gpe1-2, INPUT, DOWN);
>> +		PIN_SLP(gpe1-3, OUT0, NONE);
>> +		PIN_SLP(gpe1-4, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpf0-0, OUT0, NONE);
>> +		PIN_SLP(gpf0-1, OUT0, NONE);
>> +		PIN_SLP(gpf0-2, OUT0, NONE);
>> +		PIN_SLP(gpf0-3, OUT0, NONE);
>> +		PIN_SLP(gpf0-4, OUT0, NONE);
>> +		PIN_SLP(gpf0-5, OUT0, NONE);
>> +		PIN_SLP(gpf0-6, OUT0, NONE);
>> +		PIN_SLP(gpf0-7, OUT0, NONE);
>> +
>> +		PIN_SLP(gpf1-0, OUT0, NONE);
>> +		PIN_SLP(gpf1-1, OUT0, NONE);
>> +		PIN_SLP(gpf1-2, OUT0, NONE);
>> +		PIN_SLP(gpf1-3, OUT0, NONE);
>> +		PIN_SLP(gpf1-4, OUT0, NONE);
>> +		PIN_SLP(gpf1-5, OUT0, NONE);
>> +		PIN_SLP(gpf1-6, OUT0, NONE);
>> +		PIN_SLP(gpf1-7, OUT0, NONE);
>> +
>> +		PIN_SLP(gpf2-0, OUT0, NONE);
>> +		PIN_SLP(gpf2-1, OUT0, NONE);
>> +		PIN_SLP(gpf2-2, OUT0, NONE);
>> +		PIN_SLP(gpf2-3, OUT0, NONE);
>> +		PIN_SLP(gpf2-4, OUT0, NONE);
>> +		PIN_SLP(gpf2-5, OUT0, NONE);
>> +		PIN_SLP(gpf2-6, OUT0, NONE);
>> +		PIN_SLP(gpf2-7, OUT0, NONE);
>> +
>> +		PIN_SLP(gpf3-0, OUT0, NONE);
>> +		PIN_SLP(gpf3-1, OUT0, NONE);
>> +		PIN_SLP(gpf3-2, OUT0, NONE);
>> +		PIN_SLP(gpf3-3, OUT0, NONE);
>> +		PIN_SLP(gpf3-4, PREV, NONE);
>> +		PIN_SLP(gpf3-5, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpg0-0, INPUT, DOWN);
>> +		PIN_SLP(gpg0-1, INPUT, DOWN);
>> +		PIN_SLP(gpg0-2, INPUT, NONE);
>> +		PIN_SLP(gpg0-3, INPUT, DOWN);
>> +		PIN_SLP(gpg0-4, INPUT, DOWN);
>> +		PIN_SLP(gpg0-5, INPUT, DOWN);
>> +		PIN_SLP(gpg0-6, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpg1-0, OUT0, NONE);
>> +		PIN_SLP(gpg1-1, OUT1, NONE);
>> +		PIN_SLP(gpg1-2, PREV, NONE);
>> +		PIN_SLP(gpg1-3, OUT1, NONE);
>> +		PIN_SLP(gpg1-4, OUT1, NONE);
>> +		PIN_SLP(gpg1-5, OUT1, NONE);
>> +		PIN_SLP(gpg1-6, OUT1, NONE);
>> +
>> +		PIN_SLP(gpg2-0, OUT0, NONE);
>> +		PIN_SLP(gpg2-1, OUT0, NONE);
>> +		PIN_SLP(gpg2-2, INPUT, NONE);
>> +		PIN_SLP(gpg2-3, OUT0, NONE);
>> +		PIN_SLP(gpg2-4, OUT0, NONE);
>> +		PIN_SLP(gpg2-5, OUT0, NONE);
>> +		PIN_SLP(gpg2-6, OUT0, NONE);
>> +
>> +		PIN_SLP(gpg3-0, PREV, UP);
>> +		PIN_SLP(gpg3-1, PREV, UP);
>> +		PIN_SLP(gpg3-2, INPUT, NONE);
>> +		PIN_SLP(gpg3-3, INPUT, DOWN);
>> +		PIN_SLP(gpg3-4, OUT0, NONE);
>> +		PIN_SLP(gpg3-5, OUT0, NONE);
>> +		PIN_SLP(gpg3-6, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpi-0, PREV, NONE);
> 
> No such name. Did you mean gpgi?
> 
> 

The node in s5pv210-pinctrl.dtsi is called "gpgi", but the i2s0_bus config
in that file uses just "gpi".  drivers/pinctrl/samsung/pinctrl-exynos-arm.c also
notes it just as "gpi".  I think the node should probably be renamed.

>> +		PIN_SLP(gpi-1, INPUT, DOWN);
>> +		PIN_SLP(gpi-2, PREV, NONE);
>> +		PIN_SLP(gpi-3, PREV, NONE);
>> +		PIN_SLP(gpi-4, PREV, NONE);
>> +		PIN_SLP(gpi-5, INPUT, DOWN);
>> +		PIN_SLP(gpi-6, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpj0-0, INPUT, NONE);
>> +		PIN_SLP(gpj0-1, INPUT, NONE);
>> +		PIN_SLP(gpj0-2, INPUT, NONE);
>> +		PIN_SLP(gpj0-3, INPUT, NONE);
>> +		PIN_SLP(gpj0-4, INPUT, NONE);
>> +		PIN_SLP(gpj0-5, INPUT, DOWN);
>> +		PIN_SLP(gpj0-6, OUT0, NONE);
>> +		PIN_SLP(gpj0-7, INPUT, NONE);
>> +
>> +		PIN_SLP(gpj1-0, OUT1, NONE);
>> +		PIN_SLP(gpj1-1, OUT0, NONE);
>> +		PIN_SLP(gpj1-2, INPUT, DOWN);
>> +		PIN_SLP(gpj1-3, PREV, NONE);
>> +		PIN_SLP(gpj1-4, PREV, NONE);
>> +		PIN_SLP(gpj1-5, OUT0, NONE);
>> +
>> +		PIN_SLP(gpj2-0, INPUT, DOWN);
>> +		PIN_SLP(gpj2-1, INPUT, DOWN);
>> +		PIN_SLP(gpj2-2, OUT0, NONE);
>> +		PIN_SLP(gpj2-3, INPUT, DOWN);
>> +		PIN_SLP(gpj2-4, INPUT, DOWN);
>> +		PIN_SLP(gpj2-5, PREV, NONE);
>> +		PIN_SLP(gpj2-6, PREV, NONE);
>> +		PIN_SLP(gpj2-7, INPUT, DOWN);
>> +
>> +		PIN_SLP(gpj3-0, INPUT, NONE);
>> +		PIN_SLP(gpj3-1, INPUT, NONE);
>> +		PIN_SLP(gpj3-2, OUT0, NONE);
>> +		PIN_SLP(gpj3-3, INPUT, DOWN);
>> +		PIN_SLP(gpj3-4, INPUT, NONE);
>> +		PIN_SLP(gpj3-5, INPUT, NONE);
>> +		PIN_SLP(gpj3-6, INPUT, NONE);
>> +		PIN_SLP(gpj3-7, INPUT, NONE);
>> +
>> +		PIN_SLP(gpj4-0, INPUT, NONE);
>> +		PIN_SLP(gpj4-1, INPUT, DOWN);
>> +		PIN_SLP(gpj4-2, PREV, NONE);
>> +		PIN_SLP(gpj4-3, INPUT, NONE);
>> +		PIN_SLP(gpj4-4, INPUT, DOWN);
>> +
>> +		PIN_SLP(mp01-0, OUT1, NONE);
>> +		PIN_SLP(mp01-1, OUT0, NONE);
>> +		PIN_SLP(mp01-2, INPUT, DOWN);
>> +		PIN_SLP(mp01-3, INPUT, DOWN);
>> +		PIN_SLP(mp01-4, OUT1, NONE);
>> +		PIN_SLP(mp01-5, INPUT, DOWN);
>> +		PIN_SLP(mp01-6, INPUT, DOWN);
>> +		PIN_SLP(mp01-7, INPUT, DOWN);
>> +
>> +		PIN_SLP(mp02-0, INPUT, DOWN);
>> +		PIN_SLP(mp02-1, INPUT, DOWN);
>> +		PIN_SLP(mp02-2, INPUT, NONE);
>> +		PIN_SLP(mp02-3, INPUT, DOWN);
>> +
>> +		PIN_SLP(mp03-0, INPUT, DOWN);
>> +		PIN_SLP(mp03-1, INPUT, DOWN);
>> +		PIN_SLP(mp03-2, OUT1, NONE);
>> +		PIN_SLP(mp03-3, OUT0, NONE);
>> +		PIN_SLP(mp03-4, INPUT, NONE);
>> +		PIN_SLP(mp03-5, OUT0, NONE);
>> +		PIN_SLP(mp03-6, INPUT, DOWN);
>> +		PIN_SLP(mp03-7, INPUT, DOWN);
>> +
>> +		PIN_SLP(mp04-0, INPUT, DOWN);
>> +		PIN_SLP(mp04-1, OUT0, NONE);
>> +		PIN_SLP(mp04-2, INPUT, DOWN);
>> +		PIN_SLP(mp04-3, OUT0, NONE);
>> +		PIN_SLP(mp04-4, INPUT, DOWN);
>> +		PIN_SLP(mp04-5, INPUT, DOWN);
>> +		PIN_SLP(mp04-6, OUT0, NONE);
>> +		PIN_SLP(mp04-7, INPUT, DOWN);
>> +
>> +		PIN_SLP(mp05-0, INPUT, NONE);
>> +		PIN_SLP(mp05-1, INPUT, NONE);
>> +		PIN_SLP(mp05-2, INPUT, NONE);
>> +		PIN_SLP(mp05-3, INPUT, NONE);
>> +		PIN_SLP(mp05-4, INPUT, DOWN);
>> +		PIN_SLP(mp05-5, OUT0, NONE);
>> +		PIN_SLP(mp05-6, INPUT, DOWN);
>> +		PIN_SLP(mp05-7, PREV, NONE);
>> +
>> +		PIN_SLP(mp06-0, INPUT, DOWN);
>> +		PIN_SLP(mp06-1, INPUT, DOWN);
>> +		PIN_SLP(mp06-2, INPUT, DOWN);
>> +		PIN_SLP(mp06-3, INPUT, DOWN);
>> +		PIN_SLP(mp06-4, INPUT, DOWN);
>> +		PIN_SLP(mp06-5, INPUT, DOWN);
>> +		PIN_SLP(mp06-6, INPUT, DOWN);
>> +		PIN_SLP(mp06-7, INPUT, DOWN);
>> +
>> +		PIN_SLP(mp07-0, INPUT, DOWN);
>> +		PIN_SLP(mp07-1, INPUT, DOWN);
>> +		PIN_SLP(mp07-2, INPUT, DOWN);
>> +		PIN_SLP(mp07-3, INPUT, DOWN);
>> +		PIN_SLP(mp07-4, INPUT, DOWN);
>> +		PIN_SLP(mp07-5, INPUT, DOWN);
>> +		PIN_SLP(mp07-6, INPUT, DOWN);
>> +		PIN_SLP(mp07-7, INPUT, DOWN);
>> +	};
> 
> What about gphX?

The gphX pins are in the alive area and don't have power down configs, they retain their
state over suspend.  Therefore the samsung,pin-con-pdn and samsung,pin-pud-pdn properties
have no effect (they're analogous to the gpxX pins in later Samsung SoCs).

> 
> Best regards,
> Krzysztof
> 
>> +};
>> -- 
>> 2.20.1
>>

Thanks,
Jonathan

^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 02/13] arm: dts: s5pv210: fascinate4g: Add sleep GPIO configuration
  2020-04-28 23:49     ` Jonathan Bakker
@ 2020-05-01 13:10       ` Krzysztof Kozlowski
  0 siblings, 0 replies; 46+ messages in thread
From: Krzysztof Kozlowski @ 2020-05-01 13:10 UTC (permalink / raw)
  To: Jonathan Bakker
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

On Tue, Apr 28, 2020 at 04:49:36PM -0700, Jonathan Bakker wrote:
> Hi Krzysztof,
> 
> On 2020-04-28 3:02 a.m., Krzysztof Kozlowski wrote:
> > On Sun, Apr 26, 2020 at 11:35:53AM -0700, Jonathan Bakker wrote:
> >> In order to minimize leakage current during sleep, set a config
> >> for sleep GPIOs.
> >>
> >> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
> >> ---
> >>  arch/arm/boot/dts/s5pv210-fascinate4g.dts | 242 ++++++++++++++++++++++
> >>  1 file changed, 242 insertions(+)
> >>
> >> diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> >> index 07a8d9bbe5b8..94dcb9b64b9a 100644
> >> --- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> >> +++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> >> @@ -36,3 +36,245 @@
> >>  		};
> >>  	};
> >>  };
> >> +
> >> +&pinctrl0 {
> >> +	pinctrl-names = "default";
> >> +	pinctrl-0 = <&sleep_cfg>;
> >> +
> >> +	sleep_cfg: sleep-cfg {
> >> +		PIN_SLP(gpa0-0, PREV, NONE);
> >> +		PIN_SLP(gpa0-1, PREV, NONE);
> >> +		PIN_SLP(gpa0-2, PREV, NONE);
> >> +		PIN_SLP(gpa0-3, OUT1, NONE);
> > 
> > I would be happy to see some reasoning why certain pins have disabled
> > pull down (e.g. they are not connected or you use the same configuration
> > as running one) and why you set them as output.
> > 
> 
> Mostly it's copied from the vendor kernel configuration.  Without schematics, I can
> only guess what's actually there.  I can go through and note what each pin appears
> to be used for if you'd like.

Then please mention that it is based on vendor kernel vx.y for product
ABC.  In such case it will be enough.

> 
> >> +		PIN_SLP(gpa0-4, PREV, NONE);
> >> +		PIN_SLP(gpa0-5, PREV, NONE);
> >> +		PIN_SLP(gpa0-6, PREV, NONE);
> >> +		PIN_SLP(gpa0-7, PREV, NONE);
> >> +
> >> +		PIN_SLP(gpa1-0, INPUT, DOWN);
> >> +		PIN_SLP(gpa1-1, OUT0, NONE);
> >> +		PIN_SLP(gpa1-2, INPUT, DOWN);
> >> +		PIN_SLP(gpa1-3, OUT0, NONE);
> >> +
> >> +		PIN_SLP(gpb-0, OUT0, NONE);
> >> +		PIN_SLP(gpb-1, OUT1, NONE);
> >> +		PIN_SLP(gpb-2, OUT0, NONE);
> >> +		PIN_SLP(gpb-3, PREV, NONE);
> >> +		PIN_SLP(gpb-4, INPUT, NONE);
> >> +		PIN_SLP(gpb-5, PREV, NONE);
> >> +		PIN_SLP(gpb-6, INPUT, DOWN);
> >> +		PIN_SLP(gpb-7, OUT0, NONE);
> >> +
> >> +		PIN_SLP(gpc0-0, OUT0, NONE);
> >> +		PIN_SLP(gpc0-1, INPUT, DOWN);
> >> +		PIN_SLP(gpc0-2, OUT0, NONE);
> >> +		PIN_SLP(gpc0-3, INPUT, DOWN);
> >> +		PIN_SLP(gpc0-4, OUT0, NONE);
> >> +
> >> +		PIN_SLP(gpc1-0, INPUT, DOWN);
> >> +		PIN_SLP(gpc1-1, INPUT, DOWN);
> >> +		PIN_SLP(gpc1-2, INPUT, DOWN);
> >> +		PIN_SLP(gpc1-3, INPUT, DOWN);
> >> +		PIN_SLP(gpc1-4, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpd0-0, INPUT, DOWN);
> >> +		PIN_SLP(gpd0-1, OUT0, NONE);
> >> +		PIN_SLP(gpd0-2, INPUT, DOWN);
> >> +		PIN_SLP(gpd0-3, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpd1-0, INPUT, NONE);
> >> +		PIN_SLP(gpd1-1, INPUT, NONE);
> >> +		PIN_SLP(gpd1-2, INPUT, DOWN);
> >> +		PIN_SLP(gpd1-3, INPUT, DOWN);
> >> +		PIN_SLP(gpd1-4, INPUT, DOWN);
> >> +		PIN_SLP(gpd1-5, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpe0-0, INPUT, DOWN);
> >> +		PIN_SLP(gpe0-1, INPUT, DOWN);
> >> +		PIN_SLP(gpe0-2, INPUT, DOWN);
> >> +		PIN_SLP(gpe0-3, INPUT, DOWN);
> >> +		PIN_SLP(gpe0-4, INPUT, DOWN);
> >> +		PIN_SLP(gpe0-5, INPUT, DOWN);
> >> +		PIN_SLP(gpe0-6, INPUT, DOWN);
> >> +		PIN_SLP(gpe0-7, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpe1-0, INPUT, DOWN);
> >> +		PIN_SLP(gpe1-1, INPUT, DOWN);
> >> +		PIN_SLP(gpe1-2, INPUT, DOWN);
> >> +		PIN_SLP(gpe1-3, OUT0, NONE);
> >> +		PIN_SLP(gpe1-4, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpf0-0, OUT0, NONE);
> >> +		PIN_SLP(gpf0-1, OUT0, NONE);
> >> +		PIN_SLP(gpf0-2, OUT0, NONE);
> >> +		PIN_SLP(gpf0-3, OUT0, NONE);
> >> +		PIN_SLP(gpf0-4, OUT0, NONE);
> >> +		PIN_SLP(gpf0-5, OUT0, NONE);
> >> +		PIN_SLP(gpf0-6, OUT0, NONE);
> >> +		PIN_SLP(gpf0-7, OUT0, NONE);
> >> +
> >> +		PIN_SLP(gpf1-0, OUT0, NONE);
> >> +		PIN_SLP(gpf1-1, OUT0, NONE);
> >> +		PIN_SLP(gpf1-2, OUT0, NONE);
> >> +		PIN_SLP(gpf1-3, OUT0, NONE);
> >> +		PIN_SLP(gpf1-4, OUT0, NONE);
> >> +		PIN_SLP(gpf1-5, OUT0, NONE);
> >> +		PIN_SLP(gpf1-6, OUT0, NONE);
> >> +		PIN_SLP(gpf1-7, OUT0, NONE);
> >> +
> >> +		PIN_SLP(gpf2-0, OUT0, NONE);
> >> +		PIN_SLP(gpf2-1, OUT0, NONE);
> >> +		PIN_SLP(gpf2-2, OUT0, NONE);
> >> +		PIN_SLP(gpf2-3, OUT0, NONE);
> >> +		PIN_SLP(gpf2-4, OUT0, NONE);
> >> +		PIN_SLP(gpf2-5, OUT0, NONE);
> >> +		PIN_SLP(gpf2-6, OUT0, NONE);
> >> +		PIN_SLP(gpf2-7, OUT0, NONE);
> >> +
> >> +		PIN_SLP(gpf3-0, OUT0, NONE);
> >> +		PIN_SLP(gpf3-1, OUT0, NONE);
> >> +		PIN_SLP(gpf3-2, OUT0, NONE);
> >> +		PIN_SLP(gpf3-3, OUT0, NONE);
> >> +		PIN_SLP(gpf3-4, PREV, NONE);
> >> +		PIN_SLP(gpf3-5, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpg0-0, INPUT, DOWN);
> >> +		PIN_SLP(gpg0-1, INPUT, DOWN);
> >> +		PIN_SLP(gpg0-2, INPUT, NONE);
> >> +		PIN_SLP(gpg0-3, INPUT, DOWN);
> >> +		PIN_SLP(gpg0-4, INPUT, DOWN);
> >> +		PIN_SLP(gpg0-5, INPUT, DOWN);
> >> +		PIN_SLP(gpg0-6, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpg1-0, OUT0, NONE);
> >> +		PIN_SLP(gpg1-1, OUT1, NONE);
> >> +		PIN_SLP(gpg1-2, PREV, NONE);
> >> +		PIN_SLP(gpg1-3, OUT1, NONE);
> >> +		PIN_SLP(gpg1-4, OUT1, NONE);
> >> +		PIN_SLP(gpg1-5, OUT1, NONE);
> >> +		PIN_SLP(gpg1-6, OUT1, NONE);
> >> +
> >> +		PIN_SLP(gpg2-0, OUT0, NONE);
> >> +		PIN_SLP(gpg2-1, OUT0, NONE);
> >> +		PIN_SLP(gpg2-2, INPUT, NONE);
> >> +		PIN_SLP(gpg2-3, OUT0, NONE);
> >> +		PIN_SLP(gpg2-4, OUT0, NONE);
> >> +		PIN_SLP(gpg2-5, OUT0, NONE);
> >> +		PIN_SLP(gpg2-6, OUT0, NONE);
> >> +
> >> +		PIN_SLP(gpg3-0, PREV, UP);
> >> +		PIN_SLP(gpg3-1, PREV, UP);
> >> +		PIN_SLP(gpg3-2, INPUT, NONE);
> >> +		PIN_SLP(gpg3-3, INPUT, DOWN);
> >> +		PIN_SLP(gpg3-4, OUT0, NONE);
> >> +		PIN_SLP(gpg3-5, OUT0, NONE);
> >> +		PIN_SLP(gpg3-6, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpi-0, PREV, NONE);
> > 
> > No such name. Did you mean gpgi?
> > 
> > 
> 
> The node in s5pv210-pinctrl.dtsi is called "gpgi", but the i2s0_bus config
> in that file uses just "gpi".  drivers/pinctrl/samsung/pinctrl-exynos-arm.c also
> notes it just as "gpi".  I think the node should probably be renamed.
> 

Good point. Will you send a fix for gpgi->gpi?

> >> +		PIN_SLP(gpi-1, INPUT, DOWN);
> >> +		PIN_SLP(gpi-2, PREV, NONE);
> >> +		PIN_SLP(gpi-3, PREV, NONE);
> >> +		PIN_SLP(gpi-4, PREV, NONE);
> >> +		PIN_SLP(gpi-5, INPUT, DOWN);
> >> +		PIN_SLP(gpi-6, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpj0-0, INPUT, NONE);
> >> +		PIN_SLP(gpj0-1, INPUT, NONE);
> >> +		PIN_SLP(gpj0-2, INPUT, NONE);
> >> +		PIN_SLP(gpj0-3, INPUT, NONE);
> >> +		PIN_SLP(gpj0-4, INPUT, NONE);
> >> +		PIN_SLP(gpj0-5, INPUT, DOWN);
> >> +		PIN_SLP(gpj0-6, OUT0, NONE);
> >> +		PIN_SLP(gpj0-7, INPUT, NONE);
> >> +
> >> +		PIN_SLP(gpj1-0, OUT1, NONE);
> >> +		PIN_SLP(gpj1-1, OUT0, NONE);
> >> +		PIN_SLP(gpj1-2, INPUT, DOWN);
> >> +		PIN_SLP(gpj1-3, PREV, NONE);
> >> +		PIN_SLP(gpj1-4, PREV, NONE);
> >> +		PIN_SLP(gpj1-5, OUT0, NONE);
> >> +
> >> +		PIN_SLP(gpj2-0, INPUT, DOWN);
> >> +		PIN_SLP(gpj2-1, INPUT, DOWN);
> >> +		PIN_SLP(gpj2-2, OUT0, NONE);
> >> +		PIN_SLP(gpj2-3, INPUT, DOWN);
> >> +		PIN_SLP(gpj2-4, INPUT, DOWN);
> >> +		PIN_SLP(gpj2-5, PREV, NONE);
> >> +		PIN_SLP(gpj2-6, PREV, NONE);
> >> +		PIN_SLP(gpj2-7, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(gpj3-0, INPUT, NONE);
> >> +		PIN_SLP(gpj3-1, INPUT, NONE);
> >> +		PIN_SLP(gpj3-2, OUT0, NONE);
> >> +		PIN_SLP(gpj3-3, INPUT, DOWN);
> >> +		PIN_SLP(gpj3-4, INPUT, NONE);
> >> +		PIN_SLP(gpj3-5, INPUT, NONE);
> >> +		PIN_SLP(gpj3-6, INPUT, NONE);
> >> +		PIN_SLP(gpj3-7, INPUT, NONE);
> >> +
> >> +		PIN_SLP(gpj4-0, INPUT, NONE);
> >> +		PIN_SLP(gpj4-1, INPUT, DOWN);
> >> +		PIN_SLP(gpj4-2, PREV, NONE);
> >> +		PIN_SLP(gpj4-3, INPUT, NONE);
> >> +		PIN_SLP(gpj4-4, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(mp01-0, OUT1, NONE);
> >> +		PIN_SLP(mp01-1, OUT0, NONE);
> >> +		PIN_SLP(mp01-2, INPUT, DOWN);
> >> +		PIN_SLP(mp01-3, INPUT, DOWN);
> >> +		PIN_SLP(mp01-4, OUT1, NONE);
> >> +		PIN_SLP(mp01-5, INPUT, DOWN);
> >> +		PIN_SLP(mp01-6, INPUT, DOWN);
> >> +		PIN_SLP(mp01-7, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(mp02-0, INPUT, DOWN);
> >> +		PIN_SLP(mp02-1, INPUT, DOWN);
> >> +		PIN_SLP(mp02-2, INPUT, NONE);
> >> +		PIN_SLP(mp02-3, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(mp03-0, INPUT, DOWN);
> >> +		PIN_SLP(mp03-1, INPUT, DOWN);
> >> +		PIN_SLP(mp03-2, OUT1, NONE);
> >> +		PIN_SLP(mp03-3, OUT0, NONE);
> >> +		PIN_SLP(mp03-4, INPUT, NONE);
> >> +		PIN_SLP(mp03-5, OUT0, NONE);
> >> +		PIN_SLP(mp03-6, INPUT, DOWN);
> >> +		PIN_SLP(mp03-7, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(mp04-0, INPUT, DOWN);
> >> +		PIN_SLP(mp04-1, OUT0, NONE);
> >> +		PIN_SLP(mp04-2, INPUT, DOWN);
> >> +		PIN_SLP(mp04-3, OUT0, NONE);
> >> +		PIN_SLP(mp04-4, INPUT, DOWN);
> >> +		PIN_SLP(mp04-5, INPUT, DOWN);
> >> +		PIN_SLP(mp04-6, OUT0, NONE);
> >> +		PIN_SLP(mp04-7, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(mp05-0, INPUT, NONE);
> >> +		PIN_SLP(mp05-1, INPUT, NONE);
> >> +		PIN_SLP(mp05-2, INPUT, NONE);
> >> +		PIN_SLP(mp05-3, INPUT, NONE);
> >> +		PIN_SLP(mp05-4, INPUT, DOWN);
> >> +		PIN_SLP(mp05-5, OUT0, NONE);
> >> +		PIN_SLP(mp05-6, INPUT, DOWN);
> >> +		PIN_SLP(mp05-7, PREV, NONE);
> >> +
> >> +		PIN_SLP(mp06-0, INPUT, DOWN);
> >> +		PIN_SLP(mp06-1, INPUT, DOWN);
> >> +		PIN_SLP(mp06-2, INPUT, DOWN);
> >> +		PIN_SLP(mp06-3, INPUT, DOWN);
> >> +		PIN_SLP(mp06-4, INPUT, DOWN);
> >> +		PIN_SLP(mp06-5, INPUT, DOWN);
> >> +		PIN_SLP(mp06-6, INPUT, DOWN);
> >> +		PIN_SLP(mp06-7, INPUT, DOWN);
> >> +
> >> +		PIN_SLP(mp07-0, INPUT, DOWN);
> >> +		PIN_SLP(mp07-1, INPUT, DOWN);
> >> +		PIN_SLP(mp07-2, INPUT, DOWN);
> >> +		PIN_SLP(mp07-3, INPUT, DOWN);
> >> +		PIN_SLP(mp07-4, INPUT, DOWN);
> >> +		PIN_SLP(mp07-5, INPUT, DOWN);
> >> +		PIN_SLP(mp07-6, INPUT, DOWN);
> >> +		PIN_SLP(mp07-7, INPUT, DOWN);
> >> +	};
> > 
> > What about gphX?
> 
> The gphX pins are in the alive area and don't have power down configs, they retain their
> state over suspend.  Therefore the samsung,pin-con-pdn and samsung,pin-pud-pdn properties
> have no effect (they're analogous to the gpxX pins in later Samsung SoCs).

Ah, good, thanks.

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 06/13] arm: dts: s5pv210: aries: Add support for more devices
  2020-04-28 23:32     ` Jonathan Bakker
@ 2020-05-01 13:31       ` Krzysztof Kozlowski
  2020-05-01 19:43         ` Jonathan Bakker
  0 siblings, 1 reply; 46+ messages in thread
From: Krzysztof Kozlowski @ 2020-05-01 13:31 UTC (permalink / raw)
  To: Jonathan Bakker
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel, Paweł Chmiel

On Tue, Apr 28, 2020 at 04:32:56PM -0700, Jonathan Bakker wrote:
> Hi Krzysztof,
> 
> On 2020-04-28 3:20 a.m., Krzysztof Kozlowski wrote:
> > On Sun, Apr 26, 2020 at 11:35:57AM -0700, Jonathan Bakker wrote:
> >> Add support for following devices:
> >>   - touchkeys connected over i2c-gpio
> >>   - s6e63m0 panel connected over spi-gpio
> >>   - fsa9480 microusb switch over i2c-gpio
> >>   - wm8994 over i2c-gpio (no machine driver yet)
> >>   - all common i2c-gpio devices
> > 
> > Please split it per functionality, e.g.:
> > 1. Add sound,
> > 2. Add panel,
> > 3. Add touchkeys (unless part of panel),
> > 4. The remaining i2c-gpio devices without bindings could go as one.
> 
> Ok, will do.
> 
> > 
> >>
> >> Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
> >> Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
> >> ---
> >>  arch/arm/boot/dts/s5pv210-aries.dtsi      | 282 ++++++++++++++++++++--
> >>  arch/arm/boot/dts/s5pv210-fascinate4g.dts |   6 +
> >>  2 files changed, 270 insertions(+), 18 deletions(-)
> >>
> >> diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
> >> index f83df426f2b6..ef966d13d83d 100644
> >> --- a/arch/arm/boot/dts/s5pv210-aries.dtsi
> >> +++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
> >> @@ -12,8 +12,14 @@
> >>  	compatible = "samsung,aries", "samsung,s5pv210";
> >>  
> >>  	aliases {
> >> +		i2c4 = &i2c_sound;
> >> +		i2c5 = &i2c_accel;
> >>  		i2c6 = &i2c_pmic;
> >> +		i2c7 = &i2c_musb;
> >>  		i2c9 = &i2c_fuel;
> >> +		i2c10 = &i2c_touchkey;
> >> +		i2c11 = &i2c_prox;
> >> +		i2c12 = &i2c_magnetometer;
> >>  	};
> >>  
> >>  	memory@30000000 {
> >> @@ -48,6 +54,18 @@
> >>  		gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
> >>  	};
> >>  
> >> +	touchkey_vdd: regulator-fixed-1 {
> >> +		compatible = "regulator-fixed";
> >> +		regulator-name = "VTOUCH_3.3V";
> >> +		regulator-min-microvolt = <3300000>;
> >> +		regulator-max-microvolt = <3300000>;
> >> +		enable-active-high;
> >> +		gpio = <&gpj3 2 GPIO_ACTIVE_HIGH>;
> >> +
> >> +		pinctrl-names = "default";
> >> +		pinctrl-0 = <&touchkey_vdd_ena>;
> >> +	};
> >> +
> >>  	wifi_pwrseq: wifi-pwrseq {
> >>  		compatible = "mmc-pwrseq-simple";
> >>  		reset-gpios = <&gpg1 2 GPIO_ACTIVE_LOW>;
> >> @@ -57,7 +75,69 @@
> >>  		power-off-delay-us = <500>;
> >>  	};
> >>  
> >> -	i2c_pmic: i2c-gpio-0 {
> >> +	i2c_sound: i2c-gpio-0 {
> >> +		compatible = "i2c-gpio";
> >> +		sda-gpios = <&mp05 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> >> +		scl-gpios = <&mp05 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> >> +		i2c-gpio,delay-us = <2>;
> >> +		#address-cells = <1>;
> >> +		#size-cells = <0>;
> >> +
> >> +		pinctrl-names = "default";
> >> +		pinctrl-0 = <&sound_i2c_pins>;
> >> +
> >> +		wm8994: wm8994@1a {
> >> +			compatible = "wlf,wm8994";
> >> +			reg = <0x1a>;
> >> +
> >> +			#sound-dai-cells = <0>;
> >> +
> >> +			gpio-controller;
> >> +			#gpio-cells = <2>;
> >> +
> >> +			clocks = <&clocks MOUT_CLKOUT>;
> >> +			clock-names = "MCLK1";
> >> +
> >> +			AVDD2-supply = <&buck3_reg>;
> >> +			DBVDD-supply = <&buck3_reg>;
> > 
> > No such supply, check the bindings.
> > 
> 
> Well, it may not be in the bindings, but the driver definitely requires it :) See drivers/mfd/wm8994-core.c
> 
> What's the best way of dealing with this situation?

I'll send a patch fixing the bindings. However don't you miss the
AVDD1-supply in such case? Driver should report error.

> 
> >> +			CPVDD-supply = <&buck3_reg>;
> >> +			SPKVDD1-supply = <&buck3_reg>;
> >> +			SPKVDD2-supply = <&buck3_reg>;
> >> +
> >> +			wlf,gpio-cfg = <0xa101 0x8100 0x0100 0x0100 0x8100
> >> +					0xa101 0x0100 0x8100 0x0100 0x0100
> >> +					0x0100>;
> >> +
> >> +			wlf,ldo1ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
> >> +			wlf,ldo2ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
> >> +
> >> +			wlf,lineout1-se;
> >> +			wlf,lineout2-se;
> >> +
> >> +			assigned-clocks = <&clocks MOUT_CLKOUT>;
> >> +			assigned-clock-rates = <0>;
> >> +			assigned-clock-parents = <&xusbxti>;
> >> +
> >> +			pinctrl-names = "default";
> >> +			pinctrl-0 = <&codec_ldo>;
> >> +		};
> >> +	};
> >> +
> >> +	i2c_accel: i2c-gpio-1 {
> >> +		compatible = "i2c-gpio";
> >> +		sda-gpios = <&gpj3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> >> +		scl-gpios = <&gpj3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> >> +		i2c-gpio,delay-us = <2>;
> >> +		#address-cells = <1>;
> >> +		#size-cells = <0>;
> >> +
> >> +		pinctrl-names = "default";
> >> +		pinctrl-0 = <&accel_i2c_pins>;
> >> +
> >> +		/* bma023 accelerometer, no mainline binding */
> > 
> > status disabled ... unless you need it for user-space I2C tools?
> > 
> 
> Nope, but wanted to add them all in due to adding the si4709 in galaxys.  I was having
> issues with accidentally overwriting previously named nodes (ie having i2c-gpio-0 in
> both the common dtsi and the device specific dts) so I wanted to get the numbers
> nailed down.

So add them with status disabled. This will document the HW without
enabling empty I2C GPIO bus.

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 46+ messages in thread

* Re: [PATCH 06/13] arm: dts: s5pv210: aries: Add support for more devices
  2020-05-01 13:31       ` Krzysztof Kozlowski
@ 2020-05-01 19:43         ` Jonathan Bakker
  0 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 19:43 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel, Paweł Chmiel

Hi Krzysztof,

On 2020-05-01 6:31 a.m., Krzysztof Kozlowski wrote:
>>
>> Well, it may not be in the bindings, but the driver definitely requires it :) See drivers/mfd/wm8994-core.c
>>
>> What's the best way of dealing with this situation?
> 
> I'll send a patch fixing the bindings. However don't you miss the
> AVDD1-supply in such case? Driver should report error.
> 

Thanks for sending the patch.

AVDD1 and DCVDD are provided internally, via drivers/regulator/wm8994.c and are enabled
by wlf,ldo1ena and wlf,ldo2ena pins.  It's a bit messy, but that's how it's done.

>>
>>>> +			CPVDD-supply = <&buck3_reg>;
>>>> +			SPKVDD1-supply = <&buck3_reg>;
>>>> +			SPKVDD2-supply = <&buck3_reg>;
>>>> +
>>>> +			wlf,gpio-cfg = <0xa101 0x8100 0x0100 0x0100 0x8100
>>>> +					0xa101 0x0100 0x8100 0x0100 0x0100
>>>> +					0x0100>;
>>>> +
>>>> +			wlf,ldo1ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
>>>> +			wlf,ldo2ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
>>>> +
>>>> +			wlf,lineout1-se;
>>>> +			wlf,lineout2-se;
>>>> +
>>>> +			assigned-clocks = <&clocks MOUT_CLKOUT>;
>>>> +			assigned-clock-rates = <0>;
>>>> +			assigned-clock-parents = <&xusbxti>;
>>>> +
>>>> +			pinctrl-names = "default";
>>>> +			pinctrl-0 = <&codec_ldo>;
>>>> +		};
>>>> +	};
>>>> +
>>>> +	i2c_accel: i2c-gpio-1 {
>>>> +		compatible = "i2c-gpio";
>>>> +		sda-gpios = <&gpj3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>>>> +		scl-gpios = <&gpj3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>>>> +		i2c-gpio,delay-us = <2>;
>>>> +		#address-cells = <1>;
>>>> +		#size-cells = <0>;
>>>> +
>>>> +		pinctrl-names = "default";
>>>> +		pinctrl-0 = <&accel_i2c_pins>;
>>>> +
>>>> +		/* bma023 accelerometer, no mainline binding */
>>>
>>> status disabled ... unless you need it for user-space I2C tools?
>>>
>>
>> Nope, but wanted to add them all in due to adding the si4709 in galaxys.  I was having
>> issues with accidentally overwriting previously named nodes (ie having i2c-gpio-0 in
>> both the common dtsi and the device specific dts) so I wanted to get the numbers
>> nailed down.
> 
> So add them with status disabled. This will document the HW without
> enabling empty I2C GPIO bus.

Sounds good, will do.

> 
> Best regards,
> Krzysztof
> 


Thanks,
Jonathan

^ permalink raw reply	[flat|nested] 46+ messages in thread

* [PATCH v2 00/18] S5PV210 and Aries DTS improvements
       [not found] <20200426183604.28494-1-xc-racer2@live.ca>
                   ` (12 preceding siblings ...)
  2020-04-26 18:36 ` [PATCH 13/13] arm: dts: s5pv210: aries: Set MAX8998 GPIO pulls Jonathan Bakker
@ 2020-05-01 23:50 ` Jonathan Bakker
  2020-05-04 15:15   ` Krzysztof Kozlowski
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
  14 siblings, 1 reply; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

This patchset makes several improvements to Aries devices which are
based on S5PV210.  Several pulls on GPIOs were incorrect/not specified,
sleep GPIO configurations have been added, and more devices have been
added.

Touching the common S5PV210 DTSI are the addition of the ADC node
as well as fixes to the FIMC definitions and a sleep GPIO helper
added.  The GPI gpio node name has been corrected.

The patches have been tested on both a GT-i9000 as well as an
SGH-T959P and both can now suspend/resume properly.

Changes from v1:
- Correct ADC node name to match reg
- Restore removed regulator suspend state
- Split commit adding support for new devices into separate commits
  for each device
- Add note where sleep gpio cfgs come from
- Ensure subject of all patches matches subsystem
- Add patch correcting GPI node name


Jonathan Bakker (17):
  ARM: dts: s5pv210: Add helper define for sleep gpio config
  ARM: dts: s5pv210: Add sleep GPIO configuration for fascinate4g
  ARM: dts: s5pv210: Add sleep GPIO configuration for galaxys
  ARM: dts: s5pv210: Set keep-power-in-suspend for SDHCI1 on aries
  ARM: dts: s5pv210: Disable pulls on GPIO i2c adapters for aries
  ARM: dts: s5pv210: Add WM8994 support to aries boards
  ARM: dts: s5pv210: Add FSA9480 support to Aries boards
  ARM: dts: s5pv210: Add touchkey support to aries boards
  ARM: dts: s5pv210: Add panel support to aries boards
  ARM: dts: s5pv210: Add remaining i2c-gpio adapters to aries
  ARM: dts: s5pv210: Disable pull for vibrator ena GPIO on aries
  ARM: dts: s5pv210: Add an ADC node
  ARM: dts: s5pv210: Enable ADC on aries boards
  ARM: dts: s5pv210: Assign clocks to MMC devices on aries
  ARM: dts: s5pv210: Correct FIMC definitions
  ARM: dts: s5pv210: Set MAX8998 GPIO pulls on aries
  ARM: dts: s5pv210: Correct gpi gpio node name

Paweł Chmiel (1):
  ARM: dts: s5pv210: Add si470x fmradio to galaxys

 arch/arm/boot/dts/s5pv210-aries.dtsi      | 359 ++++++++++++++++++++--
 arch/arm/boot/dts/s5pv210-fascinate4g.dts | 249 +++++++++++++++
 arch/arm/boot/dts/s5pv210-galaxys.dts     | 292 ++++++++++++++++++
 arch/arm/boot/dts/s5pv210-pinctrl.dtsi    |   9 +-
 arch/arm/boot/dts/s5pv210.dtsi            |  23 +-
 5 files changed, 907 insertions(+), 25 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 46+ messages in thread

* [PATCH v2 01/18] ARM: dts: s5pv210: Add helper define for sleep gpio config
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 02/18] ARM: dts: s5pv210: Add sleep GPIO configuration for fascinate4g Jonathan Bakker
                     ` (16 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

To simplify writing of sleep gpio configs, add a common helper
similar to what is present for other Samsung CPUs.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-pinctrl.dtsi | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-pinctrl.dtsi b/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
index 7f0c9d447871..609f323d0805 100644
--- a/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
+++ b/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
@@ -18,6 +18,13 @@
 
 #include <dt-bindings/pinctrl/samsung.h>
 
+#define PIN_SLP(_pin, _mode, _pull)					\
+	_pin {								\
+		samsung,pins = #_pin;					\
+		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_ ##_mode>;	\
+		samsung,pin-pud-pdn = <S3C64XX_PIN_PULL_ ##_pull>;	\
+	}
+
 &pinctrl0 {
 	gpa0: gpa0 {
 		gpio-controller;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 02/18] ARM: dts: s5pv210: Add sleep GPIO configuration for fascinate4g
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
  2020-05-01 23:50   ` [PATCH v2 01/18] ARM: dts: s5pv210: Add helper define for sleep gpio config Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 03/18] ARM: dts: s5pv210: Add sleep GPIO configuration for galaxys Jonathan Bakker
                     ` (15 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

In order to minimize leakage current during sleep, set a config
for sleep GPIOs.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>

---
Changes from v1
- Note where sleep GPIOs came from
---
 arch/arm/boot/dts/s5pv210-fascinate4g.dts | 243 ++++++++++++++++++++++
 1 file changed, 243 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
index 07a8d9bbe5b8..65f589e2b72a 100644
--- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
+++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
@@ -36,3 +36,246 @@
 		};
 	};
 };
+
+&pinctrl0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&sleep_cfg>;
+
+	/* Based on vendor kernel v2.6.35.7 */
+	sleep_cfg: sleep-cfg {
+		PIN_SLP(gpa0-0, PREV, NONE);
+		PIN_SLP(gpa0-1, PREV, NONE);
+		PIN_SLP(gpa0-2, PREV, NONE);
+		PIN_SLP(gpa0-3, OUT1, NONE);
+		PIN_SLP(gpa0-4, PREV, NONE);
+		PIN_SLP(gpa0-5, PREV, NONE);
+		PIN_SLP(gpa0-6, PREV, NONE);
+		PIN_SLP(gpa0-7, PREV, NONE);
+
+		PIN_SLP(gpa1-0, INPUT, DOWN);
+		PIN_SLP(gpa1-1, OUT0, NONE);
+		PIN_SLP(gpa1-2, INPUT, DOWN);
+		PIN_SLP(gpa1-3, OUT0, NONE);
+
+		PIN_SLP(gpb-0, OUT0, NONE);
+		PIN_SLP(gpb-1, OUT1, NONE);
+		PIN_SLP(gpb-2, OUT0, NONE);
+		PIN_SLP(gpb-3, PREV, NONE);
+		PIN_SLP(gpb-4, INPUT, NONE);
+		PIN_SLP(gpb-5, PREV, NONE);
+		PIN_SLP(gpb-6, INPUT, DOWN);
+		PIN_SLP(gpb-7, OUT0, NONE);
+
+		PIN_SLP(gpc0-0, OUT0, NONE);
+		PIN_SLP(gpc0-1, INPUT, DOWN);
+		PIN_SLP(gpc0-2, OUT0, NONE);
+		PIN_SLP(gpc0-3, INPUT, DOWN);
+		PIN_SLP(gpc0-4, OUT0, NONE);
+
+		PIN_SLP(gpc1-0, INPUT, DOWN);
+		PIN_SLP(gpc1-1, INPUT, DOWN);
+		PIN_SLP(gpc1-2, INPUT, DOWN);
+		PIN_SLP(gpc1-3, INPUT, DOWN);
+		PIN_SLP(gpc1-4, INPUT, DOWN);
+
+		PIN_SLP(gpd0-0, INPUT, DOWN);
+		PIN_SLP(gpd0-1, OUT0, NONE);
+		PIN_SLP(gpd0-2, INPUT, DOWN);
+		PIN_SLP(gpd0-3, INPUT, DOWN);
+
+		PIN_SLP(gpd1-0, INPUT, NONE);
+		PIN_SLP(gpd1-1, INPUT, NONE);
+		PIN_SLP(gpd1-2, INPUT, DOWN);
+		PIN_SLP(gpd1-3, INPUT, DOWN);
+		PIN_SLP(gpd1-4, INPUT, DOWN);
+		PIN_SLP(gpd1-5, INPUT, DOWN);
+
+		PIN_SLP(gpe0-0, INPUT, DOWN);
+		PIN_SLP(gpe0-1, INPUT, DOWN);
+		PIN_SLP(gpe0-2, INPUT, DOWN);
+		PIN_SLP(gpe0-3, INPUT, DOWN);
+		PIN_SLP(gpe0-4, INPUT, DOWN);
+		PIN_SLP(gpe0-5, INPUT, DOWN);
+		PIN_SLP(gpe0-6, INPUT, DOWN);
+		PIN_SLP(gpe0-7, INPUT, DOWN);
+
+		PIN_SLP(gpe1-0, INPUT, DOWN);
+		PIN_SLP(gpe1-1, INPUT, DOWN);
+		PIN_SLP(gpe1-2, INPUT, DOWN);
+		PIN_SLP(gpe1-3, OUT0, NONE);
+		PIN_SLP(gpe1-4, INPUT, DOWN);
+
+		PIN_SLP(gpf0-0, OUT0, NONE);
+		PIN_SLP(gpf0-1, OUT0, NONE);
+		PIN_SLP(gpf0-2, OUT0, NONE);
+		PIN_SLP(gpf0-3, OUT0, NONE);
+		PIN_SLP(gpf0-4, OUT0, NONE);
+		PIN_SLP(gpf0-5, OUT0, NONE);
+		PIN_SLP(gpf0-6, OUT0, NONE);
+		PIN_SLP(gpf0-7, OUT0, NONE);
+
+		PIN_SLP(gpf1-0, OUT0, NONE);
+		PIN_SLP(gpf1-1, OUT0, NONE);
+		PIN_SLP(gpf1-2, OUT0, NONE);
+		PIN_SLP(gpf1-3, OUT0, NONE);
+		PIN_SLP(gpf1-4, OUT0, NONE);
+		PIN_SLP(gpf1-5, OUT0, NONE);
+		PIN_SLP(gpf1-6, OUT0, NONE);
+		PIN_SLP(gpf1-7, OUT0, NONE);
+
+		PIN_SLP(gpf2-0, OUT0, NONE);
+		PIN_SLP(gpf2-1, OUT0, NONE);
+		PIN_SLP(gpf2-2, OUT0, NONE);
+		PIN_SLP(gpf2-3, OUT0, NONE);
+		PIN_SLP(gpf2-4, OUT0, NONE);
+		PIN_SLP(gpf2-5, OUT0, NONE);
+		PIN_SLP(gpf2-6, OUT0, NONE);
+		PIN_SLP(gpf2-7, OUT0, NONE);
+
+		PIN_SLP(gpf3-0, OUT0, NONE);
+		PIN_SLP(gpf3-1, OUT0, NONE);
+		PIN_SLP(gpf3-2, OUT0, NONE);
+		PIN_SLP(gpf3-3, OUT0, NONE);
+		PIN_SLP(gpf3-4, PREV, NONE);
+		PIN_SLP(gpf3-5, INPUT, DOWN);
+
+		PIN_SLP(gpg0-0, INPUT, DOWN);
+		PIN_SLP(gpg0-1, INPUT, DOWN);
+		PIN_SLP(gpg0-2, INPUT, NONE);
+		PIN_SLP(gpg0-3, INPUT, DOWN);
+		PIN_SLP(gpg0-4, INPUT, DOWN);
+		PIN_SLP(gpg0-5, INPUT, DOWN);
+		PIN_SLP(gpg0-6, INPUT, DOWN);
+
+		PIN_SLP(gpg1-0, OUT0, NONE);
+		PIN_SLP(gpg1-1, OUT1, NONE);
+		PIN_SLP(gpg1-2, PREV, NONE);
+		PIN_SLP(gpg1-3, OUT1, NONE);
+		PIN_SLP(gpg1-4, OUT1, NONE);
+		PIN_SLP(gpg1-5, OUT1, NONE);
+		PIN_SLP(gpg1-6, OUT1, NONE);
+
+		PIN_SLP(gpg2-0, OUT0, NONE);
+		PIN_SLP(gpg2-1, OUT0, NONE);
+		PIN_SLP(gpg2-2, INPUT, NONE);
+		PIN_SLP(gpg2-3, OUT0, NONE);
+		PIN_SLP(gpg2-4, OUT0, NONE);
+		PIN_SLP(gpg2-5, OUT0, NONE);
+		PIN_SLP(gpg2-6, OUT0, NONE);
+
+		PIN_SLP(gpg3-0, PREV, UP);
+		PIN_SLP(gpg3-1, PREV, UP);
+		PIN_SLP(gpg3-2, INPUT, NONE);
+		PIN_SLP(gpg3-3, INPUT, DOWN);
+		PIN_SLP(gpg3-4, OUT0, NONE);
+		PIN_SLP(gpg3-5, OUT0, NONE);
+		PIN_SLP(gpg3-6, INPUT, DOWN);
+
+		PIN_SLP(gpi-0, PREV, NONE);
+		PIN_SLP(gpi-1, INPUT, DOWN);
+		PIN_SLP(gpi-2, PREV, NONE);
+		PIN_SLP(gpi-3, PREV, NONE);
+		PIN_SLP(gpi-4, PREV, NONE);
+		PIN_SLP(gpi-5, INPUT, DOWN);
+		PIN_SLP(gpi-6, INPUT, DOWN);
+
+		PIN_SLP(gpj0-0, INPUT, NONE);
+		PIN_SLP(gpj0-1, INPUT, NONE);
+		PIN_SLP(gpj0-2, INPUT, NONE);
+		PIN_SLP(gpj0-3, INPUT, NONE);
+		PIN_SLP(gpj0-4, INPUT, NONE);
+		PIN_SLP(gpj0-5, INPUT, DOWN);
+		PIN_SLP(gpj0-6, OUT0, NONE);
+		PIN_SLP(gpj0-7, INPUT, NONE);
+
+		PIN_SLP(gpj1-0, OUT1, NONE);
+		PIN_SLP(gpj1-1, OUT0, NONE);
+		PIN_SLP(gpj1-2, INPUT, DOWN);
+		PIN_SLP(gpj1-3, PREV, NONE);
+		PIN_SLP(gpj1-4, PREV, NONE);
+		PIN_SLP(gpj1-5, OUT0, NONE);
+
+		PIN_SLP(gpj2-0, INPUT, DOWN);
+		PIN_SLP(gpj2-1, INPUT, DOWN);
+		PIN_SLP(gpj2-2, OUT0, NONE);
+		PIN_SLP(gpj2-3, INPUT, DOWN);
+		PIN_SLP(gpj2-4, INPUT, DOWN);
+		PIN_SLP(gpj2-5, PREV, NONE);
+		PIN_SLP(gpj2-6, PREV, NONE);
+		PIN_SLP(gpj2-7, INPUT, DOWN);
+
+		PIN_SLP(gpj3-0, INPUT, NONE);
+		PIN_SLP(gpj3-1, INPUT, NONE);
+		PIN_SLP(gpj3-2, OUT0, NONE);
+		PIN_SLP(gpj3-3, INPUT, DOWN);
+		PIN_SLP(gpj3-4, INPUT, NONE);
+		PIN_SLP(gpj3-5, INPUT, NONE);
+		PIN_SLP(gpj3-6, INPUT, NONE);
+		PIN_SLP(gpj3-7, INPUT, NONE);
+
+		PIN_SLP(gpj4-0, INPUT, NONE);
+		PIN_SLP(gpj4-1, INPUT, DOWN);
+		PIN_SLP(gpj4-2, PREV, NONE);
+		PIN_SLP(gpj4-3, INPUT, NONE);
+		PIN_SLP(gpj4-4, INPUT, DOWN);
+
+		PIN_SLP(mp01-0, OUT1, NONE);
+		PIN_SLP(mp01-1, OUT0, NONE);
+		PIN_SLP(mp01-2, INPUT, DOWN);
+		PIN_SLP(mp01-3, INPUT, DOWN);
+		PIN_SLP(mp01-4, OUT1, NONE);
+		PIN_SLP(mp01-5, INPUT, DOWN);
+		PIN_SLP(mp01-6, INPUT, DOWN);
+		PIN_SLP(mp01-7, INPUT, DOWN);
+
+		PIN_SLP(mp02-0, INPUT, DOWN);
+		PIN_SLP(mp02-1, INPUT, DOWN);
+		PIN_SLP(mp02-2, INPUT, NONE);
+		PIN_SLP(mp02-3, INPUT, DOWN);
+
+		PIN_SLP(mp03-0, INPUT, DOWN);
+		PIN_SLP(mp03-1, INPUT, DOWN);
+		PIN_SLP(mp03-2, OUT1, NONE);
+		PIN_SLP(mp03-3, OUT0, NONE);
+		PIN_SLP(mp03-4, INPUT, NONE);
+		PIN_SLP(mp03-5, OUT0, NONE);
+		PIN_SLP(mp03-6, INPUT, DOWN);
+		PIN_SLP(mp03-7, INPUT, DOWN);
+
+		PIN_SLP(mp04-0, INPUT, DOWN);
+		PIN_SLP(mp04-1, OUT0, NONE);
+		PIN_SLP(mp04-2, INPUT, DOWN);
+		PIN_SLP(mp04-3, OUT0, NONE);
+		PIN_SLP(mp04-4, INPUT, DOWN);
+		PIN_SLP(mp04-5, INPUT, DOWN);
+		PIN_SLP(mp04-6, OUT0, NONE);
+		PIN_SLP(mp04-7, INPUT, DOWN);
+
+		PIN_SLP(mp05-0, INPUT, NONE);
+		PIN_SLP(mp05-1, INPUT, NONE);
+		PIN_SLP(mp05-2, INPUT, NONE);
+		PIN_SLP(mp05-3, INPUT, NONE);
+		PIN_SLP(mp05-4, INPUT, DOWN);
+		PIN_SLP(mp05-5, OUT0, NONE);
+		PIN_SLP(mp05-6, INPUT, DOWN);
+		PIN_SLP(mp05-7, PREV, NONE);
+
+		PIN_SLP(mp06-0, INPUT, DOWN);
+		PIN_SLP(mp06-1, INPUT, DOWN);
+		PIN_SLP(mp06-2, INPUT, DOWN);
+		PIN_SLP(mp06-3, INPUT, DOWN);
+		PIN_SLP(mp06-4, INPUT, DOWN);
+		PIN_SLP(mp06-5, INPUT, DOWN);
+		PIN_SLP(mp06-6, INPUT, DOWN);
+		PIN_SLP(mp06-7, INPUT, DOWN);
+
+		PIN_SLP(mp07-0, INPUT, DOWN);
+		PIN_SLP(mp07-1, INPUT, DOWN);
+		PIN_SLP(mp07-2, INPUT, DOWN);
+		PIN_SLP(mp07-3, INPUT, DOWN);
+		PIN_SLP(mp07-4, INPUT, DOWN);
+		PIN_SLP(mp07-5, INPUT, DOWN);
+		PIN_SLP(mp07-6, INPUT, DOWN);
+		PIN_SLP(mp07-7, INPUT, DOWN);
+	};
+};
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 03/18] ARM: dts: s5pv210: Add sleep GPIO configuration for galaxys
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
  2020-05-01 23:50   ` [PATCH v2 01/18] ARM: dts: s5pv210: Add helper define for sleep gpio config Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 02/18] ARM: dts: s5pv210: Add sleep GPIO configuration for fascinate4g Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 04/18] ARM: dts: s5pv210: Set keep-power-in-suspend for SDHCI1 on aries Jonathan Bakker
                     ` (14 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

In order to minimize leakage current during sleep, set a config
for sleep GPIOs.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>

---
Changes from v1
- Note where sleep GPIOs came from
---
 arch/arm/boot/dts/s5pv210-galaxys.dts | 241 ++++++++++++++++++++++++++
 1 file changed, 241 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-galaxys.dts b/arch/arm/boot/dts/s5pv210-galaxys.dts
index cf161bbfbacf..9bf4a5b95b74 100644
--- a/arch/arm/boot/dts/s5pv210-galaxys.dts
+++ b/arch/arm/boot/dts/s5pv210-galaxys.dts
@@ -52,12 +52,253 @@
 };
 
 &pinctrl0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&sleep_cfg>;
+
 	massmemory_en: massmemory-en {
 		samsung,pins = "gpj2-7";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
+
+	/* Based on CyanogenMod 3.0.101 kernel */
+	sleep_cfg: sleep-cfg {
+		PIN_SLP(gpa0-0, PREV, NONE);
+		PIN_SLP(gpa0-1, PREV, NONE);
+		PIN_SLP(gpa0-2, PREV, NONE);
+		PIN_SLP(gpa0-3, OUT1, NONE);
+		PIN_SLP(gpa0-4, INPUT, DOWN);
+		PIN_SLP(gpa0-5, OUT0, NONE);
+		PIN_SLP(gpa0-6, INPUT, DOWN);
+		PIN_SLP(gpa0-7, OUT1, NONE);
+
+		PIN_SLP(gpa1-0, INPUT, DOWN);
+		PIN_SLP(gpa1-1, OUT0, NONE);
+		PIN_SLP(gpa1-2, INPUT, NONE);
+		PIN_SLP(gpa1-3, OUT0, NONE);
+
+		PIN_SLP(gpb-0, OUT0, NONE);
+		PIN_SLP(gpb-1, OUT1, NONE);
+		PIN_SLP(gpb-2, OUT0, NONE);
+		PIN_SLP(gpb-3, PREV, NONE);
+		PIN_SLP(gpb-4, INPUT, NONE);
+		PIN_SLP(gpb-5, PREV, NONE);
+		PIN_SLP(gpb-6, INPUT, DOWN);
+		PIN_SLP(gpb-7, OUT0, NONE);
+
+		PIN_SLP(gpc0-0, OUT0, NONE);
+		PIN_SLP(gpc0-1, INPUT, DOWN);
+		PIN_SLP(gpc0-2, OUT0, NONE);
+		PIN_SLP(gpc0-3, INPUT, NONE);
+		PIN_SLP(gpc0-4, OUT0, NONE);
+
+		PIN_SLP(gpc1-0, INPUT, DOWN);
+		PIN_SLP(gpc1-1, INPUT, DOWN);
+		PIN_SLP(gpc1-2, INPUT, DOWN);
+		PIN_SLP(gpc1-3, INPUT, DOWN);
+		PIN_SLP(gpc1-4, INPUT, DOWN);
+
+		PIN_SLP(gpd0-0, INPUT, DOWN);
+		PIN_SLP(gpd0-1, OUT0, NONE);
+		PIN_SLP(gpd0-2, INPUT, DOWN);
+		PIN_SLP(gpd0-3, INPUT, DOWN);
+
+		PIN_SLP(gpd1-0, INPUT, NONE);
+		PIN_SLP(gpd1-1, INPUT, NONE);
+		PIN_SLP(gpd1-2, INPUT, NONE);
+		PIN_SLP(gpd1-3, INPUT, NONE);
+		PIN_SLP(gpd1-4, INPUT, DOWN);
+		PIN_SLP(gpd1-5, INPUT, DOWN);
+
+		PIN_SLP(gpe0-0, INPUT, DOWN);
+		PIN_SLP(gpe0-1, INPUT, DOWN);
+		PIN_SLP(gpe0-2, INPUT, DOWN);
+		PIN_SLP(gpe0-3, INPUT, DOWN);
+		PIN_SLP(gpe0-4, INPUT, DOWN);
+		PIN_SLP(gpe0-5, INPUT, DOWN);
+		PIN_SLP(gpe0-6, INPUT, DOWN);
+		PIN_SLP(gpe0-7, INPUT, DOWN);
+
+		PIN_SLP(gpe1-0, INPUT, DOWN);
+		PIN_SLP(gpe1-1, INPUT, DOWN);
+		PIN_SLP(gpe1-2, INPUT, DOWN);
+		PIN_SLP(gpe1-3, OUT0, NONE);
+		PIN_SLP(gpe1-4, INPUT, DOWN);
+
+		PIN_SLP(gpf0-0, OUT0, NONE);
+		PIN_SLP(gpf0-1, OUT0, NONE);
+		PIN_SLP(gpf0-2, OUT0, NONE);
+		PIN_SLP(gpf0-3, OUT0, NONE);
+		PIN_SLP(gpf0-4, OUT0, NONE);
+		PIN_SLP(gpf0-5, OUT0, NONE);
+		PIN_SLP(gpf0-6, OUT0, NONE);
+		PIN_SLP(gpf0-7, OUT0, NONE);
+
+		PIN_SLP(gpf1-0, OUT0, NONE);
+		PIN_SLP(gpf1-1, OUT0, NONE);
+		PIN_SLP(gpf1-2, OUT0, NONE);
+		PIN_SLP(gpf1-3, OUT0, NONE);
+		PIN_SLP(gpf1-4, OUT0, NONE);
+		PIN_SLP(gpf1-5, OUT0, NONE);
+		PIN_SLP(gpf1-6, OUT0, NONE);
+		PIN_SLP(gpf1-7, OUT0, NONE);
+
+		PIN_SLP(gpf2-0, OUT0, NONE);
+		PIN_SLP(gpf2-1, OUT0, NONE);
+		PIN_SLP(gpf2-2, OUT0, NONE);
+		PIN_SLP(gpf2-3, OUT0, NONE);
+		PIN_SLP(gpf2-4, OUT0, NONE);
+		PIN_SLP(gpf2-5, OUT0, NONE);
+		PIN_SLP(gpf2-6, OUT0, NONE);
+		PIN_SLP(gpf2-7, OUT0, NONE);
+
+		PIN_SLP(gpf3-0, OUT0, NONE);
+		PIN_SLP(gpf3-1, OUT0, NONE);
+		PIN_SLP(gpf3-2, OUT0, NONE);
+		PIN_SLP(gpf3-3, OUT0, NONE);
+		PIN_SLP(gpf3-4, PREV, NONE);
+		PIN_SLP(gpf3-5, INPUT, DOWN);
+
+		PIN_SLP(gpg0-0, OUT0, NONE);
+		PIN_SLP(gpg0-1, INPUT, NONE);
+		PIN_SLP(gpg0-2, INPUT, NONE);
+		PIN_SLP(gpg0-3, INPUT, NONE);
+		PIN_SLP(gpg0-4, INPUT, NONE);
+		PIN_SLP(gpg0-5, INPUT, NONE);
+		PIN_SLP(gpg0-6, INPUT, NONE);
+
+		PIN_SLP(gpg1-0, OUT0, NONE);
+		PIN_SLP(gpg1-1, OUT1, NONE);
+		PIN_SLP(gpg1-2, PREV, NONE);
+		PIN_SLP(gpg1-3, OUT1, NONE);
+		PIN_SLP(gpg1-4, OUT1, NONE);
+		PIN_SLP(gpg1-5, OUT1, NONE);
+		PIN_SLP(gpg1-6, OUT1, NONE);
+
+		PIN_SLP(gpg2-0, OUT0, NONE);
+		PIN_SLP(gpg2-1, OUT0, NONE);
+		PIN_SLP(gpg2-2, INPUT, NONE);
+		PIN_SLP(gpg2-3, OUT0, NONE);
+		PIN_SLP(gpg2-4, OUT0, NONE);
+		PIN_SLP(gpg2-5, OUT0, NONE);
+		PIN_SLP(gpg2-6, OUT0, NONE);
+
+		PIN_SLP(gpg3-0, OUT1, NONE);
+		PIN_SLP(gpg3-1, OUT0, NONE);
+		PIN_SLP(gpg3-2, INPUT, NONE);
+		PIN_SLP(gpg3-3, INPUT, DOWN);
+		PIN_SLP(gpg3-4, OUT0, NONE);
+		PIN_SLP(gpg3-5, OUT0, NONE);
+		PIN_SLP(gpg3-6, INPUT, DOWN);
+
+		PIN_SLP(gpi-0, PREV, NONE);
+		PIN_SLP(gpi-1, INPUT, DOWN);
+		PIN_SLP(gpi-2, PREV, NONE);
+		PIN_SLP(gpi-3, PREV, NONE);
+		PIN_SLP(gpi-4, PREV, NONE);
+		PIN_SLP(gpi-5, INPUT, DOWN);
+		PIN_SLP(gpi-6, INPUT, DOWN);
+
+		PIN_SLP(gpj0-0, INPUT, NONE);
+		PIN_SLP(gpj0-1, INPUT, NONE);
+		PIN_SLP(gpj0-2, INPUT, NONE);
+		PIN_SLP(gpj0-3, INPUT, NONE);
+		PIN_SLP(gpj0-4, INPUT, NONE);
+		PIN_SLP(gpj0-5, INPUT, DOWN);
+		PIN_SLP(gpj0-6, OUT0, NONE);
+		PIN_SLP(gpj0-7, INPUT, NONE);
+
+		PIN_SLP(gpj1-0, INPUT, DOWN);
+		PIN_SLP(gpj1-1, OUT0, NONE);
+		PIN_SLP(gpj1-2, INPUT, DOWN);
+		PIN_SLP(gpj1-3, PREV, NONE);
+		PIN_SLP(gpj1-4, PREV, NONE);
+		PIN_SLP(gpj1-5, OUT0, NONE);
+
+		PIN_SLP(gpj2-0, INPUT, DOWN);
+		PIN_SLP(gpj2-1, INPUT, DOWN);
+		PIN_SLP(gpj2-2, OUT0, NONE);
+		PIN_SLP(gpj2-3, INPUT, DOWN);
+		PIN_SLP(gpj2-4, INPUT, UP);
+		PIN_SLP(gpj2-5, PREV, NONE);
+		PIN_SLP(gpj2-6, PREV, NONE);
+		PIN_SLP(gpj2-7, OUT1, NONE);
+
+		PIN_SLP(gpj3-0, INPUT, NONE);
+		PIN_SLP(gpj3-1, INPUT, NONE);
+		PIN_SLP(gpj3-2, OUT0, NONE);
+		PIN_SLP(gpj3-3, INPUT, DOWN);
+		PIN_SLP(gpj3-4, INPUT, NONE);
+		PIN_SLP(gpj3-5, INPUT, NONE);
+		PIN_SLP(gpj3-6, INPUT, NONE);
+		PIN_SLP(gpj3-7, INPUT, NONE);
+
+		PIN_SLP(gpj4-0, INPUT, NONE);
+		PIN_SLP(gpj4-1, INPUT, DOWN);
+		PIN_SLP(gpj4-2, PREV, NONE);
+		PIN_SLP(gpj4-3, INPUT, NONE);
+		PIN_SLP(gpj4-4, INPUT, DOWN);
+
+		PIN_SLP(mp01-0, INPUT, DOWN);
+		PIN_SLP(mp01-1, OUT0, NONE);
+		PIN_SLP(mp01-2, INPUT, DOWN);
+		PIN_SLP(mp01-3, INPUT, DOWN);
+		PIN_SLP(mp01-4, OUT1, NONE);
+		PIN_SLP(mp01-5, INPUT, DOWN);
+		PIN_SLP(mp01-6, INPUT, DOWN);
+		PIN_SLP(mp01-7, INPUT, DOWN);
+
+		PIN_SLP(mp02-0, INPUT, DOWN);
+		PIN_SLP(mp02-1, INPUT, DOWN);
+		PIN_SLP(mp02-2, INPUT, NONE);
+		PIN_SLP(mp02-3, INPUT, DOWN);
+
+		PIN_SLP(mp03-0, INPUT, DOWN);
+		PIN_SLP(mp03-1, INPUT, DOWN);
+		PIN_SLP(mp03-2, OUT1, NONE);
+		PIN_SLP(mp03-3, OUT0, NONE);
+		PIN_SLP(mp03-4, INPUT, NONE);
+		PIN_SLP(mp03-5, OUT1, NONE);
+		PIN_SLP(mp03-6, INPUT, DOWN);
+		PIN_SLP(mp03-7, INPUT, DOWN);
+
+		PIN_SLP(mp04-0, INPUT, DOWN);
+		PIN_SLP(mp04-1, OUT0, NONE);
+		PIN_SLP(mp04-2, INPUT, DOWN);
+		PIN_SLP(mp04-3, OUT0, NONE);
+		PIN_SLP(mp04-4, INPUT, DOWN);
+		PIN_SLP(mp04-5, INPUT, DOWN);
+		PIN_SLP(mp04-6, OUT0, NONE);
+		PIN_SLP(mp04-7, INPUT, DOWN);
+
+		PIN_SLP(mp05-0, INPUT, NONE);
+		PIN_SLP(mp05-1, INPUT, NONE);
+		PIN_SLP(mp05-2, INPUT, NONE);
+		PIN_SLP(mp05-3, INPUT, NONE);
+		PIN_SLP(mp05-4, INPUT, DOWN);
+		PIN_SLP(mp05-5, OUT0, NONE);
+		PIN_SLP(mp05-6, INPUT, DOWN);
+		PIN_SLP(mp05-7, PREV, NONE);
+
+		PIN_SLP(mp06-0, INPUT, DOWN);
+		PIN_SLP(mp06-1, INPUT, DOWN);
+		PIN_SLP(mp06-2, INPUT, DOWN);
+		PIN_SLP(mp06-3, INPUT, DOWN);
+		PIN_SLP(mp06-4, INPUT, DOWN);
+		PIN_SLP(mp06-5, INPUT, DOWN);
+		PIN_SLP(mp06-6, INPUT, DOWN);
+		PIN_SLP(mp06-7, INPUT, DOWN);
+
+		PIN_SLP(mp07-0, INPUT, DOWN);
+		PIN_SLP(mp07-1, INPUT, DOWN);
+		PIN_SLP(mp07-2, INPUT, DOWN);
+		PIN_SLP(mp07-3, INPUT, DOWN);
+		PIN_SLP(mp07-4, INPUT, DOWN);
+		PIN_SLP(mp07-5, INPUT, DOWN);
+		PIN_SLP(mp07-6, INPUT, DOWN);
+		PIN_SLP(mp07-7, INPUT, DOWN);
+	};
 };
 
 &sdhci0 {
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 04/18] ARM: dts: s5pv210: Set keep-power-in-suspend for SDHCI1 on aries
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (2 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 03/18] ARM: dts: s5pv210: Add sleep GPIO configuration for galaxys Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 05/18] ARM: dts: s5pv210: Disable pulls on GPIO i2c adapters for aries Jonathan Bakker
                     ` (13 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

SDHCI1 is connected to a BCM4329 WiFi/BT chip which requires
power to be kept over suspend.  As the surrounding hardware supports
this, mark it as such.  This fixes wifi after a suspend/resume cycle.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 8ff70b856334..d419b77201f7 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -454,6 +454,7 @@
 	pinctrl-names = "default";
 	cap-sd-highspeed;
 	cap-mmc-highspeed;
+	keep-power-in-suspend;
 
 	mmc-pwrseq = <&wifi_pwrseq>;
 	non-removable;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 05/18] ARM: dts: s5pv210: Disable pulls on GPIO i2c adapters for aries
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (3 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 04/18] ARM: dts: s5pv210: Set keep-power-in-suspend for SDHCI1 on aries Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 06/18] ARM: dts: s5pv210: Add WM8994 support to aries boards Jonathan Bakker
                     ` (12 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The bitbanged GPIO i2c adapters have external pull-ups attached
so the internal pulls should be disabled for lower power usage.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index d419b77201f7..f83df426f2b6 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -65,6 +65,9 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 
+		pinctrl-names = "default";
+		pinctrl-0 = <&pmic_i2c_pins>;
+
 		pmic@66 {
 			compatible = "maxim,max8998";
 			reg = <0x66>;
@@ -314,6 +317,9 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 
+		pinctrl-names = "default";
+		pinctrl-0 = <&fg_i2c_pins>;
+
 		fuelgauge@36 {
 			compatible = "maxim,max17040";
 			interrupt-parent = <&vic0>;
@@ -438,6 +444,18 @@
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
+
+	pmic_i2c_pins: pmic-i2c-pins {
+		samsung,pins = "gpj4-0", "gpj4-3";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	fg_i2c_pins: fg-i2c-pins {
+		samsung,pins = "mp05-0", "mp05-1";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
 };
 
 &pwm {
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 06/18] ARM: dts: s5pv210: Add WM8994 support to aries boards
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (4 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 05/18] ARM: dts: s5pv210: Disable pulls on GPIO i2c adapters for aries Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 07/18] ARM: dts: s5pv210: Add FSA9480 support to Aries boards Jonathan Bakker
                     ` (11 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

Aries boards have a Wolfson WM8994 sound card attached over gpio-i2c.

There is currently no ASoC Machine Driver.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi      | 65 ++++++++++++++++++++++-
 arch/arm/boot/dts/s5pv210-fascinate4g.dts |  6 +++
 2 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index f83df426f2b6..7d001c22c532 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -12,6 +12,7 @@
 	compatible = "samsung,aries", "samsung,s5pv210";
 
 	aliases {
+		i2c4 = &i2c_sound;
 		i2c6 = &i2c_pmic;
 		i2c9 = &i2c_fuel;
 	};
@@ -57,7 +58,55 @@
 		power-off-delay-us = <500>;
 	};
 
-	i2c_pmic: i2c-gpio-0 {
+	i2c_sound: i2c-gpio-0 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&mp05 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&mp05 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&sound_i2c_pins>;
+
+		wm8994: wm8994@1a {
+			compatible = "wlf,wm8994";
+			reg = <0x1a>;
+
+			#sound-dai-cells = <0>;
+
+			gpio-controller;
+			#gpio-cells = <2>;
+
+			clocks = <&clocks MOUT_CLKOUT>;
+			clock-names = "MCLK1";
+
+			AVDD2-supply = <&buck3_reg>;
+			DBVDD-supply = <&buck3_reg>;
+			CPVDD-supply = <&buck3_reg>;
+			SPKVDD1-supply = <&buck3_reg>;
+			SPKVDD2-supply = <&buck3_reg>;
+
+			wlf,gpio-cfg = <0xa101 0x8100 0x0100 0x0100 0x8100
+					0xa101 0x0100 0x8100 0x0100 0x0100
+					0x0100>;
+
+			wlf,ldo1ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
+			wlf,ldo2ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
+
+			wlf,lineout1-se;
+			wlf,lineout2-se;
+
+			assigned-clocks = <&clocks MOUT_CLKOUT>;
+			assigned-clock-rates = <0>;
+			assigned-clock-parents = <&xusbxti>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&codec_ldo>;
+		};
+	};
+
+	i2c_pmic: i2c-gpio-2 {
 		compatible = "i2c-gpio";
 		sda-gpios = <&gpj4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
 		scl-gpios = <&gpj4 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
@@ -309,7 +358,7 @@
 		};
 	};
 
-	i2c_fuel: i2c-gpio-1 {
+	i2c_fuel: i2c-gpio-4 {
 		compatible = "i2c-gpio";
 		sda-gpios = <&mp05 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
 		scl-gpios = <&mp05 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
@@ -405,6 +454,12 @@
 		samsung,pin-val = <1>;
 	};
 
+	codec_ldo: codec-ldo {
+		samsung,pins = "gpf3-4";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+	};
+
 	wlan_gpio_rst: wlan-gpio-rst {
 		samsung,pins = "gpg1-2";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
@@ -456,6 +511,12 @@
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
+
+	sound_i2c_pins: sound-i2c-pins {
+		samsung,pins = "mp05-2", "mp05-3";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
 };
 
 &pwm {
diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
index 65f589e2b72a..5e1b81823a8d 100644
--- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
+++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
@@ -279,3 +279,9 @@
 		PIN_SLP(mp07-7, INPUT, DOWN);
 	};
 };
+
+&wm8994 {
+	/* GPIO3 (BCLK2) and GPIO4 (LRCLK2) as outputs */
+	wlf,gpio-cfg = <0xa101 0x8100 0x8100 0x8100 0x8100 0xa101
+			0x0100 0x8100 0x0100 0x0100 0x0100>;
+};
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 07/18] ARM: dts: s5pv210: Add FSA9480 support to Aries boards
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (5 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 06/18] ARM: dts: s5pv210: Add WM8994 support to aries boards Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 08/18] ARM: dts: s5pv210: Add touchkey support to aries boards Jonathan Bakker
                     ` (10 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The Fairchild FSA9480 is a USB mux connected over i2c-gpio.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 36 ++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 7d001c22c532..6233884713cb 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -14,6 +14,7 @@
 	aliases {
 		i2c4 = &i2c_sound;
 		i2c6 = &i2c_pmic;
+		i2c7 = &i2c_musb;
 		i2c9 = &i2c_fuel;
 	};
 
@@ -358,6 +359,28 @@
 		};
 	};
 
+	i2c_musb: i2c-gpio-3 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpj3 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpj3 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&musb_i2c_pins>;
+
+		fsa9480: musb@25 {
+			compatible = "fcs,fsa9480";
+			reg = <0x25>;
+			interrupt-parent = <&gph2>;
+			interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&musb_irq>;
+		};
+	};
+
 	i2c_fuel: i2c-gpio-4 {
 		compatible = "i2c-gpio";
 		sda-gpios = <&mp05 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
@@ -480,6 +503,13 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	musb_irq: musq-irq {
+		samsung,pins = "gph2-7";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	tf_detect: tf-detect {
 		samsung,pins = "gph3-4";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
@@ -500,6 +530,12 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	musb_i2c_pins: musb-i2c-pins {
+		samsung,pins = "gpj3-4", "gpj3-5";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	pmic_i2c_pins: pmic-i2c-pins {
 		samsung,pins = "gpj4-0", "gpj4-3";
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 08/18] ARM: dts: s5pv210: Add touchkey support to aries boards
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (6 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 07/18] ARM: dts: s5pv210: Add FSA9480 support to Aries boards Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 09/18] ARM: dts: s5pv210: Add panel " Jonathan Bakker
                     ` (9 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

Aries boards have soft touchkeys, manufactured by Cypress,
attached over i2c-gpio.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 58 ++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 6233884713cb..6683ecec905a 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -16,6 +16,7 @@
 		i2c6 = &i2c_pmic;
 		i2c7 = &i2c_musb;
 		i2c9 = &i2c_fuel;
+		i2c10 = &i2c_touchkey;
 	};
 
 	memory@30000000 {
@@ -50,6 +51,18 @@
 		gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
 	};
 
+	touchkey_vdd: regulator-fixed-1 {
+		compatible = "regulator-fixed";
+		regulator-name = "VTOUCH_3.3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		enable-active-high;
+		gpio = <&gpj3 2 GPIO_ACTIVE_HIGH>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&touchkey_vdd_ena>;
+	};
+
 	wifi_pwrseq: wifi-pwrseq {
 		compatible = "mmc-pwrseq-simple";
 		reset-gpios = <&gpg1 2 GPIO_ACTIVE_LOW>;
@@ -400,6 +413,32 @@
 		};
 	};
 
+	i2c_touchkey: i2c-gpio-5 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpj3 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpj3 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&touchkey_i2c_pins>;
+
+		touchkey@20 {
+			compatible = "cypress,aries-touchkey";
+			reg = <0x20>;
+			vdd-supply = <&touchkey_vdd>;
+			vcc-supply = <&buck3_reg>;
+			linux,keycodes = <KEY_MENU KEY_BACK
+					  KEY_HOMEPAGE KEY_SEARCH>;
+			interrupt-parent = <&gpj4>;
+			interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&touchkey_irq>;
+		};
+	};
+
 	vibrator: pwm-vibrator {
 		compatible = "pwm-vibrator";
 		pwms = <&pwm 1 44642 0>;
@@ -530,6 +569,18 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	touchkey_i2c_pins: touchkey-i2c-pins {
+		samsung,pins = "gpj3-0", "gpj3-1";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	touchkey_vdd_ena: touchkey-vdd-ena {
+		samsung,pins = "gpj3-2";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	musb_i2c_pins: musb-i2c-pins {
 		samsung,pins = "gpj3-4", "gpj3-5";
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
@@ -542,6 +593,13 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	touchkey_irq: touchkey-irq {
+		samsung,pins = "gpj4-1";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_UP>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	fg_i2c_pins: fg-i2c-pins {
 		samsung,pins = "mp05-0", "mp05-1";
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 09/18] ARM: dts: s5pv210: Add panel support to aries boards
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (7 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 08/18] ARM: dts: s5pv210: Add touchkey support to aries boards Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 10/18] ARM: dts: s5pv210: Add remaining i2c-gpio adapters to aries Jonathan Bakker
                     ` (8 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

Aries boards have an s6e63m0 AMOLED panel connected over i2c-spi.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 68 +++++++++++++++++++++-------
 1 file changed, 52 insertions(+), 16 deletions(-)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 6683ecec905a..046366d58aa0 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -200,8 +200,6 @@
 					regulator-name = "VLCD_1.8V";
 					regulator-min-microvolt = <1800000>;
 					regulator-max-microvolt = <1800000>;
-					/* Till we get panel driver */
-					regulator-always-on;
 
 					regulator-state-mem {
 						regulator-off-in-suspend;
@@ -300,8 +298,6 @@
 					regulator-name = "VCC_3.0V_LCD";
 					regulator-min-microvolt = <3000000>;
 					regulator-max-microvolt = <3000000>;
-					/* Till we get panel driver */
-					regulator-always-on;
 
 					regulator-state-mem {
 						regulator-off-in-suspend;
@@ -454,6 +450,39 @@
 		offset = <0x681c>; /* PS_HOLD_CONTROL */
 		value = <0x5200>;
 	};
+
+	spi_lcd: spi-gpio-0 {
+		compatible = "spi-gpio";
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		sck-gpios = <&mp04 1 GPIO_ACTIVE_HIGH>;
+		mosi-gpios = <&mp04 3 GPIO_ACTIVE_HIGH>;
+		cs-gpios = <&mp01 1 GPIO_ACTIVE_HIGH>;
+		num-chipselects = <1>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&lcd_spi_pins>;
+
+		panel@0 {
+			compatible = "samsung,s6e63m0";
+			reg = <0>;
+			reset-gpios = <&mp05 5 GPIO_ACTIVE_LOW>;
+			vdd3-supply = <&ldo7_reg>;
+			vci-supply = <&ldo17_reg>;
+			spi-cs-high;
+			spi-max-frequency = <1200000>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&panel_rst>;
+
+			port {
+				lcd_ep: endpoint {
+					remote-endpoint = <&fimd_ep>;
+				};
+			};
+		};
+	};
 };
 
 &fimd {
@@ -464,18 +493,13 @@
 	samsung,invert-vden;
 	samsung,invert-vclk;
 
-	display-timings {
-		timing-0 {
-			/* 480x800@60Hz */
-			clock-frequency = <25628040>;
-			hactive = <480>;
-			vactive = <800>;
-			hfront-porch = <16>;
-			hback-porch = <16>;
-			hsync-len = <2>;
-			vfront-porch = <28>;
-			vback-porch = <1>;
-			vsync-len = <2>;
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	port@3 {
+		reg = <3>;
+		fimd_ep: endpoint {
+			remote-endpoint = <&lcd_ep>;
 		};
 	};
 };
@@ -600,6 +624,12 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	lcd_spi_pins: spi-lcd-pins {
+		samsung,pins = "mp01-1", "mp04-1", "mp04-3";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	fg_i2c_pins: fg-i2c-pins {
 		samsung,pins = "mp05-0", "mp05-1";
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
@@ -611,6 +641,12 @@
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
+
+	panel_rst: panel-rst {
+		samsung,pins = "mp05-5";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
 };
 
 &pwm {
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 10/18] ARM: dts: s5pv210: Add remaining i2c-gpio adapters to aries
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (8 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 09/18] ARM: dts: s5pv210: Add panel " Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 11/18] ARM: dts: s5pv210: Add si470x fmradio to galaxys Jonathan Bakker
                     ` (7 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The remaining i2c-gpio adapters that are common to all aries boards
have devices without mainline bindings attachted to them.  Add them
here for documentation.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 69 ++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 046366d58aa0..a3748705dce8 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -13,10 +13,13 @@
 
 	aliases {
 		i2c4 = &i2c_sound;
+		i2c5 = &i2c_accel;
 		i2c6 = &i2c_pmic;
 		i2c7 = &i2c_musb;
 		i2c9 = &i2c_fuel;
 		i2c10 = &i2c_touchkey;
+		i2c11 = &i2c_prox;
+		i2c12 = &i2c_magnetometer;
 	};
 
 	memory@30000000 {
@@ -120,6 +123,22 @@
 		};
 	};
 
+	i2c_accel: i2c-gpio-1 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpj3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpj3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&accel_i2c_pins>;
+
+		status = "disabled";
+
+		/* bma023 accelerometer, no mainline binding */
+	};
+
 	i2c_pmic: i2c-gpio-2 {
 		compatible = "i2c-gpio";
 		sda-gpios = <&gpj4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
@@ -435,6 +454,38 @@
 		};
 	};
 
+	i2c_prox: i2c-gpio-6 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpg2 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpg0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&prox_i2c_pins>;
+
+		status = "disabled";
+
+		/* Sharp gp2a prox/light sensor, incomplete mainline binding */
+	};
+
+	i2c_magnetometer: i2c-gpio-7 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpj0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpj0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&magnetometer_i2c_pins>;
+
+		status = "disabled";
+
+		/* Yamaha yas529 magnetometer, no mainline binding */
+	};
+
 	vibrator: pwm-vibrator {
 		compatible = "pwm-vibrator";
 		pwms = <&pwm 1 44642 0>;
@@ -546,6 +597,12 @@
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 	};
 
+	prox_i2c_pins: gp2a-i2c-pins {
+		samsung,pins = "gpg0-2", "gpg2-2";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	wlan_gpio_rst: wlan-gpio-rst {
 		samsung,pins = "gpg1-2";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
@@ -586,6 +643,12 @@
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 	};
 
+	magnetometer_i2c_pins: yas529-i2c-pins {
+		samsung,pins = "gpj0-0", "gpj0-1";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	ts_irq: ts-irq {
 		samsung,pins = "gpj0-5";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
@@ -611,6 +674,12 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	accel_i2c_pins: accel-i2c-pins {
+		samsung,pins = "gpj3-6", "gpj3-7";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	pmic_i2c_pins: pmic-i2c-pins {
 		samsung,pins = "gpj4-0", "gpj4-3";
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 11/18] ARM: dts: s5pv210: Add si470x fmradio to galaxys
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (9 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 10/18] ARM: dts: s5pv210: Add remaining i2c-gpio adapters to aries Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 12/18] ARM: dts: s5pv210: Disable pull for vibrator ena GPIO on aries Jonathan Bakker
                     ` (6 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Paweł Chmiel, Jonathan Bakker

From: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>

Add support for the Silicon Labs si4709 fmradio, which can be found
on Galaxy S GT-i9000 (but not most other aries variants).

Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi  |  2 +-
 arch/arm/boot/dts/s5pv210-galaxys.dts | 47 +++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index a3748705dce8..0fa3de3c985d 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -11,7 +11,7 @@
 / {
 	compatible = "samsung,aries", "samsung,s5pv210";
 
-	aliases {
+	aliases: aliases {
 		i2c4 = &i2c_sound;
 		i2c5 = &i2c_accel;
 		i2c6 = &i2c_pmic;
diff --git a/arch/arm/boot/dts/s5pv210-galaxys.dts b/arch/arm/boot/dts/s5pv210-galaxys.dts
index 9bf4a5b95b74..a99fdda25262 100644
--- a/arch/arm/boot/dts/s5pv210-galaxys.dts
+++ b/arch/arm/boot/dts/s5pv210-galaxys.dts
@@ -49,12 +49,59 @@
 			wakeup-source;
 		};
 	};
+
+	i2c_fmradio: i2c-gpio-8 {
+		compatible = "i2c-gpio";
+		sda-gpios = <&gpd1 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		scl-gpios = <&gpd1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+		i2c-gpio,delay-us = <2>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&fm_i2c_pins>;
+
+		fmradio@10 {
+			compatible = "silabs,si470x";
+			reg = <0x10>;
+			interrupt-parent = <&gpj2>;
+			interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
+			reset-gpios = <&gpj2 5 GPIO_ACTIVE_HIGH>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&fm_irq &fm_rst>;
+		};
+	};
+};
+
+&aliases {
+	i2c8 = &i2c_fmradio;
 };
 
 &pinctrl0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&sleep_cfg>;
 
+	fm_i2c_pins: fm-i2c-pins {
+		samsung,pins = "gpd1-2", "gpd1-3";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	fm_irq: fm-irq {
+		samsung,pins = "gpj2-4";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_UP>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
+	fm_rst: fm-rst {
+		samsung,pins = "gpj2-5";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	massmemory_en: massmemory-en {
 		samsung,pins = "gpj2-7";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 12/18] ARM: dts: s5pv210: Disable pull for vibrator ena GPIO on aries
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (10 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 11/18] ARM: dts: s5pv210: Add si470x fmradio to galaxys Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 13/18] ARM: dts: s5pv210: Add an ADC node Jonathan Bakker
                     ` (5 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The enable GPIO for the fixed vibrator regulator shouldn't be
pulled in one direction or the other.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 0fa3de3c985d..945259aa5d55 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -52,6 +52,9 @@
 		regulator-name = "vibrator-en";
 		enable-active-high;
 		gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
+
+		pinctrl-names = "default";
+		pinctr-0 = <&vibrator_ena>;
 	};
 
 	touchkey_vdd: regulator-fixed-1 {
@@ -656,6 +659,12 @@
 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
 	};
 
+	vibrator_ena: vibrator-ena {
+		samsung,pins = "gpj1-1";
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	touchkey_i2c_pins: touchkey-i2c-pins {
 		samsung,pins = "gpj3-0", "gpj3-1";
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 13/18] ARM: dts: s5pv210: Add an ADC node
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (11 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 12/18] ARM: dts: s5pv210: Disable pull for vibrator ena GPIO on aries Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 14/18] ARM: dts: s5pv210: Enable ADC on aries boards Jonathan Bakker
                     ` (4 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The exynos-adc driver now supports the S5PV210, so add the DT
node so that devices can use it.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>

---
Changes from v1
- Adjust node name to match reg address
---
 arch/arm/boot/dts/s5pv210.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
index 2ad642f51fd9..30a0c39a310f 100644
--- a/arch/arm/boot/dts/s5pv210.dtsi
+++ b/arch/arm/boot/dts/s5pv210.dtsi
@@ -159,6 +159,18 @@
 			};
 		};
 
+		adc: adc@e1700000 {
+			compatible = "samsung,s5pv210-adc";
+			reg = <0xe1700000 0x1000>;
+			interrupt-parent = <&vic2>;
+			interrupts = <23>, <24>;
+			clocks = <&clocks CLK_TSADC>;
+			clock-names = "adc";
+			#io-channel-cells = <1>;
+			io-channel-ranges;
+			status = "disabled";
+		};
+
 		spi0: spi@e1300000 {
 			compatible = "samsung,s5pv210-spi";
 			reg = <0xe1300000 0x1000>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 14/18] ARM: dts: s5pv210: Enable ADC on aries boards
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (12 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 13/18] ARM: dts: s5pv210: Add an ADC node Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 15/18] ARM: dts: s5pv210: Assign clocks to MMC devices on aries Jonathan Bakker
                     ` (3 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

On aries boards, the ADC is used for things such as jack detection
and battery temperature monitoring.  It is connected to ldo4 of max8998,
so only enable that regulator when we are actually using the ADC.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>

---
Changes from v1
- Replace removed regulator-off-in-suspend
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 945259aa5d55..9f4694d71203 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -195,7 +195,6 @@
 					regulator-name = "VADC_3.3V";
 					regulator-min-microvolt = <3300000>;
 					regulator-max-microvolt = <3300000>;
-					regulator-always-on;
 
 					regulator-state-mem {
 						regulator-off-in-suspend;
@@ -539,6 +538,12 @@
 	};
 };
 
+&adc {
+	vdd-supply = <&ldo4_reg>;
+
+	status = "okay";
+};
+
 &fimd {
 	pinctrl-names = "default";
 	pinctrl-0 = <&lcd_clk &lcd_data24>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 15/18] ARM: dts: s5pv210: Assign clocks to MMC devices on aries
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (13 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 14/18] ARM: dts: s5pv210: Enable ADC on aries boards Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 16/18] ARM: dts: s5pv210: Correct FIMC definitions Jonathan Bakker
                     ` (2 subsequent siblings)
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The SHDCI controller on aries devices is a little bit peculiar about
the clocks and with a slightly off clock can run into errors such as

[ 141.533993] mmc2: ADMA error: 0x02000000
[ 141.535137] mmc2: sdhci: ============ SDHCI REGISTER DUMP ===========
[ 141.540246] mmc2: sdhci: Sys addr: 0x347e4cc4 | Version: 0x00002401
[ 141.545358] mmc2: sdhci: Blk size: 0x00007004 | Blk cnt: 0x0000fffc
[ 141.550470] mmc2: sdhci: Argument: 0x00000000 | Trn mode: 0x00000013
[ 141.555583] mmc2: sdhci: Present: 0x01fa0000 | Host ctl: 0x00000012
[ 141.560696] mmc2: sdhci: Power: 0x00000000 | Blk gap: 0x00000000
[ 141.565809] mmc2: sdhci: Wake-up: 0x00000000 | Clock: 0x0000010f
[ 141.570921] mmc2: sdhci: Timeout: 0x0000000a | Int stat: 0x00000003
[ 141.576034] mmc2: sdhci: Int enab: 0x03ff004b | Sig enab: 0x03ff004b
[ 141.581147] mmc2: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000001
[ 141.586259] mmc2: sdhci: Caps: 0x05e80080 | Caps_1: 0x00000000
[ 141.591372] mmc2: sdhci: Cmd: 0x0000163a | Max curr: 0x00000000
[ 141.596485] mmc2: sdhci: Resp[0]: 0x00000920 | Resp[1]: 0x00000000
[ 141.601597] mmc2: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
[ 141.606710] mmc2: sdhci: Host ctl2: 0x00000000
[ 141.609831] mmc2: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x349a3208
[ 141.614942] mmc2: sdhci: ============================================
[ 141.620057] mmc2: sdhci: 349a3200: DMA 0x347e4cc0, LEN 0x0004, Attr=0x23

Specifically assign the mmc sclks to be parented from MPLL with specific
rates that match the vendor kernel.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi  | 8 ++++++++
 arch/arm/boot/dts/s5pv210-galaxys.dts | 4 ++++
 2 files changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 9f4694d71203..0bd65401ec65 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -752,6 +752,10 @@
 	non-removable;
 	status = "okay";
 
+	assigned-clocks = <&clocks MOUT_MMC1>, <&clocks SCLK_MMC1>;
+	assigned-clock-rates = <0>, <50000000>;
+	assigned-clock-parents = <&clocks MOUT_MPLL>;
+
 	wlan@1 {
 		reg = <1>;
 		compatible = "brcm,bcm4329-fmac";
@@ -768,6 +772,10 @@
 	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &tf_detect>;
 	pinctrl-names = "default";
 	status = "okay";
+
+	assigned-clocks = <&clocks MOUT_MMC2>, <&clocks SCLK_MMC2>;
+	assigned-clock-rates = <0>, <50000000>;
+	assigned-clock-parents = <&clocks MOUT_MPLL>;
 };
 
 &uart0 {
diff --git a/arch/arm/boot/dts/s5pv210-galaxys.dts b/arch/arm/boot/dts/s5pv210-galaxys.dts
index a99fdda25262..5d10dd67eacc 100644
--- a/arch/arm/boot/dts/s5pv210-galaxys.dts
+++ b/arch/arm/boot/dts/s5pv210-galaxys.dts
@@ -355,4 +355,8 @@
 	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4>;
 	pinctrl-names = "default";
 	status = "okay";
+
+	assigned-clocks = <&clocks MOUT_MMC0>, <&clocks SCLK_MMC0>;
+	assigned-clock-rates = <0>, <52000000>;
+	assigned-clock-parents = <&clocks MOUT_MPLL>;
 };
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 16/18] ARM: dts: s5pv210: Correct FIMC definitions
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (14 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 15/18] ARM: dts: s5pv210: Assign clocks to MMC devices on aries Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 17/18] ARM: dts: s5pv210: Set MAX8998 GPIO pulls on aries Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 18/18] ARM: dts: s5pv210: Correct gpi gpio node name Jonathan Bakker
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The extended mainscaler is only available on FIMC1 and there
are minimum pixel alignments that differ from the default.
Additionally, the cam-if interface is available on all three
while FIMC2 has no rotators.  The lcd-wb interface is supported
on FIMC1.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>

---
Changes from v1
- Replace moved line to where it originally was
---
 arch/arm/boot/dts/s5pv210.dtsi | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
index 30a0c39a310f..1b0ee884e91d 100644
--- a/arch/arm/boot/dts/s5pv210.dtsi
+++ b/arch/arm/boot/dts/s5pv210.dtsi
@@ -626,7 +626,7 @@
 				clock-names = "fimc",
 						"sclk_fimc";
 				samsung,pix-limits = <4224 8192 1920 4224>;
-				samsung,mainscaler-ext;
+				samsung,min-pix-alignment = <16 8>;
 				samsung,cam-if;
 			};
 
@@ -640,8 +640,10 @@
 				clock-names = "fimc",
 						"sclk_fimc";
 				samsung,pix-limits = <4224 8192 1920 4224>;
+				samsung,min-pix-alignment = <1 1>;
 				samsung,mainscaler-ext;
 				samsung,cam-if;
+				samsung,lcd-wb;
 			};
 
 			fimc2: fimc@fb400000 {
@@ -653,9 +655,10 @@
 						<&clocks SCLK_FIMC2>;
 				clock-names = "fimc",
 						"sclk_fimc";
-				samsung,pix-limits = <4224 8192 1920 4224>;
-				samsung,mainscaler-ext;
-				samsung,lcd-wb;
+				samsung,pix-limits = <1920 8192 1280 1920>;
+				samsung,min-pix-alignment = <16 8>;
+				samsung,rotators = <0>;
+				samsung,cam-if;
 			};
 		};
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 17/18] ARM: dts: s5pv210: Set MAX8998 GPIO pulls on aries
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (15 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 16/18] ARM: dts: s5pv210: Correct FIMC definitions Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  2020-05-01 23:50   ` [PATCH v2 18/18] ARM: dts: s5pv210: Correct gpi gpio node name Jonathan Bakker
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

Make sure that the GPIOs are configured correctly
for the interrupt (otherwise it won't fire) and disable the
pulls on the DVS GPIOs which are outputs.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-aries.dtsi | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 0bd65401ec65..cf858029292e 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -169,6 +169,9 @@
 			max8998,pmic-buck2-dvs-gpio = <&gph0 5 GPIO_ACTIVE_HIGH>;
 			max8998,pmic-buck2-dvs-voltage = <1100000>, <1000000>;
 
+			pinctrl-names = "default";
+			pinctrl-0 = <&pmic_dvs_pins &pmic_irq>;
+
 			regulators {
 				ldo2_reg: LDO2 {
 					regulator-name = "VALIVE_1.2V";
@@ -617,6 +620,21 @@
 		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
 	};
 
+	pmic_dvs_pins: pmic-dvs-pins {
+		samsung,pins = "gph0-3", "gph0-4", "gph0-5";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+		samsung,pin-val = <0>;
+	};
+
+	pmic_irq: pmic-irq {
+		samsung,pins = "gph0-7";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
+		samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
+		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+	};
+
 	wifi_host_wake: wifi-host-wake {
 		samsung,pins = "gph2-4";
 		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* [PATCH v2 18/18] ARM: dts: s5pv210: Correct gpi gpio node name
       [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
                     ` (16 preceding siblings ...)
  2020-05-01 23:50   ` [PATCH v2 17/18] ARM: dts: s5pv210: Set MAX8998 GPIO pulls on aries Jonathan Bakker
@ 2020-05-01 23:50   ` Jonathan Bakker
  17 siblings, 0 replies; 46+ messages in thread
From: Jonathan Bakker @ 2020-05-01 23:50 UTC (permalink / raw)
  To: kgene, krzk, robh+dt, linux-arm-kernel, linux-samsung-soc,
	devicetree, linux-kernel
  Cc: Jonathan Bakker

The node name was gpgi, but the pinctrl driver was registering the pins
as just gpi and the "samsung,pins" i2s0 pinctrl entries refer to gpi.
The public s5pc110 datasheet also refers to these pins as just gpi,
so let's make sure everything is in sync and rename the node to gpi.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
 arch/arm/boot/dts/s5pv210-pinctrl.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/s5pv210-pinctrl.dtsi b/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
index 609f323d0805..5e8b66281f01 100644
--- a/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
+++ b/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
@@ -202,7 +202,7 @@
 		#interrupt-cells = <2>;
 	};
 
-	gpgi: gpgi {
+	gpi: gpi {
 		gpio-controller;
 		#gpio-cells = <2>;
 	};
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 46+ messages in thread

* Re: [PATCH v2 00/18] S5PV210 and Aries DTS improvements
  2020-05-01 23:50 ` [PATCH v2 00/18] S5PV210 and Aries DTS improvements Jonathan Bakker
@ 2020-05-04 15:15   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 46+ messages in thread
From: Krzysztof Kozlowski @ 2020-05-04 15:15 UTC (permalink / raw)
  To: Jonathan Bakker
  Cc: kgene, robh+dt, linux-arm-kernel, linux-samsung-soc, devicetree,
	linux-kernel

On Fri, May 01, 2020 at 04:50:01PM -0700, Jonathan Bakker wrote:
> This patchset makes several improvements to Aries devices which are
> based on S5PV210.  Several pulls on GPIOs were incorrect/not specified,
> sleep GPIO configurations have been added, and more devices have been
> added.
> 
> Touching the common S5PV210 DTSI are the addition of the ADC node
> as well as fixes to the FIMC definitions and a sleep GPIO helper
> added.  The GPI gpio node name has been corrected.
> 
> The patches have been tested on both a GT-i9000 as well as an
> SGH-T959P and both can now suspend/resume properly.
> 
> Changes from v1:
> - Correct ADC node name to match reg
> - Restore removed regulator suspend state
> - Split commit adding support for new devices into separate commits
>   for each device
> - Add note where sleep gpio cfgs come from
> - Ensure subject of all patches matches subsystem
> - Add patch correcting GPI node name
> 
> 
> Jonathan Bakker (17):
>   ARM: dts: s5pv210: Add helper define for sleep gpio config
>   ARM: dts: s5pv210: Add sleep GPIO configuration for fascinate4g
>   ARM: dts: s5pv210: Add sleep GPIO configuration for galaxys
>   ARM: dts: s5pv210: Set keep-power-in-suspend for SDHCI1 on aries
>   ARM: dts: s5pv210: Disable pulls on GPIO i2c adapters for aries
>   ARM: dts: s5pv210: Add WM8994 support to aries boards
>   ARM: dts: s5pv210: Add FSA9480 support to Aries boards
>   ARM: dts: s5pv210: Add touchkey support to aries boards
>   ARM: dts: s5pv210: Add panel support to aries boards
>   ARM: dts: s5pv210: Add remaining i2c-gpio adapters to aries
>   ARM: dts: s5pv210: Disable pull for vibrator ena GPIO on aries
>   ARM: dts: s5pv210: Add an ADC node
>   ARM: dts: s5pv210: Enable ADC on aries boards
>   ARM: dts: s5pv210: Assign clocks to MMC devices on aries
>   ARM: dts: s5pv210: Correct FIMC definitions
>   ARM: dts: s5pv210: Set MAX8998 GPIO pulls on aries
>   ARM: dts: s5pv210: Correct gpi gpio node name
> 
> Paweł Chmiel (1):
>   ARM: dts: s5pv210: Add si470x fmradio to galaxys
>

Nice job!

Thanks, I applied entire set.

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 46+ messages in thread

end of thread, other threads:[~2020-05-04 15:15 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20200426183604.28494-1-xc-racer2@live.ca>
2020-04-26 18:35 ` [PATCH 01/13] arm: dts: s5pv210: Add helper define for sleep gpio config Jonathan Bakker
2020-04-26 18:35 ` [PATCH 02/13] arm: dts: s5pv210: fascinate4g: Add sleep GPIO configuration Jonathan Bakker
2020-04-28 10:02   ` Krzysztof Kozlowski
2020-04-28 23:49     ` Jonathan Bakker
2020-05-01 13:10       ` Krzysztof Kozlowski
2020-04-26 18:35 ` [PATCH 03/13] arm: dts: s5pv210: galaxys: " Jonathan Bakker
2020-04-26 18:35 ` [PATCH 04/13] arm: dts: s5pv210: aries: Set keep-power-in-suspend for SDHCI1 Jonathan Bakker
2020-04-26 18:35 ` [PATCH 05/13] arm: dts: s5pv210: aries: Disable pulls on GPIO i2c adapters Jonathan Bakker
2020-04-26 18:35 ` [PATCH 06/13] arm: dts: s5pv210: aries: Add support for more devices Jonathan Bakker
2020-04-28 10:20   ` Krzysztof Kozlowski
2020-04-28 23:32     ` Jonathan Bakker
2020-05-01 13:31       ` Krzysztof Kozlowski
2020-05-01 19:43         ` Jonathan Bakker
2020-04-26 18:35 ` [PATCH 07/13] arm: dts: s5pv210: galaxys: Add si470x fmradio Jonathan Bakker
2020-04-26 18:35 ` [PATCH 08/13] arm: dts: s5pv210: aries: Disable pull for vibrator ena GPIO Jonathan Bakker
2020-04-26 18:36 ` [PATCH 09/13] arm: dts: s5pv210: Add an ADC node Jonathan Bakker
2020-04-28 10:26   ` Krzysztof Kozlowski
2020-04-28 22:27     ` Jonathan Bakker
2020-04-26 18:36 ` [PATCH 10/13] arm: dts: s5pv210: aries: Enable " Jonathan Bakker
2020-04-28 10:29   ` Krzysztof Kozlowski
2020-04-28 22:26     ` Jonathan Bakker
2020-04-26 18:36 ` [PATCH 11/13] arm: dts: s5pv210: Assign clocks to MMC devices Jonathan Bakker
2020-04-26 18:36 ` [PATCH 12/13] arm: dts: s5pv210: Correct FIMC definitions Jonathan Bakker
2020-04-28 10:32   ` Krzysztof Kozlowski
2020-04-28 22:31     ` Jonathan Bakker
2020-04-26 18:36 ` [PATCH 13/13] arm: dts: s5pv210: aries: Set MAX8998 GPIO pulls Jonathan Bakker
2020-05-01 23:50 ` [PATCH v2 00/18] S5PV210 and Aries DTS improvements Jonathan Bakker
2020-05-04 15:15   ` Krzysztof Kozlowski
     [not found] ` <20200501235019.24022-1-xc-racer2@live.ca>
2020-05-01 23:50   ` [PATCH v2 01/18] ARM: dts: s5pv210: Add helper define for sleep gpio config Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 02/18] ARM: dts: s5pv210: Add sleep GPIO configuration for fascinate4g Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 03/18] ARM: dts: s5pv210: Add sleep GPIO configuration for galaxys Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 04/18] ARM: dts: s5pv210: Set keep-power-in-suspend for SDHCI1 on aries Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 05/18] ARM: dts: s5pv210: Disable pulls on GPIO i2c adapters for aries Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 06/18] ARM: dts: s5pv210: Add WM8994 support to aries boards Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 07/18] ARM: dts: s5pv210: Add FSA9480 support to Aries boards Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 08/18] ARM: dts: s5pv210: Add touchkey support to aries boards Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 09/18] ARM: dts: s5pv210: Add panel " Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 10/18] ARM: dts: s5pv210: Add remaining i2c-gpio adapters to aries Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 11/18] ARM: dts: s5pv210: Add si470x fmradio to galaxys Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 12/18] ARM: dts: s5pv210: Disable pull for vibrator ena GPIO on aries Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 13/18] ARM: dts: s5pv210: Add an ADC node Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 14/18] ARM: dts: s5pv210: Enable ADC on aries boards Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 15/18] ARM: dts: s5pv210: Assign clocks to MMC devices on aries Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 16/18] ARM: dts: s5pv210: Correct FIMC definitions Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 17/18] ARM: dts: s5pv210: Set MAX8998 GPIO pulls on aries Jonathan Bakker
2020-05-01 23:50   ` [PATCH v2 18/18] ARM: dts: s5pv210: Correct gpi gpio node name Jonathan Bakker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).