diff options
author | Stephane Viau <sviau@codeaurora.org> | 2014-11-18 12:49:48 -0500 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2014-11-21 08:57:17 -0500 |
commit | 2e362e1772b8978428f087007fc4d6c4990efd41 (patch) | |
tree | 38db35194a6b1d7829c573d2bc14ef9d427616e3 /drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c | |
parent | bfcdfb0e62639732339c85371a8c07e915bf0941 (diff) |
drm/msm/mdp5: introduce mdp5_cfg module
The hardware configuration modification from a version to another
is quite consequent. Introducing a configuration module
(mdp5_cfg) may make things more clear and easier to access when a
new hardware version comes up.
Signed-off-by: Stephane Viau <sviau@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c')
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c index e61e1cfed853..04996cae4585 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c @@ -108,11 +108,15 @@ static int smp_request_block(struct mdp5_smp *smp, enum mdp5_client_id cid, int nblks) { struct mdp5_kms *mdp5_kms = get_kms(smp); + const struct mdp5_cfg_hw *hw_cfg; struct mdp5_client_smp_state *ps = &smp->client_state[cid]; int i, ret, avail, cur_nblks, cnt = smp->blk_cnt; - int reserved = mdp5_kms->hw_cfg->smp.reserved[cid]; + int reserved; unsigned long flags; + hw_cfg = mdp5_cfg_get_hw_config(mdp5_kms->cfg_priv); + reserved = hw_cfg->smp.reserved[cid]; + spin_lock_irqsave(&smp->state_lock, flags); nblks -= reserved; @@ -175,6 +179,7 @@ int mdp5_smp_request(void *handler, enum mdp5_pipe pipe, u32 fmt, u32 width) struct mdp5_smp *smp = handler; struct mdp5_kms *mdp5_kms = get_kms(smp); struct drm_device *dev = mdp5_kms->dev; + int rev = mdp5_cfg_get_hw_rev(mdp5_kms->cfg_priv); int i, hsub, nplanes, nlines, nblks, ret; nplanes = drm_format_num_planes(fmt); @@ -192,7 +197,7 @@ int mdp5_smp_request(void *handler, enum mdp5_pipe pipe, u32 fmt, u32 width) n = DIV_ROUND_UP(fetch_stride * nlines, smp->blk_size); /* for hw rev v1.00 */ - if (mdp5_kms->rev == 0) + if (rev == 0) n = roundup_pow_of_two(n); DBG("%s[%d]: request %d SMP blocks", pipe2name(pipe), i, n); |