Re: [PATCH v2 net-next] net: ethernet: ti: davinci_mdio: Add workaround for errata i2329

From: Ravi Gunasekaran
Date: Fri Aug 12 2022 - 00:36:37 EST



There is atleast one device sh_eth, which is not configured for autosuspend
but uses the bit bang core in sh_mdiobb_read() and invokes regular runtime
PM functions.

And that is the point of moving it into the core. It would of just
worked for you.

If you don't feel comfortable with making this unconditional, please
put runtime pm enabled version of mdiobb_read/mdiobb_write() in the
core and swap sh_eth and any other drivers to using them.


sh_eth is not configured for autosuspend and uses only pm_runtime_put().
davinci_mdio is configured for autosuspend and it must invoke pm_runtime_mark_last_busy() before calling pm_runtime_put_autosuspend().
So it looks like, there needs to be a runtime PM version of mdiobb_read/mdiobb_write() for each pm_runtime_put_*(). As of now, it's only sh_eth which is currently using runtime PM and davinci_mdio would be the next one. So at least in this case, two variants of mdiobb_read/mdiobb_write() could be added at the moment. By checking against the dev->power.use_autosuspend flag, it is possible to support both via a single version.

That being said, I'm quite inclined towards the existing implementation, where drivers can have wrappers written around mdiobb_read/mdiobb_write(). But I might be failing to see the broader picture. If having multiple runtime PM versions of mdiobb_read/mdiobb_write() benefits many other future drivers, then I will go ahead and add the variant(s) in the bitbang core.

Please provide your views on this. Your inputs on the next course of action would be helpful.

--
Regards,
Ravi