drm/msm/dsi: Fix issues during cmd rx
cover drm/msm/dsi: Fix issues during cmd rx
These 2 patches are to fix the issues during DSI command rx.
Hai Li (2):
drm/msm/dsi: Fixup missing *break* statement during cmd rx drm/msm/dsi: Simplify the code to get the number of read byte
drivers/gpu/drm/msm/dsi/dsi_host.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-)
Signature · 7 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ dri-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/dri-devel
PATCH 1/2 drm/msm/dsi: Fixup missing *break* statement during cmd rx
Signed-off-by Hai Li <[email protected]>
--- drivers/gpu/drm/msm/dsi/dsi_host.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/msm/dsi/dsi_host.c +1 -0
@@ -1797,6 +1797,7 @@ int msm_dsi_host_cmd_rx(struct mipi_dsi_host *host,case MIPI_DSI_RX_ACKNOWLEDGE_AND_ERROR_REPORT :pr_err ("%s: rx ACK_ERR_PACLAGE\n" , __func__); ret =0 ; +break ;case MIPI_DSI_RX_GENERIC_SHORT_READ_RESPONSE_1BYTE :case MIPI_DSI_RX_DCS_SHORT_READ_RESPONSE_1BYTE : ret =dsi_short_read1_resp (buf, msg);
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation
PATCH 2/2 drm/msm/dsi: Simplify the code to get the number of read byte
In reply to Hai LiDuring cmd rx, only new versions of H/W provide register to read back the real number of byte returned by panel. For the old versions, reading this register will not get the right number. In fact, we only need to assume the returned data is the same size as we expected, because later we will check the data type to detect error.
Signed-off-by Hai Li <[email protected]>
--- drivers/gpu/drm/msm/dsi/dsi_host.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-)
drivers/gpu/drm/msm/dsi/dsi_host.c +4 -10
@@ -1093,7 +1093,6 @@ static int dsi_cmd_dma_rx(struct msm_dsi_host *msm_host, {u32 *lp, *temp, data;int i, j =0 , cnt; -bool ack_error = false;u32 read_cnt;u8 reg[16 ];int repeated_bytes =0 ;
@@ -1105,15 +1104,10 @@ static int dsi_cmd_dma_rx(struct msm_dsi_host *msm_host,if (cnt >4 ) cnt =4 ;/* 4 x 32 bits registers only */ -/* Calculate real read data count */ - read_cnt =dsi_read (msm_host,0x1d4 ) >>16 ; - - ack_error = (rx_byte ==4 ) ? - (read_cnt ==8 ) :/* short pkt + 4-byte error pkt */ - (read_cnt == (pkt_size +6 +4 ));/* long pkt+4-byte error pkt*/ - -if (ack_error) - read_cnt -=4 ;/* Remove 4 byte error pkt */ +if (rx_byte ==4 ) + read_cnt =4 ; +else + read_cnt = pkt_size +6 ;/* * In case of multiple reads from the panel, after the first read, there
Signature · 7 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation _______________________________________________ dri-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/dri-devel