From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-19.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE59EC07E99 for ; Fri, 9 Jul 2021 18:01:37 +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 2444961241 for ; Fri, 9 Jul 2021 18:01:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2444961241 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ravnborg.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 670796E910; Fri, 9 Jul 2021 18:01:36 +0000 (UTC) Received: from mx2.smtp.larsendata.com (mx2.smtp.larsendata.com [91.221.196.228]) by gabe.freedesktop.org (Postfix) with ESMTPS id F27526E910 for ; Fri, 9 Jul 2021 18:01:34 +0000 (UTC) Received: from mail01.mxhotel.dk (mail01.mxhotel.dk [91.221.196.236]) by mx2.smtp.larsendata.com (Halon) with ESMTPS id b4dfcc8e-e0df-11eb-8d1a-0050568cd888; Fri, 09 Jul 2021 18:01:38 +0000 (UTC) Received: from ravnborg.org (80-162-45-141-cable.dk.customer.tdc.net [80.162.45.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: sam@ravnborg.org) by mail01.mxhotel.dk (Postfix) with ESMTPSA id 57B96194B04; Fri, 9 Jul 2021 20:01:41 +0200 (CEST) Date: Fri, 9 Jul 2021 20:01:30 +0200 X-Report-Abuse-To: abuse@mxhotel.dk From: Sam Ravnborg To: Linus Walleij Subject: Re: [PATCH 2/2 v3] drm/panel: ws2401: Add driver for WideChips WS2401 Message-ID: References: <20210707234315.242663-1-linus.walleij@linaro.org> <20210707234315.242663-2-linus.walleij@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20210707234315.242663-2-linus.walleij@linaro.org> 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: Thierry Reding , phone-devel@vger.kernel.org, Douglas Anderson , dri-devel@lists.freedesktop.org, Noralf =?iso-8859-1?Q?Tr=F8nnes?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi Linus, On Thu, Jul 08, 2021 at 01:43:15AM +0200, Linus Walleij wrote: > This adds a driver for panels based on the WideChips WS2401 display > controller. This display controller is used in the Samsung LMS380KF01 > display found in the Samsung GT-I8160 (Codina) mobile phone and > possibly others. > > As is common with Samsung displays manufacturer commands are necessary > to configure the display to a working state. > > The display optionally supports internal backlight control, but can > also use an external backlight. > > This driver re-uses the DBI infrastructure to communicate with the > display. > > Cc: phone-devel@vger.kernel.org > Cc: Douglas Anderson > Cc: Noralf Trønnes > Signed-off-by: Linus Walleij Sorry for being late here. Some backlight related comments in the following. The rest looks good. Sam > --- > ChangeLog v2->v3: > - Drop the ws2401_command() macro - we enhanced the > mipi_dbi_command() to print errors for everyone instead. > - Read out MTP properly (used wrong variables) > - Register internal backlight if and only if the panel->backlight > field is NULL after trying to look up external backlight. > ChangeLog v1->v2: > - Disable the backlight in ->unprepare() before entering sleep > mode. > - If we are not using internal backlight, close the L2 access > after initializing. > - Depromote some talkative dev_info()s to dev_dbg(). > - Power up and read the MTP values before we register the display. > This works fine and is probably how MTP is supposed to work. > - Fix the set-up of gamma values, this was found in the GT-I8160 HD > kernel tree. > - Bail out properly if drm_panel_of_backlight() returns > -EDEFER_PROBE. > - Drop OF from dependencies since drm_panel_of_backlight() has > static inline stubs in the header file. > - Sort MAINTAINERS properly. > - Alphabetize includes > - Use format specifier %#02x so we get 0x... output in debug > - Drop unnecessary braces around if () in debug macro > - Drop unused include. > --- > MAINTAINERS | 7 + > drivers/gpu/drm/panel/Kconfig | 9 + > drivers/gpu/drm/panel/Makefile | 1 + > .../gpu/drm/panel/panel-widechips-ws2401.c | 436 ++++++++++++++++++ > 4 files changed, 453 insertions(+) > create mode 100644 drivers/gpu/drm/panel/panel-widechips-ws2401.c > > diff --git a/MAINTAINERS b/MAINTAINERS > index bd7aff0c120f..10bba4be1678 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -5956,6 +5956,13 @@ T: git git://people.freedesktop.org/~sroland/linux > F: drivers/gpu/drm/vmwgfx/ > F: include/uapi/drm/vmwgfx_drm.h > > +DRM DRIVER FOR WIDECHIPS WS2401 PANELS > +M: Linus Walleij > +S: Maintained > +T: git git://anongit.freedesktop.org/drm/drm-misc > +F: Documentation/devicetree/bindings/display/panel/samsung,lms380kf01.yaml > +F: drivers/gpu/drm/panel/panel-widechips-ws2401.c > + > DRM DRIVERS > M: David Airlie > M: Daniel Vetter > diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig > index 4894913936e9..319fa44c4bc9 100644 > --- a/drivers/gpu/drm/panel/Kconfig > +++ b/drivers/gpu/drm/panel/Kconfig > @@ -552,6 +552,15 @@ config DRM_PANEL_VISIONOX_RM69299 > Say Y here if you want to enable support for Visionox > RM69299 DSI Video Mode panel. > > +config DRM_PANEL_WIDECHIPS_WS2401 > + tristate "Widechips WS2401 DPI panel driver" > + depends on SPI && GPIOLIB > + depends on BACKLIGHT_CLASS_DEVICE > + select DRM_MIPI_DBI > + help > + Say Y here if you want to enable support for the Widechips WS2401 DPI > + 480x800 display controller used in panels such as Samsung LMS380KF01. Maybe add "e.g. found in the Samsung GT-I8160 (Codina) mobile phone" As I assume this will be the most frequent user anyway. > + > config DRM_PANEL_XINPENG_XPP055C272 > tristate "Xinpeng XPP055C272 panel driver" > depends on OF > diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile > index cae4d976c069..d94c27df17aa 100644 > --- a/drivers/gpu/drm/panel/Makefile > +++ b/drivers/gpu/drm/panel/Makefile > @@ -58,4 +58,5 @@ obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o > obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o > obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o > obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o > +obj-$(CONFIG_DRM_PANEL_WIDECHIPS_WS2401) += panel-widechips-ws2401.o > obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o > diff --git a/drivers/gpu/drm/panel/panel-widechips-ws2401.c b/drivers/gpu/drm/panel/panel-widechips-ws2401.c > new file mode 100644 > index 000000000000..95825063f812 > --- /dev/null > +++ b/drivers/gpu/drm/panel/panel-widechips-ws2401.c > @@ -0,0 +1,436 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Panel driver for the WideChips WS2401 480x800 DPI RGB panel, used in > + * the Samsung Mobile Display (SMD) LMS380KF01. > + * Found in the Samsung Galaxy Ace 2 GT-I8160 mobile phone. > + * Linus Walleij > + * Inspired by code and know-how in the vendor driver by Gareth Phillips. > + */ > +#include > +#include > +#include > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include