struct drm_fb_helper_surface_size *sizes)
{
struct drm_mode_fb_cmd2 mode_cmd = {};
- struct intel_framebuffer *fb;
+ struct drm_framebuffer *fb;
+ struct drm_gem_object *obj;
+ int size;
intel_fbdev_fill_mode_cmd(sizes, &mode_cmd);
- fb = intel_fbdev_fb_alloc(display->drm, &mode_cmd);
+ size = mode_cmd.pitches[0] * mode_cmd.height;
+ size = PAGE_ALIGN(size);
+
+ obj = intel_fbdev_fb_bo_create(display->drm, size);
+ if (IS_ERR(obj)) {
+ fb = ERR_CAST(obj);
+ goto err;
+ }
+
+ fb = intel_framebuffer_create(obj,
+ drm_get_format_info(display->drm,
+ mode_cmd.pixel_format,
+ mode_cmd.modifier[0]),
+ &mode_cmd);
+ if (IS_ERR(fb)) {
+ intel_fbdev_fb_bo_destroy(obj);
+ goto err;
+ }
+
+ drm_gem_object_put(obj);
+
+ return to_intel_framebuffer(fb);
+
+err:
+ return ERR_CAST(fb);
- return fb;
}
int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
#include "i915_drv.h"
#include "intel_display_core.h"
#include "intel_display_types.h"
-#include "intel_fb.h"
#include "intel_fbdev_fb.h"
struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size)
drm_gem_object_put(obj);
}
-struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_device *drm,
- struct drm_mode_fb_cmd2 *mode_cmd)
-{
- struct drm_framebuffer *fb;
- struct drm_gem_object *obj;
- int size;
-
- size = mode_cmd->pitches[0] * mode_cmd->height;
- size = PAGE_ALIGN(size);
-
- obj = intel_fbdev_fb_bo_create(drm, size);
- if (IS_ERR(obj)) {
- fb = ERR_CAST(obj);
- goto err;
- }
-
- fb = intel_framebuffer_create(obj,
- drm_get_format_info(drm,
- mode_cmd->pixel_format,
- mode_cmd->modifier[0]),
- mode_cmd);
- if (IS_ERR(fb)) {
- intel_fbdev_fb_bo_destroy(obj);
- goto err;
- }
-
- drm_gem_object_put(obj);
-
- return to_intel_framebuffer(fb);
-err:
- return ERR_CAST(fb);
-}
-
int intel_fbdev_fb_fill_info(struct intel_display *display, struct fb_info *info,
struct drm_gem_object *_obj, struct i915_vma *vma)
{
struct drm_gem_object *intel_fbdev_fb_bo_create(struct drm_device *drm, int size);
void intel_fbdev_fb_bo_destroy(struct drm_gem_object *obj);
-struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_device *drm,
- struct drm_mode_fb_cmd2 *mode_cmd);
int intel_fbdev_fb_fill_info(struct intel_display *display, struct fb_info *info,
struct drm_gem_object *obj, struct i915_vma *vma);
#include "intel_display_core.h"
#include "intel_display_types.h"
-#include "intel_fb.h"
#include "intel_fbdev_fb.h"
#include "xe_bo.h"
#include "xe_ttm_stolen_mgr.h"
xe_bo_unpin_map_no_vm(gem_to_xe_bo(obj));
}
-struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_device *drm,
- struct drm_mode_fb_cmd2 *mode_cmd)
-{
- struct drm_framebuffer *fb;
- struct drm_gem_object *obj;
- int size;
-
- size = mode_cmd->pitches[0] * mode_cmd->height;
- size = PAGE_ALIGN(size);
-
- obj = intel_fbdev_fb_bo_create(drm, size);
- if (IS_ERR(obj)) {
- fb = ERR_CAST(obj);
- goto err;
- }
-
- fb = intel_framebuffer_create(obj,
- drm_get_format_info(drm,
- mode_cmd->pixel_format,
- mode_cmd->modifier[0]),
- mode_cmd);
- if (IS_ERR(fb)) {
- intel_fbdev_fb_bo_destroy(obj);
- goto err;
- }
-
- drm_gem_object_put(obj);
-
- return to_intel_framebuffer(fb);
-
-err:
- return ERR_CAST(fb);
-}
-
int intel_fbdev_fb_fill_info(struct intel_display *display, struct fb_info *info,
struct drm_gem_object *_obj, struct i915_vma *vma)
{