* [PATCH 0/2] drm/msm/dsi: Fix issues during cmd rx
@ 2015-04-29 15:38 ` Hai Li
0 siblings, 0 replies; 5+ messages in thread
From: Hai Li @ 2015-04-29 15:38 UTC (permalink / raw)
To: dri-devel; +Cc: linux-arm-msm, linux-kernel
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(-)
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 0/2] drm/msm/dsi: Fix issues during cmd rx
@ 2015-04-29 15:38 ` Hai Li
0 siblings, 0 replies; 5+ messages in thread
From: Hai Li @ 2015-04-29 15:38 UTC (permalink / raw)
To: dri-devel; +Cc: linux-arm-msm, linux-kernel, robdclark, Hai Li
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(-)
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] drm/msm/dsi: Fixup missing *break* statement during cmd rx
2015-04-29 15:38 ` Hai Li
(?)
@ 2015-04-29 15:38 ` Hai Li
-1 siblings, 0 replies; 5+ messages in thread
From: Hai Li @ 2015-04-29 15:38 UTC (permalink / raw)
To: dri-devel; +Cc: linux-arm-msm, linux-kernel, robdclark, Hai Li
Signed-off-by: Hai Li <hali@codeaurora.org>
---
drivers/gpu/drm/msm/dsi/dsi_host.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index fdc54e3..473d417 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -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);
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] drm/msm/dsi: Simplify the code to get the number of read byte
2015-04-29 15:38 ` Hai Li
@ 2015-04-29 15:39 ` Hai Li
-1 siblings, 0 replies; 5+ messages in thread
From: Hai Li @ 2015-04-29 15:39 UTC (permalink / raw)
To: dri-devel; +Cc: linux-arm-msm, linux-kernel
During 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 <hali@codeaurora.org>
---
drivers/gpu/drm/msm/dsi/dsi_host.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index 473d417..72d4d5f 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -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
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] drm/msm/dsi: Simplify the code to get the number of read byte
@ 2015-04-29 15:39 ` Hai Li
0 siblings, 0 replies; 5+ messages in thread
From: Hai Li @ 2015-04-29 15:39 UTC (permalink / raw)
To: dri-devel; +Cc: linux-arm-msm, linux-kernel, robdclark, Hai Li
During 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 <hali@codeaurora.org>
---
drivers/gpu/drm/msm/dsi/dsi_host.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index 473d417..72d4d5f 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -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
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-04-29 15:39 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-29 15:38 [PATCH 0/2] drm/msm/dsi: Fix issues during cmd rx Hai Li
2015-04-29 15:38 ` Hai Li
2015-04-29 15:38 ` [PATCH 1/2] drm/msm/dsi: Fixup missing *break* statement " Hai Li
2015-04-29 15:39 ` [PATCH 2/2] drm/msm/dsi: Simplify the code to get the number of read byte Hai Li
2015-04-29 15:39 ` Hai Li
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.