Lines Matching refs:afbdev

46 static void ast_dirty_update(struct ast_fbdev *afbdev,  in ast_dirty_update()  argument
53 int bpp = (afbdev->afb.base.bits_per_pixel + 7)/8; in ast_dirty_update()
60 obj = afbdev->afb.obj; in ast_dirty_update()
79 spin_lock_irqsave(&afbdev->dirty_lock, flags); in ast_dirty_update()
81 if (afbdev->y1 < y) in ast_dirty_update()
82 y = afbdev->y1; in ast_dirty_update()
83 if (afbdev->y2 > y2) in ast_dirty_update()
84 y2 = afbdev->y2; in ast_dirty_update()
85 if (afbdev->x1 < x) in ast_dirty_update()
86 x = afbdev->x1; in ast_dirty_update()
87 if (afbdev->x2 > x2) in ast_dirty_update()
88 x2 = afbdev->x2; in ast_dirty_update()
91 afbdev->x1 = x; in ast_dirty_update()
92 afbdev->x2 = x2; in ast_dirty_update()
93 afbdev->y1 = y; in ast_dirty_update()
94 afbdev->y2 = y2; in ast_dirty_update()
95 spin_unlock_irqrestore(&afbdev->dirty_lock, flags); in ast_dirty_update()
99 afbdev->x1 = afbdev->y1 = INT_MAX; in ast_dirty_update()
100 afbdev->x2 = afbdev->y2 = 0; in ast_dirty_update()
101 spin_unlock_irqrestore(&afbdev->dirty_lock, flags); in ast_dirty_update()
114 src_offset = dst_offset = i * afbdev->afb.base.pitches[0] + (x * bpp); in ast_dirty_update()
115 memcpy_toio(bo->kmap.virtual + src_offset, afbdev->sysram + src_offset, (x2 - x + 1) * bpp); in ast_dirty_update()
127 struct ast_fbdev *afbdev = info->par; in ast_fillrect() local
129 ast_dirty_update(afbdev, rect->dx, rect->dy, rect->width, in ast_fillrect()
136 struct ast_fbdev *afbdev = info->par; in ast_copyarea() local
138 ast_dirty_update(afbdev, area->dx, area->dy, area->width, in ast_copyarea()
145 struct ast_fbdev *afbdev = info->par; in ast_imageblit() local
147 ast_dirty_update(afbdev, image->dx, image->dy, image->width, in ast_imageblit()
165 static int astfb_create_object(struct ast_fbdev *afbdev, in astfb_create_object() argument
169 struct drm_device *dev = afbdev->helper.dev; in astfb_create_object()
189 struct ast_fbdev *afbdev = in astfb_create() local
191 struct drm_device *dev = afbdev->helper.dev; in astfb_create()
209 ret = astfb_create_object(afbdev, &mode_cmd, &gobj); in astfb_create()
225 info->par = afbdev; in astfb_create()
227 ret = ast_framebuffer_init(dev, &afbdev->afb, &mode_cmd, gobj); in astfb_create()
231 afbdev->sysram = sysram; in astfb_create()
232 afbdev->size = size; in astfb_create()
234 fb = &afbdev->afb.base; in astfb_create()
235 afbdev->helper.fb = fb; in astfb_create()
236 afbdev->helper.fbdev = info; in astfb_create()
258 drm_fb_helper_fill_var(info, &afbdev->helper, sizes->fb_width, sizes->fb_height); in astfb_create()
298 struct ast_fbdev *afbdev) in ast_fbdev_destroy() argument
301 struct ast_framebuffer *afb = &afbdev->afb; in ast_fbdev_destroy()
302 if (afbdev->helper.fbdev) { in ast_fbdev_destroy()
303 info = afbdev->helper.fbdev; in ast_fbdev_destroy()
314 drm_fb_helper_fini(&afbdev->helper); in ast_fbdev_destroy()
316 vfree(afbdev->sysram); in ast_fbdev_destroy()
324 struct ast_fbdev *afbdev; in ast_fbdev_init() local
327 afbdev = kzalloc(sizeof(struct ast_fbdev), GFP_KERNEL); in ast_fbdev_init()
328 if (!afbdev) in ast_fbdev_init()
331 ast->fbdev = afbdev; in ast_fbdev_init()
332 spin_lock_init(&afbdev->dirty_lock); in ast_fbdev_init()
334 drm_fb_helper_prepare(dev, &afbdev->helper, &ast_fb_helper_funcs); in ast_fbdev_init()
336 ret = drm_fb_helper_init(dev, &afbdev->helper, in ast_fbdev_init()
341 ret = drm_fb_helper_single_add_all_connectors(&afbdev->helper); in ast_fbdev_init()
348 ret = drm_fb_helper_initial_config(&afbdev->helper, 32); in ast_fbdev_init()
355 drm_fb_helper_fini(&afbdev->helper); in ast_fbdev_init()
357 kfree(afbdev); in ast_fbdev_init()