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(-) >