drm/msm: pass address-space to _get_iova() and friends
No functional change, that will come later. But this will make it easier to deal with dynamically created address spaces (ie. per- process pagetables for gpu). Signed-off-by: Rob Clark <robdclark@gmail.com>
Esse commit está contido em:
@@ -128,7 +128,7 @@ static void unref_cursor_worker(struct drm_flip_work *work, void *val)
|
||||
struct mdp4_kms *mdp4_kms = get_kms(&mdp4_crtc->base);
|
||||
struct msm_kms *kms = &mdp4_kms->base.base;
|
||||
|
||||
msm_gem_put_iova(val, kms->id);
|
||||
msm_gem_put_iova(val, kms->aspace);
|
||||
drm_gem_object_unreference_unlocked(val);
|
||||
}
|
||||
|
||||
@@ -374,7 +374,7 @@ static void update_cursor(struct drm_crtc *crtc)
|
||||
if (next_bo) {
|
||||
/* take a obj ref + iova ref when we start scanning out: */
|
||||
drm_gem_object_reference(next_bo);
|
||||
msm_gem_get_iova_locked(next_bo, kms->id, &iova);
|
||||
msm_gem_get_iova_locked(next_bo, kms->aspace, &iova);
|
||||
|
||||
/* enable cursor: */
|
||||
mdp4_write(mdp4_kms, REG_MDP4_DMA_CURSOR_SIZE(dma),
|
||||
@@ -432,7 +432,7 @@ static int mdp4_crtc_cursor_set(struct drm_crtc *crtc,
|
||||
}
|
||||
|
||||
if (cursor_bo) {
|
||||
ret = msm_gem_get_iova(cursor_bo, kms->id, &iova);
|
||||
ret = msm_gem_get_iova(cursor_bo, kms->aspace, &iova);
|
||||
if (ret)
|
||||
goto fail;
|
||||
} else {
|
||||
|
@@ -163,7 +163,7 @@ static void mdp4_destroy(struct msm_kms *kms)
|
||||
struct msm_gem_address_space *aspace = kms->aspace;
|
||||
|
||||
if (mdp4_kms->blank_cursor_iova)
|
||||
msm_gem_put_iova(mdp4_kms->blank_cursor_bo, kms->id);
|
||||
msm_gem_put_iova(mdp4_kms->blank_cursor_bo, kms->aspace);
|
||||
drm_gem_object_unreference_unlocked(mdp4_kms->blank_cursor_bo);
|
||||
|
||||
if (aspace) {
|
||||
@@ -545,7 +545,7 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ret = msm_gem_get_iova(mdp4_kms->blank_cursor_bo, kms->id,
|
||||
ret = msm_gem_get_iova(mdp4_kms->blank_cursor_bo, kms->aspace,
|
||||
&mdp4_kms->blank_cursor_iova);
|
||||
if (ret) {
|
||||
dev_err(dev->dev, "could not pin blank-cursor bo: %d\n", ret);
|
||||
|
@@ -110,7 +110,7 @@ static int mdp4_plane_prepare_fb(struct drm_plane *plane,
|
||||
return 0;
|
||||
|
||||
DBG("%s: prepare: FB[%u]", mdp4_plane->name, fb->base.id);
|
||||
return msm_framebuffer_prepare(fb, kms->id);
|
||||
return msm_framebuffer_prepare(fb, kms->aspace);
|
||||
}
|
||||
|
||||
static void mdp4_plane_cleanup_fb(struct drm_plane *plane,
|
||||
@@ -125,7 +125,7 @@ static void mdp4_plane_cleanup_fb(struct drm_plane *plane,
|
||||
return;
|
||||
|
||||
DBG("%s: cleanup: FB[%u]", mdp4_plane->name, fb->base.id);
|
||||
msm_framebuffer_cleanup(fb, kms->id);
|
||||
msm_framebuffer_cleanup(fb, kms->aspace);
|
||||
}
|
||||
|
||||
|
||||
@@ -175,13 +175,13 @@ static void mdp4_plane_set_scanout(struct drm_plane *plane,
|
||||
MDP4_PIPE_SRC_STRIDE_B_P3(fb->pitches[3]));
|
||||
|
||||
mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP0_BASE(pipe),
|
||||
msm_framebuffer_iova(fb, kms->id, 0));
|
||||
msm_framebuffer_iova(fb, kms->aspace, 0));
|
||||
mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP1_BASE(pipe),
|
||||
msm_framebuffer_iova(fb, kms->id, 1));
|
||||
msm_framebuffer_iova(fb, kms->aspace, 1));
|
||||
mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP2_BASE(pipe),
|
||||
msm_framebuffer_iova(fb, kms->id, 2));
|
||||
msm_framebuffer_iova(fb, kms->aspace, 2));
|
||||
mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP3_BASE(pipe),
|
||||
msm_framebuffer_iova(fb, kms->id, 3));
|
||||
msm_framebuffer_iova(fb, kms->aspace, 3));
|
||||
|
||||
plane->fb = fb;
|
||||
}
|
||||
|
@@ -162,7 +162,7 @@ static void unref_cursor_worker(struct drm_flip_work *work, void *val)
|
||||
struct mdp5_kms *mdp5_kms = get_kms(&mdp5_crtc->base);
|
||||
struct msm_kms *kms = &mdp5_kms->base.base;
|
||||
|
||||
msm_gem_put_iova(val, kms->id);
|
||||
msm_gem_put_iova(val, kms->aspace);
|
||||
drm_gem_object_unreference_unlocked(val);
|
||||
}
|
||||
|
||||
@@ -760,7 +760,7 @@ static int mdp5_crtc_cursor_set(struct drm_crtc *crtc,
|
||||
if (!cursor_bo)
|
||||
return -ENOENT;
|
||||
|
||||
ret = msm_gem_get_iova(cursor_bo, kms->id, &cursor_addr);
|
||||
ret = msm_gem_get_iova(cursor_bo, kms->aspace, &cursor_addr);
|
||||
if (ret)
|
||||
return -EINVAL;
|
||||
|
||||
|
@@ -279,7 +279,7 @@ static int mdp5_plane_prepare_fb(struct drm_plane *plane,
|
||||
return 0;
|
||||
|
||||
DBG("%s: prepare: FB[%u]", plane->name, fb->base.id);
|
||||
return msm_framebuffer_prepare(fb, kms->id);
|
||||
return msm_framebuffer_prepare(fb, kms->aspace);
|
||||
}
|
||||
|
||||
static void mdp5_plane_cleanup_fb(struct drm_plane *plane,
|
||||
@@ -293,7 +293,7 @@ static void mdp5_plane_cleanup_fb(struct drm_plane *plane,
|
||||
return;
|
||||
|
||||
DBG("%s: cleanup: FB[%u]", plane->name, fb->base.id);
|
||||
msm_framebuffer_cleanup(fb, kms->id);
|
||||
msm_framebuffer_cleanup(fb, kms->aspace);
|
||||
}
|
||||
|
||||
#define FRAC_16_16(mult, div) (((mult) << 16) / (div))
|
||||
@@ -511,13 +511,13 @@ static void set_scanout_locked(struct mdp5_kms *mdp5_kms,
|
||||
MDP5_PIPE_SRC_STRIDE_B_P3(fb->pitches[3]));
|
||||
|
||||
mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC0_ADDR(pipe),
|
||||
msm_framebuffer_iova(fb, kms->id, 0));
|
||||
msm_framebuffer_iova(fb, kms->aspace, 0));
|
||||
mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC1_ADDR(pipe),
|
||||
msm_framebuffer_iova(fb, kms->id, 1));
|
||||
msm_framebuffer_iova(fb, kms->aspace, 1));
|
||||
mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC2_ADDR(pipe),
|
||||
msm_framebuffer_iova(fb, kms->id, 2));
|
||||
msm_framebuffer_iova(fb, kms->aspace, 2));
|
||||
mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC3_ADDR(pipe),
|
||||
msm_framebuffer_iova(fb, kms->id, 3));
|
||||
msm_framebuffer_iova(fb, kms->aspace, 3));
|
||||
}
|
||||
|
||||
/* Note: mdp5_plane->pipe_lock must be locked */
|
||||
|
Referência em uma nova issue
Block a user