Skip to contentSkip to conversation

Introduce Nuvoton Arbel NPCM8XX BMC SoC

PATCH Superseded Tomer Maimon 8 participants 64 messages Jun 8, 2022 – Jun 16, 2022

Subsystems (9)

v2 of 28 Superseded Latest is v28 →

lore
Share & tools
lore

Tomer Maimon

author maintainer
#0 lore raw

v2 cover Introduce Nuvoton Arbel NPCM8XX BMC SoC

This patchset adds initial support for the Nuvoton Arbel NPCM8XX Board Management controller (BMC) SoC family.

The Nuvoton Arbel NPCM8XX SoC is a fourth-generation BMC. The NPCM8XX computing subsystem comprises a quadcore ARM Cortex A35 ARM-V8 architecture.

This patchset adds minimal architecture and drivers such as:
Clocksource, Clock, Reset, and WD.

Some of the Arbel NPCM8XX peripherals are based on Poleg NPCM7XX.

This patchset was tested on the Arbel NPCM8XX evaluation board.

Addressed comments from:
- Arnd Bergmann : https://www.spinics.net/lists/arm-kernel/msg982728.html

		   https://www.spinics.net/lists/linux-serial/msg48179.html
 - Stephen Boyd: https://www.spinics.net/lists/arm-kernel/msg983594.html
 - Krzysztof Kozlowski: https://www.spinics.net/lists/kernel/msg4368955.html
			https://www.spinics.net/lists/arm-kernel/msg982427.html
			https://lore.kernel.org/all/[email protected]/
			https://www.spinics.net/lists/arm-kernel/msg982778.html
			https://www.spinics.net/lists/arm-kernel/msg982588.html

- Ilpo Järvinen: https://www.spinics.net/lists/kernel/msg4368936.html
- Stephen Boyd: https://www.spinics.net/lists/arm-kernel/msg983596.html
- Geert Uytterhoeven : https://www.spinics.net/lists/kernel/msg4369514.html

Changes since version 1:
- NPCM8XX clock driver
- Modify dt-binding.
- Remove unsed definition and include.
- Include alphabetically.
- Use clock devm.
- NPCM reset driver
- Modify dt-binding.
- Modify syscon name.
- Add syscon support to NPCM7XX dts reset node.
- use data structure.
- NPCM8XX device tree:
- Modify evb compatible name.
- Add NPCM7xx compatible.
- Remove disable nodes from the EVB DTS.

Tomer Maimon (20):
clocksource: timer-npcm7xx: Add NPCM845 timer
dt-bindings: serial: 8250: Add npcm845 compatible string
tty: serial: 8250: Add NPCM845 UART support
dt-bindings: watchdog: npcm: Add npcm845 compatible string
watchdog: npcm_wdt: Add NPCM845 watchdog support
dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock
clk: npcm8xx: add clock controller
dt-bindings: reset: modify to general NPCM name
dt-bindings: reset: npcm: add GCR syscon property
ARM: dts: nuvoton: add reset syscon property
reset: npcm: using syscon instead of device data
dt-bindings: reset: npcm: Add support for NPCM8XX
reset: npcm: Add NPCM8XX support
dt-bindings: arm: npcm: Add maintainer
dt-bindings: arm: npcm: Add nuvoton,npcm845 compatible string
dt-bindings: arm: npcm: Add nuvoton,npcm845 GCR compatible string
arm64: npcm: Add support for Nuvoton NPCM8XX BMC SoC
arm64: dts: nuvoton: Add initial NPCM8XX device tree
arm64: dts: nuvoton: Add initial NPCM845 EVB device tree
arm64: defconfig: Add Nuvoton NPCM family support

 .../devicetree/bindings/arm/npcm/npcm.yaml    |   7 +
 .../bindings/arm/npcm/nuvoton,gcr.yaml        |   2 +
 .../bindings/clock/nuvoton,npcm845-clk.yaml   |  63 ++
 ...750-reset.yaml => nuvoton,npcm-reset.yaml} |  21 +-
 .../devicetree/bindings/serial/8250.yaml      |   1 +
 .../bindings/watchdog/nuvoton,npcm-wdt.txt    |   3 +-
 MAINTAINERS                                   |   3 +
 arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi |   1 +
 arch/arm64/Kconfig.platforms                  |  11 +
 arch/arm64/boot/dts/Makefile                  |   1 +
 arch/arm64/boot/dts/nuvoton/Makefile          |   2 +
 .../dts/nuvoton/nuvoton-common-npcm8xx.dtsi   | 197 +++++
 .../boot/dts/nuvoton/nuvoton-npcm845-evb.dts  |  30 +
 .../boot/dts/nuvoton/nuvoton-npcm845.dtsi     |  76 ++
 arch/arm64/configs/defconfig                  |   3 +
 drivers/clk/Kconfig                           |   6 +
 drivers/clk/Makefile                          |   1 +
 drivers/clk/clk-npcm8xx.c                     | 756 ++++++++++++++++++
 drivers/clocksource/timer-npcm7xx.c           |   1 +
 drivers/reset/reset-npcm.c                    | 202 ++++-
 drivers/tty/serial/8250/8250_of.c             |   1 +
 drivers/watchdog/npcm_wdt.c                   |   1 +
 .../dt-bindings/clock/nuvoton,npcm8xx-clock.h |  50 ++
 .../dt-bindings/reset/nuvoton,npcm8xx-reset.h | 128 +++
 24 files changed, 1530 insertions(+), 37 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml
 rename Documentation/devicetree/bindings/reset/{nuvoton,npcm750-reset.yaml => nuvoton,npcm-reset.yaml} (58%)
 create mode 100644 arch/arm64/boot/dts/nuvoton/Makefile
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845-evb.dts
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845.dtsi
 create mode 100644 drivers/clk/clk-npcm8xx.c
 create mode 100644 include/dt-bindings/clock/nuvoton,npcm8xx-clock.h
 create mode 100644 include/dt-bindings/reset/nuvoton,npcm8xx-reset.h
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
author maintainer
#1 lore raw

PATCH v2 1/20 clocksource: timer-npcm7xx: Add NPCM845 timer

Add Nuvoton BMC NPCM845 timer support.
The NPCM845 uses the same timer controller as the NPCM750.

---
 drivers/clocksource/timer-npcm7xx.c | 1 +
 1 file changed, 1 insertion(+)
drivers/clocksource/timer-npcm7xx.c +1 -0
index a00520cbb660..1630daad4df5 100644
@@ -210,4 +210,5 @@ static int __init npcm7xx_timer_init(struct device_node *np)
 
 TIMER_OF_DECLARE(wpcm450, "nuvoton,wpcm450-timer", npcm7xx_timer_init);
 TIMER_OF_DECLARE(npcm7xx, "nuvoton,npcm750-timer", npcm7xx_timer_init);
+TIMER_OF_DECLARE(npcm8xx, "nuvoton,npcm845-timer", npcm7xx_timer_init);
 
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
maintainer
#2 lore raw

Re: [PATCH v2 01/20] clocksource: timer-npcm7xx: Add NPCM845 timer

Quoted 7 lines · Tomer Maimon

Add Nuvoton BMC NPCM845 timer support.
The NPCM845 uses the same timer controller as the NPCM750.

---
 drivers/clocksource/timer-npcm7xx.c | 1 +

This one should no longer be needed if the timers are compatible with the old ones and correctly described in the DT.

Arnd

author maintainer
#3 lore raw

PATCH v2 2/20 dt-bindings: serial: 8250: Add npcm845 compatible string

In reply to Tomer Maimon

Add a compatible string for Nuvoton BMC NPCM845 UART.

---
 Documentation/devicetree/bindings/serial/8250.yaml | 1 +
 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/serial/8250.yaml +1 -0
index 5f6b113d378f..6258f5f59b19 100644
@@ -62,6 +62,7 @@ properties:
       - const: mrvl,pxa-uart
       - const: nuvoton,wpcm450-uart
       - const: nuvoton,npcm750-uart
+      - const: nuvoton,npcm845-uart
       - const: nvidia,tegra20-uart
       - const: nxp,lpc3220-uart
       - items:
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
author maintainer
#4 lore raw

PATCH v2 3/20 tty: serial: 8250: Add NPCM845 UART support

In reply to Tomer Maimon

Add Nuvoton BMC NPCM845 UART support.
The NPCM845 uses the same UART as the NPCM750.

---
 drivers/tty/serial/8250/8250_of.c | 1 +
 1 file changed, 1 insertion(+)
drivers/tty/serial/8250/8250_of.c +1 -0
index 5a699a1aa79c..edf83c90b4d5 100644
@@ -335,6 +335,7 @@ static const struct of_device_id of_platform_serial_table[] = {
 	{ .compatible = "ti,da830-uart", .data = (void *)PORT_DA830, },
 	{ .compatible = "nuvoton,wpcm450-uart", .data = (void *)PORT_NPCM, },
 	{ .compatible = "nuvoton,npcm750-uart", .data = (void *)PORT_NPCM, },
+	{ .compatible = "nuvoton,npcm845-uart", .data = (void *)PORT_NPCM, },
 	{ /* end of list */ },
 };
 MODULE_DEVICE_TABLE(of, of_platform_serial_table);
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
maintainer
#5 lore raw

Re: [PATCH v2 03/20] tty: serial: 8250: Add NPCM845 UART support

Quoted 5 lines · Tomer Maimon

Add Nuvoton BMC NPCM845 UART support.
The NPCM845 uses the same UART as the NPCM750.

This one should no longer be needed if the timers are compatible with the old ones and correctly described in the DT.

Arnd

author maintainer
#6 lore raw

Re: [PATCH v2 03/20] tty: serial: 8250: Add NPCM845 UART support

Hi Arnd,

Sorry but Just to clarify, This patch should not be applied and the NPCM8XX UART should use nuvoton,npcm750-uart compatible in the device tree?

Because I thought that in your comment a few weeks ago
https://www.spinics.net/lists/linux-serial/msg48179.html

We need only to modify the compatible string in the device tree as we did in V2 patchset
https://www.spinics.net/lists/arm-kernel/msg986480.html

Quoted 6 lines · Arnd Bergmann
Quoted 4 lines · Tomer Maimon

Add Nuvoton BMC NPCM845 UART support.
The NPCM845 uses the same UART as the NPCM750.

Quoted 7 lines
Quoted 1 line

This one should no longer be needed if the timers are compatible with the old ones and correctly described in the DT.

Arnd

Thanks,

Tomer

maintainer
#7 lore raw

Re: [PATCH v2 03/20] tty: serial: 8250: Add NPCM845 UART support

Quoted 11 lines · Tomer Maimon

Sorry but Just to clarify, This patch should not be applied and the NPCM8XX UART should use nuvoton,npcm750-uart compatible in the device tree?

Because I thought that in your comment a few weeks ago
https://www.spinics.net/lists/linux-serial/msg48179.html

We need only to modify the compatible string in the device tree as we did in V2 patchset
https://www.spinics.net/lists/arm-kernel/msg986480.html

Yes, this is correct: with the DT file from v2, the driver no longer needs to be changed, it will just match the fallback value.

Arnd

author maintainer
#8 lore raw

PATCH v2 4/20 dt-bindings: watchdog: npcm: Add npcm845 compatible string

In reply to Tomer Maimon

Add a compatible string for Nuvoton BMC NPCM845 watchdog.

---
 .../devicetree/bindings/watchdog/nuvoton,npcm-wdt.txt          | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/watchdog/nuvoton,npcm-wdt.txt +2 -1
index 9059f54dc023..866a958b8a2b 100644
@@ -6,7 +6,8 @@ expiry.
 
 Required properties:
 - compatible      : "nuvoton,npcm750-wdt" for NPCM750 (Poleg), or
-                    "nuvoton,wpcm450-wdt" for WPCM450 (Hermon).
+                    "nuvoton,wpcm450-wdt" for WPCM450 (Hermon), or
+                    "nuvoton,npcm845-wdt" for NPCM845 (Arbel).
 - reg             : Offset and length of the register set for the device.
 - interrupts      : Contain the timer interrupt with flags for
                     falling edge.
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
author maintainer
#9 lore raw

PATCH v2 5/20 watchdog: npcm_wdt: Add NPCM845 watchdog support

In reply to Tomer Maimon

Add Nuvoton BMC NPCM845 watchdog support. The NPCM845 uses the same watchdog as the NPCM750.

---
 drivers/watchdog/npcm_wdt.c | 1 +
 1 file changed, 1 insertion(+)
drivers/watchdog/npcm_wdt.c +1 -0
index 28a24caa2627..0b91a3fbec09 100644
@@ -231,6 +231,7 @@ static int npcm_wdt_probe(struct platform_device *pdev)
 static const struct of_device_id npcm_wdt_match[] = {
 	{.compatible = "nuvoton,wpcm450-wdt"},
 	{.compatible = "nuvoton,npcm750-wdt"},
+	{.compatible = "nuvoton,npcm845-wdt"},
 	{},
 };
 MODULE_DEVICE_TABLE(of, npcm_wdt_match);
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
maintainer
#10 lore raw

Re: [PATCH v2 05/20] watchdog: npcm_wdt: Add NPCM845 watchdog support

Quoted 5 lines · Tomer Maimon

Add Nuvoton BMC NPCM845 watchdog support. The NPCM845 uses the same watchdog as the NPCM750.

This one should no longer be needed if the timers are compatible with the old ones and correctly described in the DT.

Arnd

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

author maintainer
#11 lore raw

Re: [PATCH v2 05/20] watchdog: npcm_wdt: Add NPCM845 watchdog support

Hi Arnd,

Quoted 10 lines · Arnd Bergmann
Quoted 5 lines · Tomer Maimon

Add Nuvoton BMC NPCM845 watchdog support. The NPCM845 uses the same watchdog as the NPCM750.

This one should no longer be needed if the timers are compatible with the old ones and correctly described in the DT.

by timers do you mean clocks?

Quoted 2 lines

Arnd

Best regards,

Tomer

maintainer
#12 lore raw

Re: [PATCH v2 05/20] watchdog: npcm_wdt: Add NPCM845 watchdog support

Quoted 4 lines · Tomer Maimon
Quoted 3 lines · Arnd Bergmann
Quoted 1 line · Tomer Maimon
Quoted 8 lines
Quoted 7 lines
Quoted 4 lines

Add Nuvoton BMC NPCM845 watchdog support. The NPCM845 uses the same watchdog as the NPCM750.

This one should no longer be needed if the timers are compatible with the old ones and correctly described in the DT.

by timers do you mean clocks?

Sorry, I mis-copied my comment. I meant the watchdog being compatible with the old
version.

Arnd

author maintainer
#13 lore raw

PATCH v2 6/20 dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock

In reply to Tomer Maimon

Add binding for the Arbel BMC NPCM8XX Clock controller.

---
 .../bindings/clock/nuvoton,npcm845-clk.yaml   | 63 +++++++++++++++++++
 .../dt-bindings/clock/nuvoton,npcm8xx-clock.h | 50 +++++++++++++++
 2 files changed, 113 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml
 create mode 100644 include/dt-bindings/clock/nuvoton,npcm8xx-clock.h
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +63 -0
new file mode 100644
index 000000000000..e1f375716bc5
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/nuvoton,npcm845-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton NPCM8XX Clock Controller Binding
+
+maintainers:
+  - Tomer Maimon <[email protected]>
+
+description: |
+  Nuvoton Arbel BMC NPCM8XX contains an integrated clock controller, which
+  generates and supplies clocks to all modules within the BMC.
+
+properties:
+  compatible:
+    enum:
+      - nuvoton,npcm845-clk
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: 25M reference clock
+      - description: CPU reference clock
+      - description: MC reference clock
+
+  clock-names:
+    items:
+      - const: refclk
+      - const: sysbypck
+      - const: mcbypck
+
+  '#clock-cells':
+    const: 1
+    description:
+      See include/dt-bindings/clock/nuvoton,npcm8xx-clock.h for the full
+      list of NPCM8XX clock IDs.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - "#clock-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    ahb {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        clock-controller@f0801000 {
+            compatible = "nuvoton,npcm845-clk";
+            reg = <0x0 0xf0801000 0x0 0x1000>;
+            clocks = <&clk_refclk>, <&clk_sysbypck>, <&clk_mcbypck>;
+            #clock-cells = <1>;
+        };
+    };
+...
include/dt-bindings/clock/nuvoton,npcm8xx-clock.h new file +50 -0

50 lines not on this page · raw message

Signature · 1 line
2.33.0
#14 lore raw

Re: [PATCH v2 06/20] dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock

Quoted 41 lines · Tomer Maimon

Add binding for the Arbel BMC NPCM8XX Clock controller.

---
 .../bindings/clock/nuvoton,npcm845-clk.yaml   | 63 +++++++++++++++++++
 .../dt-bindings/clock/nuvoton,npcm8xx-clock.h | 50 +++++++++++++++
 2 files changed, 113 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml
 create mode 100644 include/dt-bindings/clock/nuvoton,npcm8xx-clock.h
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +25 -0
new file mode 100644
index 000000000000..e1f375716bc5
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/nuvoton,npcm845-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton NPCM8XX Clock Controller Binding
+
+maintainers:
+  - Tomer Maimon <[email protected]>
+
+description: |
+  Nuvoton Arbel BMC NPCM8XX contains an integrated clock controller, which
+  generates and supplies clocks to all modules within the BMC.
+
+properties:
+  compatible:
+    enum:
+      - nuvoton,npcm845-clk
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:

Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml line 35

Quoted 10 lines
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +10 -0
+      - description: 25M reference clock
+      - description: CPU reference clock
+      - description: MC reference clock
+
+  clock-names:
+    items:
+      - const: refclk
+      - const: sysbypck
+      - const: mcbypck
+

I asked what is the suffix about and you replied "ck"... ok, so let's make clear. This should be:

items:
- const: ref
- const: sysbyp
- const: mcbyp

or something similar, without the same suffix all over.

include/dt-bindings/clock/nuvoton,npcm8xx-clock.h

Quoted 5 lines
include/dt-bindings/clock/nuvoton,npcm8xx-clock.h new file +0 -0
new file mode 100644
index 000000000000..229915a254a5

Same comment as before. No changes here...

Best regards,
Krzysztof

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

author maintainer
#15 lore raw

Re: [PATCH v2 06/20] dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock

Hi Krzysztof,

Thanks for your comments.

Quoted 57 lines · Krzysztof Kozlowski
Quoted 41 lines · Tomer Maimon

Add binding for the Arbel BMC NPCM8XX Clock controller.

---
 .../bindings/clock/nuvoton,npcm845-clk.yaml   | 63 +++++++++++++++++++
 .../dt-bindings/clock/nuvoton,npcm8xx-clock.h | 50 +++++++++++++++
 2 files changed, 113 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml
 create mode 100644 include/dt-bindings/clock/nuvoton,npcm8xx-clock.h
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +25 -0
new file mode 100644
index 000000000000..e1f375716bc5
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/nuvoton,npcm845-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton NPCM8XX Clock Controller Binding
+
+maintainers:
+  - Tomer Maimon <[email protected]>
+
+description: |
+  Nuvoton Arbel BMC NPCM8XX contains an integrated clock controller, which
+  generates and supplies clocks to all modules within the BMC.
+
+properties:
+  compatible:
+    enum:
+      - nuvoton,npcm845-clk
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:

Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml line 35

Quoted 10 lines
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +10 -0
+      - description: 25M reference clock
+      - description: CPU reference clock
+      - description: MC reference clock
+
+  clock-names:
+    items:
+      - const: refclk
+      - const: sysbypck
+      - const: mcbypck
+

I asked what is the suffix about and you replied "ck"... ok, so let's make clear. This should be:

Quoted 6 lines

items:
- const: ref
- const: sysbyp
- const: mcbyp

or something similar, without the same suffix all over.

The clock names are the same clock name in our spec, this why we prefer to leave the clock names as is.

Quoted 9 lines

include/dt-bindings/clock/nuvoton,npcm8xx-clock.h

Quoted 6 lines
include/dt-bindings/clock/nuvoton,npcm8xx-clock.h new file +0 -0
new file mode 100644
index 000000000000..229915a254a5

Same comment as before. No changes here...

about the comments from V1::
- Krzysztof: Filename - same as bindings, so nuvoton,npcm845-clk.h In NPCM7XX we use the same include file and clock source dt-binding
https://elixir.bootlin.com/linux/v5.19-rc1/source/Documentation/devicetree/bindings/clock/nuvoton,npcm750-clk.txt
dt-binding include
https://elixir.bootlin.com/linux/v5.19-rc1/source/include/dt-bindings/clock/nuvoton,npcm7xx-clock.h
we prefer to be align with our older BMC version

- Krzysztof: Dual license, same as bindings.
modified in the file * SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
the same license approved in en7523-clk include file and pushed to Linux kernel 5.19 :
https://elixir.bootlin.com/linux/v5.19-rc1/source/include/dt-bindings/clock/en7523-clk.h

Quoted 4 lines

Best regards,
Krzysztof

Best regards,

Tomer

#16 lore raw

Re: [PATCH v2 06/20] dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock

Quoted 63 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your comments.

Quoted 57 lines · Krzysztof Kozlowski
Quoted 41 lines · Tomer Maimon

Add binding for the Arbel BMC NPCM8XX Clock controller.

---
 .../bindings/clock/nuvoton,npcm845-clk.yaml   | 63 +++++++++++++++++++
 .../dt-bindings/clock/nuvoton,npcm8xx-clock.h | 50 +++++++++++++++
 2 files changed, 113 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml
 create mode 100644 include/dt-bindings/clock/nuvoton,npcm8xx-clock.h
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +25 -0
new file mode 100644
index 000000000000..e1f375716bc5
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/nuvoton,npcm845-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton NPCM8XX Clock Controller Binding
+
+maintainers:
+  - Tomer Maimon <[email protected]>
+
+description: |
+  Nuvoton Arbel BMC NPCM8XX contains an integrated clock controller, which
+  generates and supplies clocks to all modules within the BMC.
+
+properties:
+  compatible:
+    enum:
+      - nuvoton,npcm845-clk
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:

Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml line 35

Quoted 10 lines
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +10 -0
+      - description: 25M reference clock
+      - description: CPU reference clock
+      - description: MC reference clock
+
+  clock-names:
+    items:
+      - const: refclk
+      - const: sysbypck
+      - const: mcbypck
+

I asked what is the suffix about and you replied "ck"... ok, so let's make clear. This should be:

Quoted 8 lines
Quoted 6 lines

items:
- const: ref
- const: sysbyp
- const: mcbyp

or something similar, without the same suffix all over.

The clock names are the same clock name in our spec, this why we prefer to leave the clock names as is.

The naming with useless suffixes does not help. If your spec had "refclk_really_clock_this_is_a_clock" you also would insist on that? It does not make sense.

Quoted 9 lines
Quoted 9 lines

include/dt-bindings/clock/nuvoton,npcm8xx-clock.h

Quoted 6 lines
include/dt-bindings/clock/nuvoton,npcm8xx-clock.h new file +0 -0
new file mode 100644
index 000000000000..229915a254a5

Same comment as before. No changes here...

Quoted 8 lines

about the comments from V1::
- Krzysztof: Filename - same as bindings, so nuvoton,npcm845-clk.h In NPCM7XX we use the same include file and clock source dt-binding
https://elixir.bootlin.com/linux/v5.19-rc1/source/Documentation/devicetree/bindings/clock/nuvoton,npcm750-clk.txt
dt-binding include
https://elixir.bootlin.com/linux/v5.19-rc1/source/include/dt-bindings/clock/nuvoton,npcm7xx-clock.h
we prefer to be align with our older BMC version

Older has incorrect name, so do not align to incorrect one. What is the logic behind having header not matching the bindings file? It makes it only more difficult to connect these two.

Quoted 7 lines

- Krzysztof: Dual license, same as bindings.
modified in the file * SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
the same license approved in en7523-clk include file and pushed to Linux kernel 5.19 :
https://elixir.bootlin.com/linux/v5.19-rc1/source/include/dt-bindings/clock/en7523-clk.h

I don't understand this comment at all. I am not commenting about en7523-clk.h. I am commenting about the header here - it should have dual license. What en7523-clk.h has to do with it?

Best regards,
Krzysztof

author maintainer
#17 lore raw

Re: [PATCH v2 06/20] dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock

Hi Krzysztof,

Quoted 70 lines · Krzysztof Kozlowski
Quoted 68 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your comments.

Quoted 62 lines · Krzysztof Kozlowski
Quoted 41 lines · Tomer Maimon

Add binding for the Arbel BMC NPCM8XX Clock controller.

---
 .../bindings/clock/nuvoton,npcm845-clk.yaml   | 63 +++++++++++++++++++
 .../dt-bindings/clock/nuvoton,npcm8xx-clock.h | 50 +++++++++++++++
 2 files changed, 113 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml
 create mode 100644 include/dt-bindings/clock/nuvoton,npcm8xx-clock.h
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +25 -0
new file mode 100644
index 000000000000..e1f375716bc5
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/nuvoton,npcm845-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton NPCM8XX Clock Controller Binding
+
+maintainers:
+  - Tomer Maimon <[email protected]>
+
+description: |
+  Nuvoton Arbel BMC NPCM8XX contains an integrated clock controller, which
+  generates and supplies clocks to all modules within the BMC.
+
+properties:
+  compatible:
+    enum:
+      - nuvoton,npcm845-clk
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:

Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml line 35

Quoted 10 lines
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +10 -0
+      - description: 25M reference clock
+      - description: CPU reference clock
+      - description: MC reference clock
+
+  clock-names:
+    items:
+      - const: refclk
+      - const: sysbypck
+      - const: mcbypck
+

I asked what is the suffix about and you replied "ck"... ok, so let's make clear. This should be:

items:
- const: ref
- const: sysbyp
- const: mcbyp

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

or something similar, without the same suffix all over.

The clock names are the same clock name in our spec, this why we prefer to leave the clock names as is.

The naming with useless suffixes does not help. If your spec had "refclk_really_clock_this_is_a_clock" you also would insist on that? It does not make sense.

Sorry but I don't understand why the clock name cause an issue, we prefer it will be the same as in our spec-clock diagram BTW, the same naming found in NPCM7XX
https://elixir.bootlin.com/linux/v5.19-rc1/source/Documentation/devicetree/bindings/clock/nuvoton,npcm750-clk.txt#L36

Quoted 19 lines
Quoted 10 lines
Quoted 10 lines

include/dt-bindings/clock/nuvoton,npcm8xx-clock.h

Quoted 7 lines
include/dt-bindings/clock/nuvoton,npcm8xx-clock.h new file +0 -0
new file mode 100644
index 000000000000..229915a254a5

Same comment as before. No changes here...

Quoted 8 lines

about the comments from V1::
- Krzysztof: Filename - same as bindings, so nuvoton,npcm845-clk.h In NPCM7XX we use the same include file and clock source dt-binding
https://elixir.bootlin.com/linux/v5.19-rc1/source/Documentation/devicetree/bindings/clock/nuvoton,npcm750-clk.txt
dt-binding include
https://elixir.bootlin.com/linux/v5.19-rc1/source/include/dt-bindings/clock/nuvoton,npcm7xx-clock.h
we prefer to be align with our older BMC version

Quoted 3 lines

Older has incorrect name, so do not align to incorrect one. What is the logic behind having header not matching the bindings file? It makes it only more difficult to connect these two.

Will modify the file name in V3 to be the same as dt-binding

Quoted 9 lines
Quoted 8 lines

- Krzysztof: Dual license, same as bindings.
modified in the file * SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
the same license approved in en7523-clk include file and pushed to Linux kernel 5.19 :
https://elixir.bootlin.com/linux/v5.19-rc1/source/include/dt-bindings/clock/en7523-clk.h

Quoted 6 lines

I don't understand this comment at all. I am not commenting about en7523-clk.h. I am commenting about the header here - it should have dual license. What en7523-clk.h has to do with it?

Best regards,
Krzysztof

Best regards,

Tomer

#18 lore raw

Re: [PATCH v2 06/20] dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock

Quoted 79 lines · Tomer Maimon

Hi Krzysztof,

Quoted 74 lines · Krzysztof Kozlowski
Quoted 71 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your comments.

Quoted 57 lines · Krzysztof Kozlowski
Quoted 41 lines · Tomer Maimon

Add binding for the Arbel BMC NPCM8XX Clock controller.

---
 .../bindings/clock/nuvoton,npcm845-clk.yaml   | 63 +++++++++++++++++++
 .../dt-bindings/clock/nuvoton,npcm8xx-clock.h | 50 +++++++++++++++
 2 files changed, 113 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml
 create mode 100644 include/dt-bindings/clock/nuvoton,npcm8xx-clock.h
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +25 -0
new file mode 100644
index 000000000000..e1f375716bc5
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/nuvoton,npcm845-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton NPCM8XX Clock Controller Binding
+
+maintainers:
+  - Tomer Maimon <[email protected]>
+
+description: |
+  Nuvoton Arbel BMC NPCM8XX contains an integrated clock controller, which
+  generates and supplies clocks to all modules within the BMC.
+
+properties:
+  compatible:
+    enum:
+      - nuvoton,npcm845-clk
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:

Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml line 35

Quoted 10 lines
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +10 -0
+      - description: 25M reference clock
+      - description: CPU reference clock
+      - description: MC reference clock
+
+  clock-names:
+    items:
+      - const: refclk
+      - const: sysbypck
+      - const: mcbypck
+

I asked what is the suffix about and you replied "ck"... ok, so let's make clear. This should be:

Quoted 6 lines

items:
- const: ref
- const: sysbyp
- const: mcbyp

or something similar, without the same suffix all over.

The clock names are the same clock name in our spec, this why we prefer to leave the clock names as is.

Quoted 7 lines
Quoted 3 lines

The naming with useless suffixes does not help. If your spec had "refclk_really_clock_this_is_a_clock" you also would insist on that? It does not make sense.

Sorry but I don't understand why the clock name cause an issue, we prefer it will be the same as in our spec-clock diagram BTW, the same naming found in NPCM7XX
https://elixir.bootlin.com/linux/v5.19-rc1/source/Documentation/devicetree/bindings/clock/nuvoton,npcm750-clk.txt#L36

Because the names should not have irrelevant information. interrupt-names should have "txirq". dma-names should not have "txdma". clock-names should not have "refclock" or "refclk" because it is irrelevant duplication. These are bindings, not DTS, so whatever you have in your spec matters less. DTS is the representation of hardware and there you can name clocks closer to the spec so it is easier for you, if that's your preference.

And if your spec has "refclk_really_clock_this_is_a_clock" you still should not use it.

Anyway, you should discuss it last time when I pointed it out. Instead my comments were ignored and you decided to send v2. That's not how discussion works and it will not bring you closer to your point.

Best regards,
Krzysztof

#19 lore raw

Re: [PATCH v2 06/20] dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock

In reply to Krzysztof Kozlowski

Hello Tomer and Krzysztof,

Quoted 5 lines · Krzysztof Kozlowski
Quoted 4 lines · Tomer Maimon

Add binding for the Arbel BMC NPCM8XX Clock controller.

---

[...]

Quoted 16 lines

Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml line 35

Quoted 12 lines
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +12 -0
+  clocks:
+    items:
+      - description: 25M reference clock
+      - description: CPU reference clock
+      - description: MC reference clock
+
+  clock-names:
+    items:
+      - const: refclk
+      - const: sysbypck
+      - const: mcbypck
+

I asked what is the suffix about and you replied "ck"... ok, so let's make clear. This should be:

Quoted 6 lines

items:
- const: ref
- const: sysbyp
- const: mcbyp

or something similar, without the same suffix all over.

A bit of a side note on these names:

To make the binding as easy to understand as possible, I think it would help to have every part of the clock-names reflected in corresponding clock description:

- sysbypck: presumably means system bypass clock
- mcbypck: presumably means memory controller bypass clock

As it currently is in the patch, the "byp" part stays unexplained and unmentioned in the descriptions.

Thanks,
Jonathan

author maintainer
#20 lore raw

PATCH v2 7/20 clk: npcm8xx: add clock controller

In reply to Tomer Maimon

Nuvoton Arbel BMC NPCM8XX contains an integrated clock controller which generates and supplies clocks to all modules within the BMC.

---
 drivers/clk/Kconfig       |   6 +
 drivers/clk/Makefile      |   1 +
 drivers/clk/clk-npcm8xx.c | 756 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 763 insertions(+)
 create mode 100644 drivers/clk/clk-npcm8xx.c
drivers/clk/Kconfig +6 -0
index 48f8f4221e21..9aa915f6e233 100644
@@ -428,6 +428,12 @@ config COMMON_CLK_K210
 	help
 	  Support for the Canaan Kendryte K210 RISC-V SoC clocks.
 
+config COMMON_CLK_NPCM8XX
+	tristate "Clock driver for the NPCM8XX SoC Family"
+	depends on ARCH_NPCM || COMPILE_TEST
+	help
+          This driver supports the clocks on the Nuvoton BMC NPCM8XX SoC Family.
+
 source "drivers/clk/actions/Kconfig"
 source "drivers/clk/analogbits/Kconfig"
 source "drivers/clk/baikal-t1/Kconfig"
drivers/clk/Makefile +1 -0
index d5db170d38d2..b0ec1184a744 100644
@@ -49,6 +49,7 @@ obj-$(CONFIG_ARCH_MILBEAUT_M10V)	+= clk-milbeaut.o
 obj-$(CONFIG_ARCH_MOXART)		+= clk-moxart.o
 obj-$(CONFIG_ARCH_NOMADIK)		+= clk-nomadik.o
 obj-$(CONFIG_ARCH_NPCM7XX)	    	+= clk-npcm7xx.o
+obj-$(CONFIG_COMMON_CLK_NPCM8XX)	+= clk-npcm8xx.o
 obj-$(CONFIG_ARCH_NSPIRE)		+= clk-nspire.o
 obj-$(CONFIG_COMMON_CLK_OXNAS)		+= clk-oxnas.o
 obj-$(CONFIG_COMMON_CLK_PALMAS)		+= clk-palmas.o
drivers/clk/clk-npcm8xx.c new file +756 -0

756 lines not on this page · raw message

Signature · 1 line
2.33.0
maintainer
#21 lore raw

Re: [PATCH v2 07/20] clk: npcm8xx: add clock controller

Quoting Tomer Maimon (2022-06-08 02:56:10)

Quoted 6 lines
drivers/clk/clk-npcm8xx.c new file +0 -0
new file mode 100644
index 000000000000..40340c3611b5
@@ -0,0 +1,756 @@

[...]

Quoted 9 lines
drivers/clk/clk-npcm8xx.c new file +9 -0
+
+#define PLLCON_LOKI    BIT(31)
+#define PLLCON_LOKS    BIT(30)
+#define PLLCON_FBDV    GENMASK(27, 16)
+#define PLLCON_OTDV2   GENMASK(15, 13)
+#define PLLCON_PWDEN   BIT(12)
+#define PLLCON_OTDV1   GENMASK(10, 8)
+#define PLLCON_INDV    GENMASK(5, 0)
+

drivers/clk/clk-npcm8xx.c line 48

Quoted 10 lines
drivers/clk/clk-npcm8xx.c new file +10 -0
+static unsigned long npcm8xx_clk_pll_recalc_rate(struct clk_hw *hw,
+                                                unsigned long parent_rate)
+{
+       struct npcm8xx_clk_pll *pll = to_npcm8xx_clk_pll(hw);
+       unsigned long fbdv, indv, otdv1, otdv2;
+       unsigned int val;
+       u64 ret;
+
+       if (parent_rate == 0) {
+               pr_debug("%s: parent rate is zero", __func__);

Missing newline.

Quoted 6 lines
drivers/clk/clk-npcm8xx.c new file +6 -0
+               return 0;
+       }
+
+       val = readl_relaxed(pll->pllcon);
+
+       indv = FIELD_GET(PLLCON_INDV, val);
author maintainer
#22 lore raw

Re: [PATCH v2 07/20] clk: npcm8xx: add clock controller

Hi Stephen,

Thanks for your comment, it will be addressed next patch set

Quoted 31 lines · Stephen Boyd

Quoting Tomer Maimon (2022-06-08 02:56:10)

Quoted 6 lines
drivers/clk/clk-npcm8xx.c new file +0 -0
new file mode 100644
index 000000000000..40340c3611b5
@@ -0,0 +1,756 @@

[...]

Quoted 9 lines
drivers/clk/clk-npcm8xx.c new file +9 -0
+
+#define PLLCON_LOKI    BIT(31)
+#define PLLCON_LOKS    BIT(30)
+#define PLLCON_FBDV    GENMASK(27, 16)
+#define PLLCON_OTDV2   GENMASK(15, 13)
+#define PLLCON_PWDEN   BIT(12)
+#define PLLCON_OTDV1   GENMASK(10, 8)
+#define PLLCON_INDV    GENMASK(5, 0)
+

drivers/clk/clk-npcm8xx.c line 48

Quoted 10 lines
drivers/clk/clk-npcm8xx.c new file +10 -0
+static unsigned long npcm8xx_clk_pll_recalc_rate(struct clk_hw *hw,
+                                                unsigned long parent_rate)
+{
+       struct npcm8xx_clk_pll *pll = to_npcm8xx_clk_pll(hw);
+       unsigned long fbdv, indv, otdv1, otdv2;
+       unsigned int val;
+       u64 ret;
+
+       if (parent_rate == 0) {
+               pr_debug("%s: parent rate is zero", __func__);

Missing newline.

Quoted 6 lines

drivers/clk/clk-npcm8xx.c line 54

Quoted 6 lines
drivers/clk/clk-npcm8xx.c new file +6 -0
+               return 0;
+       }
+
+       val = readl_relaxed(pll->pllcon);
+
+       indv = FIELD_GET(PLLCON_INDV, val);

Best regards,

Tomer

author maintainer
#23 lore raw

PATCH v2 8/20 dt-bindings: reset: modify to general NPCM name

In reply to Tomer Maimon

Modify nuvoton,npcm750-reset specific name to
general NPCM file name, nuvoton,npcm-reset.

---
 .../{nuvoton,npcm750-reset.yaml => nuvoton,npcm-reset.yaml}     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 rename Documentation/devicetree/bindings/reset/{nuvoton,npcm750-reset.yaml => nuvoton,npcm-reset.yaml} (93%)
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml renamed from Documentation/devicetree/bindings/reset/nuvoton,npcm750-reset.yaml +1 -1
similarity index 93%
rename from Documentation/devicetree/bindings/reset/nuvoton,npcm750-reset.yaml
rename to Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml
index fa5e4ea6400e..0998f481578d 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas/reset/nuvoton,npcm750-reset.yaml#
+$id: http://devicetree.org/schemas/reset/nuvoton,npcm-reset.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Nuvoton NPCM Reset controller
Signature · 1 line
2.33.0
#24 lore raw

Re: [PATCH v2 08/20] dt-bindings: reset: modify to general NPCM name

Quoted 6 lines · Tomer Maimon

Modify nuvoton,npcm750-reset specific name to
general NPCM file name, nuvoton,npcm-reset.

---
 .../{nuvoton,npcm750-reset.yaml => nuvoton,npcm-reset.yaml}     | 2 +-

No. Name from the first compatible should be used.

Best regards,
Krzysztof

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

author maintainer
#25 lore raw

Re: [PATCH v2 08/20] dt-bindings: reset: modify to general NPCM name

Hi Krzysztof,

Will revert the change in V3

Quoted 10 lines · Krzysztof Kozlowski
Quoted 6 lines · Tomer Maimon

Modify nuvoton,npcm750-reset specific name to
general NPCM file name, nuvoton,npcm-reset.

---
 .../{nuvoton,npcm750-reset.yaml => nuvoton,npcm-reset.yaml}     | 2 +-
Quoted 4 lines

No. Name from the first compatible should be used.

Best regards,
Krzysztof

Thanks,

Tomer

author maintainer
#26 lore raw

PATCH v2 9/20 dt-bindings: reset: npcm: add GCR syscon property

In reply to Tomer Maimon

Describe syscon property that handles general
control registers(GCR) in Nuvoton BMC NPCM
reset driver.

---
 .../devicetree/bindings/reset/nuvoton,npcm-reset.yaml       | 6 ++++++
 1 file changed, 6 insertions(+)
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml +6 -0
index 0998f481578d..c6bbc1589ab9 100644
@@ -19,6 +19,10 @@ properties:
   '#reset-cells':
     const: 2
 
+  nuvoton,sysgcr:
+    $ref: "/schemas/types.yaml#/definitions/phandle"
+    description: a phandle to access GCR registers.
+
   nuvoton,sw-reset-number:
     $ref: /schemas/types.yaml#/definitions/uint32
     minimum: 1
@@ -31,6 +35,7 @@ required:
   - compatible
   - reg
   - '#reset-cells'
+  - nuvoton,sysgcr
 
 additionalProperties: false
 
@@ -41,6 +46,7 @@ examples:
         compatible = "nuvoton,npcm750-reset";
         reg = <0xf0801000 0x70>;
         #reset-cells = <2>;
+        nuvoton,sysgcr = <&gcr>;
         nuvoton,sw-reset-number = <2>;
     };
 
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
#27 lore raw

Re: [PATCH v2 09/20] dt-bindings: reset: npcm: add GCR syscon property

Quoted 3 lines · Tomer Maimon

Describe syscon property that handles general
control registers(GCR) in Nuvoton BMC NPCM
reset driver.

I already asked about this.

Could you please implement the comments you receive? It's not just one, it's several of them have to be repeated.

Quoted 11 lines
---
 .../devicetree/bindings/reset/nuvoton,npcm-reset.yaml       | 6 ++++++
 1 file changed, 6 insertions(+)
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml +0 -0
index 0998f481578d..c6bbc1589ab9 100644

Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml properties: · line 23

Quoted 5 lines
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml +2 -0
@@ -19,6 +19,10 @@ properties:
   '#reset-cells':
     const: 2
 
+  nuvoton,sysgcr:
+    $ref: "/schemas/types.yaml#/definitions/phandle"

Skip quotes.

Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml required: · line 38

Quoted 10 lines
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml +3 -0
+    description: a phandle to access GCR registers.
+
   nuvoton,sw-reset-number:
     $ref: /schemas/types.yaml#/definitions/uint32
     minimum: 1
@@ -31,6 +35,7 @@ required:
   - compatible
   - reg
   - '#reset-cells'
+  - nuvoton,sysgcr

Aren't you breaking existing DTBs?

Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml examples: · line 52

Quoted 11 lines
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml +1 -0
 additionalProperties: false
 
@@ -41,6 +46,7 @@ examples:
         compatible = "nuvoton,npcm750-reset";
         reg = <0xf0801000 0x70>;
         #reset-cells = <2>;
+        nuvoton,sysgcr = <&gcr>;
         nuvoton,sw-reset-number = <2>;
     };
 

Best regards,
Krzysztof

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

maintainer
#28 lore raw

Re: [PATCH v2 09/20] dt-bindings: reset: npcm: add GCR syscon property

In reply to Tomer Maimon
Quoted 9 lines · Tomer Maimon

Describe syscon property that handles general
control registers(GCR) in Nuvoton BMC NPCM
reset driver.

---
 .../devicetree/bindings/reset/nuvoton,npcm-reset.yaml       | 6 ++++++
 1 file changed, 6 insertions(+)

Running 'make dtbs_check' with the schema in this patch gives the following warnings. Consider if they are expected or the schema is incorrect. These may not be new warnings.

Note that it is not yet a requirement to have 0 warnings for dtbs_check. This will change in the future.

Full log is available here: https://patchwork.ozlabs.org/patch/

rstc@f0801000: 'nuvoton,sysgcr' is a required property
arch/arm/boot/dts/nuvoton-npcm730-gbs.dtb arch/arm/boot/dts/nuvoton-npcm730-gsj.dtb arch/arm/boot/dts/nuvoton-npcm730-kudo.dtb arch/arm/boot/dts/nuvoton-npcm750-evb.dtb arch/arm/boot/dts/nuvoton-npcm750-runbmc-olympus.dtb

author maintainer
#29 lore raw

PATCH v2 10/20 ARM: dts: nuvoton: add reset syscon property

In reply to Tomer Maimon

Add nuvoton,sysgcr syscon property to the reset
node to handle the general control registers.

---
 arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi | 1 +
 1 file changed, 1 insertion(+)
arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi +1 -0
index 3696980a3da1..8a2f29016291 100644
@@ -110,6 +110,7 @@ rstc: rstc@f0801000 {
 			compatible = "nuvoton,npcm750-reset";
 			reg = <0xf0801000 0x70>;
 			#reset-cells = <2>;
+			nuvoton,sysgcr = <&gcr>;
 		};
 
 		clk: clock-controller@f0801000 {
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
author maintainer
#31 lore raw

Re: [PATCH v2 10/20] ARM: dts: nuvoton: add reset syscon property

Hi Krzysztof,

Thanks for your comments

Quoted 6 lines · Krzysztof Kozlowski
Quoted 2 lines · Tomer Maimon

Add nuvoton,sysgcr syscon property to the reset
node to handle the general control registers.

Wrong wrapping.

it will be very helpful if you could point me what wrong wrapped in the commit message, is it the explanation or the header? or something else?

Quoted 3 lines

Best regards,
Krzysztof

Best regards,

Tomer

reviewer
#32 lore raw

Re: [PATCH v2 10/20] ARM: dts: nuvoton: add reset syscon property

Hi Tomer,

Quoted 8 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your comments

Quoted 1 line · Krzysztof Kozlowski
Quoted 8 lines
Quoted 5 lines · Tomer Maimon
Quoted 2 lines

Add nuvoton,sysgcr syscon property to the reset
node to handle the general control registers.

Wrong wrapping.

it will be very helpful if you could point me what wrong wrapped in the commit message, is it the explanation or the header? or something else?

The commit message body should be wrapped at 72 chars. You can fit more on the first line if you reflow:

Add nuvoton,sysgcr syscon property to the reset node to handle the general control registers.

Quoted 7 lines
Quoted 3 lines

Best regards,
Krzysztof

Best regards,

Tomer

author maintainer
#33 lore raw

Re: [PATCH v2 10/20] ARM: dts: nuvoton: add reset syscon property

Hi Benjamin,

Thanks a lot for your explanation.

will be applied in next patch set

Best regards,

Tomer

Quoted 34 lines · Benjamin Fair

Hi Tomer,

Quoted 8 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your comments

Quoted 1 line · Krzysztof Kozlowski
Quoted 8 lines
Quoted 5 lines · Tomer Maimon
Quoted 2 lines

Add nuvoton,sysgcr syscon property to the reset
node to handle the general control registers.

Wrong wrapping.

it will be very helpful if you could point me what wrong wrapped in the commit message, is it the explanation or the header? or something else?

The commit message body should be wrapped at 72 chars. You can fit more on the first line if you reflow:

Add nuvoton,sysgcr syscon property to the reset node to handle the general control registers.

Quoted 7 lines
Quoted 3 lines

Best regards,
Krzysztof

Best regards,

Tomer

#34 lore raw

Re: [PATCH v2 10/20] ARM: dts: nuvoton: add reset syscon property

In reply to Tomer Maimon
Quoted 7 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your comments

Quoted 1 line · Krzysztof Kozlowski
Quoted 8 lines
Quoted 5 lines · Tomer Maimon
Quoted 2 lines

Add nuvoton,sysgcr syscon property to the reset
node to handle the general control registers.

Wrong wrapping.

it will be very helpful if you could point me what wrong wrapped in the commit message, is it the explanation or the header? or something else?

I pointed you last time. I pointed the exact line, exact rule you need to follow. I pointed it three times already and three times I said wrapping is wrong:
https://elixir.bootlin.com/linux/v5.18-rc4/source/Documentation/process/submitting-patches.rst#L586

"The body of the explanation, line wrapped at 75 columns, which will be copied to the permanent changelog to describe this patch."

Your wrapping is not at 75 columns and it causes the commit to be less readable, without any reason. Please follow Linux kernel coding style/rules.

Best regards,
Krzysztof

author maintainer
#35 lore raw

Re: [PATCH v2 10/20] ARM: dts: nuvoton: add reset syscon property

Hi Krzysztof,

Thanks for the clarifications, will update the next version.

Best regards,

Tomer

Quoted 32 lines · Krzysztof Kozlowski
Quoted 7 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your comments

Quoted 1 line · Krzysztof Kozlowski
Quoted 8 lines
Quoted 5 lines · Tomer Maimon
Quoted 2 lines

Add nuvoton,sysgcr syscon property to the reset
node to handle the general control registers.

Wrong wrapping.

it will be very helpful if you could point me what wrong wrapped in the commit message, is it the explanation or the header? or something else?

I pointed you last time. I pointed the exact line, exact rule you need to follow. I pointed it three times already and three times I said wrapping is wrong:
https://elixir.bootlin.com/linux/v5.18-rc4/source/Documentation/process/submitting-patches.rst#L586

"The body of the explanation, line wrapped at 75 columns, which will be copied to the permanent changelog to describe this patch."

Your wrapping is not at 75 columns and it causes the commit to be less readable, without any reason. Please follow Linux kernel coding style/rules.

Best regards,
Krzysztof

author maintainer
#36 lore raw

PATCH v2 11/20 reset: npcm: using syscon instead of device data

In reply to Tomer Maimon

Using syscon device tree property instead of
device data to handle the NPCM general control
registers.

---
 drivers/reset/reset-npcm.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
drivers/reset/reset-npcm.c +3 -8
index 2ea4d3136e15..312c3b594b8f 100644
@@ -138,8 +138,7 @@ static int npcm_reset_xlate(struct reset_controller_dev *rcdev,
 }
 
 static const struct of_device_id npcm_rc_match[] = {
-	{ .compatible = "nuvoton,npcm750-reset",
-		.data = (void *)"nuvoton,npcm750-gcr" },
+	{ .compatible = "nuvoton,npcm750-reset"},
 	{ }
 };
 
@@ -155,14 +154,10 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)
 	u32 ipsrst1_bits = 0;
 	u32 ipsrst2_bits = NPCM_IPSRST2_USB_HOST;
 	u32 ipsrst3_bits = 0;
-	const char *gcr_dt;
 
-	gcr_dt = (const char *)
-	of_match_device(dev->driver->of_match_table, dev)->data;
-
-	gcr_regmap = syscon_regmap_lookup_by_compatible(gcr_dt);
+	gcr_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "nuvoton,sysgcr");
 	if (IS_ERR(gcr_regmap)) {
-		dev_err(&pdev->dev, "Failed to find %s\n", gcr_dt);
+		dev_err(&pdev->dev, "Failed to find gcr syscon");
 		return PTR_ERR(gcr_regmap);
 	}
 
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
#37 lore raw

Re: [PATCH v2 11/20] reset: npcm: using syscon instead of device data

Quoted 4 lines · Tomer Maimon

Using syscon device tree property instead of
device data to handle the NPCM general control
registers.

Again ignored the comment.

Quoted 24 lines
---
 drivers/reset/reset-npcm.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
drivers/reset/reset-npcm.c +1 -3
index 2ea4d3136e15..312c3b594b8f 100644
@@ -138,8 +138,7 @@ static int npcm_reset_xlate(struct reset_controller_dev *rcdev,
 }
 
 static const struct of_device_id npcm_rc_match[] = {
-	{ .compatible = "nuvoton,npcm750-reset",
-		.data = (void *)"nuvoton,npcm750-gcr" },
+	{ .compatible = "nuvoton,npcm750-reset"},
 	{ }
 };
 
@@ -155,14 +154,10 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)
 	u32 ipsrst1_bits = 0;
 	u32 ipsrst2_bits = NPCM_IPSRST2_USB_HOST;
 	u32 ipsrst3_bits = 0;
-	const char *gcr_dt;

drivers/reset/reset-npcm.c static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc) · line 161

Quoted 10 lines
drivers/reset/reset-npcm.c +2 -5
 
-	gcr_dt = (const char *)
-	of_match_device(dev->driver->of_match_table, dev)->data;
-
-	gcr_regmap = syscon_regmap_lookup_by_compatible(gcr_dt);
+	gcr_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "nuvoton,sysgcr");
 	if (IS_ERR(gcr_regmap)) {
-		dev_err(&pdev->dev, "Failed to find %s\n", gcr_dt);
+		dev_err(&pdev->dev, "Failed to find gcr syscon");
 		return PTR_ERR(gcr_regmap);

Comment still ignored.

There is no point in this review if you keep ignoring what we ask to fix.

If something is unclear, ask for clarification. Resending without implementing the comment means that you ignore the review which is waste of my time.

I am sorry, but this is not acceptable.

Best regards,
Krzysztof

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

author maintainer
#38 lore raw

Re: [PATCH v2 11/20] reset: npcm: using syscon instead of device data

Hi Krzysztof

Sorry but I didn't ignore your comment.

For not breaking exciting boards I add the following patch in V2
https://lore.kernel.org/linux-arm-kernel/[email protected]/

Quoted 48 lines · Krzysztof Kozlowski
Quoted 4 lines · Tomer Maimon

Using syscon device tree property instead of
device data to handle the NPCM general control
registers.

Again ignored the comment.

Quoted 24 lines
---
 drivers/reset/reset-npcm.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
drivers/reset/reset-npcm.c +1 -3
index 2ea4d3136e15..312c3b594b8f 100644
@@ -138,8 +138,7 @@ static int npcm_reset_xlate(struct reset_controller_dev *rcdev,
 }
 
 static const struct of_device_id npcm_rc_match[] = {
-     { .compatible = "nuvoton,npcm750-reset",
-             .data = (void *)"nuvoton,npcm750-gcr" },
+     { .compatible = "nuvoton,npcm750-reset"},
      { }
 };
 
@@ -155,14 +154,10 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)
      u32 ipsrst1_bits = 0;
      u32 ipsrst2_bits = NPCM_IPSRST2_USB_HOST;
      u32 ipsrst3_bits = 0;
-     const char *gcr_dt;

drivers/reset/reset-npcm.c static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc) · line 161

Quoted 10 lines
drivers/reset/reset-npcm.c +2 -5
 
-     gcr_dt = (const char *)
-     of_match_device(dev->driver->of_match_table, dev)->data;
-
-     gcr_regmap = syscon_regmap_lookup_by_compatible(gcr_dt);
+     gcr_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "nuvoton,sysgcr");
      if (IS_ERR(gcr_regmap)) {
-             dev_err(&pdev->dev, "Failed to find %s\n", gcr_dt);
+             dev_err(&pdev->dev, "Failed to find gcr syscon");
              return PTR_ERR(gcr_regmap);

Comment still ignored.

There is no point in this review if you keep ignoring what we ask to fix.

Quoted 8 lines

If something is unclear, ask for clarification. Resending without implementing the comment means that you ignore the review which is waste of my time.

I am sorry, but this is not acceptable.

Best regards,
Krzysztof

Best regards,

Tomer

#39 lore raw

Re: [PATCH v2 11/20] reset: npcm: using syscon instead of device data

Quoted 6 lines · Tomer Maimon

Hi Krzysztof

Sorry but I didn't ignore your comment.

For not breaking exciting boards I add the following patch in V2
https://lore.kernel.org/linux-arm-kernel/[email protected]/

No, it does not solve it.
1. Patchset goes via separate trees (DTS are always separate), so it is not bisectable. One of the branches/trees will have broken DTS.

2. All out of tree DTSes are broken. This is expressed as ABI and - with some reasonable exceptions - you should not break it.
https://elixir.bootlin.com/linux/v5.19-rc1/source/Documentation/devicetree/bindings/ABI.rst

You have to keep backwards compatibility, so parse/handle both versions of DTS.

Best regards,
Krzysztof

author maintainer
#40 lore raw

Re: [PATCH v2 11/20] reset: npcm: using syscon instead of device data

Hi Krzysztof,

I will make sure to add backward compatibility in the reset driver in the next version.

Thanks,

Tomer

Quoted 23 lines · Krzysztof Kozlowski
Quoted 6 lines · Tomer Maimon

Hi Krzysztof

Sorry but I didn't ignore your comment.

For not breaking exciting boards I add the following patch in V2
https://lore.kernel.org/linux-arm-kernel/[email protected]/

No, it does not solve it.
1. Patchset goes via separate trees (DTS are always separate), so it is not bisectable. One of the branches/trees will have broken DTS.

2. All out of tree DTSes are broken. This is expressed as ABI and - with some reasonable exceptions - you should not break it.
https://elixir.bootlin.com/linux/v5.19-rc1/source/Documentation/devicetree/bindings/ABI.rst

You have to keep backwards compatibility, so parse/handle both versions of DTS.

Best regards,
Krzysztof

author maintainer
#41 lore raw

PATCH v2 12/20 dt-bindings: reset: npcm: Add support for NPCM8XX

In reply to Tomer Maimon

Add binding document and device tree binding constants for Nuvoton BMC NPCM8XX reset controller.

---
 .../bindings/reset/nuvoton,npcm-reset.yaml    |  13 +-
 .../dt-bindings/reset/nuvoton,npcm8xx-reset.h | 128 ++++++++++++++++++
 2 files changed, 140 insertions(+), 1 deletion(-)
 create mode 100644 include/dt-bindings/reset/nuvoton,npcm8xx-reset.h
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml +12 -1
index c6bbc1589ab9..93ea81686f58 100644
@@ -9,9 +9,20 @@ title: Nuvoton NPCM Reset controller
 maintainers:
   - Tomer Maimon <[email protected]>
 
+description: |
+  The NPCM reset controller used to reset various set of peripherals. 
+  Please refer to reset.txt in this directory for common reset
+  controller binding usage.
+
+  For list of all valid reset indices see
+    <dt-bindings/reset/nuvoton,npcm7xx-reset.h> for Poleg NPCM7XX SoC,
+    <dt-bindings/reset/nuvoton,npcm8xx-reset.h> for Arbel NPCM8XX SoC.
+
 properties:
   compatible:
-    const: nuvoton,npcm750-reset
+    enum: 
+      - nuvoton,npcm750-reset        # Poleg NPCM7XX SoC
+      - nuvoton,npcm845-reset        # Arbel NPCM8XX SoC
 
   reg:
     maxItems: 1
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h new file +128 -0

128 lines not on this page · raw message

Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
#42 lore raw

Re: [PATCH v2 12/20] dt-bindings: reset: npcm: Add support for NPCM8XX

Quoted 42 lines · Tomer Maimon

Add binding document and device tree binding constants for Nuvoton BMC NPCM8XX reset controller.

---
 .../bindings/reset/nuvoton,npcm-reset.yaml    |  13 +-
 .../dt-bindings/reset/nuvoton,npcm8xx-reset.h | 128 ++++++++++++++++++
 2 files changed, 140 insertions(+), 1 deletion(-)
 create mode 100644 include/dt-bindings/reset/nuvoton,npcm8xx-reset.h
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml +12 -1
index c6bbc1589ab9..93ea81686f58 100644
@@ -9,9 +9,20 @@ title: Nuvoton NPCM Reset controller
 maintainers:
   - Tomer Maimon <[email protected]>
 
+description: |
+  The NPCM reset controller used to reset various set of peripherals. 
+  Please refer to reset.txt in this directory for common reset
+  controller binding usage.
+
+  For list of all valid reset indices see
+    <dt-bindings/reset/nuvoton,npcm7xx-reset.h> for Poleg NPCM7XX SoC,
+    <dt-bindings/reset/nuvoton,npcm8xx-reset.h> for Arbel NPCM8XX SoC.
+
 properties:
   compatible:
-    const: nuvoton,npcm750-reset
+    enum: 
+      - nuvoton,npcm750-reset        # Poleg NPCM7XX SoC
+      - nuvoton,npcm845-reset        # Arbel NPCM8XX SoC
 
   reg:
     maxItems: 1
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h new file +0 -0
new file mode 100644
index 000000000000..5b3b74534b50

include/dt-bindings/reset/nuvoton,npcm8xx-reset.h line 1

Quoted 1 line
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h new file +1 -0
@@ -0,0 +1,128 @@
+/* SPDX-License-Identifier: GPL-2.0 */

Again - ignored comment from v1.

Quoted 5 lines
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h new file +5 -0
+/*
+ * Copyright (c) 2022 Nuvoton Technology corporation.
+ * Author: Tomer Maimon <[email protected]>
+ */
+

include/dt-bindings/reset/nuvoton,npcm8xx-reset.h line 16

Quoted 10 lines
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h new file +10 -0
+#ifndef _DT_BINDINGS_NPCM8XX_RESET_H
+#define _DT_BINDINGS_NPCM8XX_RESET_H
+
+/* represent reset register offset */
+#define NPCM8XX_RESET_IPSRST1		0x20
+#define NPCM8XX_RESET_IPSRST2		0x24
+#define NPCM8XX_RESET_IPSRST3		0x34
+#define NPCM8XX_RESET_IPSRST4		0x74
+
+/* Reset lines on IP1 reset module (NPCM8XX_RESET_IPSRST1) */

Again - ignored comment from v1. My last message was quite clear, wasn't it?

https://lore.kernel.org/all/[email protected]/

You ignored several of previous comments, so:

NAK.

Best regards,
Krzysztof

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

author maintainer
#43 lore raw

Re: [PATCH v2 12/20] dt-bindings: reset: npcm: Add support for NPCM8XX

Hi Krzysztof,

Sorry, but I thought the fix is only to add an explanation to the dt-binding file as was done in V2.

The NPCM8XX binding is done in the same way as the NPCM7XX and both use the same reset driver and use the same reset method in upstreamed NPCM reset driver.

Can you please explain again what you suggest to do?

Quoted 66 lines · Krzysztof Kozlowski
Quoted 42 lines · Tomer Maimon

Add binding document and device tree binding constants for Nuvoton BMC NPCM8XX reset controller.

---
 .../bindings/reset/nuvoton,npcm-reset.yaml    |  13 +-
 .../dt-bindings/reset/nuvoton,npcm8xx-reset.h | 128 ++++++++++++++++++
 2 files changed, 140 insertions(+), 1 deletion(-)
 create mode 100644 include/dt-bindings/reset/nuvoton,npcm8xx-reset.h
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.yaml +12 -1
index c6bbc1589ab9..93ea81686f58 100644
@@ -9,9 +9,20 @@ title: Nuvoton NPCM Reset controller
 maintainers:
   - Tomer Maimon <[email protected]>
 
+description: |
+  The NPCM reset controller used to reset various set of peripherals.
+  Please refer to reset.txt in this directory for common reset
+  controller binding usage.
+
+  For list of all valid reset indices see
+    <dt-bindings/reset/nuvoton,npcm7xx-reset.h> for Poleg NPCM7XX SoC,
+    <dt-bindings/reset/nuvoton,npcm8xx-reset.h> for Arbel NPCM8XX SoC.
+
 properties:
   compatible:
-    const: nuvoton,npcm750-reset
+    enum:
+      - nuvoton,npcm750-reset        # Poleg NPCM7XX SoC
+      - nuvoton,npcm845-reset        # Arbel NPCM8XX SoC
 
   reg:
     maxItems: 1
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h new file +0 -0
new file mode 100644
index 000000000000..5b3b74534b50

include/dt-bindings/reset/nuvoton,npcm8xx-reset.h line 1

Quoted 1 line
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h new file +1 -0
@@ -0,0 +1,128 @@
+/* SPDX-License-Identifier: GPL-2.0 */

Again - ignored comment from v1.

Quoted 5 lines
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h new file +5 -0
+/*
+ * Copyright (c) 2022 Nuvoton Technology corporation.
+ * Author: Tomer Maimon <[email protected]>
+ */
+

include/dt-bindings/reset/nuvoton,npcm8xx-reset.h line 16

Quoted 10 lines
include/dt-bindings/reset/nuvoton,npcm8xx-reset.h new file +10 -0
+#ifndef _DT_BINDINGS_NPCM8XX_RESET_H
+#define _DT_BINDINGS_NPCM8XX_RESET_H
+
+/* represent reset register offset */
+#define NPCM8XX_RESET_IPSRST1                0x20
+#define NPCM8XX_RESET_IPSRST2                0x24
+#define NPCM8XX_RESET_IPSRST3                0x34
+#define NPCM8XX_RESET_IPSRST4                0x74
+
+/* Reset lines on IP1 reset module (NPCM8XX_RESET_IPSRST1) */

Again - ignored comment from v1. My last message was quite clear, wasn't it?

Quoted 8 lines

https://lore.kernel.org/all/[email protected]/

You ignored several of previous comments, so:

NAK.

Best regards,
Krzysztof

Appreciate your time and comments.

Best regards,

Tomer

#44 lore raw

Re: [PATCH v2 12/20] dt-bindings: reset: npcm: Add support for NPCM8XX

Quoted 10 lines · Tomer Maimon

Hi Krzysztof,

Sorry, but I thought the fix is only to add an explanation to the dt-binding file as was done in V2.

The NPCM8XX binding is done in the same way as the NPCM7XX and both use the same reset driver and use the same reset method in upstreamed NPCM reset driver.

Can you please explain again what you suggest to do?

If you want abstract IDs, they must be abstract, so not representing hardware registers. Then they start at 1 and are incremented by 1.

Other option is to skip such IDs entirely and use register offsets/addresses directly, like Arnd suggested in linked documents. I think he expressed it clearly, so please read his answers which I linked in previous discussion.

There is no single reason to store register addresses/values/offsets as binding headers. These are not bindings.

Best regards,
Krzysztof

author maintainer
#45 lore raw

Re: [PATCH v2 12/20] dt-bindings: reset: npcm: Add support for NPCM8XX

Hi Krzysztof,

Thanks for your clarification.

We can remove the dt-binding file and use numbers in the DTS, appreciate if you can answer few additional questions:
1. Do you suggest adding all NPCM reset values to the NPCM reset document or the reset values should describe in the module documentation that uses it?
2. Some of the NPCM7XX document modules describe the reset value they use from the dt-binding for example:
https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/iio/adc/nuvoton%2Cnpcm750-adc.yaml#L61
If we remove the NPCM8XX dt-binding file should we describe the NPCM8XX values in the NPCM-ADC document file?

Best regards,

Tomer

Quoted 26 lines · Krzysztof Kozlowski
Quoted 10 lines · Tomer Maimon

Hi Krzysztof,

Sorry, but I thought the fix is only to add an explanation to the dt-binding file as was done in V2.

The NPCM8XX binding is done in the same way as the NPCM7XX and both use the same reset driver and use the same reset method in upstreamed NPCM reset driver.

Can you please explain again what you suggest to do?

If you want abstract IDs, they must be abstract, so not representing hardware registers. Then they start at 1 and are incremented by 1.

Other option is to skip such IDs entirely and use register offsets/addresses directly, like Arnd suggested in linked documents. I think he expressed it clearly, so please read his answers which I linked in previous discussion.

There is no single reason to store register addresses/values/offsets as binding headers. These are not bindings.

Best regards,
Krzysztof

#46 lore raw

Re: [PATCH v2 12/20] dt-bindings: reset: npcm: Add support for NPCM8XX

Quoted 9 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your clarification.

We can remove the dt-binding file and use numbers in the DTS, appreciate if you can answer few additional questions:
1. Do you suggest adding all NPCM reset values to the NPCM reset document or the reset values should describe in the module documentation that uses it?

What is "NPCM reset document"? Are these reset values anyhow different than interrupts or pins?

Quoted 3 lines

2. Some of the NPCM7XX document modules describe the reset value they use from the dt-binding for example:
https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/iio/adc/nuvoton%2Cnpcm750-adc.yaml#L61

This is NPCM750

Quoted 2 lines

If we remove the NPCM8XX dt-binding file should we describe the NPCM8XX values in the NPCM-ADC document file?

What is NPCM-ADC document file? What do you want to describe there? Again - how is it different than interrupts?

Best regards,
Krzysztof

author maintainer
#47 lore raw

Re: [PATCH v2 12/20] dt-bindings: reset: npcm: Add support for NPCM8XX

Hi Krzysztof,

Quoted 6 lines · Krzysztof Kozlowski
Quoted 4 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your clarification.

Quoted 8 lines
Quoted 5 lines

We can remove the dt-binding file and use numbers in the DTS, appreciate if you can answer few additional questions:
1. Do you suggest adding all NPCM reset values to the NPCM reset document or the reset values should describe in the module documentation that uses it?

What is "NPCM reset document"? Are these reset values anyhow different than interrupts or pins?

No, they represent the same values.

Quoted 5 lines
Quoted 4 lines

2. Some of the NPCM7XX document modules describe the reset value they use from the dt-binding for example:
https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/iio/adc/nuvoton%2Cnpcm750-adc.yaml#L61

Quoted 7 lines

This is NPCM750

Quoted 2 lines

If we remove the NPCM8XX dt-binding file should we describe the NPCM8XX values in the NPCM-ADC document file?

What is NPCM-ADC document file? What do you want to describe there? Again - how is it different than interrupts?

It is not different from the interrupts.
I will remove the dt-binding reset include file, the reset property will use numbers and not macro's.

Quoted 5 lines

Best regards,
Krzysztof

Best regards,

Tomer

#48 lore raw

Re: [PATCH v2 12/20] dt-bindings: reset: npcm: Add support for NPCM8XX

Quoted 16 lines · Tomer Maimon

Hi Krzysztof,

Quoted 12 lines · Krzysztof Kozlowski
Quoted 9 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your clarification.

We can remove the dt-binding file and use numbers in the DTS, appreciate if you can answer few additional questions:
1. Do you suggest adding all NPCM reset values to the NPCM reset document or the reset values should describe in the module documentation that uses it?

Quoted 3 lines
Quoted 2 lines

What is "NPCM reset document"? Are these reset values anyhow different than interrupts or pins?

No, they represent the same values.

We do not document in the bindings actual pin or interrupt numbers...

Quoted 7 lines
Quoted 7 lines
Quoted 4 lines

2. Some of the NPCM7XX document modules describe the reset value they use from the dt-binding for example:
https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/iio/adc/nuvoton%2Cnpcm750-adc.yaml#L61

This is NPCM750

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

If we remove the NPCM8XX dt-binding file should we describe the NPCM8XX values in the NPCM-ADC document file?

What is NPCM-ADC document file? What do you want to describe there? Again - how is it different than interrupts?

It is not different from the interrupts.
I will remove the dt-binding reset include file, the reset property will use numbers and not macro's.

I have no clue what are you referring now... This is NPCM8xx and it has no binding header with reset values. What to remove then?

Best regards,
Krzysztof

author maintainer
#49 lore raw

Re: [PATCH v2 12/20] dt-bindings: reset: npcm: Add support for NPCM8XX

Hi Krzysztof,

Quoted 35 lines · Krzysztof Kozlowski
Quoted 16 lines · Tomer Maimon

Hi Krzysztof,

Quoted 12 lines · Krzysztof Kozlowski
Quoted 9 lines · Tomer Maimon

Hi Krzysztof,

Thanks for your clarification.

We can remove the dt-binding file and use numbers in the DTS, appreciate if you can answer few additional questions:
1. Do you suggest adding all NPCM reset values to the NPCM reset document or the reset values should describe in the module documentation that uses it?

Quoted 3 lines
Quoted 2 lines

What is "NPCM reset document"? Are these reset values anyhow different than interrupts or pins?

No, they represent the same values.

We do not document in the bindings actual pin or interrupt numbers...

Quoted 10 lines
Quoted 10 lines
Quoted 4 lines

2. Some of the NPCM7XX document modules describe the reset value they use from the dt-binding for example:
https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/iio/adc/nuvoton%2Cnpcm750-adc.yaml#L61

This is NPCM750

Quoted 2 lines

If we remove the NPCM8XX dt-binding file should we describe the NPCM8XX values in the NPCM-ADC document file?

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

What is NPCM-ADC document file? What do you want to describe there? Again - how is it different than interrupts?

It is not different from the interrupts.
I will remove the dt-binding reset include file, the reset property will use numbers and not macro's.

I have no clue what are you referring now... This is NPCM8xx and it has no binding header with reset values. What to remove then?

I refer nuvoton,npcm8xx-reset.h file, we don't need it.

Quoted 4 lines

Best regards,
Krzysztof

#50 lore raw

Re: [PATCH v2 12/20] dt-bindings: reset: npcm: Add support for NPCM8XX

Quoted 9 lines · Tomer Maimon
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

What is NPCM-ADC document file? What do you want to describe there? Again - how is it different than interrupts?

It is not different from the interrupts.
I will remove the dt-binding reset include file, the reset property will use numbers and not macro's.

I have no clue what are you referring now... This is NPCM8xx and it has no binding header with reset values. What to remove then?

I refer nuvoton,npcm8xx-reset.h file, we don't need it.

There is no such file in kernel, I believe. If you refer to the patchset here, then of course it should not be sent.

Best regards,
Krzysztof

author maintainer
#51 lore raw

PATCH v2 13/20 reset: npcm: Add NPCM8XX support

In reply to Tomer Maimon

Updated the NPCM reset driver to add
support for Nuvoton BMC NPCM8XX SoC.
As part of adding NPCM8XX support
- Add NPCM8XX specific compatible string.
- Add NPCM8XX USB reset.
- Add data to handle architecture-specific reset parameters.
- Some of the Reset Id and number of resets are different from NPCM7XX.

---
 drivers/reset/reset-npcm.c | 197 +++++++++++++++++++++++++++++++------
 1 file changed, 168 insertions(+), 29 deletions(-)
drivers/reset/reset-npcm.c +168 -29
index 312c3b594b8f..861be56593ee 100644
@@ -17,13 +17,20 @@
 
 /* NPCM7xx GCR registers */
 #define NPCM_MDLR_OFFSET	0x7C
-#define NPCM_MDLR_USBD0		BIT(9)
-#define NPCM_MDLR_USBD1		BIT(8)
-#define NPCM_MDLR_USBD2_4	BIT(21)
-#define NPCM_MDLR_USBD5_9	BIT(22)
+#define NPCM7XX_MDLR_USBD0	BIT(9)
+#define NPCM7XX_MDLR_USBD1	BIT(8)
+#define NPCM7XX_MDLR_USBD2_4	BIT(21)
+#define NPCM7XX_MDLR_USBD5_9	BIT(22)
+
+/* NPCM8xx MDLR bits */
+#define NPCM8XX_MDLR_USBD0_3	BIT(9)
+#define NPCM8XX_MDLR_USBD4_7	BIT(22)
+#define NPCM8XX_MDLR_USBD8	BIT(24)
+#define NPCM8XX_MDLR_USBD9	BIT(21)
 
 #define NPCM_USB1PHYCTL_OFFSET	0x140
 #define NPCM_USB2PHYCTL_OFFSET	0x144
+#define NPCM_USB3PHYCTL_OFFSET	0x148
 #define NPCM_USBXPHYCTL_RS	BIT(28)
 
 /* NPCM7xx Reset registers */
@@ -49,12 +56,38 @@
 #define NPCM_IPSRST3_USBPHY1	BIT(24)
 #define NPCM_IPSRST3_USBPHY2	BIT(25)
 
+#define NPCM_IPSRST4		0x74
+#define NPCM_IPSRST4_USBPHY3	BIT(25)
+#define NPCM_IPSRST4_USB_HOST2	BIT(31)
+
 #define NPCM_RC_RESETS_PER_REG	32
 #define NPCM_MASK_RESETS	GENMASK(4, 0)
 
+enum {
+	BMC_NPCM7XX = 0,
+	BMC_NPCM8XX,
+};
+
+static const u32 npxm7xx_ipsrst[] = {NPCM_IPSRST1, NPCM_IPSRST2, NPCM_IPSRST3};
+static const u32 npxm8xx_ipsrst[] = {NPCM_IPSRST1, NPCM_IPSRST2, NPCM_IPSRST3,
+	NPCM_IPSRST4};
+
+struct npcm_reset_info {
+	u32 bmc_id;
+	u32 num_ipsrst;
+	const u32 *ipsrst;
+};
+
+static const struct npcm_reset_info npxm7xx_reset_info[] = {
+	{.bmc_id = BMC_NPCM7XX, .num_ipsrst = 3, .ipsrst = npxm7xx_ipsrst}};
+static const struct npcm_reset_info npxm8xx_reset_info[] = {
+	{.bmc_id = BMC_NPCM8XX, .num_ipsrst = 4, .ipsrst = npxm8xx_ipsrst}};
+
 struct npcm_rc_data {
 	struct reset_controller_dev rcdev;
 	struct notifier_block restart_nb;
+	const struct npcm_reset_info *info;
+	struct regmap *gcr_regmap;
 	u32 sw_reset_number;
 	void __iomem *base;
 	spinlock_t lock;
@@ -120,14 +153,24 @@ static int npcm_rc_status(struct reset_controller_dev *rcdev,
 static int npcm_reset_xlate(struct reset_controller_dev *rcdev,
 			    const struct of_phandle_args *reset_spec)
 {
+	struct npcm_rc_data *rc = to_rc_data(rcdev);
 	unsigned int offset, bit;
+	bool offset_found = false;
+	int off_num;
 
 	offset = reset_spec->args[0];
-	if (offset != NPCM_IPSRST1 && offset != NPCM_IPSRST2 &&
-	    offset != NPCM_IPSRST3) {
+	for (off_num = 0 ; off_num < rc->info->num_ipsrst ; off_num++) {
+		if (offset == rc->info->ipsrst[off_num]) {
+			offset_found = true;
+			break;
+		}
+	}
+
+	if (!offset_found) {
 		dev_err(rcdev->dev, "Error reset register (0x%x)\n", offset);
 		return -EINVAL;
 	}
+
 	bit = reset_spec->args[1];
 	if (bit >= NPCM_RC_RESETS_PER_REG) {
 		dev_err(rcdev->dev, "Error reset number (%d)\n", bit);
@@ -138,40 +181,29 @@ static int npcm_reset_xlate(struct reset_controller_dev *rcdev,
 }
 
 static const struct of_device_id npcm_rc_match[] = {
-	{ .compatible = "nuvoton,npcm750-reset"},
+	{ .compatible = "nuvoton,npcm750-reset", .data = &npxm7xx_reset_info},
+	{ .compatible = "nuvoton,npcm845-reset", .data = &npxm8xx_reset_info},
 	{ }
 };
 
-/*
- *  The following procedure should be observed in USB PHY, USB device and
- *  USB host initialization at BMC boot
- */
-static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)
+static void npcm_usb_reset_npcm7xx(struct npcm_rc_data *rc)
 {
 	u32 mdlr, iprst1, iprst2, iprst3;
-	struct device *dev = &pdev->dev;
-	struct regmap *gcr_regmap;
 	u32 ipsrst1_bits = 0;
 	u32 ipsrst2_bits = NPCM_IPSRST2_USB_HOST;
 	u32 ipsrst3_bits = 0;
 
-	gcr_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "nuvoton,sysgcr");
-	if (IS_ERR(gcr_regmap)) {
-		dev_err(&pdev->dev, "Failed to find gcr syscon");
-		return PTR_ERR(gcr_regmap);
-	}
-
 	/* checking which USB device is enabled */
-	regmap_read(gcr_regmap, NPCM_MDLR_OFFSET, &mdlr);
-	if (!(mdlr & NPCM_MDLR_USBD0))
+	regmap_read(rc->gcr_regmap, NPCM_MDLR_OFFSET, &mdlr);
+	if (!(mdlr & NPCM7XX_MDLR_USBD0))
 		ipsrst3_bits |= NPCM_IPSRST3_USBD0;
-	if (!(mdlr & NPCM_MDLR_USBD1))
+	if (!(mdlr & NPCM7XX_MDLR_USBD1))
 		ipsrst1_bits |= NPCM_IPSRST1_USBD1;
-	if (!(mdlr & NPCM_MDLR_USBD2_4))
+	if (!(mdlr & NPCM7XX_MDLR_USBD2_4))
 		ipsrst1_bits |= (NPCM_IPSRST1_USBD2 |
 				 NPCM_IPSRST1_USBD3 |
 				 NPCM_IPSRST1_USBD4);
-	if (!(mdlr & NPCM_MDLR_USBD0)) {
+	if (!(mdlr & NPCM7XX_MDLR_USBD0)) {
 		ipsrst1_bits |= (NPCM_IPSRST1_USBD5 |
 				 NPCM_IPSRST1_USBD6);
 		ipsrst3_bits |= (NPCM_IPSRST3_USBD7 |
@@ -194,9 +226,9 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)
 	writel(iprst3, rc->base + NPCM_IPSRST3);
 
 	/* clear USB PHY RS bit */
-	regmap_update_bits(gcr_regmap, NPCM_USB1PHYCTL_OFFSET,
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB1PHYCTL_OFFSET,
 			   NPCM_USBXPHYCTL_RS, 0);
-	regmap_update_bits(gcr_regmap, NPCM_USB2PHYCTL_OFFSET,
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB2PHYCTL_OFFSET,
 			   NPCM_USBXPHYCTL_RS, 0);
 
 	/* deassert reset USB PHY */
@@ -206,19 +238,126 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)
 	udelay(50);
 
 	/* set USB PHY RS bit */
-	regmap_update_bits(gcr_regmap, NPCM_USB1PHYCTL_OFFSET,
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB1PHYCTL_OFFSET,
+			   NPCM_USBXPHYCTL_RS, NPCM_USBXPHYCTL_RS);
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB2PHYCTL_OFFSET,
+			   NPCM_USBXPHYCTL_RS, NPCM_USBXPHYCTL_RS);
+
+	/* deassert reset USB devices*/
+	iprst1 &= ~ipsrst1_bits;
+	iprst2 &= ~ipsrst2_bits;
+	iprst3 &= ~ipsrst3_bits;
+
+	writel(iprst1, rc->base + NPCM_IPSRST1);
+	writel(iprst2, rc->base + NPCM_IPSRST2);
+	writel(iprst3, rc->base + NPCM_IPSRST3);
+}
+
+static void npcm_usb_reset_npcm8xx(struct npcm_rc_data *rc)
+{
+	u32 mdlr, iprst1, iprst2, iprst3, iprst4;
+	u32 ipsrst1_bits = 0;
+	u32 ipsrst2_bits = NPCM_IPSRST2_USB_HOST;
+	u32 ipsrst3_bits = 0;
+	u32 ipsrst4_bits = NPCM_IPSRST4_USB_HOST2 | NPCM_IPSRST4_USBPHY3;
+
+	/* checking which USB device is enabled */
+	regmap_read(rc->gcr_regmap, NPCM_MDLR_OFFSET, &mdlr);
+	if (!(mdlr & NPCM8XX_MDLR_USBD0_3)) {
+		ipsrst3_bits |= NPCM_IPSRST3_USBD0;
+		ipsrst1_bits |= (NPCM_IPSRST1_USBD1 |
+				 NPCM_IPSRST1_USBD2 |
+				 NPCM_IPSRST1_USBD3);
+	}
+	if (!(mdlr & NPCM8XX_MDLR_USBD4_7)) {
+		ipsrst1_bits |= (NPCM_IPSRST1_USBD4 |
+				 NPCM_IPSRST1_USBD5 |
+				 NPCM_IPSRST1_USBD6);
+		ipsrst3_bits |= NPCM_IPSRST3_USBD7;
+	}
+
+	if (!(mdlr & NPCM8XX_MDLR_USBD8))
+		ipsrst3_bits |= NPCM_IPSRST3_USBD8;
+	if (!(mdlr & NPCM8XX_MDLR_USBD9))
+		ipsrst3_bits |= NPCM_IPSRST3_USBD9;
+
+	/* assert reset USB PHY and USB devices */
+	iprst1 = readl(rc->base + NPCM_IPSRST1);
+	iprst2 = readl(rc->base + NPCM_IPSRST2);
+	iprst3 = readl(rc->base + NPCM_IPSRST3);
+	iprst4 = readl(rc->base + NPCM_IPSRST4);
+
+	iprst1 |= ipsrst1_bits;
+	iprst2 |= ipsrst2_bits;
+	iprst3 |= (ipsrst3_bits | NPCM_IPSRST3_USBPHY1 |
+		   NPCM_IPSRST3_USBPHY2);
+	iprst2 |= ipsrst4_bits;
+
+	writel(iprst1, rc->base + NPCM_IPSRST1);
+	writel(iprst2, rc->base + NPCM_IPSRST2);
+	writel(iprst3, rc->base + NPCM_IPSRST3);
+	writel(iprst4, rc->base + NPCM_IPSRST4);
+
+	/* clear USB PHY RS bit */
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB1PHYCTL_OFFSET,
+			   NPCM_USBXPHYCTL_RS, 0);
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB2PHYCTL_OFFSET,
+			   NPCM_USBXPHYCTL_RS, 0);
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB3PHYCTL_OFFSET,
+			   NPCM_USBXPHYCTL_RS, 0);
+
+	/* deassert reset USB PHY */
+	iprst3 &= ~(NPCM_IPSRST3_USBPHY1 | NPCM_IPSRST3_USBPHY2);
+	writel(iprst3, rc->base + NPCM_IPSRST3);
+	iprst4 &= ~NPCM_IPSRST4_USBPHY3;
+	writel(iprst4, rc->base + NPCM_IPSRST4);
+
+	/* set USB PHY RS bit */
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB1PHYCTL_OFFSET,
+			   NPCM_USBXPHYCTL_RS, NPCM_USBXPHYCTL_RS);
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB2PHYCTL_OFFSET,
 			   NPCM_USBXPHYCTL_RS, NPCM_USBXPHYCTL_RS);
-	regmap_update_bits(gcr_regmap, NPCM_USB2PHYCTL_OFFSET,
+	regmap_update_bits(rc->gcr_regmap, NPCM_USB3PHYCTL_OFFSET,
 			   NPCM_USBXPHYCTL_RS, NPCM_USBXPHYCTL_RS);
 
 	/* deassert reset USB devices*/
 	iprst1 &= ~ipsrst1_bits;
 	iprst2 &= ~ipsrst2_bits;
 	iprst3 &= ~ipsrst3_bits;
+	iprst4 &= ~ipsrst4_bits;
 
 	writel(iprst1, rc->base + NPCM_IPSRST1);
 	writel(iprst2, rc->base + NPCM_IPSRST2);
 	writel(iprst3, rc->base + NPCM_IPSRST3);
+	writel(iprst4, rc->base + NPCM_IPSRST4);
+}
+
+/*
+ *  The following procedure should be observed in USB PHY, USB device and
+ *  USB host initialization at BMC boot
+ */
+static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)
+{
+	struct device *dev = &pdev->dev;
+
+	rc->gcr_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "nuvoton,sysgcr");
+	if (IS_ERR(rc->gcr_regmap)) {
+		dev_err(&pdev->dev, "Failed to find nuvoton,sysgcr");
+		return PTR_ERR(rc->gcr_regmap);
+	}
+
+	rc->info = (const struct npcm_reset_info *)
+			of_match_device(dev->driver->of_match_table, dev)->data;
+	switch (rc->info->bmc_id) {
+	case BMC_NPCM7XX:
+		npcm_usb_reset_npcm7xx(rc);
+		break;
+	case BMC_NPCM8XX:
+		npcm_usb_reset_npcm8xx(rc);
+		break;
+	default:
+		return -ENODEV;
+	}
 
 	return 0;
 }
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
author maintainer
#52 lore raw

PATCH v2 14/20 dt-bindings: arm: npcm: Add maintainer

In reply to Tomer Maimon

Add Tomer Maimon to the maintainers list.

---
 Documentation/devicetree/bindings/arm/npcm/npcm.yaml        | 1 +
 Documentation/devicetree/bindings/arm/npcm/nuvoton,gcr.yaml | 1 +
 2 files changed, 2 insertions(+)
Documentation/devicetree/bindings/arm/npcm/npcm.yaml +1 -0
index 95e51378089c..ea9c3103761d 100644
@@ -8,6 +8,7 @@ title: NPCM Platforms Device Tree Bindings
 
 maintainers:
   - Jonathan Neuschäfer <[email protected]>
+  - Tomer Maimon <[email protected]>
 
 properties:
   $nodename:
Documentation/devicetree/bindings/arm/npcm/nuvoton,gcr.yaml +1 -0
index fcb211add7d3..aad7c85e787f 100644
@@ -8,6 +8,7 @@ title: Global Control Registers block in Nuvoton SoCs
 
 maintainers:
   - Jonathan Neuschäfer <[email protected]>
+  - Tomer Maimon <[email protected]>
 
 description:
   The Global Control Registers (GCR) are a block of registers in Nuvoton SoCs
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
author maintainer
#53 lore raw

PATCH v2 15/20 dt-bindings: arm: npcm: Add nuvoton,npcm845 compatible string

In reply to Tomer Maimon

Add a compatible string for Nuvoton BMC NPCM845 SoC and a board specific device tree for the NPCM845 (Arbel) evaluation board.

---
 Documentation/devicetree/bindings/arm/npcm/npcm.yaml | 6 ++++++
 1 file changed, 6 insertions(+)
Documentation/devicetree/bindings/arm/npcm/npcm.yaml +6 -0
index ea9c3103761d..43409e5721d5 100644
@@ -27,4 +27,10 @@ properties:
               - nuvoton,npcm750-evb         # NPCM750 evaluation board
           - const: nuvoton,npcm750
 
+      - description: NPCM845 based boards
+        items:
+          - enum:
+              - nuvoton,npcm845-evb         # NPCM845 evaluation board
+          - const: nuvoton,npcm845
+
 additionalProperties: true
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
author maintainer
#54 lore raw

PATCH v2 16/20 dt-bindings: arm: npcm: Add nuvoton,npcm845 GCR compatible string

In reply to Tomer Maimon

Add a compatible string for Nuvoton BMC NPCM845
global control registers (GCR).

---
 Documentation/devicetree/bindings/arm/npcm/nuvoton,gcr.yaml | 1 +
 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/arm/npcm/nuvoton,gcr.yaml +1 -0
index aad7c85e787f..94e72f25b331 100644
@@ -21,6 +21,7 @@ properties:
       - enum:
           - nuvoton,wpcm450-gcr
           - nuvoton,npcm750-gcr
+          - nuvoton,npcm845-gcr
       - const: syscon
       - const: simple-mfd
 
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
author maintainer
#55 lore raw

PATCH v2 17/20 arm64: npcm: Add support for Nuvoton NPCM8XX BMC SoC

In reply to Tomer Maimon

This adds support for the Nuvoton NPCM8XX Board Management controller (BMC) SoC family.

The NPCM8XX based quad-core Cortex-A35 ARMv8 architecture.

---
 MAINTAINERS                  |  3 +++
 arch/arm64/Kconfig.platforms | 11 +++++++++++
 2 files changed, 14 insertions(+)
MAINTAINERS +3 -0
index a6d3bd9d2a8d..6e90ce4b4023 100644
@@ -2448,9 +2448,12 @@ F:	Documentation/devicetree/bindings/*/*npcm*
 F:	Documentation/devicetree/bindings/arm/npcm/*
 F:	arch/arm/boot/dts/nuvoton-npcm*
 F:	arch/arm/mach-npcm/
+F:	arch/arm64/boot/dts/nuvoton/
 F:	drivers/*/*npcm*
 F:	drivers/*/*/*npcm*
 F:	include/dt-bindings/clock/nuvoton,npcm7xx-clock.h
+F:	include/dt-bindings/clock/nuvoton,npcm8xx-clock.h
+F:	include/dt-bindings/clock/nuvoton,npcm8xx-reset.h
 
 ARM/NUVOTON WPCM450 ARCHITECTURE
 M:	Jonathan Neuschäfer <[email protected]>
arch/arm64/Kconfig.platforms +11 -0
index 4e6d635a1731..c68d1b4f8975 100644
@@ -202,6 +202,17 @@ config ARCH_MXC
 	  This enables support for the ARMv8 based SoCs in the
 	  NXP i.MX family.
 
+config ARCH_NPCM
+	bool "Nuvoton NPCM Architecture"
+	select PINCTRL
+	select GPIOLIB
+	select NPCM7XX_TIMER
+	select RESET_CONTROLLER
+	select MFD_SYSCON
+	help
+	  General support for NPCM8xx BMC (Arbel).
+	  Nuvoton NPCM8xx BMC based on the Cortex A35.
+
 config ARCH_QCOM
 	bool "Qualcomm Platforms"
 	select GPIOLIB
Signature · 1 line
2.33.0
author maintainer
#56 lore raw

PATCH v2 18/20 arm64: dts: nuvoton: Add initial NPCM8XX device tree

In reply to Tomer Maimon

This adds initial device tree support for the Nuvoton NPCM845 Board Management controller (BMC) SoC family.

The NPCM845 based quad-core Cortex-A35 ARMv8 architecture and have various peripheral IPs.

---
 arch/arm64/boot/dts/Makefile                  |   1 +
 .../dts/nuvoton/nuvoton-common-npcm8xx.dtsi   | 197 ++++++++++++++++++
 .../boot/dts/nuvoton/nuvoton-npcm845.dtsi     |  76 +++++++
 3 files changed, 274 insertions(+)
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845.dtsi
arch/arm64/boot/dts/Makefile +1 -0
index 1ba04e31a438..7b107fa7414b 100644
@@ -19,6 +19,7 @@ subdir-y += lg
 subdir-y += marvell
 subdir-y += mediatek
 subdir-y += microchip
+subdir-y += nuvoton
 subdir-y += nvidia
 subdir-y += qcom
 subdir-y += realtek
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +197 -0

197 lines not on this page · raw message

arch/arm64/boot/dts/nuvoton/nuvoton-npcm845.dtsi new file +76 -0

76 lines not on this page · raw message

Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
#57 lore raw

Re: [PATCH v2 18/20] arm64: dts: nuvoton: Add initial NPCM8XX device tree

Quoted 40 lines · Tomer Maimon

This adds initial device tree support for the Nuvoton NPCM845 Board Management controller (BMC) SoC family.

The NPCM845 based quad-core Cortex-A35 ARMv8 architecture and have various peripheral IPs.

---
 arch/arm64/boot/dts/Makefile                  |   1 +
 .../dts/nuvoton/nuvoton-common-npcm8xx.dtsi   | 197 ++++++++++++++++++
 .../boot/dts/nuvoton/nuvoton-npcm845.dtsi     |  76 +++++++
 3 files changed, 274 insertions(+)
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845.dtsi
arch/arm64/boot/dts/Makefile +1 -0
index 1ba04e31a438..7b107fa7414b 100644
@@ -19,6 +19,7 @@ subdir-y += lg
 subdir-y += marvell
 subdir-y += mediatek
 subdir-y += microchip
+subdir-y += nuvoton
 subdir-y += nvidia
 subdir-y += qcom
 subdir-y += realtek
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +7 -0
new file mode 100644
index 000000000000..97e108c50760
@@ -0,0 +1,197 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (c) 2021 Nuvoton Technology [email protected]
+
+#include <dt-bindings/clock/nuvoton,npcm8xx-clock.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 17

Quoted 10 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +10 -0
+/ {
+	#address-cells = <2>;
+	#size-cells = <2>;
+	interrupt-parent = <&gic>;
+
+	/* external reference clock */
+	clk_refclk: clk-refclk {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-frequency = <25000000>;

Ignored comment.

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 25

Quoted 8 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +8 -0
+		clock-output-names = "refclk";
+	};
+
+	/* external reference clock for cpu. float in normal operation */
+	clk_sysbypck: clk-sysbypck {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-frequency = <1000000000>;

Ignored comment.

Quoted 9 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +9 -0
+		clock-output-names = "sysbypck";
+	};
+
+	/* external reference clock for MC. float in normal operation */
+	clk_mcbypck: clk-mcbypck {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-frequency = <1050000000>;
+		clock-output-names = "mcbypck";

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 44

Quoted 10 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +10 -0
+	};
+
+	soc {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		compatible = "simple-bus";
+		interrupt-parent = <&gic>;
+		ranges;
+
+		gcr: gcr@f0800000 {

Ignored comment.

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 46

Quoted 2 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +2 -0
+			compatible = "nuvoton,npcm845-gcr", "syscon",
+				"simple-mfd";

This is not a simple-mfd... I see original bindings defined it that way, but why? I think they should be corrected - remove simple-mfd from the bindings and DTS.

Quoted 19 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +19 -0
+			reg = <0x0 0xf0800000 0x0 0x1000>;
+		};
+
+		gic: interrupt-controller@dfff9000 {
+			compatible = "arm,gic-400";
+			reg = <0x0 0xdfff9000 0x0 0x1000>,
+			      <0x0 0xdfffa000 0x0 0x2000>,
+			      <0x0 0xdfffc000 0x0 0x2000>,
+			      <0x0 0xdfffe000 0x0 0x2000>;
+			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+			#interrupt-cells = <3>;
+			interrupt-controller;
+			#address-cells = <0>;
+			ppi-partitions {
+				ppi_cluster0: interrupt-partition-0 {
+					affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
+				};
+			};
+		};

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 75

Quoted 10 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +10 -0
+	};
+
+	ahb {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		compatible = "simple-bus";
+		interrupt-parent = <&gic>;
+		ranges;
+
+		rstc: rstc@f0801000 {

Ignored comment.

Four comments from v1 ignored in this patch alone.

I'll stop reviewing, it is a waste of my time.

NAK for this change.

Best regards,
Krzysztof

_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

author maintainer
#58 lore raw

Re: [PATCH v2 18/20] arm64: dts: nuvoton: Add initial NPCM8XX device tree

Hi Krzysztof,

Sorry, probably I missed your comments (too many patches to handle at one time :-))...

Quoted 46 lines · Krzysztof Kozlowski
Quoted 44 lines · Tomer Maimon

This adds initial device tree support for the Nuvoton NPCM845 Board Management controller (BMC) SoC family.

The NPCM845 based quad-core Cortex-A35 ARMv8 architecture and have various peripheral IPs.

---
 arch/arm64/boot/dts/Makefile                  |   1 +
 .../dts/nuvoton/nuvoton-common-npcm8xx.dtsi   | 197 ++++++++++++++++++
 .../boot/dts/nuvoton/nuvoton-npcm845.dtsi     |  76 +++++++
 3 files changed, 274 insertions(+)
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845.dtsi
arch/arm64/boot/dts/Makefile +1 -0
index 1ba04e31a438..7b107fa7414b 100644
@@ -19,6 +19,7 @@ subdir-y += lg
 subdir-y += marvell
 subdir-y += mediatek
 subdir-y += microchip
+subdir-y += nuvoton
 subdir-y += nvidia
 subdir-y += qcom
 subdir-y += realtek
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +11 -0
new file mode 100644
index 000000000000..97e108c50760
@@ -0,0 +1,197 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (c) 2021 Nuvoton Technology [email protected]
+
+#include <dt-bindings/clock/nuvoton,npcm8xx-clock.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+     #address-cells = <2>;
+     #size-cells = <2>;
+     interrupt-parent = <&gic>;
Quoted 8 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 17

Quoted 6 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +6 -0
+
+     /* external reference clock */
+     clk_refclk: clk-refclk {
+             compatible = "fixed-clock";
+             #clock-cells = <0>;
+             clock-frequency = <25000000>;

Ignored comment.

Could we use it as a default clock-frequency?

Quoted 11 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 25

Quoted 9 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +8 -0
+             clock-output-names = "refclk";
+     };
+
+     /* external reference clock for cpu. float in normal operation */
+     clk_sysbypck: clk-sysbypck {
+             compatible = "fixed-clock";
+             #clock-cells = <0>;
+             clock-frequency = <1000000000>;

Ignored comment.

same as above

Quoted 9 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 33

Quoted 9 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +8 -0
+             clock-output-names = "sysbypck";
+     };
+
+     /* external reference clock for MC. float in normal operation */
+     clk_mcbypck: clk-mcbypck {
+             compatible = "fixed-clock";
+             #clock-cells = <0>;
+             clock-frequency = <1050000000>;

same as above

Quoted 11 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 44

Quoted 11 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +11 -0
+             clock-output-names = "mcbypck";
+     };
+
+     soc {
+             #address-cells = <2>;
+             #size-cells = <2>;
+             compatible = "simple-bus";
+             interrupt-parent = <&gic>;
+             ranges;
+
+             gcr: gcr@f0800000 {

I understand it sounds generic but I try to be as much compatible with NPCM7XX
https://elixir.bootlin.com/linux/v5.19-rc1/source/arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi#L91

Quoted 9 lines

Ignored comment.

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 46

Quoted 2 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +2 -0
+                     compatible = "nuvoton,npcm845-gcr", "syscon",
+                             "simple-mfd";

This is not a simple-mfd... I see original bindings defined it that way, but why? I think they should be corrected - remove simple-mfd from the bindings and DTS.

will remove in both places in V3

Quoted 29 lines
Quoted 28 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +26 -0
+                     reg = <0x0 0xf0800000 0x0 0x1000>;
+             };
+
+             gic: interrupt-controller@dfff9000 {
+                     compatible = "arm,gic-400";
+                     reg = <0x0 0xdfff9000 0x0 0x1000>,
+                           <0x0 0xdfffa000 0x0 0x2000>,
+                           <0x0 0xdfffc000 0x0 0x2000>,
+                           <0x0 0xdfffe000 0x0 0x2000>;
+                     interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+                     #interrupt-cells = <3>;
+                     interrupt-controller;
+                     #address-cells = <0>;
+                     ppi-partitions {
+                             ppi_cluster0: interrupt-partition-0 {
+                                     affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
+                             };
+                     };
+             };
+     };
+
+     ahb {
+             #address-cells = <2>;
+             #size-cells = <2>;
+             compatible = "simple-bus";
+             interrupt-parent = <&gic>;
Quoted 6 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 75

Quoted 3 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +3 -0
+             ranges;
+
+             rstc: rstc@f0801000 {

Ignored comment.

I understand it sounds generic but I try to be as much compatible with NPCM7XX
https://elixir.bootlin.com/linux/v5.19-rc1/source/arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi#L109

Quoted 2 lines

Four comments from v1 ignored in this patch alone.

one more comment in V1
"+ cpu0: cpu@0 {

 +                     device_type = "cpu";
 +                     compatible = "arm,cortex-a35";
 +                     clocks = <&clk NPCM8XX_CLK_CPU>;
 +                     reg = <0x0 0x0>;

Why do you have two address cells? A bit more complicated and not necessary, I think."
the arm,cortex-a35 is 64 Bit this is why we use #address-cells = <2>; and therefore reg = <0x0 0x0>;

Quoted 6 lines

I'll stop reviewing, it is a waste of my time.

NAK for this change.

Best regards,
Krzysztof

Again sorry to miss these comments in V1.

Appreciate your time.

Best regards,

Tomer

#59 lore raw

Re: [PATCH v2 18/20] arm64: dts: nuvoton: Add initial NPCM8XX device tree

Hi Tomer,

Quoted 33 lines · Tomer Maimon
Quoted 23 lines · Krzysztof Kozlowski
Quoted 22 lines · Tomer Maimon

This adds initial device tree support for the Nuvoton NPCM845 Board Management controller (BMC) SoC family.

The NPCM845 based quad-core Cortex-A35 ARMv8 architecture and have various peripheral IPs.

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +11 -0
@@ -0,0 +1,197 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (c) 2021 Nuvoton Technology [email protected]
+
+#include <dt-bindings/clock/nuvoton,npcm8xx-clock.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+     #address-cells = <2>;
+     #size-cells = <2>;
+     interrupt-parent = <&gic>;
Quoted 8 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 17

Quoted 6 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +6 -0
+
+     /* external reference clock */
+     clk_refclk: clk-refclk {
+             compatible = "fixed-clock";
+             #clock-cells = <0>;
+             clock-frequency = <25000000>;

Ignored comment.

Quoted 1 line

Could we use it as a default clock-frequency?

If the oscillator is present on the board, and not an SoC builtin, its clock frequency should be described in the board DTS.
Some clocks may be optional, and left unpopulated.
Others clocks may be fed with different frequencies than the default.

Quoted 26 lines
Quoted 11 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 25

Quoted 9 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +8 -0
+             clock-output-names = "refclk";
+     };
+
+     /* external reference clock for cpu. float in normal operation */
+     clk_sysbypck: clk-sysbypck {
+             compatible = "fixed-clock";
+             #clock-cells = <0>;
+             clock-frequency = <1000000000>;

Ignored comment.

same as above

Quoted 9 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 33

Quoted 9 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +8 -0
+             clock-output-names = "sysbypck";
+     };
+
+     /* external reference clock for MC. float in normal operation */
+     clk_mcbypck: clk-mcbypck {
+             compatible = "fixed-clock";
+             #clock-cells = <0>;
+             clock-frequency = <1050000000>;

same as above

Quoted 2 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 35

Quoted 2 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +2 -0
+             clock-output-names = "mcbypck";
+     };

"+ cpu0: cpu@0 {

Quoted 8 lines
 +                     device_type = "cpu";
 +                     compatible = "arm,cortex-a35";
 +                     clocks = <&clk NPCM8XX_CLK_CPU>;
 +                     reg = <0x0 0x0>;

Why do you have two address cells? A bit more complicated and not necessary, I think."
the arm,cortex-a35 is 64 Bit this is why we use #address-cells = <2>; and therefore reg = <0x0 0x0>;

These addresses are not addresses on the main memory bus (which is indeed 64-bit), but on the logical CPU bus.
Now, Documentation/devicetree/bindings/arm/cpus.yaml says you can have #address-cells = <2> if you have non-zero MPIDR_EL1 high bits.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#60 lore raw

Re: [PATCH v2 18/20] arm64: dts: nuvoton: Add initial NPCM8XX device tree

Quoted 10 lines · Geert Uytterhoeven
Quoted 9 lines

"+ cpu0: cpu@0 {

 +                     device_type = "cpu";
 +                     compatible = "arm,cortex-a35";
 +                     clocks = <&clk NPCM8XX_CLK_CPU>;
 +                     reg = <0x0 0x0>;

Why do you have two address cells? A bit more complicated and not necessary, I think."
the arm,cortex-a35 is 64 Bit this is why we use #address-cells = <2>; and therefore reg = <0x0 0x0>;

Quoted 5 lines

These addresses are not addresses on the main memory bus (which is indeed 64-bit), but on the logical CPU bus.
Now, Documentation/devicetree/bindings/arm/cpus.yaml says you can have #address-cells = <2> if you have non-zero MPIDR_EL1 high bits.

Thanks Tomer and Geert for explanation. OK for me.

Best regards,
Krzysztof

#61 lore raw

Re: [PATCH v2 18/20] arm64: dts: nuvoton: Add initial NPCM8XX device tree

In reply to Tomer Maimon
Quoted 7 lines · Tomer Maimon
Quoted 6 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 17

Quoted 4 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +4 -0
+     clk_refclk: clk-refclk {
+             compatible = "fixed-clock";
+             #clock-cells = <0>;
+             clock-frequency = <25000000>;

Ignored comment.

Could we use it as a default clock-frequency?

In DTS? If my assumption, that this clock is not on SoC itself, is correct, then the answer is no, you cannot. The clock physically sits on the board, so it is defined by board DTS. Feel free to embed in SoC DTSI most of the clock properties, but the core property - frequency - must be outside.

Quoted 22 lines
Quoted 11 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 25

Quoted 9 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +8 -0
+             clock-output-names = "refclk";
+     };
+
+     /* external reference clock for cpu. float in normal operation */
+     clk_sysbypck: clk-sysbypck {
+             compatible = "fixed-clock";
+             #clock-cells = <0>;
+             clock-frequency = <1000000000>;

Ignored comment.

same as above

Quoted 9 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 33

Quoted 9 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +8 -0
+             clock-output-names = "sysbypck";
+     };
+
+     /* external reference clock for MC. float in normal operation */
+     clk_mcbypck: clk-mcbypck {
+             compatible = "fixed-clock";
+             #clock-cells = <0>;
+             clock-frequency = <1050000000>;

same as above

Quoted 13 lines
Quoted 11 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 44

Quoted 11 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +11 -0
+             clock-output-names = "mcbypck";
+     };
+
+     soc {
+             #address-cells = <2>;
+             #size-cells = <2>;
+             compatible = "simple-bus";
+             interrupt-parent = <&gic>;
+             ranges;
+
+             gcr: gcr@f0800000 {

I understand it sounds generic but I try to be as much compatible with NPCM7XX
https://elixir.bootlin.com/linux/v5.19-rc1/source/arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi#L91

Then fix NPCM7XX. Please do not multiple bad choices because it looks similar. Fix the other wrong one.

Quoted 39 lines
Quoted 9 lines

Ignored comment.

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 46

Quoted 2 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +2 -0
+                     compatible = "nuvoton,npcm845-gcr", "syscon",
+                             "simple-mfd";

This is not a simple-mfd... I see original bindings defined it that way, but why? I think they should be corrected - remove simple-mfd from the bindings and DTS.

will remove in both places in V3

Quoted 28 lines
Quoted 28 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +26 -0
+                     reg = <0x0 0xf0800000 0x0 0x1000>;
+             };
+
+             gic: interrupt-controller@dfff9000 {
+                     compatible = "arm,gic-400";
+                     reg = <0x0 0xdfff9000 0x0 0x1000>,
+                           <0x0 0xdfffa000 0x0 0x2000>,
+                           <0x0 0xdfffc000 0x0 0x2000>,
+                           <0x0 0xdfffe000 0x0 0x2000>;
+                     interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+                     #interrupt-cells = <3>;
+                     interrupt-controller;
+                     #address-cells = <0>;
+                     ppi-partitions {
+                             ppi_cluster0: interrupt-partition-0 {
+                                     affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
+                             };
+                     };
+             };
+     };
+
+     ahb {
+             #address-cells = <2>;
+             #size-cells = <2>;
+             compatible = "simple-bus";
+             interrupt-parent = <&gic>;
Quoted 8 lines
Quoted 6 lines

arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi line 75

Quoted 3 lines
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +3 -0
+             ranges;
+
+             rstc: rstc@f0801000 {

Ignored comment.

I understand it sounds generic but I try to be as much compatible with NPCM7XX
https://elixir.bootlin.com/linux/v5.19-rc1/source/arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi#L109

Fix 7xx.

Best regards,
Krzysztof

author maintainer
#62 lore raw

PATCH v2 19/20 arm64: dts: nuvoton: Add initial NPCM845 EVB device tree

In reply to Tomer Maimon

Add initial Nuvoton NPCM845 evaluation board device tree.

---
 arch/arm64/boot/dts/nuvoton/Makefile          |  2 ++
 .../boot/dts/nuvoton/nuvoton-npcm845-evb.dts  | 30 +++++++++++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 arch/arm64/boot/dts/nuvoton/Makefile
 create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845-evb.dts
arch/arm64/boot/dts/nuvoton/Makefile new file +2 -0
new file mode 100644
index 000000000000..a99dab90472a
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+dtb-$(CONFIG_ARCH_NPCM) += nuvoton-npcm845-evb.dtb
arch/arm64/boot/dts/nuvoton/nuvoton-npcm845-evb.dts new file +30 -0
new file mode 100644
index 000000000000..a5ab2bc0f835
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (c) 2021 Nuvoton Technology [email protected]
+
+/dts-v1/;
+#include "nuvoton-npcm845.dtsi"
+
+/ {
+	model = "Nuvoton npcm845 Development Board (Device Tree)";
+	compatible = "nuvoton,npcm845-evb", "nuvoton,npcm845";
+
+	aliases {
+		serial0 = &serial0;
+	};
+
+	chosen {
+		stdout-path = &serial0;
+	};
+
+	memory {
+		reg = <0x0 0x0 0x0 0x40000000>;
+	};
+};
+
+&serial0 {
+	status = "okay";
+};
+
+&watchdog1 {
+	status = "okay";
+};
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
author maintainer
#63 lore raw

PATCH v2 20/20 arm64: defconfig: Add Nuvoton NPCM family support

In reply to Tomer Maimon

Enable basic drivers for NPCM8XX booting up support:
Architecture, Clock, and WD.

---
 arch/arm64/configs/defconfig | 3 +++
 1 file changed, 3 insertions(+)
arch/arm64/configs/defconfig +3 -0
index 7d1105343bc2..c4a237a84efa 100644
@@ -49,6 +49,7 @@ CONFIG_ARCH_MEDIATEK=y
 CONFIG_ARCH_MESON=y
 CONFIG_ARCH_MVEBU=y
 CONFIG_ARCH_MXC=y
+CONFIG_ARCH_NPCM=y
 CONFIG_ARCH_QCOM=y
 CONFIG_ARCH_RENESAS=y
 CONFIG_ARCH_ROCKCHIP=y
@@ -627,6 +628,7 @@ CONFIG_RENESAS_RZG2LWDT=y
 CONFIG_UNIPHIER_WATCHDOG=y
 CONFIG_PM8916_WATCHDOG=m
 CONFIG_BCM2835_WDT=y
+CONFIG_NPCM7XX_WATCHDOG=y
 CONFIG_MFD_ALTERA_SYSMGR=y
 CONFIG_MFD_BD9571MWV=y
 CONFIG_MFD_AXP20X_I2C=y
@@ -1021,6 +1023,7 @@ CONFIG_COMMON_CLK_FSL_SAI=y
 CONFIG_COMMON_CLK_S2MPS11=y
 CONFIG_COMMON_CLK_PWM=y
 CONFIG_COMMON_CLK_VC5=y
+CONFIG_COMMON_CLK_NPCM8XX=y
 CONFIG_COMMON_CLK_BD718XX=m
 CONFIG_CLK_RASPBERRYPI=m
 CONFIG_CLK_IMX8MM=y
Signature · 7 lines
2.33.0


_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel