Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp1787866ybn; Wed, 2 Oct 2019 23:46:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqyzUr7pFyANnxH+cBZmueGPPY5DV+nR31vJmOgbS99PJ5O5dGWG1zOT80tBAviCKMtHNglF X-Received: by 2002:a17:906:82d3:: with SMTP id a19mr6266015ejy.151.1570085211046; Wed, 02 Oct 2019 23:46:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570085211; cv=none; d=google.com; s=arc-20160816; b=A/Xvdz7X9jwlkwn1N5QnxR49OKQ01aAbdk22UvsJATiQtXhVSX2+NwkP7ZwcNrLibP UdurymrYYe0IwetqzsTSrwqyczbQDbX22Ekhct3Qtm8FZkLTiE9ru+m74qvfvrsnne/c /Pjfo7Kp46Flzkil4uNQpwv8AkFeSRGzLYCrmrWPVvaisOF84cZhgx9uL412bduh6/iq nS6SH5BzJgWtbLaVyHveTf5Kjta57vqcDVxP3pApXaB47jDa+nZ4srvuooqpeecl7XFB 4RhI4DjwK/i5l5vjeEK/cqDyjLi9Yhgtfq6xlO3eF2ZwK7fiYIjmLnzRirnBQTPSG2df Ybzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=FmdvF2g/THNcnQGDKSqudaTl2v+sgGCz1+BMHyLJ0gY=; b=b85lrBzaZXChrerVv/ySI6DpWq3egu2Nim3+4HW7rw9jXQI5BOuuAaFv92+mHvDChI +WMAwsgNz8Hp38NMUF2m3naPfCDJn9a5NoqUGxbGaXVG8aoPxWlpP5oWtmZDYjJrih39 7PvZOCfza//WX+O8aWD2mKJ164NhSVqHEl7rmDCuOQ+9SlYUbt5HkBEBssBuMWS0A8H1 hixPP1HuS0NITQKWqLAfEi2Lr7TlMSs3QlyXLeOvfQzcemazk1kjv76Fdx3QJYWzs7ok ePeIQZXjoog+zGJTM4MB5xYtb55jLo6R1mK+avp8tpxBEcWsjefop+qp3ckdPt5jLsBP wkQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=mPszV141; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y6si736477ejj.113.2019.10.02.23.46.26; Wed, 02 Oct 2019 23:46:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=mPszV141; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727611AbfJCGqF (ORCPT + 99 others); Thu, 3 Oct 2019 02:46:05 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:42184 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725497AbfJCGqF (ORCPT ); Thu, 3 Oct 2019 02:46:05 -0400 Received: by mail-pg1-f195.google.com with SMTP id z12so1114442pgp.9 for ; Wed, 02 Oct 2019 23:46:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FmdvF2g/THNcnQGDKSqudaTl2v+sgGCz1+BMHyLJ0gY=; b=mPszV141qNr70ZXPQNvwOYKLuIaFS7QQawxY1u08dqIbN+Q7YSqBu6lQG7DNB9mAh3 iFgHo8sru1tpjR8oKzSHAp/7Z4LxJp8JgpzyfAeNXI1iyddWmoW1a/zUdRE8RJlPovjL UOt1J4UlfcZo2ejyv9s6qL4zAiHN9TOI/KlsQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FmdvF2g/THNcnQGDKSqudaTl2v+sgGCz1+BMHyLJ0gY=; b=elUWHBxgEiD57OBKzMqHWHJYnY9Eft+aE7dsts45AJ9xW2KEF6naxTvQ7PxHzBd5fV 4AfDByAtCkCPPKOVlSNy4/Oa9PbL/spBN+6bAgnqyD9Oou/UwPn+rh0Lzf3tEJOUJHQb lJv3o20Kpgjit1h+PcZLeJMLp4Qu7jdWkGheAPuZXgosYASFlWN780ZV/Yd525ndD2d0 zF9ATxyQQZQJbFkEmPYR6tVCsBnXKKo4z12ORM4glL09AcQLvxUTNS4YNGnMD5H4yACE 5Is/emoW4lHftzGfARGGbE4pPm0gMDbfcnXr79fo+llewNJNdemFB+ylNspqcxZ3zJvi 8WhQ== X-Gm-Message-State: APjAAAW3/OCR4+ZD4WgVuDg1w/tueLqob5dxvSZtYUNQsowIKVeCd9/n GpuQ/kuroumY2BWhlEsBcTAIyQ== X-Received: by 2002:a17:90a:a2b:: with SMTP id o40mr8964792pjo.107.1570085164194; Wed, 02 Oct 2019 23:46:04 -0700 (PDT) Received: from localhost.localdomain ([49.206.203.121]) by smtp.gmail.com with ESMTPSA id b18sm1423294pfi.157.2019.10.02.23.46.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Oct 2019 23:46:03 -0700 (PDT) From: Jagan Teki To: Maxime Ripard , Chen-Yu Tsai , David Airlie , Daniel Vetter Cc: michael@amarulasolutions.com, Icenowy Zheng , linux-sunxi , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jagan Teki Subject: [PATCH v11 1/7] drm/sun4i: dsi: Fix TCON DRQ set bits Date: Thu, 3 Oct 2019 12:15:21 +0530 Message-Id: <20191003064527.15128-2-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.18.0.321.gffc6fa0e3 In-Reply-To: <20191003064527.15128-1-jagan@amarulasolutions.com> References: <20191003064527.15128-1-jagan@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The LCD timing definitions between Linux DRM vs Allwinner are different, below diagram shows this clear differences. Active Front Sync Back Region Porch Porch <-----------------------><----------------><--------------><--------------> //////////////////////| ////////////////////// | ////////////////////// |.................. ................ ________________ <----- [hv]display -----> <------------- [hv]sync_start ------------> <--------------------- [hv]sync_end ----------------------> <-------------------------------- [hv]total ------------------------------> <----- lcd_[xy] --------> <- lcd_[hv]spw -> <---------- lcd_[hv]bp ---------> <-------------------------------- lcd_[hv]t ------------------------------> The DSI driver misinterpreted the hbp term from the BSP code to refer only to the backporch, when in fact it was backporch + sync. Thus the driver incorrectly used the horizontal front porch plus sync in its calculation of the DRQ set bit value, when it should not have included the sync timing. Including additional sync timings leads to flip_done timed out as: WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0 [CRTC:46:crtc-0] vblank wait timed out Modules linked in: CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00026-g01f0c75b902d-dirty #13 Hardware name: Allwinner sun8i Family Workqueue: events deferred_probe_work_func [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [] (show_stack) from [] (dump_stack+0x84/0x98) [] (dump_stack) from [] (__warn+0xfc/0x114) [] (__warn) from [] (warn_slowpath_fmt+0x44/0x68) [] (warn_slowpath_fmt) from [] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0) [] (drm_atomic_helper_wait_for_vblanks.part.1) from [] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c) [] (drm_atomic_helper_commit_tail_rpm) from [] (commit_tail+0x40/0x6c) [] (commit_tail) from [] (drm_atomic_helper_commit+0xbc/0x128) [] (drm_atomic_helper_commit) from [] (restore_fbdev_mode_atomic+0x1cc/0x1dc) [] (restore_fbdev_mode_atomic) from [] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0) [] (drm_fb_helper_restore_fbdev_mode_unlocked) from [] (drm_fb_helper_set_par+0x30/0x54) [] (drm_fb_helper_set_par) from [] (fbcon_init+0x560/0x5ac) [] (fbcon_init) from [] (visual_init+0xbc/0x104) [] (visual_init) from [] (do_bind_con_driver+0x1b0/0x390) [] (do_bind_con_driver) from [] (do_take_over_console+0x13c/0x1c4) [] (do_take_over_console) from [] (do_fbcon_takeover+0x74/0xcc) [] (do_fbcon_takeover) from [] (notifier_call_chain+0x44/0x84) [] (notifier_call_chain) from [] (__blocking_notifier_call_chain+0x48/0x60) [] (__blocking_notifier_call_chain) from [] (blocking_notifier_call_chain+0x18/0x20) [] (blocking_notifier_call_chain) from [] (register_framebuffer+0x1e0/0x2f8) [] (register_framebuffer) from [] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c) [] (__drm_fb_helper_initial_config_and_unlock) from [] (drm_fbdev_client_hotplug+0xe8/0x1b8) [] (drm_fbdev_client_hotplug) from [] (drm_fbdev_generic_setup+0x88/0x118) [] (drm_fbdev_generic_setup) from [] (sun4i_drv_bind+0x128/0x160) [] (sun4i_drv_bind) from [] (try_to_bring_up_master+0x164/0x1a0) [] (try_to_bring_up_master) from [] (__component_add+0x94/0x140) [] (__component_add) from [] (sun6i_dsi_probe+0x144/0x234) [] (sun6i_dsi_probe) from [] (platform_drv_probe+0x48/0x9c) [] (platform_drv_probe) from [] (really_probe+0x1dc/0x2c8) [] (really_probe) from [] (driver_probe_device+0x60/0x160) [] (driver_probe_device) from [] (bus_for_each_drv+0x74/0xb8) [] (bus_for_each_drv) from [] (__device_attach+0xd0/0x13c) [] (__device_attach) from [] (bus_probe_device+0x84/0x8c) [] (bus_probe_device) from [] (deferred_probe_work_func+0x64/0x90) [] (deferred_probe_work_func) from [] (process_one_work+0x204/0x420) [] (process_one_work) from [] (worker_thread+0x274/0x5a0) [] (worker_thread) from [] (kthread+0x11c/0x14c) [] (kthread) from [] (ret_from_fork+0x14/0x2c) Exception stack(0xde539fb0 to 0xde539ff8) 9fa0: 00000000 00000000 00000000 00000000 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 ---[ end trace b57eb1e5c64c6b8b ]--- random: fast init done [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out With the terms(as described in above diagram) fixed, the panel displays correctly without any timeouts. Tested-by: Merlijn Wajer Signed-off-by: Jagan Teki --- drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c index 1636344ba9ec..f83522717488 100644 --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c @@ -437,9 +437,9 @@ static void sun6i_dsi_setup_burst(struct sun6i_dsi *dsi, SUN6I_DSI_BURST_LINE_SYNC_POINT(SUN6I_DSI_SYNC_POINT)); val = SUN6I_DSI_TCON_DRQ_ENABLE_MODE; - } else if ((mode->hsync_end - mode->hdisplay) > 20) { + } else if ((mode->hsync_start - mode->hdisplay) > 20) { /* Maaaaaagic */ - u16 drq = (mode->hsync_end - mode->hdisplay) - 20; + u16 drq = (mode->hsync_start - mode->hdisplay) - 20; drq *= mipi_dsi_pixel_format_to_bpp(device->format); drq /= 32; -- 2.18.0.321.gffc6fa0e3