--- This shouldn't be specially dangerous, but as usual: ---
WARNING: THIS METHOD CAN BE DANGEROUS. DON’T DO ANYTHING IF YOU DO NOT KNOW WHAT YOU DO.
I AM NOT RESPONSIBLE IF YOU TRANSFORM YOUR SPICA INTO A BRICK
EDIT:
Samsung drivers are incompatible with fifth version, because of broken video mode detection. Please stay with fourth version until I work this around.
---
EDIT:
Fifth version (...) of the patch with framebuffer console fixes in 24bpp mode (may also fix screenshot applications) and an option to keep the display powered on system shutdown or driver error. Hopefully this is the final one.
---
EDIT:
Added fourth version of the patch with code cleanup and white space changes ignored (should be more compatible with other kernels). + correct recovery patch (thanks Criminal)
---
EDIT:
Added third version of the patch with double buffering fix. (Complete patch + incremental from v2)
---
EDIT:
Uploaded patch for recovery to take advantages of the fixed driver.
---
EDIT:
Uploaded v2 of the patch with fixed memory allocation to allow dynamic mode switching from 16BPP to 24BPP (which needs 2 times more memory). Sorry for releasing the unfinished one.
---
I have finally found some time to fix the buggy framebuffer driver in our kernel and I can now announce that the task is accomplished!
What's fixed:
- Black screen issue on video mode change. (Now recovery can use 16bpp mode and Android can explicitly request 24bpp mode in gralloc.) - The bug was really idiotic, they took screen width (physical, in millimeters instead of the resolution) and multiplied it by bytes_per_pixel to (what they thought) calculate line length in bytes.
- Driver unloading - no more doubled memory freeing.
- Added an option to Kconfig to disable the boot logo.
- Removed 32bpp mode from Kconfig since it's unsupported by hardware.
- Implemented proper way of disabling the screen (according to the manual).
- Added dithering to 24bpp mode.
- Moved progress bar into Framebuffer #1 - Number of Framebuffers can be now set to 2 to decrease memory usage.
- Boot logo display in 24bpp mode is now ok.
- Framebuffer console works.
The patch (based on LeshaK's kernel, but should apply fine in most cases) is attached to the post.
Recommended kernel settings:
- Advanced options for S3C Framebuffer [y]
- Select BPP(Bits Per Pixel) [16] or [24]
- Number of Framebuffers [2]
- Enable Virtual Screen [n]
- Enable Double Buffering [y]
- Show full screen logo with progress bar [y] or [n]
- Don't disable LCD screen on system shutdown [n]
This is mainly dedicated to our kernel makers, ie. LeshaK, ch33kybutt, Lukiqq, so please wait for them to include the patch.
Full patch (apply to kernel sources without my patch already applied):
framebuffer_v5.patch.gz
Full patch v4 (for compatibility with Samsung 3D drivers):
framebuffer_v4.patch.gz
Incremental patches (apply to kernel sources with previous version of my patch incrementally to update to latest version):
framebuffer_v4_to_v5.patch.gz
framebuffer_v3_to_v4.patch.gz
framebuffer_v2_to_v3.patch.gz
Recovery patch to fix 4 screen issue:
recovery.patch.gz
Bookmarks