Re: [PATCH v7 1/4] dt-bindings: soc: sophgo: Add Sophgo system control module

From: Chen Wang
Date: Tue Jan 09 2024 - 03:37:05 EST



On 2024/1/9 3:36, Krzysztof Kozlowski wrote:
On 08/01/2024 08:20, Chen Wang wrote:
On 2024/1/8 15:03, Krzysztof Kozlowski wrote:
On 08/01/2024 07:48, Chen Wang wrote:
From: Chen Wang <unicorn_wang@xxxxxxxxxxx>

Add documentation to describe Sophgo System Controller for SG2042.

Signed-off-by: Chen Wang <unicorn_wang@xxxxxxxxxxx>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx>
---
.../soc/sophgo/sophgo,sg2042-sysctrl.yaml | 34 +++++++++++++++++++
1 file changed, 34 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/sophgo/sophgo,sg2042-sysctrl.yaml

diff --git a/Documentation/devicetree/bindings/soc/sophgo/sophgo,sg2042-sysctrl.yaml b/Documentation/devicetree/bindings/soc/sophgo/sophgo,sg2042-sysctrl.yaml
new file mode 100644
index 000000000000..1ec1eaa55598
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/sophgo/sophgo,sg2042-sysctrl.yaml
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/sophgo/sophgo,sg2042-sysctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo SG2042 SoC system controller
+
+maintainers:
+ - Chen Wang <unicorn_wang@xxxxxxxxxxx>
+
+description:
+ The Sophgo SG2042 SoC system controller provides register information such
+ as offset, mask and shift that can be used by other modules, such as clocks.
"offset, mask and shift" is not a register information stored in
syscons. Are you really sure, that your system controller hardware
stores offsets of some other registers?

Show as some example of such offsets, masks and shifts provided by this
hardware.
The system control module is defined here:
https://github.com/sophgo/sophgo-doc/blob/main/SG2042/TRM/source/system-control.rst.
It contains some registers related to pll and gates.
I do not see there registers providing shifts and offsets... just values.

Let me first clarify more what the "offset"/"shift"/"mask" I meant,

Use https://github.com/sophgo/sophgo-doc/blob/main/SG2042/TRM/source/system-control.rst#mpll_control-offset-0x0e8 as example, this register is used to control Main PLL:

- Offset: 0x0E8, to my understand, it is the offest between this MPLL_CONTROL register and the start of system-control base

- Shift: the conlumn "LSB", for example, to locate the field MPLL_CONTROL.MPLL_FBDIV, we can first use system-control base + offset to get the address of MPLL_CONTROL, then use LSB(16) as shift to get the start position of this field.

- Mask:  still use MPLL_CONTROL.MPLL_FBDIV as example, use MSB(27) and LSB(16), this means the width of this field is 12 and with this we can get bit-mask for this field.

For SG2042, IC define clock related registers in two parts, one is in https://github.com/sophgo/sophgo-doc/blob/main/SG2042/TRM/source/clock.rst, and another in https://github.com/sophgo/sophgo-doc/blob/main/SG2042/TRM/source/system-control.rst. I define the system control node in DTS and just treat it as a block of registers array and after regmap I can get some registers address such as MPLL_CONTROL to access it from my driver code.

Some other clocks registars are defined in
https://github.com/sophgo/sophgo-doc/blob/main/SG2042/TRM/source/clock.rst.

memory-map is defined in
https://github.com/sophgo/sophgo-doc/blob/main/SG2042/TRM/source/mmap.rst

Please fix the wording because it does not make sense. System controller
does not provide register information. Your datasheet provides register
information.

Sorry, I don't understand why you say "System controller does not provide register information."? As I explained above, I did see the information about these clock-related registers from the system control module, such as the offset/shift/mask I mentioned above. That's why I wrote "that can be used by other modules, such as clocks".  How should I express, please enlighten me.

Thanks,

Chen

Best regards,
Krzysztof