Linux clock framework development
 help / color / mirror / Atom feed
* [PATCH v2 0/6] gs101 oriole: peripheral block 0 (peric0) fixes
@ 2024-01-30  9:36 André Draszik
  2024-01-30  9:36 ` [PATCH v2 1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on André Draszik
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: André Draszik @ 2024-01-30  9:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree

Hi,

While working on peric1, I've noticed a few issues in the peric0 area
and these patches are the result. They should all be pretty
self-explanatory.

Cheers,
Andre'

 arch/arm64/boot/dts/exynos/google/gs101.dtsi | 11 ++++++-----
 drivers/clk/samsung/clk-gs101.c              |  8 +++-----
 2 files changed, 9 insertions(+), 10 deletions(-)

Changes in v2:
* new patch #6
- fix a typo in the commit messages of patches #3 and #5 (André)
- add some empty lines to commit messages (Sam)
- collect Reviewed-by: Tested-by: tags


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

* [PATCH v2 1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on
  2024-01-30  9:36 [PATCH v2 0/6] gs101 oriole: peripheral block 0 (peric0) fixes André Draszik
@ 2024-01-30  9:36 ` André Draszik
  2024-02-01  9:58   ` Krzysztof Kozlowski
  2024-02-01 10:36   ` (subset) " Krzysztof Kozlowski
  2024-01-30  9:36 ` [PATCH v2 2/6] arm64: dts: exynos: gs101: fix usi8 default mode André Draszik
                   ` (4 subsequent siblings)
  5 siblings, 2 replies; 15+ messages in thread
From: André Draszik @ 2024-01-30  9:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree,
	André Draszik

This pclk clock is required any time we access the pinctrl registers of
this block.

Since pinctrl-samsung doesn't support a clock at the moment, we just
keep the kernel from disabling it at boot, until we have an update for
pinctrl-samsung to handle this required clock, at which point we'll be
able to drop the flag again.

Fixes: 893f133a040b ("clk: samsung: gs101: add support for cmu_peric0")
Signed-off-by: André Draszik <andre.draszik@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>

---
v2: collect Reviewed-by: tags
---
 drivers/clk/samsung/clk-gs101.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/samsung/clk-gs101.c b/drivers/clk/samsung/clk-gs101.c
index 4a0520e825b6..61bb0dcf84ee 100644
--- a/drivers/clk/samsung/clk-gs101.c
+++ b/drivers/clk/samsung/clk-gs101.c
@@ -2848,7 +2848,7 @@ static const struct samsung_gate_clock peric0_gate_clks[] __initconst = {
 	GATE(CLK_GOUT_PERIC0_GPIO_PERIC0_PCLK,
 	     "gout_peric0_gpio_peric0_pclk", "mout_peric0_bus_user",
 	     CLK_CON_GAT_GOUT_BLK_PERIC0_UID_GPIO_PERIC0_IPCLKPORT_PCLK,
-	     21, 0, 0),
+	     21, CLK_IGNORE_UNUSED, 0),
 	/* Disabling this clock makes the system hang. Mark the clock as critical. */
 	GATE(CLK_GOUT_PERIC0_LHM_AXI_P_PERIC0_I_CLK,
 	     "gout_peric0_lhm_axi_p_peric0_i_clk", "mout_peric0_bus_user",
-- 
2.43.0.429.g432eaa2c6b-goog


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

* [PATCH v2 2/6] arm64: dts: exynos: gs101: fix usi8 default mode
  2024-01-30  9:36 [PATCH v2 0/6] gs101 oriole: peripheral block 0 (peric0) fixes André Draszik
  2024-01-30  9:36 ` [PATCH v2 1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on André Draszik
@ 2024-01-30  9:36 ` André Draszik
  2024-02-01 10:16   ` Krzysztof Kozlowski
  2024-01-30  9:36 ` [PATCH v2 3/6] arm64: dts: exynos: gs101: use correct clocks for usi8 André Draszik
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: André Draszik @ 2024-01-30  9:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree,
	André Draszik

While commit 6d44d1a1fb62 ("arm64: dts: exynos: gs101: define USI8 with
I2C configuration") states that the USI8 CONFIG is 0 at reset, the boot
loader has configured it by the time Linux runs and it has a different
value at this stage.

Since we want board DTS files to explicitly select the mode, we should
set it to none here so as to ensure things don't work by accident and
to make it clear that board DTS actually need to set the mode based on
the configuration.

Fixes: 6d44d1a1fb62 ("arm64: dts: exynos: gs101: define USI8 with I2C configuration")
Signed-off-by: André Draszik <andre.draszik@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>

---
v2: collect Reviewed-by: tags
---
 arch/arm64/boot/dts/exynos/google/gs101.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/exynos/google/gs101.dtsi b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
index aaac04df5e65..bc251e565be6 100644
--- a/arch/arm64/boot/dts/exynos/google/gs101.dtsi
+++ b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
@@ -384,6 +384,7 @@ usi8: usi@109700c0 {
 				 <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP0_IPCLK_7>;
 			clock-names = "pclk", "ipclk";
 			samsung,sysreg = <&sysreg_peric0 0x101c>;
+			samsung,mode = <USI_V2_NONE>;
 			status = "disabled";
 
 			hsi2c_8: i2c@10970000 {
-- 
2.43.0.429.g432eaa2c6b-goog


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

* [PATCH v2 3/6] arm64: dts: exynos: gs101: use correct clocks for usi8
  2024-01-30  9:36 [PATCH v2 0/6] gs101 oriole: peripheral block 0 (peric0) fixes André Draszik
  2024-01-30  9:36 ` [PATCH v2 1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on André Draszik
  2024-01-30  9:36 ` [PATCH v2 2/6] arm64: dts: exynos: gs101: fix usi8 default mode André Draszik
@ 2024-01-30  9:36 ` André Draszik
  2024-02-01 10:36   ` (subset) " Krzysztof Kozlowski
  2024-01-30  9:36 ` [PATCH v2 4/6] arm64: dts: exynos: gs101: use correct clocks for usi_uart André Draszik
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 15+ messages in thread
From: André Draszik @ 2024-01-30  9:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree,
	André Draszik

Wrong pclk clocks have been used in this usi8 instance here. For USI
and I2C, we need the ipclk and pclk, where pclk is the bus clock.
Without it, nothing can work.

It is unclear what exactly is using USI8_USI_CLK, but it is not
required for the IP to be operational at this stage, while pclk is.
This also brings the DT in line with the clock names expected by the
usi and i2c drivers.

Update the DTSI accordingly.

Fixes: 6d44d1a1fb62 ("arm64: dts: exynos: gs101: define USI8 with I2C configuration")
Signed-off-by: André Draszik <andre.draszik@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Tested-by: Tudor Ambarus <tudor.ambarus@linaro.org>

---
v2:
* add an empty line to commit message
* collect Reviewed-by: Tested-by: tags
---
 arch/arm64/boot/dts/exynos/google/gs101.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/exynos/google/gs101.dtsi b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
index bc251e565be6..e5b665be2d62 100644
--- a/arch/arm64/boot/dts/exynos/google/gs101.dtsi
+++ b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
@@ -380,7 +380,7 @@ usi8: usi@109700c0 {
 			ranges;
 			#address-cells = <1>;
 			#size-cells = <1>;
-			clocks = <&cmu_peric0 CLK_GOUT_PERIC0_CLK_PERIC0_USI8_USI_CLK>,
+			clocks = <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP0_PCLK_7>,
 				 <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP0_IPCLK_7>;
 			clock-names = "pclk", "ipclk";
 			samsung,sysreg = <&sysreg_peric0 0x101c>;
@@ -397,7 +397,7 @@ hsi2c_8: i2c@10970000 {
 				pinctrl-names = "default";
 				pinctrl-0 = <&hsi2c8_bus>;
 				clocks = <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP0_IPCLK_7>,
-					 <&cmu_peric0 CLK_GOUT_PERIC0_CLK_PERIC0_USI8_USI_CLK>;
+					 <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP0_PCLK_7>;
 				clock-names = "hsi2c", "hsi2c_pclk";
 				status = "disabled";
 			};
-- 
2.43.0.429.g432eaa2c6b-goog


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

* [PATCH v2 4/6] arm64: dts: exynos: gs101: use correct clocks for usi_uart
  2024-01-30  9:36 [PATCH v2 0/6] gs101 oriole: peripheral block 0 (peric0) fixes André Draszik
                   ` (2 preceding siblings ...)
  2024-01-30  9:36 ` [PATCH v2 3/6] arm64: dts: exynos: gs101: use correct clocks for usi8 André Draszik
@ 2024-01-30  9:36 ` André Draszik
  2024-02-01 10:36   ` (subset) " Krzysztof Kozlowski
  2024-01-30  9:36 ` [PATCH v2 5/6] clk: samsung: gs101: don't mark non-essential clocks as critical André Draszik
  2024-01-30  9:36 ` [PATCH v2 6/6] arm64: dts: exynos: gs101: reorder hsi2c_8 pinctrl-* properties André Draszik
  5 siblings, 1 reply; 15+ messages in thread
From: André Draszik @ 2024-01-30  9:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree,
	André Draszik

Wrong pclk clocks have been used in this usi_uart instance here. For
USI and UART, we need the ipclk and pclk, where pclk is the bus clock.
Without it, nothing can work.

It is unclear what exactly is using USI0_UART_CLK, but it is not
required for the IP to be operational at this stage, while pclk is.
This also brings the DT in line with the clock names expected by the
usi and uart drivers.

Update the DTSI accordingly.

Fixes: d97b6c902a40 ("arm64: dts: exynos: gs101: update USI UART to use peric0 clocks")
Signed-off-by: André Draszik <andre.draszik@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Tested-by: Tudor Ambarus <tudor.ambarus@linaro.org>

---
v2:
* fix a typo in and add an empty line to the commit message
* collect Reviewed-by: Tested-by: tags
---
 arch/arm64/boot/dts/exynos/google/gs101.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/exynos/google/gs101.dtsi b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
index e5b665be2d62..f93e937d2726 100644
--- a/arch/arm64/boot/dts/exynos/google/gs101.dtsi
+++ b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
@@ -410,7 +410,7 @@ usi_uart: usi@10a000c0 {
 			ranges;
 			#address-cells = <1>;
 			#size-cells = <1>;
-			clocks = <&cmu_peric0 CLK_GOUT_PERIC0_CLK_PERIC0_USI0_UART_CLK>,
+			clocks = <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP1_PCLK_0>,
 				 <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP1_IPCLK_0>;
 			clock-names = "pclk", "ipclk";
 			samsung,sysreg = <&sysreg_peric0 0x1020>;
@@ -422,7 +422,7 @@ serial_0: serial@10a00000 {
 				reg = <0x10a00000 0xc0>;
 				interrupts = <GIC_SPI 634
 					      IRQ_TYPE_LEVEL_HIGH 0>;
-				clocks = <&cmu_peric0 CLK_GOUT_PERIC0_CLK_PERIC0_USI0_UART_CLK>,
+				clocks = <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP1_PCLK_0>,
 					 <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP1_IPCLK_0>;
 				clock-names = "uart", "clk_uart_baud0";
 				samsung,uart-fifosize = <256>;
-- 
2.43.0.429.g432eaa2c6b-goog


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

* [PATCH v2 5/6] clk: samsung: gs101: don't mark non-essential clocks as critical
  2024-01-30  9:36 [PATCH v2 0/6] gs101 oriole: peripheral block 0 (peric0) fixes André Draszik
                   ` (3 preceding siblings ...)
  2024-01-30  9:36 ` [PATCH v2 4/6] arm64: dts: exynos: gs101: use correct clocks for usi_uart André Draszik
@ 2024-01-30  9:36 ` André Draszik
  2024-02-01 10:02   ` Krzysztof Kozlowski
  2024-01-30  9:36 ` [PATCH v2 6/6] arm64: dts: exynos: gs101: reorder hsi2c_8 pinctrl-* properties André Draszik
  5 siblings, 1 reply; 15+ messages in thread
From: André Draszik @ 2024-01-30  9:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree,
	André Draszik

The peric0_top1_ipclk_0 and peric0_top1_pclk_0 are the clocks going to
peric0/uart_usi, with pclk being the bus clock. Without pclk running,
any bus access will hang.
Unfortunately, in commit d97b6c902a40 ("arm64: dts: exynos: gs101:
update USI UART to use peric0 clocks") the gs101 DT ended up specifying
an incorrect pclk in the respective node and instead the two clocks
here were marked as critical.

We have fixed the gs101 DT and can therefore drop this incorrect
work-around here, the uart driver will claim these clocks as needed.

Note that this commit has the side-effect of causing earlycon to stop
to work sometime into the boot for two reasons:
    * peric0_top1_ipclk_0 requires its parent gout_cmu_peric0_ip to be
      running, but because earlycon doesn't deal with clocks that
      parent will be disabled when none of the other drivers that
      actually deal with clocks correctly require it to be running and
      the real serial driver (which does deal with clocks) hasn't taken
      over yet
    * hand-over between earlycon and serial driver appears to be
      fragile and clocks get enabled and disabled a few times, which
      also causes register access to hang while earlycon is still
      active
Nonetheless we shouldn't keep these clocks running unconditionally just
for earlycon. Clocks should be disabled where possible. If earlycon is
required in the future, e.g. for debug, this commit can simply be
reverted (locally!).

Fixes: 893f133a040b ("clk: samsung: gs101: add support for cmu_peric0")
Signed-off-by: André Draszik <andre.draszik@linaro.org>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>

---
v2:
* collect Reviewed-by: tags
---
 drivers/clk/samsung/clk-gs101.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/samsung/clk-gs101.c b/drivers/clk/samsung/clk-gs101.c
index 61bb0dcf84ee..5c338ac9231c 100644
--- a/drivers/clk/samsung/clk-gs101.c
+++ b/drivers/clk/samsung/clk-gs101.c
@@ -2982,20 +2982,18 @@ static const struct samsung_gate_clock peric0_gate_clks[] __initconst = {
 	     "gout_peric0_peric0_top0_pclk_9", "mout_peric0_bus_user",
 	     CLK_CON_GAT_GOUT_BLK_PERIC0_UID_PERIC0_TOP0_IPCLKPORT_PCLK_9,
 	     21, 0, 0),
-	/* Disabling this clock makes the system hang. Mark the clock as critical. */
 	GATE(CLK_GOUT_PERIC0_PERIC0_TOP1_IPCLK_0,
 	     "gout_peric0_peric0_top1_ipclk_0", "dout_peric0_usi0_uart",
 	     CLK_CON_GAT_GOUT_BLK_PERIC0_UID_PERIC0_TOP1_IPCLKPORT_IPCLK_0,
-	     21, CLK_IS_CRITICAL, 0),
+	     21, 0, 0),
 	GATE(CLK_GOUT_PERIC0_PERIC0_TOP1_IPCLK_2,
 	     "gout_peric0_peric0_top1_ipclk_2", "dout_peric0_usi14_usi",
 	     CLK_CON_GAT_GOUT_BLK_PERIC0_UID_PERIC0_TOP1_IPCLKPORT_IPCLK_2,
 	     21, 0, 0),
-	/* Disabling this clock makes the system hang. Mark the clock as critical. */
 	GATE(CLK_GOUT_PERIC0_PERIC0_TOP1_PCLK_0,
 	     "gout_peric0_peric0_top1_pclk_0", "mout_peric0_bus_user",
 	     CLK_CON_GAT_GOUT_BLK_PERIC0_UID_PERIC0_TOP1_IPCLKPORT_PCLK_0,
-	     21, CLK_IS_CRITICAL, 0),
+	     21, 0, 0),
 	GATE(CLK_GOUT_PERIC0_PERIC0_TOP1_PCLK_2,
 	     "gout_peric0_peric0_top1_pclk_2", "mout_peric0_bus_user",
 	     CLK_CON_GAT_GOUT_BLK_PERIC0_UID_PERIC0_TOP1_IPCLKPORT_PCLK_2,
-- 
2.43.0.429.g432eaa2c6b-goog


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

* [PATCH v2 6/6] arm64: dts: exynos: gs101: reorder hsi2c_8 pinctrl-* properties
  2024-01-30  9:36 [PATCH v2 0/6] gs101 oriole: peripheral block 0 (peric0) fixes André Draszik
                   ` (4 preceding siblings ...)
  2024-01-30  9:36 ` [PATCH v2 5/6] clk: samsung: gs101: don't mark non-essential clocks as critical André Draszik
@ 2024-01-30  9:36 ` André Draszik
  2024-02-01 10:04   ` Krzysztof Kozlowski
  5 siblings, 1 reply; 15+ messages in thread
From: André Draszik @ 2024-01-30  9:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree,
	André Draszik

The preferred order for these is pinctrl-0 pinctrl-names.

Update the DTSI accordingly.

Signed-off-by: André Draszik <andre.draszik@linaro.org>
Suggested-by: Sam Protsenko <semen.protsenko@linaro.org>

---
v2: new patch in this series
---
 arch/arm64/boot/dts/exynos/google/gs101.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/exynos/google/gs101.dtsi b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
index f93e937d2726..195533fe04c6 100644
--- a/arch/arm64/boot/dts/exynos/google/gs101.dtsi
+++ b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
@@ -394,8 +394,8 @@ hsi2c_8: i2c@10970000 {
 				interrupts = <GIC_SPI 642 IRQ_TYPE_LEVEL_HIGH 0>;
 				#address-cells = <1>;
 				#size-cells = <0>;
-				pinctrl-names = "default";
 				pinctrl-0 = <&hsi2c8_bus>;
+				pinctrl-names = "default";
 				clocks = <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP0_IPCLK_7>,
 					 <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP0_PCLK_7>;
 				clock-names = "hsi2c", "hsi2c_pclk";
-- 
2.43.0.429.g432eaa2c6b-goog


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

* Re: [PATCH v2 1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on
  2024-01-30  9:36 ` [PATCH v2 1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on André Draszik
@ 2024-02-01  9:58   ` Krzysztof Kozlowski
  2024-02-01 10:36   ` (subset) " Krzysztof Kozlowski
  1 sibling, 0 replies; 15+ messages in thread
From: Krzysztof Kozlowski @ 2024-02-01  9:58 UTC (permalink / raw)
  To: André Draszik, peter.griffin, mturquette, sboyd, robh+dt,
	krzysztof.kozlowski+dt, conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree

On 30/01/2024 10:36, André Draszik wrote:
> This pclk clock is required any time we access the pinctrl registers of
> this block.
> 
> Since pinctrl-samsung doesn't support a clock at the moment, we just
> keep the kernel from disabling it at boot, until we have an update for
> pinctrl-samsung to handle this required clock, at which point we'll be
> able to drop the flag again.
> 
> Fixes: 893f133a040b ("clk: samsung: gs101: add support for cmu_peric0")

Dropped fixes tag. The driver looks correct, it's pinctrl issue.

I really dislike how these patches are inter-mixed with DTS. Makes
applying difficult and confuses about dependencies.

I assume there are no dependencies here.

I am repeating this and repeating, but in future I will just reject the
patches:

Your DTS and driver changes cannot depend on each other for new feature
submissions.

Best regards,
Krzysztof


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

* Re: [PATCH v2 5/6] clk: samsung: gs101: don't mark non-essential clocks as critical
  2024-01-30  9:36 ` [PATCH v2 5/6] clk: samsung: gs101: don't mark non-essential clocks as critical André Draszik
@ 2024-02-01 10:02   ` Krzysztof Kozlowski
  2024-02-01 15:23     ` André Draszik
  0 siblings, 1 reply; 15+ messages in thread
From: Krzysztof Kozlowski @ 2024-02-01 10:02 UTC (permalink / raw)
  To: André Draszik, peter.griffin, mturquette, sboyd, robh+dt,
	krzysztof.kozlowski+dt, conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree

On 30/01/2024 10:36, André Draszik wrote:
> The peric0_top1_ipclk_0 and peric0_top1_pclk_0 are the clocks going to
> peric0/uart_usi, with pclk being the bus clock. Without pclk running,
> any bus access will hang.
> Unfortunately, in commit d97b6c902a40 ("arm64: dts: exynos: gs101:
> update USI UART to use peric0 clocks") the gs101 DT ended up specifying
> an incorrect pclk in the respective node and instead the two clocks
> here were marked as critical.
> 
> We have fixed the gs101 DT and can therefore drop this incorrect
> work-around here, the uart driver will claim these clocks as needed.

How did you fixed the DTS? Which commit did it? Are we going back to
basics of driver changes depending on DTS?

Best regards,
Krzysztof


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

* Re: [PATCH v2 6/6] arm64: dts: exynos: gs101: reorder hsi2c_8 pinctrl-* properties
  2024-01-30  9:36 ` [PATCH v2 6/6] arm64: dts: exynos: gs101: reorder hsi2c_8 pinctrl-* properties André Draszik
@ 2024-02-01 10:04   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 15+ messages in thread
From: Krzysztof Kozlowski @ 2024-02-01 10:04 UTC (permalink / raw)
  To: André Draszik, peter.griffin, mturquette, sboyd, robh+dt,
	krzysztof.kozlowski+dt, conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree

On 30/01/2024 10:36, André Draszik wrote:
> The preferred order for these is pinctrl-0 pinctrl-names.
> 
> Update the DTSI accordingly.
> 
> Signed-off-by: André Draszik <andre.draszik@linaro.org>
> Suggested-by: Sam Protsenko <semen.protsenko@linaro.org>
> 
> ---
> v2: new patch in this series
> ---
>  arch/arm64/boot/dts/exynos/google/gs101.dtsi | 2 +-

This is trivial cleanup, which is fine but then do it for entire Google
GS DTSI and DTS, not only one case.

Best regards,
Krzysztof


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

* Re: [PATCH v2 2/6] arm64: dts: exynos: gs101: fix usi8 default mode
  2024-01-30  9:36 ` [PATCH v2 2/6] arm64: dts: exynos: gs101: fix usi8 default mode André Draszik
@ 2024-02-01 10:16   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 15+ messages in thread
From: Krzysztof Kozlowski @ 2024-02-01 10:16 UTC (permalink / raw)
  To: André Draszik, peter.griffin, mturquette, sboyd, robh+dt,
	krzysztof.kozlowski+dt, conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree

On 30/01/2024 10:36, André Draszik wrote:
> While commit 6d44d1a1fb62 ("arm64: dts: exynos: gs101: define USI8 with
> I2C configuration") states that the USI8 CONFIG is 0 at reset, the boot
> loader has configured it by the time Linux runs and it has a different
> value at this stage.

This issue was pointed during review:
https://lore.kernel.org/all/CAPLW+4=U9DBmwgxyWz3cy=V-Ui7s2Z9um4xbEuyax1o=0zB_NA@mail.gmail.com/

Yet you posted new version of patchset not implementing this, just to do
it week later as new patch.

Sorry guys, it seems you need much more time to accept and go through
review, I will use two weeks delay time for applying GS patches.

Now, for the patch, we don't do it for any other nodes which have 0 as
reset value and we do not know what bootloader does there. Bootloader
also can change.

This is a required property, therefore please explain me how, really
how, this can happen:

" we should
set it to none here so as to ensure things don't work by accident"

NAK

Best regards,
Krzysztof


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

* Re: (subset) [PATCH v2 3/6] arm64: dts: exynos: gs101: use correct clocks for usi8
  2024-01-30  9:36 ` [PATCH v2 3/6] arm64: dts: exynos: gs101: use correct clocks for usi8 André Draszik
@ 2024-02-01 10:36   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 15+ messages in thread
From: Krzysztof Kozlowski @ 2024-02-01 10:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt, André Draszik
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree


On Tue, 30 Jan 2024 09:36:42 +0000, André Draszik wrote:
> Wrong pclk clocks have been used in this usi8 instance here. For USI
> and I2C, we need the ipclk and pclk, where pclk is the bus clock.
> Without it, nothing can work.
> 
> It is unclear what exactly is using USI8_USI_CLK, but it is not
> required for the IP to be operational at this stage, while pclk is.
> This also brings the DT in line with the clock names expected by the
> usi and i2c drivers.
> 
> [...]

Applied, thanks!

[3/6] arm64: dts: exynos: gs101: use correct clocks for usi8
      https://git.kernel.org/krzk/linux/c/512b5a875cd8b8352257fefe71513097ee97be77

Best regards,
-- 
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>


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

* Re: (subset) [PATCH v2 4/6] arm64: dts: exynos: gs101: use correct clocks for usi_uart
  2024-01-30  9:36 ` [PATCH v2 4/6] arm64: dts: exynos: gs101: use correct clocks for usi_uart André Draszik
@ 2024-02-01 10:36   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 15+ messages in thread
From: Krzysztof Kozlowski @ 2024-02-01 10:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt, André Draszik
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree


On Tue, 30 Jan 2024 09:36:43 +0000, André Draszik wrote:
> Wrong pclk clocks have been used in this usi_uart instance here. For
> USI and UART, we need the ipclk and pclk, where pclk is the bus clock.
> Without it, nothing can work.
> 
> It is unclear what exactly is using USI0_UART_CLK, but it is not
> required for the IP to be operational at this stage, while pclk is.
> This also brings the DT in line with the clock names expected by the
> usi and uart drivers.
> 
> [...]

Applied, thanks!

[4/6] arm64: dts: exynos: gs101: use correct clocks for usi_uart
      https://git.kernel.org/krzk/linux/c/21e4e8807bfc7acc0fc9fe3ab69e1dc0662e7ce4

Best regards,
-- 
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>


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

* Re: (subset) [PATCH v2 1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on
  2024-01-30  9:36 ` [PATCH v2 1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on André Draszik
  2024-02-01  9:58   ` Krzysztof Kozlowski
@ 2024-02-01 10:36   ` Krzysztof Kozlowski
  1 sibling, 0 replies; 15+ messages in thread
From: Krzysztof Kozlowski @ 2024-02-01 10:36 UTC (permalink / raw)
  To: peter.griffin, mturquette, sboyd, robh+dt, krzysztof.kozlowski+dt,
	conor+dt, André Draszik
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree


On Tue, 30 Jan 2024 09:36:40 +0000, André Draszik wrote:
> This pclk clock is required any time we access the pinctrl registers of
> this block.
> 
> Since pinctrl-samsung doesn't support a clock at the moment, we just
> keep the kernel from disabling it at boot, until we have an update for
> pinctrl-samsung to handle this required clock, at which point we'll be
> able to drop the flag again.
> 
> [...]

Applied, thanks!

[1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on
      https://git.kernel.org/krzk/linux/c/8a96d2701f7c794e45102a9cc7fc4a5c4951e699

Best regards,
-- 
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>


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

* Re: [PATCH v2 5/6] clk: samsung: gs101: don't mark non-essential clocks as critical
  2024-02-01 10:02   ` Krzysztof Kozlowski
@ 2024-02-01 15:23     ` André Draszik
  0 siblings, 0 replies; 15+ messages in thread
From: André Draszik @ 2024-02-01 15:23 UTC (permalink / raw)
  To: Krzysztof Kozlowski, peter.griffin, mturquette, sboyd, robh+dt,
	krzysztof.kozlowski+dt, conor+dt
  Cc: linux-kernel, kernel-team, tudor.ambarus, willmcvicker,
	semen.protsenko, alim.akhtar, s.nawrocki, tomasz.figa, cw00.choi,
	linux-arm-kernel, linux-samsung-soc, linux-clk, devicetree

Hi Krzysztof,

On Thu, 2024-02-01 at 11:02 +0100, Krzysztof Kozlowski wrote:
> On 30/01/2024 10:36, André Draszik wrote:
> > The peric0_top1_ipclk_0 and peric0_top1_pclk_0 are the clocks going to
> > peric0/uart_usi, with pclk being the bus clock. Without pclk running,
> > any bus access will hang.
> > Unfortunately, in commit d97b6c902a40 ("arm64: dts: exynos: gs101:
> > update USI UART to use peric0 clocks") the gs101 DT ended up specifying
> > an incorrect pclk in the respective node and instead the two clocks
> > here were marked as critical.
> > 
> > We have fixed the gs101 DT and can therefore drop this incorrect
> > work-around here, the uart driver will claim these clocks as needed.
> 
> How did you fixed the DTS? Which commit did it? Are we going back to
> basics of driver changes depending on DTS?

Sorry if the description isn't clear.

a) these clocks are not critical for the system to work, and this patch fixes that.
b) the initial DTSI for gs101 used incorrect clocks for the serial, and it didn't
work. The work-around was to specify these clocks here as critical instead. Patch
#4 in this series has corrected the DTSI.

So there is no dependency between the DTS update and the driver update here as such,
no new properties, or otherwise.

That said, now that b) above has been fixed (in patch #4), it is OK to mark these
clocks as non-critical without any ill effects. That's all that is happening. I was
merely referencing that in the commit message.

I can rephrase things if you wish.


Cheers,
Andre'


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

end of thread, other threads:[~2024-02-01 15:23 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-30  9:36 [PATCH v2 0/6] gs101 oriole: peripheral block 0 (peric0) fixes André Draszik
2024-01-30  9:36 ` [PATCH v2 1/6] clk: samsung: gs101: gpio_peric0_pclk needs to be kept on André Draszik
2024-02-01  9:58   ` Krzysztof Kozlowski
2024-02-01 10:36   ` (subset) " Krzysztof Kozlowski
2024-01-30  9:36 ` [PATCH v2 2/6] arm64: dts: exynos: gs101: fix usi8 default mode André Draszik
2024-02-01 10:16   ` Krzysztof Kozlowski
2024-01-30  9:36 ` [PATCH v2 3/6] arm64: dts: exynos: gs101: use correct clocks for usi8 André Draszik
2024-02-01 10:36   ` (subset) " Krzysztof Kozlowski
2024-01-30  9:36 ` [PATCH v2 4/6] arm64: dts: exynos: gs101: use correct clocks for usi_uart André Draszik
2024-02-01 10:36   ` (subset) " Krzysztof Kozlowski
2024-01-30  9:36 ` [PATCH v2 5/6] clk: samsung: gs101: don't mark non-essential clocks as critical André Draszik
2024-02-01 10:02   ` Krzysztof Kozlowski
2024-02-01 15:23     ` André Draszik
2024-01-30  9:36 ` [PATCH v2 6/6] arm64: dts: exynos: gs101: reorder hsi2c_8 pinctrl-* properties André Draszik
2024-02-01 10:04   ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox