Lines Matching refs:mfbdev
22 static void mga_dirty_update(struct mga_fbdev *mfbdev, in mga_dirty_update() argument
29 int bpp = (mfbdev->mfb.base.bits_per_pixel + 7)/8; in mga_dirty_update()
36 obj = mfbdev->mfb.obj; in mga_dirty_update()
55 spin_lock_irqsave(&mfbdev->dirty_lock, flags); in mga_dirty_update()
57 if (mfbdev->y1 < y) in mga_dirty_update()
58 y = mfbdev->y1; in mga_dirty_update()
59 if (mfbdev->y2 > y2) in mga_dirty_update()
60 y2 = mfbdev->y2; in mga_dirty_update()
61 if (mfbdev->x1 < x) in mga_dirty_update()
62 x = mfbdev->x1; in mga_dirty_update()
63 if (mfbdev->x2 > x2) in mga_dirty_update()
64 x2 = mfbdev->x2; in mga_dirty_update()
67 mfbdev->x1 = x; in mga_dirty_update()
68 mfbdev->x2 = x2; in mga_dirty_update()
69 mfbdev->y1 = y; in mga_dirty_update()
70 mfbdev->y2 = y2; in mga_dirty_update()
71 spin_unlock_irqrestore(&mfbdev->dirty_lock, flags); in mga_dirty_update()
75 mfbdev->x1 = mfbdev->y1 = INT_MAX; in mga_dirty_update()
76 mfbdev->x2 = mfbdev->y2 = 0; in mga_dirty_update()
77 spin_unlock_irqrestore(&mfbdev->dirty_lock, flags); in mga_dirty_update()
90 src_offset = dst_offset = i * mfbdev->mfb.base.pitches[0] + (x * bpp); in mga_dirty_update()
91 memcpy_toio(bo->kmap.virtual + src_offset, mfbdev->sysram + src_offset, (x2 - x + 1) * bpp); in mga_dirty_update()
103 struct mga_fbdev *mfbdev = info->par; in mga_fillrect() local
105 mga_dirty_update(mfbdev, rect->dx, rect->dy, rect->width, in mga_fillrect()
112 struct mga_fbdev *mfbdev = info->par; in mga_copyarea() local
114 mga_dirty_update(mfbdev, area->dx, area->dy, area->width, in mga_copyarea()
121 struct mga_fbdev *mfbdev = info->par; in mga_imageblit() local
123 mga_dirty_update(mfbdev, image->dx, image->dy, image->width, in mga_imageblit()
161 struct mga_fbdev *mfbdev = in mgag200fb_create() local
163 struct drm_device *dev = mfbdev->helper.dev; in mgag200fb_create()
183 ret = mgag200fb_create_object(mfbdev, &mode_cmd, &gobj); in mgag200fb_create()
198 info->par = mfbdev; in mgag200fb_create()
200 ret = mgag200_framebuffer_init(dev, &mfbdev->mfb, &mode_cmd, gobj); in mgag200fb_create()
204 mfbdev->sysram = sysram; in mgag200fb_create()
205 mfbdev->size = size; in mgag200fb_create()
207 fb = &mfbdev->mfb.base; in mgag200fb_create()
210 mfbdev->helper.fb = fb; in mgag200fb_create()
211 mfbdev->helper.fbdev = info; in mgag200fb_create()
235 drm_fb_helper_fill_var(info, &mfbdev->helper, sizes->fb_width, in mgag200fb_create()
250 struct mga_fbdev *mfbdev) in mga_fbdev_destroy() argument
253 struct mga_framebuffer *mfb = &mfbdev->mfb; in mga_fbdev_destroy()
255 if (mfbdev->helper.fbdev) { in mga_fbdev_destroy()
256 info = mfbdev->helper.fbdev; in mga_fbdev_destroy()
268 drm_fb_helper_fini(&mfbdev->helper); in mga_fbdev_destroy()
269 vfree(mfbdev->sysram); in mga_fbdev_destroy()
284 struct mga_fbdev *mfbdev; in mgag200_fbdev_init() local
292 mfbdev = devm_kzalloc(mdev->dev->dev, sizeof(struct mga_fbdev), GFP_KERNEL); in mgag200_fbdev_init()
293 if (!mfbdev) in mgag200_fbdev_init()
296 mdev->mfbdev = mfbdev; in mgag200_fbdev_init()
297 spin_lock_init(&mfbdev->dirty_lock); in mgag200_fbdev_init()
299 drm_fb_helper_prepare(mdev->dev, &mfbdev->helper, &mga_fb_helper_funcs); in mgag200_fbdev_init()
301 ret = drm_fb_helper_init(mdev->dev, &mfbdev->helper, in mgag200_fbdev_init()
306 ret = drm_fb_helper_single_add_all_connectors(&mfbdev->helper); in mgag200_fbdev_init()
313 ret = drm_fb_helper_initial_config(&mfbdev->helper, bpp_sel); in mgag200_fbdev_init()
320 drm_fb_helper_fini(&mfbdev->helper); in mgag200_fbdev_init()
326 if (!mdev->mfbdev) in mgag200_fbdev_fini()
329 mga_fbdev_destroy(mdev->dev, mdev->mfbdev); in mgag200_fbdev_fini()