disp: msm: update topology based on clock requirement

Update the topology allocation by considering the required
mode clock (vtotal x htotal x fps * fudge factor). Modes with
a clock that exceeds the maximum SDE clock will be denoted as
requiring a topology that uses two layer mixers.

Change-Id: I3c773598b0d79cb6fea9d3a0e04d89ff84d67e13
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Šī revīzija ir iekļauta:
Tatenda Chipeperekwa
2019-09-12 16:43:14 -07:00
vecāks b8165c3584
revīzija da892c0b91
6 mainīti faili ar 103 papildinājumiem un 7 dzēšanām

Parādīt failu

@@ -1938,6 +1938,33 @@ msm_gem_smmu_address_space_get(struct drm_device *dev,
return funcs->get_address_space(priv->kms, domain);
}
int msm_get_mixer_count(struct msm_drm_private *priv,
const struct drm_display_mode *mode,
const struct msm_resource_caps_info *res, u32 *num_lm)
{
struct msm_kms *kms;
const struct msm_kms_funcs *funcs;
if (!priv) {
DRM_ERROR("invalid drm private struct\n");
return -EINVAL;
}
kms = priv->kms;
if (!kms) {
DRM_ERROR("invalid msm kms struct\n");
return -EINVAL;
}
funcs = kms->funcs;
if (!funcs || !funcs->get_mixer_count) {
DRM_ERROR("invalid function pointers\n");
return -EINVAL;
}
return funcs->get_mixer_count(priv->kms, mode, res, num_lm);
}
static int msm_drm_bind(struct device *dev)
{
return msm_drm_init(dev, &msm_driver);