On Tue, Aug 20, 2019 at 08:07:53AM -0500, Samuel Holland wrote: > On 8/20/19 6:18 AM, Ondřej Jirman wrote: > >> + reset = devm_reset_control_get(dev, NULL); > >> + if (IS_ERR(reset)) { > >> + ret = PTR_ERR(reset); > >> + dev_err(dev, "Failed to get reset control: %d\n", ret); > >> + goto err_disable_unprepare; > >> + } > >> + > >> + ret = reset_control_deassert(reset); > >> + if (ret) { > >> + dev_err(dev, "Failed to deassert reset: %d\n", ret); > >> + goto err_disable_unprepare; > >> + } > > > > You need to assert the reset again from now on, in error paths. devm > > will not do that for you. > > I know, and that's intentional. This same message box device is used for ATF > to > communicate with SCP firmware (on a different channel). This could be > happening > on a different core while Linux is running. So Linux is not allowed to > deassert > the reset. clk_disable_unprepare() is only okay because the clock is marked as > critical.
I agree with Ondrej that since this is clearly not the standard use of the API, this must have a big comment explaining why we're doing it this way. Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscr...@googlegroups.com. To view this discussion on the web, visit https://groups.google.com/d/msgid/linux-sunxi/20190821123035.tl4aakijjhw3bwbk%40flea.
signature.asc
Description: PGP signature