Message ID | 20210812154237.13911-5-shawn.c.lee@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | MIPI DSI driver enhancements | expand |
> -----Original Message----- > From: Lee, Shawn C <shawn.c.lee@intel.com> > Sent: Thursday, August 12, 2021 9:13 PM > To: intel-gfx@lists.freedesktop.org > Cc: Nikula, Jani <jani.nikula@intel.com>; ville.syrjala@linux.intel.com; > Kulkarni, Vandita <vandita.kulkarni@intel.com>; Chiou, Cooper > <cooper.chiou@intel.com>; Tseng, William <william.tseng@intel.com>; Lee, > Shawn C <shawn.c.lee@intel.com>; Jani Nikula <jani.nikula@linux.intel.com> > Subject: [v4 4/7] drm/i915/dsi: refine send MIPI DCS command sequence > > According to chapter "Sending Commands to the Panel" in bspec #29738 and > #49188. If driver try to send DCS long pakcet, we have to program TX payload > register at first. And configure TX header HW register later. > DSC long packet would not be sent properly if we don't follow this sequence. > > Cc: Ville Syrjala <ville.syrjala@linux.intel.com> > Cc: Jani Nikula <jani.nikula@linux.intel.com> > Cc: Vandita Kulkarni <vandita.kulkarni@intel.com> > Cc: Cooper Chiou <cooper.chiou@intel.com> > Cc: William Tseng <william.tseng@intel.com> > Signed-off-by: Lee Shawn C <shawn.c.lee@intel.com> Looks Good to me. Reviewed-by: Vandita Kulkarni <vandita.kulkarni@intel.com> > --- > drivers/gpu/drm/i915/display/icl_dsi.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c > b/drivers/gpu/drm/i915/display/icl_dsi.c > index 1780830d9909..60413bbf565f 100644 > --- a/drivers/gpu/drm/i915/display/icl_dsi.c > +++ b/drivers/gpu/drm/i915/display/icl_dsi.c > @@ -1807,11 +1807,6 @@ static ssize_t gen11_dsi_host_transfer(struct > mipi_dsi_host *host, > if (msg->flags & MIPI_DSI_MSG_USE_LPM) > enable_lpdt = true; > > - /* send packet header */ > - ret = dsi_send_pkt_hdr(intel_dsi_host, dsi_pkt, enable_lpdt); > - if (ret < 0) > - return ret; > - > /* only long packet contains payload */ > if (mipi_dsi_packet_format_is_long(msg->type)) { > ret = dsi_send_pkt_payld(intel_dsi_host, dsi_pkt); @@ - > 1819,6 +1814,11 @@ static ssize_t gen11_dsi_host_transfer(struct > mipi_dsi_host *host, > return ret; > } > > + /* send packet header */ > + ret = dsi_send_pkt_hdr(intel_dsi_host, dsi_pkt, enable_lpdt); > + if (ret < 0) > + return ret; > + > //TODO: add payload receive code if needed > > ret = sizeof(dsi_pkt.header) + dsi_pkt.payload_length; > -- > 2.17.1
diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c index 1780830d9909..60413bbf565f 100644 --- a/drivers/gpu/drm/i915/display/icl_dsi.c +++ b/drivers/gpu/drm/i915/display/icl_dsi.c @@ -1807,11 +1807,6 @@ static ssize_t gen11_dsi_host_transfer(struct mipi_dsi_host *host, if (msg->flags & MIPI_DSI_MSG_USE_LPM) enable_lpdt = true; - /* send packet header */ - ret = dsi_send_pkt_hdr(intel_dsi_host, dsi_pkt, enable_lpdt); - if (ret < 0) - return ret; - /* only long packet contains payload */ if (mipi_dsi_packet_format_is_long(msg->type)) { ret = dsi_send_pkt_payld(intel_dsi_host, dsi_pkt); @@ -1819,6 +1814,11 @@ static ssize_t gen11_dsi_host_transfer(struct mipi_dsi_host *host, return ret; } + /* send packet header */ + ret = dsi_send_pkt_hdr(intel_dsi_host, dsi_pkt, enable_lpdt); + if (ret < 0) + return ret; + //TODO: add payload receive code if needed ret = sizeof(dsi_pkt.header) + dsi_pkt.payload_length;
According to chapter "Sending Commands to the Panel" in bspec #29738 and #49188. If driver try to send DCS long pakcet, we have to program TX payload register at first. And configure TX header HW register later. DSC long packet would not be sent properly if we don't follow this sequence. Cc: Ville Syrjala <ville.syrjala@linux.intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Vandita Kulkarni <vandita.kulkarni@intel.com> Cc: Cooper Chiou <cooper.chiou@intel.com> Cc: William Tseng <william.tseng@intel.com> Signed-off-by: Lee Shawn C <shawn.c.lee@intel.com> --- drivers/gpu/drm/i915/display/icl_dsi.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)