Merge "dev: gcdb: Do not hard code the DSI string length"
diff --git a/dev/gcdb/display/gcdb_display.c b/dev/gcdb/display/gcdb_display.c
index 1c08d96..b2b4bc5 100755
--- a/dev/gcdb/display/gcdb_display.c
+++ b/dev/gcdb/display/gcdb_display.c
@@ -148,19 +148,30 @@
bool target_display_panel_node(char *pbuf, uint16_t buf_size)
{
- char *dsi_id = NULL, *panel_node = NULL;
- bool ret = false;
+ char *dsi_id = NULL;
+ char *panel_node = NULL;
+ uint16_t dsi_id_len = 0;
+ bool ret = true;
- if(!panelstruct.paneldata) {
- return ret;
+ if(panelstruct.paneldata)
+ {
+ dsi_id = panelstruct.paneldata->panel_controller;
+ panel_node = panelstruct.paneldata->panel_node_id;
}
- dsi_id = panelstruct.paneldata->panel_controller;
- panel_node = panelstruct.paneldata->panel_node_id;
+ if (dsi_id == NULL || panel_node == NULL)
+ return false;
- if (buf_size >= (strlen(panel_node) + MAX_DSI_STREAM_LEN +
- MAX_PANEL_FORMAT_STRING + 1) &&
- strlen(panel_node) && strlen(dsi_id))
+ dsi_id_len = strlen(dsi_id);
+
+ if (buf_size < (strlen(panel_node) + dsi_id_len +
+ MAX_PANEL_FORMAT_STRING + 1) ||
+ strlen(panel_node) ||
+ strlen(dsi_id))
+ {
+ ret = false;
+ }
+ else
{
pbuf[0] = '1'; // 1 indicates that LK is overriding the panel
pbuf[1] = ':'; // seperator
@@ -168,8 +179,8 @@
buf_size -= MAX_PANEL_FORMAT_STRING;
strlcpy(pbuf, dsi_id, buf_size);
- pbuf += MAX_DSI_STREAM_LEN;
- buf_size -= MAX_DSI_STREAM_LEN;
+ pbuf += dsi_id_len;
+ buf_size -= dsi_id_len;
strlcpy(pbuf, panel_node, buf_size);
ret = true;
diff --git a/dev/gcdb/display/gcdb_display.h b/dev/gcdb/display/gcdb_display.h
index 1de05fb..4811015 100755
--- a/dev/gcdb/display/gcdb_display.h
+++ b/dev/gcdb/display/gcdb_display.h
@@ -43,8 +43,6 @@
#define BIST_SIZE 6
#define LANE_SIZE 45
-#define MAX_DSI_STREAM_LEN 6
-
#define MAX_PANEL_FORMAT_STRING 2
/*---------------------------------------------------------------------------*/