Re: [PATCH net-next v2 00/21] net: ravb: Add suspend to RAM and runtime PM support for RZ/G3S

From: claudiu beznea
Date: Thu Dec 14 2023 - 06:57:01 EST




On 14.12.2023 13:45, Claudiu wrote:
> From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
>
> Hi,
>
> This series adds suspend to RAM and runtime PM support for Ethernet
> IP available on the RZ/G3S (R9A08G045) SoC.
>
> As there are IP versions that switch to module standby when disabling
> the clocks, and because of module standby IP switches to reset and
> the register content is lost, to be able to have runtime PM supported
> for all IP variants, the configuration operations were moved all to
> ravb_open()/ravb_close() letting the ravb_probe() and ravb_remove()
> to deal with resource parsing and allocation/free.
>
> The ethtool and IOCTL APIs that could have been run asyncronously
> were adapted to return if the interface is down. As explained in
> each individual commits description, this should be harmless.
>
> Along with it, the series contains preparatory cleanups.
>
> The series has been tested on the boards with the following device trees:
> - r8a7742-iwg21d-q7.dts
> - r8a774a1-hihope-rzg2m-ex.dts
> - r9a07g043u11-smarc-rzg2ul.dts
> - r9a07g054l2-smarc-rzv2l.dts
> - r9a07g044l2-smarc-rzg2l.dts

And also (I forgot to mention):
- r9a08g045s33-smarc.dts (RZ/G3S).

>
> Patches are based on series at [1].
>
> Thank you,
> Claudiu Beznea
>
> Changes in v2:
> - rework the driver (mainly, ravb_open() contains now only resource
> allocation and parsing leaving the settings to ravb_open(); ravb_remove()
> has been adapted accordingly) to be able to use runtime PM for all
> IP variants; due to this number of patches increased
> - adjust previous series to review comments
> - collected tags
> - populated driver's own runtime PM ops with enable/disable of reference
> clock
>
> [1] https://lore.kernel.org/all/20231214113137.2450292-1-claudiu.beznea.uj@xxxxxxxxxxxxxx/
>
> Claudiu Beznea (21):
> net: ravb: Let IP-specific receive function to interrogate descriptors
> net: ravb: Rely on PM domain to enable gptp_clk
> net: ravb: Make reset controller support mandatory
> net: ravb: Switch to SYSTEM_SLEEP_PM_OPS()/RUNTIME_PM_OPS() and
> pm_ptr()
> net: ravb: Use tabs instead of spaces
> net: ravb: Assert/de-assert reset on suspend/resume
> net: ravb: Move reference clock enable/disable on runtime PM APIs
> net: ravb: Move the IRQs get and request in the probe function
> net: ravb: Split GTI computation and set operations
> net: ravb: Move delay mode set in the driver's ndo_open API
> net: ravb: Move DBAT configuration to the driver's ndo_open API
> net: ravb: Move ptp initialization in the driver's ndo_open API for
> ccc_gac platorms
> net: ravb: Set config mode in ndo_open and reset mode in ndo_close
> net: ravb: Simplify ravb_suspend()
> net: ravb: Simplify ravb_resume()
> net: ravb: Keep the reverse order of operations in ravb_close()
> net: ravb: Keep clock request operations grouped together
> net: ravb: Return cached statistics if the interface is down
> net: ravb: Do not set promiscuous mode if the interface is down
> net: ravb: Do not apply RX CSUM settings to hardware if the interface
> is down
> net: ravb: Add runtime PM support
>
> drivers/net/ethernet/renesas/ravb.h | 2 +
> drivers/net/ethernet/renesas/ravb_main.c | 783 ++++++++++++-----------
> 2 files changed, 417 insertions(+), 368 deletions(-)
>