Hi, guys,

I'm back from my Chines New Year holiday.
As I've told that I have developed CE2.21 and dsplink1.6 for linux 2.6.18
I've got many msgs that ask to try.
I have to say that my release only support samples within the CE 2.21. The demos decode/encode/loopback for dvevm is not supported. Because the codecs from TI versions earlier than 1.10 is not compatible with dsplink 1.50 or later. The result after my test is only less than 5 fps decode with 1.50. System will crash if dsplink 1.51 or later is used.

As many friend have ask to experience the fast boot of new feature of new kernel and new toolchain. I've used several day to crack dsplink1.40. Here is the patch. The toolchain is located at ftp.sdedu.net/temp/david_chan/arm_david_linux.tar.bz2 for a short term. If your guy want to have a try please download ASAP. That's just a temp ftp.
And kernel can be found at TI's website.

Thanks for your focus.

Yours David Chan ( also known as BlackSword.David)

diff -Nur dsplink.orig/gpp/src/api/Linux/drv_api.c dsplink/gpp/src/api/ Linux/drv_api.c --- dsplink.orig/gpp/src/api/Linux/drv_api.c 2007-03-26 18:11:02.000000000 +0800 +++ dsplink/gpp/src/api/Linux/drv_api.c 2009-02-04 21:34:33.000000000 +0800
@@ -223,6 +223,7 @@
             if (DSP_SUCCEEDED (status)) {
                 (*drvObj)->signature = SIGN_DRV ;
                 (*drvObj)->refCount  = 1 ;
+                (*drvObj)->pageSize  = getpagesize();
             }
             else {
                 (*drvObj)->signature = SIGN_NULL ;
@@ -293,6 +294,7 @@
             osStatus = close (drvObj->driverHandle) ;

             drvObj->signature = SIGN_NULL ;
+            drvObj->pageSize = 0;
             free (drvObj) ;
             drvObj = NULL ;

@@ -539,8 +541,8 @@
                      *  Align the physical address to page boundary
* --------------------------------------------------------
                      */
-                    size = size + (addr % PAGE_SIZE) ;
-                    addr = addr - (addr % PAGE_SIZE) ;
+                    size = size + (addr % drvObj->pageSize) ;
+                    addr = addr - (addr % drvObj->pageSize) ;

                     userAddr = (Uint32) mmap (
                                  NULL,
@@ -567,7 +569,7 @@
* ----------------------------------------------------
                          */
                         mapInfo->userAddr =  userAddr
- + (mapInfo->physAddr % PAGE_SIZE) ; + + (mapInfo->physAddr % drvObj->pageSize) ;
                     }
                 }
             }
@@ -587,8 +589,8 @@
                  *  page boundary aligned.
* ------------------------------------------------------------
                  */
-                size = size + (addr % PAGE_SIZE) ;
-                addr = addr - (addr % PAGE_SIZE) ;
+                size = size + (addr % drvObj->pageSize) ;
+                addr = addr - (addr % drvObj->pageSize) ;
                 munmap ((Void *)addr, size) ;
                 args->apiStatus = DSP_SOK ;
             }
@@ -618,8 +620,8 @@
                      *  Align the physical address to page boundary
* --------------------------------------------------------
                      */
-                    size = size + (addr % PAGE_SIZE) ;
-                    addr = addr - (addr % PAGE_SIZE) ;
+                    size = size + (addr % drvObj->pageSize) ;
+                    addr = addr - (addr % drvObj->pageSize) ;

                     userAddr = (Uint32) mmap (
                                  NULL,
@@ -646,7 +648,7 @@
* ----------------------------------------------------
                          */
                         mapInfo->userAddr =  userAddr
- + (mapInfo->physAddr % PAGE_SIZE) ; + + (mapInfo->physAddr % drvObj->pageSize) ;
                     }
                 }
             }
@@ -666,8 +668,8 @@
                  *  page boundary aligned.
* --------------------------------------------------------
                  */
-                size = size + (addr % PAGE_SIZE) ;
-                addr = addr - (addr % PAGE_SIZE) ;
+                size = size + (addr % drvObj->pageSize) ;
+                addr = addr - (addr % drvObj->pageSize) ;
                 munmap ((Void *)addr, size) ;
                 args->apiStatus = DSP_SOK ;
             }
@@ -802,8 +804,8 @@
* Align the physical address to page boundary * --------------------------------------------
                                  */
-                                size = size + (addr % PAGE_SIZE) ;
-                                addr = addr - (addr % PAGE_SIZE) ;
+ size = size + (addr % drvObj- >pageSize) ; + addr = addr - (addr % drvObj- >pageSize) ;

                                 userAddr = (Uint32) mmap (
                                              NULL,
@@ -824,7 +826,7 @@
                                 else {
                                     userAddr =   userAddr
+ ( mapInfo- >mappedAddr
-                                                  % PAGE_SIZE) ;
+                                                  % drvObj->pageSize) ;
                                     mapInfo->mappedAddr = userAddr ;
                                 }
                             }
@@ -837,8 +839,8 @@
args- >apiArgs.procControlArgs.arg ;
                                 addr = mapInfo->mappedAddr ;
                                 size = mapInfo->mappedSize ;
-                                size = size + (addr % PAGE_SIZE) ;
-                                addr = addr - (addr % PAGE_SIZE) ;
+ size = size + (addr % drvObj- >pageSize) ; + addr = addr - (addr % drvObj- >pageSize) ;

                                 munmap ((Void *) addr, size) ;
                             }
@@ -907,12 +909,12 @@
args- >apiArgs.probeInitializeArgs.rtcPhysAddr ;

                         /* Align to the beginning of the page */
-                        rtcOffset = rtcPhysAddr % PAGE_SIZE ;
+                        rtcOffset = rtcPhysAddr % drvObj->pageSize ;
                         rtcPagePhysAddr = rtcPhysAddr - rtcOffset ;

                         /* Map the RTC timer address to user space. */
                         rtcPageUserAddr = (Uint32) mmap (NULL,
-                                                       PAGE_SIZE,
+ drvObj- >pageSize, PROT_READ | PROT_WRITE,
                                                        MAP_SHARED,
DRV_handle- >driverHandle,
@@ -945,7 +947,7 @@

                 osStatus = munmap (
(Void *) args- >apiArgs.probeFinalizeArgs.rtcPageUserAddr,
-                                PAGE_SIZE) ;
+                                drvObj->pageSize) ;
                 if (osStatus < 0) {
                     status = DSP_EFAIL ;
                     SET_FAILURE_REASON ;
@@ -1040,8 +1042,8 @@
                      *  Align the physical address to page boundary
* --------------------------------------------------------
                      */
-                    size = size + (addr % PAGE_SIZE) ;
-                    addr = addr - (addr % PAGE_SIZE) ;
+                    size = size + (addr % drvObj->pageSize) ;
+                    addr = addr - (addr % drvObj->pageSize) ;

                     userAddr = (Uint32) mmap (NULL,
                                               size,
@@ -1064,7 +1066,7 @@
* ----------------------------------------------------
                          */
                         userAddr =    userAddr
- + (retParams->physAddr % PAGE_SIZE) ; + + (retParams->physAddr % drvObj- >pageSize) ;

                         poolId = args->apiArgs.poolOpenArgs.poolId ;

@@ -1104,8 +1106,8 @@
                      *  page boundary aligned.
* --------------------------------------------------------
                      */
-                    size = size + (addr % PAGE_SIZE) ;
-                    addr = addr - (addr % PAGE_SIZE) ;
+                    size = size + (addr % drvObj->pageSize) ;
+                    addr = addr - (addr % drvObj->pageSize) ;

/** -------------------------------------------------------- * Unmap the memory block from user address space.
@@ -1177,8 +1179,8 @@
                      *  Align the physical address to page boundary
* --------------------------------------------------------
                      */
-                    size = size + (addr % PAGE_SIZE) ;
-                    addr = addr - (addr % PAGE_SIZE) ;
+                    size = size + (addr % drvObj->pageSize) ;
+                    addr = addr - (addr % drvObj->pageSize) ;

                     userAddr = (Uint32) mmap (
                                  NULL,
@@ -1205,7 +1207,7 @@
* ----------------------------------------------------
                          */
                         mapInfo->userAddr =  userAddr
- + (mapInfo->physAddr % PAGE_SIZE) ; + + (mapInfo->physAddr % drvObj->pageSize) ;
                     }
                 }
             }
@@ -1225,8 +1227,8 @@
                  *  page boundary aligned.
* ------------------------------------------------------------
                  */
-                size = size + (addr % PAGE_SIZE) ;
-                addr = addr - (addr % PAGE_SIZE) ;
+                size = size + (addr % drvObj->pageSize) ;
+                addr = addr - (addr % drvObj->pageSize) ;
                 munmap ((Void *)addr, size) ;
             }
             break ;
diff -Nur dsplink.orig/gpp/src/api/Linux/drv_api.h dsplink/gpp/src/api/ Linux/drv_api.h --- dsplink.orig/gpp/src/api/Linux/drv_api.h 2007-03-26 18:11:02.000000000 +0800 +++ dsplink/gpp/src/api/Linux/drv_api.h 2009-02-04 21:23:53.000000000 +0800
@@ -45,6 +45,7 @@
     Uint32   signature    ;
     Int32    driverHandle ;
     Uint32   refCount     ;
+    Int32    pageSize     ;
 } DRV_Object ;


diff -Nur dsplink.orig/gpp/src/api/_ringio.c dsplink/gpp/src/api/ _ringio.c --- dsplink.orig/gpp/src/api/_ringio.c 2007-03-26 18:11:03.000000000 +0800
+++ dsplink/gpp/src/api/_ringio.c       2009-02-04 23:00:48.000000000 +0800
@@ -2013,7 +2013,7 @@
     RingIO_ControlHandle control = NULL ;
     Uint32               entryId ;

-    TRC_2ENTER ("_RingIO_releaseAttribute", client, attr) ;
+    TRC_2ENTER ("_RingIO_releaseAttribute", client, attrBuf) ;

     DBC_Require (client != NULL) ;
     DBC_Require (attrBuf   != NULL) ;
diff -Nur dsplink.orig/gpp/src/ldrv/HAL/Davinci/hal_object.c dsplink/ gpp/src/ldrv/HAL/Davinci/hal_object.c --- dsplink.orig/gpp/src/ldrv/HAL/Davinci/hal_object.c 2007-03-26 18:11:05.000000000 +0800 +++ dsplink/gpp/src/ldrv/HAL/Davinci/hal_object.c 2009-02-04 21:38:28.000000000 +0800
@@ -17,6 +17,7 @@


 /*  ----------------------------------- DSP/BIOS Link               */
+#include <asm/types.h>
 #include <dsplink.h>
 #include <_dsplink.h>
 #include <procdefs.h>
diff -Nur dsplink.orig/gpp/src/ldrv/HAL/Davinci/hal_rtc.c dsplink/gpp/ src/ldrv/HAL/Davinci/hal_rtc.c --- dsplink.orig/gpp/src/ldrv/HAL/Davinci/hal_rtc.c 2007-03-26 18:11:05.000000000 +0800 +++ dsplink/gpp/src/ldrv/HAL/Davinci/hal_rtc.c 2009-02-04 21:39:08.000000000 +0800
@@ -17,6 +17,7 @@


 /*  ----------------------------------- DSP/BIOS Link               */
+#include <asm/types.h>
 #include <dsplink.h>
 #include <_dsplink.h>

diff -Nur dsplink.orig/gpp/src/ldrv/Linux/Davinci/ldrv_platform.h dsplink/gpp/src/ldrv/Linux/Davinci/ldrv_platform.h --- dsplink.orig/gpp/src/ldrv/Linux/Davinci/ldrv_platform.h 2007-03-26 18:11:04.000000000 +0800 +++ dsplink/gpp/src/ldrv/Linux/Davinci/ldrv_platform.h 2009-02-04 21:40:38.000000000 +0800
@@ -20,6 +20,7 @@


 /*  ----------------------------------- OS Headers                  */
+#include <asm/arch/io.h>
 #include <asm/arch/hardware.h>


diff -Nur dsplink.orig/gpp/src/ldrv/Linux/ldrv_os.c dsplink/gpp/src/ ldrv/Linux/ldrv_os.c --- dsplink.orig/gpp/src/ldrv/Linux/ldrv_os.c 2007-03-26 18:11:05.000000000 +0800 +++ dsplink/gpp/src/ldrv/Linux/ldrv_os.c 2009-02-04 22:54:36.000000000 +0800
@@ -16,6 +16,8 @@


 /*  ----------------------------------- OS headers                  */
+#include <linux/autoconf.h>
+#include <linux/spinlock.h>
 #include <asm/uaccess.h>

 /*  ----------------------------------- DSP/BIOS Link               */
diff -Nur dsplink.orig/gpp/src/osal/Linux/2.6/isr.c dsplink/gpp/src/ osal/Linux/2.6/isr.c --- dsplink.orig/gpp/src/osal/Linux/2.6/isr.c 2007-03-26 18:11:07.000000000 +0800 +++ dsplink/gpp/src/osal/Linux/2.6/isr.c 2009-02-04 22:50:59.000000000 +0800
@@ -16,6 +16,8 @@


 /*  ----------------------------------- OS Specific Headers         */
+#include <linux/autoconf.h>
+#include <linux/spinlock.h>
 #include <linux/sched.h>
 #include <linux/interrupt.h>
 #include <asm/irq.h>
diff -Nur dsplink.orig/gpp/src/osal/Linux/2.6/mem.c dsplink/gpp/src/ osal/Linux/2.6/mem.c --- dsplink.orig/gpp/src/osal/Linux/2.6/mem.c 2007-03-26 18:11:07.000000000 +0800 +++ dsplink/gpp/src/osal/Linux/2.6/mem.c 2009-02-04 22:49:17.000000000 +0800
@@ -14,6 +14,8 @@
* = = = = ========================================================================
  */

+#include <linux/autoconf.h>
+#include <linux/spinlock.h>

 /*  ----------------------------------- OS Specific Headers         */
 #if (defined(DM642_PCI) || defined (DM64LC_PCI))
diff -Nur dsplink.orig/gpp/src/osal/Linux/2.6/notify_knl.c dsplink/gpp/ src/osal/Linux/2.6/notify_knl.c --- dsplink.orig/gpp/src/osal/Linux/2.6/notify_knl.c 2007-03-26 18:11:07.000000000 +0800 +++ dsplink/gpp/src/osal/Linux/2.6/notify_knl.c 2009-02-04 22:52:11.000000000 +0800
@@ -16,6 +16,8 @@


 /*  ----------------------------------- OS Specific Headers         */
+#include <linux/autoconf.h>
+#include <linux/spinlock.h>
 #include <linux/signal.h>
 #include <linux/kernel.h>
 #include <linux/sched.h>
diff -Nur dsplink.orig/gpp/src/osal/Linux/dpc.c dsplink/gpp/src/osal/ Linux/dpc.c --- dsplink.orig/gpp/src/osal/Linux/dpc.c 2007-03-26 18:11:08.000000000 +0800
+++ dsplink/gpp/src/osal/Linux/dpc.c    2009-02-04 22:07:08.000000000 +0800
@@ -16,6 +16,8 @@


 /*  ----------------------------------- OS Specific Headers         */
+#include <linux/autoconf.h>
+#include <linux/spinlock.h>
 #include <linux/sched.h>
 #include <linux/interrupt.h>

diff -Nur dsplink.orig/gpp/src/osal/Linux/kfile.c dsplink/gpp/src/osal/ Linux/kfile.c --- dsplink.orig/gpp/src/osal/Linux/kfile.c 2007-03-26 18:11:08.000000000 +0800 +++ dsplink/gpp/src/osal/Linux/kfile.c 2009-02-05 14:56:52.000000000 +0800
@@ -16,6 +16,8 @@


 /*  ----------------------------------- OS Specific Headers         */
+#include <linux/autoconf.h>
+#include <linux/spinlock.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
 #include <linux/fs.h>
@@ -63,19 +65,6 @@
 #define SET_FAILURE_REASON
 #endif /* if defined (DDSP_DEBUG) */

-/** = = = = ========================================================================
- *  @name   sys_read, sys_lseek, sys_open, sys_close
- *
- * @desc Extern declaration for symbols that will be resolved when this
- *          subcomponent is linked with the kernel.
- * = = = = ========================================================================
- */
-#if (!defined (DM642_PCI) && !defined (DM64LC_PCI))
-extern long  sys_read(int, char *, int);
-extern off_t sys_lseek(int, off_t, int);
-extern long  sys_open(const char *, int, int);
-extern long  sys_close(unsigned int);
-#endif /* if (!defined (DM642_PCI) && !defined (DM64LC_PCI)) */

/** = = = = ========================================================================
  *  @macro  SEEK_SET
@@ -125,11 +114,7 @@
  */
 struct KFileObject_tag {
     Uint32        signature ;
-#if (defined (DM642_PCI) || defined (DM64LC_PCI))
     struct file * fileDesc  ;
-#else /* if (defined (DM642_PCI) || defined (DM64LC_PCI)) */
-    unsigned int  fileDesc  ;
-#endif /* if (defined (DM642_PCI) || defined (DM64LC_PCI)) */
     Pstr          fileName  ;
     Bool          isOpen    ;
     Uint32        size      ;
@@ -214,11 +199,7 @@
 {
     DSP_STATUS    status   = DSP_SOK ;
     Uint32        length   = 0       ;
-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
     struct file * fileDesc = NULL    ;
-#else /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
-    long          fileDesc           ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
     mm_segment_t  fs                 ;

     TRC_3ENTER ("KFILE_Open ()", fileName, mode, fileHandle) ;
@@ -256,7 +237,7 @@

     if (DSP_SUCCEEDED (status)) {
         fs = get_fs () ;
-        set_fs (get_ds ()) ;
+        set_fs (KERNEL_DS) ;

/* --------------------------------------------------------------------
          *  Open the file. Initialize the file object
@@ -264,17 +245,12 @@
          *  The third argument is ignored unless creating files.
* --------------------------------------------------------------------
          */
-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
         fileDesc = filp_open (fileName, O_RDONLY, 0) ;
         if (   (IS_ERR (fileDesc))
             || (fileDesc == NULL)
             || (fileDesc->f_op == NULL)
             || (fileDesc->f_op->read == NULL)
             || (fileDesc->f_op->llseek == NULL)) {
-#else /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
-        fileDesc = sys_open (fileName, O_RDONLY, 0) ;
-        if (fileDesc < 0) {
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
             status = DSP_EFILE ;
             SET_FAILURE_REASON ;
         }
@@ -286,20 +262,12 @@
             (*fileHandle)->curPos    = 0          ;

             /* Get the file size  */
-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
+            fileDesc->f_pos = 0u ;
+
(*fileHandle)->size = fileDesc->f_op->llseek (fileDesc,
                                                                0,
SEEK_END) ;
             fileDesc->f_op->llseek (fileDesc, 0, SEEK_SET) ;
-#else /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
-            fs = get_fs () ;
-            set_fs (get_ds ()) ;
-
- (*fileHandle)->size = sys_lseek (fileDesc, 0, SEEK_END) ;
-            /* Restore file pointer */
-            sys_lseek (fileDesc, 0, SEEK_SET) ;
-            set_fs (fs) ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
         }

/* --------------------------------------------------------------------
@@ -364,12 +332,8 @@
         }
         else {
             fs = get_fs () ;
-            set_fs (get_ds ()) ;
-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
+            set_fs (KERNEL_DS) ;
             filp_close (fileObj->fileDesc, NULL) ;
-#else /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
-            sys_close (fileObj->fileDesc) ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
             set_fs (fs) ;
             fileObj->signature = SIGN_NULL ;
             FREE_PTR (fileObj) ;
@@ -432,16 +396,12 @@
     else if ((size != 0) && (count != 0)) {
         /* read from file */
         fs = get_fs () ;
-        set_fs (get_ds ()) ;
+        set_fs (KERNEL_DS) ;

-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
         bytesRead = fileObj->fileDesc->f_op->read (fileObj->fileDesc,
                                                    buffer,
                                                    size * count,
&(fileObj- >fileDesc->f_pos));
-#else /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
- bytesRead = sys_read (fileObj->fileDesc, buffer, (size * count)) ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
         set_fs (fs) ;

         if (bytesRead >= 0) {
@@ -477,9 +437,7 @@
             IN  KFILE_FileSeek  origin)
 {
     DSP_STATUS    status   = DSP_SOK ;
-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
     struct file * fileDesc = NULL    ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
     mm_segment_t  fs                 ;

     TRC_3ENTER ("KFILE_Seek", fileObj, offset, origin) ;
@@ -504,9 +462,7 @@
         fs = get_fs () ;
         set_fs (get_ds()) ;

-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
         fileDesc = fileObj->fileDesc ; ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
         switch (origin)
         {
         case KFILE_SeekSet:
@@ -516,15 +472,9 @@
                 SET_FAILURE_REASON ;
             }
             else {
-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
                 fileObj->curPos = fileDesc->f_op->llseek (fileDesc,
                                                           offset,
                                                           SEEK_SET) ;
-#else /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
-                fileObj->curPos = sys_lseek (fileObj->fileDesc,
-                                             offset,
-                                             SEEK_SET) ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
             }
             break ;

@@ -535,15 +485,9 @@
                 SET_FAILURE_REASON ;
             }
             else {
-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
                 fileObj->curPos = fileDesc->f_op->llseek (fileDesc,
                                                           offset,
                                                           SEEK_CUR) ;
-#else /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
-                fileObj->curPos = sys_lseek (fileObj->fileDesc,
-                                             offset,
-                                             SEEK_CUR) ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
             }
             break ;

@@ -560,15 +504,9 @@
                 SET_FAILURE_REASON ;
             }
             else {
-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
                 fileObj->curPos = fileDesc->f_op->llseek (fileDesc,
                                                           offset,
                                                           SEEK_END) ;
-#else /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
-                fileObj->curPos = sys_lseek (fileObj->fileDesc,
-                                             offset,
-                                             SEEK_END) ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
             }
             break ;

@@ -602,9 +540,6 @@
             OUT Int32 *       pos)
 {
     DSP_STATUS   status = DSP_SOK ;
-#if (!defined (DM642_PCI) && !defined (DM64LC_PCI))
-    mm_segment_t fs ;
-#endif /* #if !(defined (DM642_PCI) && defined (DM64LC_PCI)) */

     TRC_2ENTER ("KFILE_Tell", fileObj, pos) ;

@@ -627,16 +562,8 @@
         SET_FAILURE_REASON ;
     }
     else {
-#if (defined(DM642_PCI) || defined (DM64LC_PCI))
         *pos = fileObj->curPos ;
         DBC_Assert (*pos == fileObj->fileDesc->f_pos) ;
-#else /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
-        fs = get_fs () ;
-        set_fs (get_ds ()) ;
-        *pos = sys_lseek (fileObj->fileDesc, 0, SEEK_CUR) ;
-        set_fs (fs) ;
-        DBC_Assert (*pos == fileObj->curPos) ;
-#endif /* #if (defined(DM642_PCI) || defined (DM64LC_PCI)) */
     }

DBC_Ensure ( (DSP_SUCCEEDED (status) && (pos != NULL) && (*pos >= 0)) diff -Nur dsplink.orig/gpp/src/osal/Linux/prcs.c dsplink/gpp/src/osal/ Linux/prcs.c --- dsplink.orig/gpp/src/osal/Linux/prcs.c 2007-03-26 18:11:08.000000000 +0800 +++ dsplink/gpp/src/osal/Linux/prcs.c 2009-02-04 21:47:28.000000000 +0800
@@ -16,6 +16,8 @@


 /*  ----------------------------------- OS Specific Headers         */
+#include <linux/autoconf.h>
+#include <linux/spinlock.h>
 #include <linux/module.h>
 #include <linux/mm.h>

diff -Nur dsplink.orig/gpp/src/osal/Linux/sync.c dsplink/gpp/src/osal/ Linux/sync.c --- dsplink.orig/gpp/src/osal/Linux/sync.c 2007-03-26 18:11:08.000000000 +0800 +++ dsplink/gpp/src/osal/Linux/sync.c 2009-02-04 22:43:09.000000000 +0800
@@ -16,6 +16,8 @@


 /*  ----------------------------------- OS Specific Headers         */
+#include <linux/autoconf.h>
+#include <linux/spinlock.h>
 #include <asm/semaphore.h>
 #include <linux/timer.h>
 #include <linux/sched.h>
@@ -1114,7 +1116,8 @@
     }
     else {
         obj = (SYNC_SpinLockObject *) spinLockHandle ;
-        obj->lock = SPIN_LOCK_UNLOCKED ;
+//        obj->lock = SPIN_LOCK_UNLOCKED ;
+        spin_lock_init(&obj->lock);
         obj->irqFlags = 0 ;
     }

Binary files dsplink.orig/gpp/src/osal/Linux/.sync.c.swp and dsplink/ gpp/src/osal/Linux/.sync.c.swp differ diff -Nur dsplink.orig/gpp/src/pmgr/Linux/2.6/drv_pmgr.c dsplink/gpp/ src/pmgr/Linux/2.6/drv_pmgr.c --- dsplink.orig/gpp/src/pmgr/Linux/2.6/drv_pmgr.c 2007-03-26 18:11:09.000000000 +0800 +++ dsplink/gpp/src/pmgr/Linux/2.6/drv_pmgr.c 2009-02-05 00:03:47.000000000 +0800
@@ -23,6 +23,8 @@
 #endif

 /*  ----------------------------------- OS Specific Headers         */
+#include <linux/autoconf.h>
+#include <linux/spinlock.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/fs.h>
@@ -71,7 +73,7 @@
 #include <mem.h>
 #include <mem_os.h>
 #include <prcs.h>
-#include <drv_api.h>
+//#include <drv_api.h>
 #if defined (NOTIFY_COMPONENT)
 #include <notify_knl.h>
 #endif /* #if defined (NOTIFY_COMPONENT) */
@@ -139,10 +141,11 @@
 EXPORT_SYMBOL(IPS_notify);
 EXPORT_SYMBOL(IPS_unregister);

-
+#if defined (CONFIG_PREEMPT_RT)
 #if CONFIG_PREEMPT_RT == 1
#error Realtime preemption is not supported with this version of DSP/ BIOS Link
 #endif
+#endif /* defined (CONFIG_PREEMPT_RT) */


 #if defined (__cplusplus)
@@ -903,7 +906,9 @@
  *          to the kernel.
* = = = = ========================================================================
  */
-MODULE_LICENSE ("DSP/BIOS(TM) LINK") ;
+MODULE_LICENSE ("Dual BSD/GPL") ;
+MODULE_DESCRIPTION("DSP/BIOS(TM) LINK, Patched by [email protected] ");
+MODULE_AUTHOR ("Texas Instruments, Inc.");
 module_init (DRV_InitializeModule) ;
 module_exit (DRV_FinalizeModule) ;

diff -Nur dsplink.orig/make/DspBios/c64xxp_5.xx_linux.mk dsplink/make/ DspBios/c64xxp_5.xx_linux.mk --- dsplink.orig/make/DspBios/c64xxp_5.xx_linux.mk 2007-03-26 18:12:00.000000000 +0800 +++ dsplink/make/DspBios/c64xxp_5.xx_linux.mk 2009-02-05 22:43:19.000000000 +0800
@@ -35,8 +35,9 @@
# ----------------------------------------------------------------------------
 #   Base directory for the DSP OS
# ----------------------------------------------------------------------------
-BASE_INSTALL    := /opt/ti-tools
-BASE_SABIOS     := $(BASE_INSTALL)/bios
+DVSDK_INSTALL  := $(HOME)/dvsdk_1_40_02_33
+BASE_INSTALL    := $(DVSDK_INSTALL)
+BASE_SABIOS     := $(BASE_INSTALL)/bios_5_32_04
 BASE_BUILDOS    := $(BASE_SABIOS)/packages/ti/bios

# ----------------------------------------------------------------------------
@@ -47,7 +48,7 @@
# ----------------------------------------------------------------------------
 #   Base for code generation tools - compiler, linker, archiver etc.
# ----------------------------------------------------------------------------
-BASE_CGTOOLS    := $(BASE_INSTALL)/c6000/cgtools
+BASE_CGTOOLS    := $(BASE_INSTALL)/cg6x_6_0_21
 BASE_CGTOOLSBIN := $(BASE_CGTOOLS)/bin

# ---------------------------------------------------------------------------- diff -Nur dsplink.orig/make/Linux/Davinci/link.mk dsplink/make/Linux/ Davinci/link.mk --- dsplink.orig/make/Linux/Davinci/link.mk 2007-03-26 18:11:59.000000000 +0800 +++ dsplink/make/Linux/Davinci/link.mk 2009-02-05 22:27:23.000000000 +0800
@@ -442,9 +442,27 @@
$(CMDECHO)$(CMD_LINK) $(LD_SW_OUT)$(DRIVER_DEB) $(foreach dir, $ (ARGS_ARCH_DEB), $(wildcard $(dir)/*.o)) $(USR_LIBS_DEB) $(CMDECHO)$(DISPLAY) Post processing kernel module $(basename $ (basename $@))...
        $(CMD_MODPOST) $(DRIVER_DEB)
+
+ifeq ("$(GPPOSVERSION)", "2.4")
+
$(CMDECHO)$(COMPILER) $(CC_SW_DEB) $(STD_CC_FLAGS) $(USR_CC_FLAGS) $ (STD_CC_DEFNS) \ $(USR_CC_DEFNS) -DDDSP_DEBUG -DKBUILD_BASENAME=$(basename $ (basename $@)) \
                 -c -o $(MOD_FILE_DEBOBJ) $(MOD_FILE_DEB)
+else
+       $(CMDECHO) echo "#include <linux/autoconf.h>" >$$.tmp
+       $(CMDECHO) echo "#include <linux/spinlock.h>" >>$$.tmp
+       $(CMDECHO) cat $(MOD_FILE_DEB) >> $$.tmp
+       $(CMDECHO) cat $$.tmp > $(MOD_FILE_DEB)
+       $(CMDECHO) rm -f $$.tmp
+# $(CMDECHO)$(COMPILER) $(CC_SW_DEB) $(STD_CC_FLAGS) $(USR_CC_FLAGS) $ (STD_CC_DEFNS) \ +# $(USR_CC_DEFNS) -DDDSP_DEBUG -DKBUILD_BASENAME=$(basename $ (basename $@)) -D"KBUILD_STR(s)=#s" \
+#               -c -o $(MOD_FILE_DEBOBJ) $(MOD_FILE_DEB)
+ $(CMDECHO)$(COMPILER) $(CC_SW_DEB) $(STD_CC_FLAGS) $(USR_CC_FLAGS) $ (STD_CC_DEFNS) \
+$(USR_CC_DEFNS) \
+                -D"KBUILD_STR(s)=#s" 
-D"KBUILD_BASENAME=KBUILD_STR(dsplinkk.mod)" \
+                -D"KBUILD_MODNAME=KBUILD_STR(dsplinkk)" \
+                -c -o $(MOD_FILE_DEBOBJ) $(MOD_FILE_DEB)
+endif
$(CMDECHO)$(LD) $(STD_AR_FLAGS) $(LD_SW_RELOC) $(LD_SW_OUT) $ (MOD_FILE_DEBKNL) $(DRIVER_DEB) $(MOD_FILE_DEBOBJ)
        $(CMDECHO)$(COPY) $(MOD_FILE_DEBKNL) $(BUILD_EXPORT_DEB)/.

@@ -463,9 +481,26 @@
$(CMDECHO)$(CMD_LINK) $(LD_SW_OUT)$(DRIVER_REL) $(foreach dir, $ (ARGS_ARCH_REL), $(wildcard $(dir)/*.o)) $(USR_LIBS_REL) $(CMDECHO)$(DISPLAY) Post processing kernel module $(basename $ (basename $@))...
        $(CMD_MODPOST) $(DRIVER_REL)
+
+ifeq ("$(GPPOSVERSION)", "2.4")
$(CMDECHO)$(LINKER) $(CC_SW_REL) $(STD_CC_FLAGS) $(USR_CC_FLAGS) $ (STD_CC_DEFNS) \
                 $(USR_CC_DEFNS) -DKBUILD_BASENAME=$(basename $(basename $@)) \
                 -c -o $(MOD_FILE_RELOBJ) $(MOD_FILE_REL)
+else
+       $(CMDECHO) echo "#include <linux/autoconf.h>" >$$.tmp
+       $(CMDECHO) echo "#include <linux/spinlock.h>" >>$$.tmp
+       $(CMDECHO) cat $(MOD_FILE_REL) >> $$.tmp
+       $(CMDECHO) cat $$.tmp > $(MOD_FILE_REL)
+       $(CMDECHO) rm -f $$.tmp
+# $(CMDECHO)$(LINKER) $(CC_SW_REL) $(STD_CC_FLAGS) $(USR_CC_FLAGS) $ (STD_CC_DEFNS) \
+#               $(USR_CC_DEFNS) -DKBUILD_BASENAME=$(basename $(basename $@)) \
+#               -c -o $(MOD_FILE_RELOBJ) $(MOD_FILE_REL)
+ $(CMDECHO)$(LINKER) $(CC_SW_REL) $(STD_CC_FLAGS) $(USR_CC_FLAGS) $ (STD_CC_DEFNS) \
+                $(USR_CC_DEFNS) \
+                -D"KBUILD_STR(s)=#s" 
-D"KBUILD_BASENAME=KBUILD_STR(dsplinkk.mod)" \
+                -D"KBUILD_MODNAME=KBUILD_STR(dsplinkk)" \
+               -c -o $(MOD_FILE_RELOBJ) $(MOD_FILE_REL)
+endif
$(CMDECHO)$(LD) -EL -r -o$(MOD_FILE_RELKNL) $(DRIVER_REL) $ (MOD_FILE_RELOBJ)
        $(CMDECHO)$(COPY) $(MOD_FILE_RELKNL) $(BUILD_EXPORT_REL)/.

diff -Nur dsplink.orig/make/Linux/davinci_mvlpro4.0.mk dsplink/make/ Linux/davinci_mvlpro4.0.mk --- dsplink.orig/make/Linux/davinci_mvlpro4.0.mk 2007-03-26 18:11:59.000000000 +0800 +++ dsplink/make/Linux/davinci_mvlpro4.0.mk 2009-02-04 23:37:44.000000000 +0800
@@ -35,12 +35,17 @@
# ----------------------------------------------------------------------------
 #   Base directory for the GPP OS
# ----------------------------------------------------------------------------
-BASE_BUILDOS    := ${HOME}/montavista/kernel/Linux
+BASE_BUILDOS := ${HOME}/montavista/pro/devkit/lsp/ linux-2.6.18_pro500
+
+# ----------------------------------------------------------------------------
+#   Base for the toolchain
+# ----------------------------------------------------------------------------
+BASE_TOOLCHAIN    := /opt/arm_david_linux

# ----------------------------------------------------------------------------
 #   Base for code generation tools - compiler, linker, archiver etc.
# ----------------------------------------------------------------------------
-BASE_CGTOOLS    := /opt/montavista/pro/devkit/arm/v5t_le/bin
+BASE_CGTOOLS    := $(BASE_TOOLCHAIN)/bin

# ----------------------------------------------------------------------------
 #   Base directory for include files provided by GPP OS
@@ -48,8 +53,8 @@
 BASE_OSINC      := $(BASE_BUILDOS)/include

 OSINC_GENERIC   := $(BASE_OSINC)
-OSINC_PLATFORM := /opt/montavista/pro/devkit/arm/v5t_le/lib/gcc/ armv5tl-montavista-linuxeabi/3.4.3/include -OSINC_TARGET := /opt/montavista/pro/devkit/arm/v5t_le/target/usr/ include +OSINC_PLATFORM := $(BASE_TOOLCHAIN)/lib/gcc/arm-linux-gnueabi/4.2.4/ include
+OSINC_TARGET    := $(BASE_TOOLCHAIN)/target/usr/include

 ifneq ("$(VARIANT)", "")
 OSINC_VARIANT   := $(BASE_OSINC)
@@ -59,7 +64,7 @@
# ----------------------------------------------------------------------------
 #   Base directory for libraries provided by GPP OS
# ----------------------------------------------------------------------------
-BASE_OSLIB      := /opt/montavista/pro/devkit/arm/v5t_le/lib
+BASE_OSLIB      := $(BASE_TOOLCHAIN)/lib

 OSLIB_GENERIC   := $(BASE_OSLIB)
 OSLIB_PLATFORM  := $(BASE_OSLIB)
@@ -77,10 +82,10 @@
# ----------------------------------------------------------------------------
 #   Name of the compiler
# ----------------------------------------------------------------------------
-COMPILER        := $(BASE_CGTOOLS)/arm_v5t_le-gcc
-LD              := $(BASE_CGTOOLS)/arm_v5t_le-ld
+COMPILER        := $(BASE_CGTOOLS)/arm_david_linux-gcc
+LD              := $(BASE_CGTOOLS)/arm_david_linux-ld

-CROSS_COMPILE   := arm_v5t_le-
+CROSS_COMPILE   := arm_david_linux-
 export CROSS_COMPILE

# ----------------------------------------------------------------------------
@@ -120,13 +125,13 @@
# ----------------------------------------------------------------------------
 #   Standard definitions for the compiler
# ----------------------------------------------------------------------------
-STD_CC_DEFNS    :=
+STD_CC_DEFNS    := -D_REENTRANT


# = = = = ========================================================================
 #   ARCHIVER
# = = = = ========================================================================
-ARCHIVER        := $(BASE_CGTOOLS)/arm_v5t_le-ld
+ARCHIVER        := $(BASE_CGTOOLS)/arm_david_linux-ld

# ----------------------------------------------------------------------------
 #   Standard flags for the archiver
@@ -137,7 +142,7 @@
# = = = = ========================================================================
 #   LINKER
# = = = = ========================================================================
-LINKER      := $(BASE_CGTOOLS)/arm_v5t_le-gcc
+LINKER      := $(BASE_CGTOOLS)/arm_david_linux-gcc

# ----------------------------------------------------------------------------
 #   Command line switches used by the linker

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to