Lines Matching refs:afbdev

45 static void ast_dirty_update(struct ast_fbdev *afbdev,  in ast_dirty_update()  argument
52 int bpp = afbdev->afb.base.format->cpp[0]; in ast_dirty_update()
59 obj = afbdev->afb.obj; in ast_dirty_update()
78 spin_lock_irqsave(&afbdev->dirty_lock, flags); in ast_dirty_update()
80 if (afbdev->y1 < y) in ast_dirty_update()
81 y = afbdev->y1; in ast_dirty_update()
82 if (afbdev->y2 > y2) in ast_dirty_update()
83 y2 = afbdev->y2; in ast_dirty_update()
84 if (afbdev->x1 < x) in ast_dirty_update()
85 x = afbdev->x1; in ast_dirty_update()
86 if (afbdev->x2 > x2) in ast_dirty_update()
87 x2 = afbdev->x2; in ast_dirty_update()
90 afbdev->x1 = x; in ast_dirty_update()
91 afbdev->x2 = x2; in ast_dirty_update()
92 afbdev->y1 = y; in ast_dirty_update()
93 afbdev->y2 = y2; in ast_dirty_update()
94 spin_unlock_irqrestore(&afbdev->dirty_lock, flags); in ast_dirty_update()
98 afbdev->x1 = afbdev->y1 = INT_MAX; in ast_dirty_update()
99 afbdev->x2 = afbdev->y2 = 0; in ast_dirty_update()
100 spin_unlock_irqrestore(&afbdev->dirty_lock, flags); in ast_dirty_update()
113 src_offset = dst_offset = i * afbdev->afb.base.pitches[0] + (x * bpp); in ast_dirty_update()
114 memcpy_toio(bo->kmap.virtual + src_offset, afbdev->sysram + src_offset, (x2 - x + 1) * bpp); in ast_dirty_update()
126 struct ast_fbdev *afbdev = info->par; in ast_fillrect() local
128 ast_dirty_update(afbdev, rect->dx, rect->dy, rect->width, in ast_fillrect()
135 struct ast_fbdev *afbdev = info->par; in ast_copyarea() local
137 ast_dirty_update(afbdev, area->dx, area->dy, area->width, in ast_copyarea()
144 struct ast_fbdev *afbdev = info->par; in ast_imageblit() local
146 ast_dirty_update(afbdev, image->dx, image->dy, image->width, in ast_imageblit()
164 static int astfb_create_object(struct ast_fbdev *afbdev, in astfb_create_object() argument
168 struct drm_device *dev = afbdev->helper.dev; in astfb_create_object()
185 struct ast_fbdev *afbdev = in astfb_create() local
187 struct drm_device *dev = afbdev->helper.dev; in astfb_create()
204 ret = astfb_create_object(afbdev, &mode_cmd, &gobj); in astfb_create()
220 info->par = afbdev; in astfb_create()
222 ret = ast_framebuffer_init(dev, &afbdev->afb, &mode_cmd, gobj); in astfb_create()
226 afbdev->sysram = sysram; in astfb_create()
227 afbdev->size = size; in astfb_create()
229 fb = &afbdev->afb.base; in astfb_create()
230 afbdev->helper.fb = fb; in astfb_create()
240 drm_fb_helper_fill_var(info, &afbdev->helper, sizes->fb_width, sizes->fb_height); in astfb_create()
262 struct ast_fbdev *afbdev) in ast_fbdev_destroy() argument
264 struct ast_framebuffer *afb = &afbdev->afb; in ast_fbdev_destroy()
266 drm_fb_helper_unregister_fbi(&afbdev->helper); in ast_fbdev_destroy()
272 drm_fb_helper_fini(&afbdev->helper); in ast_fbdev_destroy()
274 vfree(afbdev->sysram); in ast_fbdev_destroy()
282 struct ast_fbdev *afbdev; in ast_fbdev_init() local
285 afbdev = kzalloc(sizeof(struct ast_fbdev), GFP_KERNEL); in ast_fbdev_init()
286 if (!afbdev) in ast_fbdev_init()
289 ast->fbdev = afbdev; in ast_fbdev_init()
290 spin_lock_init(&afbdev->dirty_lock); in ast_fbdev_init()
292 drm_fb_helper_prepare(dev, &afbdev->helper, &ast_fb_helper_funcs); in ast_fbdev_init()
294 ret = drm_fb_helper_init(dev, &afbdev->helper, 1); in ast_fbdev_init()
298 ret = drm_fb_helper_single_add_all_connectors(&afbdev->helper); in ast_fbdev_init()
305 ret = drm_fb_helper_initial_config(&afbdev->helper, 32); in ast_fbdev_init()
312 drm_fb_helper_fini(&afbdev->helper); in ast_fbdev_init()
314 kfree(afbdev); in ast_fbdev_init()