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