Commit e6c84acb authored by Dave Airlie's avatar Dave Airlie

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
parents 8ed59fd6 bf893acc
...@@ -168,7 +168,7 @@ static int vc4_get_clock_select(struct drm_crtc *crtc) ...@@ -168,7 +168,7 @@ static int vc4_get_clock_select(struct drm_crtc *crtc)
struct drm_connector *connector; struct drm_connector *connector;
drm_for_each_connector(connector, crtc->dev) { 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 drm_encoder *encoder = connector->encoder;
struct vc4_encoder *vc4_encoder = struct vc4_encoder *vc4_encoder =
to_vc4_encoder(encoder); to_vc4_encoder(encoder);
...@@ -401,7 +401,8 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc, ...@@ -401,7 +401,8 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
dlist_next++; dlist_next++;
HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel), 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. */ /* Make the next display list start after ours. */
vc4_crtc->dlist_size -= (dlist_next - vc4_crtc->dlist); 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) ...@@ -591,14 +592,14 @@ static int vc4_crtc_bind(struct device *dev, struct device *master, void *data)
* that will take too much. * that will take too much.
*/ */
primary_plane = vc4_plane_init(drm, DRM_PLANE_TYPE_PRIMARY); 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"); dev_err(dev, "failed to construct primary plane\n");
ret = PTR_ERR(primary_plane); ret = PTR_ERR(primary_plane);
goto err; goto err;
} }
cursor_plane = vc4_plane_init(drm, DRM_PLANE_TYPE_CURSOR); 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"); dev_err(dev, "failed to construct cursor plane\n");
ret = PTR_ERR(cursor_plane); ret = PTR_ERR(cursor_plane);
goto err_primary; goto err_primary;
......
...@@ -259,7 +259,6 @@ static struct platform_driver vc4_platform_driver = { ...@@ -259,7 +259,6 @@ static struct platform_driver vc4_platform_driver = {
.remove = vc4_platform_drm_remove, .remove = vc4_platform_drm_remove,
.driver = { .driver = {
.name = "vc4-drm", .name = "vc4-drm",
.owner = THIS_MODULE,
.of_match_table = vc4_of_match, .of_match_table = vc4_of_match,
}, },
}; };
......
...@@ -75,10 +75,10 @@ void vc4_hvs_dump_state(struct drm_device *dev) ...@@ -75,10 +75,10 @@ void vc4_hvs_dump_state(struct drm_device *dev)
for (i = 0; i < 64; i += 4) { for (i = 0; i < 64; i += 4) {
DRM_INFO("0x%08x (%s): 0x%08x 0x%08x 0x%08x 0x%08x\n", DRM_INFO("0x%08x (%s): 0x%08x 0x%08x 0x%08x 0x%08x\n",
i * 4, i < HVS_BOOTLOADER_DLIST_END ? "B" : "D", i * 4, i < HVS_BOOTLOADER_DLIST_END ? "B" : "D",
((uint32_t *)vc4->hvs->dlist)[i + 0], readl((u32 __iomem *)vc4->hvs->dlist + i + 0),
((uint32_t *)vc4->hvs->dlist)[i + 1], readl((u32 __iomem *)vc4->hvs->dlist + i + 1),
((uint32_t *)vc4->hvs->dlist)[i + 2], readl((u32 __iomem *)vc4->hvs->dlist + i + 2),
((uint32_t *)vc4->hvs->dlist)[i + 3]); readl((u32 __iomem *)vc4->hvs->dlist + i + 3));
} }
} }
......
...@@ -70,7 +70,7 @@ static bool plane_enabled(struct drm_plane_state *state) ...@@ -70,7 +70,7 @@ static bool plane_enabled(struct drm_plane_state *state)
return state->fb && state->crtc; 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; struct vc4_plane_state *vc4_state;
...@@ -97,8 +97,8 @@ struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane) ...@@ -97,8 +97,8 @@ struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane)
return &vc4_state->base; return &vc4_state->base;
} }
void vc4_plane_destroy_state(struct drm_plane *plane, static void vc4_plane_destroy_state(struct drm_plane *plane,
struct drm_plane_state *state) struct drm_plane_state *state)
{ {
struct vc4_plane_state *vc4_state = to_vc4_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, ...@@ -108,7 +108,7 @@ void vc4_plane_destroy_state(struct drm_plane *plane,
} }
/* Called during init to allocate the plane's atomic state. */ /* 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; struct vc4_plane_state *vc4_state;
...@@ -157,6 +157,16 @@ static int vc4_plane_mode_set(struct drm_plane *plane, ...@@ -157,6 +157,16 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
int crtc_w = state->crtc_w; int crtc_w = state->crtc_w;
int crtc_h = state->crtc_h; 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) { if (crtc_x < 0) {
offset += drm_format_plane_cpp(fb->pixel_format, 0) * -crtc_x; offset += drm_format_plane_cpp(fb->pixel_format, 0) * -crtc_x;
crtc_w += crtc_x; crtc_w += crtc_x;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment