This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Problem initializing OMAP35x Graphics SDK v3.01.00.02 kernel drivers on Angstrom Linux v2.6.29-omap1 / Gumstix Overo platform

Hello,

 

I am struggling with integrating the OMAP35x Graphics SDK v3.01.00.02 into Angstrom Linux v2.6.29-omap1 on Gumstix Overo platform – I am trying to initialize the Linux kernel modules pvrsrvkm, bufferclass_ti, and omaplfb The first problem was that the reported SGX clock speed (110627450) was slightly less than SYS_SGX_CLOCK_SPEED (110666666), so the test at sysutils_linux.c, line 449, forced an attempt to change the clock speed at line 457. This failed with -EINVAL, so the load failed. I fixed this by changing the test to allow speeds .5% less than SYS_SGX_CLOCK_SPEED. However, I now have a failure as shown below.

 

What am I doing wrong? This is really frustrating!

 

Thanks!

 

Scott Wagner


Starting PVR
PVR: PVRCore_Init
PVR: Setting Debug Level = 0x4
PVR_K:(Warning): _SetDispatchTableEntry: There is a gap in the dispatch table between indices 104 and 102 (PVRSRV_BRIDGE_SGX_SCHEDULE_PROCESS_QUEUES) [2811, tmp/work/overo-angstrom-linux-gnueabi/omap3-sgx-modules-1.4.14.2514-r51a/OMAP35x_Graphics_SDK_3_01_00_02/GFX_Linux_KM/services4/srvkm/bridged/bridged_pvr_bridge.c]
PVR_K:(Error): NOTE: Enabling DEBUG_BRIDGE_KM_DISPATCH_TABLE may help debug this issue. [2814, tmp/work/overo-angstrom-linux-gnueabi/omap3-sgx-modules-1.4.14.2514-r51a/OMAP35x_Graphics_SDK_3_01_00_02/GFX_Linux_KM/services4/srvkm/bridged/bridged_pvr_bridge.c]
PVR: PVRSRVDriverProbe(pDevice=bf035e90)
PVR: EnableSystemClocks: Enabling System Clocks
PVR: Setting GPTIMER11 parent to System Clock
PVR: GPTIMER11 clock is 13MHz
PVR: Setting GPTIMER11 mode to posted (currently is non-posted)
PVR: OSUnMapPhysToLin: unmapping 4 bytes from 0xd8088040
PVR: OSUnMapPhysToLin: unmapping 4 bytes from 0xd8088024
PVR: PVRCore_Init: major device 250
PVR: Installing MISR with cookie bf0369b8
PVR: Installing device LISR SGX ISR on IRQ 21 with cookie cfaa54a0
PVR: OSUnMapPhysToLin: unmapping 16384 bytes from 0xd0c30000
PVR_K:(Warning): SysFinalise: Version string: SGX revision = 1.2.1 [410, tmp/work/overo-angstrom-linux-gnueabi/omap3-sgx-modules-1.4.14.2514-r51a/OMAP35x_Graphics_SDK_3_01_00_02/GFX_Linux_KM/services4/system/omap3430/sysconfig.c]
PVR_K:(Warning): (Success) SGXInit: driver DDK (2514) and device DDK (2514) match [1274, tmp/work/overo-angstrom-linux-gnueabi/omap3-sgx-modules-1.4.14.2514-r51a/OMAP35x_Graphics_SDK_3_01_00_02/GFX_Linux_KM/services4/srvkm/devices/sgx/sgxinit.c]
PVR_K:(Error): SGXInit: Mismatch in driver and microkernel build options; extra options present in driver: (0x1) [1287, tmp/work/overo-angstrom-linux-gnueabi/omap3-sgx-modules-1.4.14.2514-r51a/OMAP35x_Graphics_SDK_3_01_00_02/GFX_Linux_KM/services4/srvkm/devices/sgx/sgxinit.c]
PVR_K:(Error): PVRSRVFinaliseSystem: Failed PVRSRVDevInitCompatCheck call (device index: 0) [439, tmp/work/overo-angstrom-linux-gnueabi/omap3-sgx-modules-1.4.14.2514-r51a/OMAP35x_Graphics_SDK_3_01_00_02/GFX_Linux_KM/services4/srvkm/common/pvrsrv.c]
PVR_K:(Error): BridgedDispatchKM: Initialisation failed.  Driver unusable. [3174, tmp/work/overo-angstrom-linux-gnueabi/omap3-sgx-modules-1.4.14.2514-r51a/OMAP35x_Graphics_SDK_3_01_00_02/GFX_Linux_KM/services4/srvkm/bridged/bridged_pvr_bridge.c]

  • >> PVR_K:(Error): SGXInit: Mismatch in driver and microkernel build options; extra options present in driver: (0x1) [1287, tmp/work/overo-angstrom-linux-gnueabi/omap3-sgx-modules-1.4.14.2514-r51a/OMAP35x_Graphics_SDK_3_01_00_02/GFX_Linux_KM/services4/srvkm/devices/sgx/sgxinit.c]
     
    It appears that you are not using the toplevel makefile provided in the SDK. If so, can you ensure that your KM makefile build options match what is present in the SDK release ? Have you changed any power management options, or enabled pdump, or other ?
    Once past this debugging step, use the release mode of the drivers.
  • Thank you, Prabindh, for your response.

    Using your suggestion, I rebuilt everything (using the appropriate Rules.make).  My first attempt to install the resultant kernel modules failed with the same symptoms as mentioned above (the reported SGX clock speed (110627450) was slightly less than SYS_SGX_CLOCK_SPEED (110666666), so the test at sysutils_linux.c, line 449, forced an attempt to change the clock speed at line 457. This failed with -EINVAL, so the load failed.) so I applied my fix:

    --- GFX_Linux_KM.orig/services4/system/omap3430/sysutils_linux.c        2010-04-01 15:51:15.570094464 -0400

    +++ GFX_Linux_KM/services4/system/omap3430/sysutils_linux.c     2010-04-01 15:51:18.882090620 -0400

    @@ -446,7 +446,7 @@

            }


            rate = clk_get_rate(psSysSpecData->psSGX_FCK);

    -       if (rate < SYS_SGX_CLOCK_SPEED) {

    +       if (rate < SYS_SGX_CLOCK_SPEED - (SYS_SGX_CLOCK_SPEED>>8)) {

            lNewRate = clk_round_rate(psSysSpecData->psSGX_FCK, SYS_SGX_CLOCK_SPEED + ONE_MHZ);

            if (lNewRate <= 0)

            {

    Once this was done, the new drivers load OK, and I am able to run the demos successfully.  So, any idea what's going on with the clock speed, and why my hack was needed?
    Thanks for your help!
    -Scott Wagner