Message ID | 20250302195205.3183174-2-alexander.sverdlin@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | riscv: rtc: sophgo: add rtc support for CV1800 | expand |
Context | Check | Description |
---|---|---|
bjorn/pre-ci_am | success | Success |
bjorn/build-rv32-defconfig | success | build-rv32-defconfig |
bjorn/build-rv64-clang-allmodconfig | success | build-rv64-clang-allmodconfig |
bjorn/build-rv64-gcc-allmodconfig | success | build-rv64-gcc-allmodconfig |
bjorn/build-rv64-nommu-k210-defconfig | success | build-rv64-nommu-k210-defconfig |
bjorn/build-rv64-nommu-k210-virt | success | build-rv64-nommu-k210-virt |
bjorn/checkpatch | warning | checkpatch |
bjorn/dtb-warn-rv64 | success | dtb-warn-rv64 |
bjorn/header-inline | success | header-inline |
bjorn/kdoc | success | kdoc |
bjorn/module-param | success | module-param |
bjorn/verify-fixes | success | verify-fixes |
bjorn/verify-signedoff | success | verify-signedoff |
On Sun, Mar 02, 2025 at 08:51:54PM +0100, Alexander Sverdlin wrote: > From: Jingbao Qiu <qiujingbao.dlmu@gmail.com> > > Add RTC devicetree binding for Sophgo CV1800 series SoC. The device is > called RTC, but contains control registers of other HW blocks in its > address space, most notably of Power-on-Reset (PoR) module, DW8051 IP > (MCU core), accompanying SRAM, hence putting it in MFD subsystem. Assuming this is integrated block in the CV1800 SoC, then this should go to soc/ and probably called system controller or similarly. How is it called in the datasheet? > > Signed-off-by: Jingbao Qiu <qiujingbao.dlmu@gmail.com> > Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com> > --- > Changelog: > v12: > - maintainer Jingbao Qiu <qiujingbao.dlmu@gmail.com> -> sophgo@lists.linux.dev > - dropped Reviewed-by: Krzysztof Kozlowski > - link to TRM > - mentioned 8051 core in the description > - binding is now MFD, not RTC > - added "syscon" compatible > - added "interrupt-names", "clock-names" (because of added PM/remoteproc) > - main compatible "sophgo,cv1800-rtc" -> "sophgo,cv1800b-rtc" > > .../bindings/mfd/sophgo,cv1800b-rtc.yaml | 86 +++++++++++++++++++ > 1 file changed, 86 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mfd/sophgo,cv1800b-rtc.yaml > > diff --git a/Documentation/devicetree/bindings/mfd/sophgo,cv1800b-rtc.yaml b/Documentation/devicetree/bindings/mfd/sophgo,cv1800b-rtc.yaml > new file mode 100644 > index 000000000000..b80d68502c48 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/sophgo,cv1800b-rtc.yaml > @@ -0,0 +1,86 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mfd/sophgo,cv1800b-rtc.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Real Time Clock of the Sophgo CV1800 SoC > + > +description: > + The RTC (Real Time Clock) is an independently powered module in the chip. It > + contains a 32KHz oscillator and a Power-On-Reset (POR) sub-module, which can > + be used for time display and scheduled alarm produce. In addition, the > + hardware state machine provides triggering and timing control for chip > + power-on, power-off and reset. > + > + Furthermore, the 8051 subsystem is located within RTCSYS and is independently > + powered. System software can use the 8051 to manage wake conditions and wake > + the system while the system is asleep, and communicate with external devices > + through peripheral controllers. > + > + Technical Reference Manual available at > + https://github.com/sophgo/sophgo-doc/tree/main/SG200X/TRM > + > +maintainers: > + - sophgo@lists.linux.dev > + > +allOf: > + - $ref: /schemas/rtc/rtc.yaml# > + > +properties: > + compatible: > + items: > + - const: sophgo,cv1800b-rtc > + - const: syscon Binding is fine, but still open topics are: placement and compatible name. Best regards, Krzysztof
diff --git a/Documentation/devicetree/bindings/mfd/sophgo,cv1800b-rtc.yaml b/Documentation/devicetree/bindings/mfd/sophgo,cv1800b-rtc.yaml new file mode 100644 index 000000000000..b80d68502c48 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/sophgo,cv1800b-rtc.yaml @@ -0,0 +1,86 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/sophgo,cv1800b-rtc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Real Time Clock of the Sophgo CV1800 SoC + +description: + The RTC (Real Time Clock) is an independently powered module in the chip. It + contains a 32KHz oscillator and a Power-On-Reset (POR) sub-module, which can + be used for time display and scheduled alarm produce. In addition, the + hardware state machine provides triggering and timing control for chip + power-on, power-off and reset. + + Furthermore, the 8051 subsystem is located within RTCSYS and is independently + powered. System software can use the 8051 to manage wake conditions and wake + the system while the system is asleep, and communicate with external devices + through peripheral controllers. + + Technical Reference Manual available at + https://github.com/sophgo/sophgo-doc/tree/main/SG200X/TRM + +maintainers: + - sophgo@lists.linux.dev + +allOf: + - $ref: /schemas/rtc/rtc.yaml# + +properties: + compatible: + items: + - const: sophgo,cv1800b-rtc + - const: syscon + + reg: + maxItems: 1 + + interrupts: + items: + - description: RTC Alarm + - description: RTC Longpress + - description: VBAT DET + + interrupt-names: + items: + - const: alarm + - const: longpress + - const: vbat + + clocks: + items: + - description: RTC clock source + - description: DW8051 MCU clock source + + clock-names: + items: + - const: rtc + - const: mcu + +required: + - compatible + - reg + - interrupts + - interrupt-names + - clocks + - clock-names + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/clock/sophgo,cv1800.h> + #include <dt-bindings/interrupt-controller/irq.h> + + rtc@5025000 { + compatible = "sophgo,cv1800b-rtc", "syscon"; + reg = <0x5025000 0x2000>; + interrupts = <17 IRQ_TYPE_LEVEL_HIGH>, + <18 IRQ_TYPE_LEVEL_HIGH>, + <19 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "alarm", "longpress", "vbat"; + clocks = <&clk CLK_RTC_25M>, + <&clk CLK_SRC_RTC_SYS_0>; + clock-names = "rtc", "mcu"; + };