From: Jagan Teki <jagan@amarulasolutions.com> Date: 2021-07-04 14:01:45
As dw-mipi-dsi supported all possible ways to find the DSI
devices. It can take multiple iterations for ltdc to find
all components attached to the DSI bridge.
The current ltdc driver failed to find the endpoint as
it returned -EINVAL for the first iteration itself. This leads
to following error:
[ 3.099289] [drm:ltdc_load] *ERROR* init encoder endpoint 0
So, check the return value and cleanup the encoder only if it's
not -EPROBE_DEFER. This make all components in the attached DSI
bridge found properly.
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
drivers/gpu/drm/stm/ltdc.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Hi Jagan,
thanks for the patch.
Tested-by: Yannick Fertre <yannick.fertre@foss.st.com>
On 7/4/21 3:59 PM, Jagan Teki wrote:
quoted hunk
As dw-mipi-dsi supported all possible ways to find the DSI
devices. It can take multiple iterations for ltdc to find
all components attached to the DSI bridge.
The current ltdc driver failed to find the endpoint as
it returned -EINVAL for the first iteration itself. This leads
to following error:
[ 3.099289] [drm:ltdc_load] *ERROR* init encoder endpoint 0
So, check the return value and cleanup the encoder only if it's
not -EPROBE_DEFER. This make all components in the attached DSI
bridge found properly.
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
drivers/gpu/drm/stm/ltdc.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
From: Philippe CORNU <philippe.cornu@foss.st.com> Date: 2021-07-13 16:45:41
Hi Jagan,
On 7/4/21 3:59 PM, Jagan Teki wrote:
quoted hunk
As dw-mipi-dsi supported all possible ways to find the DSI
devices. It can take multiple iterations for ltdc to find
all components attached to the DSI bridge.
The current ltdc driver failed to find the endpoint as
it returned -EINVAL for the first iteration itself. This leads
to following error:
[ 3.099289] [drm:ltdc_load] *ERROR* init encoder endpoint 0
So, check the return value and cleanup the encoder only if it's
not -EPROBE_DEFER. This make all components in the attached DSI
bridge found properly.
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
drivers/gpu/drm/stm/ltdc.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Many thanks for your patch.
This means that we are counting on the future success of the deferred
probe because we do not clean the encoder...
However, Yannick gave his "Tested-by" and this patch seems useful so
Acked-by: Philippe Cornu <philippe.cornu@foss.st.com>
I will merge it friday or early next week,
Thank you
Philippe :-)
From: Philippe CORNU <philippe.cornu@foss.st.com> Date: 2021-07-19 13:42:39
On 7/13/21 6:43 PM, Philippe CORNU wrote:
Hi Jagan,
On 7/4/21 3:59 PM, Jagan Teki wrote:
quoted
As dw-mipi-dsi supported all possible ways to find the DSI
devices. It can take multiple iterations for ltdc to find
all components attached to the DSI bridge.
The current ltdc driver failed to find the endpoint as
it returned -EINVAL for the first iteration itself. This leads
to following error:
[ 3.099289] [drm:ltdc_load] *ERROR* init encoder endpoint 0
So, check the return value and cleanup the encoder only if it's
not -EPROBE_DEFER. This make all components in the attached DSI
bridge found properly.
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
drivers/gpu/drm/stm/ltdc.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
@@ -1122,8 +1122,9 @@ static int ltdc_encoder_init(struct drm_device
*ddev, struct drm_bridge *bridge)
ret = drm_bridge_attach(encoder, bridge, NULL, 0);
if (ret) {
- drm_encoder_cleanup(encoder);
- return -EINVAL;
+ if (ret != -EPROBE_DEFER)
+ drm_encoder_cleanup(encoder);
Many thanks for your patch.
This means that we are counting on the future success of the deferred
probe because we do not clean the encoder...
However, Yannick gave his "Tested-by" and this patch seems useful so
Acked-by: Philippe Cornu <philippe.cornu@foss.st.com>
I will merge it friday or early next week,
Thank you
Philippe :-)
@@ -1266,7 +1267,8 @@ int ltdc_load(struct drm_device *ddev)
if (bridge) {
ret = ltdc_encoder_init(ddev, bridge);
if (ret) {
- DRM_ERROR("init encoder endpoint %d\n", i);
+ if (ret != -EPROBE_DEFER)
+ DRM_ERROR("init encoder endpoint %d\n", i);
goto err;
}
}
Applied on drm-misc-next.
Many thanks for your patch,
Philippe :-)
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel