RE: [PATCH v8 0/9] Add Renesas RZ/G3E GPT support
From: Biju Das
Date: Thu Oct 29 2026 - 08:18:09 EST
Hi All,
I will be sending new version fixing sashiko review comment.
https://sashiko.dev/#/patchset/20260825154847.197948-1-biju.das.jz%40bp.renesas.com
Cheers,
Biju
> -----Original Message-----
> From: Biju Das
> Sent: 02 October 2026 07:44
> Subject: RE: [PATCH v8 0/9] Add Renesas RZ/G3E GPT support
>
> Hi All,
>
> > -----Original Message-----
> > From: Biju <biju.das.au@xxxxxxxxx>
> > Sent: 25 August 2026 16:48
> > Subject: [PATCH v8 0/9] Add Renesas RZ/G3E GPT support
> >
> > From: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> >
> > This series extends the RZ/G2L GPT PWM driver with RZ/G3E SoC support.
> >
> > The RZ/G3E GPT has a number of hardware differences compared to RZ/G2L:
> > it exposes 16 channels (across two GPT instances of 8 channels each),
> > uses a 4-bit GTCR prescaler field (versus 3-bit on RZ/G2L), and has a
> > discontinuous prescale sequence with powers-of-2 scaling rather than
> > the continuous powers-of-4 sequence on RZ/G2L. It also has additional clocks and resets (bus clock and
> rst_s).
> >
> > v7->v8:
> > * Cached prescale value.
> > * Updated rzg2l_gpt_write_waveform() for caching the period, If the
> > channel is already enabled and the user changes its period.
> > * Updated rzg3e_gpt_calculate_prescale() with >= 64.
> > v6->v7:
> > * Reordered the patched moving POEG support to last.
> > * Replaced USEC_PER_SEC->NSEC_PER_MSEC for period/duty cycle
> > conversion.
> > * Avoided recalculation of prescale, if is_small_second_period == true.
> > * Moved `wfhw->gtccr = 0` into the if block in rzg2l_gpt_config().
> > * Added rzg2l_gpt_poeg_link_channels() and used __free for deallocating
> > device node pointer.
> > * Replaced dev_err()->dev_err_probe() in rzg2l_gpt_poeg_link_channels().
> > * Replaced local variable cells with num_poeg_pairs in
> > rzg2l_gpt_poeg_init().
> > v5->v6:
> > * Added patch for fixing period_ticks overflow.
> > * Added patch to add missing newlines to dev_err_probe() messages.
> > * Dropped extra space in poegs variable assignment in
> > rzg2l_gpt_poeg_init().
> > * Updated the comment sections of rzg2l_gpt_poeg_init() with POEG and GPT
> > in upper-case and replaced configure->configures.
> > * Format specifiers in dev_err() changed from %d to %u in
> > rzg2l_gpt_poeg_init().
> > * Dropped local variables pv and dc from rzg2l_gpt_round_waveform_tohw().
> > * Dropped blank line in rzg2l_gpt_round_waveform_tohw().
> > * Moved assignment of rzg2l_gpt->period_ticks[ch] to *_write_waveform().
> > * Restored clamping of duty_ticks with period_ticks in
> > rzg2l_gpt_round_waveform_tohw().
> > * Simplified rzg2l_gpt_write_waveform() using else if statement.
> > * Dropped local variable gptr in rzg2l_gpt_write_waveform().
> > * Moved mutex after early return in rzg2l_gpt_round_waveform_tohw().
> > * Dropped extra parameter rzg2l_gpt from rzg2l_gpt_calculate_prescale()
> > in rzg2l_gpt_round_waveform_tohw().
> > * Updated comment in rzg2l_gpt_calculate_period_or_duty().
> > * Updated rzg3e_gpt_calculate_prescale().
> > v4->v5:
> > * Merged GPT linking POEG patch series here.
> > * Dropped suspend/resume patch; will be added later.
> > * Updated commit description for patches #2, #4, #5, and #6.
> > * Replaced return type of rzg2l_gpt_poeg_init() from void to int and
> > probe() check this return value.
> > * Added more error checks in rzg2l_gpt_poeg_init().
> > * Added a patch to drop the unused rzg2l_gpt_chip parameter from
> > rzg2l_gpt_calculate_prescale().
> > * Updated rzg2l_gpt_round_waveform_tohw() to initialize gtccr when the
> > period of the second channel is smaller.
> > * Replaced period_ticks with RZG2L_MAX_TICKS for the duty_ticks maximum
> > value check in rzg2l_gpt_round_waveform_tohw().
> > v3->v4:
> > * Added wave form callback conversion back to this patch series.
> > * Updated rzg2l_gpt_is_ch_enabled() fit into 80-character limit for
> > consistency with other functions.
> > * Dropped field_{get,prep} as mainline now support it.
> > * Updated commit description for patch#3
> > * Retained RZG2L_GTCR_TPCS bit definitons
> > * Replaced gtcr_tpcs_mask->gtcr_tpcs
> > * Updated commit header and description for patch#4
> > * Renamed prescale_pow_of_two_mult_factor->prescale_mult
> > * Added RZG3E_GTCR_TPCS bit definition for RZ/G3E and added to
> > rzg3e_data.
> > * Added error checks on suspend() and device set to operational state
> > on failure().
> > * Added Rb tag from Geert for SoC dtsi.
> > * Added SW_GPIO9_CAN1_STB check to gpt0 node.
> > v2->v3:
> > * Added Rb tag from Rob for bindings patch
> > * Dropped wave form callback conversion from this patch series as
> > it is covered in another series[1]
> > * Added suspend/resume support.
> > v1->v2:
> > * Created separate document for RZ/G3E GPT.
> > * Updated commit header and description for binding patch.
> > * Added waveform callback conversion to this series.
> > * Collected tag.
> > * Added link to hardware manual
> > * Updated limitation section in driver patch.
> >
> > Biju Das (9):
> > pwm: rzg2l-gpt: Fix macro used for period/duty cycle conversion
> > pwm: rzg2l-gpt: Convert to waveform callbacks
> > pwm: rzg2l-gpt: Add info variable to struct rzg2l_gpt_chip
> > pwm: rzg2l-gpt: Add prescale_mult variable to struct rzg2l_gpt_info
> > pwm: rzg2l-gpt: Add calculate_prescale() callback to struct
> > rzg2l_gpt_info
> > dt-bindings: pwm: Document RZ/G3E GPT support
> > pwm: rzg2l-gpt: Add RZ/G3E support
> > dt-bindings: pwm: rzg2l-gpt: Document renesas,poegs property
> > pwm: rzg2l-gpt: Add support for gpt linking with poeg
> >
> > .../bindings/pwm/renesas,rzg2l-gpt.yaml | 23 ++
> > .../bindings/pwm/renesas,rzg3e-gpt.yaml | 323 +++++++++++++++
> > drivers/pwm/pwm-rzg2l-gpt.c | 385 ++++++++++++++----
> > 3 files changed, 643 insertions(+), 88 deletions(-) create mode
> > 100644 Documentation/devicetree/bindings/pwm/renesas,rzg3e-gpt.yaml
> >
> > --
> > 2.43.0
>
> Gentle ping.
>
> Cheers,
> Biju