Hi Sebastian,
Thank you for the patch.
On Tue, Feb 25, 2020 at 12:20:35AM +0100, Sebastian Reichel wrote:
This replaces OMAP specific enum for pixel format with common implementation.
Signed-off-by: Sebastian Reichel sebastian.reichel@collabora.com
.../gpu/drm/omapdrm/displays/panel-dsi-cm.c | 2 +- drivers/gpu/drm/omapdrm/dss/dsi.c | 49 +++++++------------ drivers/gpu/drm/omapdrm/dss/omapdss.h | 10 +--- 3 files changed, 20 insertions(+), 41 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c index e7fe5d702337..e6ebfc35243e 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c @@ -595,7 +595,7 @@ static int dsicm_power_on(struct panel_drv_data *ddata) int r; struct omap_dss_dsi_config dsi_config = { .mode = OMAP_DSS_DSI_CMD_MODE,
.pixel_format = OMAP_DSS_DSI_FMT_RGB888,
.vm = &ddata->vm, .hs_clk_min = 150000000, .hs_clk_max = 300000000,.pixel_format = MIPI_DSI_FMT_RGB888,
diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c index 8c39823a8295..bb2548d091ef 100644 --- a/drivers/gpu/drm/omapdrm/dss/dsi.c +++ b/drivers/gpu/drm/omapdrm/dss/dsi.c @@ -34,6 +34,7 @@ #include <linux/sys_soc.h>
#include <video/mipi_display.h> +#include <drm/drm_mipi_dsi.h>
Maybe sort those two headers alphabetically ?
#include "omapdss.h" #include "dss.h" @@ -410,7 +411,7 @@ struct dsi_data {
struct dss_lcd_mgr_config mgr_config; struct videomode vm;
- enum omap_dss_dsi_pixel_format pix_fmt;
- enum mipi_dsi_pixel_format pix_fmt; enum omap_dss_dsi_mode mode; struct omap_dss_dsi_videomode_timings vm_timings;
@@ -514,22 +515,6 @@ static inline bool wait_for_bit_change(struct dsi_data *dsi, return false; }
-static u8 dsi_get_pixel_size(enum omap_dss_dsi_pixel_format fmt) -{
- switch (fmt) {
- case OMAP_DSS_DSI_FMT_RGB888:
- case OMAP_DSS_DSI_FMT_RGB666:
return 24;
- case OMAP_DSS_DSI_FMT_RGB666_PACKED:
return 18;
- case OMAP_DSS_DSI_FMT_RGB565:
return 16;
- default:
BUG();
Removing a BUG() is really nice :-) I suppose this never happened, or we would have heard of it. Still, is there a top-level location where we could validate the format (assuming it is still used at the end of this series) ? mipi_dsi_pixel_format_to_bpp() returns -EINVAL if the format is invalid, and we don't check for that through the code . It doesn't have to be handled in this patch, it can be done later in the series as you keep reworking the code.
return 0;
- }
-}
#ifdef DSI_PERF_MEASURE static void dsi_perf_mark_setup(struct dsi_data *dsi) { @@ -3239,7 +3224,7 @@ static void dsi_config_vp_num_line_buffers(struct dsi_data *dsi) int num_line_buffers;
if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) {
int bpp = dsi_get_pixel_size(dsi->pix_fmt);
const struct videomode *vm = &dsi->vm; /*int bpp = mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt);
- Don't use line buffers if width is greater than the video
@@ -3370,7 +3355,7 @@ static void dsi_config_cmd_mode_interleaving(struct dsi_data *dsi) int tclk_trail, ths_exit, exiths_clk; bool ddr_alwon; const struct videomode *vm = &dsi->vm;
- int bpp = dsi_get_pixel_size(dsi->pix_fmt);
- int bpp = mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt); int ndl = dsi->num_lanes_used - 1; int dsi_fclk_hsdiv = dsi->user_dsi_cinfo.mX[HSDIV_DSI] + 1; int hsa_interleave_hs = 0, hsa_interleave_lp = 0;
@@ -3498,7 +3483,7 @@ static int dsi_proto_config(struct dsi_data *dsi) dsi_set_lp_rx_timeout(dsi, 0x1fff, true, true); dsi_set_hs_tx_timeout(dsi, 0x1fff, true, true);
- switch (dsi_get_pixel_size(dsi->pix_fmt)) {
- switch (mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt)) { case 16: buswidth = 0; break;
@@ -3619,7 +3604,7 @@ static void dsi_proto_timings(struct dsi_data *dsi) int window_sync = dsi->vm_timings.window_sync; bool hsync_end; const struct videomode *vm = &dsi->vm;
int bpp = dsi_get_pixel_size(dsi->pix_fmt);
int bpp = mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt);
int tl, t_he, width_bytes;
hsync_end = dsi->vm_timings.trans_mode == OMAP_DSS_DSI_PULSE_MODE;
@@ -3726,7 +3711,7 @@ static int dsi_configure_pins(struct omap_dss_device *dssdev, static int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel) { struct dsi_data *dsi = to_dsi_data(dssdev);
- int bpp = dsi_get_pixel_size(dsi->pix_fmt);
- int bpp = mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt); u8 data_type; u16 word_count; int r;
@@ -3737,16 +3722,16 @@ static int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel)
if (dsi->mode == OMAP_DSS_DSI_VIDEO_MODE) { switch (dsi->pix_fmt) {
case OMAP_DSS_DSI_FMT_RGB888:
case MIPI_DSI_FMT_RGB888: data_type = MIPI_DSI_PACKED_PIXEL_STREAM_24; break;
case OMAP_DSS_DSI_FMT_RGB666:
case MIPI_DSI_FMT_RGB666: data_type = MIPI_DSI_PIXEL_STREAM_3BYTE_18; break;
case OMAP_DSS_DSI_FMT_RGB666_PACKED:
case MIPI_DSI_FMT_RGB666_PACKED: data_type = MIPI_DSI_PACKED_PIXEL_STREAM_18; break;
case OMAP_DSS_DSI_FMT_RGB565:
default:case MIPI_DSI_FMT_RGB565: data_type = MIPI_DSI_PACKED_PIXEL_STREAM_16; break;
@@ -3824,7 +3809,7 @@ static void dsi_update_screen_dispc(struct dsi_data *dsi)
dsi_vc_config_source(dsi, channel, DSI_VC_SOURCE_VP);
- bytespp = dsi_get_pixel_size(dsi->pix_fmt) / 8;
- bytespp = mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt) / 8; bytespl = w * bytespp; bytespf = bytespl * h;
@@ -3954,7 +3939,7 @@ static int dsi_update(struct omap_dss_device *dssdev, int channel,
#ifdef DSI_PERF_MEASURE dsi->update_bytes = dw * dh *
dsi_get_pixel_size(dsi->pix_fmt) / 8;
mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt) / 8;
#endif dsi_update_screen_dispc(dsi);
@@ -4015,7 +4000,7 @@ static int dsi_display_init_dispc(struct dsi_data *dsi)
dsi->mgr_config.io_pad_mode = DSS_IO_PAD_MODE_BYPASS; dsi->mgr_config.video_port_width =
dsi_get_pixel_size(dsi->pix_fmt);
mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt);
dsi->mgr_config.lcden_sig_polarity = 0;
dss_mgr_set_lcd_config(&dsi->output, &dsi->mgr_config);
@@ -4353,7 +4338,7 @@ static bool dsi_cm_calc(struct dsi_data *dsi, unsigned long pck, txbyteclk;
clkin = clk_get_rate(dsi->pll.clkin);
- bitspp = dsi_get_pixel_size(cfg->pixel_format);
bitspp = mipi_dsi_pixel_format_to_bpp(cfg->pixel_format); ndl = dsi->num_lanes_used - 1;
/*
@@ -4386,7 +4371,7 @@ static bool dsi_vm_calc_blanking(struct dsi_clk_calc_ctx *ctx) { struct dsi_data *dsi = ctx->dsi; const struct omap_dss_dsi_config *cfg = ctx->config;
- int bitspp = dsi_get_pixel_size(cfg->pixel_format);
- int bitspp = mipi_dsi_pixel_format_to_bpp(cfg->pixel_format); int ndl = dsi->num_lanes_used - 1; unsigned long hsclk = ctx->dsi_cinfo.clkdco / 4; unsigned long byteclk = hsclk / 4;
@@ -4653,7 +4638,7 @@ static bool dsi_vm_calc(struct dsi_data *dsi, unsigned long pll_min; unsigned long pll_max; int ndl = dsi->num_lanes_used - 1;
- int bitspp = dsi_get_pixel_size(cfg->pixel_format);
int bitspp = mipi_dsi_pixel_format_to_bpp(cfg->pixel_format); unsigned long byteclk_min;
clkin = clk_get_rate(dsi->pll.clkin);
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h index b0424daaceed..53fea1cbbc2d 100644 --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h @@ -14,6 +14,7 @@ #include <linux/platform_data/omapdss.h> #include <uapi/drm/drm_mode.h>
While at it, I would replace this with
#include <drm/drm_mode.h>
, add a blank line here, and keep the drm headers sorted alphabetically.
Reviewed-by: Laurent Pinchart laurent.pinchart@ideasonboard.com
#include <drm/drm_crtc.h> +#include <drm/drm_mipi_dsi.h>
#define DISPC_IRQ_FRAMEDONE (1 << 0) #define DISPC_IRQ_VSYNC (1 << 1) @@ -116,13 +117,6 @@ enum omap_dss_venc_type { OMAP_DSS_VENC_TYPE_SVIDEO, };
-enum omap_dss_dsi_pixel_format {
- OMAP_DSS_DSI_FMT_RGB888,
- OMAP_DSS_DSI_FMT_RGB666,
- OMAP_DSS_DSI_FMT_RGB666_PACKED,
- OMAP_DSS_DSI_FMT_RGB565,
-};
enum omap_dss_dsi_mode { OMAP_DSS_DSI_CMD_MODE = 0, OMAP_DSS_DSI_VIDEO_MODE, @@ -210,7 +204,7 @@ struct omap_dss_dsi_videomode_timings {
struct omap_dss_dsi_config { enum omap_dss_dsi_mode mode;
- enum omap_dss_dsi_pixel_format pixel_format;
enum mipi_dsi_pixel_format pixel_format; const struct videomode *vm;
unsigned long hs_clk_min, hs_clk_max;