On Tue, Aug 28, 2018 at 05:40:03PM -0700, Jeykumar Sankaran wrote:
> Support for CDM block is not present in DPU. Remove CDM
> handlers from resource manager.

I think there's some leftovers that can be cleaned up...

$ ack -i cdm
disp/dpu1/dpu_hw_mdss.h
103:    DPU_HW_BLK_CDM,
192:enum dpu_cdm {
193:    CDM_0 = 1,
194:    CDM_1,
195:    CDM_MAX
454:#define DPU_DBG_MASK_CDM      (1 << 1)

disp/dpu1/dpu_hw_catalog.h
533: * struct dpu_cdm_cfg - information of chroma down blocks
537: * @intf_connect       Bitmask of INTF IDs this CDM can connect to
539:struct dpu_cdm_cfg   {
737:    u32 cdm_count;
738:    struct dpu_cdm_cfg *cdm;
776:#define BLK_CDM(s) ((s)->cdm)

disp/dpu1/dpu_hw_catalog.c
324: * CDM sub blocks config
326:static struct dpu_cdm_cfg sdm845_cdm[] = {
328:    .name = "cdm_0", .id = CDM_0,
461:            .cdm_count = ARRAY_SIZE(sdm845_cdm),
462:            .cdm = sdm845_cdm,



> 
> Signed-off-by: Jeykumar Sankaran <jsa...@codeaurora.org>
> ---
>  drivers/gpu/drm/msm/Makefile                     |   1 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h      |   2 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h |   5 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c       | 323 
> -----------------------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h       | 139 ----------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c       |  14 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h       |   4 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c       |  18 --
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h       |  17 --
>  drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c           |  68 +----
>  drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h        |   4 -
>  11 files changed, 2 insertions(+), 593 deletions(-)
>  delete mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c
>  delete mode 100644 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h
> 
> diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
> index 261fa79..19ab521 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -58,7 +58,6 @@ msm-y := \
>       disp/dpu1/dpu_formats.o \
>       disp/dpu1/dpu_hw_blk.o \
>       disp/dpu1/dpu_hw_catalog.o \
> -     disp/dpu1/dpu_hw_cdm.o \
>       disp/dpu1/dpu_hw_ctl.o \
>       disp/dpu1/dpu_hw_interrupts.o \
>       disp/dpu1/dpu_hw_intf.o \
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
> index e453271..e844afa 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
> @@ -32,11 +32,9 @@
>  /**
>   * Encoder functions and data types
>   * @intfs:   Interfaces this encoder is using, INTF_MODE_NONE if unused
> - * @needs_cdm:       Encoder requests a CDM based on pixel format conversion 
> needs
>   */
>  struct dpu_encoder_hw_resources {
>       enum dpu_intf_mode intfs[INTF_MAX];
> -     bool needs_cdm;
>  };
>  
>  /**
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h
> index b5fc65c..f796683 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h
> @@ -22,7 +22,6 @@
>  #include "dpu_hw_pingpong.h"
>  #include "dpu_hw_ctl.h"
>  #include "dpu_hw_top.h"
> -#include "dpu_hw_cdm.h"
>  #include "dpu_encoder.h"
>  #include "dpu_crtc.h"
>  
> @@ -205,8 +204,6 @@ struct dpu_encoder_irq {
>   * @parent_ops:              Callbacks exposed by the parent to the phys_enc
>   * @hw_mdptop:               Hardware interface to the top registers
>   * @hw_ctl:          Hardware interface to the ctl registers
> - * @hw_cdm:          Hardware interface to the cdm registers
> - * @cdm_cfg:         Chroma-down hardware configuration
>   * @hw_pp:           Hardware interface to the ping pong registers
>   * @dpu_kms:         Pointer to the dpu_kms top level
>   * @cached_mode:     DRM mode cached at mode_set time, acted on in enable
> @@ -235,8 +232,6 @@ struct dpu_encoder_phys {
>       const struct dpu_encoder_virt_ops *parent_ops;
>       struct dpu_hw_mdp *hw_mdptop;
>       struct dpu_hw_ctl *hw_ctl;
> -     struct dpu_hw_cdm *hw_cdm;
> -     struct dpu_hw_cdm_cfg cdm_cfg;
>       struct dpu_hw_pingpong *hw_pp;
>       struct dpu_kms *dpu_kms;
>       struct drm_display_mode cached_mode;
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c
> deleted file mode 100644
> index 554874b..0000000
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.c
> +++ /dev/null
> @@ -1,323 +0,0 @@
> -/* Copyright (c) 2015-2018, 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
> - * only version 2 as published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - */
> -
> -#include "dpu_hw_mdss.h"
> -#include "dpu_hwio.h"
> -#include "dpu_hw_catalog.h"
> -#include "dpu_hw_cdm.h"
> -#include "dpu_dbg.h"
> -#include "dpu_kms.h"
> -
> -#define CDM_CSC_10_OPMODE                  0x000
> -#define CDM_CSC_10_BASE                    0x004
> -
> -#define CDM_CDWN2_OP_MODE                  0x100
> -#define CDM_CDWN2_CLAMP_OUT                0x104
> -#define CDM_CDWN2_PARAMS_3D_0              0x108
> -#define CDM_CDWN2_PARAMS_3D_1              0x10C
> -#define CDM_CDWN2_COEFF_COSITE_H_0         0x110
> -#define CDM_CDWN2_COEFF_COSITE_H_1         0x114
> -#define CDM_CDWN2_COEFF_COSITE_H_2         0x118
> -#define CDM_CDWN2_COEFF_OFFSITE_H_0        0x11C
> -#define CDM_CDWN2_COEFF_OFFSITE_H_1        0x120
> -#define CDM_CDWN2_COEFF_OFFSITE_H_2        0x124
> -#define CDM_CDWN2_COEFF_COSITE_V           0x128
> -#define CDM_CDWN2_COEFF_OFFSITE_V          0x12C
> -#define CDM_CDWN2_OUT_SIZE                 0x130
> -
> -#define CDM_HDMI_PACK_OP_MODE              0x200
> -#define CDM_CSC_10_MATRIX_COEFF_0          0x004
> -
> -/**
> - * Horizontal coefficients for cosite chroma downscale
> - * s13 representation of coefficients
> - */
> -static u32 cosite_h_coeff[] = {0x00000016, 0x000001cc, 0x0100009e};
> -
> -/**
> - * Horizontal coefficients for offsite chroma downscale
> - */
> -static u32 offsite_h_coeff[] = {0x000b0005, 0x01db01eb, 0x00e40046};
> -
> -/**
> - * Vertical coefficients for cosite chroma downscale
> - */
> -static u32 cosite_v_coeff[] = {0x00080004};
> -/**
> - * Vertical coefficients for offsite chroma downscale
> - */
> -static u32 offsite_v_coeff[] = {0x00060002};
> -
> -/* Limited Range rgb2yuv coeff with clamp and bias values for CSC 10 module 
> */
> -static struct dpu_csc_cfg rgb2yuv_cfg = {
> -     {
> -             0x0083, 0x0102, 0x0032,
> -             0x1fb5, 0x1f6c, 0x00e1,
> -             0x00e1, 0x1f45, 0x1fdc
> -     },
> -     { 0x00, 0x00, 0x00 },
> -     { 0x0040, 0x0200, 0x0200 },
> -     { 0x000, 0x3ff, 0x000, 0x3ff, 0x000, 0x3ff },
> -     { 0x040, 0x3ac, 0x040, 0x3c0, 0x040, 0x3c0 },
> -};
> -
> -static struct dpu_cdm_cfg *_cdm_offset(enum dpu_cdm cdm,
> -             struct dpu_mdss_cfg *m,
> -             void __iomem *addr,
> -             struct dpu_hw_blk_reg_map *b)
> -{
> -     int i;
> -
> -     for (i = 0; i < m->cdm_count; i++) {
> -             if (cdm == m->cdm[i].id) {
> -                     b->base_off = addr;
> -                     b->blk_off = m->cdm[i].base;
> -                     b->length = m->cdm[i].len;
> -                     b->hwversion = m->hwversion;
> -                     b->log_mask = DPU_DBG_MASK_CDM;
> -                     return &m->cdm[i];
> -             }
> -     }
> -
> -     return ERR_PTR(-EINVAL);
> -}
> -
> -static int dpu_hw_cdm_setup_csc_10bit(struct dpu_hw_cdm *ctx,
> -             struct dpu_csc_cfg *data)
> -{
> -     dpu_hw_csc_setup(&ctx->hw, CDM_CSC_10_MATRIX_COEFF_0, data, true);
> -
> -     return 0;
> -}
> -
> -static int dpu_hw_cdm_setup_cdwn(struct dpu_hw_cdm *ctx,
> -             struct dpu_hw_cdm_cfg *cfg)
> -{
> -     struct dpu_hw_blk_reg_map *c = &ctx->hw;
> -     u32 opmode = 0;
> -     u32 out_size = 0;
> -
> -     if (cfg->output_bit_depth == CDM_CDWN_OUTPUT_10BIT)
> -             opmode &= ~BIT(7);
> -     else
> -             opmode |= BIT(7);
> -
> -     /* ENABLE DWNS_H bit */
> -     opmode |= BIT(1);
> -
> -     switch (cfg->h_cdwn_type) {
> -     case CDM_CDWN_DISABLE:
> -             /* CLEAR METHOD_H field */
> -             opmode &= ~(0x18);
> -             /* CLEAR DWNS_H bit */
> -             opmode &= ~BIT(1);
> -             break;
> -     case CDM_CDWN_PIXEL_DROP:
> -             /* Clear METHOD_H field (pixel drop is 0) */
> -             opmode &= ~(0x18);
> -             break;
> -     case CDM_CDWN_AVG:
> -             /* Clear METHOD_H field (Average is 0x1) */
> -             opmode &= ~(0x18);
> -             opmode |= (0x1 << 0x3);
> -             break;
> -     case CDM_CDWN_COSITE:
> -             /* Clear METHOD_H field (Average is 0x2) */
> -             opmode &= ~(0x18);
> -             opmode |= (0x2 << 0x3);
> -             /* Co-site horizontal coefficients */
> -             DPU_REG_WRITE(c, CDM_CDWN2_COEFF_COSITE_H_0,
> -                             cosite_h_coeff[0]);
> -             DPU_REG_WRITE(c, CDM_CDWN2_COEFF_COSITE_H_1,
> -                             cosite_h_coeff[1]);
> -             DPU_REG_WRITE(c, CDM_CDWN2_COEFF_COSITE_H_2,
> -                             cosite_h_coeff[2]);
> -             break;
> -     case CDM_CDWN_OFFSITE:
> -             /* Clear METHOD_H field (Average is 0x3) */
> -             opmode &= ~(0x18);
> -             opmode |= (0x3 << 0x3);
> -
> -             /* Off-site horizontal coefficients */
> -             DPU_REG_WRITE(c, CDM_CDWN2_COEFF_OFFSITE_H_0,
> -                             offsite_h_coeff[0]);
> -             DPU_REG_WRITE(c, CDM_CDWN2_COEFF_OFFSITE_H_1,
> -                             offsite_h_coeff[1]);
> -             DPU_REG_WRITE(c, CDM_CDWN2_COEFF_OFFSITE_H_2,
> -                             offsite_h_coeff[2]);
> -             break;
> -     default:
> -             pr_err("%s invalid horz down sampling type\n", __func__);
> -             return -EINVAL;
> -     }
> -
> -     /* ENABLE DWNS_V bit */
> -     opmode |= BIT(2);
> -
> -     switch (cfg->v_cdwn_type) {
> -     case CDM_CDWN_DISABLE:
> -             /* CLEAR METHOD_V field */
> -             opmode &= ~(0x60);
> -             /* CLEAR DWNS_V bit */
> -             opmode &= ~BIT(2);
> -             break;
> -     case CDM_CDWN_PIXEL_DROP:
> -             /* Clear METHOD_V field (pixel drop is 0) */
> -             opmode &= ~(0x60);
> -             break;
> -     case CDM_CDWN_AVG:
> -             /* Clear METHOD_V field (Average is 0x1) */
> -             opmode &= ~(0x60);
> -             opmode |= (0x1 << 0x5);
> -             break;
> -     case CDM_CDWN_COSITE:
> -             /* Clear METHOD_V field (Average is 0x2) */
> -             opmode &= ~(0x60);
> -             opmode |= (0x2 << 0x5);
> -             /* Co-site vertical coefficients */
> -             DPU_REG_WRITE(c,
> -                             CDM_CDWN2_COEFF_COSITE_V,
> -                             cosite_v_coeff[0]);
> -             break;
> -     case CDM_CDWN_OFFSITE:
> -             /* Clear METHOD_V field (Average is 0x3) */
> -             opmode &= ~(0x60);
> -             opmode |= (0x3 << 0x5);
> -
> -             /* Off-site vertical coefficients */
> -             DPU_REG_WRITE(c,
> -                             CDM_CDWN2_COEFF_OFFSITE_V,
> -                             offsite_v_coeff[0]);
> -             break;
> -     default:
> -             return -EINVAL;
> -     }
> -
> -     if (cfg->v_cdwn_type || cfg->h_cdwn_type)
> -             opmode |= BIT(0); /* EN CDWN module */
> -     else
> -             opmode &= ~BIT(0);
> -
> -     out_size = (cfg->output_width & 0xFFFF) |
> -             ((cfg->output_height & 0xFFFF) << 16);
> -     DPU_REG_WRITE(c, CDM_CDWN2_OUT_SIZE, out_size);
> -     DPU_REG_WRITE(c, CDM_CDWN2_OP_MODE, opmode);
> -     DPU_REG_WRITE(c, CDM_CDWN2_CLAMP_OUT,
> -                     ((0x3FF << 16) | 0x0));
> -
> -     return 0;
> -}
> -
> -static int dpu_hw_cdm_enable(struct dpu_hw_cdm *ctx,
> -             struct dpu_hw_cdm_cfg *cdm)
> -{
> -     struct dpu_hw_blk_reg_map *c = &ctx->hw;
> -     const struct dpu_format *fmt = cdm->output_fmt;
> -     struct cdm_output_cfg cdm_cfg = { 0 };
> -     u32 opmode = 0;
> -     u32 csc = 0;
> -
> -     if (!DPU_FORMAT_IS_YUV(fmt))
> -             return -EINVAL;
> -
> -     if (cdm->output_type == CDM_CDWN_OUTPUT_HDMI) {
> -             if (fmt->chroma_sample != DPU_CHROMA_H1V2)
> -                     return -EINVAL; /*unsupported format */
> -             opmode = BIT(0);
> -             opmode |= (fmt->chroma_sample << 1);
> -             cdm_cfg.intf_en = true;
> -     }
> -
> -     csc |= BIT(2);
> -     csc &= ~BIT(1);
> -     csc |= BIT(0);
> -
> -     if (ctx->hw_mdp && ctx->hw_mdp->ops.setup_cdm_output)
> -             ctx->hw_mdp->ops.setup_cdm_output(ctx->hw_mdp, &cdm_cfg);
> -
> -     DPU_REG_WRITE(c, CDM_CSC_10_OPMODE, csc);
> -     DPU_REG_WRITE(c, CDM_HDMI_PACK_OP_MODE, opmode);
> -     return 0;
> -}
> -
> -static void dpu_hw_cdm_disable(struct dpu_hw_cdm *ctx)
> -{
> -     struct cdm_output_cfg cdm_cfg = { 0 };
> -
> -     if (ctx->hw_mdp && ctx->hw_mdp->ops.setup_cdm_output)
> -             ctx->hw_mdp->ops.setup_cdm_output(ctx->hw_mdp, &cdm_cfg);
> -}
> -
> -static void _setup_cdm_ops(struct dpu_hw_cdm_ops *ops,
> -     unsigned long features)
> -{
> -     ops->setup_csc_data = dpu_hw_cdm_setup_csc_10bit;
> -     ops->setup_cdwn = dpu_hw_cdm_setup_cdwn;
> -     ops->enable = dpu_hw_cdm_enable;
> -     ops->disable = dpu_hw_cdm_disable;
> -}
> -
> -static struct dpu_hw_blk_ops dpu_hw_ops = {
> -     .start = NULL,
> -     .stop = NULL,
> -};
> -
> -struct dpu_hw_cdm *dpu_hw_cdm_init(enum dpu_cdm idx,
> -             void __iomem *addr,
> -             struct dpu_mdss_cfg *m,
> -             struct dpu_hw_mdp *hw_mdp)
> -{
> -     struct dpu_hw_cdm *c;
> -     struct dpu_cdm_cfg *cfg;
> -     int rc;
> -
> -     c = kzalloc(sizeof(*c), GFP_KERNEL);
> -     if (!c)
> -             return ERR_PTR(-ENOMEM);
> -
> -     cfg = _cdm_offset(idx, m, addr, &c->hw);
> -     if (IS_ERR_OR_NULL(cfg)) {
> -             kfree(c);
> -             return ERR_PTR(-EINVAL);
> -     }
> -
> -     c->idx = idx;
> -     c->caps = cfg;
> -     _setup_cdm_ops(&c->ops, c->caps->features);
> -     c->hw_mdp = hw_mdp;
> -
> -     rc = dpu_hw_blk_init(&c->base, DPU_HW_BLK_CDM, idx, &dpu_hw_ops);
> -     if (rc) {
> -             DPU_ERROR("failed to init hw blk %d\n", rc);
> -             goto blk_init_error;
> -     }
> -
> -     /*
> -      * Perform any default initialization for the chroma down module
> -      * @setup default csc coefficients
> -      */
> -     dpu_hw_cdm_setup_csc_10bit(c, &rgb2yuv_cfg);
> -
> -     return c;
> -
> -blk_init_error:
> -     kzfree(c);
> -
> -     return ERR_PTR(rc);
> -}
> -
> -void dpu_hw_cdm_destroy(struct dpu_hw_cdm *cdm)
> -{
> -     if (cdm)
> -             dpu_hw_blk_destroy(&cdm->base);
> -     kfree(cdm);
> -}
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h
> deleted file mode 100644
> index 5cceb1e..0000000
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h
> +++ /dev/null
> @@ -1,139 +0,0 @@
> -/* Copyright (c) 2015-2018, 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
> - * only version 2 as published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - */
> -
> -#ifndef _DPU_HW_CDM_H
> -#define _DPU_HW_CDM_H
> -
> -#include "dpu_hw_mdss.h"
> -#include "dpu_hw_top.h"
> -#include "dpu_hw_blk.h"
> -
> -struct dpu_hw_cdm;
> -
> -struct dpu_hw_cdm_cfg {
> -     u32 output_width;
> -     u32 output_height;
> -     u32 output_bit_depth;
> -     u32 h_cdwn_type;
> -     u32 v_cdwn_type;
> -     const struct dpu_format *output_fmt;
> -     u32 output_type;
> -     int flags;
> -};
> -
> -enum dpu_hw_cdwn_type {
> -     CDM_CDWN_DISABLE,
> -     CDM_CDWN_PIXEL_DROP,
> -     CDM_CDWN_AVG,
> -     CDM_CDWN_COSITE,
> -     CDM_CDWN_OFFSITE,
> -};
> -
> -enum dpu_hw_cdwn_output_type {
> -     CDM_CDWN_OUTPUT_HDMI,
> -     CDM_CDWN_OUTPUT_WB,
> -};
> -
> -enum dpu_hw_cdwn_output_bit_depth {
> -     CDM_CDWN_OUTPUT_8BIT,
> -     CDM_CDWN_OUTPUT_10BIT,
> -};
> -
> -/**
> - * struct dpu_hw_cdm_ops : Interface to the chroma down Hw driver functions
> - *                         Assumption is these functions will be called after
> - *                         clocks are enabled
> - *  @setup_csc:            Programs the csc matrix
> - *  @setup_cdwn:           Sets up the chroma down sub module
> - *  @enable:               Enables the output to interface and programs the
> - *                         output packer
> - *  @disable:              Puts the cdm in bypass mode
> - */
> -struct dpu_hw_cdm_ops {
> -     /**
> -      * Programs the CSC matrix for conversion from RGB space to YUV space,
> -      * it is optional to call this function as this matrix is automatically
> -      * set during initialization, user should call this if it wants
> -      * to program a different matrix than default matrix.
> -      * @cdm:          Pointer to the chroma down context structure
> -      * @data          Pointer to CSC configuration data
> -      * return:        0 if success; error code otherwise
> -      */
> -     int (*setup_csc_data)(struct dpu_hw_cdm *cdm,
> -                     struct dpu_csc_cfg *data);
> -
> -     /**
> -      * Programs the Chroma downsample part.
> -      * @cdm         Pointer to chroma down context
> -      */
> -     int (*setup_cdwn)(struct dpu_hw_cdm *cdm,
> -     struct dpu_hw_cdm_cfg *cfg);
> -
> -     /**
> -      * Enable the CDM module
> -      * @cdm         Pointer to chroma down context
> -      */
> -     int (*enable)(struct dpu_hw_cdm *cdm,
> -     struct dpu_hw_cdm_cfg *cfg);
> -
> -     /**
> -      * Disable the CDM module
> -      * @cdm         Pointer to chroma down context
> -      */
> -     void (*disable)(struct dpu_hw_cdm *cdm);
> -};
> -
> -struct dpu_hw_cdm {
> -     struct dpu_hw_blk base;
> -     struct dpu_hw_blk_reg_map hw;
> -
> -     /* chroma down */
> -     const struct dpu_cdm_cfg *caps;
> -     enum  dpu_cdm  idx;
> -
> -     /* mdp top hw driver */
> -     struct dpu_hw_mdp *hw_mdp;
> -
> -     /* ops */
> -     struct dpu_hw_cdm_ops ops;
> -};
> -
> -/**
> - * dpu_hw_cdm - convert base object dpu_hw_base to container
> - * @hw: Pointer to base hardware block
> - * return: Pointer to hardware block container
> - */
> -static inline struct dpu_hw_cdm *to_dpu_hw_cdm(struct dpu_hw_blk *hw)
> -{
> -     return container_of(hw, struct dpu_hw_cdm, base);
> -}
> -
> -/**
> - * dpu_hw_cdm_init - initializes the cdm hw driver object.
> - * should be called once before accessing every cdm.
> - * @idx:  cdm index for which driver object is required
> - * @addr: mapped register io address of MDP
> - * @m :   pointer to mdss catalog data
> - * @hw_mdp:  pointer to mdp top hw driver object
> - */
> -struct dpu_hw_cdm *dpu_hw_cdm_init(enum dpu_cdm idx,
> -             void __iomem *addr,
> -             struct dpu_mdss_cfg *m,
> -             struct dpu_hw_mdp *hw_mdp);
> -
> -/**
> - * dpu_hw_cdm_destroy - destroys CDM driver context
> - * @cdm:   pointer to CDM driver context
> - */
> -void dpu_hw_cdm_destroy(struct dpu_hw_cdm *cdm);
> -
> -#endif /*_DPU_HW_CDM_H */
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
> index 06be7cf..b394a18 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
> @@ -224,19 +224,6 @@ static inline int dpu_hw_ctl_get_bitmask_intf(struct 
> dpu_hw_ctl *ctx,
>       return 0;
>  }
>  
> -static inline int dpu_hw_ctl_get_bitmask_cdm(struct dpu_hw_ctl *ctx,
> -             u32 *flushbits, enum dpu_cdm cdm)
> -{
> -     switch (cdm) {
> -     case CDM_0:
> -             *flushbits |= BIT(26);
> -             break;
> -     default:
> -             return -EINVAL;
> -     }
> -     return 0;
> -}
> -
>  static u32 dpu_hw_ctl_poll_reset_status(struct dpu_hw_ctl *ctx, u32 
> timeout_us)
>  {
>       struct dpu_hw_blk_reg_map *c = &ctx->hw;
> @@ -485,7 +472,6 @@ static void _setup_ctl_ops(struct dpu_hw_ctl_ops *ops,
>       ops->get_bitmask_sspp = dpu_hw_ctl_get_bitmask_sspp;
>       ops->get_bitmask_mixer = dpu_hw_ctl_get_bitmask_mixer;
>       ops->get_bitmask_intf = dpu_hw_ctl_get_bitmask_intf;
> -     ops->get_bitmask_cdm = dpu_hw_ctl_get_bitmask_cdm;
>  };
>  
>  static struct dpu_hw_blk_ops dpu_hw_ops = {
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
> index c66a71f..6f313fa 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
> @@ -142,10 +142,6 @@ struct dpu_hw_ctl_ops {
>               u32 *flushbits,
>               enum dpu_intf blk);
>  
> -     int (*get_bitmask_cdm)(struct dpu_hw_ctl *ctx,
> -             u32 *flushbits,
> -             enum dpu_cdm blk);
> -
>       /**
>        * Set all blend stages to disabled
>        * @ctx       : ctl path ctx pointer
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
> index db2798e..b878125 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c
> @@ -98,23 +98,6 @@ static void dpu_hw_setup_split_pipe(struct dpu_hw_mdp *mdp,
>       DPU_REG_WRITE(c, SPLIT_DISPLAY_EN, cfg->en & 0x1);
>  }
>  
> -static void dpu_hw_setup_cdm_output(struct dpu_hw_mdp *mdp,
> -             struct cdm_output_cfg *cfg)
> -{
> -     struct dpu_hw_blk_reg_map *c;
> -     u32 out_ctl = 0;
> -
> -     if (!mdp || !cfg)
> -             return;
> -
> -     c = &mdp->hw;
> -
> -     if (cfg->intf_en)
> -             out_ctl |= BIT(19);
> -
> -     DPU_REG_WRITE(c, MDP_OUT_CTL_0, out_ctl);
> -}
> -
>  static bool dpu_hw_setup_clk_force_ctrl(struct dpu_hw_mdp *mdp,
>               enum dpu_clk_ctrl_type clk_ctrl, bool enable)
>  {
> @@ -307,7 +290,6 @@ static void _setup_mdp_ops(struct dpu_hw_mdp_ops *ops,
>               unsigned long cap)
>  {
>       ops->setup_split_pipe = dpu_hw_setup_split_pipe;
> -     ops->setup_cdm_output = dpu_hw_setup_cdm_output;
>       ops->setup_clk_force_ctrl = dpu_hw_setup_clk_force_ctrl;
>       ops->get_danger_status = dpu_hw_get_danger_status;
>       ops->setup_vsync_source = dpu_hw_setup_vsync_source;
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
> index 899925a..192e338 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h
> @@ -52,14 +52,6 @@ struct split_pipe_cfg {
>  };
>  
>  /**
> - * struct cdm_output_cfg: output configuration for cdm
> - * @intf_en   : enable/disable interface output
> - */
> -struct cdm_output_cfg {
> -     bool intf_en;
> -};
> -
> -/**
>   * struct dpu_danger_safe_status: danger and safe status signals
>   * @mdp: top level status
>   * @sspp: source pipe status
> @@ -89,7 +81,6 @@ struct dpu_vsync_source_cfg {
>   * Assumption is these functions will be called after clocks are enabled.
>   * @setup_split_pipe : Programs the pipe control registers
>   * @setup_pp_split : Programs the pp split control registers
> - * @setup_cdm_output : programs cdm control
>   * @setup_traffic_shaper : programs traffic shaper control
>   */
>  struct dpu_hw_mdp_ops {
> @@ -102,14 +93,6 @@ struct dpu_hw_mdp_ops {
>                       struct split_pipe_cfg *p);
>  
>       /**
> -      * setup_cdm_output() : Setup selection control of the cdm data path
> -      * @mdp  : mdp top context driver
> -      * @cfg  : cdm output configuration
> -      */
> -     void (*setup_cdm_output)(struct dpu_hw_mdp *mdp,
> -                     struct cdm_output_cfg *cfg);
> -
> -     /**
>        * setup_traffic_shaper() : Setup traffic shaper control
>        * @mdp  : mdp top context driver
>        * @cfg  : traffic shaper configuration
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
> index 388ae65..e08b3bd 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
> @@ -16,7 +16,6 @@
>  #include "dpu_kms.h"
>  #include "dpu_hw_lm.h"
>  #include "dpu_hw_ctl.h"
> -#include "dpu_hw_cdm.h"
>  #include "dpu_hw_pingpong.h"
>  #include "dpu_hw_intf.h"
>  #include "dpu_encoder.h"
> @@ -214,9 +213,6 @@ static void _dpu_rm_hw_destroy(enum dpu_hw_blk_type type, 
> void *hw)
>       case DPU_HW_BLK_CTL:
>               dpu_hw_ctl_destroy(hw);
>               break;
> -     case DPU_HW_BLK_CDM:
> -             dpu_hw_cdm_destroy(hw);
> -             break;
>       case DPU_HW_BLK_PINGPONG:
>               dpu_hw_pingpong_destroy(hw);
>               break;
> @@ -290,9 +286,6 @@ static int _dpu_rm_hw_blk_create(
>       case DPU_HW_BLK_CTL:
>               hw = dpu_hw_ctl_init(id, mmio, cat);
>               break;
> -     case DPU_HW_BLK_CDM:
> -             hw = dpu_hw_cdm_init(id, mmio, cat, hw_mdp);
> -             break;
>       case DPU_HW_BLK_PINGPONG:
>               hw = dpu_hw_pingpong_init(id, mmio, cat);
>               break;
> @@ -423,15 +416,6 @@ int dpu_rm_init(struct dpu_rm *rm,
>               }
>       }
>  
> -     for (i = 0; i < cat->cdm_count; i++) {
> -             rc = _dpu_rm_hw_blk_create(rm, cat, mmio, DPU_HW_BLK_CDM,
> -                             cat->cdm[i].id, &cat->cdm[i]);
> -             if (rc) {
> -                     DPU_ERROR("failed: cdm hw not available\n");
> -                     goto fail;
> -             }
> -     }
> -
>       return 0;
>  
>  fail:
> @@ -628,55 +612,11 @@ static int _dpu_rm_reserve_ctls(
>       return 0;
>  }
>  
> -static int _dpu_rm_reserve_cdm(
> -             struct dpu_rm *rm,
> -             struct dpu_rm_rsvp *rsvp,
> -             uint32_t id,
> -             enum dpu_hw_blk_type type)
> -{
> -     struct dpu_rm_hw_iter iter;
> -
> -     DRM_DEBUG_KMS("type %d id %d\n", type, id);
> -
> -     dpu_rm_init_hw_iter(&iter, 0, DPU_HW_BLK_CDM);
> -     while (_dpu_rm_get_hw_locked(rm, &iter)) {
> -             const struct dpu_hw_cdm *cdm = to_dpu_hw_cdm(iter.blk->hw);
> -             const struct dpu_cdm_cfg *caps = cdm->caps;
> -             bool match = false;
> -
> -             if (RESERVED_BY_OTHER(iter.blk, rsvp))
> -                     continue;
> -
> -             if (type == DPU_HW_BLK_INTF && id != INTF_MAX)
> -                     match = test_bit(id, &caps->intf_connect);
> -
> -             DRM_DEBUG_KMS("iter: type:%d id:%d enc:%d cdm:%lu match:%d\n",
> -                           iter.blk->type, iter.blk->id, rsvp->enc_id,
> -                           caps->intf_connect, match);
> -
> -             if (!match)
> -                     continue;
> -
> -             trace_dpu_rm_reserve_cdm(iter.blk->id, iter.blk->type,
> -                                      rsvp->enc_id);
> -             iter.blk->rsvp_nxt = rsvp;
> -             break;
> -     }
> -
> -     if (!iter.hw) {
> -             DPU_ERROR("couldn't reserve cdm for type %d id %d\n", type, id);
> -             return -ENAVAIL;
> -     }
> -
> -     return 0;
> -}
> -
>  static int _dpu_rm_reserve_intf(
>               struct dpu_rm *rm,
>               struct dpu_rm_rsvp *rsvp,
>               uint32_t id,
> -             enum dpu_hw_blk_type type,
> -             bool needs_cdm)
> +             enum dpu_hw_blk_type type)
>  {
>       struct dpu_rm_hw_iter iter;
>       int ret = 0;
> @@ -704,9 +644,6 @@ static int _dpu_rm_reserve_intf(
>               return -EINVAL;
>       }
>  
> -     if (needs_cdm)
> -             ret = _dpu_rm_reserve_cdm(rm, rsvp, id, type);
> -
>       return ret;
>  }
>  
> @@ -723,7 +660,7 @@ static int _dpu_rm_reserve_intf_related_hw(
>                       continue;
>               id = i + INTF_0;
>               ret = _dpu_rm_reserve_intf(rm, rsvp, id,
> -                             DPU_HW_BLK_INTF, hw_res->needs_cdm);
> +                             DPU_HW_BLK_INTF);
>               if (ret)
>                       return ret;
>       }
> @@ -769,7 +706,6 @@ static int _dpu_rm_make_next_rsvp(
>               return ret;
>       }
>  
> -     /* Assign INTFs and blks whose usage is tied to them: CTL & CDM */
>       ret = _dpu_rm_reserve_intf_related_hw(rm, rsvp, &reqs->hw_res);
>       if (ret)
>               return ret;
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
> index ae0ca50..0be51db 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
> @@ -868,10 +868,6 @@
>       TP_printk("id:%d type:%d enc_id:%u", __entry->id, __entry->type,
>                 __entry->enc_id)
>  );
> -DEFINE_EVENT(dpu_rm_iter_template, dpu_rm_reserve_cdm,
> -     TP_PROTO(uint32_t id, enum dpu_hw_blk_type type, uint32_t enc_id),
> -     TP_ARGS(id, type, enc_id)
> -);
>  DEFINE_EVENT(dpu_rm_iter_template, dpu_rm_reserve_intf,
>       TP_PROTO(uint32_t id, enum dpu_hw_blk_type type, uint32_t enc_id),
>       TP_ARGS(id, type, enc_id)
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to