Loading arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi +5 −0 Original line number Diff line number Diff line Loading @@ -602,8 +602,13 @@ /delete-property/ qcom,dsi-display-active; }; &hdmi_display { qcom,display-type = "primary"; }; &dsi_adv_7533_1 { qcom,dsi-display-active; qcom,display-type = "secondary"; qcom,panel-supply-entries { #address-cells = <1>; Loading arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi +45 −9 Original line number Diff line number Diff line Loading @@ -362,23 +362,23 @@ }; qcom,sde-plane-id@2 { qcom,display-type = "primary"; qcom,plane-name = "vig2", "vig3"; qcom,plane-name = "dma0", "dma1"; qcom,plane-type = "overlay"; }; qcom,sde-plane-id@3 { qcom,display-type = "primary"; qcom,plane-name = "rgb2", "rgb3"; qcom,plane-type = "overlay"; qcom,plane-name = "cursor0", "cursor1"; qcom,plane-type = "cursor"; }; qcom,sde-plane-id@4 { qcom,display-type = "primary"; qcom,plane-name = "dma0", "dma1"; qcom,plane-type = "overlay"; qcom,display-type = "secondary"; qcom,plane-name = "rgb2", "rgb3"; qcom,plane-type = "primary"; }; qcom,sde-plane-id@5 { qcom,display-type = "primary"; qcom,plane-name = "cursor0", "cursor1"; qcom,plane-type = "cursor"; qcom,display-type = "secondary"; qcom,plane-name = "vig2", "vig3"; qcom,plane-type = "overlay"; }; }; }; Loading @@ -393,6 +393,42 @@ qcom,hdmi-tx-mux-lpm-gpio = <&tlmm 85 0>; }; &dsi_dual_sharp_video_1 { /delete-property/ qcom,dsi-display-active; }; &hdmi_display { qcom,display-type = "primary"; }; &dsi_adv_7533_1 { qcom,dsi-display-active; qcom,display-type = "secondary"; qcom,panel-supply-entries { #address-cells = <1>; #size-cells = <0>; qcom,panel-supply-entry@0 { reg = <0>; qcom,supply-name = "vdd"; qcom,supply-min-voltage = <3300000>; qcom,supply-max-voltage = <3300000>; qcom,supply-enable-load = <100000>; qcom,supply-disable-load = <100>; }; qcom,panel-supply-entry@1 { reg = <1>; qcom,supply-name = "vddio"; qcom,supply-min-voltage = <1800000>; qcom,supply-max-voltage = <1800000>; qcom,supply-enable-load = <100000>; qcom,supply-disable-load = <100>; }; }; }; &mdss_mdp { qcom,mdss-pref-prim-intf = "dsi"; }; Loading drivers/gpu/drm/msm/dba_bridge.c +12 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ * @hdmi_mode: HDMI or DVI mode for the sink * @num_of_input_lanes: Number of input lanes in case of DSI/LVDS * @pluggable: If it's pluggable * @panel_count: Number of panels attached to this display */ struct dba_bridge { struct drm_bridge base; Loading @@ -48,6 +49,7 @@ struct dba_bridge { bool hdmi_mode; u32 num_of_input_lanes; bool pluggable; u32 panel_count; }; #define to_dba_bridge(x) container_of((x), struct dba_bridge, base) Loading Loading @@ -225,9 +227,18 @@ static void _dba_bridge_mode_set(struct drm_bridge *bridge, if (!bridge || !mode || !adjusted_mode || !d_bridge) { SDE_ERROR("Invalid params\n"); return; } else if (!d_bridge->panel_count) { SDE_ERROR("Panel count is 0\n"); return; } d_bridge->mode = *adjusted_mode; /* Adjust mode according to number of panels */ d_bridge->mode.hdisplay /= d_bridge->panel_count; d_bridge->mode.hsync_start /= d_bridge->panel_count; d_bridge->mode.hsync_end /= d_bridge->panel_count; d_bridge->mode.htotal /= d_bridge->panel_count; d_bridge->mode.clock /= d_bridge->panel_count; } static bool _dba_bridge_mode_fixup(struct drm_bridge *bridge, Loading Loading @@ -293,6 +304,7 @@ struct drm_bridge *dba_bridge_init(struct drm_device *dev, bridge->hdmi_mode = data->hdmi_mode; bridge->num_of_input_lanes = data->num_of_input_lanes; bridge->pluggable = data->pluggable; bridge->panel_count = data->panel_count; bridge->base.funcs = &_dba_bridge_ops; bridge->base.encoder = encoder; Loading drivers/gpu/drm/msm/dba_bridge.h +2 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ * @num_of_input_lanes: Number of input lanes in case of DSI/LVDS * @precede_bridge: Precede bridge chip * @pluggable: If it's pluggable * @panel_count: Number of panels attached to this display */ struct dba_bridge_init { const char *client_name; Loading @@ -42,6 +43,7 @@ struct dba_bridge_init { u32 num_of_input_lanes; struct drm_bridge *precede_bridge; bool pluggable; u32 panel_count; }; /** Loading drivers/gpu/drm/msm/dsi-staging/dsi_defs.h +2 −2 Original line number Diff line number Diff line Loading @@ -198,12 +198,12 @@ enum dsi_video_traffic_mode { * @h_sync_width: HSYNC width in pixels. * @h_front_porch: Horizontal fron porch in pixels. * @h_skew: * @h_sync_polarity: Polarity of HSYNC (false is active low). * @h_sync_polarity: Polarity of HSYNC (false is active high). * @v_active: Active height of one frame in lines. * @v_back_porch: Vertical back porch in lines. * @v_sync_width: VSYNC width in lines. * @v_front_porch: Vertical front porch in lines. * @v_sync_polarity: Polarity of VSYNC (false is active low). * @v_sync_polarity: Polarity of VSYNC (false is active high). * @refresh_rate: Refresh rate in Hz. */ struct dsi_mode_info { Loading Loading
arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi +5 −0 Original line number Diff line number Diff line Loading @@ -602,8 +602,13 @@ /delete-property/ qcom,dsi-display-active; }; &hdmi_display { qcom,display-type = "primary"; }; &dsi_adv_7533_1 { qcom,dsi-display-active; qcom,display-type = "secondary"; qcom,panel-supply-entries { #address-cells = <1>; Loading
arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi +45 −9 Original line number Diff line number Diff line Loading @@ -362,23 +362,23 @@ }; qcom,sde-plane-id@2 { qcom,display-type = "primary"; qcom,plane-name = "vig2", "vig3"; qcom,plane-name = "dma0", "dma1"; qcom,plane-type = "overlay"; }; qcom,sde-plane-id@3 { qcom,display-type = "primary"; qcom,plane-name = "rgb2", "rgb3"; qcom,plane-type = "overlay"; qcom,plane-name = "cursor0", "cursor1"; qcom,plane-type = "cursor"; }; qcom,sde-plane-id@4 { qcom,display-type = "primary"; qcom,plane-name = "dma0", "dma1"; qcom,plane-type = "overlay"; qcom,display-type = "secondary"; qcom,plane-name = "rgb2", "rgb3"; qcom,plane-type = "primary"; }; qcom,sde-plane-id@5 { qcom,display-type = "primary"; qcom,plane-name = "cursor0", "cursor1"; qcom,plane-type = "cursor"; qcom,display-type = "secondary"; qcom,plane-name = "vig2", "vig3"; qcom,plane-type = "overlay"; }; }; }; Loading @@ -393,6 +393,42 @@ qcom,hdmi-tx-mux-lpm-gpio = <&tlmm 85 0>; }; &dsi_dual_sharp_video_1 { /delete-property/ qcom,dsi-display-active; }; &hdmi_display { qcom,display-type = "primary"; }; &dsi_adv_7533_1 { qcom,dsi-display-active; qcom,display-type = "secondary"; qcom,panel-supply-entries { #address-cells = <1>; #size-cells = <0>; qcom,panel-supply-entry@0 { reg = <0>; qcom,supply-name = "vdd"; qcom,supply-min-voltage = <3300000>; qcom,supply-max-voltage = <3300000>; qcom,supply-enable-load = <100000>; qcom,supply-disable-load = <100>; }; qcom,panel-supply-entry@1 { reg = <1>; qcom,supply-name = "vddio"; qcom,supply-min-voltage = <1800000>; qcom,supply-max-voltage = <1800000>; qcom,supply-enable-load = <100000>; qcom,supply-disable-load = <100>; }; }; }; &mdss_mdp { qcom,mdss-pref-prim-intf = "dsi"; }; Loading
drivers/gpu/drm/msm/dba_bridge.c +12 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ * @hdmi_mode: HDMI or DVI mode for the sink * @num_of_input_lanes: Number of input lanes in case of DSI/LVDS * @pluggable: If it's pluggable * @panel_count: Number of panels attached to this display */ struct dba_bridge { struct drm_bridge base; Loading @@ -48,6 +49,7 @@ struct dba_bridge { bool hdmi_mode; u32 num_of_input_lanes; bool pluggable; u32 panel_count; }; #define to_dba_bridge(x) container_of((x), struct dba_bridge, base) Loading Loading @@ -225,9 +227,18 @@ static void _dba_bridge_mode_set(struct drm_bridge *bridge, if (!bridge || !mode || !adjusted_mode || !d_bridge) { SDE_ERROR("Invalid params\n"); return; } else if (!d_bridge->panel_count) { SDE_ERROR("Panel count is 0\n"); return; } d_bridge->mode = *adjusted_mode; /* Adjust mode according to number of panels */ d_bridge->mode.hdisplay /= d_bridge->panel_count; d_bridge->mode.hsync_start /= d_bridge->panel_count; d_bridge->mode.hsync_end /= d_bridge->panel_count; d_bridge->mode.htotal /= d_bridge->panel_count; d_bridge->mode.clock /= d_bridge->panel_count; } static bool _dba_bridge_mode_fixup(struct drm_bridge *bridge, Loading Loading @@ -293,6 +304,7 @@ struct drm_bridge *dba_bridge_init(struct drm_device *dev, bridge->hdmi_mode = data->hdmi_mode; bridge->num_of_input_lanes = data->num_of_input_lanes; bridge->pluggable = data->pluggable; bridge->panel_count = data->panel_count; bridge->base.funcs = &_dba_bridge_ops; bridge->base.encoder = encoder; Loading
drivers/gpu/drm/msm/dba_bridge.h +2 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ * @num_of_input_lanes: Number of input lanes in case of DSI/LVDS * @precede_bridge: Precede bridge chip * @pluggable: If it's pluggable * @panel_count: Number of panels attached to this display */ struct dba_bridge_init { const char *client_name; Loading @@ -42,6 +43,7 @@ struct dba_bridge_init { u32 num_of_input_lanes; struct drm_bridge *precede_bridge; bool pluggable; u32 panel_count; }; /** Loading
drivers/gpu/drm/msm/dsi-staging/dsi_defs.h +2 −2 Original line number Diff line number Diff line Loading @@ -198,12 +198,12 @@ enum dsi_video_traffic_mode { * @h_sync_width: HSYNC width in pixels. * @h_front_porch: Horizontal fron porch in pixels. * @h_skew: * @h_sync_polarity: Polarity of HSYNC (false is active low). * @h_sync_polarity: Polarity of HSYNC (false is active high). * @v_active: Active height of one frame in lines. * @v_back_porch: Vertical back porch in lines. * @v_sync_width: VSYNC width in lines. * @v_front_porch: Vertical front porch in lines. * @v_sync_polarity: Polarity of VSYNC (false is active low). * @v_sync_polarity: Polarity of VSYNC (false is active high). * @refresh_rate: Refresh rate in Hz. */ struct dsi_mode_info { Loading