From nobody Mon Feb 9 01:16:46 2026 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B04F5215190; Wed, 26 Feb 2025 11:26:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740569205; cv=none; b=t02xAUGLVQWChwJe0g3cPlsgADLlacjKI8mN8h9tC6TySxvJSVxtDS5nByLj1E6ppOtLpcw9Zx51iYdwQ5g/2k7KlB/Das3gWB7fp+VdG/YJhw5Y4bOy568Qlw4yCtxqNOIxPN3F6Lw3K38CSpe1Rc4V/kpgcW2Ypk9jorDRdYI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740569205; c=relaxed/simple; bh=Qlt33LYe8EOm2S+/WkWtrKFaaHFJlRnc1i+THTcu99k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gUuR8E4hAPzi04CCZJITPSdJI+w2Es59G+A3khXOKSSriSQvb9cO3MpXmB2kpqzZWBET44K38LL2HKtnLcfZYzpWTiW23DIPdRTy90wI0rLQSK9nwAsSvNiL6TAIQuzI6Q0W8Mj9dU9sFBsAQVxvRjNJcKtvJ3WWTZvBK8NdTf0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=AfWW0nxV; arc=none smtp.client-ip=209.85.214.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AfWW0nxV" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-22337bc9ac3so4196215ad.1; 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=vger.kernel.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=AfWW0nxVgXVI/AdrmGSIQ00Itc/WjLii9MQe0J2naNU+1p2luU6ym/yYkc/XM7kN/O 59g1YyRjL0lnILKQr994iLIOdBn9ray/rYQUODg7J5ptz4sj1ql++l+eBJ2rKFHbwiTq /xO75f/yUEKGouCoXFbwunPDWA9y4v6I0viaXTapAvtqVcS7k8fNXWzX4v8gsipTVqwo hhptDg6B8tzJdXpmQ+pw/icrahjk02qapuTF8Vfv5wB1Go9W7ckEoCsyIGqx5H69G/pS wjKHHFivYsJjdeYcxpogCX0faxHMXdYCYrr4QH6E87yUfKB8xRsfj8meCuEGYukN4jBk rPbg== 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=P7Kpirc93OkHbxMA08oudoPQf+dS0sw5aDdVZZNpy5d8uWv+vthlqOcQWTsrNU56JQ Mec39yGmMm2SFm1whJFAYOS7cRZttayl0F0uxizZySOWrY2PInsl762XaFfIGJ52zo0C cArCRFiXsCdPOeCmJirIaNGbHwENxNAAQo5GWZUam3BbJgt96jeaBuuhmFTy5gXVEkQg a1BIpb2yanhGfByqTmH7IYRSlskw80Oj3TEngXxtsg6h9kBTZxRvkAjZAkruRrjslNMq +k0Wg6A3IAJ+8qMvJaWOlR6YbKyRIAwignAEgQ/Gn1IqvI5UZt7UAiLehmbu8Wa5nt1P mosg== X-Forwarded-Encrypted: i=1; AJvYcCVDxuwxPuLJMlisCrhKJxicHIBfYwP0+/RmSAQIYilAZA/oB7wZrEszKR8tdpYutwn0n19qJYB6enFc@vger.kernel.org X-Gm-Message-State: AOJu0Yw4jcg26ZJRVmH9m5GYHuwv64NPZYkcJftFlSF6jJlyrFig1yqj foOMP8pSY0yes3Icu7/au630mXOk/Eet/B5YltraxqQJj6jI4W1g47+oVpS3 X-Gm-Gg: ASbGncvTatOL4x6/zqvRU7fljRECnRbUJaht681lOO0qoqW4M8qGnnmJyVNMUFmNBqA m9hiRwbMMmHUZ+JbyKv9cUYJhZZ9yIdkkoCnaGpyWM2UgmOm1MML5OMDR5jkn9pew5PNhcD6s+E +AMOwaL7blS3Zq8jNNRKlQlPa8ZVbIm9HfncKRRWWyG4LiiGWMxMnxZ8wZLO7u35wo8E1dqCl/Q YifVGnheaomrIZr3NPrnNeZKJBc1vXa7v/pHWZ9wQz4NYYTyxs3Smzwr7BQktwjTPXiq46Dr1ip GuNeFZuZlYMhLG85fsOyMLqLpdTSBD5ZUBdFvZHLkzD+y5/CjnnoIERVIv/QvZK5SPQ6Ag== 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> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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. =20 +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) +=3D panel-lg-lb035q0= 2.o obj-$(CONFIG_DRM_PANEL_LG_LG4573) +=3D panel-lg-lg4573.o obj-$(CONFIG_DRM_PANEL_LG_SW43408) +=3D panel-lg-sw43408.o obj-$(CONFIG_DRM_PANEL_MAGNACHIP_D53E6EA8966) +=3D panel-magnachip-d53e6ea= 8966.o +obj-$(CONFIG_DRM_PANEL_MIPI) +=3D panel-mipi.o obj-$(CONFIG_DRM_PANEL_NEC_NL8048HL11) +=3D panel-nec-nl8048hl11.o obj-$(CONFIG_DRM_PANEL_NEWVISION_NV3051D) +=3D panel-newvision-nv3051d.o obj-$(CONFIG_DRM_PANEL_NEWVISION_NV3052C) +=3D panel-newvision-nv3052c.o diff --git a/drivers/gpu/drm/panel/panel-mipi.c b/drivers/gpu/drm/panel/pan= el-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