summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorDhaval Patel <pdhaval@codeaurora.org>2016-10-21 17:13:36 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-10-21 17:13:36 -0700
commitebfb21903d5d29c4c0fe7ed2ce7f6de54222eea7 (patch)
tree4a9da1a0949832c0aacb7b7d58060f2d393a41b6 /drivers/gpu
parent58d1938917ab32266aa3b8118d0693b6414bcdd6 (diff)
parent0c246694ad5b191035eca0d3b04805c0f9655e20 (diff)
Merge "drm/msm/sde: update ubwc and src split properties for sde" into dev/msm-4.4-drm_kms
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/msm/sde/sde_hw_catalog.c26
-rw-r--r--drivers/gpu/drm/msm/sde/sde_hw_catalog.h4
2 files changed, 26 insertions, 4 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_hw_catalog.c b/drivers/gpu/drm/msm/sde/sde_hw_catalog.c
index 9b16f26287ed..fb75c2a59835 100644
--- a/drivers/gpu/drm/msm/sde/sde_hw_catalog.c
+++ b/drivers/gpu/drm/msm/sde/sde_hw_catalog.c
@@ -87,6 +87,7 @@ enum sde_prop {
QSEED_TYPE,
PANIC_PER_PIPE,
CDP,
+ SRC_SPLIT,
};
enum {
@@ -138,7 +139,6 @@ enum {
enum {
MIXER_OFF,
MIXER_LEN,
- SRC_SPLIT,
MIXER_GC,
};
@@ -188,6 +188,7 @@ static struct sde_prop_type sde_prop[] = {
{QSEED_TYPE, "qcom,sde-qseed-type", false, PROP_TYPE_STRING},
{PANIC_PER_PIPE, "qcom,sde-panic-per-pipe", false, PROP_TYPE_BOOL},
{CDP, "qcom,sde-has-cdp", false, PROP_TYPE_BOOL},
+ {SRC_SPLIT, "qcom,sde-has-src-split", false, PROP_TYPE_BOOL},
};
static struct sde_prop_type sspp_prop[] = {
@@ -215,7 +216,6 @@ static struct sde_prop_type ctl_prop[] = {
static struct sde_prop_type mixer_prop[] = {
{MIXER_OFF, "qcom,sde-mixer-off", true, PROP_TYPE_U32_ARRAY},
{MIXER_LEN, "qcom,sde-mixer-size", false, PROP_TYPE_U32},
- {SRC_SPLIT, "qcom,sde-has-src-split", false, PROP_TYPE_BOOL},
{MIXER_GC, "qcom,sde-has-mixer-gc", false, PROP_TYPE_BOOL},
};
@@ -704,7 +704,7 @@ static int sde_mixer_parse_dt(struct device_node *np,
memcpy(sblk->blendstage_base, blend_reg_base, sizeof(u32) *
min_t(u32, MAX_BLOCKS, min_t(u32,
ARRAY_SIZE(blend_reg_base), max_blendstages)));
- if (prop_value[SRC_SPLIT][0])
+ if (sde_cfg->has_src_split)
set_bit(SDE_MIXER_SOURCESPLIT, &mixer->features);
if (prop_value[MIXER_GC][0])
set_bit(SDE_MIXER_GC, &mixer->features);
@@ -1098,11 +1098,27 @@ static int sde_parse_dt(struct device_node *np, struct sde_mdss_cfg *cfg)
else if (!rc && !strcmp(type, "qseedv2"))
cfg->qseed_type = SDE_SSPP_SCALER_QSEED2;
+ cfg->has_src_split = prop_value[SRC_SPLIT][0];
end:
return rc;
}
-void sde_hw_catalog_deinit(struct sde_mdss_cfg *sde_cfg)
+static void sde_hardware_caps(struct sde_mdss_cfg *sde_cfg, uint32_t hw_rev)
+{
+ switch (hw_rev) {
+ case SDE_HW_VER_170:
+ case SDE_HW_VER_171:
+ case SDE_HW_VER_172:
+ /* update msm8996 target here */
+ break;
+ case SDE_HW_VER_300:
+ case SDE_HW_VER_400:
+ /* update cobalt and skunk target here */
+ break;
+ }
+}
+
+static void sde_hw_catalog_deinit(struct sde_mdss_cfg *sde_cfg)
{
int i;
@@ -1178,6 +1194,8 @@ struct sde_mdss_cfg *sde_hw_catalog_init(struct drm_device *dev, u32 hw_rev)
if (rc)
goto end;
+ sde_hardware_caps(sde_cfg, hw_rev);
+
return sde_cfg;
end:
diff --git a/drivers/gpu/drm/msm/sde/sde_hw_catalog.h b/drivers/gpu/drm/msm/sde/sde_hw_catalog.h
index de559f1b2579..6e0a52d2bb71 100644
--- a/drivers/gpu/drm/msm/sde/sde_hw_catalog.h
+++ b/drivers/gpu/drm/msm/sde/sde_hw_catalog.h
@@ -603,6 +603,8 @@ struct sde_vbif_cfg {
* @max_wb_linewidth max writeback line width support.
* @highest_bank_bit highest memory bit setting for tile buffers.
* @qseed_type qseed2 or qseed3 support.
+ * @has_src_split source split feature status
+ * @has_cdp Client driver prefetch feature status
*/
struct sde_mdss_cfg {
u32 hwversion;
@@ -613,6 +615,8 @@ struct sde_mdss_cfg {
u32 max_wb_linewidth;
u32 highest_bank_bit;
u32 qseed_type;
+ bool has_src_split;
+ bool has_cdp;
u32 mdss_count;
struct sde_mdss_base_cfg mdss[MAX_BLOCKS];