[PATCH v9 16/22] drm/mediatek: add ETHDR support for MT8195
Nancy.Lin
nancy.lin at mediatek.com
Tue Dec 7 17:53:25 PST 2021
Hi Philipp,
Thanks for the review.
On Tue, 2021-11-30 at 10:46 +0100, Philipp Zabel wrote:
> Hi Nancy,
>
> On Tue, 2021-11-30 at 11:35 +0800, Nancy.Lin wrote:
> [...]
> > +void mtk_ethdr_stop(struct device *dev)
> > +{
> > + struct mtk_ethdr *priv = dev_get_drvdata(dev);
> > + struct mtk_ethdr_comp *mixer = &priv->ethdr_comp[ETHDR_MIXER];
> > +
> > + writel(0, mixer->regs + MIX_EN);
> > + writel(1, mixer->regs + MIX_RST);
> > + reset_control_reset(devm_reset_control_array_get(dev, true,
> > true));
>
> Are these reset lines really shared with other hardware units, and
> more
> specifically, are there other drivers that also try to control them?
>
> If so, please use devm_reset_control_array_get_optional_shared().
>
> Otherwise use devm_reset_control_array_get_optional_exclusive()
> instead.
>
> If you really need to share the reset line with other hardware and
> have
> to trigger it more than once, the only use case supported by the
> reset
> framework is to use reset_control_reset() before starting the
> hardware
> for each user and then reset_control_rearm() after stopping it for
> all
> users (see [1]). That would both stop the reset from being triggered
> while the hardware is active (before last _rearm) and allow another
> reset once after all hardware is stopped.
>
> [1]
> https://urldefense.com/v3/__https://www.kernel.org/doc/html/latest/driver-api/reset.htm*triggering__;Iw!!CTRNKA9wMg0ARbw!zETfuA55cH_3uiTFEknFoWXKkApsSKFbemms9qLwluMdylp-FVK3jn5E9Ld1ZCwv$
>
>
> Also, request the reset control once in the probe function, not every
> time ETHDR is stopped. Otherwise you'll end up leaking devres memory
>
> regards
> Philipp
These reset lines doesn't share with other hardware units. I will use
devm_reset_control_array_get_optional_exclusive instead and and reqest
reset control in the probe function.
Regards,
Nancy
More information about the Linux-mediatek
mailing list