summaryrefslogtreecommitdiff
path: root/drivers/staging/nmf-cm/cm/engine/executive_engine_mgt/inc/executive_engine_mgt.h
blob: 0894410ae0d91b2978aea2d4221bbcfb731fd761 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
 * Copyright (C) ST-Ericsson SA 2010
 * Author: Jean-Philippe FASSINO <jean-philippe.fassino@stericsson.com> for ST-Ericsson.
 * License terms: GNU General Public License (GPL) version 2.
 */
/**
 * \internal
 */
#ifndef __INC_EE_MGT_H
#define __INC_EE_MGT_H

#include <cm/engine/component/inc/instance.h>
#include <cm/engine/dsp/inc/dsp.h>

typedef struct {
    t_component_instance        *instance;
    t_nmf_executive_engine_id   executiveEngineId;
    t_uint32                    currentStackSize[NMF_SCHED_URGENT + 1];
    t_uint32                    voidAddr;
    t_uint32                    traceState;
    t_uint32                    printLevel;
    t_uint32                    nbOfForceWakeup;
    struct {
        t_memory_handle         handle;
        t_cm_logical_address    addr;
    } panicArea;

    // Trace Management
    t_uint32                    readTracePointer;
    t_uint32                    lastReadedTraceRevision;
    t_memory_handle             traceDataHandle;
    struct t_nmf_trace          *traceDataAddr;
} t_ee_state;

//TODO, juraj, this should be done more properly, like accessor method, instead making this global variable..
extern t_ee_state eeState[NB_CORE_IDS];

/******************************************************************************/
/************************ FUNCTIONS PROTOTYPES ********************************/
/******************************************************************************/

PUBLIC t_cm_error cm_EEM_Init(t_nmf_core_id coreId, const char *eeName, t_nmf_executive_engine_id executiveEngineId);
PUBLIC void cm_EEM_Close(t_nmf_core_id coreId);
PUBLIC t_uint32 cm_EEM_isStackUpdateNeed(t_nmf_core_id coreId, t_nmf_ee_priority priority, t_uint32 isInstantiate, t_uint32 needMinStackSize);
PUBLIC t_cm_error cm_EEM_UpdateStack(t_nmf_core_id coreId, t_nmf_ee_priority priority, t_uint32 needMinStackSize, t_uint32 *pNewStackValue);
PUBLIC t_ee_state* cm_EEM_getExecutiveEngine(t_nmf_core_id coreId);
PUBLIC void cm_EEM_setTraceMode(t_nmf_core_id coreId, t_uint32 state);
PUBLIC void cm_EEM_setPrintLevel(t_nmf_core_id coreId, t_uint32 level);
t_cm_error cm_EEM_ForceWakeup(t_nmf_core_id coreId);
void cm_EEM_AllowSleep(t_nmf_core_id coreId);

#endif /* __INC_EE_MGT_H */