Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp1789771ybn; Wed, 2 Oct 2019 23:49:22 -0700 (PDT) X-Google-Smtp-Source: APXvYqxTNxb7na/UPeU36c1fDHRqbsw7fHsP+LPwlOZD6VYVxqVmonnTOWQq4sbkP1oWRrPP6u6x X-Received: by 2002:a50:eb8b:: with SMTP id y11mr7669312edr.200.1570085362638; Wed, 02 Oct 2019 23:49:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570085362; cv=none; d=google.com; s=arc-20160816; b=vCdvW6x/M5b0kvJwaxYQXthslWxDneXvCPJ+X+x/GOSfWHalpbI5Pz6IWSZuuhs3WF OCePGNbCiG0MTgzg7id8t1sLqLMc6TEyWH/RUkUJu6BXV3UwbvpfK+nHBgT22/SSszR7 Z2yWU7Mm3kgp9Xfpn9ha6XMiMzYEKO4ykJ2PC6AvrgEWe1PXeaPwnTNbjtn8dueQpouF g4uW4fTil1CSeCjcYX9fubHKuSuAfBacY7bQ4mvcbHzKg8RJQVbfXJyUZ366mPJ/bLNF /bSGbJG5naHFMhT88HjWaUjPhPw+yQONr18JXTBT+OM5/BvYy0JieKiKor5vzQUrl4w1 4t5Q== 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=ZBYzNQrrCI+/d9BDyqt6dmiGAFdmQJ5LcStNQH+f9vk=; b=LRziauGxVG6Ht7MAxXdlIoXBQGfzgAL0JRRXXEyiwfYZAxNtNsjQYf8seM9l7S+t6T 5g3RRNhWXjpnFqIk2wR/0XvCKATpLw7VYwrVJvmnI+NXT8nlQeEf7LbE/wtMbLA7uki9 LsWcolq+//+0VmCw/DpypFP6MSHQCYYTLnWHbN4jS9UvfS+rZp2E9cugVZ/WF8shX/yw aEFuv2Jb9pnKmHGyYrwKLvR2cIwiH65r5Bl3O+GW2OjEoy92IYw6r19nWnoQ2m1m1Ldw XA9ZCJkRPP/uby1WBNelV01JVLWw+99G2aVnGmiZIFM1hfxCX9I6uLk5tmzOYDMpd4Bp JznA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=Iki2atwP; 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 m55si949608edc.17.2019.10.02.23.48.54; Wed, 02 Oct 2019 23:49:22 -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=Iki2atwP; 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 S1727831AbfJCGqN (ORCPT + 99 others); Thu, 3 Oct 2019 02:46:13 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:45074 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727789AbfJCGqM (ORCPT ); Thu, 3 Oct 2019 02:46:12 -0400 Received: by mail-pg1-f195.google.com with SMTP id q7so1099782pgi.12 for ; Wed, 02 Oct 2019 23:46:12 -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=ZBYzNQrrCI+/d9BDyqt6dmiGAFdmQJ5LcStNQH+f9vk=; b=Iki2atwP++jngWkgd/oyQfLKI6P2KdEDs3m/1JI4TZpay8OMRqq3po8gbUurBi6un1 gIiOhqhG5TqrUwCbYqzyRf8ett7wVmwOkiZOka3NSjYBmjxzkIgbnBNHdfIyV77eSnUw 260Gy+jyfS1F7qZTeL22jyCEQMDBUU4FQGk64= 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=ZBYzNQrrCI+/d9BDyqt6dmiGAFdmQJ5LcStNQH+f9vk=; b=jS84uz/38nYN8rjs5FvIaW0rMd4LJ73flZ1Gvc5VGFgenlFHzU3yBPu6LHTEiCXQBD MptEr8MXoN4fZ+HPSahFRsIo5WVx7JPGnv0i82zG62CVkkMoaDDHL/Tfy5lB93afthDk 7EaSkZssf27Jf2ROxTZ9eKhK/AANNK5A1rNQkKtCG8SR5umHhZrzW8bmLweA08aiRsRf oFymQRjdtfS/4VyyXXiL7bf5rWYUj1uDZNUdoEiEfDXAGA7nNMGvNCWtVHi3lCxSfhqt 6mxOTpM7SH2mYNma3eABIolo33flKQrnuu7RMiPy5oCjlHaCZzsQHNGHP8yMsTpoviNn x97g== X-Gm-Message-State: APjAAAW+PkhO4DsJMdvPy2ewPY7KXQTIW4i/WaMsJrgd813ocAxIIxCZ BIDigi8tFAD7B6ikAfeQN+Fq/g== X-Received: by 2002:a17:90a:77c9:: with SMTP id e9mr8524950pjs.99.1570085171525; Wed, 02 Oct 2019 23:46:11 -0700 (PDT) Received: from localhost.localdomain ([49.206.203.121]) by smtp.gmail.com with ESMTPSA id b18sm1423294pfi.157.2019.10.02.23.46.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Oct 2019 23:46:11 -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 3/7] drm/sun4i: dsi: Fix video start delay computation Date: Thu, 3 Oct 2019 12:15:23 +0530 Message-Id: <20191003064527.15128-4-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 vbp term from the BSP code to refer only to the backporch, when in fact it was backporch + sync. Thus the driver incorrectly used the vertical 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-00029-g09e5b0ed0a58 #18 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 495200a78b24980e ]--- 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c index c9c99c52bf1e..446dc56cc44b 100644 --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c @@ -376,7 +376,7 @@ static u16 sun6i_dsi_get_video_start_delay(struct sun6i_dsi *dsi, * working in DSI panels available in mainline. */ u8 start = 1; - u16 delay = mode->vtotal - (mode->vsync_end - mode->vdisplay) + start; + u16 delay = mode->vtotal - (mode->vsync_start - mode->vdisplay) + start; if (delay > mode->vtotal) delay = delay % mode->vtotal; -- 2.18.0.321.gffc6fa0e3