Loading Documentation/devicetree/bindings/fb/mdss-spi-display.txt 0 → 100644 +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"; }; }; drivers/video/fbdev/msm/Kconfig +7 −8 Original line number Diff line number Diff line Loading @@ -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 Loading drivers/video/fbdev/msm/Makefile +4 −0 Original line number Diff line number Diff line Loading @@ -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 Loading drivers/video/fbdev/msm/mdss_fb.c +19 −2 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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)) { Loading drivers/video/fbdev/msm/mdss_mdp.c +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
Documentation/devicetree/bindings/fb/mdss-spi-display.txt 0 → 100644 +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"; }; };
drivers/video/fbdev/msm/Kconfig +7 −8 Original line number Diff line number Diff line Loading @@ -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 Loading
drivers/video/fbdev/msm/Makefile +4 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
drivers/video/fbdev/msm/mdss_fb.c +19 −2 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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)) { Loading
drivers/video/fbdev/msm/mdss_mdp.c +1 −0 Original line number Diff line number Diff line Loading @@ -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