Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6c84acb authored by Dave Airlie's avatar Dave Airlie
Browse files

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
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -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;
+0 −1
Original line number Diff line number Diff line
@@ -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,
	},
};
+4 −4
Original line number Diff line number Diff line
@@ -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));
	}
}

+14 −4
Original line number Diff line number Diff line
@@ -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,7 +97,7 @@ 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,
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;