source: svn/newcon3bcm2_21bu/nexus/modules/audio/7552/src/nexus_audio_dsp.c

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 6.1 KB
Line 
1/***************************************************************************
2*     (c)2004-2011 Broadcom Corporation
3
4*  This program is the proprietary software of Broadcom Corporation and/or its licensors,
5*  and may only be used, duplicated, modified or distributed pursuant to the terms and
6*  conditions of a separate, written license agreement executed between you and Broadcom
7*  (an "Authorized License").  Except as set forth in an Authorized License, Broadcom grants
8*  no license (express or implied), right to use, or waiver of any kind with respect to the
9*  Software, and Broadcom expressly reserves all rights in and to the Software and all
10*  intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU
11*  HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY
12*  NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE. 
13*   
14*  Except as expressly set forth in the Authorized License,
15*   
16*  1.     This program, including its structure, sequence and organization, constitutes the valuable trade
17*  secrets of Broadcom, and you shall use all reasonable efforts to protect the confidentiality thereof,
18*  and to use this information only in connection with your use of Broadcom integrated circuit products.
19*   
20*  2.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
21*  AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
22*  WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
23*  THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES
24*  OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE,
25*  LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION
26*  OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF
27*  USE OR PERFORMANCE OF THE SOFTWARE.
28
29*  3.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ITS
30*  LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR
31*  EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO YOUR
32*  USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF
33*  THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT
34*  ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE
35*  LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF
36*  ANY LIMITED REMEDY.
37*
38* $brcm_Workfile: nexus_audio_dsp.c $
39* $brcm_Revision: 2 $
40* $brcm_Date: 11/3/11 6:53p $
41*
42* API Description:
43*   API name: AudioDsp
44*    Specific APIs related to audio DSP control and debug.
45*
46* Revision History:
47*
48* $brcm_Log: /nexus/modules/audio/7422/src/nexus_audio_dsp.c $
49*
50* 2   11/3/11 6:53p jgarrett
51* SW7422-400: Enabling audio debug logs on 40nm APE chips
52*
53* 1   11/2/11 6:26p jgarrett
54* SW7422-400: Adding routines for audio DSP debug
55*
56***************************************************************************/
57
58#include "nexus_audio_module.h"
59
60#define RAAGA_DEBUG_LOG_CHANGES 1
61#include "bdsp_raaga.h"
62
63BDBG_MODULE(nexus_audio_dsp);
64
65NEXUS_Error NEXUS_AudioDsp_GetDebugBuffer(
66    unsigned dspIndex,      /* Ranges from 0 to NEXUS_NUM_AUDIO_DSP-1 */
67    NEXUS_AudioDspDebugType debugType,
68    const void **pBuffer,   /* [out] attr{memory=cached} Pointer to debug data */
69    size_t *pBufferSize     /* [out] size of buffer in bytes */
70    )
71{
72    BERR_Code errCode;
73    void *pDebugBuffer, *pCachedBuffer;
74    size_t bufferSize;
75
76    if ( dspIndex >= NEXUS_NUM_AUDIO_DSP )
77    {
78        return BERR_TRACE(BERR_INVALID_PARAMETER);
79    }
80    if ( debugType >= NEXUS_AudioDspDebugType_eMax )
81    {
82        return BERR_TRACE(BERR_INVALID_PARAMETER);
83    }
84
85    BDBG_ASSERT(NULL != pBuffer);
86    BDBG_ASSERT(NULL != pBufferSize);
87   
88    if ( g_NEXUS_audioModuleData.settings.dspDebugSettings.typeSettings[debugType].enabled == false )
89    {
90        BDBG_ERR(("Debug type %u is not enabled.  Please check the settings in NEXUS_AudioModuleSettings.dspDebugSettings.", debugType));
91        return BERR_TRACE(BERR_INVALID_PARAMETER);
92    }
93
94    errCode = BDSP_Raaga_GetDebugBuffer(g_NEXUS_audioModuleData.dspHandle, (BDSP_Raaga_DebugType)debugType, dspIndex, &pDebugBuffer, &bufferSize);
95    if ( errCode )
96    {
97        return BERR_TRACE(errCode);
98    }
99
100    if ( bufferSize > 0 )
101    {
102        errCode = BMEM_Heap_ConvertAddressToCached(g_pCoreHandles->heap[0], pDebugBuffer, &pCachedBuffer);
103        if ( errCode )
104        {
105            return BERR_TRACE(errCode);
106        }
107   
108        *pBuffer = pCachedBuffer;
109        *pBufferSize = bufferSize;
110
111        BMEM_Heap_FlushCache(g_pCoreHandles->heap[0], pDebugBuffer, bufferSize);
112    }
113    else
114    {
115        *pBuffer = NULL;
116        *pBufferSize = 0;
117
118        /* After all of the core dump has been consumed for the DSP, restart */
119        if ( debugType == NEXUS_AudioDspDebugType_eCoreDump && g_NEXUS_audioModuleData.watchdogDeferred )
120        {
121            /* Restart DSP now */
122            g_NEXUS_audioModuleData.watchdogDeferred = false;
123            NEXUS_AudioDecoder_P_Reset();
124        }
125    }
126
127    return BERR_SUCCESS;
128}
129
130
131NEXUS_Error NEXUS_AudioDsp_DebugReadComplete(
132    unsigned dspIndex,      /* Ranges from 0 to NEXUS_NUM_AUDIO_DSP-1 */
133    NEXUS_AudioDspDebugType debugType,
134    size_t bytesRead        /* Number of bytes consumed from the debug buffer */
135    )
136{
137    BERR_Code errCode;
138
139    if ( dspIndex >= NEXUS_NUM_AUDIO_DSP )
140    {
141        return BERR_TRACE(BERR_INVALID_PARAMETER);
142    }
143    if ( debugType >= NEXUS_AudioDspDebugType_eMax )
144    {
145        return BERR_TRACE(BERR_INVALID_PARAMETER);
146    }
147
148    if ( bytesRead == 0 )
149    {
150        return BERR_SUCCESS;
151    }
152
153    if ( g_NEXUS_audioModuleData.settings.dspDebugSettings.typeSettings[debugType].enabled == false )
154    {
155        BDBG_ERR(("Debug type %u is not enabled.  Please check the settings in NEXUS_AudioModuleSettings.dspDebugSettings.", debugType));
156        return BERR_TRACE(BERR_INVALID_PARAMETER);
157    }
158
159    errCode = BDSP_Raaga_ConsumeDebugData(g_NEXUS_audioModuleData.dspHandle, (BDSP_Raaga_DebugType)debugType, dspIndex, bytesRead);
160    if ( errCode )
161    {
162        return BERR_TRACE(errCode);
163    }
164
165    return BERR_SUCCESS;
166}
167
Note: See TracBrowser for help on using the repository browser.