Module Name: src
Committed By: riastradh
Date: Fri Jul 25 12:48:34 UTC 2014
Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon: radeon_fb.c
Log Message:
Forgot this file for radeondrmkmsfb.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c:1.2 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c:1.2 Wed Jul 16 20:59:57 2014
+++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c Fri Jul 25 12:48:34 2014
@@ -37,6 +37,10 @@
#include <linux/vga_switcheroo.h>
+#ifdef __NetBSD__
+#include "radeondrmkmsfb.h"
+#endif
+
/* object hierarchy -
this contains a helper + a radeon fb
the helper contains a pointer to radeon framebuffer baseclass.
@@ -243,12 +247,22 @@ static int radeonfb_create(struct drm_fb
}
(void)memset(rbo->kptr, 0, radeon_bo_size(rbo));
- ret = radeon_genfb_attach(rdev->ddev, helper, sizes, rbo);
- if (ret) {
- DRM_ERROR("failed to attach genfb: %d\n", ret);
+
+ {
+ static const struct radeonfb_attach_args zero_rfa;
+ struct radeonfb_attach_args rfa = zero_rfa;
+
+ rfa.rfa_fb_helper = helper;
+ rfa.rfa_fb_sizes = *sizes;
+ rfa.rfa_fb_ptr = rbo->kptr;
+
+ helper->fbdev = config_found_ia(rdev->ddev->dev, "radeonfbbus", &rfa,
+ NULL);
+ if (helper->fbdev == NULL) {
+ DRM_ERROR("failed to attach genfb\n");
goto out_unref;
}
- helper->genfb_attached = true;
+ }
fb = &rfbdev->rfb.base;
rfbdev->helper.fb = fb;
#else
@@ -346,12 +360,16 @@ static int radeon_fbdev_destroy(struct d
struct fb_info *info;
#endif
struct radeon_framebuffer *rfb = &rfbdev->rfb;
+#ifdef __NetBSD__
+ int ret;
+#endif
#ifdef __NetBSD__
- if (rfbdev->helper.genfb_attached) {
- /* XXX detach genfb for real... */
- (void)config_detach_children(dev->dev, DETACH_FORCE);
- }
+ /* XXX errno NetBSD->Linux */
+ ret = -config_detach(rfbdev->helper.fbdev, DETACH_FORCE);
+ if (ret)
+ DRM_ERROR("failed to detach radeonfb: %d\n", ret);
+ rfbdev->helper.fbdev = NULL;
#else
if (rfbdev->helper.fbdev) {
info = rfbdev->helper.fbdev;