Re: [PATCH v3 05/12] dt-bindings: rtc: renesas,rzg3s-rtc: Document the Renesas RTCA-3 IP

claudiu beznea
2024-10-10T09:52:56Z

Hi, Geert,

On 10.10.2024 12:29, Geert Uytterhoeven wrote:
> Hi Claudiu,
>
> On Fri, Aug 30, 2024 at 3:02 PM Claudiu <claudiu.beznea@tuxon.dev> wrote:
>> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>>
>> Document the RTC IP (RTCA-3) available on the Renesas RZ/G3S SoC.
>> The RTC IP available on Renesas RZ/V2H is almost identical with the
>> one found on Renesas RZ/G3S (it misses the time capture functionality
>> which is not yet implemented on proposed driver). For this, added also a
>> generic compatible that will be used at the moment as fallback for both
>> RZ/G3S and RZ/V2H.
>>
>> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>> ---
>>
>> Changes in v3:
>> - added RTC bus clock, reset and power-domain; it has been detected
>> by reverse engineering that RTC and VBATTB clock, reset and power
>> domain are shared; HW manual doesn't mention it
>> - updated example with these and with assigned-clock properties
>> needed to configure the VBATTCLK MUX with proper parent
>> - updated example section with dt-bindings/clock/r9a08g045-cpg.h
>> and dt-bindings/clock/r9a08g045-vbattb.h includes
>> - for all these, dropped Conor's Rb tag
>
> Thanks for the update!
>
> Sorry for chiming in late, but this RTCA-3 block seems to be a
> derivative of the RTC blocks found on older SuperH SoCs, and on RZ/A1
> and RZ/A2 ARM SoCs. Differences are found in (lack of)
> 100/1000-year-count parts and the Year Alarm Enable Register, and in
> some control register bits.

At a 1st look it seems so, yes. I was inclined at the beginning to just use
the rtc-sh but the RZ/G3S HW manual mentions a lot of restrictions that
need to be followed when configuring the IP. Because of these restrictions
I chose to have a different driver. Otherwise the rtc-sh would have become
way too complication as far as I can tell.

From these restriction I can mention:
- wait for 2*1/64 periods when configuring the alarm
- from HW manual: When the RCR1 register is modified,
check that all the
bits have been updated before proceeding to the next processing
- from HW manual: section 22.6.4. Notes on writing to and
reading from registers) after writing to count registers, alarm
registers, year alarm enable register, bits RCR2.AADJE, AADJP,
and HR24 register, we need to do 3 empty reads before being
able to fetch the registers content.
- updates to RCR2.START need to be checked before continuing (note 2 from
HW manual on RCR2 register: After writing to this bit, confirm that its
value has actually changed before proceeding with further processing)
- there are many bits that are synchronized w/ count source and need to be
checked before proceeding (when setting it up).
- According to HW manual (section 22.4.2. Clock and count mode setting
procedure) we need to wait at least 6 cycles of the 32KHz clock after
clock was enabled.
- According to HW manual (section 22.3.19. RTC Control
Register 2) when set 24 hours mode this needs to be done separate from
stop operation.
- According to HW manual (section 22.6.3. Notes on writing to and reading
from registers) after reset we need to wait 6 clock cycles before
writing to RTC registers.
- According to HW manual (section 22.6.4. Notes on writing to and reading
from registers) we need to wait 1/128 seconds while the clock is
operating (RCR2.START bit = 1) to be able to read the counters after a
return from reset.
- and there are other restrictions

Thank you,
Claudiu Beznea

>
> The SuperH and RZ/A1 variant is supported by drivers/rtc/rtc-sh.c;
> DT bindings for the latter are found in
> Documentation/devicetree/bindings/rtc/renesas,sh-rtc.yaml.
>
> (My first guess was that RTC-A1 is used on RZ/A1, RTC-A2 on RZ/A2,
> and RTC-A3 on RZ/A3, but apparently RZ/A3UL does not have an RTC...
> Oh well, at least it is used on later RZ series SoCs...)
>
> Gr{oetje,eeting}s,
>
> Geert
>