[PATCH] reset: fix shared reset triggered_count decrement on error
martin.blumenstingl at googlemail.com
Wed Feb 15 12:09:12 PST 2017
ouch, thanks for spotting and fixing this!
On Wed, Feb 15, 2017 at 7:15 PM, Jerome Brunet <jbrunet at baylibre.com> wrote:
> For a shared reset, when the reset is successful, the triggered_count is
> incremented when trying to call the reset callback, so that another device
> sharing the same reset line won't trigger it again. If the reset has not
> been triggered successfully, the trigger_count should be decremented.
> The code does the opposite, and decrements the trigger_count on success.
> As a consequence, another device sharing the reset will be able to trigger
> it again.
> Fixed be removing negation in from of the error code of the reset function.
> Fixes: 7da33a37b48f ("reset: allow using reset_control_reset with shared reset")
> Signed-off-by: Jerome Brunet <jbrunet at baylibre.com>
Acked-by: Martin Blumenstingl <martin.blumenstingl at googlemail.com>
should this still go into 4.10?
I guess the meson8b-usb2 PHY driver is the only user of the shared
reset pulse, but if there are other users out there then these may
face strange issues as well!
> Hi Philipp,
> I found this issue while testing your patch 
> It fixes a regression we have been having with usb. On meson-gxbb
> platforms, usb0 and usb1 share the same reset line. Martin had
> reports that usb0 recently got broken. In fact usb1 was able to
> trigger the reset again because the issue mentioned above.
> : http://email@example.com
> drivers/reset/core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> diff --git a/drivers/reset/core.c b/drivers/reset/core.c
> index 71ccf281dce3..f1e5e65388bb 100644
> --- a/drivers/reset/core.c
> +++ b/drivers/reset/core.c
> @@ -169,7 +169,7 @@ int reset_control_reset(struct reset_control *rstc)
> ret = rstc->rcdev->ops->reset(rstc->rcdev, rstc->id);
> - if (rstc->shared && !ret)
> + if (rstc->shared && ret)
> return ret;
More information about the linux-amlogic