From: "Kory Maincent (TI.com)" <kory.maincent@bootlin.com>
To: Jyri Sarha <jyri.sarha@iki.fi>,
Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>,
Simona Vetter <simona@ffwll.ch>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Russell King <linux@armlinux.org.uk>,
Bartosz Golaszewski <brgl@bgdev.pl>,
Tony Lindgren <tony@atomide.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Robert Foss <rfoss@kernel.org>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Jonas Karlman <jonas@kwiboo.se>,
Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Markus Schneider-Pargmann <msp@baylibre.com>,
Luca Ceresoli <luca.ceresoli@bootlin.com>,
Louis Chauvet <louis.chauvet@bootlin.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Miguel Gazquez <miguel.gazquez@bootlin.com>,
dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-omap@vger.kernel.org,
"Kory Maincent (TI.com)" <kory.maincent@bootlin.com>
Subject: [PATCH 09/21] drm/tilcdc: Remove tilcdc_panel_info structure
Date: Wed, 26 Nov 2025 18:35:51 +0100 [thread overview]
Message-ID: <20251126-feature_tilcdc-v1-9-49b9ef2e3aa0@bootlin.com> (raw)
In-Reply-To: <20251126-feature_tilcdc-v1-0-49b9ef2e3aa0@bootlin.com>
Remove the tilcdc_panel_info structure and its associated helper
function as the structure contains only redundant or unused parameters.
Most panel configuration parameters in tilcdc_panel_info are either:
- Already represented by existing DRM mode flags (invert_pxl_clk,
sync_edge via DRM_BUS_FLAG_*), or
- Set to identical values across all instances (panel_info_default),
making them effectively constants
The removed fifo_th field is already handled by priv->fifo_th when set.
Other removed fields (tft_alt_mode, raster_order) were always set to 0
in the only instance (panel_info_default) and thus had no effect.
This simplifies the code by eliminating unnecessary abstraction while
preserving all functional behavior.
Signed-off-by: Kory Maincent (TI.com) <kory.maincent@bootlin.com>
---
drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 29 +++-------------------
drivers/gpu/drm/tilcdc/tilcdc_drv.h | 42 --------------------------------
drivers/gpu/drm/tilcdc/tilcdc_external.c | 14 -----------
3 files changed, 3 insertions(+), 82 deletions(-)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
index a244051ab5163..3955b3b99befe 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
@@ -31,7 +31,6 @@ struct tilcdc_crtc {
struct drm_crtc base;
struct drm_plane primary;
- const struct tilcdc_panel_info *info;
struct drm_pending_vblank_event *event;
struct mutex enable_lock;
bool enabled;
@@ -272,14 +271,10 @@ static void tilcdc_crtc_set_mode(struct drm_crtc *crtc)
struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc);
struct drm_device *dev = crtc->dev;
struct tilcdc_drm_private *priv = dev->dev_private;
- const struct tilcdc_panel_info *info = tilcdc_crtc->info;
uint32_t reg, hbp, hfp, hsw, vbp, vfp, vsw;
struct drm_display_mode *mode = &crtc->state->adjusted_mode;
struct drm_framebuffer *fb = crtc->primary->state->fb;
- if (WARN_ON(!info))
- return;
-
if (WARN_ON(!fb))
return;
@@ -287,12 +282,11 @@ static void tilcdc_crtc_set_mode(struct drm_crtc *crtc)
reg = tilcdc_read(dev, LCDC_DMA_CTRL_REG) & ~0x00000770;
/* Use 16 bit DMA burst size by default */
reg |= LCDC_DMA_BURST_SIZE(LCDC_DMA_BURST_16);
+
if (priv->fifo_th) {
int fifo_th_val = const_ilog2(priv->fifo_th) - 3;
reg |= (fifo_th_val << 8);
- } else {
- reg |= (info->fifo_th << 8);
}
tilcdc_write(dev, LCDC_DMA_CTRL_REG, reg);
@@ -360,8 +354,6 @@ static void tilcdc_crtc_set_mode(struct drm_crtc *crtc)
LCDC_V2_TFT_24BPP_MODE | LCDC_V2_TFT_24BPP_UNPACK |
0x000ff000 /* Palette Loading Delay bits */);
reg |= LCDC_TFT_MODE; /* no monochrome/passive support */
- if (info->tft_alt_mode)
- reg |= LCDC_TFT_ALT_ENABLE;
if (priv->rev == 2) {
switch (fb->format->format) {
case DRM_FORMAT_BGR565:
@@ -384,16 +376,13 @@ static void tilcdc_crtc_set_mode(struct drm_crtc *crtc)
reg |= 128 << 12;
tilcdc_write(dev, LCDC_RASTER_CTRL_REG, reg);
- if (info->invert_pxl_clk ||
- mode->flags == DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE)
-
+ if (mode->flags == DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE)
tilcdc_set(dev, LCDC_RASTER_TIMING_2_REG, LCDC_INVERT_PIXEL_CLOCK);
else
tilcdc_clear(dev, LCDC_RASTER_TIMING_2_REG, LCDC_INVERT_PIXEL_CLOCK);
tilcdc_set(dev, LCDC_RASTER_TIMING_2_REG, LCDC_SYNC_CTRL);
- if (info->sync_edge ||
- mode->flags == DRM_BUS_FLAG_SYNC_DRIVE_NEGEDGE)
+ if (mode->flags == DRM_BUS_FLAG_SYNC_DRIVE_NEGEDGE)
tilcdc_set(dev, LCDC_RASTER_TIMING_2_REG, LCDC_SYNC_EDGE);
else
tilcdc_clear(dev, LCDC_RASTER_TIMING_2_REG, LCDC_SYNC_EDGE);
@@ -408,11 +397,6 @@ static void tilcdc_crtc_set_mode(struct drm_crtc *crtc)
else
tilcdc_clear(dev, LCDC_RASTER_TIMING_2_REG, LCDC_INVERT_VSYNC);
- if (info->raster_order)
- tilcdc_set(dev, LCDC_RASTER_CTRL_REG, LCDC_RASTER_ORDER);
- else
- tilcdc_clear(dev, LCDC_RASTER_CTRL_REG, LCDC_RASTER_ORDER);
-
tilcdc_crtc_set_clk(crtc);
tilcdc_crtc_load_palette(crtc);
@@ -839,13 +823,6 @@ static const struct drm_crtc_helper_funcs tilcdc_crtc_helper_funcs = {
.atomic_flush = tilcdc_crtc_atomic_flush,
};
-void tilcdc_crtc_set_panel_info(struct drm_crtc *crtc,
- const struct tilcdc_panel_info *info)
-{
- struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc);
- tilcdc_crtc->info = info;
-}
-
void tilcdc_crtc_update_clk(struct drm_crtc *crtc)
{
struct drm_device *dev = crtc->dev;
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
index c23b593dc61f6..181b9d7a515b6 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
@@ -114,53 +114,11 @@ void tilcdc_module_init(struct tilcdc_module *mod, const char *name,
const struct tilcdc_module_ops *funcs);
void tilcdc_module_cleanup(struct tilcdc_module *mod);
-/* Panel config that needs to be set in the crtc, but is not coming from
- * the mode timings. The display module is expected to call
- * tilcdc_crtc_set_panel_info() to set this during modeset.
- */
-struct tilcdc_panel_info {
-
- /* AC Bias Pin Frequency */
- uint32_t ac_bias;
-
- /* AC Bias Pin Transitions per Interrupt */
- uint32_t ac_bias_intrpt;
-
- /* DMA burst size */
- uint32_t dma_burst_sz;
-
- /* Bits per pixel */
- uint32_t bpp;
-
- /* FIFO DMA Request Delay */
- uint32_t fdd;
-
- /* TFT Alternative Signal Mapping (Only for active) */
- bool tft_alt_mode;
-
- /* Invert pixel clock */
- bool invert_pxl_clk;
-
- /* Horizontal and Vertical Sync Edge: 0=rising 1=falling */
- uint32_t sync_edge;
-
- /* Horizontal and Vertical Sync: Control: 0=ignore */
- uint32_t sync_ctrl;
-
- /* Raster Data Order Select: 1=Most-to-least 0=Least-to-most */
- uint32_t raster_order;
-
- /* DMA FIFO threshold */
- uint32_t fifo_th;
-};
-
#define DBG(fmt, ...) DRM_DEBUG(fmt"\n", ##__VA_ARGS__)
int tilcdc_crtc_create(struct drm_device *dev);
irqreturn_t tilcdc_crtc_irq(struct drm_crtc *crtc);
void tilcdc_crtc_update_clk(struct drm_crtc *crtc);
-void tilcdc_crtc_set_panel_info(struct drm_crtc *crtc,
- const struct tilcdc_panel_info *info);
void tilcdc_crtc_shutdown(struct drm_crtc *crtc);
void tilcdc_crtc_destroy(struct drm_crtc *crtc);
int tilcdc_crtc_update_fb(struct drm_crtc *crtc,
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c
index 2970c41d9c3eb..81c90c2754c6c 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_external.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c
@@ -14,18 +14,6 @@
#include "tilcdc_drv.h"
#include "tilcdc_external.h"
-static const struct tilcdc_panel_info panel_info_default = {
- .ac_bias = 255,
- .ac_bias_intrpt = 0,
- .dma_burst_sz = 16,
- .bpp = 16,
- .fdd = 0x80,
- .tft_alt_mode = 0,
- .sync_edge = 0,
- .sync_ctrl = 1,
- .raster_order = 0,
-};
-
static
struct drm_connector *tilcdc_encoder_find_connector(struct drm_device *ddev,
struct drm_encoder *encoder)
@@ -55,8 +43,6 @@ int tilcdc_attach_bridge(struct drm_device *ddev, struct drm_bridge *bridge)
if (ret)
return ret;
- tilcdc_crtc_set_panel_info(priv->crtc, &panel_info_default);
-
priv->external_connector =
tilcdc_encoder_find_connector(ddev, priv->external_encoder);
if (!priv->external_connector)
--
2.43.0
next prev parent reply other threads:[~2025-11-26 17:37 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-26 17:35 [PATCH 00/21] Clean and update tilcdc driver to support DRM_BRIDGE_ATTACH_NO_CONNECTOR Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 01/21] dt-bindings: display: tilcdc: Convert to DT schema Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 02/21] dt-bindings: display: tilcdc: Add fifo-threshold property Kory Maincent (TI.com)
2025-11-27 8:22 ` Krzysztof Kozlowski
2025-11-27 9:37 ` Kory Maincent
2025-11-26 17:35 ` [PATCH 03/21] drm/tilcdc: Remove simulate_vesa_sync flag Kory Maincent (TI.com)
2025-12-10 18:10 ` Luca Ceresoli
2025-12-11 9:40 ` Kory Maincent
2025-12-11 9:47 ` Luca Ceresoli
2025-11-26 17:35 ` [PATCH 04/21] drm/tilcdc: Add support for DRM bus flags and simplify panel config Kory Maincent (TI.com)
2025-12-10 18:13 ` Luca Ceresoli
2025-11-26 17:35 ` [PATCH 05/21] ARM: dts: omap: Bind panel to panel-dpi instead of ti,tilcdc,panel driver Kory Maincent (TI.com)
2025-12-01 14:13 ` Tomi Valkeinen
2025-12-01 21:46 ` Krzysztof Kozlowski
2025-12-02 9:42 ` Kory Maincent
2025-12-02 10:28 ` Krzysztof Kozlowski
2025-12-02 10:44 ` Kory Maincent
2025-12-02 10:47 ` Krzysztof Kozlowski
2025-12-02 11:18 ` Kory Maincent
2025-12-02 11:51 ` Tomi Valkeinen
2025-12-02 12:20 ` Krzysztof Kozlowski
2025-12-02 12:56 ` Kory Maincent
2025-12-03 8:30 ` Krzysztof Kozlowski
2025-12-02 12:19 ` Krzysztof Kozlowski
2025-11-26 17:35 ` [PATCH 06/21] dt-bindings: display: tilcdc: Remove panel binding Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 07/21] drm/tilcdc: Remove tilcdc panel driver Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 08/21] drm/tilcdc: Remove component framework support Kory Maincent (TI.com)
2025-12-11 9:42 ` Luca Ceresoli
2025-11-26 17:35 ` Kory Maincent (TI.com) [this message]
2025-12-11 9:44 ` [PATCH 09/21] drm/tilcdc: Remove tilcdc_panel_info structure Luca Ceresoli
2025-11-26 17:35 ` [PATCH 10/21] drm/tilcdc: Remove redundant #endif/#ifdef in debugfs code Kory Maincent (TI.com)
2025-12-10 18:22 ` Luca Ceresoli
2025-11-26 17:35 ` [PATCH 11/21] drm/tilcdc: Remove unused encoder and connector tracking arrays Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 12/21] drm/tilcdc: Rename external_encoder and external_connector to encoder and connector Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 13/21] drm/tilcdc: Rename tilcdc_external to tilcdc_encoder Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 14/21] drm/tilcdc: Remove the useless module list support Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 15/21] drm/tilcdc: Modernize driver initialization and cleanup paths Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 16/21] drm/tilcdc: Remove the use of drm_device private_data Kory Maincent (TI.com)
2025-11-26 17:35 ` [PATCH 17/21] drm/bridge: tda998x: Remove component support Kory Maincent (TI.com)
2025-11-26 17:36 ` [PATCH 18/21] drm/bridge: tda998x: Move tda998x_create/destroy into probe and remove Kory Maincent (TI.com)
2025-11-26 17:36 ` [PATCH 19/21] drm/bridge: tda998x: Remove useless tda998x_connector_destroy wrapper Kory Maincent (TI.com)
2025-11-26 17:36 ` [PATCH 20/21] drm/bridge: tda998x: Add support for DRM_BRIDGE_ATTACH_NO_CONNECTOR Kory Maincent (TI.com)
2025-11-26 17:36 ` [PATCH 21/21] drm/tilcdc: " Kory Maincent (TI.com)
2025-12-02 12:25 ` [PATCH 00/21] Clean and update tilcdc driver to support DRM_BRIDGE_ATTACH_NO_CONNECTOR Swamil Jain
2025-12-03 10:49 ` Kory Maincent
2025-12-03 12:13 ` Swamil Jain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251126-feature_tilcdc-v1-9-49b9ef2e3aa0@bootlin.com \
--to=kory.maincent@bootlin.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=brgl@bgdev.pl \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=jyri.sarha@iki.fi \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=louis.chauvet@bootlin.com \
--cc=luca.ceresoli@bootlin.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=miguel.gazquez@bootlin.com \
--cc=mripard@kernel.org \
--cc=msp@baylibre.com \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=robh@kernel.org \
--cc=simona@ffwll.ch \
--cc=thomas.petazzoni@bootlin.com \
--cc=tomi.valkeinen@ideasonboard.com \
--cc=tony@atomide.com \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).