mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 14:12:07 +02:00
drm/tilcdc: Remove tilcdc_panel_info structure
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. Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Kory Maincent (TI.com) <kory.maincent@bootlin.com> Link: https://patch.msgid.link/20260123-feature_tilcdc-v5-8-5a44d2aa3f6f@bootlin.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
This commit is contained in:
parent
b8c3fd741f
commit
1184e7785d
|
|
@ -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 = 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,15 +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);
|
||||
|
|
@ -407,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);
|
||||
|
|
@ -838,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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user