Lines Matching +full:0 +full:- +full:576
2 * linux/drivers/video/ps3fb.c -- PS3 GPU frame buffer device
9 * linux/drivers/video/vfb.c -- Virtual frame buffer device
35 #include <asm/cell-regs.h>
47 #define GPU_IOIF (0x0d000000UL)
49 #define GPU_MAX_LINE_LENGTH (65536 - 64)
51 #define GPU_INTR_STATUS_VSYNC_0 0 /* vsync on head A */
58 #define GPU_DRIVER_INFO_VERSION 0x211
144 "480i", 60, 576, 384, 74074, 130, 89, 78, 57, 63, 6,
148 "480p", 60, 576, 384, 37037, 130, 89, 78, 57, 63, 6,
166 /* 576i */
167 "576i", 50, 576, 460, 74074, 142, 83, 97, 63, 63, 5,
170 /* 576p */
171 "576p", 50, 576, 460, 37037, 142, 83, 97, 63, 63, 5,
213 /* 576if */
214 "576if", 50, 720, 576, 74074, 70, 11, 39, 5, 63, 5,
217 /* 576pf */
218 "576pf", 50, 720, 576, 37037, 70, 11, 39, 5, 63, 5,
238 0, FB_VMODE_NONINTERLACED,
261 module_param(ps3fb_mode, int, 0);
272 if (var->xres > vmode->xres || var->yres > vmode->yres || in ps3fb_cmp_mode()
273 var->pixclock > vmode->pixclock || in ps3fb_cmp_mode()
274 var->hsync_len > vmode->hsync_len || in ps3fb_cmp_mode()
275 var->vsync_len > vmode->vsync_len) in ps3fb_cmp_mode()
276 return -1; in ps3fb_cmp_mode()
279 if ((var->vmode & FB_VMODE_MASK) != vmode->vmode) in ps3fb_cmp_mode()
280 return -1; in ps3fb_cmp_mode()
283 xres = max(var->xres, 1U); in ps3fb_cmp_mode()
284 yres = max(var->yres, 1U); in ps3fb_cmp_mode()
287 left_margin = max(var->left_margin, vmode->left_margin); in ps3fb_cmp_mode()
288 right_margin = max(var->right_margin, vmode->right_margin); in ps3fb_cmp_mode()
289 upper_margin = max(var->upper_margin, vmode->upper_margin); in ps3fb_cmp_mode()
290 lower_margin = max(var->lower_margin, vmode->lower_margin); in ps3fb_cmp_mode()
293 dx = ((long)vmode->left_margin + (long)vmode->xres + in ps3fb_cmp_mode()
294 (long)vmode->right_margin) - in ps3fb_cmp_mode()
296 if (dx < 0) in ps3fb_cmp_mode()
297 return -1; in ps3fb_cmp_mode()
299 dy = ((long)vmode->upper_margin + (long)vmode->yres + in ps3fb_cmp_mode()
300 (long)vmode->lower_margin) - in ps3fb_cmp_mode()
302 if (dy < 0) in ps3fb_cmp_mode()
303 return -1; in ps3fb_cmp_mode()
307 return 0; in ps3fb_cmp_mode()
310 return (vmode->xres - xres) * (vmode->yres - yres); in ps3fb_cmp_mode()
315 return &ps3fb_modedb[FIRST_NATIVE_MODE_INDEX + id - 1]; in ps3fb_native_vmode()
326 /* Non-fullscreen broadcast mode */ in ps3fb_vmode()
327 return &ps3fb_modedb[mode - 1]; in ps3fb_vmode()
341 best_id = 0; in ps3fb_find_mode()
344 var->left_margin, var->xres, var->right_margin, in ps3fb_find_mode()
345 var->upper_margin, var->yres, var->lower_margin); in ps3fb_find_mode()
350 __func__, id, vmode->left_margin, vmode->xres, in ps3fb_find_mode()
351 vmode->right_margin, vmode->upper_margin, in ps3fb_find_mode()
352 vmode->yres, vmode->lower_margin, diff); in ps3fb_find_mode()
353 if (diff < 0) in ps3fb_find_mode()
365 return 0; in ps3fb_find_mode()
371 *ddr_line_length = vmode->xres * BPP; in ps3fb_find_mode()
374 if (!var->xres) in ps3fb_find_mode()
375 var->xres = 1; in ps3fb_find_mode()
376 if (!var->yres) in ps3fb_find_mode()
377 var->yres = 1; in ps3fb_find_mode()
380 if (var->xres_virtual < var->xres) in ps3fb_find_mode()
381 var->xres_virtual = var->xres; in ps3fb_find_mode()
382 if (var->yres_virtual < var->yres) in ps3fb_find_mode()
383 var->yres_virtual = var->yres; in ps3fb_find_mode()
386 if (var->left_margin < vmode->left_margin) in ps3fb_find_mode()
387 var->left_margin = vmode->left_margin; in ps3fb_find_mode()
388 if (var->right_margin < vmode->right_margin) in ps3fb_find_mode()
389 var->right_margin = vmode->right_margin; in ps3fb_find_mode()
390 if (var->upper_margin < vmode->upper_margin) in ps3fb_find_mode()
391 var->upper_margin = vmode->upper_margin; in ps3fb_find_mode()
392 if (var->lower_margin < vmode->lower_margin) in ps3fb_find_mode()
393 var->lower_margin = vmode->lower_margin; in ps3fb_find_mode()
396 gap = ((long)vmode->left_margin + (long)vmode->xres + in ps3fb_find_mode()
397 (long)vmode->right_margin) - in ps3fb_find_mode()
398 ((long)var->left_margin + (long)var->xres + in ps3fb_find_mode()
399 (long)var->right_margin); in ps3fb_find_mode()
400 if (gap > 0) { in ps3fb_find_mode()
401 var->left_margin += gap/2; in ps3fb_find_mode()
402 var->right_margin += (gap+1)/2; in ps3fb_find_mode()
404 var->left_margin, var->xres, var->right_margin); in ps3fb_find_mode()
407 gap = ((long)vmode->upper_margin + (long)vmode->yres + in ps3fb_find_mode()
408 (long)vmode->lower_margin) - in ps3fb_find_mode()
409 ((long)var->upper_margin + (long)var->yres + in ps3fb_find_mode()
410 (long)var->lower_margin); in ps3fb_find_mode()
411 if (gap > 0) { in ps3fb_find_mode()
412 var->upper_margin += gap/2; in ps3fb_find_mode()
413 var->lower_margin += (gap+1)/2; in ps3fb_find_mode()
415 var->upper_margin, var->yres, var->lower_margin); in ps3fb_find_mode()
419 var->pixclock = vmode->pixclock; in ps3fb_find_mode()
420 var->hsync_len = vmode->hsync_len; in ps3fb_find_mode()
421 var->vsync_len = vmode->vsync_len; in ps3fb_find_mode()
422 var->sync = vmode->sync; in ps3fb_find_mode()
424 if (ps3_compare_firmware_version(1, 9, 0) >= 0) { in ps3fb_find_mode()
425 *xdr_line_length = GPU_ALIGN_UP(var->xres_virtual * BPP); in ps3fb_find_mode()
431 if (vmode->sync & FB_SYNC_BROADCAST) { in ps3fb_find_mode()
433 if (vmode->xres == var->xres && vmode->yres == var->yres) in ps3fb_find_mode()
467 status = lv1_gpu_display_flip(ps3fb.context_handle, 0, frame_offset); in ps3fb_sync_image()
482 struct ps3fb_par *par = info->par; in ps3fb_sync()
483 int error = 0; in ps3fb_sync()
486 if (frame > par->num_frames - 1) { in ps3fb_sync()
487 dev_dbg(info->device, "%s: invalid frame number (%u)\n", in ps3fb_sync()
489 error = -EINVAL; in ps3fb_sync()
493 xdr_base = frame * par->xdr_frame_size; in ps3fb_sync()
494 ddr_base = frame * par->ddr_frame_size; in ps3fb_sync()
496 ps3fb_sync_image(info->device, ddr_base + par->full_offset, in ps3fb_sync()
497 ddr_base + par->fb_offset, xdr_base + par->pan_offset, in ps3fb_sync()
498 par->width, par->height, par->ddr_line_length, in ps3fb_sync()
499 info->fix.line_length); in ps3fb_sync()
508 return 0; in ps3fb_open()
515 atomic_set(&ps3fb.ext_flip, 0); in ps3fb_release()
517 ps3fb_sync(info, 0); /* single buffer */ in ps3fb_release()
522 return 0; in ps3fb_release()
540 return -EINVAL; in ps3fb_check_var()
543 if (var->xres_virtual > xdr_line_length / BPP) { in ps3fb_check_var()
544 dev_dbg(info->device, in ps3fb_check_var()
546 return -EINVAL; in ps3fb_check_var()
549 if (var->xoffset + var->xres > var->xres_virtual || in ps3fb_check_var()
550 var->yoffset + var->yres > var->yres_virtual) { in ps3fb_check_var()
551 dev_dbg(info->device, "panning out-of-range\n"); in ps3fb_check_var()
552 return -EINVAL; in ps3fb_check_var()
556 if (var->bits_per_pixel > 32 || var->grayscale || in ps3fb_check_var()
557 var->red.offset > 16 || var->green.offset > 8 || in ps3fb_check_var()
558 var->blue.offset > 0 || var->transp.offset > 24 || in ps3fb_check_var()
559 var->red.length > 8 || var->green.length > 8 || in ps3fb_check_var()
560 var->blue.length > 8 || var->transp.length > 8 || in ps3fb_check_var()
561 var->red.msb_right || var->green.msb_right || in ps3fb_check_var()
562 var->blue.msb_right || var->transp.msb_right || var->nonstd) { in ps3fb_check_var()
563 dev_dbg(info->device, "We support ARGB8888 only\n"); in ps3fb_check_var()
564 return -EINVAL; in ps3fb_check_var()
567 var->bits_per_pixel = 32; in ps3fb_check_var()
568 var->red.offset = 16; in ps3fb_check_var()
569 var->green.offset = 8; in ps3fb_check_var()
570 var->blue.offset = 0; in ps3fb_check_var()
571 var->transp.offset = 24; in ps3fb_check_var()
572 var->red.length = 8; in ps3fb_check_var()
573 var->green.length = 8; in ps3fb_check_var()
574 var->blue.length = 8; in ps3fb_check_var()
575 var->transp.length = 8; in ps3fb_check_var()
576 var->red.msb_right = 0; in ps3fb_check_var()
577 var->green.msb_right = 0; in ps3fb_check_var()
578 var->blue.msb_right = 0; in ps3fb_check_var()
579 var->transp.msb_right = 0; in ps3fb_check_var()
582 if (var->rotate) { in ps3fb_check_var()
583 dev_dbg(info->device, "Rotation is not supported\n"); in ps3fb_check_var()
584 return -EINVAL; in ps3fb_check_var()
588 if (var->yres_virtual * xdr_line_length > info->fix.smem_len) { in ps3fb_check_var()
589 dev_dbg(info->device, "Not enough memory\n"); in ps3fb_check_var()
590 return -ENOMEM; in ps3fb_check_var()
593 var->height = -1; in ps3fb_check_var()
594 var->width = -1; in ps3fb_check_var()
596 return 0; in ps3fb_check_var()
605 struct ps3fb_par *par = info->par; in ps3fb_set_par()
611 mode = ps3fb_find_mode(&info->var, &ddr_line_length, &xdr_line_length); in ps3fb_set_par()
613 return -EINVAL; in ps3fb_set_par()
617 info->fix.xpanstep = info->var.xres_virtual > info->var.xres ? 1 : 0; in ps3fb_set_par()
618 info->fix.ypanstep = info->var.yres_virtual > info->var.yres ? 1 : 0; in ps3fb_set_par()
619 info->fix.line_length = xdr_line_length; in ps3fb_set_par()
621 par->ddr_line_length = ddr_line_length; in ps3fb_set_par()
622 par->ddr_frame_size = vmode->yres * ddr_line_length; in ps3fb_set_par()
623 par->xdr_frame_size = info->var.yres_virtual * xdr_line_length; in ps3fb_set_par()
625 par->num_frames = info->fix.smem_len / in ps3fb_set_par()
626 max(par->ddr_frame_size, par->xdr_frame_size); in ps3fb_set_par()
629 par->new_mode_id = (par->new_mode_id & ~PS3AV_MODE_MASK) | mode; in ps3fb_set_par()
631 par->width = info->var.xres; in ps3fb_set_par()
632 par->height = info->var.yres; in ps3fb_set_par()
635 ddr_xoff = info->var.left_margin - vmode->left_margin; in ps3fb_set_par()
636 ddr_yoff = info->var.upper_margin - vmode->upper_margin; in ps3fb_set_par()
639 par->fb_offset = GPU_ALIGN_UP(offset); in ps3fb_set_par()
640 par->full_offset = par->fb_offset - offset; in ps3fb_set_par()
641 par->pan_offset = info->var.yoffset * xdr_line_length + in ps3fb_set_par()
642 info->var.xoffset * BPP; in ps3fb_set_par()
644 if (par->new_mode_id != par->mode_id) { in ps3fb_set_par()
645 if (ps3av_set_video_mode(par->new_mode_id)) { in ps3fb_set_par()
646 par->new_mode_id = par->mode_id; in ps3fb_set_par()
647 return -EINVAL; in ps3fb_set_par()
649 par->mode_id = par->new_mode_id; in ps3fb_set_par()
653 memset(info->screen_buffer, 0, info->fix.smem_len); in ps3fb_set_par()
656 lines = vmode->yres * par->num_frames; in ps3fb_set_par()
657 if (par->full_offset) in ps3fb_set_par()
659 maxlines = info->fix.smem_len / ddr_line_length; in ps3fb_set_par()
660 for (dst = 0; lines; dst += maxlines * ddr_line_length) { in ps3fb_set_par()
662 ps3fb_sync_image(info->device, 0, dst, 0, vmode->xres, l, in ps3fb_set_par()
664 lines -= l; in ps3fb_set_par()
667 return 0; in ps3fb_set_par()
673 * entries in the var structure). Return != 0 for invalid regno.
688 ((u32 *)info->pseudo_palette)[regno] = transp << 24 | red << 16 | in ps3fb_setcolreg()
690 return 0; in ps3fb_setcolreg()
696 struct ps3fb_par *par = info->par; in ps3fb_pan_display()
698 par->pan_offset = var->yoffset * info->fix.line_length + in ps3fb_pan_display()
699 var->xoffset * BPP; in ps3fb_pan_display()
700 return 0; in ps3fb_pan_display()
711 r = vm_iomap_memory(vma, info->fix.smem_start, info->fix.smem_len); in ps3fb_mmap()
713 dev_dbg(info->device, "ps3fb: mmap framebuffer P(%lx)->V(%lx)\n", in ps3fb_mmap()
714 info->fix.smem_start + (vma->vm_pgoff << PAGE_SHIFT), in ps3fb_mmap()
715 vma->vm_start); in ps3fb_mmap()
728 dev_dbg(info->device, "%s: blank:%d\n", __func__, blank); in ps3fb_blank()
740 retval = ps3av_video_mute(0); /* mute off */ in ps3fb_blank()
742 ps3fb.is_blanked = 0; in ps3fb_blank()
750 memset(vblank, 0, sizeof(*vblank)); in ps3fb_get_vblank()
751 vblank->flags = FB_VBLANK_HAVE_VSYNC; in ps3fb_get_vblank()
752 return 0; in ps3fb_get_vblank()
765 return -ETIMEDOUT; in ps3fb_wait_for_vsync()
767 return 0; in ps3fb_wait_for_vsync()
780 int retval = -EFAULT; in ps3fb_ioctl()
786 dev_dbg(info->device, "FBIOGET_VBLANK:\n"); in ps3fb_ioctl()
792 retval = -EFAULT; in ps3fb_ioctl()
799 dev_dbg(info->device, "FBIO_WAITFORVSYNC:\n"); in ps3fb_ioctl()
809 struct ps3fb_par *par = info->par; in ps3fb_ioctl()
818 if (id > 0) in ps3fb_ioctl()
821 dev_dbg(info->device, "PS3FB_IOCTL_SETMODE:%x\n", val); in ps3fb_ioctl()
822 retval = -EINVAL; in ps3fb_ioctl()
825 var = info->var; in ps3fb_ioctl()
830 par->new_mode_id = val; in ps3fb_ioctl()
841 dev_dbg(info->device, "PS3FB_IOCTL_GETMODE:%x\n", val); in ps3fb_ioctl()
843 retval = 0; in ps3fb_ioctl()
848 struct ps3fb_par *par = info->par; in ps3fb_ioctl()
850 dev_dbg(info->device, "PS3FB_IOCTL_SCREENINFO:\n"); in ps3fb_ioctl()
851 res.xres = info->fix.line_length / BPP; in ps3fb_ioctl()
852 res.yres = info->var.yres_virtual; in ps3fb_ioctl()
853 res.xoff = (res.xres - info->var.xres) / 2; in ps3fb_ioctl()
854 res.yoff = (res.yres - info->var.yres) / 2; in ps3fb_ioctl()
855 res.num_frames = par->num_frames; in ps3fb_ioctl()
857 retval = 0; in ps3fb_ioctl()
862 dev_dbg(info->device, "PS3FB_IOCTL_ON:\n"); in ps3fb_ioctl()
864 retval = 0; in ps3fb_ioctl()
868 dev_dbg(info->device, "PS3FB_IOCTL_OFF:\n"); in ps3fb_ioctl()
870 retval = 0; in ps3fb_ioctl()
877 dev_dbg(info->device, "PS3FB_IOCTL_FSEL:%d\n", val); in ps3fb_ioctl()
884 retval = -ENOIOCTLCMD; in ps3fb_ioctl()
899 ps3fb.is_kicked = 0; in ps3fbd()
901 ps3fb_sync(info, 0); /* single buffer */ in ps3fbd()
906 return 0; in ps3fbd()
914 struct display_head *head = &ps3fb.dinfo->display_head[1]; in ps3fb_vsync_interrupt()
925 ps3fb.vblank_count = head->vblank_count; in ps3fb_vsync_interrupt()
969 u64 ddr_lpar = 0; in ps3fb_probe()
970 u64 lpar_dma_control = 0; in ps3fb_probe()
971 u64 lpar_driver_info = 0; in ps3fb_probe()
972 u64 lpar_reports = 0; in ps3fb_probe()
973 u64 lpar_reports_size = 0; in ps3fb_probe()
982 dev_err(&dev->core, "%s: Not enough video memory\n", __func__); in ps3fb_probe()
983 return -ENOMEM; in ps3fb_probe()
988 dev_err(&dev->core, "%s: ps3_open_hv_device failed\n", in ps3fb_probe()
995 dev_dbg(&dev->core, "ps3fb_mode: %d\n", ps3fb_mode); in ps3fb_probe()
997 atomic_set(&ps3fb.f_count, -1); /* fbcon opens ps3fb */ in ps3fb_probe()
998 atomic_set(&ps3fb.ext_flip, 0); /* for flip with vsync */ in ps3fb_probe()
1002 status = lv1_gpu_display_sync(0x0, 0, L1GPU_DISPLAY_SYNC_VSYNC); in ps3fb_probe()
1004 dev_err(&dev->core, "%s: lv1_gpu_display_sync failed: %d\n", in ps3fb_probe()
1006 retval = -ENODEV; in ps3fb_probe()
1011 status = lv1_gpu_display_sync(0x0, 1, L1GPU_DISPLAY_SYNC_VSYNC); in ps3fb_probe()
1013 dev_err(&dev->core, "%s: lv1_gpu_display_sync failed: %d\n", in ps3fb_probe()
1015 retval = -ENODEV; in ps3fb_probe()
1020 max_ps3fb_size = ALIGN(GPU_IOIF, 256*1024*1024) - GPU_IOIF; in ps3fb_probe()
1022 dev_info(&dev->core, "Limiting ps3fb mem size to %lu bytes\n", in ps3fb_probe()
1028 status = lv1_gpu_memory_allocate(ps3fb_videomemory.size, 0, 0, 0, 0, in ps3fb_probe()
1031 dev_err(&dev->core, "%s: lv1_gpu_memory_allocate failed: %d\n", in ps3fb_probe()
1033 retval = -ENOMEM; in ps3fb_probe()
1036 dev_dbg(&dev->core, "ddr:lpar:0x%llx\n", ddr_lpar); in ps3fb_probe()
1038 status = lv1_gpu_context_allocate(ps3fb.memory_handle, 0, in ps3fb_probe()
1043 dev_err(&dev->core, in ps3fb_probe()
1046 retval = -ENOMEM; in ps3fb_probe()
1053 dev_err(&dev->core, "%s: ioremap failed\n", __func__); in ps3fb_probe()
1054 retval = -ENOMEM; in ps3fb_probe()
1059 dev_dbg(&dev->core, "version_driver:%x\n", dinfo->version_driver); in ps3fb_probe()
1060 dev_dbg(&dev->core, "irq outlet:%x\n", dinfo->irq.irq_outlet); in ps3fb_probe()
1061 dev_dbg(&dev->core, "version_gpu: %x memory_size: %x ch: %x " in ps3fb_probe()
1062 "core_freq: %d mem_freq:%d\n", dinfo->version_gpu, in ps3fb_probe()
1063 dinfo->memory_size, dinfo->hardware_channel, in ps3fb_probe()
1064 dinfo->nvcore_frequency/1000000, in ps3fb_probe()
1065 dinfo->memory_frequency/1000000); in ps3fb_probe()
1067 if (dinfo->version_driver != GPU_DRIVER_INFO_VERSION) { in ps3fb_probe()
1068 dev_err(&dev->core, "%s: version_driver err:%x\n", __func__, in ps3fb_probe()
1069 dinfo->version_driver); in ps3fb_probe()
1070 retval = -EINVAL; in ps3fb_probe()
1074 retval = ps3_irq_plug_setup(PS3_BINDING_CPU_ANY, dinfo->irq.irq_outlet, in ps3fb_probe()
1077 dev_err(&dev->core, "%s: ps3_alloc_irq failed %d\n", __func__, in ps3fb_probe()
1083 0, DEVICE_NAME, &dev->core); in ps3fb_probe()
1085 dev_err(&dev->core, "%s: request_irq failed %d\n", __func__, in ps3fb_probe()
1090 dinfo->irq.mask = (1 << GPU_INTR_STATUS_VSYNC_1) | in ps3fb_probe()
1094 memset(ps3fb_videomemory.address, 0, ps3fb_videomemory.size); in ps3fb_probe()
1103 dev_err(&dev->core, "%s: lv1_gpu_context_iomap failed: %d\n", in ps3fb_probe()
1105 retval = -ENXIO; in ps3fb_probe()
1109 dev_dbg(&dev->core, "video:%p ioif:%lx lpar:%llx size:%lx\n", in ps3fb_probe()
1116 dev_err(&dev->core, "%s: lv1_gpu_fb_setup failed: %d\n", in ps3fb_probe()
1118 retval = -ENXIO; in ps3fb_probe()
1122 info = framebuffer_alloc(sizeof(struct ps3fb_par), &dev->core); in ps3fb_probe()
1124 retval = -ENOMEM; in ps3fb_probe()
1128 par = info->par; in ps3fb_probe()
1129 par->mode_id = ~ps3fb_mode; /* != ps3fb_mode, to trigger change */ in ps3fb_probe()
1130 par->new_mode_id = ps3fb_mode; in ps3fb_probe()
1131 par->num_frames = 1; in ps3fb_probe()
1133 info->fbops = &ps3fb_ops; in ps3fb_probe()
1134 info->fix = ps3fb_fix; in ps3fb_probe()
1143 info->screen_buffer = fb_start; in ps3fb_probe()
1144 info->fix.smem_start = __pa(fb_start); in ps3fb_probe()
1145 info->fix.smem_len = ps3fb_videomemory.size - GPU_FB_START; in ps3fb_probe()
1147 info->pseudo_palette = par->pseudo_palette; in ps3fb_probe()
1148 info->flags = FBINFO_READS_FAST | in ps3fb_probe()
1151 retval = fb_alloc_cmap(&info->cmap, 256, 0); in ps3fb_probe()
1152 if (retval < 0) in ps3fb_probe()
1155 if (!fb_find_mode(&info->var, info, mode_option, ps3fb_modedb, in ps3fb_probe()
1157 ps3fb_vmode(par->new_mode_id), 32)) { in ps3fb_probe()
1158 retval = -EINVAL; in ps3fb_probe()
1163 &info->modelist); in ps3fb_probe()
1166 if (retval < 0) in ps3fb_probe()
1171 fb_info(info, "using %u KiB of video memory\n", info->fix.smem_len >> 10); in ps3fb_probe()
1181 return 0; in ps3fb_probe()
1186 fb_dealloc_cmap(&info->cmap); in ps3fb_probe()
1195 free_irq(ps3fb.irq_no, &dev->core); in ps3fb_probe()
1215 dev_dbg(&dev->core, " -> %s:%d\n", __func__, __LINE__); in ps3fb_shutdown()
1218 ps3fb.dinfo->irq.mask = 0; in ps3fb_shutdown()
1226 free_irq(ps3fb.irq_no, &dev->core); in ps3fb_shutdown()
1231 fb_dealloc_cmap(&info->cmap); in ps3fb_shutdown()
1242 dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__); in ps3fb_shutdown()
1260 return 0; in ps3fb_setup()
1264 return -ENXIO; in ps3fb_setup()
1267 return 0; in ps3fb_setup()
1277 ps3fb_mode = simple_strtoul(this_opt + 5, NULL, 0); in ps3fb_setup()
1281 return 0; in ps3fb_setup()
1287 return -ENXIO; in ps3fb_init()
1294 pr_debug(" -> %s:%d\n", __func__, __LINE__); in ps3fb_exit()
1296 pr_debug(" <- %s:%d\n", __func__, __LINE__); in ps3fb_exit()