diff options
author | Quinn Jensen <quinn.jensen@freescale.com> | 2007-05-24 18:06:10 -0600 |
---|---|---|
committer | Quinn Jensen <quinn.jensen@freescale.com> | 2007-05-24 18:06:10 -0600 |
commit | 40ef418ce90f8721215b06a661c77be2259c113e (patch) | |
tree | e2f512e8c22944fa4c3c8eda344d31d27a3e6b15 /arch | |
parent | f232a9dedf080e61fa4d8f8f15b1402895583048 (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.c | 12 |
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 * |