display driver porting

Root cause:

How to fix:

Feature:
Issue:
Depends-On:

Change-Id: Idd7fdf53a98f1917649f48da10de99f3d09145a7
RiskArea:
diff --git a/drivers/video/fbdev/msm/mdss_dsi_panel.c b/drivers/video/fbdev/msm/mdss_dsi_panel.c
index 7d3009b..c453452 100644
--- a/drivers/video/fbdev/msm/mdss_dsi_panel.c
+++ b/drivers/video/fbdev/msm/mdss_dsi_panel.c
@@ -212,18 +212,21 @@
 
 	mdss_dsi_cmdlist_put(ctrl, &cmdreq);
 }
-
-static char led_pwm1[2] = {0x51, 0x0};	/* DTYPE_DCS_WRITE1 */
+//[Arima][8901][20181105]Jialong modify backlight range is 1~4095 for control cmd range(2 bytes) Start
+static char led_pwm1[3] = {0x51, 0x00,0x00};	/* DTYPE_DCS_WRITE1 */
 static struct dsi_cmd_desc backlight_cmd = {
-	{DTYPE_DCS_WRITE1, 1, 0, 0, 1, sizeof(led_pwm1)},
-	led_pwm1
+	{DTYPE_DCS_LWRITE, 1, 0, 0, 1, sizeof(led_pwm1)}, led_pwm1
 };
+//[Arima][8901][20181105]Jialong modify backlight range is 1~4095 for control cmd range(2 bytes) END
 
 static void mdss_dsi_panel_bklt_dcs(struct mdss_dsi_ctrl_pdata *ctrl, int level)
 {
 	struct dcs_cmd_req cmdreq;
 	struct mdss_panel_info *pinfo;
 
+//[Arima][8901][20181105]Jialong modify backlight range is 1~4095 for control cmd range(2 bytes) Start
+int para_1,para_2;
+
 	pinfo = &(ctrl->panel_data.panel_info);
 	if (pinfo->dcs_cmd_by_left) {
 		if (ctrl->ndx != DSI_CTRL_LEFT)
@@ -232,7 +235,14 @@
 
 	pr_debug("%s: level=%d\n", __func__, level);
 
-	led_pwm1[1] = (unsigned char)level;
+	//led_pwm1[1] = (unsigned char)level;
+	para_1 = (level>>8)&0x0F;
+	para_2 = level&0xFF;
+
+	led_pwm1[1] = (unsigned char)para_1;
+	led_pwm1[2] = (unsigned char)para_2;
+//[Arima][8901][20181105]Jialong modify backlight range is 1~4095 for control cmd range(2 bytes) End
+
 
 	memset(&cmdreq, 0, sizeof(cmdreq));
 	cmdreq.cmds = &backlight_cmd;
@@ -523,6 +533,19 @@
 			gpio_free(ctrl_pdata->disp_en_gpio);
 		}
 		gpio_set_value((ctrl_pdata->rst_gpio), 0);
+
+		//[Arima][8901][Jialongjhan]Modify pull TP reset Pin position 20191104 Start
+		//Move "pull low TP reset pin" from mdss_dsi.c,
+		//it have to same with LCM reset pin pull low
+
+		/*[Fairphone_8901][Jialong]To reduce power,pull down Touch reset pin when panel off start*/
+		//TP reset pin pull low with LCD reset pin at same time.
+		gpio_direction_output(64, 0);
+		/*[Fairphone_8901][Jialong]To reduce power,pull down Touch reset pin when panel off end*/
+
+		msleep(1);
+		//[Arima][8901][Jialongjhan]Modify pull TP reset Pin position 20191104 End
+
 		gpio_free(ctrl_pdata->rst_gpio);
 		if (gpio_is_valid(ctrl_pdata->mode_gpio))
 			gpio_free(ctrl_pdata->mode_gpio);
@@ -824,11 +847,22 @@
 		mdss_dsi_panel_dsc_pps_send(ctrl_pdata, &pdata->panel_info);
 }
 
+/*[Arima_8901][Jialongjhan] Expose display revision 20190326 begin*/
+static char RDDID[4] = {0x04, 0x00, 0x00, 0x00};
+static struct dsi_cmd_desc cmd_RDDID = {
+    {DTYPE_DCS_READ, 1, 0, 1, 5, sizeof(RDDID)}, RDDID};
+int RDDID_HWINFO[3];
+int RDDID_read_count =0;
+/*[Arima_8901][Jialongjhan] Expose display revision 20190326 end*/
+
 static void mdss_dsi_panel_bl_ctrl(struct mdss_panel_data *pdata,
 							u32 bl_level)
 {
 	struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL;
 	struct mdss_dsi_ctrl_pdata *sctrl = NULL;
+    /*[Arima_8901][Jialongjhan] Expose display revision 20190326 begin*/
+    struct dcs_cmd_req cmdreq2;
+    /*[Arima_8901][Jialongjhan] Expose display revision 20190326 end*/
 
 	if (pdata == NULL) {
 		pr_err("%s: Invalid input data\n", __func__);
@@ -838,6 +872,32 @@
 	ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata,
 				panel_data);
 
+    /*[Arima_8901][Jialongjhan] Expose display revision 20190326 begin*/
+    if(RDDID_read_count==0){
+        memset(&cmdreq2, 0, sizeof(cmdreq2));
+        cmdreq2.cmds = &cmd_RDDID;
+        cmdreq2.cmds_cnt = 1;
+        cmdreq2.flags = CMD_REQ_COMMIT | CMD_REQ_RX;;
+        cmdreq2.rlen = 3;//return 3 values
+        cmdreq2.cb = NULL; /* call back */
+        cmdreq2.rbuf = ctrl_pdata->rx_buf.data;
+
+        mdss_dsi_cmdlist_put(ctrl_pdata, &cmdreq2);
+
+        if(ctrl_pdata->rx_buf.len>0){
+            RDDID_HWINFO[0]=(int)*(ctrl_pdata->rx_buf.data);
+            RDDID_HWINFO[1]=(int)*(ctrl_pdata->rx_buf.data+1);
+            RDDID_HWINFO[2]=(int)*(ctrl_pdata->rx_buf.data+2);
+            //pr_err("[Jialong] ctrl->rx_buf.data data =0x%x\n",*(ctrl_pdata->rx_buf.data));
+            RDDID_read_count++;
+        }
+    }
+    /*[Arima_8901][Jialongjhan] Expose display revision 20190326 end*/
+
+    //[Arima][8901][JialongJhan] Command mode debug fuzzy screen 20190516 Start
+    mdelay(1);
+    //[Arima][8901][JialongJhan] Command mode debug fuzzy screen 20190516 End
+
 	/*
 	 * Some backlight controllers specify a minimum duty cycle
 	 * for the backlight brightness. If the brightness is less