diff options
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/gma500/accel_2d.c | 2 | ||||
-rw-r--r-- | drivers/staging/gma500/cdv_intel_display.c | 4 | ||||
-rw-r--r-- | drivers/staging/gma500/framebuffer.c | 41 | ||||
-rw-r--r-- | drivers/staging/gma500/mdfld_intel_display.c | 4 | ||||
-rw-r--r-- | drivers/staging/gma500/mrst_crtc.c | 4 | ||||
-rw-r--r-- | drivers/staging/gma500/psb_drv.c | 23 | ||||
-rw-r--r-- | drivers/staging/gma500/psb_intel_display.c | 4 |
7 files changed, 45 insertions, 37 deletions
diff --git a/drivers/staging/gma500/accel_2d.c b/drivers/staging/gma500/accel_2d.c index 114b99a1ce1..b8f78ebbb14 100644 --- a/drivers/staging/gma500/accel_2d.c +++ b/drivers/staging/gma500/accel_2d.c | |||
@@ -253,7 +253,7 @@ static void psbfb_copyarea_accel(struct fb_info *info, | |||
253 | return; | 253 | return; |
254 | 254 | ||
255 | offset = psbfb->gtt->offset; | 255 | offset = psbfb->gtt->offset; |
256 | stride = fb->pitch; | 256 | stride = fb->pitches[0]; |
257 | 257 | ||
258 | switch (fb->depth) { | 258 | switch (fb->depth) { |
259 | case 8: | 259 | case 8: |
diff --git a/drivers/staging/gma500/cdv_intel_display.c b/drivers/staging/gma500/cdv_intel_display.c index 7b97c600eff..c63a32776a9 100644 --- a/drivers/staging/gma500/cdv_intel_display.c +++ b/drivers/staging/gma500/cdv_intel_display.c | |||
@@ -507,9 +507,9 @@ int cdv_intel_pipe_set_base(struct drm_crtc *crtc, | |||
507 | if (ret < 0) | 507 | if (ret < 0) |
508 | goto psb_intel_pipe_set_base_exit; | 508 | goto psb_intel_pipe_set_base_exit; |
509 | start = psbfb->gtt->offset; | 509 | start = psbfb->gtt->offset; |
510 | offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8); | 510 | offset = y * crtc->fb->pitches[0] + x * (crtc->fb->bits_per_pixel / 8); |
511 | 511 | ||
512 | REG_WRITE(dspstride, crtc->fb->pitch); | 512 | REG_WRITE(dspstride, crtc->fb->pitches[0]); |
513 | 513 | ||
514 | dspcntr = REG_READ(dspcntr_reg); | 514 | dspcntr = REG_READ(dspcntr_reg); |
515 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; | 515 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; |
diff --git a/drivers/staging/gma500/framebuffer.c b/drivers/staging/gma500/framebuffer.c index 3f39a37456f..b00761cba14 100644 --- a/drivers/staging/gma500/framebuffer.c +++ b/drivers/staging/gma500/framebuffer.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <drm/drmP.h> | 32 | #include <drm/drmP.h> |
33 | #include <drm/drm.h> | 33 | #include <drm/drm.h> |
34 | #include <drm/drm_crtc.h> | 34 | #include <drm/drm_crtc.h> |
35 | #include <drm/drm_fb_helper.h> | ||
35 | 36 | ||
36 | #include "psb_drv.h" | 37 | #include "psb_drv.h" |
37 | #include "psb_intel_reg.h" | 38 | #include "psb_intel_reg.h" |
@@ -273,14 +274,17 @@ static struct fb_ops psbfb_unaccel_ops = { | |||
273 | */ | 274 | */ |
274 | static int psb_framebuffer_init(struct drm_device *dev, | 275 | static int psb_framebuffer_init(struct drm_device *dev, |
275 | struct psb_framebuffer *fb, | 276 | struct psb_framebuffer *fb, |
276 | struct drm_mode_fb_cmd *mode_cmd, | 277 | struct drm_mode_fb_cmd2 *mode_cmd, |
277 | struct gtt_range *gt) | 278 | struct gtt_range *gt) |
278 | { | 279 | { |
280 | u32 bpp, depth; | ||
279 | int ret; | 281 | int ret; |
280 | 282 | ||
281 | if (mode_cmd->pitch & 63) | 283 | drm_fb_get_bpp_depth(mode_cmd->pixel_format, &depth, &bpp); |
284 | |||
285 | if (mode_cmd->pitches[0] & 63) | ||
282 | return -EINVAL; | 286 | return -EINVAL; |
283 | switch (mode_cmd->bpp) { | 287 | switch (bpp) { |
284 | case 8: | 288 | case 8: |
285 | case 16: | 289 | case 16: |
286 | case 24: | 290 | case 24: |
@@ -313,7 +317,7 @@ static int psb_framebuffer_init(struct drm_device *dev, | |||
313 | 317 | ||
314 | static struct drm_framebuffer *psb_framebuffer_create | 318 | static struct drm_framebuffer *psb_framebuffer_create |
315 | (struct drm_device *dev, | 319 | (struct drm_device *dev, |
316 | struct drm_mode_fb_cmd *mode_cmd, | 320 | struct drm_mode_fb_cmd2 *mode_cmd, |
317 | struct gtt_range *gt) | 321 | struct gtt_range *gt) |
318 | { | 322 | { |
319 | struct psb_framebuffer *fb; | 323 | struct psb_framebuffer *fb; |
@@ -387,27 +391,28 @@ static int psbfb_create(struct psb_fbdev *fbdev, | |||
387 | struct fb_info *info; | 391 | struct fb_info *info; |
388 | struct drm_framebuffer *fb; | 392 | struct drm_framebuffer *fb; |
389 | struct psb_framebuffer *psbfb = &fbdev->pfb; | 393 | struct psb_framebuffer *psbfb = &fbdev->pfb; |
390 | struct drm_mode_fb_cmd mode_cmd; | 394 | struct drm_mode_fb_cmd2 mode_cmd; |
391 | struct device *device = &dev->pdev->dev; | 395 | struct device *device = &dev->pdev->dev; |
392 | int size; | 396 | int size; |
393 | int ret; | 397 | int ret; |
394 | struct gtt_range *backing; | 398 | struct gtt_range *backing; |
395 | int gtt_roll = 1; | 399 | int gtt_roll = 1; |
400 | u32 bpp, depth; | ||
396 | 401 | ||
397 | mode_cmd.width = sizes->surface_width; | 402 | mode_cmd.width = sizes->surface_width; |
398 | mode_cmd.height = sizes->surface_height; | 403 | mode_cmd.height = sizes->surface_height; |
399 | mode_cmd.bpp = sizes->surface_bpp; | 404 | bpp = sizes->surface_bpp; |
400 | 405 | ||
401 | /* No 24bit packed */ | 406 | /* No 24bit packed */ |
402 | if (mode_cmd.bpp == 24) | 407 | if (bpp == 24) |
403 | mode_cmd.bpp = 32; | 408 | bpp = 32; |
404 | 409 | ||
405 | /* Acceleration via the GTT requires pitch to be 4096 byte aligned | 410 | /* Acceleration via the GTT requires pitch to be 4096 byte aligned |
406 | (ie 1024 or 2048 pixels in normal use) */ | 411 | (ie 1024 or 2048 pixels in normal use) */ |
407 | mode_cmd.pitch = ALIGN(mode_cmd.width * ((mode_cmd.bpp + 7) / 8), 4096); | 412 | mode_cmd.pitches[0] = ALIGN(mode_cmd.width * ((bpp + 7) / 8), 4096); |
408 | mode_cmd.depth = sizes->surface_depth; | 413 | depth = sizes->surface_depth; |
409 | 414 | ||
410 | size = mode_cmd.pitch * mode_cmd.height; | 415 | size = mode_cmd.pitches[0] * mode_cmd.height; |
411 | size = ALIGN(size, PAGE_SIZE); | 416 | size = ALIGN(size, PAGE_SIZE); |
412 | 417 | ||
413 | /* Allocate the framebuffer in the GTT with stolen page backing */ | 418 | /* Allocate the framebuffer in the GTT with stolen page backing */ |
@@ -421,10 +426,10 @@ static int psbfb_create(struct psb_fbdev *fbdev, | |||
421 | 426 | ||
422 | gtt_roll = 0; /* Don't use GTT accelerated scrolling */ | 427 | gtt_roll = 0; /* Don't use GTT accelerated scrolling */ |
423 | 428 | ||
424 | mode_cmd.pitch = ALIGN(mode_cmd.width * ((mode_cmd.bpp + 7) / 8), 64); | 429 | mode_cmd.pitches[0] = ALIGN(mode_cmd.width * ((bpp + 7) / 8), 64); |
425 | mode_cmd.depth = sizes->surface_depth; | 430 | depth = sizes->surface_depth; |
426 | 431 | ||
427 | size = mode_cmd.pitch * mode_cmd.height; | 432 | size = mode_cmd.pitches[0] * mode_cmd.height; |
428 | size = ALIGN(size, PAGE_SIZE); | 433 | size = ALIGN(size, PAGE_SIZE); |
429 | 434 | ||
430 | /* Allocate the framebuffer in the GTT with stolen page | 435 | /* Allocate the framebuffer in the GTT with stolen page |
@@ -443,6 +448,8 @@ static int psbfb_create(struct psb_fbdev *fbdev, | |||
443 | } | 448 | } |
444 | info->par = fbdev; | 449 | info->par = fbdev; |
445 | 450 | ||
451 | mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth); | ||
452 | |||
446 | ret = psb_framebuffer_init(dev, psbfb, &mode_cmd, backing); | 453 | ret = psb_framebuffer_init(dev, psbfb, &mode_cmd, backing); |
447 | if (ret) | 454 | if (ret) |
448 | goto out_unref; | 455 | goto out_unref; |
@@ -504,7 +511,7 @@ static int psbfb_create(struct psb_fbdev *fbdev, | |||
504 | info->apertures->ranges[0].size = dev_priv->gtt.stolen_size; | 511 | info->apertures->ranges[0].size = dev_priv->gtt.stolen_size; |
505 | } | 512 | } |
506 | 513 | ||
507 | drm_fb_helper_fill_fix(info, fb->pitch, fb->depth); | 514 | drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth); |
508 | drm_fb_helper_fill_var(info, &fbdev->psb_fb_helper, | 515 | drm_fb_helper_fill_var(info, &fbdev->psb_fb_helper, |
509 | sizes->fb_width, sizes->fb_height); | 516 | sizes->fb_width, sizes->fb_height); |
510 | 517 | ||
@@ -546,7 +553,7 @@ out_err1: | |||
546 | */ | 553 | */ |
547 | static struct drm_framebuffer *psb_user_framebuffer_create | 554 | static struct drm_framebuffer *psb_user_framebuffer_create |
548 | (struct drm_device *dev, struct drm_file *filp, | 555 | (struct drm_device *dev, struct drm_file *filp, |
549 | struct drm_mode_fb_cmd *cmd) | 556 | struct drm_mode_fb_cmd2 *cmd) |
550 | { | 557 | { |
551 | struct gtt_range *r; | 558 | struct gtt_range *r; |
552 | struct drm_gem_object *obj; | 559 | struct drm_gem_object *obj; |
@@ -555,7 +562,7 @@ static struct drm_framebuffer *psb_user_framebuffer_create | |||
555 | * Find the GEM object and thus the gtt range object that is | 562 | * Find the GEM object and thus the gtt range object that is |
556 | * to back this space | 563 | * to back this space |
557 | */ | 564 | */ |
558 | obj = drm_gem_object_lookup(dev, filp, cmd->handle); | 565 | obj = drm_gem_object_lookup(dev, filp, cmd->handles[0]); |
559 | if (obj == NULL) | 566 | if (obj == NULL) |
560 | return ERR_PTR(-ENOENT); | 567 | return ERR_PTR(-ENOENT); |
561 | 568 | ||
diff --git a/drivers/staging/gma500/mdfld_intel_display.c b/drivers/staging/gma500/mdfld_intel_display.c index 8eb827ecc3d..0b37b7b6b02 100644 --- a/drivers/staging/gma500/mdfld_intel_display.c +++ b/drivers/staging/gma500/mdfld_intel_display.c | |||
@@ -390,9 +390,9 @@ int mdfld__intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, struct drm_f | |||
390 | goto psb_intel_pipe_set_base_exit; | 390 | goto psb_intel_pipe_set_base_exit; |
391 | 391 | ||
392 | start = psbfb->gtt->offset; | 392 | start = psbfb->gtt->offset; |
393 | offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8); | 393 | offset = y * crtc->fb->pitches[0] + x * (crtc->fb->bits_per_pixel / 8); |
394 | 394 | ||
395 | REG_WRITE(dspstride, crtc->fb->pitch); | 395 | REG_WRITE(dspstride, crtc->fb->pitches[0]); |
396 | dspcntr = REG_READ(dspcntr_reg); | 396 | dspcntr = REG_READ(dspcntr_reg); |
397 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; | 397 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; |
398 | 398 | ||
diff --git a/drivers/staging/gma500/mrst_crtc.c b/drivers/staging/gma500/mrst_crtc.c index c9311a573c2..980837e37d8 100644 --- a/drivers/staging/gma500/mrst_crtc.c +++ b/drivers/staging/gma500/mrst_crtc.c | |||
@@ -543,9 +543,9 @@ int mrst_pipe_set_base(struct drm_crtc *crtc, | |||
543 | return 0; | 543 | return 0; |
544 | 544 | ||
545 | start = psbfb->gtt->offset; | 545 | start = psbfb->gtt->offset; |
546 | offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8); | 546 | offset = y * crtc->fb->pitches[0] + x * (crtc->fb->bits_per_pixel / 8); |
547 | 547 | ||
548 | REG_WRITE(dspstride, crtc->fb->pitch); | 548 | REG_WRITE(dspstride, crtc->fb->pitches[0]); |
549 | 549 | ||
550 | dspcntr = REG_READ(dspcntr_reg); | 550 | dspcntr = REG_READ(dspcntr_reg); |
551 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; | 551 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; |
diff --git a/drivers/staging/gma500/psb_drv.c b/drivers/staging/gma500/psb_drv.c index 986a04d16ba..95816808f86 100644 --- a/drivers/staging/gma500/psb_drv.c +++ b/drivers/staging/gma500/psb_drv.c | |||
@@ -1151,6 +1151,17 @@ static struct vm_operations_struct psb_gem_vm_ops = { | |||
1151 | .close = drm_gem_vm_close, | 1151 | .close = drm_gem_vm_close, |
1152 | }; | 1152 | }; |
1153 | 1153 | ||
1154 | static const struct file_operations gma500_driver_fops = { | ||
1155 | .owner = THIS_MODULE, | ||
1156 | .open = drm_open, | ||
1157 | .release = drm_release, | ||
1158 | .unlocked_ioctl = psb_unlocked_ioctl, | ||
1159 | .mmap = drm_gem_mmap, | ||
1160 | .poll = drm_poll, | ||
1161 | .fasync = drm_fasync, | ||
1162 | .read = drm_read, | ||
1163 | }; | ||
1164 | |||
1154 | static struct drm_driver driver = { | 1165 | static struct drm_driver driver = { |
1155 | .driver_features = DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | \ | 1166 | .driver_features = DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | \ |
1156 | DRIVER_IRQ_VBL | DRIVER_MODESET | DRIVER_GEM , | 1167 | DRIVER_IRQ_VBL | DRIVER_MODESET | DRIVER_GEM , |
@@ -1179,17 +1190,7 @@ static struct drm_driver driver = { | |||
1179 | .dumb_create = psb_gem_dumb_create, | 1190 | .dumb_create = psb_gem_dumb_create, |
1180 | .dumb_map_offset = psb_gem_dumb_map_gtt, | 1191 | .dumb_map_offset = psb_gem_dumb_map_gtt, |
1181 | .dumb_destroy = psb_gem_dumb_destroy, | 1192 | .dumb_destroy = psb_gem_dumb_destroy, |
1182 | 1193 | .fops = &gma500_driver_fops, | |
1183 | .fops = { | ||
1184 | .owner = THIS_MODULE, | ||
1185 | .open = drm_open, | ||
1186 | .release = drm_release, | ||
1187 | .unlocked_ioctl = psb_unlocked_ioctl, | ||
1188 | .mmap = drm_gem_mmap, | ||
1189 | .poll = drm_poll, | ||
1190 | .fasync = drm_fasync, | ||
1191 | .read = drm_read, | ||
1192 | }, | ||
1193 | .name = DRIVER_NAME, | 1194 | .name = DRIVER_NAME, |
1194 | .desc = DRIVER_DESC, | 1195 | .desc = DRIVER_DESC, |
1195 | .date = PSB_DRM_DRIVER_DATE, | 1196 | .date = PSB_DRM_DRIVER_DATE, |
diff --git a/drivers/staging/gma500/psb_intel_display.c b/drivers/staging/gma500/psb_intel_display.c index caa9d86f26d..85659613ae6 100644 --- a/drivers/staging/gma500/psb_intel_display.c +++ b/drivers/staging/gma500/psb_intel_display.c | |||
@@ -367,9 +367,9 @@ int psb_intel_pipe_set_base(struct drm_crtc *crtc, | |||
367 | goto psb_intel_pipe_set_base_exit; | 367 | goto psb_intel_pipe_set_base_exit; |
368 | start = psbfb->gtt->offset; | 368 | start = psbfb->gtt->offset; |
369 | 369 | ||
370 | offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8); | 370 | offset = y * crtc->fb->pitches[0] + x * (crtc->fb->bits_per_pixel / 8); |
371 | 371 | ||
372 | REG_WRITE(dspstride, crtc->fb->pitch); | 372 | REG_WRITE(dspstride, crtc->fb->pitches[0]); |
373 | 373 | ||
374 | dspcntr = REG_READ(dspcntr_reg); | 374 | dspcntr = REG_READ(dspcntr_reg); |
375 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; | 375 | dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; |