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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable 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 9A8CDC4320A for ; Sun, 25 Jul 2021 14:05:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8256260F42 for ; Sun, 25 Jul 2021 14:05:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231180AbhGYNYr (ORCPT ); Sun, 25 Jul 2021 09:24:47 -0400 Received: from vps5.brixit.nl ([192.81.221.234]:39530 "EHLO vps5.brixit.nl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230029AbhGYNYn (ORCPT ); Sun, 25 Jul 2021 09:24:43 -0400 Received: from lexxgentoo.collabio.net (unknown [77.239.252.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by vps5.brixit.nl (Postfix) with ESMTPSA id D116060906; Sun, 25 Jul 2021 14:05:10 +0000 (UTC) From: Alexey Minnekhanov To: Thierry Reding , Sam Ravnborg , David Airlie , Daniel Vetter , linux-kernel@vger.kernel.org (open list), dri-devel@lists.freedesktop.org (open list:DRM PANEL DRIVERS) Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, Linus Walleij , Alexey Minnekhanov Subject: [PATCH 2/2] drm/panel: Add Samsung S6E3FA2 DSI panel driver Date: Sun, 25 Jul 2021 17:03:38 +0300 Message-Id: <20210725140339.2465677-2-alexeymin@postmarketos.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210725140339.2465677-1-alexeymin@postmarketos.org> References: <20210725140339.2465677-1-alexeymin@postmarketos.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam: Yes Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Samsung S6E3FA2 panel is amoled 1080x1920 command mode DSI panel used in Samsung Galaxy S5 phone. There are 2 known variations of panel that were shipped in this phone, and this driver handles both of them. Panel has built-in backlight (like all other AMOLED panels), controlled over DSI by some vendor specific commands, some of them include sending long byte sequences of what seems to be called "smart dimming". Signed-off-by: Alexey Minnekhanov --- drivers/gpu/drm/panel/Kconfig | 12 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-samsung-s6e3fa2.c | 1218 +++++++++++++++++ 3 files changed, 1231 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-samsung-s6e3fa2.c diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 5270d25b5ff1..968da1819a86 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -357,6 +357,18 @@ config DRM_PANEL_SAMSUNG_S6D16D0 depends on DRM_MIPI_DSI select VIDEOMODE_HELPERS +config DRM_PANEL_SAMSUNG_S6E3FA2 + tristate "Samsung S6E3FA2 DSI 1080p command mode panel" + depends on OF + depends on DRM_MIPI_DSI + depends on BACKLIGHT_CLASS_DEVICE + select VIDEOMODE_HELPERS + help + Say Y here if you want to enable support for Samsung Electronics + S6E3FA2 1080x1920 DSI AMOLED command mode panel. It is used in + Samsung mobile phones like Galaxy S5 (klte). This driver supports + both panel variants that are shipped in production devices. + config DRM_PANEL_SAMSUNG_S6E3HA2 tristate "Samsung S6E3HA2 DSI video mode panel" depends on OF diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 0f304fc58c58..d119c604dd9e 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -36,6 +36,7 @@ obj-$(CONFIG_DRM_PANEL_RAYDIUM_RM68200) += panel-raydium-rm68200.o obj-$(CONFIG_DRM_PANEL_RONBO_RB070D30) += panel-ronbo-rb070d30.o obj-$(CONFIG_DRM_PANEL_SAMSUNG_LD9040) += panel-samsung-ld9040.o obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6D16D0) += panel-samsung-s6d16d0.o +obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E3FA2) += panel-samsung-s6e3fa2.o obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2) += panel-samsung-s6e3ha2.o obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03) += panel-samsung-s6e63j0x03.o obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E63M0) += panel-samsung-s6e63m0.o diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e3fa2.c b/drivers/gpu/drm/panel/panel-samsung-s6e3fa2.c new file mode 100644 index 000000000000..7bad7e71069a --- /dev/null +++ b/drivers/gpu/drm/panel/panel-samsung-s6e3fa2.c @@ -0,0 +1,1218 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// Copyright (c) 2021, Alexey Minnekhanov +// Copyright (c) 2021, The Linux Foundation. All rights reserved. + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include