Loading drivers/video/msm/mdss/mdss_mdp_intf_cmd.c +36 −7 Original line number Diff line number Diff line Loading @@ -842,11 +842,12 @@ end: return 0; } int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) static int mdss_mdp_cmd_stop_sub(struct mdss_mdp_ctl *ctl, int panel_power_state) { struct mdss_mdp_cmd_ctx *ctx; struct mdss_mdp_vsync_handler *tmp, *handle; int ret, session = 0; int session; ctx = (struct mdss_mdp_cmd_ctx *) ctl->priv_data; if (!ctx) { Loading @@ -854,6 +855,10 @@ int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) return -ENODEV; } /* if power state already updated, skip this */ if (ctx->panel_power_state == panel_power_state) return 0; list_for_each_entry_safe(handle, tmp, &ctx->vsync_handlers, list) mdss_mdp_cmd_remove_vsync_handler(ctl, handle); MDSS_XLOG(ctl->num, atomic_read(&ctx->koff_cnt), ctx->clk_enabled, Loading @@ -861,13 +866,37 @@ int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) /* Command mode is supported only starting at INTF1 */ session = ctl->intf_num - MDSS_MDP_INTF1; ret = mdss_mdp_cmd_intfs_stop(ctl, session, panel_power_state); return mdss_mdp_cmd_intfs_stop(ctl, session, panel_power_state); } int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) { struct mdss_mdp_cmd_ctx *ctx = ctl->priv_data; struct mdss_mdp_ctl *sctl = mdss_mdp_get_split_ctl(ctl); int ret; if (!ctx) { pr_err("invalid ctx\n"); return -ENODEV; } if (ctx->panel_power_state != panel_power_state) { ret = mdss_mdp_cmd_stop_sub(ctl, panel_power_state); if (IS_ERR_VALUE(ret)) { pr_err("unable to stop cmd interface: %d\n", ret); pr_err("%s: unable to stop interface: %d\n", __func__, ret); return ret; } if (ctl->num == 0) { if (sctl) { mdss_mdp_cmd_stop_sub(sctl, panel_power_state); if (IS_ERR_VALUE(ret)) { pr_err("%s: unable to stop slave intf: %d\n", __func__, ret); return ret; } } ret = mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_BLANK, (void *) (long int) panel_power_state); WARN(ret, "intf %d unblank error (%d)\n", ctl->intf_num, ret); Loading Loading
drivers/video/msm/mdss/mdss_mdp_intf_cmd.c +36 −7 Original line number Diff line number Diff line Loading @@ -842,11 +842,12 @@ end: return 0; } int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) static int mdss_mdp_cmd_stop_sub(struct mdss_mdp_ctl *ctl, int panel_power_state) { struct mdss_mdp_cmd_ctx *ctx; struct mdss_mdp_vsync_handler *tmp, *handle; int ret, session = 0; int session; ctx = (struct mdss_mdp_cmd_ctx *) ctl->priv_data; if (!ctx) { Loading @@ -854,6 +855,10 @@ int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) return -ENODEV; } /* if power state already updated, skip this */ if (ctx->panel_power_state == panel_power_state) return 0; list_for_each_entry_safe(handle, tmp, &ctx->vsync_handlers, list) mdss_mdp_cmd_remove_vsync_handler(ctl, handle); MDSS_XLOG(ctl->num, atomic_read(&ctx->koff_cnt), ctx->clk_enabled, Loading @@ -861,13 +866,37 @@ int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) /* Command mode is supported only starting at INTF1 */ session = ctl->intf_num - MDSS_MDP_INTF1; ret = mdss_mdp_cmd_intfs_stop(ctl, session, panel_power_state); return mdss_mdp_cmd_intfs_stop(ctl, session, panel_power_state); } int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) { struct mdss_mdp_cmd_ctx *ctx = ctl->priv_data; struct mdss_mdp_ctl *sctl = mdss_mdp_get_split_ctl(ctl); int ret; if (!ctx) { pr_err("invalid ctx\n"); return -ENODEV; } if (ctx->panel_power_state != panel_power_state) { ret = mdss_mdp_cmd_stop_sub(ctl, panel_power_state); if (IS_ERR_VALUE(ret)) { pr_err("unable to stop cmd interface: %d\n", ret); pr_err("%s: unable to stop interface: %d\n", __func__, ret); return ret; } if (ctl->num == 0) { if (sctl) { mdss_mdp_cmd_stop_sub(sctl, panel_power_state); if (IS_ERR_VALUE(ret)) { pr_err("%s: unable to stop slave intf: %d\n", __func__, ret); return ret; } } ret = mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_BLANK, (void *) (long int) panel_power_state); WARN(ret, "intf %d unblank error (%d)\n", ctl->intf_num, ret); Loading