[PATCH] drm/stm: ltdc: Silence -EPROBE_DEFER till bridge attached
Philippe CORNU
philippe.cornu at foss.st.com
Mon Jul 19 13:40:19 UTC 2021
On 7/13/21 6:43 PM, Philippe CORNU wrote:
> Hi Jagan,
>
> On 7/4/21 3:59 PM, Jagan Teki wrote:
>> 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 at amarulasolutions.com>
>> ---
>> drivers/gpu/drm/stm/ltdc.c | 8 +++++---
>> 1 file changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c
>> index 08b71248044d..95e983d3ffb5 100644
>> --- a/drivers/gpu/drm/stm/ltdc.c
>> +++ b/drivers/gpu/drm/stm/ltdc.c
>> @@ -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 at foss.st.com>
>
> I will merge it friday or early next week,
>
> Thank you
> Philippe :-)
>
>
>> + return ret;
>> }
>> DRM_DEBUG_DRIVER("Bridge encoder:%d created\n", encoder->base.id);
>> @@ -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 :-)
More information about the dri-devel
mailing list