diff options
Diffstat (limited to 'drivers/gpu/drm/emgd/emgd/drm')
-rw-r--r-- | drivers/gpu/drm/emgd/emgd/drm/emgd_crtc.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c | 31 | ||||
-rw-r--r-- | drivers/gpu/drm/emgd/emgd/drm/emgd_fb.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/emgd/emgd/drm/emgd_fbcon.c | 17 |
4 files changed, 36 insertions, 30 deletions
diff --git a/drivers/gpu/drm/emgd/emgd/drm/emgd_crtc.c b/drivers/gpu/drm/emgd/emgd/drm/emgd_crtc.c index 76e02356c1f8..12633d9c8b66 100644 --- a/drivers/gpu/drm/emgd/emgd/drm/emgd_crtc.c +++ b/drivers/gpu/drm/emgd/emgd/drm/emgd_crtc.c @@ -343,11 +343,11 @@ static int emgd_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, plane_fb_info->width = fb->width; plane_fb_info->height = fb->height; - plane_fb_info->screen_pitch = fb->pitch; + plane_fb_info->screen_pitch = fb->pitches[0]; plane_fb_info->flags = 0; plane_fb_info->allocated = 1; plane_fb_info->fb_base_offset = emgd_fb->gtt_offset; - plane_fb_info->visible_offset = (y * fb->pitch) + + plane_fb_info->visible_offset = (y * fb->pitches[0]) + (x * (fb->bits_per_pixel / 8)); @@ -828,7 +828,7 @@ void emgd_flip_worker(struct work_struct *w) /* Rendering complete; program the plane registers */ igd_surface.flags = IGD_SURFACE_DISPLAY; igd_surface.offset = crtc->newfb->gtt_offset; - igd_surface.pitch = crtc->newfb->base.pitch; + igd_surface.pitch = crtc->newfb->base.pitches[0]; igd_surface.width = crtc->newfb->base.width; igd_surface.height = crtc->newfb->base.height; igd_surface.pixel_format = IGD_PF_ARGB32; diff --git a/drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c b/drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c index 92f70a7cf315..4bf32d86c43b 100644 --- a/drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c +++ b/drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c @@ -38,6 +38,8 @@ #include <drm/drm_crtc_helper.h> #include <linux/version.h> #include <linux/device.h> +#include <linux/export.h> +#include <linux/module.h> #include <drm/drm_pciids.h> #include <intelpci.h> #include "drm_emgd_private.h" @@ -163,6 +165,20 @@ MODULE_PARM_DESC(debug_bc_ts, "Debug: Texture Stream"); module_param_named(debug_bc_ts, emgd_debug_flag.hal.buf_class, short, 0600); #endif +static const struct file_operations emgd_driver_fops = { + .owner = THIS_MODULE, + .open = drm_open, + .release = drm_release, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32) + .unlocked_ioctl = drm_ioctl, +#else + .ioctl = drm_ioctl, +#endif + .mmap = emgd_mmap, + .poll = drm_poll, + .fasync = drm_fasync, + .read = drm_read, +}; static struct drm_driver driver; /* TODO: what? */ @@ -2377,20 +2393,7 @@ static struct drm_driver driver = { .get_reg_ofs = drm_core_get_reg_ofs, #endif .ioctls = emgd_ioctl, - .fops = { - .owner = THIS_MODULE, - .open = drm_open, - .release = drm_release, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32) - .unlocked_ioctl = drm_ioctl, -#else - .ioctl = drm_ioctl, -#endif - .mmap = emgd_mmap, - .poll = drm_poll, - .fasync = drm_fasync, - .read = drm_read, - }, + .fops = &emgd_driver_fops, #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) .pci_driver = EMGD_PCI_DRIVER, #endif diff --git a/drivers/gpu/drm/emgd/emgd/drm/emgd_fb.c b/drivers/gpu/drm/emgd/emgd/drm/emgd_fb.c index 6e00b2705739..d75fe814b43b 100644 --- a/drivers/gpu/drm/emgd/emgd/drm/emgd_fb.c +++ b/drivers/gpu/drm/emgd/emgd/drm/emgd_fb.c @@ -110,12 +110,12 @@ static void emgd_fbdev_destroy(drm_emgd_priv_t *priv); */ int emgd_framebuffer_init(struct drm_device *dev, emgd_framebuffer_t *emgd_fb, - struct drm_mode_fb_cmd *mode_cmd, + struct drm_mode_fb_cmd2 *mode_cmd, unsigned long offset); static struct drm_framebuffer *emgd_user_framebuffer_create( struct drm_device *dev, struct drm_file *filp, - struct drm_mode_fb_cmd *r); + struct drm_mode_fb_cmd2 *r); RETURN_PROBE_TYPE emgd_fb_probe(struct drm_device *dev); static int emgd_fb_panic(struct notifier_block *n, unsigned long res, @@ -815,7 +815,7 @@ EXPORT_SYMBOL(emgd_fb_probe); static struct drm_framebuffer *emgd_user_framebuffer_create( struct drm_device *dev, struct drm_file *filp, - struct drm_mode_fb_cmd *mode_cmd) + struct drm_mode_fb_cmd2 *mode_cmd) { emgd_framebuffer_t *emgd_fb; int ret; @@ -830,7 +830,7 @@ static struct drm_framebuffer *emgd_user_framebuffer_create( /* Create a framebuffer instance */ ret = emgd_framebuffer_init(dev, emgd_fb, mode_cmd, - (unsigned long)mode_cmd->handle); + (unsigned long)mode_cmd->handles[0]); if (ret) { EMGD_ERROR("Failed to create framebuffer instance."); /* TODO: Free the allocation at mode_cmd->handle */ @@ -869,7 +869,7 @@ static struct drm_framebuffer *emgd_user_framebuffer_create( */ int emgd_framebuffer_init(struct drm_device *dev, emgd_framebuffer_t *emgd_fb, - struct drm_mode_fb_cmd *mode_cmd, + struct drm_mode_fb_cmd2 *mode_cmd, unsigned long handle) { drm_emgd_priv_t *dev_priv = NULL; @@ -1165,7 +1165,7 @@ static int emgd_fb_create(emgd_fbdev_t *emgd_fbdev, drm_emgd_priv_t *priv = emgd_fbdev->priv; struct drm_device *dev = priv->ddev; struct fb_info *info = NULL; - struct drm_mode_fb_cmd mode_cmd; + struct drm_mode_fb_cmd2 mode_cmd; struct drm_framebuffer *fb = NULL; igd_context_t *context = NULL; int ret; diff --git a/drivers/gpu/drm/emgd/emgd/drm/emgd_fbcon.c b/drivers/gpu/drm/emgd/emgd/drm/emgd_fbcon.c index 5132d334215e..9a075e3fa120 100644 --- a/drivers/gpu/drm/emgd/emgd/drm/emgd_fbcon.c +++ b/drivers/gpu/drm/emgd/emgd/drm/emgd_fbcon.c @@ -36,6 +36,7 @@ #include <drmP.h> #include <drm_crtc_helper.h> #include <linux/vga_switcheroo.h> +#include <linux/export.h> #include "user_config.h" @@ -57,7 +58,7 @@ extern emgd_drm_config_t config_drm; */ extern int emgd_framebuffer_init(struct drm_device *dev, emgd_framebuffer_t *emgd_fb, - struct drm_mode_fb_cmd *mode_cmd, + struct drm_mode_fb_cmd2 *mode_cmd, unsigned long handle); @@ -124,7 +125,7 @@ static void fill_fix(emgd_fbdev_t *emgd_fbdev, struct fb_info *info) info->fix.ywrapstep = 0; info->fix.accel = FB_ACCEL_NONE; info->fix.type_aux = 0; - info->fix.line_length = fb->pitch; + info->fix.line_length = fb->pitches[0]; } @@ -246,7 +247,7 @@ static int alloc_initial_fb(emgd_fbdev_t *emgd_fbdev) igd_context_t *context; int ret; unsigned long size; - struct drm_mode_fb_cmd mode_cmd; + struct drm_mode_fb_cmd2 mode_cmd; EMGD_TRACE_ENTER; @@ -291,12 +292,14 @@ static int alloc_initial_fb(emgd_fbdev_t *emgd_fbdev) /* Initialize emgd_framebuffer_t */ - mode_cmd.handle = EMGD_INITIAL_FRAMEBUFFER; - mode_cmd.pitch = priv->initfb_info.screen_pitch; + mode_cmd.handles[0] = EMGD_INITIAL_FRAMEBUFFER; + mode_cmd.pitches[0] = priv->initfb_info.screen_pitch; mode_cmd.width = priv->initfb_info.width; mode_cmd.height = priv->initfb_info.height; - mode_cmd.bpp = IGD_PF_BPP(priv->initfb_info.pixel_format); - mode_cmd.depth = mode_cmd.bpp; /* Ok for 32bpp, may not work for 16bpp */ + mode_cmd.pixel_format = drm_mode_legacy_fb_format( + IGD_PF_BPP(priv->initfb_info.pixel_format), + IGD_PF_BPP(priv->initfb_info.pixel_format) /* Ok for 32bpp, may not work for 16bpp */ + ); ret = emgd_framebuffer_init(dev, emgd_fbdev->emgd_fb, &mode_cmd, EMGD_INITIAL_FRAMEBUFFER); |