aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c
diff options
context:
space:
mode:
authorStephane Viau <sviau@codeaurora.org>2014-11-18 12:49:48 -0500
committerRob Clark <robdclark@gmail.com>2014-11-21 08:57:17 -0500
commit2e362e1772b8978428f087007fc4d6c4990efd41 (patch)
tree38db35194a6b1d7829c573d2bc14ef9d427616e3 /drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c
parentdrm/msm/mdp5: make SMP module dynamically configurable (diff)
downloadlinux-dev-2e362e1772b8978428f087007fc4d6c4990efd41.tar.xz
linux-dev-2e362e1772b8978428f087007fc4d6c4990efd41.zip
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 '')
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c9
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);