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

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

Merge "msm: mdss: Fix incorrect handle of vsync for SPI display"

parents 69df050f 2869f7a1
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
Qualcomm Technologies, Inc. mdss-spi-display

mdss-spi-display is a spi interface display which support send frame
data and command to panel, compatible with SPI interface specification.

Required properties:
- compatible:		Must be "qcom,mdss-spi-display"
- qcom,mdss-fb-map:	pHandle that specifies the framebuffer to which the
			interface is mapped.

Optional properties:
- label:		A string used to describe the controller used.
Example:
mdss_spi_display: qcom,mdss_spi_display {
	compatible = "qcom,mdss-spi-display";
	label = "mdss spi display";

	mdss_fb0: qcom,mdss_fb_primary {
		cell-index = <0>;
		compatible = "qcom,mdss-fb";
	};
};
+7 −8
Original line number Diff line number Diff line
@@ -83,14 +83,13 @@ config FB_MSM_MDSS_HDMI_MHL_SII8334
	uses USB connector to output HDMI content

config FB_MSM_MDSS_SPI_PANEL
        depends on FB_MSM_MDSS
	depends on SPI_QUP
	bool "Support SPI panel feature"
        default n
	---help---
	The MDSS SPI Panel provides support for transmittimg SPI signals of
        MDSS frame buffer data to connected panel. Limited by SPI rate, the
        current max fps only reach to 27 fps, and limited by MDP hardware
        architecture only supply on MDP3
	MDSS frame buffer data to connected panel. Limited by SPI clock rate,
	the current max fps only reach to ~30 fps with 240x320 resolution, and
	limited by MDP hardware architecture only supply GPU compostition.

config FB_MSM_MDSS_MHL3
	depends on FB_MSM_MDSS_HDMI_PANEL
+4 −0
Original line number Diff line number Diff line
@@ -66,9 +66,13 @@ obj-$(CONFIG_FB_MSM_MDSS_HDMI_PANEL) += mdss_hdmi_hdcp2p2.o
obj-$(CONFIG_FB_MSM_MDSS_HDMI_PANEL) += mdss_hdmi_cec.o
obj-$(CONFIG_FB_MSM_MDSS_HDMI_PANEL) += mdss_hdmi_audio.o
obj-$(CONFIG_FB_MSM_MDSS_HDMI_MHL_SII8334) += mhl_sii8334.o mhl_msc.o
obj-$(CONFIG_FB_MSM_MDSS_SPI_PANEL) += mdss_spi_display.o
ccflags-y += -DTARGET_HW_MDSS_HDMI
endif

obj-$(CONFIG_FB_MSM_MDSS_SPI_PANEL) += mdss_spi_client.o
obj-$(CONFIG_FB_MSM_MDSS_SPI_PANEL) += mdss_spi_panel.o

obj-$(CONFIG_FB_MSM_MDSS_WRITEBACK) += mdss_wb.o

mdss-qpic-objs := mdss_qpic.o mdss_fb.o mdss_qpic_panel.o mdss_sync.o
+19 −2
Original line number Diff line number Diff line
@@ -1295,6 +1295,7 @@ static int mdss_fb_probe(struct platform_device *pdev)

	if (mfd->panel.type == SPI_PANEL)
		mfd->fb_imgType = MDP_RGB_565;

	if (mfd->panel.type == MIPI_VIDEO_PANEL || mfd->panel.type ==
		MIPI_CMD_PANEL || mfd->panel.type == SPI_PANEL){
		rc = of_property_read_string(pdev->dev.of_node,
@@ -1308,6 +1309,7 @@ static int mdss_fb_probe(struct platform_device *pdev)
				mfd->fb_imgType = MDP_RGBA_8888;
			}
		}

	mfd->split_fb_left = mfd->split_fb_right = 0;

	mdss_fb_set_split_mode(mfd, pdata);
@@ -2215,8 +2217,9 @@ void mdss_fb_free_fb_ion_memory(struct msm_fb_data_type *mfd)

	ion_unmap_kernel(mfd->fb_ion_client, mfd->fb_ion_handle);

	if (mfd->mdp.fb_mem_get_iommu_domain && !(!mfd->fb_attachment ||
		!mfd->fb_attachment->dmabuf ||
	if ((mfd->mdp.fb_mem_get_iommu_domain ||
		(mfd->panel.type == SPI_PANEL)) &&
		!(!mfd->fb_attachment || !mfd->fb_attachment->dmabuf ||
		!mfd->fb_attachment->dmabuf->ops)) {
		dma_buf_unmap_attachment(mfd->fb_attachment, mfd->fb_table,
				DMA_BIDIRECTIONAL);
@@ -2274,6 +2277,20 @@ int mdss_fb_alloc_fb_ion_memory(struct msm_fb_data_type *mfd, size_t fb_size)
			goto err_put;
		}

		mfd->fb_table = dma_buf_map_attachment(mfd->fb_attachment,
				DMA_BIDIRECTIONAL);
		if (IS_ERR(mfd->fb_table)) {
			rc = PTR_ERR(mfd->fb_table);
			goto err_detach;
		}
	} else if (mfd->panel.type == SPI_PANEL) {
		mfd->fb_attachment = dma_buf_attach(mfd->fbmem_buf,
				&mfd->pdev->dev);
		if (IS_ERR(mfd->fb_attachment)) {
			rc = PTR_ERR(mfd->fb_attachment);
			goto err_put;
		}

		mfd->fb_table = dma_buf_map_attachment(mfd->fb_attachment,
			DMA_BIDIRECTIONAL);
		if (IS_ERR(mfd->fb_table)) {
+1 −0
Original line number Diff line number Diff line
@@ -98,6 +98,7 @@ static struct mdss_panel_intf pan_types[] = {
	{"dsi", MDSS_PANEL_INTF_DSI},
	{"edp", MDSS_PANEL_INTF_EDP},
	{"hdmi", MDSS_PANEL_INTF_HDMI},
	{"spi", MDSS_PANEL_INTF_SPI},
};
static char mdss_mdp_panel[MDSS_MAX_PANEL_LEN];

Loading