Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp6443962ybi; Wed, 5 Jun 2019 00:50:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqz01GeIAmDcWxlHaD1go/73a5/iieMQwkg37+Qh3nE0qd0GXV9DYyMql8x1wxDlDkbVNLAq X-Received: by 2002:a62:1a8e:: with SMTP id a136mr6702159pfa.22.1559721029927; Wed, 05 Jun 2019 00:50:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559721029; cv=none; d=google.com; s=arc-20160816; b=dFvzDdj+fbylK9X7PQz0cjSqixGFzaKxFF8C5r+mTlzl1jT+v9GCiDECeqBdJyZmi+ BAw1UqqdSki5Uw4evfEKmS6GVxKHb6VDJlxikLClchKwavOHOyukfpOIoq4G4OuNaPi1 D18Ds+fdDFLZwnnwcpUbPprWuUFwKfchvpq6Y4QGObeFr1zjo2q5nEsrfZ/2PSRxCQd4 nIaXnUb0gS2KJ1rIEd3IMyc9IZ97H2k/cFBbagnwl7T4IGX3kFYtJaXDLNrLaxSMe5ka yorkpxtuXR2UDfnzb/Gsi0LvDWRHaLrndhbT2dor+q0EKRBkSeQs+5Mz9Ngy6tAkE56u mm3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=RgKIolutpvVnypfmtHBmuAHgv/1WLxUKUUzMI4Hsm10=; b=m/L1Vw6+SeI9w1SkfppqmtNb30NEILWJO54Scfugjxg1HD8EKCph/aC4n/vMlndLy4 8G7dJEb3RUkg9X/PxpIe49AAYV0vjVyMGREQHwVzU7Rf/w++XO7VmpO0SfUS5uH0+I3A pUEMO47CFjMYi/uthIVnppenvoSvzotQYX5PGdbvc27xp2p+sr5aGS+5n6Vzp6zZw3hI 5bL7WFrzGfJ6dvpej7NRDusebX4iFUPpJcFRp+a0BhLxReQqtCZaJl/l/GcGit6vTc03 db2uAh3yeKKKEk/UMBy09VZ0TjY9x5llj9ibjmh3mndvqNMB2PerOIGWUXJogWCVrRw0 VKVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=NOkZm6Kr; 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 r3si26460343pjd.83.2019.06.05.00.50.09; Wed, 05 Jun 2019 00:50:29 -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=NOkZm6Kr; 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 S1726528AbfFEHrZ (ORCPT + 99 others); Wed, 5 Jun 2019 03:47:25 -0400 Received: from mail-it1-f193.google.com ([209.85.166.193]:39329 "EHLO mail-it1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726464AbfFEHrY (ORCPT ); Wed, 5 Jun 2019 03:47:24 -0400 Received: by mail-it1-f193.google.com with SMTP id j204so2095519ite.4 for ; Wed, 05 Jun 2019 00:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=RgKIolutpvVnypfmtHBmuAHgv/1WLxUKUUzMI4Hsm10=; b=NOkZm6Krsfkl0/J17Pk7jB4p9LmHsrLAZGbSPLUFMu25G04N2Xgoc07hH9+ezkjZei KXFIC4Knydq2vab2Ta5CXJRMUC6/TC1MKOp6mYOCdP8OzfhbWjBQImeMqqYsmF5hjtqV GRj2/yAoGrowmQVq2eg30jFLvgUVGCNwNws4E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=RgKIolutpvVnypfmtHBmuAHgv/1WLxUKUUzMI4Hsm10=; b=e9gBHDBqHym6e2xo17ETVhMdnL4x0eHceoKMkV9D5Bmd8F8CIXes5sbzO5AyK6spRl +1DDgoWGNjFDN9gX7K4flLyRs7qLB1kO8DQ9c/5Wad4QSDgsExFt02A8gsIVstqxJjmG XdCzsJGKKU1kvpW0VJHiIyG5AAmKThK3QKL2bp2tduNlN4u41bw+1ttWc5ogzj2AgWZh DtR0fgwquqHH9l87ntz1wVyDr/vNVDAJL76hcAJSMuqXkoI8p9QH92iU04LBSBOaJkir p56mc+rhq0lrsWnJbJuzvdaMMcTkTUiaXlZt7MzXS5/NRz9mE0RB29vcLGdcLIWSmtub x5nw== X-Gm-Message-State: APjAAAVzU4XUEqmyod4V5JRQJ2PNbaWImDd76NPdYXhpldRNIOZ61s1A Pxz59HfFVxpYr2brFg/xjA1RweqraHy7JOBxjFlHXQ== X-Received: by 2002:a24:2846:: with SMTP id h67mr25904393ith.94.1559720843015; Wed, 05 Jun 2019 00:47:23 -0700 (PDT) MIME-Version: 1.0 References: <20190520090318.27570-1-jagan@amarulasolutions.com> <20190520090318.27570-2-jagan@amarulasolutions.com> <20190523203407.o5obg2wtj7wwau6a@flea> <20190529145450.qnitxpmpr2a2xemk@flea> <20190604100011.cqkhpwmmmwh3vr3y@flea> In-Reply-To: <20190604100011.cqkhpwmmmwh3vr3y@flea> From: Jagan Teki Date: Wed, 5 Jun 2019 13:17:11 +0530 Message-ID: Subject: Re: [PATCH v10 01/11] drm/sun4i: dsi: Fix TCON DRQ set bits To: Maxime Ripard Cc: David Airlie , Daniel Vetter , Chen-Yu Tsai , dri-devel , linux-arm-kernel , linux-kernel , Bhushan Shah , Vasily Khoruzhick , =?UTF-8?B?5Z2a5a6a5YmN6KGM?= , Michael Trimarchi , linux-amarula , linux-sunxi Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 4, 2019 at 3:30 PM Maxime Ripard wrote: > > On Wed, May 29, 2019 at 11:44:56PM +0530, Jagan Teki wrote: > > On Wed, May 29, 2019 at 8:24 PM Maxime Ripard wrote: > > > > > > On Fri, May 24, 2019 at 03:48:51PM +0530, Jagan Teki wrote: > > > > On Fri, May 24, 2019 at 2:04 AM Maxime Ripard wrote: > > > > > > > > > > On Mon, May 20, 2019 at 02:33:08PM +0530, Jagan Teki wrote: > > > > > > According to "DRM kernel-internal display mode structure" in > > > > > > include/drm/drm_modes.h the current driver is trying to include > > > > > > sync timings along with front porch value while checking and > > > > > > computing drq set bits in non-burst mode. > > > > > > > > > > > > mode->hsync_end - mode->hdisplay => horizontal front porch + sync > > > > > > > > > > > > With adding additional sync timings, the dsi controller leads to > > > > > > wrong drq set bits for "bananapi,s070wv20-ct16" panel which indeed > > > > > > trigger panel 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 > > > > > > > > > > > > But according to Allwinner A33, A64 BSP code [1] [3] the TCON DRQ for > > > > > > non-burst DSI mode can be computed based on "horizontal front porch" > > > > > > value only (no sync timings included). > > > > > > > > > > > > Detailed evidence for drq set bits based on A33 BSP [1] [2] > > > > > > > > > > > > => panel->lcd_ht - panel->lcd_x - panel->lcd_hbp - 20 > > > > > > => (tt->hor_front_porch + lcdp->panel_info.lcd_hbp + > > > > > > lcdp->panel_info.lcd_x) - panel->lcd_x - panel->lcd_hbp - 20 > > > > > > => tt->hor_front_porch - 20 > > > > > > > > > > The thing is, while your explanation on the DRM side is sound, > > > > > Allwinner has been using the hbp field of their panel description to > > > > > store what DRM calls the backporch and the sync period. > > > > > > > > Exactly, hbp = backporch + sync > > > > https://github.com/BPI-SINOVOIP/BPI-M2M-bsp/blob/master/linux-sunxi/drivers/video/sunxi/disp/de/disp_lcd.c#L2046 > > > > > > > > And the above computation is rely on that as well. If you can see the > > > > final out of the above computation you can get the front porch value > > > > (w/o sync ) > > > > > > As I was saying, you are explaining it well for DRM, but in order for > > > your last formula (the one coming from the BSP) to make sense, you > > > have to explain that the horizontal back porch for Allwinner contains > > > the sync period, otherwise your expansion of lcd_ht doesn't make > > > sense. > > > > I'm not sure why we need to take care of back porch since the formula > > clearly evaluating a result as front porch, without sync timing (as > > current code included this sync), I keep the hbp and trying to > > substitute the lcd_ht value so the end result would cancel hbp. > > Because it changes how lcd_ht expands. In the DRM case, it will expand > to the displayed area, the front porch, the sync period and the back > porch. > > In your case, you expand it to the displayed area, the front porch and > the back porch, precisely because in Allwinner's case, the back porch > has the sync period. I understand the point, but technically it matter about the final computation result. May be we can even manage the same computation in back porch, but I'm not sure. Since the final output doesn't involve any sync length, why we can include that ie what I'm not sure. with inclusion of sync timings we have wrong tcon drq set bit, it's been verified.