TI E2E Community
DSPLink fails in Linux 3.1
We are using a custom made board based on a OMAP-L138.
After upgrading Linux kernel to 3.1 from 2.6.37, We are getting problem while trying to use the DSPLink module.
0x8000800c (DSP_EMEMORY) seems to be the error-code, but it should be enough memory.
No changes in either DSPLink (except built for different kerneln versions) or the DSP-application is made. It still works perfect in 2.6.37.
I have tried to set "mem=xxxM" as bootargs to the kernel, but it does not help.
We are using DSPLink v1.65.00.03.
Thanks in advance
Entered PMGR_PROC_setup ()
toSetup : 1
Entered LDRV_moduleInit ()
Entered LDRV_getLinkCfg ()
Entered LDRV_getLinkDspCfg ()
Leaving LDRV_getLinkDspCfg () status [0x8000]
Leaving LDRV_getLinkGppCfg () status [0x8000]
Entered LDRV_PROC_moduleInit ()
Leaving LDRV_PROC_moduleInit () status [0x8000]
Entered LDRV_SMM_moduleInit ()
Leaving LDRV_SMM_moduleInit () status [0x8000]
Entered LDRV_MPCS_moduleInit ()
Entered LDRV_MPCS_OS_moduleInit ()
Leaving LDRV_MPCS_OS_moduleInit () status [0x8000]
Leaving LDRV_MPCS_moduleInit () status [0x8000]
Entered LDRV_MPLIST_moduleInit ()
Leaving LDRV_MPLIST_moduleInit () status [0x8000]
Entered LDRV_RINGIO_moduleInit ()
Leaving LDRV_RINGIO_moduleInit () status [0x8000]
Leaving LDRV_moduleInit () status [0x8000]
Entered PMGR_MSGQ_setup ()
Entered LDRV_MSGQ_setup ()
Leaving LDRV_MSGQ_setup () status [0x8000]
Leaving PMGR_MSGQ_setup () status [0x8000]
Leaving PMGR_PROC_setup () status [0x8000]
Entered PMGR_PROC_attach ()
Entered LDRV_init ()
Leaving LDRV_init () status [0x8000]
Entered LDRV_PROC_init ()
DSP_init status [0x8000800c]
Entered LDRV_PROC_exit ()
Assertion failed (dspState->halObject != NULL). File : /home/developer/projects/dsplink_linux_1_65_00_03/build/gpp/src/../../gpp/src/arch/DA8XXGEM/da8xxgem.c Line : 611
Leaving LDRV_PROC_exit () status [0x8000]
Leaving LDRV_PROC_init () status [0x8000800c]
Entered LDRV_exit ()
Leaving LDRV_exit () status [0x8000]
Leaving PMGR_PROC_attach () status [0x8000800c]
Entered PMGR_MSGQ_close ()
Leaving PMGR_MSGQ_close () status [0x8000800b]
Entered PMGR_PROC_getSetupRefCount ()
Leaving PMGR_PROC_getSetupRefCount ()
Entered PMGR_PROC_destroy ()
Entered PMGR_MSGQ_destroy ()
Entered LDRV_MSGQ_destroy ()
Leaving LDRV_MSGQ_destroy () status [0x8000]
Leaving PMGR_MSGQ_destroy () status [0x8000]
Entered LDRV_moduleExit ()
Entered LDRV_RINGIO_moduleExit ()
Leaving LDRV_RINGIO_moduleExit () status [0x8000]
Entered LDRV_MPLIST_moduleExit ()
Leaving LDRV_MPLIST_moduleExit () status [0x8000]
Entered LDRV_MPCS_moduleExit ()
Entered LDRV_MPCS_OS_moduleExit ()
Leaving LDRV_MPCS_OS_moduleExit () status [0x8000]
Leaving LDRV_MPCS_moduleExit () status [0x8000]
Entered LDRV_SMM_moduleExit ()
Leaving LDRV_SMM_moduleExit () status [0x8000]
Entered LDRV_PROC_moduleExit ()
Leaving LDRV_PROC_moduleExit () status [0x8000]
Entered LDRV_freeLinkDspCfg ()
Leaving LDRV_freeLinkDspCfg () status [0x8000]
Entered LDRV_freeLinkGppCfg ()
Leaving LDRV_freeLinkGppCfg () status [0x8000]
Leaving LDRV_moduleExit () status [0x8000]
Leaving PMGR_PROC_destroy () status [0x8008]
The problem is fixed with an ugly hack...
DSPLink is trying to call ioremap on System memory. This is not allowed in later versions of Linux kernels since it will cause problems on ARMv6+.
This is no problem in out case, so I just removed the check.
Texas Instruments, Is there any DSPLink updates out there that is just waiting to be released?
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
index ab50627..1a0d324 100644
@@ -204,8 +204,8 @@ void __iomem * __arm_ioremap_pfn_caller(unsigned long pfn,
* Don't allow RAM to be mapped - this causes problems with ARMv6+
- if (WARN_ON(pfn_valid(pfn)))
- return NULL;
+ //if (WARN_ON(pfn_valid(pfn)))
+ // return NULL;
type = get_mem_type(mtype);
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.