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