aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/emgd/emgd/drm
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/emgd/emgd/drm')
-rw-r--r--drivers/gpu/drm/emgd/emgd/drm/emgd_crtc.c6
-rw-r--r--drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c31
-rw-r--r--drivers/gpu/drm/emgd/emgd/drm/emgd_fb.c12
-rw-r--r--drivers/gpu/drm/emgd/emgd/drm/emgd_fbcon.c17
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);