Lines Matching refs:mfbdev

20 static void mga_dirty_update(struct mga_fbdev *mfbdev,  in mga_dirty_update()  argument
27 int bpp = mfbdev->mfb.base.format->cpp[0]; in mga_dirty_update()
34 obj = mfbdev->mfb.obj; in mga_dirty_update()
53 spin_lock_irqsave(&mfbdev->dirty_lock, flags); in mga_dirty_update()
55 if (mfbdev->y1 < y) in mga_dirty_update()
56 y = mfbdev->y1; in mga_dirty_update()
57 if (mfbdev->y2 > y2) in mga_dirty_update()
58 y2 = mfbdev->y2; in mga_dirty_update()
59 if (mfbdev->x1 < x) in mga_dirty_update()
60 x = mfbdev->x1; in mga_dirty_update()
61 if (mfbdev->x2 > x2) in mga_dirty_update()
62 x2 = mfbdev->x2; in mga_dirty_update()
65 mfbdev->x1 = x; in mga_dirty_update()
66 mfbdev->x2 = x2; in mga_dirty_update()
67 mfbdev->y1 = y; in mga_dirty_update()
68 mfbdev->y2 = y2; in mga_dirty_update()
69 spin_unlock_irqrestore(&mfbdev->dirty_lock, flags); in mga_dirty_update()
73 mfbdev->x1 = mfbdev->y1 = INT_MAX; in mga_dirty_update()
74 mfbdev->x2 = mfbdev->y2 = 0; in mga_dirty_update()
75 spin_unlock_irqrestore(&mfbdev->dirty_lock, flags); in mga_dirty_update()
88 src_offset = dst_offset = i * mfbdev->mfb.base.pitches[0] + (x * bpp); in mga_dirty_update()
89 memcpy_toio(bo->kmap.virtual + src_offset, mfbdev->sysram + src_offset, (x2 - x + 1) * bpp); in mga_dirty_update()
101 struct mga_fbdev *mfbdev = info->par; in mga_fillrect() local
103 mga_dirty_update(mfbdev, rect->dx, rect->dy, rect->width, in mga_fillrect()
110 struct mga_fbdev *mfbdev = info->par; in mga_copyarea() local
112 mga_dirty_update(mfbdev, area->dx, area->dy, area->width, in mga_copyarea()
119 struct mga_fbdev *mfbdev = info->par; in mga_imageblit() local
121 mga_dirty_update(mfbdev, image->dx, image->dy, image->width, in mga_imageblit()
159 struct mga_fbdev *mfbdev = in mgag200fb_create() local
161 struct drm_device *dev = mfbdev->helper.dev; in mgag200fb_create()
179 ret = mgag200fb_create_object(mfbdev, &mode_cmd, &gobj); in mgag200fb_create()
197 info->par = mfbdev; in mgag200fb_create()
199 ret = mgag200_framebuffer_init(dev, &mfbdev->mfb, &mode_cmd, gobj); in mgag200fb_create()
203 mfbdev->sysram = sysram; in mgag200fb_create()
204 mfbdev->size = size; in mgag200fb_create()
206 fb = &mfbdev->mfb.base; in mgag200fb_create()
209 mfbdev->helper.fb = fb; in mgag200fb_create()
220 drm_fb_helper_fill_var(info, &mfbdev->helper, sizes->fb_width, in mgag200fb_create()
241 struct mga_fbdev *mfbdev) in mga_fbdev_destroy() argument
243 struct mga_framebuffer *mfb = &mfbdev->mfb; in mga_fbdev_destroy()
245 drm_fb_helper_unregister_fbi(&mfbdev->helper); in mga_fbdev_destroy()
251 drm_fb_helper_fini(&mfbdev->helper); in mga_fbdev_destroy()
252 vfree(mfbdev->sysram); in mga_fbdev_destroy()
265 struct mga_fbdev *mfbdev; in mgag200_fbdev_init() local
273 mfbdev = devm_kzalloc(mdev->dev->dev, sizeof(struct mga_fbdev), GFP_KERNEL); in mgag200_fbdev_init()
274 if (!mfbdev) in mgag200_fbdev_init()
277 mdev->mfbdev = mfbdev; in mgag200_fbdev_init()
278 spin_lock_init(&mfbdev->dirty_lock); in mgag200_fbdev_init()
280 drm_fb_helper_prepare(mdev->dev, &mfbdev->helper, &mga_fb_helper_funcs); in mgag200_fbdev_init()
282 ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper, in mgag200_fbdev_init()
287 ret = drm_fb_helper_single_add_all_connectors(&mfbdev->helper); in mgag200_fbdev_init()
294 ret = drm_fb_helper_initial_config(&mfbdev->helper, bpp_sel); in mgag200_fbdev_init()
301 drm_fb_helper_fini(&mfbdev->helper); in mgag200_fbdev_init()
303 mdev->mfbdev = NULL; in mgag200_fbdev_init()
310 if (!mdev->mfbdev) in mgag200_fbdev_fini()
313 mga_fbdev_destroy(mdev->dev, mdev->mfbdev); in mgag200_fbdev_fini()