[Letux-kernel] [PATCH letux] panel-boe-w667l: hack-fix disapble oopses

H. Nikolaus Schaller hns at goldelico.com
Sat Dec 1 09:36:43 CET 2018


Hi Andreas,

> Am 01.12.2018 um 09:04 schrieb Andreas Kemnade <andreas at kemnade.info>:
> 
> Hi,
> 
> panel-dsi-cm also seems not to do in->opes->disable(),
> so maybe it should really be removed.

Yes, that should be right.

There are two aspects:
1. calling in->ops->disable is (was?) needed when chaining the panel behind the ssd2258 rotator chip so that it is informed about panel disable
2. there was a big change in 4.20-rc1 how in and in->ops are set up and passed down to panel drivers

The panel-dsi-cm is not prepared for such encoder chaining.

So it might or might not be necessary to keep it. All this is something which I wasn't able to debug so far.

Of course we should not call in->ops->disable if in->ops == NULL :)

So I will add your patch at least for debugging.

BR,
Nikolaus

> 
> Regards,
> Andreas
> 
> On Fri, 30 Nov 2018 23:09:09 +0100
> Andreas Kemnade <andreas at kemnade.info> wrote:
> 
>> no idea if this is right, what the real fix is.
>> depends on:
>> https://patchwork.kernel.org/cover/10692757/
>> 
>> Signed-off-by: Andreas Kemnade <andreas at kemnade.info>
>> ---
>> drivers/gpu/drm/omapdrm/displays/panel-boe-w677l.c | 10 +++++++++-
>> 1 file changed, 9 insertions(+), 1 deletion(-)
>> 
>> diff --git a/drivers/gpu/drm/omapdrm/displays/panel-boe-w677l.c b/drivers/gpu/drm/omapdrm/displays/panel-boe-w677l.c
>> index 5db180711d79..b3a86d66b028 100644
>> --- a/drivers/gpu/drm/omapdrm/displays/panel-boe-w677l.c
>> +++ b/drivers/gpu/drm/omapdrm/displays/panel-boe-w677l.c
>> @@ -786,16 +786,24 @@ static void w677l_disable(struct omap_dss_device *dssdev)
>> 
>> 	ddata->enabled = 0;
>> 	in->ops->dsi.disable_video_output(in, ddata->pixel_channel);
>> -	in->ops->disable(in);
>> +	dev_dbg(&ddata->pdev->dev, "disabled video()\n");
>> +	if (in->ops->disable) {
>> +		in->ops->disable(in);
>> +	} else {
>> +		dev_dbg(&ddata->pdev->dev, "no disable op??\n");
>> +	}
>> +	dev_dbg(&ddata->pdev->dev, "disabled in()\n");
>> 	mdelay(10);
>> 	w677l_reset(dssdev, true);	/* activate reset */
>> 	w677l_regulator(dssdev, false);	/* switch power off - after stopping video stream */
>> 	mdelay(20);
>> 	/* here we can also power off IOVCC */
>> 
>> +	dev_dbg(&ddata->pdev->dev, "unlock bus()\n");
>> 	in->ops->dsi.bus_unlock(in);
>> 
>> 	mutex_unlock(&ddata->lock);
>> +	dev_dbg(&ddata->pdev->dev, "disable finished)\n");
>> 
>> 	dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>> }
> 
> _______________________________________________
> http://projects.goldelico.com/p/gta04-kernel/
> Letux-kernel mailing list
> Letux-kernel at openphoenux.org
> http://lists.goldelico.com/mailman/listinfo.cgi/letux-kernel



More information about the Letux-kernel mailing list