| 435 | } |
| 436 | |
| 437 | U32 DevFB::ioctl(KThread* thread, U32 request) { |
| 438 | CPU* cpu=thread->cpu; |
| 439 | |
| 440 | switch(request) { |
| 441 | case 0x4600: // FBIOGET_VSCREENINFO |
| 442 | writeVarInfo(thread, IOCTL_ARG1, &fb_var_screeninfo); |
| 443 | break; |
| 444 | case 0x4601: // FBIOPUT_VSCREENINFO |
| 445 | readVarInfo(thread, IOCTL_ARG1, &fb_var_screeninfo); |
| 446 | fbSetupScreen(); |
| 447 | break; |
| 448 | case 0x4602: // FBIOGET_FSCREENINFO |
| 449 | writeFixInfo(thread, IOCTL_ARG1, &fb_fix_screeninfo); |
| 450 | break; |
| 451 | case 0x4604: // FBIOGETCMAP |
| 452 | readCMap(thread, IOCTL_ARG1, &fb_cmap); |
| 453 | break; |
| 454 | case 0x4605: // FBIOPUTCMAP |
| 455 | writeCMap(thread, IOCTL_ARG1, &fb_cmap); |
| 456 | break; |
| 457 | case 0x4606: { // FBIOPAN_DISPLAY |
| 458 | struct fb_var_screeninfo fb; |
| 459 | readVarInfo(thread, IOCTL_ARG1, &fb); |
| 460 | break; |
| 461 | } |
| 462 | case 0x4611: // FBIOBLANK |
| 463 | break; |
| 464 | default: |
| 465 | return -1; |
| 466 | } |
| 467 | return 0; |
| 468 | } |
| 469 | |
| 470 | U32 DevFB::map(KThread* thread, U32 address, U32 len, S32 prot, S32 flags, U64 off) { |
| 471 | if ((flags & K_MAP_FIXED) && address!=fb_fix_screeninfo.smem_start) { |
nothing calls this directly
no test coverage detected