Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90162ed7 authored by Kyle Yan's avatar Kyle Yan Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/dsi-staging: remove interrupt handling" into msm-4.8

parents d5ac0b72 070fced3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -271,7 +271,7 @@ static int dsi_pwr_parse_supply_node(struct device_node *root,
		}

		snprintf(regs->vregs[i].vreg_name,
			 strlen(regs->vregs[i].vreg_name),
			 ARRAY_SIZE(regs->vregs[i].vreg_name),
			 "%s", st);

		rc = of_property_read_u32(node, "qcom,supply-min-voltage",
+0 −100
Original line number Diff line number Diff line
@@ -499,38 +499,6 @@ static int dsi_ctrl_init_regmap(struct platform_device *pdev,
	return rc;
}

static irqreturn_t dsi_ctrl_isr(int irq, void *ptr)
{
	struct dsi_ctrl *dsi_ctrl = ptr;
	u32 interrupt_status = 0;
	u64 error_status = 0;
	unsigned long flags;

	spin_lock_irqsave(&dsi_ctrl->int_info.intr_lock, flags);
	interrupt_status = dsi_ctrl->hw.ops.get_interrupt_status(&dsi_ctrl->hw);
	error_status = dsi_ctrl->hw.ops.get_error_status(&dsi_ctrl->hw);

	dsi_ctrl->hw.ops.clear_interrupt_status(&dsi_ctrl->hw,
						interrupt_status);
	dsi_ctrl->hw.ops.clear_error_status(&dsi_ctrl->hw, error_status);

	dsi_ctrl->int_info.interrupt_status = interrupt_status;
	dsi_ctrl->int_info.error_status = error_status;

	spin_unlock_irqrestore(&dsi_ctrl->int_info.intr_lock, flags);

	if (interrupt_status & DSI_CMD_MODE_DMA_DONE)
		complete(&dsi_ctrl->int_info.cmd_dma_done);

	if (interrupt_status & DSI_VIDEO_MODE_FRAME_DONE)
		complete(&dsi_ctrl->int_info.vid_frame_done);

	if (interrupt_status & DSI_CMD_FRAME_DONE)
		complete(&dsi_ctrl->int_info.cmd_frame_done);

	return IRQ_HANDLED;
}

static int dsi_ctrl_clocks_deinit(struct dsi_ctrl *ctrl)
{
	struct dsi_core_clk_info *core = &ctrl->clk_info.core_clks;
@@ -1038,17 +1006,6 @@ static int dsi_message_tx(struct dsi_ctrl *dsi_ctrl,
			       dsi_ctrl->index);

		dsi_ctrl->hw.ops.reset_cmd_fifo(&dsi_ctrl->hw);
		rc = wait_for_completion_timeout(
			&dsi_ctrl->int_info.cmd_dma_done,
			msecs_to_jiffies(DSI_CTRL_TX_TO_MS));
		if (rc == 0) {
			pr_err("[%s] timedout waiting for cmd tx\n",
				dsi_ctrl->name);
			rc = -ETIMEDOUT;
			goto error;
		} else {
			rc = 0;
		}
	}
error:
	if (buffer)
@@ -1214,38 +1171,6 @@ int dsi_ctrl_intr_deinit(struct dsi_ctrl *dsi_ctrl)
	return 0;
}

static int dsi_ctrl_intr_init(struct dsi_ctrl *dsi_ctrl)
{
	int rc = 0;
	struct dsi_ctrl_interrupts *ints = &dsi_ctrl->int_info;

	ints->irq = irq_of_parse_and_map(dsi_ctrl->pdev->dev.of_node, 0);
	if ((int)ints->irq < 0) {
		rc = -EINVAL;
		pr_err("failed to parse and map irq, rc=%d\n", rc);
		dsi_ctrl->int_info.irq = 0;
		goto end;
	}

	spin_lock_init(&ints->intr_lock);

	init_completion(&ints->cmd_dma_done);
	init_completion(&ints->vid_frame_done);
	init_completion(&ints->cmd_frame_done);

	rc = devm_request_threaded_irq(&dsi_ctrl->pdev->dev,
				       ints->irq,
				       NULL,
				       dsi_ctrl_isr,
				       IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
				       dsi_ctrl->name,
				       dsi_ctrl);
	if (rc)
		pr_err("IRQ request failed, rc=%d\n", rc);
end:
	return rc;
}

static int dsi_ctrl_buffer_deinit(struct dsi_ctrl *dsi_ctrl)
{
	if (dsi_ctrl->tx_cmd_buf) {
@@ -1540,18 +1465,6 @@ int dsi_ctrl_drv_init(struct dsi_ctrl *dsi_ctrl, struct dentry *parent)
		goto error;
	}

	rc = dsi_ctrl_intr_init(dsi_ctrl);
	if (rc) {
		pr_err("Failed to initialize interrupt deps, rc=%d\n", rc);
		goto error;
	}

	rc = dsi_ctrl_buffer_init(dsi_ctrl);
	if (rc) {
		pr_err("Failed to initialize tx buffer, rc=%d\n", rc);
		goto error;
	}

	rc = dsi_ctrl_debugfs_init(dsi_ctrl, parent);
	if (rc) {
		pr_err("[DSI_%d] failed to init debug fs, rc=%d\n",
@@ -1591,10 +1504,6 @@ int dsi_ctrl_drv_deinit(struct dsi_ctrl *dsi_ctrl)
	if (rc)
		pr_err("Failed to free cmd buffers, rc=%d\n", rc);

	rc = dsi_ctrl_intr_deinit(dsi_ctrl);
	if (rc)
		pr_err("Failed to free interrupt deps, rc=%d\n", rc);

	mutex_unlock(&dsi_ctrl->ctrl_lock);
	return rc;
}
@@ -1953,15 +1862,6 @@ int dsi_ctrl_cmd_tx_trigger(struct dsi_ctrl *dsi_ctrl, u32 flags)
			       dsi_ctrl->index);
	}

	rc = wait_for_completion_timeout(&dsi_ctrl->int_info.cmd_dma_done,
					 msecs_to_jiffies(DSI_CTRL_TX_TO_MS));
	if (rc == 0) {
		pr_err("[%s] timedout waiting for cmd tx\n", dsi_ctrl->name);
		rc = -ETIMEDOUT;
	} else {
		rc = 0;
	}

	mutex_unlock(&dsi_ctrl->ctrl_lock);
	return rc;
}