mirror of https://gitee.com/openkylin/linux.git
Merge branch 'drm-vc4-fixes' of git://github.com/anholt/linux into drm-fixes
Here are a few little VC4 fixes for 4.4 that I didn't get in to you before the -next pull request. I dropped the feature-ish one I'd mentioned, and also droppped the one I saw you included in the last -fixes pull request. * 'drm-vc4-fixes' of git://github.com/anholt/linux: drm/vc4: Make sure that planes aren't scaled. drm/vc4: Fix some failure to track __iomem decorations on pointers. drm/vc4: checking for NULL instead of IS_ERR drm/vc4: fix itnull.cocci warnings drm/vc4: fix platform_no_drv_owner.cocci warnings drm/vc4: vc4_plane_duplicate_state() can be static
This commit is contained in:
commit
e6c84acb3a
|
@ -168,7 +168,7 @@ static int vc4_get_clock_select(struct drm_crtc *crtc)
|
|||
struct drm_connector *connector;
|
||||
|
||||
drm_for_each_connector(connector, crtc->dev) {
|
||||
if (connector && connector->state->crtc == crtc) {
|
||||
if (connector->state->crtc == crtc) {
|
||||
struct drm_encoder *encoder = connector->encoder;
|
||||
struct vc4_encoder *vc4_encoder =
|
||||
to_vc4_encoder(encoder);
|
||||
|
@ -401,7 +401,8 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
|
|||
dlist_next++;
|
||||
|
||||
HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
|
||||
(u32 *)vc4_crtc->dlist - (u32 *)vc4->hvs->dlist);
|
||||
(u32 __iomem *)vc4_crtc->dlist -
|
||||
(u32 __iomem *)vc4->hvs->dlist);
|
||||
|
||||
/* Make the next display list start after ours. */
|
||||
vc4_crtc->dlist_size -= (dlist_next - vc4_crtc->dlist);
|
||||
|
@ -591,14 +592,14 @@ static int vc4_crtc_bind(struct device *dev, struct device *master, void *data)
|
|||
* that will take too much.
|
||||
*/
|
||||
primary_plane = vc4_plane_init(drm, DRM_PLANE_TYPE_PRIMARY);
|
||||
if (!primary_plane) {
|
||||
if (IS_ERR(primary_plane)) {
|
||||
dev_err(dev, "failed to construct primary plane\n");
|
||||
ret = PTR_ERR(primary_plane);
|
||||
goto err;
|
||||
}
|
||||
|
||||
cursor_plane = vc4_plane_init(drm, DRM_PLANE_TYPE_CURSOR);
|
||||
if (!cursor_plane) {
|
||||
if (IS_ERR(cursor_plane)) {
|
||||
dev_err(dev, "failed to construct cursor plane\n");
|
||||
ret = PTR_ERR(cursor_plane);
|
||||
goto err_primary;
|
||||
|
|
|
@ -259,7 +259,6 @@ static struct platform_driver vc4_platform_driver = {
|
|||
.remove = vc4_platform_drm_remove,
|
||||
.driver = {
|
||||
.name = "vc4-drm",
|
||||
.owner = THIS_MODULE,
|
||||
.of_match_table = vc4_of_match,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -75,10 +75,10 @@ void vc4_hvs_dump_state(struct drm_device *dev)
|
|||
for (i = 0; i < 64; i += 4) {
|
||||
DRM_INFO("0x%08x (%s): 0x%08x 0x%08x 0x%08x 0x%08x\n",
|
||||
i * 4, i < HVS_BOOTLOADER_DLIST_END ? "B" : "D",
|
||||
((uint32_t *)vc4->hvs->dlist)[i + 0],
|
||||
((uint32_t *)vc4->hvs->dlist)[i + 1],
|
||||
((uint32_t *)vc4->hvs->dlist)[i + 2],
|
||||
((uint32_t *)vc4->hvs->dlist)[i + 3]);
|
||||
readl((u32 __iomem *)vc4->hvs->dlist + i + 0),
|
||||
readl((u32 __iomem *)vc4->hvs->dlist + i + 1),
|
||||
readl((u32 __iomem *)vc4->hvs->dlist + i + 2),
|
||||
readl((u32 __iomem *)vc4->hvs->dlist + i + 3));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ static bool plane_enabled(struct drm_plane_state *state)
|
|||
return state->fb && state->crtc;
|
||||
}
|
||||
|
||||
struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane)
|
||||
static struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane)
|
||||
{
|
||||
struct vc4_plane_state *vc4_state;
|
||||
|
||||
|
@ -97,8 +97,8 @@ struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane)
|
|||
return &vc4_state->base;
|
||||
}
|
||||
|
||||
void vc4_plane_destroy_state(struct drm_plane *plane,
|
||||
struct drm_plane_state *state)
|
||||
static void vc4_plane_destroy_state(struct drm_plane *plane,
|
||||
struct drm_plane_state *state)
|
||||
{
|
||||
struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
|
||||
|
||||
|
@ -108,7 +108,7 @@ void vc4_plane_destroy_state(struct drm_plane *plane,
|
|||
}
|
||||
|
||||
/* Called during init to allocate the plane's atomic state. */
|
||||
void vc4_plane_reset(struct drm_plane *plane)
|
||||
static void vc4_plane_reset(struct drm_plane *plane)
|
||||
{
|
||||
struct vc4_plane_state *vc4_state;
|
||||
|
||||
|
@ -157,6 +157,16 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
|
|||
int crtc_w = state->crtc_w;
|
||||
int crtc_h = state->crtc_h;
|
||||
|
||||
if (state->crtc_w << 16 != state->src_w ||
|
||||
state->crtc_h << 16 != state->src_h) {
|
||||
/* We don't support scaling yet, which involves
|
||||
* allocating the LBM memory for scaling temporary
|
||||
* storage, and putting filter kernels in the HVS
|
||||
* context.
|
||||
*/
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (crtc_x < 0) {
|
||||
offset += drm_format_plane_cpp(fb->pixel_format, 0) * -crtc_x;
|
||||
crtc_w += crtc_x;
|
||||
|
|
Loading…
Reference in New Issue