diff options
| author | Lloyd Atkinson <latkinso@codeaurora.org> | 2016-07-06 10:47:29 -0400 |
|---|---|---|
| committer | Lloyd Atkinson <latkinso@codeaurora.org> | 2016-08-12 18:13:40 -0400 |
| commit | 4fb2e1b5cc283a482fc3f26cf76ec176ef159ef2 (patch) | |
| tree | ff8859838961adcb32b6a043c62f2ce27d1d4371 /drivers | |
| parent | 3ebc1398a935371e24bf528d652bca4b32aa3057 (diff) | |
drm/msm/sde: list hardwired mixer connections
Express hardwired connections in the hardware catalog between
layer mixers, dspps, and pingpong blocks. Also list out which
mixer pairings are valid.
Change-Id: I06b9c57d79b678df1372293247f2be7ab34950ca
Signed-off-by: Lloyd Atkinson <latkinso@codeaurora.org>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_hw_catalog.h | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_hw_catalog_8996.c | 48 |
2 files changed, 40 insertions, 18 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_hw_catalog.h b/drivers/gpu/drm/msm/sde/sde_hw_catalog.h index e340ca2d56e9..0b1b9d5f8b5e 100644 --- a/drivers/gpu/drm/msm/sde/sde_hw_catalog.h +++ b/drivers/gpu/drm/msm/sde/sde_hw_catalog.h @@ -329,7 +329,7 @@ struct sde_ctl_cfg { * @id: index identifying this block * @base register offset of this block * @features bit mask identifying sub-blocks/features - * @sblk: Sub-blocks of SSPP + * @sblk: SSPP sub-blocks information */ struct sde_sspp_cfg { SDE_HW_BLK_INFO; @@ -341,11 +341,17 @@ struct sde_sspp_cfg { * @id: index identifying this block * @base register offset of this block * @features bit mask identifying sub-blocks/features - * @sblk: Sub-blocks of SSPP + * @sblk: LM Sub-blocks information + * @dspp: ID of connected DSPP, DSPP_MAX if unsupported + * @pingpong: ID of connected PingPong, PINGPONG_MAX if unsupported + * @lm_pair_mask: Bitmask of LMs that can be controlled by same CTL */ struct sde_lm_cfg { SDE_HW_BLK_INFO; const struct sde_lm_sub_blks *sblk; + u32 dspp; + u32 pingpong; + u32 lm_pair_mask; }; /** diff --git a/drivers/gpu/drm/msm/sde/sde_hw_catalog_8996.c b/drivers/gpu/drm/msm/sde/sde_hw_catalog_8996.c index f071437fb176..64d57463a122 100644 --- a/drivers/gpu/drm/msm/sde/sde_hw_catalog_8996.c +++ b/drivers/gpu/drm/msm/sde/sde_hw_catalog_8996.c @@ -315,9 +315,9 @@ static inline int set_cfg_1xx_init(struct sde_mdss_cfg *cfg) }; /* DSPP capability */ - static const struct sde_dspp_sub_blks pp = { - .igc = {.id = SDE_DSPP_GC, .base = 0x17c0, .len = 0x0, - .version = 0x1}, + static const struct sde_dspp_sub_blks dspp = { + .igc = {.id = SDE_DSPP_GC, .base = 0x17c0, .len = 0x0, + .version = 0x1}, .pcc = {.id = SDE_DSPP_PCC, .base = 0x00, .len = 0x0, .version = 0x1}, .gamut = {.id = SDE_DSPP_GAMUT, .base = 0x01600, .len = 0x0, @@ -331,7 +331,7 @@ static inline int set_cfg_1xx_init(struct sde_mdss_cfg *cfg) }; /* PINGPONG capability */ - static const struct sde_pingpong_sub_blks p_p = { + static const struct sde_pingpong_sub_blks pingpong = { .te = {.id = SDE_PINGPONG_TE, .base = 0x0000, .len = 0x0, .version = 0x1}, .te2 = {.id = SDE_PINGPONG_TE2, .base = 0x2000, .len = 0x0, @@ -404,46 +404,62 @@ static inline int set_cfg_1xx_init(struct sde_mdss_cfg *cfg) .mixer = { {.id = LM_0, .base = 0x00045000, .features = MIXER_17X_MASK, - .sblk = &lm}, + .sblk = &lm, + .dspp = DSPP_0, + .pingpong = PINGPONG_0, + .lm_pair_mask = (1 << LM_1) }, {.id = LM_1, .base = 0x00046000, .features = MIXER_17X_MASK, - .sblk = &lm}, + .sblk = &lm, + .dspp = DSPP_1, + .pingpong = PINGPONG_1, + .lm_pair_mask = (1 << LM_0) }, {.id = LM_2, .base = 0x00047000, .features = MIXER_17X_MASK, - .sblk = &lm}, + .sblk = &lm, + .dspp = DSPP_MAX, + .pingpong = PINGPONG_2, + .lm_pair_mask = (1 << LM_5) }, {.id = LM_3, .base = 0x00048000, .features = MIXER_17X_MASK, - .sblk = &lm}, + .sblk = &lm, + .dspp = DSPP_MAX, + .pingpong = PINGPONG_MAX}, {.id = LM_4, .base = 0x00049000, .features = MIXER_17X_MASK, - .sblk = &lm}, + .sblk = &lm, + .dspp = DSPP_MAX, + .pingpong = PINGPONG_MAX}, {.id = LM_5, .base = 0x0004a000, .features = MIXER_17X_MASK, - .sblk = &lm}, + .sblk = &lm, + .dspp = DSPP_MAX, + .pingpong = PINGPONG_3, + .lm_pair_mask = (1 << LM_2) }, }, .dspp_count = 2, .dspp = { {.id = DSPP_0, .base = 0x00055000, .features = DSPP_17X_MASK, - .sblk = &pp}, + .sblk = &dspp}, {.id = DSPP_1, .base = 0x00057000, .features = DSPP_17X_MASK, - .sblk = &pp}, + .sblk = &dspp}, }, .pingpong_count = 4, .pingpong = { {.id = PINGPONG_0, .base = 0x00071000, .features = PINGPONG_17X_SPLIT_MASK, - .sblk = &p_p}, + .sblk = &pingpong}, {.id = PINGPONG_1, .base = 0x00071800, .features = PINGPONG_17X_SPLIT_MASK, - .sblk = &p_p}, + .sblk = &pingpong}, {.id = PINGPONG_2, .base = 0x00072000, .features = PINGPONG_17X_MASK, - .sblk = &p_p}, + .sblk = &pingpong}, {.id = PINGPONG_3, .base = 0x00072800, .features = PINGPONG_17X_MASK, - .sblk = &p_p}, + .sblk = &pingpong}, }, .cdm_count = 1, .cdm = { |
