Loading drivers/gpu/drm/msm/sde/sde_encoder.c +8 −1 Original line number Diff line number Diff line /* * Copyright (c) 2014-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2014-2019, The Linux Foundation. All rights reserved. * Copyright (C) 2013 Red Hat * Author: Rob Clark <robdclark@gmail.com> * Loading Loading @@ -563,6 +563,13 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc) if (sde_enc->cur_master && sde_enc->cur_master->ops.disable) sde_enc->cur_master->ops.disable(sde_enc->cur_master); for (i = 0; i < sde_enc->num_phys_encs; i++) { struct sde_encoder_phys *phys = sde_enc->phys_encs[i]; if (phys && phys->ops.post_disable) phys->ops.post_disable(phys); } sde_enc->cur_master = NULL; SDE_DEBUG_ENC(sde_enc, "cleared master\n"); Loading drivers/gpu/drm/msm/sde/sde_encoder_phys.h +2 −1 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2019 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -106,6 +106,7 @@ struct sde_encoder_phys_ops { struct drm_display_mode *adjusted_mode); void (*enable)(struct sde_encoder_phys *encoder); void (*disable)(struct sde_encoder_phys *encoder); void (*post_disable)(struct sde_encoder_phys *encoder); int (*atomic_check)(struct sde_encoder_phys *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); Loading drivers/gpu/drm/msm/sde/sde_encoder_phys_cmd.c +15 −1 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2019 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -572,6 +572,19 @@ static void sde_encoder_phys_cmd_disable(struct sde_encoder_phys *phys_enc) atomic_read(&phys_enc->vblank_refcount)); } static void sde_encoder_phys_cmd_post_disable( struct sde_encoder_phys *phys_enc) { if (!phys_enc || !phys_enc->hw_ctl) { SDE_ERROR("invalid encoder %d\n", phys_enc != NULL); return; } if (!_sde_encoder_phys_is_ppsplit_slave(phys_enc) && phys_enc->hw_ctl->ops.clear_intf_cfg) phys_enc->hw_ctl->ops.clear_intf_cfg(phys_enc->hw_ctl); } static void sde_encoder_phys_cmd_destroy(struct sde_encoder_phys *phys_enc) { struct sde_encoder_phys_cmd *cmd_enc = Loading Loading @@ -648,6 +661,7 @@ static void sde_encoder_phys_cmd_init_ops( ops->mode_fixup = sde_encoder_phys_cmd_mode_fixup; ops->enable = sde_encoder_phys_cmd_enable; ops->disable = sde_encoder_phys_cmd_disable; ops->post_disable = sde_encoder_phys_cmd_post_disable; ops->destroy = sde_encoder_phys_cmd_destroy; ops->get_hw_resources = sde_encoder_phys_cmd_get_hw_resources; ops->control_vblank_irq = sde_encoder_phys_cmd_control_vblank_irq; Loading drivers/gpu/drm/msm/sde/sde_encoder_phys_vid.c +14 −1 Original line number Diff line number Diff line /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -835,6 +835,18 @@ static void sde_encoder_phys_vid_disable(struct sde_encoder_phys *phys_enc) phys_enc->enable_state = SDE_ENC_DISABLED; } static void sde_encoder_phys_vid_post_disable( struct sde_encoder_phys *phys_enc) { if (!phys_enc || !phys_enc->hw_ctl) { SDE_ERROR("invalid encoder %d\n", phys_enc != NULL); return; } if (phys_enc->hw_ctl->ops.clear_intf_cfg) phys_enc->hw_ctl->ops.clear_intf_cfg(phys_enc->hw_ctl); } static void sde_encoder_phys_vid_handle_post_kickoff( struct sde_encoder_phys *phys_enc) { Loading Loading @@ -890,6 +902,7 @@ static void sde_encoder_phys_vid_init_ops(struct sde_encoder_phys_ops *ops) ops->mode_fixup = sde_encoder_phys_vid_mode_fixup; ops->enable = sde_encoder_phys_vid_enable; ops->disable = sde_encoder_phys_vid_disable; ops->post_disable = sde_encoder_phys_vid_post_disable; ops->destroy = sde_encoder_phys_vid_destroy; ops->get_hw_resources = sde_encoder_phys_vid_get_hw_resources; ops->control_vblank_irq = sde_encoder_phys_vid_control_vblank_irq; Loading drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c +18 −1 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2019 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -766,6 +766,22 @@ static void sde_encoder_phys_wb_disable(struct sde_encoder_phys *phys_enc) phys_enc->enable_state = SDE_ENC_DISABLED; } /** * sde_encoder_phys_wb_post_disable - post disable writeback encoder * @phys_enc: Pointer to physical encoder */ static void sde_encoder_phys_wb_post_disable( struct sde_encoder_phys *phys_enc) { if (!phys_enc || !phys_enc->hw_ctl) { SDE_ERROR("invalid encoder %d\n", phys_enc != NULL); return; } if (phys_enc->hw_ctl->ops.clear_intf_cfg) phys_enc->hw_ctl->ops.clear_intf_cfg(phys_enc->hw_ctl); } /** * sde_encoder_phys_wb_get_hw_resources - get hardware resources * @phys_enc: Pointer to physical encoder Loading Loading @@ -903,6 +919,7 @@ static void sde_encoder_phys_wb_init_ops(struct sde_encoder_phys_ops *ops) ops->mode_set = sde_encoder_phys_wb_mode_set; ops->enable = sde_encoder_phys_wb_enable; ops->disable = sde_encoder_phys_wb_disable; ops->post_disable = sde_encoder_phys_wb_post_disable; ops->destroy = sde_encoder_phys_wb_destroy; ops->atomic_check = sde_encoder_phys_wb_atomic_check; ops->get_hw_resources = sde_encoder_phys_wb_get_hw_resources; Loading Loading
drivers/gpu/drm/msm/sde/sde_encoder.c +8 −1 Original line number Diff line number Diff line /* * Copyright (c) 2014-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2014-2019, The Linux Foundation. All rights reserved. * Copyright (C) 2013 Red Hat * Author: Rob Clark <robdclark@gmail.com> * Loading Loading @@ -563,6 +563,13 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc) if (sde_enc->cur_master && sde_enc->cur_master->ops.disable) sde_enc->cur_master->ops.disable(sde_enc->cur_master); for (i = 0; i < sde_enc->num_phys_encs; i++) { struct sde_encoder_phys *phys = sde_enc->phys_encs[i]; if (phys && phys->ops.post_disable) phys->ops.post_disable(phys); } sde_enc->cur_master = NULL; SDE_DEBUG_ENC(sde_enc, "cleared master\n"); Loading
drivers/gpu/drm/msm/sde/sde_encoder_phys.h +2 −1 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2019 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -106,6 +106,7 @@ struct sde_encoder_phys_ops { struct drm_display_mode *adjusted_mode); void (*enable)(struct sde_encoder_phys *encoder); void (*disable)(struct sde_encoder_phys *encoder); void (*post_disable)(struct sde_encoder_phys *encoder); int (*atomic_check)(struct sde_encoder_phys *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); Loading
drivers/gpu/drm/msm/sde/sde_encoder_phys_cmd.c +15 −1 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2019 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -572,6 +572,19 @@ static void sde_encoder_phys_cmd_disable(struct sde_encoder_phys *phys_enc) atomic_read(&phys_enc->vblank_refcount)); } static void sde_encoder_phys_cmd_post_disable( struct sde_encoder_phys *phys_enc) { if (!phys_enc || !phys_enc->hw_ctl) { SDE_ERROR("invalid encoder %d\n", phys_enc != NULL); return; } if (!_sde_encoder_phys_is_ppsplit_slave(phys_enc) && phys_enc->hw_ctl->ops.clear_intf_cfg) phys_enc->hw_ctl->ops.clear_intf_cfg(phys_enc->hw_ctl); } static void sde_encoder_phys_cmd_destroy(struct sde_encoder_phys *phys_enc) { struct sde_encoder_phys_cmd *cmd_enc = Loading Loading @@ -648,6 +661,7 @@ static void sde_encoder_phys_cmd_init_ops( ops->mode_fixup = sde_encoder_phys_cmd_mode_fixup; ops->enable = sde_encoder_phys_cmd_enable; ops->disable = sde_encoder_phys_cmd_disable; ops->post_disable = sde_encoder_phys_cmd_post_disable; ops->destroy = sde_encoder_phys_cmd_destroy; ops->get_hw_resources = sde_encoder_phys_cmd_get_hw_resources; ops->control_vblank_irq = sde_encoder_phys_cmd_control_vblank_irq; Loading
drivers/gpu/drm/msm/sde/sde_encoder_phys_vid.c +14 −1 Original line number Diff line number Diff line /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -835,6 +835,18 @@ static void sde_encoder_phys_vid_disable(struct sde_encoder_phys *phys_enc) phys_enc->enable_state = SDE_ENC_DISABLED; } static void sde_encoder_phys_vid_post_disable( struct sde_encoder_phys *phys_enc) { if (!phys_enc || !phys_enc->hw_ctl) { SDE_ERROR("invalid encoder %d\n", phys_enc != NULL); return; } if (phys_enc->hw_ctl->ops.clear_intf_cfg) phys_enc->hw_ctl->ops.clear_intf_cfg(phys_enc->hw_ctl); } static void sde_encoder_phys_vid_handle_post_kickoff( struct sde_encoder_phys *phys_enc) { Loading Loading @@ -890,6 +902,7 @@ static void sde_encoder_phys_vid_init_ops(struct sde_encoder_phys_ops *ops) ops->mode_fixup = sde_encoder_phys_vid_mode_fixup; ops->enable = sde_encoder_phys_vid_enable; ops->disable = sde_encoder_phys_vid_disable; ops->post_disable = sde_encoder_phys_vid_post_disable; ops->destroy = sde_encoder_phys_vid_destroy; ops->get_hw_resources = sde_encoder_phys_vid_get_hw_resources; ops->control_vblank_irq = sde_encoder_phys_vid_control_vblank_irq; Loading
drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c +18 −1 Original line number Diff line number Diff line /* * Copyright (c) 2015-2016 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2019 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -766,6 +766,22 @@ static void sde_encoder_phys_wb_disable(struct sde_encoder_phys *phys_enc) phys_enc->enable_state = SDE_ENC_DISABLED; } /** * sde_encoder_phys_wb_post_disable - post disable writeback encoder * @phys_enc: Pointer to physical encoder */ static void sde_encoder_phys_wb_post_disable( struct sde_encoder_phys *phys_enc) { if (!phys_enc || !phys_enc->hw_ctl) { SDE_ERROR("invalid encoder %d\n", phys_enc != NULL); return; } if (phys_enc->hw_ctl->ops.clear_intf_cfg) phys_enc->hw_ctl->ops.clear_intf_cfg(phys_enc->hw_ctl); } /** * sde_encoder_phys_wb_get_hw_resources - get hardware resources * @phys_enc: Pointer to physical encoder Loading Loading @@ -903,6 +919,7 @@ static void sde_encoder_phys_wb_init_ops(struct sde_encoder_phys_ops *ops) ops->mode_set = sde_encoder_phys_wb_mode_set; ops->enable = sde_encoder_phys_wb_enable; ops->disable = sde_encoder_phys_wb_disable; ops->post_disable = sde_encoder_phys_wb_post_disable; ops->destroy = sde_encoder_phys_wb_destroy; ops->atomic_check = sde_encoder_phys_wb_atomic_check; ops->get_hw_resources = sde_encoder_phys_wb_get_hw_resources; Loading