msm: mdss: add support to featurize NULL packet insertion

For DSI6G v1.4.0 and above, DSI controller has support to insert
NULL packets in the middle of pixel data or DMA packets to avoid
HS-LP-HS transitions. Add support to featurize this based on DT
property.

Crs-Fixed: 880973
Change-Id: I36acfe6d27a1d750a5af12c3d136df473abb4598
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
Signed-off-by: Siddhartha Agrawal <agrawals@codeaurora.org>
This commit is contained in:
Siddhartha Agrawal 2015-08-28 13:46:28 -07:00 committed by David Keitel
parent 3c115aaa2f
commit d84d76e2e3
4 changed files with 9 additions and 1 deletions

View file

@ -110,6 +110,8 @@ Optional properties:
controller. These pin configurations are installed in the pinctrl controller. These pin configurations are installed in the pinctrl
device node. Refer to pinctrl-bindings.txt device node. Refer to pinctrl-bindings.txt
- qcom,regulator-ldo-mode: Boolean to enable ldo mode for the dsi phy regulator - qcom,regulator-ldo-mode: Boolean to enable ldo mode for the dsi phy regulator
- qcom,null-insertion-enabled: Boolean to enable NULL packet insertion
feature for DSI controller.
- qcom,dsi-irq-line: Boolean specifies if DSI has a different irq line than mdp. - qcom,dsi-irq-line: Boolean specifies if DSI has a different irq line than mdp.
- qcom,lane-map: Specifies the data lane swap configuration. - qcom,lane-map: Specifies the data lane swap configuration.
"lane_map_0123" = <0 1 2 3> (default value) "lane_map_0123" = <0 1 2 3> (default value)
@ -222,6 +224,7 @@ Example:
qcom,mmss-ulp-clamp-ctrl-offset = <0x20>; qcom,mmss-ulp-clamp-ctrl-offset = <0x20>;
qcom,mmss-phyreset-ctrl-offset = <0x24>; qcom,mmss-phyreset-ctrl-offset = <0x24>;
qcom,regulator-ldo-mode; qcom,regulator-ldo-mode;
qcom,null-insertion-enabled;
pinctrl-names = "mdss_default", "mdss_sleep"; pinctrl-names = "mdss_default", "mdss_sleep";
pinctrl-0 = <&mdss_dsi_active>; pinctrl-0 = <&mdss_dsi_active>;

View file

@ -3166,6 +3166,9 @@ static int mdss_dsi_parse_ctrl_params(struct platform_device *ctrl_pdev,
struct mdss_panel_info *pinfo = &(ctrl_pdata->panel_data.panel_info); struct mdss_panel_info *pinfo = &(ctrl_pdata->panel_data.panel_info);
const char *data; const char *data;
ctrl_pdata->null_insert_enabled = of_property_read_bool(
ctrl_pdev->dev.of_node, "qcom,null-insertion-enabled");
data = of_get_property(ctrl_pdev->dev.of_node, data = of_get_property(ctrl_pdev->dev.of_node,
"qcom,platform-strength-ctrl", &len); "qcom,platform-strength-ctrl", &len);
if (!data) { if (!data) {

View file

@ -459,6 +459,7 @@ struct mdss_dsi_ctrl_pdata {
struct regulator *ibb; /* vreg handle */ struct regulator *ibb; /* vreg handle */
struct mutex clk_lane_mutex; struct mutex clk_lane_mutex;
bool null_insert_enabled;
bool ulps; bool ulps;
bool core_power; bool core_power;
bool mmss_clamp; bool mmss_clamp;

View file

@ -1178,7 +1178,8 @@ static void mdss_dsi_mode_setup(struct mdss_panel_data *pdata)
} }
/* DSI_COMMAND_MODE_NULL_INSERTION_CTRL */ /* DSI_COMMAND_MODE_NULL_INSERTION_CTRL */
if (ctrl_pdata->shared_data->hw_rev >= MDSS_DSI_HW_REV_104) { if ((ctrl_pdata->shared_data->hw_rev >= MDSS_DSI_HW_REV_104)
&& ctrl_pdata->null_insert_enabled) {
data = (mipi->vc << 1); /* Virtual channel ID */ data = (mipi->vc << 1); /* Virtual channel ID */
data |= 0 << 16; /* Word count of the NULL packet */ data |= 0 << 16; /* Word count of the NULL packet */
data |= 0x1; /* Enable Null insertion */ data |= 0x1; /* Enable Null insertion */