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

Commit 12481301 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "zirc: display: qpic: enable qpic interface clock"

parents be45c55c 19db2498
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -71,7 +71,12 @@ static struct platform_driver mdss_qpic_driver = {
int qpic_on(struct msm_fb_data_type *mfd)
{
	int ret;

	if (qpic_res->qpic_a_clk)
		clk_prepare_enable(qpic_res->qpic_a_clk);

	ret = mdss_qpic_panel_on(qpic_res->panel_data, &qpic_res->panel_io);
	qpic_res->qpic_is_on = true;
	return ret;
}

@@ -81,6 +86,11 @@ int qpic_off(struct msm_fb_data_type *mfd)
	ret = mdss_qpic_panel_off(qpic_res->panel_data, &qpic_res->panel_io);
	if (use_irq)
		qpic_interrupt_en(false);

	if (qpic_res->qpic_a_clk)
		clk_disable_unprepare(qpic_res->qpic_a_clk);

	qpic_res->qpic_is_on = false;
	return ret;
}

@@ -110,6 +120,11 @@ static void mdss_qpic_pan_display(struct msm_fb_data_type *mfd)
		return;
	}

	if (!qpic_res->qpic_is_on) {
		pr_err("Panel is not on\n");
		return;
	}

	fbi = mfd->fbi;

	bpp = fbi->var.bits_per_pixel / 8;
@@ -127,7 +142,6 @@ static void mdss_qpic_pan_display(struct msm_fb_data_type *mfd)
		fb_offset = (u32)mfd->fbi->screen_base + offset;

	msm_qpic_bus_set_vote(1);
	mdss_qpic_panel_on(qpic_res->panel_data, &qpic_res->panel_io);
	size = fbi->var.xres * fbi->var.yres * bpp;

	qpic_send_frame(0, 0, fbi->var.xres - 1, fbi->var.yres - 1,
@@ -687,7 +701,6 @@ static int mdss_qpic_probe(struct platform_device *pdev)
		.fb_stride = mdss_qpic_fb_stride,
	};


	if (!pdev->dev.of_node) {
		pr_err("qpic driver only supports device tree probe\n");
		return -ENOTSUPP;
@@ -728,8 +741,7 @@ static int mdss_qpic_probe(struct platform_device *pdev)
	}
	qpic_res->qpic_phys = res->start;
	pr_info("MDSS QPIC HW Base phy_Address=0x%x virt=0x%x\n",
		(int) res->start,
		(int) qpic_res->qpic_base);
		(int) res->start, (int) qpic_res->qpic_base);

	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
	if (!res) {
@@ -737,6 +749,9 @@ static int mdss_qpic_probe(struct platform_device *pdev)
		rc = -ENOMEM;
		goto probe_done;
	}
	qpic_res->qpic_a_clk = clk_get(&pdev->dev, "core_a_clk");
	if (IS_ERR(qpic_res->qpic_a_clk))
		pr_warn("%s: Can't find core_a_clk", __func__);

	qpic_res->irq = res->start;
	qpic_res->res_init = true;
+2 −0
Original line number Diff line number Diff line
@@ -86,6 +86,8 @@ struct qpic_data_type {
	struct qpic_panel_io_desc panel_io;
	u32 bus_handle;
	struct completion fifo_eof_comp;
	u32 qpic_is_on;
	struct clk *qpic_a_clk;
};

u32 qpic_send_frame(
+0 −5
Original line number Diff line number Diff line
@@ -273,11 +273,6 @@ static int mdss_qpic_panel_probe(struct platform_device *pdev)
		qpic_panel_off = ili9341_off;
	}

	if (qpic_panel_on == ili9341_on) {
		vendor_pdata.panel_info.xres = 240;
		vendor_pdata.panel_info.yres = 320;
	}

	rc = qpic_register_panel(&vendor_pdata);
	if (rc)
		return rc;
+3 −0
Original line number Diff line number Diff line
@@ -77,6 +77,9 @@ static void panel_io_off(struct qpic_panel_io_desc *qpic_panel_io)

void ili9341_off(struct qpic_panel_io_desc *qpic_panel_io)
{
	qpic_send_pkt(OP_SET_DISPLAY_OFF, NULL, 0);
	/* wait for 20 ms after disply off */
	msleep(20);
	panel_io_off(qpic_panel_io);
}