Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp718306pxu; Wed, 14 Oct 2020 11:51:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw6X5krjw2VCQDD8wNqgqTFzM5hx+u3PACowhA4SscW+zWODB8x2sbU09PkIV7JfNezTDWi X-Received: by 2002:a50:c38c:: with SMTP id h12mr332976edf.185.1602701470942; Wed, 14 Oct 2020 11:51:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602701470; cv=none; d=google.com; s=arc-20160816; b=LWE0xv0vpOOj3lqjl6BzgUn+2yA3yPOBpzLHKSHJZb+j2r5RYT5tTJGUeG0YXqjiR4 Q+1N7PFNvMd+V+pO/nDo2abPiCEmU0mUwzGQbeLeeKOBs3v01jHuQ3QoIjZ1EAdT/Nw/ 57EIZIfBCwfCEr8f0fcggkm+Q2cxLrMZHlxS67C7sDmSVelNNu8cEFvUpSQ8PNJRXQko NkuEL1bAO3l7gPjeBjfOZmRmqmDYbpf9eBUIGSj9W6BMbvWoOZzbNWAHY+YWEC6fTe5b xivABv/I4/kCBodrkAAi35GDpMLTfeiejYz8qTZSgayIVm2/M6P1c3M1eA6d+W0lPd/u kuLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=eBxaVPWxg/VG9+ThX1zzh5LMGWp4xrhbDbZJJByaVRY=; b=u6UkXKH8nI4+OTzRzHL8BatZSh4ZFhKNY1yz3ty0LrrzP2R13JJ0VSWBea/t1VLa/L gEyepuE1ZKjE3llkCXP/M8eH4ZjUpbhjP+NZpGxNBdApjICPL81f88AAzxMK5hSxSD7p gzgHYrYlAXDslNRXAS+3h+xw0VPWMNHohfuaOIphZjgZTzIDSHTS9C6A7tBrbUcIOSV0 C/veBQDliQQGbreJtFecBWG/EqCCn2YeO8839W+kO+RKQ/C+vveNWMiXmIgwebyPilRV p93y3SReuaT59ZeFn+qldDxFDkQgIxa7UkN8DvfmeoQc2Y0Uy+Z99ySNiSL5aPLqPeqv Iunw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id pg18si346074ejb.467.2020.10.14.11.50.47; Wed, 14 Oct 2020 11:51:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388755AbgJNSrG (ORCPT + 99 others); Wed, 14 Oct 2020 14:47:06 -0400 Received: from asavdk4.altibox.net ([109.247.116.15]:42500 "EHLO asavdk4.altibox.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726269AbgJNSrF (ORCPT ); Wed, 14 Oct 2020 14:47:05 -0400 Received: from ravnborg.org (unknown [188.228.123.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by asavdk4.altibox.net (Postfix) with ESMTPS id F3108804DF; Wed, 14 Oct 2020 20:46:56 +0200 (CEST) Date: Wed, 14 Oct 2020 20:46:55 +0200 From: Sam Ravnborg To: Sumit Semwal Cc: Thierry Reding , devicetree@vger.kernel.org, David Airlie , Benni Steini , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Bjorn Andersson , Mauro Carvalho Chehab , "David S . Miller" Subject: Re: [PATCH v7 2/2] drm: panel: Add novatek nt36672a panel driver Message-ID: <20201014184655.GB835495@ravnborg.org> References: <20200902064407.30712-1-sumit.semwal@linaro.org> <20200902064407.30712-3-sumit.semwal@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200902064407.30712-3-sumit.semwal@linaro.org> X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=fu7ymmwf c=1 sm=1 tr=0 a=S6zTFyMACwkrwXSdXUNehg==:117 a=S6zTFyMACwkrwXSdXUNehg==:17 a=kj9zAlcOel0A:10 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=7gkXJVJtAAAA:8 a=e5mUnYsNAAAA:8 a=20KFwNOVAAAA:8 a=6cYS0vU7WYAv1iF3mYIA:9 a=zGy56-GFrht2xowC:21 a=hwk9w8A2XQSENoT_:21 a=CjuIK1q_8ugA:10 a=cvBusfyB2V15izCimMoJ:22 a=E9Po1WZjFZOl8hwRPBS3:22 a=Vxmtnl_E_bksehYqCbjh:22 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Sumit. On Wed, Sep 02, 2020 at 12:14:07PM +0530, Sumit Semwal wrote: > Novatek NT36672a is a generic DSI IC that drives command and video mode > panels. Add the driver for it. > > Right now adding support for some Poco F1 phones that have an LCD panel > from Tianma connected with this IC, with a resolution of 1080x2246 that > operates in DSI video mode. > > During testing, Benni Steini helped us fix > the reset sequence timing (from 10ms to 20ms), to get the bootanimation > to work on Android. > > With current AOSP, we need to increase it to 200ms - this seems to be a > safe high value to avoid a white screen occasionally. > > Signed-off-by: Sumit Semwal > Cc: Benni Steini Reviewed-by: Sam Ravnborg I assume you will apply the patch yourself to drm-misc-next. Sam > > --- > v2: increase reset sequence timing to a safe 200ms > v4: Since "0425662fdf05: drm: Nuke mode->vrefresh", we have to calculate > vrefresh on demand. Update for it. > v5: Fixed review comments from Sam: > - rebased on top of drm-misc-next > remove return of drm_panel_add() > remove drm_panel_detach() > - renamed the panel driver file to reflect that this is a novatek > nt36672a display driver and not only for tianma panels. > Adjusted some internal names also to reflect the same. > - corrected changelog to add info about the generic Novatek DSI IC > - corrected compatible string accordingly > - removed pinctrl > - used drm_panel* API for prepare/unprepare/disable/remove > v6: Fixed few review comments on v5 from Sam: > - add dev_err_probe() support > - move DRM_* error printing to dev_err() > - removed a few unnecessary bits > v7: Fixed review comments on v6 from Bjorn: > - Reworked the send_mipi_commands functionality > - removed regulator disable_loads; moved active_load setting to probe > time > - made function names and struct less generic > - updated the reset_gpio working to active_low > - update MAINTAINERS for file name changes > --- > MAINTAINERS | 7 + > drivers/gpu/drm/panel/Kconfig | 10 + > drivers/gpu/drm/panel/Makefile | 1 + > .../gpu/drm/panel/panel-novatek-nt36672a.c | 711 ++++++++++++++++++ > 4 files changed, 729 insertions(+) > create mode 100644 drivers/gpu/drm/panel/panel-novatek-nt36672a.c > > diff --git a/MAINTAINERS b/MAINTAINERS > index 01fb9ee6b951..c6fb966c0959 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -5517,6 +5517,13 @@ T: git git://anongit.freedesktop.org/drm/drm-misc > F: Documentation/devicetree/bindings/display/panel/novatek,nt35510.yaml > F: drivers/gpu/drm/panel/panel-novatek-nt35510.c > > +DRM DRIVER FOR NOVATEK NT36672A PANELS > +M: Sumit Semwal > +S: Maintained > +T: git git://anongit.freedesktop.org/drm/drm-misc > +F: Documentation/devicetree/bindings/display/panel/novatek,nt36672a.yaml > +F: drivers/gpu/drm/panel/panel-novatek-nt36672a.c > + > DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS > M: Ben Skeggs > L: dri-devel@lists.freedesktop.org > diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig > index 8d97d07c5871..51e6cb6c7826 100644 > --- a/drivers/gpu/drm/panel/Kconfig > +++ b/drivers/gpu/drm/panel/Kconfig > @@ -208,6 +208,16 @@ config DRM_PANEL_NOVATEK_NT35510 > around the Novatek NT35510 display controller, such as some > Hydis panels. > > +config DRM_PANEL_NOVATEK_NT36672A > + tristate "Novatek NT36672A DSI panel" > + depends on OF > + depends on DRM_MIPI_DSI > + depends on BACKLIGHT_CLASS_DEVICE > + help > + Say Y here if you want to enable support for the panels built > + around the Novatek NT36672A display controller, such as some > + Tianma panels used in a few Xiaomi Poco F1 mobile phones. > + > config DRM_PANEL_NOVATEK_NT39016 > tristate "Novatek NT39016 RGB/SPI panel" > depends on OF && SPI > diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile > index 15a4e7752951..4a36eb45f670 100644 > --- a/drivers/gpu/drm/panel/Makefile > +++ b/drivers/gpu/drm/panel/Makefile > @@ -19,6 +19,7 @@ obj-$(CONFIG_DRM_PANEL_LG_LB035Q02) += panel-lg-lb035q02.o > obj-$(CONFIG_DRM_PANEL_LG_LG4573) += panel-lg-lg4573.o > obj-$(CONFIG_DRM_PANEL_NEC_NL8048HL11) += panel-nec-nl8048hl11.o > obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35510) += panel-novatek-nt35510.o > +obj-$(CONFIG_DRM_PANEL_NOVATEK_NT36672A) += panel-novatek-nt36672a.o > obj-$(CONFIG_DRM_PANEL_NOVATEK_NT39016) += panel-novatek-nt39016.o > obj-$(CONFIG_DRM_PANEL_MANTIX_MLAF057WE51) += panel-mantix-mlaf057we51.o > obj-$(CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO) += panel-olimex-lcd-olinuxino.o > diff --git a/drivers/gpu/drm/panel/panel-novatek-nt36672a.c b/drivers/gpu/drm/panel/panel-novatek-nt36672a.c > new file mode 100644 > index 000000000000..533cd3934b8b > --- /dev/null > +++ b/drivers/gpu/drm/panel/panel-novatek-nt36672a.c > @@ -0,0 +1,711 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright (C) 2020 Linaro Ltd > + * Author: Sumit Semwal > + * > + * This driver is for the DSI interface to panels using the NT36672A display driver IC > + * from Novatek. > + * Currently supported are the Tianma FHD+ panels found in some Xiaomi phones, including > + * some variants of the Poco F1 phone. > + * > + * Panels using the Novatek NT37762A IC should add appropriate configuration per-panel and > + * use this driver. > + */ > + > +#include > +#include > +#include > +#include > +#include > + > +#include > +#include > +#include > + > +#include > +#include > +#include > +#include > + > +#include