Hi Philippe, Reviewed-by: Yannick Fertré <yannick.fer...@st.com>
On 04/17/2018 01:34 PM, Philippe Cornu wrote: > When a driver related to one of the endpoints is deferred > due to probe dependencies (i2c, spi...) but the other one > is ready, ltdc probe continues and the deferred driver > will never be probed again. > > The fix consists in waiting for all deferred endpoints before > continuing the ltdc probe. > > Signed-off-by: Philippe Cornu <philippe.co...@st.com> > --- > drivers/gpu/drm/stm/ltdc.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c > index e3121d9e4230..014cef8cef37 100644 > --- a/drivers/gpu/drm/stm/ltdc.c > +++ b/drivers/gpu/drm/stm/ltdc.c > @@ -987,14 +987,13 @@ int ltdc_load(struct drm_device *ddev) > &bridge[i]); > > /* > - * If at least one endpoint is ready, continue probing, > - * else if at least one endpoint is -EPROBE_DEFER and > - * there is no previous ready endpoints, defer probing. > + * If at least one endpoint is -EPROBE_DEFER, defer probing, > + * else if at least one endpoint is ready, continue probing. > */ > - if (!ret) > + if (ret == -EPROBE_DEFER) > + return ret; > + else if (!ret) > endpoint_not_ready = 0; > - else if (ret == -EPROBE_DEFER && endpoint_not_ready) > - endpoint_not_ready = -EPROBE_DEFER; > } > > if (endpoint_not_ready) >