Loading Documentation/devicetree/bindings/drm/msm/hdmi-display.txt +3 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ Required properties: Optional properties: - qcom,display-type: display type of this manager. It could be "primary", "secondary", "tertiary", etc. - qcom,display-topology-control: display topology control. It could be "force-mixer", "force-tiling" - qcom,non-pluggable: Boolean to indicate if display is non pluggable. - qcom,skip_ddc: Boolean to indicate if display skips ddc function. - qcom,customize-modes: Customized modes when it's non pluggable display. Loading Loading @@ -37,6 +39,7 @@ Example: compatible = "qcom,hdmi-display"; label = "hdmi_display"; qcom,display-type = "secondary"; qcom,display-topology-control = "force-mixer"; qcom,non-pluggable; qcom,customize-modes { qcom,customize-mode-id@0 { Loading Documentation/devicetree/bindings/drm/msm/mdp.txt +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,8 @@ Optional properties: - reg: reg property. - qcom,display-type: display type this plane is mapped to. It could be "primary", "secondary" and "tertiary". - qcom,display-topology-control: display topology control. It could be "force-mixer", "force-tiling" - qcom,plane-name: plane name array for this virtual plane. It could be "rgb0", "rgb1", "rgb2", "rgb3", "vig0", "vig1", "vig2", "vig3", "dma0", "dma1", "dma2", "dma3", "cursor0", "cursor1". Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.c +20 −0 Original line number Diff line number Diff line Loading @@ -1142,6 +1142,8 @@ static int dsi_display_parse_dt(struct dsi_display *display) int i, size; u32 phy_count = 0; struct device_node *of_node; const char *name; u32 top = 0; /* Parse controllers */ for (i = 0; i < MAX_DSI_CTRLS_PER_DISPLAY; i++) { Loading Loading @@ -1189,6 +1191,24 @@ static int dsi_display_parse_dt(struct dsi_display *display) "qcom,dsi-split-swap"); } rc = of_property_read_string(display->pdev->dev.of_node, "qcom,display-topology-control", &name); if (rc) { SDE_ERROR("unable to get qcom,display-topology-control,rc=%d\n", rc); } else { SDE_DEBUG("%s qcom,display-topology-control = %s\n", __func__, name); if (!strcmp(name, "force-mixer")) top = BIT(SDE_RM_TOPCTL_FORCE_MIXER); else if (!strcmp(name, "force-tiling")) top = BIT(SDE_RM_TOPCTL_FORCE_TILING); display->display_topology = top; } if (of_get_property(display->pdev->dev.of_node, "qcom,dsi-panel", &size)) { display->panel_count = size / sizeof(int); Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.h +2 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ struct dsi_display_clk_info { * @root: Debugfs root directory * @cont_splash_enabled: Early splash status. * @dsi_split_swap: Swap dsi output in split mode. * @display_topology: user requested display topology */ struct dsi_display { struct platform_device *pdev; Loading Loading @@ -163,6 +164,7 @@ struct dsi_display { bool cont_splash_enabled; bool dsi_split_swap; u32 display_topology; }; int dsi_display_dev_probe(struct platform_device *pdev); Loading drivers/gpu/drm/msm/dsi-staging/dsi_drm.c +23 −0 Original line number Diff line number Diff line Loading @@ -288,6 +288,29 @@ static const struct drm_bridge_funcs dsi_bridge_ops = { .mode_set = dsi_bridge_mode_set, }; int dsi_display_set_top_ctl(struct drm_connector *connector, struct drm_display_mode *adj_mode, void *display) { int rc = 0; struct dsi_display *dsi_display = (struct dsi_display *)display; if (!dsi_display) { SDE_ERROR("dsi_display is NULL\n"); return -EINVAL; } if (dsi_display->display_topology) { SDE_DEBUG("%s, set display topology %d\n", __func__, dsi_display->display_topology); msm_property_set_property(sde_connector_get_propinfo(connector), sde_connector_get_property_values(connector->state), CONNECTOR_PROP_TOPOLOGY_CONTROL, dsi_display->display_topology); } return rc; } int dsi_conn_post_init(struct drm_connector *connector, void *info, void *display) Loading Loading
Documentation/devicetree/bindings/drm/msm/hdmi-display.txt +3 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ Required properties: Optional properties: - qcom,display-type: display type of this manager. It could be "primary", "secondary", "tertiary", etc. - qcom,display-topology-control: display topology control. It could be "force-mixer", "force-tiling" - qcom,non-pluggable: Boolean to indicate if display is non pluggable. - qcom,skip_ddc: Boolean to indicate if display skips ddc function. - qcom,customize-modes: Customized modes when it's non pluggable display. Loading Loading @@ -37,6 +39,7 @@ Example: compatible = "qcom,hdmi-display"; label = "hdmi_display"; qcom,display-type = "secondary"; qcom,display-topology-control = "force-mixer"; qcom,non-pluggable; qcom,customize-modes { qcom,customize-mode-id@0 { Loading
Documentation/devicetree/bindings/drm/msm/mdp.txt +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,8 @@ Optional properties: - reg: reg property. - qcom,display-type: display type this plane is mapped to. It could be "primary", "secondary" and "tertiary". - qcom,display-topology-control: display topology control. It could be "force-mixer", "force-tiling" - qcom,plane-name: plane name array for this virtual plane. It could be "rgb0", "rgb1", "rgb2", "rgb3", "vig0", "vig1", "vig2", "vig3", "dma0", "dma1", "dma2", "dma3", "cursor0", "cursor1". Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.c +20 −0 Original line number Diff line number Diff line Loading @@ -1142,6 +1142,8 @@ static int dsi_display_parse_dt(struct dsi_display *display) int i, size; u32 phy_count = 0; struct device_node *of_node; const char *name; u32 top = 0; /* Parse controllers */ for (i = 0; i < MAX_DSI_CTRLS_PER_DISPLAY; i++) { Loading Loading @@ -1189,6 +1191,24 @@ static int dsi_display_parse_dt(struct dsi_display *display) "qcom,dsi-split-swap"); } rc = of_property_read_string(display->pdev->dev.of_node, "qcom,display-topology-control", &name); if (rc) { SDE_ERROR("unable to get qcom,display-topology-control,rc=%d\n", rc); } else { SDE_DEBUG("%s qcom,display-topology-control = %s\n", __func__, name); if (!strcmp(name, "force-mixer")) top = BIT(SDE_RM_TOPCTL_FORCE_MIXER); else if (!strcmp(name, "force-tiling")) top = BIT(SDE_RM_TOPCTL_FORCE_TILING); display->display_topology = top; } if (of_get_property(display->pdev->dev.of_node, "qcom,dsi-panel", &size)) { display->panel_count = size / sizeof(int); Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.h +2 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ struct dsi_display_clk_info { * @root: Debugfs root directory * @cont_splash_enabled: Early splash status. * @dsi_split_swap: Swap dsi output in split mode. * @display_topology: user requested display topology */ struct dsi_display { struct platform_device *pdev; Loading Loading @@ -163,6 +164,7 @@ struct dsi_display { bool cont_splash_enabled; bool dsi_split_swap; u32 display_topology; }; int dsi_display_dev_probe(struct platform_device *pdev); Loading
drivers/gpu/drm/msm/dsi-staging/dsi_drm.c +23 −0 Original line number Diff line number Diff line Loading @@ -288,6 +288,29 @@ static const struct drm_bridge_funcs dsi_bridge_ops = { .mode_set = dsi_bridge_mode_set, }; int dsi_display_set_top_ctl(struct drm_connector *connector, struct drm_display_mode *adj_mode, void *display) { int rc = 0; struct dsi_display *dsi_display = (struct dsi_display *)display; if (!dsi_display) { SDE_ERROR("dsi_display is NULL\n"); return -EINVAL; } if (dsi_display->display_topology) { SDE_DEBUG("%s, set display topology %d\n", __func__, dsi_display->display_topology); msm_property_set_property(sde_connector_get_propinfo(connector), sde_connector_get_property_values(connector->state), CONNECTOR_PROP_TOPOLOGY_CONTROL, dsi_display->display_topology); } return rc; } int dsi_conn_post_init(struct drm_connector *connector, void *info, void *display) Loading