exynos: video: change mipi dsi write function parameters correctly

This patch have changed mipi dsi write functions' parameters correctly
so that type cast operations were removed. And mipi dsi payload is
composed with array of panel commands to improve readability.

Signed-off-by: Donghwa Lee <dh09.lee@samsung.com>
This commit is contained in:
Donghwa Lee 2013-08-05 13:34:32 +09:00 committed by Anatolij Gustschin
parent 7855663125
commit 9c17a32591
6 changed files with 66 additions and 63 deletions

View File

@ -291,7 +291,7 @@ struct exynos_platform_mipi_dsim {
*/ */
struct mipi_dsim_master_ops { struct mipi_dsim_master_ops {
int (*cmd_write)(struct mipi_dsim_device *dsim, unsigned int data_id, int (*cmd_write)(struct mipi_dsim_device *dsim, unsigned int data_id,
unsigned int data0, unsigned int data1); const unsigned char *data0, unsigned int data1);
int (*cmd_read)(struct mipi_dsim_device *dsim, unsigned int data_id, int (*cmd_read)(struct mipi_dsim_device *dsim, unsigned int data_id,
unsigned int data0, unsigned int data1); unsigned int data0, unsigned int data1);
int (*get_dsim_frame_done)(struct mipi_dsim_device *dsim); int (*get_dsim_frame_done)(struct mipi_dsim_device *dsim);

View File

@ -50,7 +50,7 @@ static unsigned int dpll_table[15] = {
}; };
static void exynos_mipi_dsi_long_data_wr(struct mipi_dsim_device *dsim, static void exynos_mipi_dsi_long_data_wr(struct mipi_dsim_device *dsim,
unsigned int data0, unsigned int data1) const unsigned char *data0, unsigned int data1)
{ {
unsigned int data_cnt = 0, payload = 0; unsigned int data_cnt = 0, payload = 0;
@ -62,42 +62,40 @@ static void exynos_mipi_dsi_long_data_wr(struct mipi_dsim_device *dsim,
*/ */
if ((data1 - data_cnt) < 4) { if ((data1 - data_cnt) < 4) {
if ((data1 - data_cnt) == 3) { if ((data1 - data_cnt) == 3) {
payload = *(u8 *)(data0 + data_cnt) | payload = data0[data_cnt] |
(*(u8 *)(data0 + (data_cnt + 1))) << 8 | data0[data_cnt + 1] << 8 |
(*(u8 *)(data0 + (data_cnt + 2))) << 16; data0[data_cnt + 2] << 16;
debug("count = 3 payload = %x, %x %x %x\n", debug("count = 3 payload = %x, %x %x %x\n",
payload, *(u8 *)(data0 + data_cnt), payload, data0[data_cnt],
*(u8 *)(data0 + (data_cnt + 1)), data0[data_cnt + 1],
*(u8 *)(data0 + (data_cnt + 2))); data0[data_cnt + 2]);
} else if ((data1 - data_cnt) == 2) { } else if ((data1 - data_cnt) == 2) {
payload = *(u8 *)(data0 + data_cnt) | payload = data0[data_cnt] |
(*(u8 *)(data0 + (data_cnt + 1))) << 8; data0[data_cnt + 1] << 8;
debug("count = 2 payload = %x, %x %x\n", payload, debug("count = 2 payload = %x, %x %x\n", payload,
*(u8 *)(data0 + data_cnt), data0[data_cnt], data0[data_cnt + 1]);
*(u8 *)(data0 + (data_cnt + 1)));
} else if ((data1 - data_cnt) == 1) { } else if ((data1 - data_cnt) == 1) {
payload = *(u8 *)(data0 + data_cnt); payload = data0[data_cnt];
} }
} else { } else {
/* send 4bytes per one time. */ /* send 4bytes per one time. */
payload = *(u8 *)(data0 + data_cnt) | payload = data0[data_cnt] |
(*(u8 *)(data0 + (data_cnt + 1))) << 8 | data0[data_cnt + 1] << 8 |
(*(u8 *)(data0 + (data_cnt + 2))) << 16 | data0[data_cnt + 2] << 16 |
(*(u8 *)(data0 + (data_cnt + 3))) << 24; data0[data_cnt + 3] << 24;
debug("count = 4 payload = %x, %x %x %x %x\n", debug("count = 4 payload = %x, %x %x %x %x\n",
payload, *(u8 *)(data0 + data_cnt), payload, *(u8 *)(data0 + data_cnt),
*(u8 *)(data0 + (data_cnt + 1)), data0[data_cnt + 1],
*(u8 *)(data0 + (data_cnt + 2)), data0[data_cnt + 2],
*(u8 *)(data0 + (data_cnt + 3))); data0[data_cnt + 3]);
} }
exynos_mipi_dsi_wr_tx_data(dsim, payload); exynos_mipi_dsi_wr_tx_data(dsim, payload);
} }
} }
int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id, int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
unsigned int data0, unsigned int data1) const unsigned char *data0, unsigned int data1)
{ {
unsigned int timeout = TRY_GET_FIFO_TIMEOUT; unsigned int timeout = TRY_GET_FIFO_TIMEOUT;
unsigned long delay_val, delay; unsigned long delay_val, delay;
@ -136,8 +134,8 @@ int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
case MIPI_DSI_DCS_SHORT_WRITE_PARAM: case MIPI_DSI_DCS_SHORT_WRITE_PARAM:
case MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE: case MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE:
debug("data0 = %x data1 = %x\n", debug("data0 = %x data1 = %x\n",
data0, data1); data0[0], data0[1]);
exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0, data1); exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0[0], data0[1]);
if (check_rx_ack) { if (check_rx_ack) {
/* process response func should be implemented */ /* process response func should be implemented */
return 0; return 0;
@ -150,7 +148,7 @@ int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
case MIPI_DSI_COLOR_MODE_ON: case MIPI_DSI_COLOR_MODE_ON:
case MIPI_DSI_SHUTDOWN_PERIPHERAL: case MIPI_DSI_SHUTDOWN_PERIPHERAL:
case MIPI_DSI_TURN_ON_PERIPHERAL: case MIPI_DSI_TURN_ON_PERIPHERAL:
exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0, data1); exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0[0], data0[1]);
if (check_rx_ack) { if (check_rx_ack) {
/* process response func should be implemented. */ /* process response func should be implemented. */
return 0; return 0;
@ -172,7 +170,7 @@ int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
case MIPI_DSI_GENERIC_READ_REQUEST_2_PARAM: case MIPI_DSI_GENERIC_READ_REQUEST_2_PARAM:
case MIPI_DSI_DCS_READ: case MIPI_DSI_DCS_READ:
exynos_mipi_dsi_clear_all_interrupt(dsim); exynos_mipi_dsi_clear_all_interrupt(dsim);
exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0, data1); exynos_mipi_dsi_wr_tx_header(dsim, data_id, data0[0], data0[1]);
/* process response func should be implemented. */ /* process response func should be implemented. */
return 0; return 0;
@ -183,21 +181,19 @@ int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
case MIPI_DSI_GENERIC_LONG_WRITE: case MIPI_DSI_GENERIC_LONG_WRITE:
case MIPI_DSI_DCS_LONG_WRITE: case MIPI_DSI_DCS_LONG_WRITE:
{ {
unsigned int data_cnt = 0, payload = 0; unsigned int payload = 0;
/* if data count is less then 4, then send 3bytes data. */ /* if data count is less then 4, then send 3bytes data. */
if (data1 < 4) { if (data1 < 4) {
payload = *(u8 *)(data0) | payload = data0[0] |
*(u8 *)(data0 + 1) << 8 | data0[1] << 8 |
*(u8 *)(data0 + 2) << 16; data0[2] << 16;
exynos_mipi_dsi_wr_tx_data(dsim, payload); exynos_mipi_dsi_wr_tx_data(dsim, payload);
debug("count = %d payload = %x,%x %x %x\n", debug("count = %d payload = %x,%x %x %x\n",
data1, payload, data1, payload, data0[0],
*(u8 *)(data0 + data_cnt), data0[1], data0[2]);
*(u8 *)(data0 + (data_cnt + 1)),
*(u8 *)(data0 + (data_cnt + 2)));
} else { } else {
/* in case that data count is more then 4 */ /* in case that data count is more then 4 */
exynos_mipi_dsi_long_data_wr(dsim, data0, data1); exynos_mipi_dsi_long_data_wr(dsim, data0, data1);

View File

@ -13,7 +13,7 @@
#define _EXYNOS_MIPI_DSI_COMMON_H #define _EXYNOS_MIPI_DSI_COMMON_H
int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id, int exynos_mipi_dsi_wr_data(struct mipi_dsim_device *dsim, unsigned int data_id,
unsigned int data0, unsigned int data1); const unsigned char *data0, unsigned int data1);
int exynos_mipi_dsi_pll_on(struct mipi_dsim_device *dsim, unsigned int enable); int exynos_mipi_dsi_pll_on(struct mipi_dsim_device *dsim, unsigned int enable);
unsigned long exynos_mipi_dsi_change_pll(struct mipi_dsim_device *dsim, unsigned long exynos_mipi_dsi_change_pll(struct mipi_dsim_device *dsim,
unsigned int pre_divider, unsigned int main_divider, unsigned int pre_divider, unsigned int main_divider,

View File

@ -600,7 +600,7 @@ unsigned int exynos_mipi_dsi_get_fifo_state(struct mipi_dsim_device *dsim)
} }
void exynos_mipi_dsi_wr_tx_header(struct mipi_dsim_device *dsim, void exynos_mipi_dsi_wr_tx_header(struct mipi_dsim_device *dsim,
unsigned int di, unsigned int data0, unsigned int data1) unsigned int di, const unsigned char data0, const unsigned char data1)
{ {
struct exynos_mipi_dsim *mipi_dsim = struct exynos_mipi_dsim *mipi_dsim =
(struct exynos_mipi_dsim *)samsung_get_base_mipi_dsim(); (struct exynos_mipi_dsim *)samsung_get_base_mipi_dsim();

View File

@ -91,7 +91,7 @@ unsigned int _exynos_mipi_dsi_get_frame_done_status(struct mipi_dsim_device
*dsim); *dsim);
void _exynos_mipi_dsi_clear_frame_done(struct mipi_dsim_device *dsim); void _exynos_mipi_dsi_clear_frame_done(struct mipi_dsim_device *dsim);
void exynos_mipi_dsi_wr_tx_header(struct mipi_dsim_device *dsim, void exynos_mipi_dsi_wr_tx_header(struct mipi_dsim_device *dsim,
unsigned int di, unsigned int data0, unsigned int data1); unsigned int di, const unsigned char data0, const unsigned char data1);
void exynos_mipi_dsi_wr_tx_data(struct mipi_dsim_device *dsim, void exynos_mipi_dsi_wr_tx_data(struct mipi_dsim_device *dsim,
unsigned int tx_data); unsigned int tx_data);

View File

@ -34,11 +34,11 @@ static void s6e8ax0_panel_cond(struct mipi_dsim_device *dsim_dev)
if (reverse) { if (reverse) {
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send_reverse, data_to_send_reverse,
ARRAY_SIZE(data_to_send_reverse)); ARRAY_SIZE(data_to_send_reverse));
} else { } else {
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, ARRAY_SIZE(data_to_send)); data_to_send, ARRAY_SIZE(data_to_send));
} }
} }
@ -50,8 +50,7 @@ static void s6e8ax0_display_cond(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, data_to_send, ARRAY_SIZE(data_to_send));
ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_gamma_cond(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_gamma_cond(struct mipi_dsim_device *dsim_dev)
@ -65,15 +64,18 @@ static void s6e8ax0_gamma_cond(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, data_to_send, ARRAY_SIZE(data_to_send));
ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_gamma_update(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_gamma_update(struct mipi_dsim_device *dsim_dev)
{ {
struct mipi_dsim_master_ops *ops = dsim_dev->master_ops; struct mipi_dsim_master_ops *ops = dsim_dev->master_ops;
static const unsigned char data_to_send[] = {
0xf7, 0x03
};
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0xf7, 0x3); ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, data_to_send,
ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_etc_source_control(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_etc_source_control(struct mipi_dsim_device *dsim_dev)
@ -84,8 +86,7 @@ static void s6e8ax0_etc_source_control(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, data_to_send, ARRAY_SIZE(data_to_send));
ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_etc_pentile_control(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_etc_pentile_control(struct mipi_dsim_device *dsim_dev)
@ -97,8 +98,7 @@ static void s6e8ax0_etc_pentile_control(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, data_to_send, ARRAY_SIZE(data_to_send));
ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_etc_mipi_control1(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_etc_mipi_control1(struct mipi_dsim_device *dsim_dev)
@ -109,8 +109,7 @@ static void s6e8ax0_etc_mipi_control1(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, data_to_send, ARRAY_SIZE(data_to_send));
ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_etc_mipi_control2(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_etc_mipi_control2(struct mipi_dsim_device *dsim_dev)
@ -121,8 +120,7 @@ static void s6e8ax0_etc_mipi_control2(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, data_to_send, ARRAY_SIZE(data_to_send));
ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_etc_power_control(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_etc_power_control(struct mipi_dsim_device *dsim_dev)
@ -133,14 +131,18 @@ static void s6e8ax0_etc_power_control(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, ARRAY_SIZE(data_to_send)); data_to_send, ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_etc_mipi_control3(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_etc_mipi_control3(struct mipi_dsim_device *dsim_dev)
{ {
struct mipi_dsim_master_ops *ops = dsim_dev->master_ops; struct mipi_dsim_master_ops *ops = dsim_dev->master_ops;
static const unsigned char data_to_send[] = {
0xe3, 0x40
};
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, 0xe3, 0x40); ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE_PARAM, data_to_send,
ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_etc_mipi_control4(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_etc_mipi_control4(struct mipi_dsim_device *dsim_dev)
@ -151,7 +153,7 @@ static void s6e8ax0_etc_mipi_control4(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, ARRAY_SIZE(data_to_send)); data_to_send, ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_elvss_set(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_elvss_set(struct mipi_dsim_device *dsim_dev)
@ -162,24 +164,29 @@ static void s6e8ax0_elvss_set(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, data_to_send, ARRAY_SIZE(data_to_send));
ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_display_on(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_display_on(struct mipi_dsim_device *dsim_dev)
{ {
struct mipi_dsim_master_ops *ops = dsim_dev->master_ops; struct mipi_dsim_master_ops *ops = dsim_dev->master_ops;
static const unsigned char data_to_send[] = {
0x29, 0x00
};
ops->cmd_write(dsim_dev, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE, data_to_send,
MIPI_DSI_DCS_SHORT_WRITE, 0x29, 0x00); ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_sleep_out(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_sleep_out(struct mipi_dsim_device *dsim_dev)
{ {
struct mipi_dsim_master_ops *ops = dsim_dev->master_ops; struct mipi_dsim_master_ops *ops = dsim_dev->master_ops;
static const unsigned char data_to_send[] = {
0x11, 0x00
};
ops->cmd_write(dsim_dev, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_SHORT_WRITE, data_to_send,
MIPI_DSI_DCS_SHORT_WRITE, 0x11, 0x00); ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_apply_level1_key(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_apply_level1_key(struct mipi_dsim_device *dsim_dev)
@ -190,7 +197,7 @@ static void s6e8ax0_apply_level1_key(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, ARRAY_SIZE(data_to_send)); data_to_send, ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_apply_mtp_key(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_apply_mtp_key(struct mipi_dsim_device *dsim_dev)
@ -201,7 +208,7 @@ static void s6e8ax0_apply_mtp_key(struct mipi_dsim_device *dsim_dev)
}; };
ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE, ops->cmd_write(dsim_dev, MIPI_DSI_DCS_LONG_WRITE,
(unsigned int)data_to_send, ARRAY_SIZE(data_to_send)); data_to_send, ARRAY_SIZE(data_to_send));
} }
static void s6e8ax0_panel_init(struct mipi_dsim_device *dsim_dev) static void s6e8ax0_panel_init(struct mipi_dsim_device *dsim_dev)