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;

Reply via email to