| Summary: | psplash: endian problem | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Runtime] System Startup | Reporter: | Yi Zhao <yi.zhao> | ||||
| Component: | system-startup | Assignee: | Juro Bystricky <juro.bystricky> | ||||
| Status: | VERIFIED FIXED | QA Contact: | Yi Zhao <yi.zhao> | ||||
| Severity: | normal | ||||||
| Priority: | Medium | CC: | alexandru.c.georgescu, cristian.iorga, juro.bystricky, ke.zou, kevin.tian, ross.burton, sgw, yi.zhao, zhangle.yang | ||||
| Version: | 1.8 | ||||||
| Target Milestone: | 2.1 | ||||||
| Hardware: | Other | ||||||
| OS: | ppc | ||||||
| Whiteboard: | |||||||
| OS type for building Yocto: | --- | Type of Regression: | Regression (Used to work) | ||||
| Verified: | Documentation change: | No (bug/feature does not impact docs) | |||||
| Attachments: |
|
||||||
|
Description
Yi Zhao
2015-01-23 02:57:23 UTC
Can you verify this against 1.8M1 and/or on the MPC hardware, I think it might be a qemu related bug and want someone else to verify the failure. I saw yellow with both 1.7 and 1.8M1. (In reply to comment #1) > Can you verify this against 1.8M1 and/or on the MPC hardware, I think it > might > be a qemu related bug and want someone else to verify the failure. I saw > yellow with both 1.7 and 1.8M1. Yes. It exists on qemuppc with both 1.7 and 1.8M1. MPC8315 doesn't support fbdev, there is no splash for it. I found there is a similar bug 1469 . Still exists in 1.8 M2 RC2 git rev: master/22c38e2d8a058619e3d05534b5e830b750aa4241 found during 1.8_M4.rc2 testing fido:33558eacc8a2d3dce3396b9ab2fd0773ac5076bc This issue has existed since before 1.8, it seems that this might be a problem within qemu and using 32bit, might be a byte ordering issue. Please find an owner in WR for this
Endian problem in psplash-fb.c, routine "psplash_fb_plot_pixel"
assumes little endian:
.......
if (fb->rgbmode == RGB565 || fb->rgbmode == RGB888) {
case 32:
*(fb->data + off) = blue;
*(fb->data + off + 1) = green;
*(fb->data + off + 2) = red;
break;
....
One way to fix this so it works for both endians:
case 32:
*(volatile uint32_t *) (fb->data + off)
= (red << 16) | (green << 8) | (blue);
break;
Other cases (i.e. 24BPP and BGR888 should be probably also revisited)
Juro, can you submit that as a patch for psplash (I might have commit right there, so can merge that) and a corresponding upgrade to the recipe gitrev? Sent patches to yocto@yoctoproject.org Reopened, because a patch to psplash recipe is still needed. sent recipe patch to mailing list Patch committed http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=ross/mut&id=934e486af64bff391cec85e50668a9c6cf5a8372 Verified with 2.1 M1 git rev: master/5e3e2e0cbb0a49986f4653e64c4c8d2b5461645e |