diff options
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_fb.c')
| -rw-r--r-- | drivers/gpu/drm/omapdrm/omap_fb.c | 19 | 
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_fb.c b/drivers/gpu/drm/omapdrm/omap_fb.c index f466c4aaee94..8b019602ffe6 100644 --- a/drivers/gpu/drm/omapdrm/omap_fb.c +++ b/drivers/gpu/drm/omapdrm/omap_fb.c @@ -218,6 +218,20 @@ void omap_framebuffer_update_scanout(struct drm_framebuffer *fb,  		info->rotation_type = OMAP_DSS_ROT_TILER;  		info->screen_width  = omap_gem_tiled_stride(plane->bo, orient);  	} else { +		switch (win->rotation & 0xf) { +		case 0: +		case BIT(DRM_ROTATE_0): +			/* OK */ +			break; + +		default: +			dev_warn(fb->dev->dev, +				"rotation '%d' ignored for non-tiled fb\n", +				win->rotation); +			win->rotation = 0; +			break; +		} +  		info->paddr         = get_linear_addr(plane, format, 0, x, y);  		info->rotation_type = OMAP_DSS_ROT_DMA;  		info->screen_width  = plane->pitch; @@ -306,13 +320,14 @@ struct drm_connector *omap_framebuffer_get_next_connector(  	struct drm_connector *connector = from;  	if (!from) -		return list_first_entry(connector_list, typeof(*from), head); +		return list_first_entry_or_null(connector_list, typeof(*from), +						head);  	list_for_each_entry_from(connector, connector_list, head) {  		if (connector != from) {  			struct drm_encoder *encoder = connector->encoder;  			struct drm_crtc *crtc = encoder ? encoder->crtc : NULL; -			if (crtc && crtc->fb == fb) +			if (crtc && crtc->primary->fb == fb)  				return connector;  		}  | 
