Commit d0103ceb authored by Sebastian Reichel's avatar Sebastian Reichel Committed by Tomi Valkeinen
Browse files

drm/omap: dsi: use MIPI_DSI_FMT_* instead of OMAP_DSS_DSI_FMT_*

parent a29cc43c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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,
		.pixel_format = MIPI_DSI_FMT_RGB888,
		.vm = &ddata->vm,
		.hs_clk_min = 150000000,
		.hs_clk_max = 300000000,
+23 −32
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include <linux/component.h>
#include <linux/sys_soc.h>

#include <drm/drm_mipi_dsi.h>
#include <video/mipi_display.h>

#include "omapdss.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();
		return 0;
	}
}

#ifdef DSI_PERF_MEASURE
static void dsi_perf_mark_setup(struct dsi_data *dsi)
{
@@ -3241,7 +3226,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);
		int bpp = mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt);
		const struct videomode *vm = &dsi->vm;
		/*
		 * Don't use line buffers if width is greater than the video
@@ -3372,7 +3357,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;
@@ -3500,7 +3485,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;
@@ -3621,7 +3606,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;
@@ -3728,7 +3713,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;
@@ -3739,16 +3724,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:
		case MIPI_DSI_FMT_RGB565:
			data_type = MIPI_DSI_PACKED_PIXEL_STREAM_16;
			break;
		default:
@@ -3826,7 +3811,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;

@@ -3952,7 +3937,7 @@ static int dsi_update(struct omap_dss_device *dssdev, int channel,

#ifdef DSI_PERF_MEASURE
	dsi->update_bytes = dsi->vm.hactive * dsi->vm.vactive *
		dsi_get_pixel_size(dsi->pix_fmt) / 8;
		mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt) / 8;
#endif
	dsi_update_screen_dispc(dsi);

@@ -4013,7 +3998,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);
@@ -4351,7 +4336,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;

	/*
@@ -4384,7 +4369,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;
@@ -4651,7 +4636,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);
@@ -4697,6 +4682,12 @@ static int dsi_set_config(struct omap_dss_device *dssdev,
	dsi->pix_fmt = config->pixel_format;
	dsi->mode = config->mode;

	if (mipi_dsi_pixel_format_to_bpp(dsi->pix_fmt) < 0) {
		DSSERR("invalid pixel format\n");
		r = -EINVAL;
		goto err;
	}

	if (config->mode == OMAP_DSS_DSI_VIDEO_MODE)
		ok = dsi_vm_calc(dsi, config, &ctx);
	else
+2 −8
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@

#include <drm/drm_color_mgmt.h>
#include <drm/drm_crtc.h>
#include <drm/drm_mipi_dsi.h>
#include <drm/drm_mode.h>
#include <linux/device.h>
#include <linux/interrupt.h>
@@ -117,13 +118,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,
@@ -211,7 +205,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;