[PATCH v5 00/17] i3c: renesas: Suspend to RAM with power loss and runtime PM

Tommaso Merciai tommaso.merciai.xr at bp.renesas.com
Mon Jul 13 10:26:02 PDT 2026


Hi Claudiu,
Thanks for your patch.

On Mon, Jul 13, 2026 at 04:05:28PM +0300, Claudiu Beznea wrote:
> From: Claudiu Beznea <claudiu.beznea.uj at bp.renesas.com>
> 
> Hi,
> 
> This series adjusts the suspend to RAM code to handle cases where power
> to the connected devices is lost during suspend to RAM. The fixes
> included in this series are required for that support.
> 
> Along with suspend to RAM support, runtime PM support is also added.
> Cleanup patches were included to prepare for clean runtime PM support.
> 
> Thank you,
> Claudiu
> 
> Changes in v5:
> - in patch 1 introduced renesas_i3c_irqs_mask_and_clear_locked()
>   similar to what was present in v4 in patch
>   "i3c: renesas: Add runtime PM support" but without locking; use the
>   same function to mask all the interrupts and cleanup the status
>   flag in case interrupts are triggered after the transfer completion
>   timed out
> - introduce patch "i3c: renesas: Fix out-of-bounds access for newdevs mask"
>   to avoid failures when there are no I3C devices connected on the
>   bus at probe
> - patch "i3c: renesas: Perform Dynamic Address Assignment on resume"
>   was restored to the v1 variant; kept it simple to fix the
>   suspend/resume for the moment

Tested on RZ/G3E SMARC CARRIER II + RZ SMARC BREAKOUT board with one
P3T1085UK-ARD board connected.

Tested-by: Tommaso Merciai <tommaso.merciai.xr at bp.renesas.com>


Kind Regards,
Tommaso


> 
> Changes in v4:
> - dropped patch "i3c: renesas: Do not attach devices if xfer failed"
> - fixed the swap in renesas_i3c_group_devs_in_slots() for i3c->addr[]
>   renesas_i3c_irqs_mask_and_clear();
> - in patch 16/16 renamed renesas_i3c_abort_xfer() from v3 to
> 	
> Changes in v3:
> - re-based on top of series [1] to be able to use
>   i3c_master_reattach_i3c_dev_locked()
> - used i3c_master_reattach_i3c_dev_locked() on patch
>   "i3c: renesas: Perform Dynamic Address Assignment on resume" along with
>   grouping the I2C and I3C devices in the driver slot
> - collected tags
> 
> Changes in v2:
> - dropped patch "i3c: renesas: Use the divider 128"
> - adjusted the patches title and description where requested in the
>   review process
> - adjusted the DAA procedure after resume to still properly re-configure
>   the controller in case the bus was full before a suspend
> - added patch "i3c: renesas: Do not attach devices if xfer failed"
> - collected tags
> 
> Claudiu Beznea (17):
>   i3c: renesas: Check that the transfer is valid before accessing it
>   i3c: renesas: Restore STDBR and EXTBR registers on resume
>   i3c: renesas: Follow the reset deassert order used in probe
>   i3c: renesas: Reconfigure the DATBAS register on re-attach
>   i3c: renesas: Reset the controller on resume
>   i3c: renesas: Perform Dynamic Address Assignment on resume
>   i3c: renesas: Clean DATBAS register on detach
>   i3c: renesas: Fix out-of-bounds access for newdevs mask
>   i3c: renesas: Use reset_control_bulk_{assert, deassert}()
>   i3c: renesas: Return immediately if there is no transfer
>   i3c: renesas: Follow a unified pattern for transfer and command
>     initialization
>   i3c: renesas: Drop the explicit memset() call
>   i3c: renesas: Update HW registers after SW computations are done
>   i3c: renesas: Organize structures to avoid unnecessary padding
>   i3c: renesas: Use the "dev_name:irq_name" format for the interrupt
>     name
>   i3c: renesas: Drop unnecessary tab
>   i3c: renesas: Add runtime PM support
> 
>  drivers/i3c/master/renesas-i3c.c | 375 +++++++++++++++++++++----------
>  1 file changed, 261 insertions(+), 114 deletions(-)
> 
> -- 
> 2.43.0
> 



More information about the linux-i3c mailing list