Skip to content
steven676 edited this page Aug 23, 2012 · 17 revisions

Table of Contents

JellyBean+3.0

The goal:

  • NookColor (OMAP3 device)
  • 3.0.8 kernel
  • jellybean (CyanogenMod 10 to be specific)
  • everything working :)
Build instructions are here. Note that things are changing quickly and there may be patches or alternative repos/branches for different experimental features, so read below for progress on various components and things that are in flux.

Kernel Progress

Source on keyodi's github.

sluo's latest fixes to dsscomp & new pvr, which allow hwcomposer to semi-work.

The PVR kernel driver update requires different userspace blobs than the ones from TI Rowboat -- "CustomerGoogle_Android_ogles1_ogles2_GPL sgxddk 18 1.8@785978", which only appear to be available for SGX530 via Lenovo IdeaPad A1 ICS releases. This is problematic, because we probably don't have redistribution rights for those blobs.

hwcomposer

Builds, runs with the kernel patches referenced above, but very laggy. Can see what appears to be screen redrawing in stages; is copy from dsscomp composition buffer to screen slow?

Appears to require CustomerGoogle_Android 1.8@785978 PVR drivers. Was tested with the "blaze_android_sgx_ogles1_ogles2_GPL sgxddk 18 1.8@789263" PVR driver and blobs from Rowboat, but did not work (this was with CM9 and hwcomposer sources of unknown provenance, though, so should be repeated at some point).

GL acceleration for UI

Seems to be working after fixes by Krylon360.

Change to frameworks/native/opengl/libs/EGL/Loader.cpp:

 diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp
 index 9ee3686..48f71fd 100644
 --- a/opengl/libs/EGL/Loader.cpp
 +++ b/opengl/libs/EGL/Loader.cpp
 @@ -315,7 +315,12 @@ void *Loader::load_driver(const char* kind, const char *tag,
           */
          const char *cmdline = getProcessCmdline();
          if (strstr(cmdline, "systemui")) {
 -            void *imgegl = dlopen("/vendor/lib/libIMGegl.so", RTLD_LAZY);
 +            char *imgegl_path;
 +            if (access("/vendor/lib/libIMGegl.so", F_OK) == 0) {
 +                imgegl_path = "/vendor/lib/libIMGegl.so";
 +            } else {
 +                imgegl_path = "/system/lib/libIMGegl.so";
 +            }
              if (imgegl) {
                  unsigned int *PVRDefaultPBS =

Changes to frameworks/native/services/surfaceflinger/Android.mk:

--- a/services/surfaceflinger/Android.mk
+++ b/services/surfaceflinger/Android.mk
@@ -20,9 +20,6 @@ LOCAL_SRC_FILES:= \
 LOCAL_CFLAGS:= -DLOG_TAG=\"SurfaceFlinger\"
 LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
 
-ifeq ($(TARGET_BOARD_PLATFORM), omap3)
-       LOCAL_CFLAGS += -DNO_RGBX_8888
-endif
 ifeq ($(TARGET_BOARD_PLATFORM), omap4)
        LOCAL_CFLAGS += -DHAS_CONTEXT_PRIORITY
 endif

hardware accelerated video (OMX)

Krylon360 has hardware accelerated video working for everything except for Netflix. He needed to make some changes, which he will report here.

Changes to get Hardware Accelerated Video working required a pretty extensive overhaul in frameworks/av. Luckly the changes that Quarkx2 did for the Defy worked for us as well with a little modification. Changes consist of changing the OMAP_ENHANCEMENT flag to OMAP_COMPAT; adding in the code four our decoders, as well as a new media_codecs.xml file into our device tree. The OE flag is now only used for OMAP4+; where as the OC flag is compatible with older OMAP Devices. This also required us to use a new hardware/ti/omap3 source. It was with this source; I noticed that we wernt calling the correct path for our OMX headers in both ICS and JB, so the change was made in the BoardConfig.mk to reflect the new path for both ICS and JB.

The new repos are sync'd with upstream's av/base/native every day so they stay up to date. The repos can be found here: Krylon360's GitHub hardware/ti/omap3 jellybean branch. This has to be saved as omap3 in hardware/ti/; frameworks/av nc_jb branch; frameworks/native jellybean branch;

HW UI Accell changes are already worked into the source posted above.

Touchscreen

Both the old hardware (cyttsp) and new hardware (ft5x06) work.

Bluetooth

Works. Uses uim-sysfs and similar method as CM7 etc.

dspexec

builds, runs, works.

Wifi Progress

Current build uses new compat-wifi (and custom repo here) and builds modules from scratch. But still crashes the system on sleep.

sluo has a patch on top of omapzoom hardware/ti/wlan (repository with patch here) which may fix the crash on suspend/resume with wifi. Sending and receiving network traffic is still broken after resume, though.

We may not have been powering the WLAN chip correctly; this patch to the kernel appears to fix wifi randomly failing to come up after a reboot.

Audio

Mostly works with a codec implementation primarily from keyodi and userspace components built by sluo. We have sources for all the userspace components, but are currently using prebuilt blobs; sluo will look into enabling source build of those components at some point.

Audio is broken after a suspend/resume cycle.

misc

  • backlight works
  • accelerometer works

Device changes

Source on fat-tire's github.

  • add hwcomposer.omap3 to device.mk
  • remove liboverlay directory