summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLloyd Atkinson <latkinso@codeaurora.org>2016-07-06 10:47:29 -0400
committerLloyd Atkinson <latkinso@codeaurora.org>2016-08-12 18:13:40 -0400
commit4fb2e1b5cc283a482fc3f26cf76ec176ef159ef2 (patch)
treeff8859838961adcb32b6a043c62f2ce27d1d4371 /drivers
parent3ebc1398a935371e24bf528d652bca4b32aa3057 (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.h10
-rw-r--r--drivers/gpu/drm/msm/sde/sde_hw_catalog_8996.c48
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 = {