source: svn/newcon3bcm2_21bu/magnum/basemodules/dsp/common/bdsp_task.c @ 26

Last change on this file since 26 was 26, checked in by phkim, 11 years ago
  1. phkim
  2. 서경방소에서 kctv 로고 변경
  • Property svn:executable set to *
File size: 8.9 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2006-2011, Broadcom Corporation
3 *     All Rights Reserved
4 *     Confidential Property of Broadcom Corporation
5 *
6 *  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7 *  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8 *  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9 *
10 * $brcm_Workfile: bdsp_task.c $
11 * $brcm_Revision: Hydra_Software_Devel/5 $
12 * $brcm_Date: 6/15/11 4:20p $
13 *
14 * Module Description: Host DSP Interface
15 *
16 * Revision History:
17 *
18 * $brcm_Log: /magnum/basemodules/dsp/common/bdsp_task.c $
19 *
20 * Hydra_Software_Devel/5   6/15/11 4:20p gautamk
21 * SW7422-357 : [7425] Adding support for new API for getStageInputIndex
22 *
23 * Hydra_Software_Devel/4   6/14/11 3:14p gautamk
24 * SW7422-357 : [7425] Merging to mainline
25 *
26 * Hydra_Software_Devel/3   6/3/11 11:59a srajapur
27 * SW7422-357 : [7425] Added support for MS11
28 *
29 * Hydra_Software_Devel/2   6/2/11 7:56p srajapur
30 * SW7422-358 : [7425] Added support for MS11
31 *
32 * Hydra_Software_Devel/1   4/6/11 2:16p srajapur
33 * SW7425-291: [7425]BDSP directory structure changes
34 *
35 * Hydra_Software_Devel/3   1/13/11 6:00a gautamk
36 * SW7422-191:[7422]Adding DSP support for Audio decode in Basemodule  It
37 * includes - DSP Booting - Open time Download :  - Start Time Audio
38 * Decode algorithm download  - Message buffer interaction with DSP:  -
39 * Synchronized Interrupt:  - Async interrupts:  - Config Commands for
40 * Decode/TSM/IDS: - Status Buffer for Decode/TSM/IDS:  - Start AC3 Audio
41 * Decode:  - Pause/Resume Command:  - Frame Advance command:  - Device
42 * level interrupt
43 *
44 * Hydra_Software_Devel/2   12/15/10 6:47p jgarrett
45 * SW7422-146: Initial compileable prototype
46 *
47 * Hydra_Software_Devel/1   12/15/10 2:00p jgarrett
48 * SW7422-146: Adding initial BDSP files
49 *
50 ***************************************************************************/
51
52#include "bdsp.h"
53#include "bdsp_priv.h"
54
55BDBG_MODULE(bdsp_task);
56
57BDBG_OBJECT_ID(BDSP_TaskStageInput);
58
59
60void BDSP_Task_GetDefaultCreateSettings(
61    BDSP_ContextHandle context,
62    BDSP_TaskCreateSettings *pSettings     /* [out] */
63    )
64{
65    BDBG_OBJECT_ASSERT(context, BDSP_Context);
66    BDBG_ASSERT(NULL != pSettings);
67
68    if ( context->getDefaultTaskSettings ) 
69    {
70        context->getDefaultTaskSettings(context->pContextHandle, pSettings);
71    }
72    else
73    {
74        BKNI_Memset(pSettings, 0, sizeof(*pSettings));
75    }
76}
77
78BERR_Code BDSP_Task_Create(
79    BDSP_ContextHandle context,
80    const BDSP_TaskCreateSettings *pSettings,
81    BDSP_TaskHandle *pTask    /* [out] */
82    )
83{
84    BDBG_OBJECT_ASSERT(context, BDSP_Context);
85    BDBG_ASSERT(NULL != pSettings);
86    BDBG_ASSERT(NULL != pTask);
87
88    if ( context->createTask ) 
89    {
90        return context->createTask(context->pContextHandle, pSettings, pTask);
91    }
92    else
93    {
94        *pTask = NULL;
95        return BERR_TRACE(BERR_NOT_SUPPORTED);
96    }
97}
98
99void BDSP_Task_Destroy(
100    BDSP_TaskHandle task
101    )
102{
103    BDBG_OBJECT_ASSERT(task, BDSP_Task);
104    BDBG_ASSERT(NULL != task->destroy);
105    task->destroy(task->pTaskHandle);
106}
107
108BERR_Code BDSP_Task_Start(
109    BDSP_TaskHandle task
110    )
111{
112    BDBG_OBJECT_ASSERT(task, BDSP_Task);
113    if ( task->start ) 
114    {
115        return task->start(task->pTaskHandle);
116    }
117    else
118    {
119        return BERR_TRACE(BERR_NOT_SUPPORTED);
120    }
121}
122
123BERR_Code BDSP_Task_Stop(
124    BDSP_TaskHandle task
125    )
126{
127    BDBG_OBJECT_ASSERT(task, BDSP_Task);
128    if ( task->stop ) 
129    {
130        return task->stop(task->pTaskHandle);
131    }
132    else
133    {
134        return BERR_TRACE(BERR_NOT_SUPPORTED);
135    }   
136}
137
138BERR_Code BDSP_Task_GetStageSettings(
139    BDSP_TaskHandle task,
140    unsigned branchId,
141    unsigned stageId,
142    void *pSettingsBuffer,        /* [out] */
143    size_t settingsBufferSize
144    )
145{
146    BDBG_OBJECT_ASSERT(task, BDSP_Task);
147    BDBG_ASSERT(NULL != pSettingsBuffer);
148    BDBG_ASSERT(settingsBufferSize > 0);
149
150    if ( task->getStageSettings ) 
151    {
152        return task->getStageSettings(task->pTaskHandle, branchId, stageId, pSettingsBuffer, settingsBufferSize);
153    }
154    else
155    {
156        return BERR_TRACE(BERR_NOT_SUPPORTED);
157    }       
158}
159
160BERR_Code BDSP_Task_SetStageSettings(
161    BDSP_TaskHandle task,
162    unsigned branchId,
163    unsigned stageId,
164    const void *pSettingsBuffer,
165    size_t settingsBufferSize
166    )
167{
168    BDBG_OBJECT_ASSERT(task, BDSP_Task);
169    BDBG_ASSERT(NULL != pSettingsBuffer);
170    BDBG_ASSERT(settingsBufferSize > 0);
171
172    if ( task->setStageSettings ) 
173    {
174        return task->setStageSettings(task->pTaskHandle, branchId, stageId, pSettingsBuffer, settingsBufferSize);
175    }
176    else
177    {
178        return BERR_TRACE(BERR_NOT_SUPPORTED);
179    }       
180}
181
182BERR_Code BDSP_Task_GetStageStatus(
183    BDSP_TaskHandle task,
184    unsigned branchId,
185    unsigned stageId,
186    void *pStatusBuffer,        /* [out] */
187    size_t statusBufferSize
188    )
189{
190    BDBG_OBJECT_ASSERT(task, BDSP_Task);
191    BDBG_ASSERT(NULL != pStatusBuffer);
192    BDBG_ASSERT(statusBufferSize > 0);
193
194    if ( task->getStageStatus ) 
195    {
196        return task->getStageStatus(task->pTaskHandle, branchId, stageId, pStatusBuffer, statusBufferSize);
197    }
198    else
199    {
200        return BERR_TRACE(BERR_NOT_SUPPORTED);
201    }       
202}
203
204BERR_Code BDSP_Task_AddStageInput(
205    BDSP_TaskHandle task,
206    const BDSP_TaskAddStageInputSettings *pSettings,
207    BDSP_TaskStageInputHandle *pHandle /* [out] */
208    )
209{
210    BDBG_OBJECT_ASSERT(task, BDSP_Task);
211    BDBG_ASSERT(NULL != pSettings);   
212    BDBG_ASSERT(NULL != pHandle);       
213    if ( task->addStageInput) 
214    {
215        return task->addStageInput(task->pTaskHandle,pSettings,pHandle);
216    }
217    else
218    {
219        return BERR_TRACE(BERR_NOT_SUPPORTED);
220    }       
221}
222
223BERR_Code BDSP_Task_RemoveStageInput(
224    BDSP_TaskStageInputHandle input
225    )
226{
227    BDBG_OBJECT_ASSERT(input, BDSP_TaskStageInput);
228   
229    if ( input->task->removeStageInput) 
230    {
231        return input->task->removeStageInput(input->pStageInputHandle);
232    }
233    else
234    {
235        return BERR_TRACE(BERR_NOT_SUPPORTED);
236    }       
237}
238
239BERR_Code BDSP_Task_GetStageInputIndex(
240    BDSP_TaskStageInputHandle input,
241    unsigned    *inputIndex
242    )
243{
244    BDBG_OBJECT_ASSERT(input, BDSP_TaskStageInput);
245    BDBG_ASSERT(inputIndex);
246   
247    if ( input->task->getStageInputIndex) 
248    {
249        return input->task->getStageInputIndex(input->pStageInputHandle,inputIndex);
250    }
251    else
252    {
253        return BERR_TRACE(BERR_NOT_SUPPORTED);
254    }       
255}   
256
257
258void BDSP_Task_GetDefaultAddStageInputSettings(
259    BDSP_CIT_P_FwStgSrcDstType  inputType,
260    BDSP_TaskAddStageInputSettings *pSettings /*[out] */
261    )
262{
263    unsigned i=0;
264    BDBG_ASSERT(pSettings);
265   
266    BKNI_Memset((void *)pSettings,0,sizeof(BDSP_TaskAddStageInputSettings));
267    pSettings->sourceDetails.eType = inputType;
268   
269    if(inputType >= BDSP_CIT_P_FwStgSrcDstType_eMax)
270    {
271        BDBG_MSG(("Not a valid input type %d",inputType));
272        goto end;
273    }
274       
275    if(inputType == BDSP_CIT_P_FwStgSrcDstType_eFMMBuf)
276    {
277        pSettings->sourceDetails.uDetails.sIoBuf.uIoBuffer.sIoBuffId.ui32NumBuffers =0;
278        pSettings->sourceDetails.uDetails.sIoBuf.uIoGenericBuffer.sIoGenericBuffId.ui32NumBuffers =0;
279               
280        pSettings->sourceDetails.uDetails.sIoBuf.uIoBuffer.sIoBuffId.eBufferType=BDSP_AF_P_BufferType_eFMM;       
281        pSettings->sourceDetails.uDetails.sIoBuf.uIoGenericBuffer.sIoGenericBuffId.eBufferType = BDSP_AF_P_BufferType_eInvalid;
282       
283        for(i = 0 ; i < BDSP_AF_P_MAX_CHANNEL_PAIR; i++)
284        {     
285            pSettings->sourceDetails.uDetails.sIoBuf.uIoBuffer.sIoBuffId.ui32AdaptRateCtrlIds[i]=BDSP_INVALID_INDEX;     
286            pSettings->sourceDetails.uDetails.sIoBuf.uIoGenericBuffer.sIoGenericBuffId.ui32AdaptRateCtrlIds[i]=BDSP_INVALID_INDEX;                             
287        }
288
289        for(i = 0 ; i < BDSP_AF_P_MAX_CHANNELS; i++)       
290        {
291            pSettings->sourceDetails.uDetails.sIoBuf.uIoBuffer.sIoBuffId.ui32BufferId[i]=BDSP_INVALID_INDEX;   
292            pSettings->sourceDetails.uDetails.sIoBuf.uIoGenericBuffer.sIoGenericBuffId.ui32BufferId[i]=BDSP_INVALID_INDEX;                         
293        } 
294    }
295    else if(inputType == BDSP_CIT_P_FwStgSrcDstType_eFwStg)
296    {
297        pSettings->sourceDetails.uDetails.sFwStage.ui32BranchId = BDSP_INVALID_INDEX;
298        pSettings->sourceDetails.uDetails.sFwStage.ui32StageId= BDSP_INVALID_INDEX;       
299    }
300    else if(inputType == BDSP_CIT_P_FwStgSrcDstType_eDRAMBuf)
301    {
302        pSettings->sourceDetails.uDetails.sIoBuf.uIoBuffer.sIoBuffer.ui32NumBuffers=0;
303        pSettings->sourceDetails.uDetails.sIoBuf.uIoGenericBuffer.sIoGenericBuffer.ui32NumBuffers =0;
304               
305        pSettings->sourceDetails.uDetails.sIoBuf.uIoBuffer.sIoBuffer.eBufferType=BDSP_AF_P_BufferType_eDRAM;       
306        pSettings->sourceDetails.uDetails.sIoBuf.uIoGenericBuffer.sIoGenericBuffer.eBufferType = BDSP_AF_P_BufferType_eDRAM;       
307    }   
308end:
309    return;
310}
311
312
Note: See TracBrowser for help on using the repository browser.