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()
208 ret = astfb_create_object(afbdev, &mode_cmd, &gobj); in astfb_create()
224 info->par = afbdev; in astfb_create()
226 ret = ast_framebuffer_init(dev, &afbdev->afb, &mode_cmd, gobj); in astfb_create()
230 afbdev->sysram = sysram; in astfb_create()
231 afbdev->size = size; in astfb_create()
233 fb = &afbdev->afb.base; in astfb_create()
234 afbdev->helper.fb = fb; in astfb_create()
245 drm_fb_helper_fill_var(info, &afbdev->helper, sizes->fb_width, sizes->fb_height); in astfb_create()
260 vfree(afbdev->sysram); in astfb_create()
289 struct ast_fbdev *afbdev) in ast_fbdev_destroy() argument
291 struct ast_framebuffer *afb = &afbdev->afb; in ast_fbdev_destroy()
293 drm_fb_helper_unregister_fbi(&afbdev->helper); in ast_fbdev_destroy()
294 drm_fb_helper_release_fbi(&afbdev->helper); in ast_fbdev_destroy()
300 drm_fb_helper_fini(&afbdev->helper); in ast_fbdev_destroy()
302 vfree(afbdev->sysram); in ast_fbdev_destroy()
310 struct ast_fbdev *afbdev; in ast_fbdev_init() local
313 afbdev = kzalloc(sizeof(struct ast_fbdev), GFP_KERNEL); in ast_fbdev_init()
314 if (!afbdev) in ast_fbdev_init()
317 ast->fbdev = afbdev; in ast_fbdev_init()
318 spin_lock_init(&afbdev->dirty_lock); in ast_fbdev_init()
320 drm_fb_helper_prepare(dev, &afbdev->helper, &ast_fb_helper_funcs); in ast_fbdev_init()
322 ret = drm_fb_helper_init(dev, &afbdev->helper, in ast_fbdev_init()
327 ret = drm_fb_helper_single_add_all_connectors(&afbdev->helper); in ast_fbdev_init()
334 ret = drm_fb_helper_initial_config(&afbdev->helper, 32); in ast_fbdev_init()
341 drm_fb_helper_fini(&afbdev->helper); in ast_fbdev_init()
343 kfree(afbdev); in ast_fbdev_init()