struct drm_simple_display_pipe display_pipe;
- /* active framebuffer on the 16-bit channel */
- const struct drm_framebuffer *active_fb_16;
- spinlock_t active_fb_16_lock;
-
struct mutex gem_lock;
int sku_pixel_limit;
int width, int height)
{
struct drm_device *dev = fb->dev;
- struct udl_device *udl = to_udl(dev);
struct dma_buf_attachment *import_attach = fb->obj[0]->import_attach;
int i, ret, tmp_ret;
char *cmd;
int log_bpp;
void *vaddr;
- spin_lock(&udl->active_fb_16_lock);
- if (udl->active_fb_16 != fb) {
- spin_unlock(&udl->active_fb_16_lock);
- return 0;
- }
- spin_unlock(&udl->active_fb_16_lock);
-
ret = udl_log_cpp(fb->format->cpp[0]);
if (ret < 0)
return ret;
DRM_DEBUG("\n");
- udl->active_fb_16 = NULL;
- spin_lock_init(&udl->active_fb_16_lock);
-
mutex_init(&udl->gem_lock);
if (!udl_parse_vendor_descriptor(dev, udl->udev)) {
wrptr = udl_dummy_render(wrptr);
- spin_lock(&udl->active_fb_16_lock);
- udl->active_fb_16 = fb;
- spin_unlock(&udl->active_fb_16_lock);
udl->mode_buf_len = wrptr - buf;
udl_handle_damage(fb, 0, 0, fb->width, fb->height);
udl_simple_display_pipe_update(struct drm_simple_display_pipe *pipe,
struct drm_plane_state *old_plane_state)
{
- struct drm_device *dev = pipe->crtc.dev;
- struct udl_device *udl = dev->dev_private;
struct drm_plane_state *state = pipe->plane.state;
struct drm_framebuffer *fb = state->fb;
struct drm_rect rect;
- spin_lock(&udl->active_fb_16_lock);
- udl->active_fb_16 = fb;
- spin_unlock(&udl->active_fb_16_lock);
-
if (!fb)
return;