From ab30ec7e069d36a56f60c4807f75cf7807525c4d Mon Sep 17 00:00:00 2001 From: Ke Ai Date: Thu, 22 Mar 2012 18:11:57 +0800 Subject: [PATCH] GFX-Display: support send command align to byte. BZ: 28302 1.before this patch, the DCS parameters max to 8 which not meet some DCS command necessary. 2.another, before this patch, command send align to DWORD, which has potential overwrite panel intrel register problem. here ,update it more dynamic Change-Id: I0d6544e7b8127f03d8a1be25dad41c0834ece77c Signed-off-by: Ke Ai Reviewed-on: http://android.intel.com:8080/40438 Reviewed-by: Xu, Randy Tested-by: Xu, Randy Reviewed-by: buildbot Tested-by: buildbot --- drivers/staging/mrst/drv/auo_sc1_vid.c | 30 ++-- drivers/staging/mrst/drv/gi_sony_cmd.c | 74 +++++----- drivers/staging/mrst/drv/gi_sony_vid.c | 68 ++++----- drivers/staging/mrst/drv/h8c7_cmd.c | 54 +++---- drivers/staging/mrst/drv/h8c7_vid.c | 56 +++---- drivers/staging/mrst/drv/mdfld_dsi_dbi.c | 4 +- drivers/staging/mrst/drv/mdfld_dsi_output.c | 6 +- drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.c | 188 +++++++++++++++--------- drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.h | 12 +- drivers/staging/mrst/drv/tmd_6x10_vid.c | 84 +++++------ drivers/staging/mrst/drv/tmd_vid.c | 24 +-- 11 files changed, 328 insertions(+), 272 deletions(-) diff --git a/drivers/staging/mrst/drv/auo_sc1_vid.c b/drivers/staging/mrst/drv/auo_sc1_vid.c index 46c3c57..f16044e 100644 --- a/drivers/staging/mrst/drv/auo_sc1_vid.c +++ b/drivers/staging/mrst/drv/auo_sc1_vid.c @@ -240,25 +240,25 @@ static int mdfld_dsi_sc1_power_on(struct mdfld_dsi_config *dsi_config) return -EINVAL; } - mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 4, 0); /*change power state*/ - mdfld_dsi_send_mcs_long_hs(sender, sc1_exit_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_exit_sleep_mode, 4, 0); msleep(120); /*enable CABC with backlight off*/ - mdfld_dsi_send_mcs_long_hs(sender, sc1_select_CABC_mode, 1, 0); - mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_off, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_select_CABC_mode, 4, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_off, 4, 0); /*set display on*/ - mdfld_dsi_send_mcs_long_hs(sender, sc1_set_display_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_set_display_on, 4, 0); msleep(21); /*enable BLON , CABC*/ if (drm_psb_enable_sc1_cabc) { - mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_on, 4, 0); printk(KERN_ALERT "enable SC1 cabc\n"); } @@ -293,25 +293,25 @@ static int mdfld_dsi_sc1_power_off(struct mdfld_dsi_config *dsi_config) return err; } - mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 4, 0); /*change power state here*/ - mdfld_dsi_send_mcs_long_hs(sender, sc1_set_display_off, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_set_display_off, 4, 0); /*disable BLCON, disable CABC*/ - mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_off, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_off, 4, 0); printk(KERN_ALERT "disable SC1 cabc\n"); msleep(21); - mdfld_dsi_send_mcs_long_hs(sender, sc1_enter_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_enter_sleep_mode, 4, 0); msleep(120); /*put panel into deep standby mode*/ - mdfld_dsi_send_gen_long_hs(sender, sc1_enter_low_power_mode, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, sc1_enter_low_power_mode, 4, 0); - mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_on, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_on, 4, 0); return 0; } @@ -330,14 +330,14 @@ static int mdfld_dsi_sc1_set_brightness(struct mdfld_dsi_config *dsi_config, duty_val = (255 * level) / 100; - mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 4, 0); /*update duty value*/ sc1_set_brightness[0] = (0x00000051 | (duty_val << 8)); /* [SC1] change backlight control- brightness */ - mdfld_dsi_send_gen_long_hs(sender, sc1_set_brightness, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, sc1_set_brightness, 4, 0); - mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_on, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_on, 4, 0); return 0; } diff --git a/drivers/staging/mrst/drv/gi_sony_cmd.c b/drivers/staging/mrst/drv/gi_sony_cmd.c index 0036046..4e9bb44 100644 --- a/drivers/staging/mrst/drv/gi_sony_cmd.c +++ b/drivers/staging/mrst/drv/gi_sony_cmd.c @@ -123,90 +123,90 @@ static void mdfld_gi_l5f3_dbi_ic_init(struct mdfld_dsi_config *dsi_config, /*wait for 5ms*/ mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_column_add, 2, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_column_add, 8, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_row_add, 2, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_row_add, 8, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_address_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_address_mode, 4, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_pixel_format, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_pixel_format, 4, 0); mdfld_ms_delay(MSLEEP, 5); /* set TE scanline and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_te_scanline, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_te_scanline, 4, 0); mdfld_ms_delay(MSLEEP, 5); /* set TE on and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_tear_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_tear_on, 4, 0); mdfld_ms_delay(MSLEEP, 5); /* set password on and wait for 10ms. */ - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_on, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_on, 4, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_disctl, 5, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_disctl, 20, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pwrctl, 4, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pwrctl, 16, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_vcmctl, 4, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_vcmctl, 16, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_srcctl, 3, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_srcctl, 12, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ifctl, 2, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ifctl, 8, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_panelctl, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_panelctl, 4, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_gammasel, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_gammasel, 4, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pgammactl, 5, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pgammactl, 20, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ngammactl, 5, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ngammactl, 20, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_miectl1, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_miectl1, 4, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_bcmode, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_bcmode, 4, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrmiectl2, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrmiectl2, 4, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrblctl, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrblctl, 4, 0); mdfld_ms_delay(MSLEEP, 5); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_off, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_off, 4, 0); mdfld_ms_delay(MSLEEP, 5); /* set backlight to full brightness and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_full_brightness, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_full_brightness, 16, 0); mdfld_ms_delay(MSLEEP, 5); /* set backlight on and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_turn_on_backlight, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_turn_on_backlight, 4, 0); mdfld_ms_delay(MSLEEP, 5); /* disalble CABC and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_disable_cabc, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_disable_cabc, 4, 0); mdfld_ms_delay(MSLEEP, 5); /* sleep out and wait for 150ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_exit_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_exit_sleep_mode, 4, 0); mdfld_ms_delay(MSLEEP, 150); /* set display on */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_display_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_display_on, 4, 0); mdfld_ms_delay(MSLEEP, 5); dsi_config->drv_ic_inited = 1; @@ -365,7 +365,7 @@ static int __mdfld_gi_sony_dsi_power_on(struct mdfld_dsi_config *dsi_config) return -EINVAL; } - /* mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 1, 0); */ + /* mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 4, 0); */ #if 1 param[0] = 0x00; param[1] = 0x00; @@ -483,28 +483,28 @@ power_err: #else /* change power state */ - mdfld_dsi_send_mcs_long_hs(sender, sc1_exit_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_exit_sleep_mode, 4, 0); msleep(120); /* enable CABC with backlight off */ - mdfld_dsi_send_mcs_long_hs(sender, sc1_set_brightness_max, 1, 0); - mdfld_dsi_send_mcs_long_hs(sender, sc1_select_CABC_mode, 1, 0); - mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_off, 1, 0); - mdfld_dsi_send_mcs_long_hs(sender, sc1_set_te_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_set_brightness_max, 4, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_select_CABC_mode, 4, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_off, 4, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_set_te_on, 4, 0); err = mdfld_dsi_dbi_update_area(dbi_output, 0, 0, 539, 959); if (err) DRM_ERROR("update area failed\n"); /* set display on */ - mdfld_dsi_send_mcs_long_hs(sender, sc1_set_display_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_set_display_on, 4, 0); msleep(21); /* enable BLON, CABC*/ - mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_on, 1, 0); - /* mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_on, 1, 0); */ + mdfld_dsi_send_mcs_long_hs(sender, sc1_enable_CABC_bl_on, 4, 0); + /* mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_on, 4, 0); */ /* send TURN_ON packet */ /*err = mdfld_dsi_send_dpi_spk_pkg_hs(sender, @@ -1087,7 +1087,7 @@ static void gi_sony_dsi_dbi_update_fb(struct mdfld_dsi_dbi_output *dbi_output, REG_WRITE(dspsurf_reg, REG_READ(dspsurf_reg)); REG_READ(dspsurf_reg); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_address_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_address_mode, 4, 0); mdfld_dsi_send_dcs(sender, write_mem_start, NULL, @@ -1386,7 +1386,7 @@ int mdfld_gi_sony_power_on(struct drm_encoder *encoder) } msleep(21); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_address_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_address_mode, 4, 0); err = mdfld_dsi_send_dcs(sender, write_mem_start, NULL, diff --git a/drivers/staging/mrst/drv/gi_sony_vid.c b/drivers/staging/mrst/drv/gi_sony_vid.c index aa83075..a7f09b0 100644 --- a/drivers/staging/mrst/drv/gi_sony_vid.c +++ b/drivers/staging/mrst/drv/gi_sony_vid.c @@ -115,134 +115,134 @@ static void mdfld_gi_l5f3_dpi_ic_init(struct mdfld_dsi_config *dsi_config, while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_column_add, 2, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_column_add, 8, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_row_add, 2, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_row_add, 8, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_address_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_address_mode, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_pixel_format, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_pixel_format, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set TE scanline and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_te_scanline, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_te_scanline, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set TE on and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_tear_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_tear_on, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set password on and wait for 10ms. */ - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_on, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_on, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_disctl, 5, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_disctl, 20, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pwrctl, 4, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pwrctl, 16, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_vcmctl, 4, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_vcmctl, 16, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_srcctl, 3, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_srcctl, 12, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ifctl, 2, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ifctl, 8, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_panelctl, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_panelctl, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_gammasel, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_gammasel, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pgammactl, 5, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_pgammactl, 20, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ngammactl, 5, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_ngammactl, 20, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_miectl1, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_miectl1, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_bcmode, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_bcmode, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrmiectl2, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrmiectl2, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrblctl, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_set_wrblctl, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_off, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_l5f3_passwd1_off, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set backlight to full brightness and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_full_brightness, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_set_full_brightness, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set backlight on and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_turn_on_backlight, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_turn_on_backlight, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* disalble CABC and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_disable_cabc, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_disable_cabc, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* sleep out and wait for 150ms. */ - mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_exit_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_l5f3_exit_sleep_mode, 4, 0); wait_timeout = jiffies + (3 * HZ / 20); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); @@ -393,23 +393,23 @@ static int mdfld_dsi_gi_sony_power_on(struct mdfld_dsi_config *dsi_config) } /*change power state*/ - mdfld_dsi_send_mcs_long_hs(sender, gi_sony_exit_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_sony_exit_sleep_mode, 4, 0); msleep(120); /*enable CABC with backlight off*/ - mdfld_dsi_send_mcs_long_hs(sender, gi_sony_select_CABC_mode, 1, 0); - mdfld_dsi_send_mcs_long_hs(sender, gi_sony_enable_CABC_bl_off, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_sony_select_CABC_mode, 4, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_sony_enable_CABC_bl_off, 4, 0); /*set display on*/ - mdfld_dsi_send_mcs_long_hs(sender, gi_sony_set_display_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_sony_set_display_on, 4, 0); msleep(21); /*enable BLON , CABC*/ if (1) { mdfld_dsi_send_mcs_long_hs(sender, gi_sony_enable_CABC_bl_on, - 1, 0); + 4, 0); printk(KERN_ALERT "enable SC1 cabc\n"); } @@ -445,15 +445,15 @@ static int mdfld_dsi_gi_sony_power_off(struct mdfld_dsi_config *dsi_config) } /*change power state here*/ - mdfld_dsi_send_mcs_long_hs(sender, gi_sony_set_display_off, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_sony_set_display_off, 4, 0); /*disable BLCON, disable CABC*/ - mdfld_dsi_send_mcs_long_hs(sender, gi_sony_enable_CABC_bl_off, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_sony_enable_CABC_bl_off, 4, 0); printk(KERN_ALERT "disable SC1 cabc\n"); msleep(21); - mdfld_dsi_send_mcs_long_hs(sender, gi_sony_enter_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, gi_sony_enter_sleep_mode, 4, 0); msleep(120); @@ -478,7 +478,7 @@ static int mdfld_dsi_gi_sony_set_brightness(struct mdfld_dsi_config *dsi_config, /*update duty value*/ gi_sony_set_brightness[0] = (0x00000051 | (duty_val << 8)); /* [SC1] change backlight control- brightness */ - mdfld_dsi_send_gen_long_hs(sender, gi_sony_set_brightness, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, gi_sony_set_brightness, 4, 0); return 0; } diff --git a/drivers/staging/mrst/drv/h8c7_cmd.c b/drivers/staging/mrst/drv/h8c7_cmd.c index 099434d..c7dc1c6 100644 --- a/drivers/staging/mrst/drv/h8c7_cmd.c +++ b/drivers/staging/mrst/drv/h8c7_cmd.c @@ -117,122 +117,122 @@ static void mdfld_h8c7_dci_ic_init(struct mdfld_dsi_config *dsi_config, int pipe cpu_relax(); /* sleep out and wait for 150ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_exit_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_exit_sleep_mode, 4, 0); wait_timeout = jiffies + (3 * HZ / 20); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set password and wait for 10ms. */ - mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_off, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_off, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set TE on and wait for 10ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_tear_on, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_tear_on, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set backlight to full brightness and wait for 10ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_full_brightness, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_full_brightness, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set backlight on and wait for 10ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_turn_on_backlight, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_turn_on_backlight, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* disalble CABC and wait for 10ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_disable_cabc, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_disable_cabc, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_ic_bias_current, 2, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_ic_bias_current, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_power, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_power, 16, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_disp_reg, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_disp_reg, 16, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_command_cyc, 6, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_command_cyc, 24, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_mipi_ctrl, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_mipi_ctrl, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_command_mode, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_command_mode, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_blanking_opt_2, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_blanking_opt_2, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_panel, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_panel, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_eq_func_ltps, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_eq_func_ltps, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_ltps_ctrl_output, 6, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_ltps_ctrl_output, 24, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_video_cyc, 6, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_video_cyc, 24, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_r, 9, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_r, 36, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_g, 9, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_g, 36, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_b, 9, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_b, 36, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_on, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_on, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_clumn_addr, 2, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_clumn_addr, 8, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_page_addr, 2, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_page_addr, 8, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); @@ -378,7 +378,7 @@ int mdfld_dsi_h8c7_cmd_power_on(struct mdfld_dsi_config *dsi_config) return -EINVAL; } - /* mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 1, 0); */ + /* mdfld_dsi_send_gen_long_hs(sender, sc1_mcs_protect_off, 4, 0); */ param[0] = 0x00; param[1] = 0x00; @@ -1034,7 +1034,7 @@ static void h8c7_dsi_dbi_update_fb(struct mdfld_dsi_dbi_output *dbi_output, REG_WRITE(dspsurf_reg, REG_READ(dspsurf_reg)); REG_READ(dspsurf_reg); - mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_address_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_address_mode, 4, 0); mdelay(1); mdfld_dsi_send_dcs(sender, @@ -1148,7 +1148,7 @@ int mdfld_dsi_h8c7_cmd_set_brightness(struct mdfld_dsi_config *dsi_config, h8c7_set_brightness[0] = (0x00000051 | (duty_val << 8)); /* set backlight to full brightness and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_brightness, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_brightness, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); @@ -1318,7 +1318,7 @@ int mdfld_h8c7_cmd_power_on(struct drm_encoder *encoder) } msleep(21); - mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_address_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_address_mode, 4, 0); err = mdfld_dsi_send_dcs(sender, write_mem_start, diff --git a/drivers/staging/mrst/drv/h8c7_vid.c b/drivers/staging/mrst/drv/h8c7_vid.c index b69504f..4ceba9b 100644 --- a/drivers/staging/mrst/drv/h8c7_vid.c +++ b/drivers/staging/mrst/drv/h8c7_vid.c @@ -96,123 +96,123 @@ static void mdfld_h8c7_dpi_ic_init(struct mdfld_dsi_config *dsi_config, int pipe cpu_relax(); /* sleep out and wait for 150ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_exit_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_exit_sleep_mode, 4, 0); wait_timeout = jiffies + (3 * HZ / 20); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set password and wait for 10ms. */ - mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_off, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_off, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set TE on and wait for 10ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_tear_on, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_tear_on, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set backlight to full brightness and wait for 10ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_full_brightness, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_full_brightness, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* set backlight on and wait for 10ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_turn_on_backlight, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_turn_on_backlight, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* disalble CABC and wait for 10ms. */ - mdfld_dsi_send_mcs_long_lp(sender, h8c7_disable_cabc, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_disable_cabc, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_ic_bias_current, 2, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_ic_bias_current, 8, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_power, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_power, 16, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_disp_reg, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_disp_reg, 16, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_command_cyc, 6, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_command_cyc, 24, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_mipi_ctrl, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_mipi_ctrl, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_video_mode, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_video_mode, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_blanking_opt_2, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_blanking_opt_2, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_panel, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_panel, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_eq_func_ltps, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_eq_func_ltps, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_ltps_ctrl_output, 6, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_ltps_ctrl_output, 24, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_set_video_cyc, 6, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_set_video_cyc, 24, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_r, 9, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_r, 36, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_g, 9, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_g, 36, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_b, 9, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_gamma_b, 36, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* disable password and wait for 10ms. */ - mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_on, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, h8c7_mcs_protect_on, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_address_mode, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_address_mode, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_pixel_format, 1, 0); + mdfld_dsi_send_mcs_long_lp(sender, h8c7_set_pixel_format, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); @@ -364,13 +364,13 @@ static int mdfld_dsi_h8c7_power_on(struct mdfld_dsi_config *dsi_config) } /* sleep out and wait for 150ms. */ - mdfld_dsi_send_mcs_long_hs(sender, h8c7_exit_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, h8c7_exit_sleep_mode, 4, 0); wait_timeout = jiffies + (3 * HZ / 20); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /*set display on*/ - mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_display_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_display_on, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); @@ -413,13 +413,13 @@ static int mdfld_dsi_h8c7_power_off(struct mdfld_dsi_config *dsi_config) /* FIXME disable CABC later*/ /*set display off*/ - mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_display_off, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_display_off, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); /* sleep in and wait for 150ms. */ - mdfld_dsi_send_mcs_long_hs(sender, h8c7_enter_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, h8c7_enter_sleep_mode, 4, 0); wait_timeout = jiffies + (3 * HZ / 20); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); @@ -453,7 +453,7 @@ int mdfld_dsi_h8c7_set_brightness(struct mdfld_dsi_config *dsi_config, h8c7_set_brightness[0] = (0x00000051 | (duty_val << 8)); /* set backlight to full brightness and wait for 10ms. */ - mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_brightness, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, h8c7_set_brightness, 4, 0); wait_timeout = jiffies + (HZ / 100); while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); diff --git a/drivers/staging/mrst/drv/mdfld_dsi_dbi.c b/drivers/staging/mrst/drv/mdfld_dsi_dbi.c index cd64a75..263737d 100644 --- a/drivers/staging/mrst/drv/mdfld_dsi_dbi.c +++ b/drivers/staging/mrst/drv/mdfld_dsi_dbi.c @@ -117,11 +117,11 @@ int mdfld_dsi_dbi_update_area(struct mdfld_dsi_dbi_output * dbi_output, } #else u32 sc1_set_column_address[] = {0x0200002a, 0x0000001b}; - mdfld_dsi_send_mcs_long_hs(sender, sc1_set_column_address, 2, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_set_column_address, 8, 0); u32 sc1_set_page_address[] = {0x0300002b, 0x000000bf}; - mdfld_dsi_send_mcs_long_hs(sender, sc1_set_page_address, 2, 0); + mdfld_dsi_send_mcs_long_hs(sender, sc1_set_page_address, 8, 0); #endif /* mdelay(100); */ diff --git a/drivers/staging/mrst/drv/mdfld_dsi_output.c b/drivers/staging/mrst/drv/mdfld_dsi_output.c index 81440c8..8c1dd77 100755 --- a/drivers/staging/mrst/drv/mdfld_dsi_output.c +++ b/drivers/staging/mrst/drv/mdfld_dsi_output.c @@ -119,7 +119,7 @@ static void mdfld_dsi_write_hysteresis (struct mdfld_dsi_config * dsi_config, in mdfld_dsi_send_mcs_long_hs(sender, mdfld_dbi_mcs_hysteresis, - 17, + 68, MDFLD_DSI_SEND_PACKAGE); } @@ -137,7 +137,7 @@ static void mdfld_dsi_write_display_profile (struct mdfld_dsi_config * dsi_confi mdfld_dsi_send_mcs_long_hs(sender, mdfld_dbi_mcs_display_profile, - 5, + 20, MDFLD_DSI_SEND_PACKAGE); } @@ -155,7 +155,7 @@ static void mdfld_dsi_write_kbbc_profile (struct mdfld_dsi_config * dsi_config, mdfld_dsi_send_mcs_long_hs(sender, mdfld_dbi_mcs_kbbc_profile, - 4, + 20, MDFLD_DSI_SEND_PACKAGE); } diff --git a/drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.c b/drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.c index 1be4586..eee602e 100644 --- a/drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.c +++ b/drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.c @@ -224,16 +224,16 @@ static inline int dbi_cmd_sent(struct mdfld_dsi_pkg_sender * sender) u32 dbi_cmd_addr_reg = sender->mipi_cmd_addr_reg; int ret = 0; - /*query the command execution status*/ - while(retry--) { - if(!(REG_READ(dbi_cmd_addr_reg) & BIT0)) - break; - } + /*query the command execution status*/ + while (retry--) { + if (!(REG_READ(dbi_cmd_addr_reg) & BIT0)) + break; + } - if(!retry) { - DRM_ERROR("Timeout waiting for DBI Command status\n"); - ret = -EAGAIN; - } + if (!retry) { + DRM_ERROR("Timeout waiting for DBI Command status\n"); + ret = -EAGAIN; + } return ret; } @@ -331,8 +331,10 @@ static int __send_long_pkg(struct mdfld_dsi_pkg_sender * sender, u32 lp_gen_ctrl_reg = sender->mipi_lp_gen_ctrl_reg; u32 lp_gen_data_reg = sender->mipi_lp_gen_data_reg; u32 gen_ctrl_val = 0; - u32 * dp; + u8 * dp = NULL; + u32 reg_val = 0; int i; + int dword_count = 0, remain_byte_count = 0; struct mdfld_dsi_gen_long_pkg * long_pkg = &pkg->pkg.long_pkg; dp = long_pkg->data; @@ -345,7 +347,7 @@ static int __send_long_pkg(struct mdfld_dsi_pkg_sender * sender, * | DI | WC | ECC| PAYLOAD |CHECKSUM| * ------------------------------------------------------------ */ - gen_ctrl_val |= (long_pkg->len << 2) << WORD_COUNTS_POS; + gen_ctrl_val |= (long_pkg->len) << WORD_COUNTS_POS; gen_ctrl_val |= 0 << DCS_CHANNEL_NUMBER_POS; gen_ctrl_val |= pkg->pkg_type; @@ -353,21 +355,51 @@ static int __send_long_pkg(struct mdfld_dsi_pkg_sender * sender, /*wait for hs ctrl and data fifos to be empty*/ wait_for_hs_fifos_empty(sender); - for(i=0; ilen; i++) { - PSB_DEBUG_ENTRY("HS Sending data 0x%08x\n", *(dp + i)); - - REG_WRITE(hs_gen_data_reg, *(dp + i)); + dword_count = long_pkg->len / 4; + remain_byte_count = long_pkg->len % 4; + for(i=0; i< dword_count * 4; i = i + 4) { + reg_val = 0; + reg_val = *(dp + i); + reg_val |= *(dp + i + 1) << 8; + reg_val |= *(dp + i + 2) << 16; + reg_val |= *(dp + i + 3) << 24; + PSB_DEBUG_ENTRY("HS Sending data 0x%08x\n", reg_val); + REG_WRITE(hs_gen_data_reg, reg_val); + } + if (remain_byte_count){ + reg_val = 0; + for(i = 0; i < remain_byte_count; i ++){ + reg_val |= *(dp + dword_count * 4 + i ) << (8 * i); + } + PSB_DEBUG_ENTRY("HS Sending data 0x%08x\n", reg_val); + REG_WRITE(hs_gen_data_reg, reg_val); } + REG_WRITE(hs_gen_ctrl_reg, gen_ctrl_val); } else if(pkg->transmission_type == MDFLD_DSI_LP_TRANSMISSION) { wait_for_lp_fifos_empty(sender); - for(i=0; ilen; i++) { - PSB_DEBUG_ENTRY("LP Sending data 0x%08x\n", *(dp + i)); + dword_count = long_pkg->len / 4; + remain_byte_count = long_pkg->len % 4; + for(i=0; i< dword_count * 4; i = i + 4) { + reg_val = 0; + reg_val = *(dp + i); + reg_val |= *(dp + i + 1) << 8; + reg_val |= *(dp + i + 2) << 16; + reg_val |= *(dp + i + 3) << 24; + PSB_DEBUG_ENTRY("LP Sending data 0x%08x\n", reg_val); + REG_WRITE(lp_gen_data_reg, reg_val); + } - REG_WRITE(lp_gen_data_reg, *(dp + i)); + if (remain_byte_count){ + reg_val = 0; + for(i = 0; i < remain_byte_count; i ++){ + reg_val |= *(dp + dword_count * 4 + i ) << (8 * i); + } + PSB_DEBUG_ENTRY("LP Sending data 0x%08x\n", reg_val); + REG_WRITE(lp_gen_data_reg, reg_val); } REG_WRITE(lp_gen_ctrl_reg, gen_ctrl_val); } else { @@ -494,6 +526,7 @@ static int send_pkg_done(struct mdfld_dsi_pkg_sender * sender, cmd = pkg->pkg.short_pkg.cmd; break; case MDFLD_DSI_PKG_MCS_LONG_WRITE: + case MDFLD_DSI_PKG_GEN_LONG_WRITE: data = (u8 *)pkg->pkg.long_pkg.data; cmd = *data; break; @@ -509,6 +542,13 @@ static int send_pkg_done(struct mdfld_dsi_pkg_sender * sender, sender->status = MDFLD_DSI_PKG_SENDER_FREE; + /*after sending pkg done, free the data buffer for mcs long pkg*/ + if (pkg->pkg_type == MDFLD_DSI_PKG_MCS_LONG_WRITE || + pkg->pkg_type == MDFLD_DSI_PKG_GEN_LONG_WRITE) { + if (data != NULL) + kfree(data); + } + return 0; } @@ -699,13 +739,14 @@ static inline void process_pkg_list(struct mdfld_dsi_pkg_sender * sender) } static int mdfld_dsi_send_mcs_long(struct mdfld_dsi_pkg_sender * sender, - u32 * data, - u32 len, + u8 * data, + u32 len, u8 transmission, int delay) { struct mdfld_dsi_pkg * pkg; unsigned long flags; + u8 *pdata = NULL; spin_lock_irqsave(&sender->lock, flags); @@ -718,9 +759,20 @@ static int mdfld_dsi_send_mcs_long(struct mdfld_dsi_pkg_sender * sender, return -ENOMEM; } + /* alloc a data buffer to save the long pkg data, + * free the buffer when send_pkg_done. + * */ + pdata = kmalloc(sizeof(u8)*len, GFP_KERNEL); + if (!pdata) { + DRM_ERROR("No memory for long_pkg data\n"); + return -ENOMEM; + } + + memcpy(pdata, data, len*sizeof(u8)); + pkg->pkg_type = MDFLD_DSI_PKG_MCS_LONG_WRITE; pkg->transmission_type = transmission; - pkg->pkg.long_pkg.data = data; + pkg->pkg.long_pkg.data = pdata; pkg->pkg.long_pkg.len = len; INIT_LIST_HEAD(&pkg->entry); @@ -813,13 +865,14 @@ static int mdfld_dsi_send_gen_short(struct mdfld_dsi_pkg_sender * sender, } static int mdfld_dsi_send_gen_long(struct mdfld_dsi_pkg_sender * sender, - u32 * data, - u32 len, + u8 * data, + u32 len, u8 transmission, int delay) { struct mdfld_dsi_pkg * pkg; unsigned long flags; + u8 *pdata = NULL; spin_lock_irqsave(&sender->lock, flags); @@ -832,9 +885,20 @@ static int mdfld_dsi_send_gen_long(struct mdfld_dsi_pkg_sender * sender, return -ENOMEM; } + /* alloc a data buffer to save the long pkg data, + * free the buffer when send_pkg_done. + * */ + pdata = kmalloc(sizeof(u8)*len, GFP_KERNEL); + if (!pdata) { + DRM_ERROR("No memory for long_pkg data\n"); + return -ENOMEM; + } + + memcpy(pdata, data, len*sizeof(u8)); + pkg->pkg_type = MDFLD_DSI_PKG_GEN_LONG_WRITE; pkg->transmission_type = transmission; - pkg->pkg.long_pkg.data = data; + pkg->pkg.long_pkg.data = pdata; pkg->pkg.long_pkg.len = len; INIT_LIST_HEAD(&pkg->entry); @@ -1156,7 +1220,7 @@ int mdfld_dsi_send_dcs(struct mdfld_dsi_pkg_sender * sender, u8 dcs, u8 * param, u32 param_num, u8 data_src, int delay) { - struct mdfld_dsi_pkg * pkg; + struct mdfld_dsi_pkg dsi_pkg = { 0 }; u32 cb_phy = sender->dbi_cb_phy; struct drm_device *dev = sender->dev; u32 index = 0; @@ -1164,7 +1228,7 @@ int mdfld_dsi_send_dcs(struct mdfld_dsi_pkg_sender * sender, unsigned long flags; int retry; u8 *dst = NULL; - u32 len; + u8 *pSendparam = NULL; int err = 0; if(!sender) { @@ -1177,11 +1241,6 @@ int mdfld_dsi_send_dcs(struct mdfld_dsi_pkg_sender * sender, return -ENOTSUPP; } - if(param_num > MDFLD_MAX_DCS_PARAM) { - DRM_ERROR("Sender only support up to %d DCS params\n", MDFLD_MAX_DCS_PARAM); - return -EINVAL; - } - /*if dcs is write_mem_start, send it directly using DSI adapter interface*/ if (dcs == write_mem_start) { if (!spin_trylock(&sender->lock)) @@ -1213,47 +1272,44 @@ int mdfld_dsi_send_dcs(struct mdfld_dsi_pkg_sender * sender, udelay(1); retry--; } - - spin_unlock(&sender->lock); - return 0; - } - - /*get a free pkg*/ - spin_lock_irqsave(&sender->lock, flags); - pkg = pkg_sender_get_pkg_locked(sender); + /*wait for this frame done*/ + if (REG_READ(HS_LS_DBI_ENABLE_REG) & BIT0) + wait_for_lp_fifos_empty(sender); + else + wait_for_hs_fifos_empty(sender); - spin_unlock_irqrestore(&sender->lock, flags); - - if(!pkg) { - DRM_ERROR("No memory\n"); - return -ENOMEM; + spin_unlock(&sender->lock); + return 0; } - dst = pkg->pkg.dcs_pkg.param; - memcpy(dst, param, param_num); - - pkg->pkg_type = MDFLD_DSI_PKG_DCS; - pkg->transmission_type = MDFLD_DSI_DCS; - pkg->pkg.dcs_pkg.cmd = dcs; - pkg->pkg.dcs_pkg.param_num = param_num; - pkg->pkg.dcs_pkg.data_src = data_src; - - INIT_LIST_HEAD(&pkg->entry); - if(param_num == 0) - return mdfld_dsi_send_mcs_short_hs(sender, dcs, 0, 0, delay); + err = mdfld_dsi_send_mcs_short_hs( + sender, dcs, 0, 0, delay); else if(param_num == 1) - return mdfld_dsi_send_mcs_short_hs(sender, dcs, param[0], 1, delay); + err = mdfld_dsi_send_mcs_short_hs( + sender, dcs, param[0], 1, delay); else if(param_num > 1) { - len = (param_num + 1) / 4; - if((param_num + 1) % 4) - len++; + /*transfer to dcs package*/ + pSendparam = kmalloc(sizeof(u8) * (param_num + 1 ), GFP_KERNEL); + if (!pSendparam) { + DRM_ERROR("No memory \n"); + return -ENOMEM; + } - return mdfld_dsi_send_mcs_long_hs(sender, (u32 *)&pkg->pkg.dcs_pkg, len, delay); + (*pSendparam) = dcs; - } + dst = pSendparam + 1; + memcpy(dst, param, param_num); + + err = mdfld_dsi_send_mcs_long_hs( + sender, pSendparam, param_num + 1, delay); + /*free pkg*/ + if (pSendparam) { + kfree(pSendparam); + } + } return err; } @@ -1280,7 +1336,7 @@ int mdfld_dsi_send_mcs_short_lp(struct mdfld_dsi_pkg_sender * sender, } int mdfld_dsi_send_mcs_long_hs(struct mdfld_dsi_pkg_sender * sender, - u32 * data, + u8 * data, u32 len, int delay) { @@ -1293,7 +1349,7 @@ int mdfld_dsi_send_mcs_long_hs(struct mdfld_dsi_pkg_sender * sender, } int mdfld_dsi_send_mcs_long_lp(struct mdfld_dsi_pkg_sender * sender, - u32 * data, + u8 * data, u32 len, int delay) { @@ -1328,7 +1384,7 @@ int mdfld_dsi_send_gen_short_lp(struct mdfld_dsi_pkg_sender * sender, } int mdfld_dsi_send_gen_long_hs(struct mdfld_dsi_pkg_sender * sender, - u32 * data, + u8 * data, u32 len, int delay) { @@ -1341,7 +1397,7 @@ int mdfld_dsi_send_gen_long_hs(struct mdfld_dsi_pkg_sender * sender, } int mdfld_dsi_send_gen_long_lp(struct mdfld_dsi_pkg_sender * sender, - u32 * data, + u8 * data, u32 len, int delay) { diff --git a/drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.h b/drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.h index 87afb13..92878a7 100644 --- a/drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.h +++ b/drivers/staging/mrst/drv/mdfld_dsi_pkg_sender.h @@ -85,14 +85,14 @@ struct mdfld_dsi_gen_short_pkg struct mdfld_dsi_gen_long_pkg { - u32 * data; + u8 * data; u32 len; }; struct mdfld_dsi_dcs_pkg { u8 cmd; - u8 param[MDFLD_MAX_DCS_PARAM]; + u8 *param; u32 param_num; u8 data_src; }; @@ -163,11 +163,11 @@ extern int mdfld_dsi_send_mcs_short_hs(struct mdfld_dsi_pkg_sender * sender, extern int mdfld_dsi_send_mcs_short_lp(struct mdfld_dsi_pkg_sender * sender, u8 cmd, u8 param, u8 param_num, int delay); extern int mdfld_dsi_send_mcs_long_hs(struct mdfld_dsi_pkg_sender * sender, - u32 * data, + u8 * data, u32 len, int delay); extern int mdfld_dsi_send_mcs_long_lp(struct mdfld_dsi_pkg_sender * sender, - u32 * data, + u8 * data, u32 len, int delay); extern int mdfld_dsi_send_gen_short_hs(struct mdfld_dsi_pkg_sender * sender, @@ -175,11 +175,11 @@ extern int mdfld_dsi_send_gen_short_hs(struct mdfld_dsi_pkg_sender * sender, extern int mdfld_dsi_send_gen_short_lp(struct mdfld_dsi_pkg_sender * sender, u8 param0, u8 param1, u8 param_num, int delay); extern int mdfld_dsi_send_gen_long_hs(struct mdfld_dsi_pkg_sender * sender, - u32 * data, + u8 * data, u32 len, int delay); extern int mdfld_dsi_send_gen_long_lp(struct mdfld_dsi_pkg_sender * sender, - u32 * data, + u8 * data, u32 len, int delay); extern int mdfld_dsi_send_dpi_spk_pkg_hs(struct mdfld_dsi_pkg_sender *sender, diff --git a/drivers/staging/mrst/drv/tmd_6x10_vid.c b/drivers/staging/mrst/drv/tmd_6x10_vid.c index 68da4ff..8ece8e6 100755 --- a/drivers/staging/mrst/drv/tmd_6x10_vid.c +++ b/drivers/staging/mrst/drv/tmd_6x10_vid.c @@ -99,34 +99,34 @@ void mdfld_dsi_pr2_ic_init(struct mdfld_dsi_config *dsi_config, int pipe) while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, pr2_mcs_protect_off, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_pixel_format, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_dsi_control, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_panel_driving, 2, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_v_timing, 2, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_control, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_test_mode_0, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_h_timing, 4, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_can_skip, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_gamma_set_a, 4, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_gamma_set_b, 4, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_gamma_set_c, 4, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_charge_pump_setting, 2, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_test_mode_1, 2, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_source_amplifiers, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_power_supply_circuit, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_vreg_setting, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_test_mode_2, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_timing_control_0, 3, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_timing_control_1, 2, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_timing_control_2, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_white_balance, 2, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_vcs_setting, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_vcom_dc_setting, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_test_mode_3, 2, 0); - mdfld_dsi_send_gen_long_lp(sender, pr2_mcs_protect_on, 1, 0); - mdfld_dsi_send_mcs_long_lp(sender, pr2_set_address_mode, 1, 0); - mdfld_dsi_send_mcs_long_lp(sender, pr2_set_pixel_format, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_mcs_protect_off, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_pixel_format, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_dsi_control, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_panel_driving, 8, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_v_timing, 8, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_control, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_test_mode_0, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_h_timing, 16, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_can_skip, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_gamma_set_a, 16, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_gamma_set_b, 16, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_gamma_set_c, 16, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_charge_pump_setting, 8, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_test_mode_1, 8, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_source_amplifiers, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_power_supply_circuit, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_vreg_setting, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_test_mode_2, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_timing_control_0, 12, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_timing_control_1, 8, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_timing_control_2, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_white_balance, 8, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_vcs_setting, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_vcom_dc_setting, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_test_mode_3, 8, 0); + mdfld_dsi_send_gen_long_lp(sender, pr2_mcs_protect_on, 4, 0); + mdfld_dsi_send_mcs_long_lp(sender, pr2_set_address_mode, 4, 0); + mdfld_dsi_send_mcs_long_lp(sender, pr2_set_pixel_format, 4, 0); /* Now In Sleep Mode */ } @@ -279,19 +279,19 @@ static int mdfld_dsi_pr2_power_on(struct mdfld_dsi_config *dsi_config) /*Just turn on panel for WiDi Extended Mode.*/ if (!dev_priv->drm_psb_widi && !dev_priv->dpms_on_off) { - mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_off, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_off, 4, 0); /*change power state*/ - mdfld_dsi_send_mcs_long_hs(sender, pr2_exit_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, pr2_exit_sleep_mode, 4, 0); msleep(120); /*enable PWMON*/ pr2_backlight_control_2[0] |= BIT8; mdfld_dsi_send_mcs_long_hs(sender, - pr2_backlight_control_2, 2, 0); + pr2_backlight_control_2, 8, 0); /*set display on*/ - mdfld_dsi_send_mcs_long_hs(sender, pr2_set_display_on, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, pr2_set_display_on, 4, 0); msleep(21); @@ -299,7 +299,7 @@ static int mdfld_dsi_pr2_power_on(struct mdfld_dsi_config *dsi_config) if (drm_psb_enable_pr2_cabc) { pr2_backlight_control_1[0] |= BIT8; mdfld_dsi_send_gen_long_hs(sender, - pr2_backlight_control_1, 6, 0); + pr2_backlight_control_1, 24, 0); printk(KERN_ALERT "enable pr2 cabc\n"); } @@ -339,27 +339,27 @@ static int mdfld_dsi_pr2_power_off(struct mdfld_dsi_config *dsi_config) /*Just turn off panel for WiDi Extended Mode.*/ if (!dev_priv->drm_psb_widi && !dev_priv->dpms_on_off) { - mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_off, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_off, 4, 0); /*change power state here*/ - mdfld_dsi_send_mcs_long_hs(sender, pr2_set_display_off, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, pr2_set_display_off, 4, 0); /*disable BLCON, disable CABC*/ pr2_backlight_control_1[0] &= (~BIT8); mdfld_dsi_send_gen_long_hs(sender, - pr2_backlight_control_1, 6, 0); + pr2_backlight_control_1, 24, 0); printk(KERN_ALERT "disable pr2 cabc\n"); msleep(21); - mdfld_dsi_send_mcs_long_hs(sender, pr2_enter_sleep_mode, 1, 0); + mdfld_dsi_send_mcs_long_hs(sender, pr2_enter_sleep_mode, 4, 0); msleep(120); /*put panel into deep standby mode*/ mdfld_dsi_send_gen_long_hs(sender, - pr2_enter_low_power_mode, 1, 0); + pr2_enter_low_power_mode, 4, 0); - mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_on, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_on, 4, 0); } return 0; } @@ -380,14 +380,14 @@ static int mdfld_dsi_pr2_set_brightness(struct mdfld_dsi_config *dsi_config, duty_val = (255 * level) / 100; - mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_off, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_off, 4, 0); /*update duty value*/ pr2_backlight_control_2[0] = (0x0000001b9 | (duty_val << 16)); - mdfld_dsi_send_gen_long_hs(sender, pr2_backlight_control_2, 2, 0); + mdfld_dsi_send_gen_long_hs(sender, pr2_backlight_control_2, 8, 0); - mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_on, 1, 0); + mdfld_dsi_send_gen_long_hs(sender, pr2_mcs_protect_on, 4, 0); return 0; } diff --git a/drivers/staging/mrst/drv/tmd_vid.c b/drivers/staging/mrst/drv/tmd_vid.c index cdcf5be..092f4d6 100644 --- a/drivers/staging/mrst/drv/tmd_vid.c +++ b/drivers/staging/mrst/drv/tmd_vid.c @@ -183,18 +183,18 @@ static void mdfld_dsi_tmd_drv_ic_init(struct mdfld_dsi_config *dsi_config, while (time_before_eq(jiffies, wait_timeout)) cpu_relax(); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_mcap_off, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_enable_lane_switch, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_lane_num, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_pushing_clock0, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_pushing_clock1, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_mode, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_sync_pulse_mode, 1, 0); - mdfld_dsi_send_mcs_long_lp(sender, tmd_cmd_set_column, 2, 0); - mdfld_dsi_send_mcs_long_lp(sender, tmd_cmd_set_page, 2, 0); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_video_mode, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_enable_backlight, 1, 0); - mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_backlight_dimming, 1, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_mcap_off, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_enable_lane_switch, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_lane_num, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_pushing_clock0, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_pushing_clock1, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_mode, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_sync_pulse_mode, 4, 0); + mdfld_dsi_send_mcs_long_lp(sender, tmd_cmd_set_column, 8, 0); + mdfld_dsi_send_mcs_long_lp(sender, tmd_cmd_set_page, 8, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_video_mode, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_enable_backlight, 4, 0); + mdfld_dsi_send_gen_long_lp(sender, tmd_cmd_set_backlight_dimming, 4, 0); /*wait for a frame. ~20ms*/ wait_timeout = jiffies + HZ / 50; -- 2.7.4