From patchwork Mon Aug 31 13:02:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Semwal X-Patchwork-Id: 11746351 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5E106109B for ; Mon, 31 Aug 2020 13:03:11 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2CD6B214D8 for ; Mon, 31 Aug 2020 13:03:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ZTh04aeL" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2CD6B214D8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 24F366E252; Mon, 31 Aug 2020 13:03:10 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pj1-x1042.google.com (mail-pj1-x1042.google.com [IPv6:2607:f8b0:4864:20::1042]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7002D6E252 for ; Mon, 31 Aug 2020 13:03:08 +0000 (UTC) Received: by mail-pj1-x1042.google.com with SMTP id ls14so2915291pjb.3 for ; Mon, 31 Aug 2020 06:03:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PKVQa7mFyShxE7bXpbdQpBbN4ieHP/7X9mNZXJlFeWE=; b=ZTh04aeLyTXBjqrgPnzQoGcbpZAWJxcuVmTqa97tyD3iSVLa9D9tl8OqiaiIiaIsSw 1jB5SijOIYwwcLoAZFGGFAai7EXY6/xvtiak6imDLdhGg/L9fQ0lkRZpai2ojqfWn9SY TLXLGW9wHCQJ5IlfZl6RErRDzTrN7WvYJhvNU/GDrnXD8Ak2nVldfg3WPWreEqudgaIK vAVrTviYuq66P3T0pW8YYUM6kfp2tgFADfPSA/8eYbjHWoGYVTIXcK1hNSc8OAiwCwnd qbHbGZyOT75kbes6mt0RHjzxohKylCyaApQqKXQp5BXCwXcAKtYoui+sHjg2Mvlwm0HP x0CQ== 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=PKVQa7mFyShxE7bXpbdQpBbN4ieHP/7X9mNZXJlFeWE=; b=A+bgSYivV7FhdmUTE54bKSemtoXNdUJMm5NHREceR7AT7D93g9qQvX3iRper1jk+Dm M1ATWUBKJOgCRxkEXoqPirpaqXe+FhYwNbE6y3yNb0soLaYKps/8m3FAIm7i63NYLKTC cpmxCHwCEa4cy70NKjJSlCfUlJR7tOJwlpNjnceTWh9dZIAriOSh87aly3Te9Tf/XLdy EUp9qXmwfDBLdKHU3kwiu87BYAX7ESTDW99K6h2u3GFpqd5cOTqiVGrYBvfcHHbVwN2N jLqIjC7jJWzp3o4MN1dDPQZmaQEv6tk1YAyuGlTpp5twP9yfFQ6oavmElXeqRqrfdQbZ H1ww== X-Gm-Message-State: AOAM530h61rhIXMmgEZdlglS9fsbg1uVuektZ5NGb+KZRRtAjZcdlUqc hKouaZ5lCXYBC6psOS/9n5bNsw== X-Google-Smtp-Source: ABdhPJzP6nf0rR3az30ZR1AJfT0npkrLM5KI5fKgntR9xe1WID4hsimXo6qLlmde4qi4uDpbpHKl9g== X-Received: by 2002:a17:902:8489:: with SMTP id c9mr971255plo.82.1598878987999; Mon, 31 Aug 2020 06:03:07 -0700 (PDT) Received: from nagraj.local ([49.206.21.239]) by smtp.gmail.com with ESMTPSA id l21sm7400580pgb.35.2020.08.31.06.03.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 06:03:06 -0700 (PDT) From: Sumit Semwal To: Thierry Reding , Sam Ravnborg Subject: [PATCH v6 1/2] dt-bindings: display: panel: Add bindings for Novatek nt36672a Date: Mon, 31 Aug 2020 18:32:50 +0530 Message-Id: <20200831130251.19769-2-sumit.semwal@linaro.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200831130251.19769-1-sumit.semwal@linaro.org> References: <20200831130251.19769-1-sumit.semwal@linaro.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Bjorn Andersson , Mauro Carvalho Chehab , "David S . Miller" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Novatek nt36672a is a display driver IC that can drive DSI panel. It is also present in the Tianma video mode panel, which is a FHD+ panel with a resolution of 1080x2246 and 6.18 inches size. It is found in some of the Poco F1 phones. This patch adds the display driver for the IC, with support added for this tianma fhd video mode panel. Signed-off-by: Sumit Semwal Reviewed-by: Rob Herring --- v2: remove ports node, making port@0 directly under panel@0 node. v3: updated to replace port@0 to just 'port'. v5: renamed to novatek,nt36672a, since the binding is for the IC and not the panel. v6: v5 review comments incorporated. - added enum for the compatible part, since it can be extended in future. - few cosmetic updates. --- .../display/panel/novatek,nt36672a.yaml | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/panel/novatek,nt36672a.yaml diff --git a/Documentation/devicetree/bindings/display/panel/novatek,nt36672a.yaml b/Documentation/devicetree/bindings/display/panel/novatek,nt36672a.yaml new file mode 100644 index 000000000000..d2170de6b723 --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/novatek,nt36672a.yaml @@ -0,0 +1,87 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/novatek,nt36672a.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Novatek NT36672A based DSI display Panels + +maintainers: + - Sumit Semwal + +description: | + The nt36672a IC from Novatek is a generic DSI Panel IC used to drive dsi + panels. + Right now, support is added only for a Tianma FHD+ LCD display panel with a + resolution of 1080x2246. It is a video mode DSI panel. + +allOf: + - $ref: panel-common.yaml# + +properties: + compatible: + items: + - enum: + - tianma,fhd-video + - const: novatek,nt36672a + description: This indicates the panel manufacturer of the panel that is + in turn using the NT36672A panel driver. This compatible string + determines how the NT36672A panel driver is configured for the indicated + panel. The novatek,nt36672a compatible shall always be provided as a fallback. + + reset-gpios: + description: phandle of gpio for reset line - This should be 8mA, gpio + can be configured using mux, pinctrl, pinctrl-names (active high) + + vddio-supply: + description: phandle of the regulator that provides the supply voltage + Power IC supply + + vddpos-supply: + description: phandle of the positive boost supply regulator + + vddneg-supply: + description: phandle of the negative boost supply regulator + + reg: true + port: true + +required: + - compatible + - reg + - vddi0-supply + - vddpos-supply + - vddneg-supply + - reset-gpios + - port + +unevaluatedProperties: false + +examples: + - |+ + #include + + dsi0 { + #address-cells = <1>; + #size-cells = <0>; + + panel@0 { + compatible = "tianma,fhd-video", "novatek,nt36672a"; + reg = <0>; + vddi0-supply = <&vreg_l14a_1p88>; + vddpos-supply = <&lab>; + vddneg-supply = <&ibb>; + + reset-gpios = <&tlmm 6 GPIO_ACTIVE_HIGH>; + + #address-cells = <1>; + #size-cells = <0>; + port { + tianma_nt36672a_in_0: endpoint { + remote-endpoint = <&dsi0_out>; + }; + }; + }; + }; + +... From patchwork Mon Aug 31 13:02:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Semwal X-Patchwork-Id: 11746353 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 67175618 for ; Mon, 31 Aug 2020 13:03:16 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 45171206E3 for ; Mon, 31 Aug 2020 13:03:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="JlFI0aBJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 45171206E3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7E0216E258; Mon, 31 Aug 2020 13:03:15 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pj1-x1043.google.com (mail-pj1-x1043.google.com [IPv6:2607:f8b0:4864:20::1043]) by gabe.freedesktop.org (Postfix) with ESMTPS id 585FF6E258 for ; Mon, 31 Aug 2020 13:03:13 +0000 (UTC) Received: by mail-pj1-x1043.google.com with SMTP id 2so3102254pjx.5 for ; Mon, 31 Aug 2020 06:03:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+LHPvergv9JOkc07dMLH/z6MgF4Iu1IXQz+MYRIw4ms=; b=JlFI0aBJMRV0V6ERyv/Umtpl9BgCfore/uqnaZiTtFqkjNpv6g4rQcb5axrwGg78aX 6fpYcc+CMqbmJ6XTs21M4chGSxO02Y5HMzAhEyTZ+bNGkIrklrGcyYNmYhTteZld1cAn OKL4JuC60JL1HvCK40q0ebzZU0mHzugKBPjBwk91D5JYCFSTWgpfR7uQ/9Z3uQfoYmBA Bx5qPBtFvyBSh4UaGwYq4BxRyJFtMNA3HGurkbgv6fSDBw0EfVzW+t89WB5/lctMrbe9 ANCpd3xlSFsEEX+bfaUqyQgj0ZwM6FMl0Q4a5fdJ3n+S5oyX72EZgkXBI5MrpnSCDKso POUQ== 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=+LHPvergv9JOkc07dMLH/z6MgF4Iu1IXQz+MYRIw4ms=; b=ixy7fl8SIQfU2B3PNniutU0OoC/n76b+BaDFAHvUIZrqE+/+7zdpHDKQUeYoHy+ij3 k0tmS2o47lvEOkzHwLOpN8VNbJcQt42tT9bVTGpmJ2eA7E/GpAm1bxBqm/7Wh7OfJ17U J3++ryTxv0hPpGfOrva55F5HvXvEmkLkI5EDsEYo/rRshAntJC4CWJO3Xx7oBAycqBR6 OKyCjvub4TBKODBIlmbnNgMzDzfDYH6/bJM9N0JfyhqrohvBn+lMeIB+biNvNXMkFBWJ Mnvoz4RL3yGbO6EgzmKZ37eLXsH76yGNZJDagqs04jLotwpmWT+ofmGHaj/ncvnP47lT SqsA== X-Gm-Message-State: AOAM532SrkWqVmtEFClUs1bXSlAPtezRoedTmEna285+k9ccZ4RTKFEM bQuBOo676AdSZ+HyVZgvSedfxA== X-Google-Smtp-Source: ABdhPJy2i3sf0+O6DdzwEIger20lW3VPyKyDB+TnWFYl6xm3dJqETJ7BqY0OLU7sW6PCjd0Moylpfw== X-Received: by 2002:a17:90a:fcc:: with SMTP id 70mr1247879pjz.220.1598878992774; Mon, 31 Aug 2020 06:03:12 -0700 (PDT) Received: from nagraj.local ([49.206.21.239]) by smtp.gmail.com with ESMTPSA id l21sm7400580pgb.35.2020.08.31.06.03.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 06:03:11 -0700 (PDT) From: Sumit Semwal To: Thierry Reding , Sam Ravnborg Subject: [PATCH v6 2/2] drm: panel: Add novatek nt36672a panel driver Date: Mon, 31 Aug 2020 18:32:51 +0530 Message-Id: <20200831130251.19769-3-sumit.semwal@linaro.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200831130251.19769-1-sumit.semwal@linaro.org> References: <20200831130251.19769-1-sumit.semwal@linaro.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: 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" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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 --- 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 --- MAINTAINERS | 7 + drivers/gpu/drm/panel/Kconfig | 10 + drivers/gpu/drm/panel/Makefile | 1 + .../gpu/drm/panel/panel-novatek-nt36672a.c | 740 ++++++++++++++++++ 4 files changed, 758 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-novatek-nt36672a.c diff --git a/MAINTAINERS b/MAINTAINERS index 01fb9ee6b951..aeecade2d65f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -5619,6 +5619,13 @@ T: git git://anongit.freedesktop.org/drm/drm-misc F: Documentation/devicetree/bindings/display/ste,mcde.txt F: drivers/gpu/drm/mcde/ +DRM DRIVER FOR TIANMA NT36672A PANELS +M: Sumit Semwal +S: Maintained +T: git git://anongit.freedesktop.org/drm/drm-misc +F: Documentation/devicetree/bindings/display/panel/tianma,nt36672a-panel.yaml +F: drivers/gpu/drm/panel/panel-tianma-nt36672a.c + DRM DRIVER FOR TDFX VIDEO CARDS S: Orphan / Obsolete F: drivers/gpu/drm/tdfx/ diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 8d97d07c5871..02600f12a063 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 phone. + 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..675e9d52f3c4 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-novatek-nt36672a.c @@ -0,0 +1,740 @@ +// 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