Lines Matching defs:fb

45 /* per-plane info for the fb: */
61 static int omap_framebuffer_dirty(struct drm_framebuffer *fb,
69 drm_modeset_lock_all(fb->dev);
71 drm_for_each_crtc(crtc, fb->dev)
74 drm_modeset_unlock_all(fb->dev);
85 static u32 get_linear_addr(struct drm_framebuffer *fb,
88 struct omap_framebuffer *omap_fb = to_omap_framebuffer(fb);
92 offset = fb->offsets[n]
94 + (y * fb->pitches[n] / (n == 0 ? 1 : format->vsub));
99 bool omap_framebuffer_supports_rotation(struct drm_framebuffer *fb)
101 return omap_gem_flags(fb->obj[0]) & OMAP_BO_TILED_MASK;
134 /* update ovl info for scanout, handles cases of multi-planar fb's, etc.
136 void omap_framebuffer_update_scanout(struct drm_framebuffer *fb,
141 struct omap_framebuffer *omap_fb = to_omap_framebuffer(fb);
145 info->fourcc = fb->format->format;
161 if (omap_gem_flags(fb->obj[0]) & OMAP_BO_TILED_MASK) {
173 if (fb->format->format == DRM_FORMAT_UYVY ||
174 fb->format->format == DRM_FORMAT_YUYV) {
186 omap_gem_rotated_dma_addr(fb->obj[0], orient, x, y,
191 info->screen_width = omap_gem_tiled_stride(fb->obj[0], orient);
200 dev_warn(fb->dev->dev,
201 "rotation '%d' ignored for non-tiled fb\n",
206 info->paddr = get_linear_addr(fb, format, 0, x, y);
209 info->screen_width = fb->pitches[0];
215 if (fb->format->format == DRM_FORMAT_NV12) {
217 WARN_ON(!(omap_gem_flags(fb->obj[1]) & OMAP_BO_TILED_MASK));
218 omap_gem_rotated_dma_addr(fb->obj[1], orient, x/2, y/2,
221 info->p_uv_addr = get_linear_addr(fb, format, 1, x, y);
233 if (fb->format->is_yuv) {
247 r_info->paddr = get_linear_addr(fb, format, 0,
249 if (fb->format->format == DRM_FORMAT_NV12) {
251 get_linear_addr(fb, format, 1,
258 int omap_framebuffer_pin(struct drm_framebuffer *fb)
260 struct omap_framebuffer *omap_fb = to_omap_framebuffer(fb);
261 int ret, i, n = fb->format->num_planes;
273 ret = omap_gem_pin(fb->obj[i], &plane->dma_addr);
276 omap_gem_dma_sync_buffer(fb->obj[i], DMA_TO_DEVICE);
288 omap_gem_unpin(fb->obj[i]);
298 void omap_framebuffer_unpin(struct drm_framebuffer *fb)
300 struct omap_framebuffer *omap_fb = to_omap_framebuffer(fb);
301 int i, n = fb->format->num_planes;
314 omap_gem_unpin(fb->obj[i]);
322 void omap_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m)
324 int i, n = fb->format->num_planes;
326 seq_printf(m, "fb: %dx%d@%4.4s\n", fb->width, fb->height,
327 (char *)&fb->format->format);
331 i, fb->offsets[n], fb->pitches[i]);
332 omap_gem_describe(fb->obj[i], m);
344 struct drm_framebuffer *fb;
350 fb = ERR_PTR(-ENOENT);
355 fb = omap_framebuffer_init(dev, mode_cmd, bos);
356 if (IS_ERR(fb))
359 return fb;
365 return fb;
373 struct drm_framebuffer *fb = NULL;
401 fb = &omap_fb->base;
439 fb->obj[i] = bos[i];
443 drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
445 ret = drm_framebuffer_init(dev, fb, &omap_framebuffer_funcs);
451 DBG("create: FB ID: %d (%p)", fb->base.id, fb);
453 return fb;