This patch have changed mipi dsi write functions' parameters correctly.
- exynos_mipi_dsi_wr_data()'s 3rd parameter is changed to
'const unsigned char' type.
- exynos_mipi_dsi_wr_tx_header()'s 3rd and 4th parameters were
changed to
'const unsigned char' type.
- s6e8ax0 panel driver does not use type cast operations to write
mipi dsi
commands anymore.
- mipi dsi payload is composed with array of panel commands to improve
readability.
Signed-off-by: Donghwa Lee dh09@samsung.com
---
arch/arm/include/asm/arch-exynos/mipi_dsim.h |2 +-
drivers/video/exynos_mipi_dsi_common.c | 60
--
drivers/video/exynos_mipi_dsi_common.h |2 +-
drivers/video/exynos_mipi_dsi_lowlevel.c |2 +-
drivers/video/exynos_mipi_dsi_lowlevel.h |2 +-
drivers/video/s6e8ax0.c | 59
++---
6 files changed, 65 insertions(+), 62 deletions(-)
diff --git a/arch/arm/include/asm/arch-exynos/mipi_dsim.h
b/arch/arm/include/asm/arch-exynos/mipi_dsim.h
index b73263d..afe7c08 100644
--- a/arch/arm/include/asm/arch-exynos/mipi_dsim.h
+++ b/arch/arm/include/asm/arch-exynos/mipi_dsim.h
@@ -304,7 +304,7 @@ struct exynos_platform_mipi_dsim {
*/
struct mipi_dsim_master_ops {
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,
unsigned int data0, unsigned int data1);
int (*get_dsim_frame_done)(struct mipi_dsim_device *dsim);
diff --git a/drivers/video/exynos_mipi_dsi_common.c
b/drivers/video/exynos_mipi_dsi_common.c
index 6eeb464..ceb6084 100644
--- a/drivers/video/exynos_mipi_dsi_common.c
+++ b/drivers/video/exynos_mipi_dsi_common.c
@@ -63,7 +63,7 @@ static unsigned int dpll_table[15] = {
};
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;
@@ -75,42 +75,40 @@ static void exynos_mipi_dsi_long_data_wr(struct
mipi_dsim_device *dsim,
*/
if ((data1 - data_cnt) 4) {
if ((data1 - data_cnt) == 3) {
-payload = *(u8 *)(data0 + data_cnt) |
-(*(u8 *)(data0 + (data_cnt + 1))) 8 |
-(*(u8 *)(data0 + (data_cnt + 2))) 16;
+payload = data0[data_cnt] |
+data0[data_cnt + 1] 8 |
+data0[data_cnt + 2] 16;
debug(count = 3 payload = %x, %x %x %x\n,
-payload, *(u8 *)(data0 + data_cnt),
-*(u8 *)(data0 + (data_cnt + 1)),
-*(u8 *)(data0 + (data_cnt + 2)));
+payload, data0[data_cnt],
+data0[data_cnt + 1],
+data0[data_cnt + 2]);
} else if ((data1 - data_cnt) == 2) {
-payload = *(u8 *)(data0 + data_cnt) |
-(*(u8 *)(data0 + (data_cnt + 1))) 8;
+payload = data0[data_cnt] |
+data0[data_cnt + 1] 8;
debug(count = 2 payload = %x, %x %x\n, payload,
-*(u8 *)(data0 + data_cnt),
-*(u8 *)(data0 + (data_cnt + 1)));
+data0[data_cnt], data0[data_cnt + 1]);
} else if ((data1 - data_cnt) == 1) {
-payload = *(u8 *)(data0 + data_cnt);
+payload = data0[data_cnt];
}
} else {
/* send 4bytes per one time. */
-payload = *(u8 *)(data0 + data_cnt) |
-(*(u8 *)(data0 + (data_cnt + 1))) 8 |
-(*(u8 *)(data0 + (data_cnt + 2))) 16 |
-(*(u8 *)(data0 + (data_cnt + 3))) 24;
+payload = data0[data_cnt] |
+data0[data_cnt + 1] 8 |
+data0[data_cnt + 2] 16 |
+data0[data_cnt + 3] 24;
debug(count = 4 payload = %x, %x %x %x %x\n,
payload, *(u8 *)(data0 + data_cnt),
-*(u8 *)(data0 + (data_cnt + 1)),
-*(u8 *)(data0 + (data_cnt + 2)),
-*(u8 *)(data0 + (data_cnt + 3)));
-
+data0[data_cnt + 1],
+data0[data_cnt + 2],
+data0[data_cnt + 3]);
}
exynos_mipi_dsi_wr_tx_data(dsim, payload);
}
}
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 long delay_val, delay;
@@ -149,8 +147,8 @@ int exynos_mipi_dsi_wr_data(struct mipi_dsim_device
*dsim, unsigned int data_id,
case MIPI_DSI_DCS_SHORT_WRITE_PARAM:
case