From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751932AbdF2JZC (ORCPT ); Thu, 29 Jun 2017 05:25:02 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:19248 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751557AbdF2JYy (ORCPT ); Thu, 29 Jun 2017 05:24:54 -0400 X-AuditID: cbfec7f1-f796e6d00000116b-c8-5954c763163b Subject: Re: [PATCH 3/8] drm/vc4: Use drm_mode_vrefresh() in DSI fixup, in case vrefresh is 0. To: Eric Anholt , dri-devel@lists.freedesktop.org, Archit Taneja , Laurent Pinchart , Thierry Reding Cc: linux-kernel@vger.kernel.org From: Andrzej Hajda Message-id: <8b4ae413-7bc9-9b7d-ae7f-55993dc7f09d@samsung.com> Date: Thu, 29 Jun 2017 11:24:49 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-version: 1.0 In-reply-to: <20170627195839.3338-4-eric@anholt.net> Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 7bit Content-language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA02Se0iTURjGO9t3c7j8nJYvdpNFmF1MrWCmiIHUIqhAA1dWfuiXSup0n46M /vCSMrVSZ5FN0RiapEY5dahgmokzE0pMQdAJXUQE74az0nI7Cv73Ozzned73ORxGLHtFejIJ yWm8JplLlFMSwty7+vl4jCVC5Wfrc1Fk62ZIxddfc5SiK2sIKfJLqmnFUHsFpVhtryRCKWX2 XC+lHHr8SKRsM4zTynLdc1I5UWgRKZdM+69Q1yTBsXxigpbXnAiJlsTP62rpFKPz3bIeHZmJ 8iQFyIkB9hR8nJ0WY94NX6xvKDvL2BoErS3qAiTZ4CUE5jU9tWVYqXtAYOElAlvRAIkPkwiq cusdUW5sNJRW/nUI7uwggpLREtouiFkv+G01kXamWB9Yaxp1xErZEOg0TiI7E+whmPr5zxG0 i40Eox57pawr2EqtG6MZxmljjZoKCY70gallPYH5ADQ1zIgxe0BO7iiBtzbTUFl70W4Fdh+Y ujYbh0HB20GE2Q2mLc005r2Qr3svsq8PbCGCxaI+Gh+eIFifL9t0B8EHyyCJh+0EvfmZGA+Q gi5Phq8oYXi5VYT5LGSVWWn8WI0IpqvHiWLkZdhWzbCtj2FbH8O2Pi8QUYfc+XQhKY4XAnwF LklIT47zjVEnmdDGB/q0blloRXN9Z7oRyyC5s3TH63CVjOS0QkZSNwJGLHeXns+MUMmksVzG PV6jvqVJT+SFbrSHIeQeUkn/SKSMjePS+Ds8n8JrtlQR4+SZiUyBYbedbl5YPHyy+B0kBhf+ GQmQ1jVFGdn7Ld8WOs8ZY4cHspo9LmnHlspt3+cCqY7+gJzLqoc34hqO8i7chKUxcCqoxy93 sG+8t812cCo3tV7rv+Ltbez4oXaLr1r3t4amNkaFU5FjQ8NXbddbe70yNTXHXFeWtKr+4dMZ s0/lhBDP+R8RawTuP4Ukxlg8AwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOIsWRmVeSWpSXmKPExsVy+t/xa7pJx0MiDT7eM7Bo6njLanHl63s2 iwONlxktOicuYbe4vGsOm8XPXfNYHNg8mt4fY/O43NfL5LFz1l12j9kdM1k97ncfZ/L4vEku gC3KzSYjNTEltUghNS85PyUzL91WKTTETddCSSEvMTfVVilC1zckSEmhLDGnFMgzMkADDs4B 7sFK+nYJbhkfOpazFyziqZhxpIO1gbGNq4uRk0NCwETi+6oWFghbTOLCvfVsXYxcHEICSxgl bn7vZ4RwnjFKvFp1mh2kSlggQeL+4a9MILaIwEVGiTP/bEFsZgEFiV/3NrFCNGxklJi88SBY A5uApsTfzTfZQGxeATuJ/YueMYLYLAKqEi+e/mcGsUUFIiR2XT/AClEjKPFj8j2gkzg4OIHO WzqHC8RkFlCXmDIlF2KVvMTmNW+ZIWxxiebWmywTGAVnIWmehdAxC0nHLCQdCxhZVjGKpJYW 56bnFhvqFSfmFpfmpesl5+duYgRG4rZjPzfvYLy0MfgQowAHoxIP74pVwZFCrIllxZW5hxgl OJiVRHjdG0IihXhTEiurUovy44tKc1KLDzGaAn02kVlKNDkfmCTySuINTQzNLQ2NjC0szI2M lMR5Sz5cCRcSSE8sSc1OTS1ILYLpY+LglGpgdDi9JS5tfXvL/EU/7y3d7D091EGbl+Vqjfci nvilP3d03jpQtGPrg9XPOmr7Zih9vV5tYFzOOzvTsWjxKpmjFq9eSuo8VZT/mdT660/oVFPN U4Jfq/gdhFxs7h/+vShVfY9m0raO2RWRN7Qu9C57dUDO9O70K0ukJi3nmM8fYHNgcmdmg/dK AyWW4oxEQy3mouJEAEdYWCDaAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170629092450eucas1p1fb68c16e894840cba7a17e7f4d7a4485 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRvsgrw=?= =?UTF-8?B?7ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRtTYW1z?= =?UTF-8?B?dW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170627195915epcas4p262e067aa79edabe2fe0d7d95e85eace5 X-RootMTR: 20170627195915epcas4p262e067aa79edabe2fe0d7d95e85eace5 References: <20170627195839.3338-1-eric@anholt.net> <20170627195839.3338-4-eric@anholt.net> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 27.06.2017 21:58, Eric Anholt wrote: > I'm not sure what changed where I started getting vrefresh=0 from the > mode to be fixed up. It can be a case of low pixel_clock value, maybe it should be investigated further, unless there is execution path with forgotten mode->vrefresh = drm_mode_vrefresh(mode) > > Signed-off-by: Eric Anholt > --- > drivers/gpu/drm/vc4/vc4_dsi.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c > index 629d372633e6..fca4d7fd677e 100644 > --- a/drivers/gpu/drm/vc4/vc4_dsi.c > +++ b/drivers/gpu/drm/vc4/vc4_dsi.c > @@ -866,7 +866,9 @@ static bool vc4_dsi_encoder_mode_fixup(struct drm_encoder *encoder, > adjusted_mode->clock = pixel_clock_hz / 1000 + 1; > > /* Given the new pixel clock, adjust HFP to keep vrefresh the same. */ > - adjusted_mode->htotal = pixel_clock_hz / (mode->vrefresh * mode->vtotal); > + adjusted_mode->htotal = pixel_clock_hz / (drm_mode_vrefresh(mode) * > + mode->vtotal); > + I am not sure but I guess division by zero is also possible here. I do not know if you need to handle interlaced/dblscan/vscan modes, but maybe it would be safer to calculate adjusted_htotal according to: adjusted_mode->htotal = pixel_clock_hz * mode->htotal / (mode->clock * 1000) or sth similar. Regards Andrzej > adjusted_mode->hsync_end += adjusted_mode->htotal - mode->htotal; > adjusted_mode->hsync_start += adjusted_mode->htotal - mode->htotal; >