Commit e1047028 authored by Shobhit Kumar's avatar Shobhit Kumar Committed by Daniel Vetter

drm/i915: Send DPI command explicitely in LP mode

Though HS mode also should work.

v2: Change parameter as "bool hs" as suggested by Jani
Signed-off-by: default avatarShobhit Kumar <shobhit.kumar@intel.com>
Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 339023ec
...@@ -147,7 +147,7 @@ static void intel_dsi_enable(struct intel_encoder *encoder) ...@@ -147,7 +147,7 @@ static void intel_dsi_enable(struct intel_encoder *encoder)
I915_WRITE(MIPI_MAX_RETURN_PKT_SIZE(pipe), 8 * 4); I915_WRITE(MIPI_MAX_RETURN_PKT_SIZE(pipe), 8 * 4);
else { else {
msleep(20); /* XXX */ msleep(20); /* XXX */
dpi_send_cmd(intel_dsi, TURN_ON); dpi_send_cmd(intel_dsi, TURN_ON, DPI_LP_MODE_EN);
msleep(100); msleep(100);
if (intel_dsi->dev.dev_ops->enable) if (intel_dsi->dev.dev_ops->enable)
...@@ -218,7 +218,8 @@ static void intel_dsi_disable(struct intel_encoder *encoder) ...@@ -218,7 +218,8 @@ static void intel_dsi_disable(struct intel_encoder *encoder)
DRM_DEBUG_KMS("\n"); DRM_DEBUG_KMS("\n");
if (is_vid_mode(intel_dsi)) { if (is_vid_mode(intel_dsi)) {
dpi_send_cmd(intel_dsi, SHUTDOWN); /* Send Shutdown command to the panel in LP mode */
dpi_send_cmd(intel_dsi, SHUTDOWN, DPI_LP_MODE_EN);
msleep(10); msleep(10);
/* de-assert ip_tg_enable signal */ /* de-assert ip_tg_enable signal */
......
...@@ -389,7 +389,7 @@ int dsi_vc_generic_read(struct intel_dsi *intel_dsi, int channel, ...@@ -389,7 +389,7 @@ int dsi_vc_generic_read(struct intel_dsi *intel_dsi, int channel,
* *
* XXX: commands with data in MIPI_DPI_DATA? * XXX: commands with data in MIPI_DPI_DATA?
*/ */
int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd) int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd, bool hs)
{ {
struct drm_encoder *encoder = &intel_dsi->base.base; struct drm_encoder *encoder = &intel_dsi->base.base;
struct drm_device *dev = encoder->dev; struct drm_device *dev = encoder->dev;
...@@ -399,7 +399,7 @@ int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd) ...@@ -399,7 +399,7 @@ int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd)
u32 mask; u32 mask;
/* XXX: pipe, hs */ /* XXX: pipe, hs */
if (intel_dsi->hs) if (hs)
cmd &= ~DPI_LP_MODE; cmd &= ~DPI_LP_MODE;
else else
cmd |= DPI_LP_MODE; cmd |= DPI_LP_MODE;
......
...@@ -33,6 +33,9 @@ ...@@ -33,6 +33,9 @@
#include "intel_drv.h" #include "intel_drv.h"
#include "intel_dsi.h" #include "intel_dsi.h"
#define DPI_LP_MODE_EN false
#define DPI_HS_MODE_EN true
void dsi_hs_mode_enable(struct intel_dsi *intel_dsi, bool enable); void dsi_hs_mode_enable(struct intel_dsi *intel_dsi, bool enable);
int dsi_vc_dcs_write(struct intel_dsi *intel_dsi, int channel, int dsi_vc_dcs_write(struct intel_dsi *intel_dsi, int channel,
...@@ -47,7 +50,7 @@ int dsi_vc_dcs_read(struct intel_dsi *intel_dsi, int channel, u8 dcs_cmd, ...@@ -47,7 +50,7 @@ int dsi_vc_dcs_read(struct intel_dsi *intel_dsi, int channel, u8 dcs_cmd,
int dsi_vc_generic_read(struct intel_dsi *intel_dsi, int channel, int dsi_vc_generic_read(struct intel_dsi *intel_dsi, int channel,
u8 *reqdata, int reqlen, u8 *buf, int buflen); u8 *reqdata, int reqlen, u8 *buf, int buflen);
int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd); int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd, bool hs);
/* XXX: questionable write helpers */ /* XXX: questionable write helpers */
static inline int dsi_vc_dcs_write_0(struct intel_dsi *intel_dsi, static inline int dsi_vc_dcs_write_0(struct intel_dsi *intel_dsi,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment