summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorQuinn Jensen <quinn.jensen@freescale.com>2007-05-24 18:06:10 -0600
committerQuinn Jensen <quinn.jensen@freescale.com>2007-05-24 18:06:10 -0600
commit40ef418ce90f8721215b06a661c77be2259c113e (patch)
treee2f512e8c22944fa4c3c8eda344d31d27a3e6b15 /arch
parentf232a9dedf080e61fa4d8f8f15b1402895583048 (diff)
CR TLSbo86520: Software workaround for SDMA hardware bug (TLSbo86232)
http://www.bitshrine.org/gpp/linux-2.6.19.2-mx-workaround_for_sdma_chn10_access.patch
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/plat-mxc/sdma/iapi/src/iapiHigh.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/arm/plat-mxc/sdma/iapi/src/iapiHigh.c b/arch/arm/plat-mxc/sdma/iapi/src/iapiHigh.c
index 51f65f43feb7..ef8c00a4f688 100644
--- a/arch/arm/plat-mxc/sdma/iapi/src/iapiHigh.c
+++ b/arch/arm/plat-mxc/sdma/iapi/src/iapiHigh.c
@@ -1789,9 +1789,9 @@ int retvalue = IAPI_SUCCESS; /* Variable to store the results from I.API calls
/* Set Command Channel (Channel Zero) */
SDMA_CHN0ADDR = 0x4050;
- /* Set bits of CONFIG register*/
+ /* Set bits of CONFIG register but with static context switching */
SDMA_H_CONFIG = (config_p->dspdma << 12) | (config_p->rtdobs << 11) |
- (config_p->acr << 4) | (config_p->csm);
+ (config_p->acr << 4) | (0);
/* Send the address for the host channel table to the SDMA*/
SDMA_H_C0PTR = (unsigned long)iapi_Virt2Phys(iapi_CCBHead);
@@ -1799,8 +1799,13 @@ int retvalue = IAPI_SUCCESS; /* Variable to store the results from I.API calls
if(ram_image != NULL)
{
retvalue = iapi_SetScript(cd_p, (void*)ram_image, code_size,
- start_addr);
+ start_addr);
}
+
+ /* Set bits of CONFIG register with given context switching mode */
+ SDMA_H_CONFIG = (config_p->dspdma << 12) | (config_p->rtdobs << 11) |
+ (config_p->acr << 4) | (config_p->csm);
+
#endif
#ifdef DSP
/* Send the address for the host channel table to the SDMA*/
@@ -1810,6 +1815,7 @@ int retvalue = IAPI_SUCCESS; /* Variable to store the results from I.API calls
return retvalue;
}
+
/* ***************************************************************************/
/**High layer interface for starting a channel
*