From patchwork Wed Feb 26 11:25:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hironori KIKUCHI X-Patchwork-Id: 13992095 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B9C1AC18E7C for ; Wed, 26 Feb 2025 11:26:43 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4FB6C10E203; Wed, 26 Feb 2025 11:26:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="N46NiM5I"; dkim-atps=neutral Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6622D10E203 for ; Wed, 26 Feb 2025 11:26:42 +0000 (UTC) Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-219f8263ae0so141443765ad.0 for ; Wed, 26 Feb 2025 03:26:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740569202; x=1741174002; darn=lists.freedesktop.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=im7+zQBdIJMDHrDxf6vyfzrIwGaTz096CO/yt3ADDf4=; b=N46NiM5Ib36D62sueK8KO31CTyftreqFgltauuZDUWUhHlPE+nZHGSjspYbj9g98rV 6V7GYecErC0gfA5EarI9+1rFz1xaCCS/apOQTGGFSbgmms0zStjBseQZ0PTbSZYvkfpE iDo5Gwc1PEHteBuO42MF702d8Kmz8Z2TixhJsFo8wsJP8q7MZHafUk3Wc6sjg671+kL2 8/PAz6yPfJv+hwzvZwnVQlRw1L8Jh93Hv/W1iPTKsSY5E+G4zQvPNtYXHQXjFtVqJ0e0 gvayVHEecVstcWFu3R5IkDCOVnI0rfZn58SBS1Om4adl2nYpFYqBLZ2QV4UfZuNxHaBa B3ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740569202; x=1741174002; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=im7+zQBdIJMDHrDxf6vyfzrIwGaTz096CO/yt3ADDf4=; b=OPGrLZa6X8y2rS/jT0PWQ+tR746IY2f2aCfM+KFm4MCIPA7XvWCDiRq3Xzy2LFjgHm BRgHWO1bbKNC8AL+vP1r3nSTNfL5SmvBlsVVSQr89ykIU+hN+NtVkQkxK9le3g4bEeNG Kn8EXrocG3GFxjVwM0Yvbl2JGZ7WTtlH3KxfGyFVX1QcuzSdsJjCp9u4tKpMiVHN1+C7 AKar0Bdr1oG5G4AW8/vfMTF3B8hVXBWsD9QESosTrG5LRacS6zydgfTOuhlgqMlRzl3T g5ol2GBTt99LSLOVq5DT9anTaggy55IRCaOiOwl1swRFrsPXAx0ehREADHZHIPd+L+Ud 0gqA== X-Forwarded-Encrypted: i=1; AJvYcCW8WGS8JX/4TVl9ZoPkc1BYGivx8/LsDRmv9k4QXXyT2UmzrVJLxndIly7u9UhHnsTTsmQVX5zga60=@lists.freedesktop.org X-Gm-Message-State: AOJu0Yz7lLb2LpncYl9Yvdef2QeMo6qhuL3iBYuGUGs37jmhN4AH5eZm cFDDru07ygTQW6XlyrYMHvP765EphwH+oqTyH0gLgReIiZgNpJoo X-Gm-Gg: ASbGncvqVfsdOvgn5/yeGVZuePJ4kcI8DLf6+cxJPE76MrcTzrd2XO5QSxCsq+HjGMs DSXuKcpbobI6ct/Lr5Zh+WuoJHGY01MdQfmPPEh2ZsLqTRC5+EWXzmteb9MCbW8voYT/ybhu+sI atAusw5MMt6rUtx00zhMOxO1s+6HJ+L4QtuvoXE7obrZnBbdTFumWgdJ/+MwGTz0RmvcqAsSG0G 3W3VePW9WtHyTR0qfWVHbvPDly+Na5lTrIiUmqWLwi5Xwp9dlMAPsmGdn+GkA3trXYw4W7qJ9d4 mQPaZcUagYGW7GZeSfKhDYwhXOhr/P8TQVSxXisro1NUequpdLD/9eSN3ytXZYDfjx+I3w== X-Google-Smtp-Source: AGHT+IEckAZcBsdhNAlfb8Tw/dHQA/L90JUKveSjplrvy1bGKlzGx7JrxRsMVaZKrPXvQzh6srGRgQ== X-Received: by 2002:a17:903:41c2:b0:21f:55e:ed64 with SMTP id d9443c01a7336-221a0ec9b4bmr294719535ad.3.1740569201647; Wed, 26 Feb 2025 03:26:41 -0800 (PST) Received: from localhost.localdomain (221x255x40x66.ap221.ftth.ucom.ne.jp. [221.255.40.66]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2230a0009a0sm29800345ad.27.2025.02.26.03.26.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Feb 2025 03:26:41 -0800 (PST) From: Hironori KIKUCHI To: linux-kernel@vger.kernel.org Cc: Hironori KIKUCHI , Neil Armstrong , Jessica Zhang , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jakub Kicinski , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Subject: [PATCH v2 3/3] drm: panel: Add a driver for Generic MIPI-DSI/DPI(+SPI) panels Date: Wed, 26 Feb 2025 20:25:50 +0900 Message-ID: <20250226112552.52494-4-kikuchan98@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250226112552.52494-1-kikuchan98@gmail.com> References: <20250226112552.52494-1-kikuchan98@gmail.com> 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: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Although the MIPI specifications define how to communicate with a panel to display an image, some panels still require a panel-specific initialization sequence to be sent. This is a driver for such generic MIPI-DSI/DPI panels that require initialization with a simple command sequence before use. Its fundamental approach is similar to `panel-mipi-dbi` driver, which sends an initialization sequence stored in a firmware file. Moreover, this driver allows display modes, timings, and panel configuration parameters to be stored in the same file. Signed-off-by: Hironori KIKUCHI --- drivers/gpu/drm/panel/Kconfig | 10 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-mipi.c | 1181 ++++++++++++++++++++++++++++ 3 files changed, 1192 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-mipi.c diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index d7469c565d1..46eea1974a0 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -408,6 +408,16 @@ config DRM_PANEL_MANTIX_MLAF057WE51 has a resolution of 720x1440 pixels, a built in backlight and touch controller. +config DRM_PANEL_MIPI + tristate "Generic MIPI-DSI/DPI(+SPI) panel" + depends on OF + depends on SPI || DRM_MIPI_DSI + select DRM_MIPI_DBI if SPI + depends on BACKLIGHT_CLASS_DEVICE + help + Say Y here if you want to enable support for Generic MIPI-DSI / + MIPI-DPI(+SPI) panels. + config DRM_PANEL_NEC_NL8048HL11 tristate "NEC NL8048HL11 RGB panel" depends on GPIOLIB && OF && SPI diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 7dcf72646ca..22276255a7b 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -40,6 +40,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_LG_SW43408) += panel-lg-sw43408.o obj-$(CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966) += panel-magnachip-d53e6ea8966.o +obj-$(CONFIG_DRM_PANEL_MIPI) += panel-mipi.o obj-$(CONFIG_DRM_PANEL_NEC_NL8048HL11) += panel-nec-nl8048hl11.o obj-$(CONFIG_DRM_PANEL_NEWVISION_NV3051D) += panel-newvision-nv3051d.o obj-$(CONFIG_DRM_PANEL_NEWVISION_NV3052C) += panel-newvision-nv3052c.o diff --git a/drivers/gpu/drm/panel/panel-mipi.c b/drivers/gpu/drm/panel/panel-mipi.c new file mode 100644 index 00000000000..a4da1fd2e1e --- /dev/null +++ b/drivers/gpu/drm/panel/panel-mipi.c @@ -0,0 +1,1181 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Generic MIPI-DSI/DPI(+SPI) Panel Driver + * + * Supported panels: + * - A generic MIPI-DSI panel which implements basic DCS + * - A generic MIPI-DPI panel which implements basic DCS over SPI + * + * Copyright (C) 2025, Hironori KIKUCHI + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include