From nobody Thu Apr 2 00:13:50 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 AA09F36AB58 for ; Wed, 18 Mar 2026 07:34:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773819244; cv=none; b=LPc8j+CTbfO7xaBGFcYY0x389MYFnLXSCnLm7HmX4xBAEOrYuupCaHJe/88mWt8wSUzXO6wonE6YVQD1l2KzY64FzUF6xZRzZsAroHdMY5WDKof9lqNBmoveDl+SXqRvqjQ+3D9fu7ghgi/NuEu/9kFewsmms7SQefR5R4V3GhU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773819244; c=relaxed/simple; bh=Bakl2udDDGDrHzxFfGN2TpoURpHJWu63L4bSHmSwHTc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n2Afcdc+ENLC/wgR5PtTXYGV5cfeZKeYzCX0DQ9anSziohcRRbgYt8qB43yqWw6r5nUj7fjj6NbYFI8X95W/rkcQjgC5GayxFaeDE5oY4Wbzo7cyRFB/sufRnUwwdewf86fJQPEE6+8IZIFQ+7DL/oUk3ZMdo3HHeDrWY6E7uxk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=amarulasolutions.com; spf=pass smtp.mailfrom=amarulasolutions.com; dkim=pass (1024-bit key) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b=pznKHPUH; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amarulasolutions.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="pznKHPUH" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-482f454be5bso5356105e9.0 for ; Wed, 18 Mar 2026 00:34:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1773819241; x=1774424041; 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=omdjRU/gEJw2gRA8WansNujkZayGVofa0KZ631RBZQs=; b=pznKHPUHTxY+MX+JxM9qiQGrNBnczEOKjUbeligIYpX7zndoeJRGbmPLordpTtAuMg +wMr3d9bAGHznD1+pnOiO2ibuy4Kp8LMUxXmqQJBega3WoOD39jlzliSNtaJXU7q5cFS W3wXZ2iEVFt1jwDf+urkxPCrI16h1Uh2XUTXs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773819241; x=1774424041; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=omdjRU/gEJw2gRA8WansNujkZayGVofa0KZ631RBZQs=; b=aa4EZZlrGsjAaQ2YDrYjz1lm5EAgnPyclYdNWMoDwOrarwI6YSVkaok/dhnk8LrJTV DLAqLE0JwXEp7SU04kZTxH71czVPPGh/MK+Tf/sZNC9cIHWOp0nd1wvbBRfm620aVjYQ smpSBe4pNX2IOg9ZYf1+7h7EGc244HNKGNdORU84EFH7BHLItNfc5V2TiYDRquE1ErD4 yWr4LeWFfFn40oh8xYJyYgzD3mE9xs5GHBLKkhFa5RuKhwGGBr9Jfam1QhB8XBNM74nA 3oWLucecT7YZMZTSMzX6aOTiPIbPPl9d8wSd+/zmLm4UZk+Ne35ra750SJjtArCOj0eT fwAg== X-Gm-Message-State: AOJu0YynCuSlzjK6+LAkpb6dJtrEaFJ8AqSYT3zDDxyHlPP/FyTHJWEX RnXL8O/4SiAjoB9S9K/DWTlOO26B5fBKghgz/7QascT3+cHuU6zwYJkKyJ7u7xA2j8x7TuATjaS 4cSJF X-Gm-Gg: ATEYQzxUJ7Q9lktTp5s7ZerV/YBc/zhKB5p4aqUst8M5S1lTaW05tvfQQdAEatRy+DA reufOg1P0xCpsZUWksRK4Czaf1N6C36JyL/h6Ucl0L/a6MY8A60Bi1GmFOMHJEkOyaC4pc1sTVJ telHAi9gyiGi6Gmp02US7UhcDAiRKt+uF2R2H9gu6QmUQMELd4eJt8FiOukdGokaFqrRLS3Jauo QXzdcYlPimwU+YLGpLg6ae/R5PmvVjtgIAIN01oayUu3FDthcTAZn7TtobMdR0U7FU8s7gmf4ZQ zxplPvsx9fp0E+52dXJnQvxhTJzakzBp7XmFDE02QHOcT1fCq2lOP26ui3ZoormtsAUX5C2NULE 3sC23uCLDbjvewZBrpLu+GNF65nIfYHVyGZSxQGEh4uUKjVNZQpxZvTI771eN89PstwcOyNNGBX 8qTP3aUciAw+yO8b8EW8jhVhKnOE+JcPFAz1JluqLOkeUCU7XjlgwW+Eq/rIYeJVniavXPp2JDO LcIXXvgHUEhWkPQeIV40g5XDA0DQKwoGZHPlCqwpe+y2D42Lo7EsU2V3tfDpUQ/ZBsSrYedj9Ez wUUdjUl+629wgoPuYMDtYQ== X-Received: by 2002:a05:600c:a0d:b0:485:3e00:944a with SMTP id 5b1f17b1804b1-486f40c1975mr38877825e9.9.1773819240838; Wed, 18 Mar 2026 00:34:00 -0700 (PDT) Received: from dario-ThinkPad-P14s-Gen-5.homenet.telecomitalia.it (host-87-9-97-160.retail.telecomitalia.it. [87.9.97.160]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f45f7e96sm25615765e9.0.2026.03.18.00.33.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 00:34:00 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-amarula@amarulasolutions.com, Dario Binacchi , Neil Armstrong , David Airlie , Jessica Zhang , Maarten Lankhorst , Maxime Ripard , Michael Walle , Simona Vetter , Thomas Zimmermann , dri-devel@lists.freedesktop.org Subject: [PATCH v5 1/4] drm/panel: ilitek-ili9806e: rename to specific DSI driver Date: Wed, 18 Mar 2026 08:32:50 +0100 Message-ID: <20260318073346.18041-2-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260318073346.18041-1-dario.binacchi@amarulasolutions.com> References: <20260318073346.18041-1-dario.binacchi@amarulasolutions.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" The Ilitek ILI9806E controller can support different transport buses, such as MIPI-DSI and SPI. The current implementation is specific to the MIPI-DSI interface. In preparation for adding SPI support, rename the current Kconfig symbol and files to be DSI-specific, clarifying the current scope of the code. Since DRM_PANEL_ILITEK_ILI9806E is not used in any in-tree defconfig, the symbol is renamed directly to DRM_PANEL_ILITEK_ILI9806E_DSI without providing a legacy compatibility alias. Signed-off-by: Dario Binacchi Reviewed-by: Neil Armstrong --- Changes in v5: - Add Reviewed-by tag of Neil Armstrong MAINTAINERS | 2 +- drivers/gpu/drm/panel/Kconfig | 6 +++--- drivers/gpu/drm/panel/Makefile | 2 +- ...{panel-ilitek-ili9806e.c =3D> panel-ilitek-ili9806e-dsi.c} | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename drivers/gpu/drm/panel/{panel-ilitek-ili9806e.c =3D> panel-ilitek-il= i9806e-dsi.c} (99%) diff --git a/MAINTAINERS b/MAINTAINERS index d7241695df96..0ac6e344ea01 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8028,7 +8028,7 @@ F: drivers/gpu/drm/panel/panel-ilitek-ili9805.c DRM DRIVER FOR ILITEK ILI9806E PANELS M: Michael Walle S: Maintained -F: drivers/gpu/drm/panel/panel-ilitek-ili9806e.c +F: drivers/gpu/drm/panel/panel-ilitek-ili9806e-dsi.c =20 DRM DRIVER FOR JADARD JD9365DA-H3 MIPI-DSI LCD PANELS M: Jagan Teki diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 307152ad7759..142f32a1d256 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -257,14 +257,14 @@ config DRM_PANEL_ILITEK_ILI9805 Say Y if you want to enable support for panels based on the Ilitek ILI9805 controller. =20 -config DRM_PANEL_ILITEK_ILI9806E - tristate "Ilitek ILI9806E-based panels" +config DRM_PANEL_ILITEK_ILI9806E_DSI + tristate "Ilitek ILI9806E-based DSI panels" depends on OF depends on DRM_MIPI_DSI depends on BACKLIGHT_CLASS_DEVICE help Say Y if you want to enable support for panels based on the - Ilitek ILI9806E controller. + Ilitek ILI9806E controller using DSI. =20 config DRM_PANEL_ILITEK_ILI9881C tristate "Ilitek ILI9881C-based panels" diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index aeffaa95666d..2ceeec7e2110 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -26,7 +26,7 @@ obj-$(CONFIG_DRM_PANEL_HYDIS_HV101HD1) +=3D panel-hydis-h= v101hd1.o obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) +=3D panel-ilitek-ili9322.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) +=3D panel-ilitek-ili9341.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9805) +=3D panel-ilitek-ili9805.o -obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9806E) +=3D panel-ilitek-ili9806e.o +obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9806E_DSI) +=3D panel-ilitek-ili9806e-dsi= .o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9881C) +=3D panel-ilitek-ili9881c.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9882T) +=3D panel-ilitek-ili9882t.o obj-$(CONFIG_DRM_PANEL_INNOLUX_EJ030NA) +=3D panel-innolux-ej030na.o diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9806e.c b/drivers/gpu/dr= m/panel/panel-ilitek-ili9806e-dsi.c similarity index 99% rename from drivers/gpu/drm/panel/panel-ilitek-ili9806e.c rename to drivers/gpu/drm/panel/panel-ilitek-ili9806e-dsi.c index 18aa6222b0c5..c337c4f1a1c7 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9806e.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9806e-dsi.c @@ -561,5 +561,5 @@ module_mipi_dsi_driver(ili9806e_dsi_driver); =20 MODULE_AUTHOR("Gunnar Dibbern "); MODULE_AUTHOR("Michael Walle "); -MODULE_DESCRIPTION("Ilitek ILI9806E Controller Driver"); +MODULE_DESCRIPTION("Ilitek ILI9806E Controller DSI Driver"); MODULE_LICENSE("GPL"); --=20 2.43.0 From nobody Thu Apr 2 00:13:50 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (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 EA24436B056 for ; Wed, 18 Mar 2026 07:34:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773819248; cv=none; b=fjwu0o71LBCYyFdtatPliM8bTWvkI8aPMCAGbSFLz4SYS2UPdLstBlffYv23cZISGwlyCkNsJAuFxsLFr5QBdOQA3vVqfPum77iRxDVpvrt6IbkgrbuNTB00C8j9G/qUfFDxP2LE2nke+3cZhHKSruuu82bN6b6muOZdpc1TXqk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773819248; c=relaxed/simple; bh=WClGzPMTe5dfJ6h8zZiZpv2YfsV2oCEUR8N/vL8N1hk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hw8YUs8kg/Do1UBoqlIt7MtNPKu2P9X3l/38BtBG/dEsG1lGdZpI1TfBC4xA4vnnVSQnp1w9F0jn4ZmXrxM9g1fmMDcaavyaOtAkcNUhctzwrzpZXTMaXQ2D3oyB7CznhR9Hnj2/D10aGSXesWqLCnhiMyzLJcoexLEXYy1966o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=amarulasolutions.com; spf=pass smtp.mailfrom=amarulasolutions.com; dkim=pass (1024-bit key) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b=k48lHOKA; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=amarulasolutions.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amarulasolutions.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amarulasolutions.com header.i=@amarulasolutions.com header.b="k48lHOKA" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-485410a0a8aso58803625e9.2 for ; Wed, 18 Mar 2026 00:34:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1773819244; x=1774424044; 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=M3u4l6KJxfcF4Ec1QdU4IuVTPNuU4YibXUQsw0zNgHQ=; b=k48lHOKAFYECTI7CRebvuR4jD7T/tQNtoIXJkZV00+yzNFskhh6qD3eB3xs44qHYaN 0g6xPugUSZpP7WKUDFkX0PGWITFCzp2T72C19U4jNt2VvnwqdxL/+Tfxt1DRsrejDy9D NreEBWyABzLQYn32gVYMph3dKQW0sExtwFaFk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773819244; x=1774424044; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=M3u4l6KJxfcF4Ec1QdU4IuVTPNuU4YibXUQsw0zNgHQ=; b=XgJnTUVx/i6l5JBMA4DaT371DLhtevynUPQxB+tmPiyiljCR7/oWx4S1DL1RFYNbB8 Vj/xop6HdN+H9aRdry6sHVMWTa2CQZEBl+El/MnGvd8M1e3psfnzv36K53k/zn3ILcLt 7dtSVTOWbuiafTGUjCF8avvnqFkPoxybqCmPpg2YIVVs+JJiGSSrAzEdczQdTsuHggBF bLq2s5FXECTgjbeP4wGsqAaI9EwO00xuySkUycNc4W1bOXh4h1JxAZdFv9rZywT4KT9h 0LYeigNdXIUvGSEAJmrNtzJqrnnH4m0RXaqQL8XW/qS8fnCZAnjez3d8cK+UnPv1ZnCH TLaQ== X-Gm-Message-State: AOJu0Yyn43x++/mdXesXW9PwLGB7nuT9gZqbdfO0EHeVBLJkGr8UdZoq uD0OoJFCOgHXNup0B7QKd4AoAMn0Ske1TNAJcEiGQjDxxw99SLBkG53NhnsD9TV3KubOo2dbqpn aQaiW X-Gm-Gg: ATEYQzy6IUaAxWs44jQv5JvSyMzEQlrood7asAbfHS/usEthFUo+VHu3zJTonVmuySo EFZL//DcH/OVhj58l/dhUIvJjmeq2CSAtiJsEKQ3U9g3LMfCK7QlCPks9JalIyfXSkrAvuzYduv 5HdYulsxUByuT5E0D7XlQvay2vztBXMiGaAnmoNXGkLt/DxUYXqL/UYl02AZgYELWdSUXlCRIV9 iv+Mjh/aYFOCKcMbzYGEnopk42y/gnis9WO+D/KkleXQloPjhMQq9BoLJNvItrw11CvF9dXSDhJ LUvoP0BaVFlJd2wWKhvBauRrajKRH39urJBNW5CL7RbdUIZrcXmsHZkEvXqz8kAv15641nnalSa +PIzji26T2Vu8zBbl9eM1xlBucimAYNo+0xo4cg32GUaHkCkQb8sU21AQZiADWrChogCPwzdRMF 9D2lTmcH2eUST+zR+9QLEWtyPcJdlm/lLHJ72Cu2gCh6oS5b61WEqB/zNdYS6s5FuSIDMalg/CL neS0VVx2Ce8i+2IL6BxDbpcVBWtWjgMlB1eIouQnzmz1IwF6J8KCcU3XCN67MNFR+CPZP4byF3l i0dXBg+ZC1b8AhuBKJ0AfQ== X-Received: by 2002:a05:600c:8a6:b0:485:35ee:f836 with SMTP id 5b1f17b1804b1-486f4422104mr24071425e9.2.1773819243875; Wed, 18 Mar 2026 00:34:03 -0700 (PDT) Received: from dario-ThinkPad-P14s-Gen-5.homenet.telecomitalia.it (host-87-9-97-160.retail.telecomitalia.it. [87.9.97.160]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f45f7e96sm25615765e9.0.2026.03.18.00.34.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 00:34:02 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-amarula@amarulasolutions.com, Dario Binacchi , Neil Armstrong , David Airlie , Jessica Zhang , Maarten Lankhorst , Maxime Ripard , Michael Walle , Simona Vetter , Thomas Zimmermann , dri-devel@lists.freedesktop.org Subject: [PATCH v5 2/4] drm/panel: ilitek-ili9806e: split core and DSI logic Date: Wed, 18 Mar 2026 08:32:51 +0100 Message-ID: <20260318073346.18041-3-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260318073346.18041-1-dario.binacchi@amarulasolutions.com> References: <20260318073346.18041-1-dario.binacchi@amarulasolutions.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" Split the driver to support multiple transport buses. The core logic (power, GPIO, backlight) is moved to a dedicated core module, while DSI-specific code is restricted to the DSI module. Introduce DRM_PANEL_ILITEK_ILI9806E_CORE as a hidden Kconfig symbol selected by the bus-specific configuration. Signed-off-by: Dario Binacchi Reviewed-by: Neil Armstrong --- Changes in v5: - Add Reviewed-by tag of Neil Armstrong Changes in v4: - Fix "WARNING: unmet direct dependencies detected for DRM_PANEL_ILITEK_ILI9806E_CORE" reported by kernel test robot MAINTAINERS | 2 +- drivers/gpu/drm/panel/Kconfig | 4 + drivers/gpu/drm/panel/Makefile | 1 + .../drm/panel/panel-ilitek-ili9806e-core.c | 129 +++++++++++++++ .../drm/panel/panel-ilitek-ili9806e-core.h | 15 ++ .../gpu/drm/panel/panel-ilitek-ili9806e-dsi.c | 151 +++++------------- 6 files changed, 193 insertions(+), 109 deletions(-) create mode 100644 drivers/gpu/drm/panel/panel-ilitek-ili9806e-core.c create mode 100644 drivers/gpu/drm/panel/panel-ilitek-ili9806e-core.h diff --git a/MAINTAINERS b/MAINTAINERS index 0ac6e344ea01..fcb91fe8d061 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8028,7 +8028,7 @@ F: drivers/gpu/drm/panel/panel-ilitek-ili9805.c DRM DRIVER FOR ILITEK ILI9806E PANELS M: Michael Walle S: Maintained -F: drivers/gpu/drm/panel/panel-ilitek-ili9806e-dsi.c +F: drivers/gpu/drm/panel/panel-ilitek-ili9806e-* =20 DRM DRIVER FOR JADARD JD9365DA-H3 MIPI-DSI LCD PANELS M: Jagan Teki diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 142f32a1d256..7fc20421cba5 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -257,11 +257,15 @@ config DRM_PANEL_ILITEK_ILI9805 Say Y if you want to enable support for panels based on the Ilitek ILI9805 controller. =20 +config DRM_PANEL_ILITEK_ILI9806E_CORE + tristate + config DRM_PANEL_ILITEK_ILI9806E_DSI tristate "Ilitek ILI9806E-based DSI panels" depends on OF depends on DRM_MIPI_DSI depends on BACKLIGHT_CLASS_DEVICE + select DRM_PANEL_ILITEK_ILI9806E_CORE help Say Y if you want to enable support for panels based on the Ilitek ILI9806E controller using DSI. diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 2ceeec7e2110..f56dafb36499 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -26,6 +26,7 @@ obj-$(CONFIG_DRM_PANEL_HYDIS_HV101HD1) +=3D panel-hydis-h= v101hd1.o obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) +=3D panel-ilitek-ili9322.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) +=3D panel-ilitek-ili9341.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9805) +=3D panel-ilitek-ili9805.o +obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9806E_CORE) +=3D panel-ilitek-ili9806e-co= re.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9806E_DSI) +=3D panel-ilitek-ili9806e-dsi= .o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9881C) +=3D panel-ilitek-ili9881c.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9882T) +=3D panel-ilitek-ili9882t.o diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9806e-core.c b/drivers/g= pu/drm/panel/panel-ilitek-ili9806e-core.c new file mode 100644 index 000000000000..c088685d9d85 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9806e-core.c @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Ilitek ILI9806E core driver. + * + * Copyright (c) 2026 Amarula Solutions, Dario Binacchi + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "panel-ilitek-ili9806e-core.h" + +struct ili9806e { + void *transport; + struct drm_panel panel; + + struct regulator_bulk_data supplies[2]; + struct gpio_desc *reset_gpio; +}; + +static const char * const regulator_names[] =3D { + "vdd", + "vccio", +}; + +void *ili9806e_get_transport(struct drm_panel *panel) +{ + struct ili9806e *ctx =3D container_of(panel, struct ili9806e, panel); + + return ctx->transport; +} +EXPORT_SYMBOL_GPL(ili9806e_get_transport); + +int ili9806e_power_on(struct device *dev) +{ + struct ili9806e *ctx =3D dev_get_drvdata(dev); + int ret; + + gpiod_set_value(ctx->reset_gpio, 1); + + ret =3D regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + if (ret) { + dev_err(dev, "regulator bulk enable failed: %d\n", ret); + return ret; + } + + usleep_range(10000, 20000); + gpiod_set_value(ctx->reset_gpio, 0); + usleep_range(10000, 20000); + + return 0; +} +EXPORT_SYMBOL_GPL(ili9806e_power_on); + +int ili9806e_power_off(struct device *dev) +{ + struct ili9806e *ctx =3D dev_get_drvdata(dev); + int ret; + + gpiod_set_value(ctx->reset_gpio, 1); + + ret =3D regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + if (ret) + dev_err(dev, "regulator bulk disable failed: %d\n", ret); + + return ret; +} +EXPORT_SYMBOL_GPL(ili9806e_power_off); + +int ili9806e_probe(struct device *dev, void *transport, + const struct drm_panel_funcs *funcs, + int connector_type) +{ + struct ili9806e *ctx; + int i, ret; + + ctx =3D devm_kzalloc(dev, sizeof(struct ili9806e), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + dev_set_drvdata(dev, ctx); + ctx->transport =3D transport; + + for (i =3D 0; i < ARRAY_SIZE(ctx->supplies); i++) + ctx->supplies[i].supply =3D regulator_names[i]; + + ret =3D devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies), + ctx->supplies); + if (ret) + return dev_err_probe(dev, ret, "failed to get regulators\n"); + + ctx->reset_gpio =3D devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); + if (IS_ERR(ctx->reset_gpio)) + return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), + "Failed to get reset-gpios\n"); + + drm_panel_init(&ctx->panel, dev, funcs, connector_type); + + ret =3D drm_panel_of_backlight(&ctx->panel); + if (ret) + return dev_err_probe(dev, ret, "Failed to get backlight\n"); + + ctx->panel.prepare_prev_first =3D true; + drm_panel_add(&ctx->panel); + + return 0; + +} +EXPORT_SYMBOL_GPL(ili9806e_probe); + +void ili9806e_remove(struct device *dev) +{ + struct ili9806e *ctx =3D dev_get_drvdata(dev); + + drm_panel_remove(&ctx->panel); +} +EXPORT_SYMBOL_GPL(ili9806e_remove); + +MODULE_AUTHOR("Dario Binacchi "); +MODULE_AUTHOR("Gunnar Dibbern "); +MODULE_AUTHOR("Michael Walle "); +MODULE_DESCRIPTION("Ilitek ILI9806E Controller Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9806e-core.h b/drivers/g= pu/drm/panel/panel-ilitek-ili9806e-core.h new file mode 100644 index 000000000000..dddece62cf42 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9806e-core.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef _PANEL_ILITEK_ILI9806E_CORE_H +#define _PANEL_ILITEK_ILI9806E_CORE_H + +void *ili9806e_get_transport(struct drm_panel *panel); +int ili9806e_power_off(struct device *dev); +int ili9806e_power_on(struct device *dev); + +int ili9806e_probe(struct device *dev, void *transport, + const struct drm_panel_funcs *funcs, + int connector_type); +void ili9806e_remove(struct device *dev); + +#endif /* _PANEL_ILITEK_ILI9806E_CORE_H */ diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9806e-dsi.c b/drivers/gp= u/drm/panel/panel-ilitek-ili9806e-dsi.c index c337c4f1a1c7..ecdbed8d4a3a 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9806e-dsi.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9806e-dsi.c @@ -1,15 +1,12 @@ // SPDX-License-Identifier: GPL-2.0 =20 -#include #include #include #include -#include #include #include #include #include -#include =20 #include #include @@ -18,7 +15,9 @@ =20 #include