Pārlūkot izejas kodu

Merge "disp: msm: dsi: add warning message for rx debugfs commands during suspend"

qctecmdr 4 gadi atpakaļ
vecāks
revīzija
bb76263607
1 mainītis faili ar 16 papildinājumiem un 2 dzēšanām
  1. 16 2
      msm/dsi/dsi_display.c

+ 16 - 2
msm/dsi/dsi_display.c

@@ -998,13 +998,17 @@ static int dsi_display_ctrl_get_host_init_state(struct dsi_display *dsi_display,
 {
 	struct dsi_display_ctrl *ctrl;
 	int i, rc = -EINVAL;
+	bool final_state = true;
 
 	display_for_each_ctrl(i, dsi_display) {
+		bool ctrl_state = false;
 		ctrl = &dsi_display->ctrl[i];
-		rc = dsi_ctrl_get_host_engine_init_state(ctrl->ctrl, state);
-		if (rc)
+		rc = dsi_ctrl_get_host_engine_init_state(ctrl->ctrl, &ctrl_state);
+		final_state &= ctrl_state;
+		if ((rc) || !(final_state))
 			break;
 	}
+	*state = final_state;
 	return rc;
 }
 
@@ -1201,6 +1205,16 @@ int dsi_display_cmd_receive(void *display, const char *cmd_buf,
 	}
 
 	rc = dsi_display_ctrl_get_host_init_state(dsi_display, &state);
+
+	/**
+	 * Handle scenario where a command transfer is initiated through
+	 * sysfs interface when device is in suspend state.
+	 */
+	if (!rc && !state) {
+		pr_warn_ratelimited("Command xfer attempted while device is in suspend state\n");
+		rc = -EPERM;
+		goto end;
+	}
 	if (rc || !state) {
 		DSI_ERR("[DSI] Invalid host state = %d rc = %d\n",
 			state, rc);