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;