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 * ======== IOsal ========
35 * OSAL interface
36 *
37 */
38 metaonly interface IIpc
39 {
40 /*!
41 * ======== ArmDspLinkConfigMemTableEntry ========
42 * Description of one DSP memory segment entry.
43 *
44 * @field(addr) The beginning address of the segment
45 * @field(gppAddr) The GPP physical address of the segment (when needed)
46 * @field(size) Size of the segment in bytes
47 * @field(type) One of the following types:
48 * "main" -- main code/data segment (i.e. DDR2)
49 * "link" -- DSPLINKMEM segment
50 * "reset" -- RESETCTRL segment
51 * "poolmem" -- POOLMEM segment
52 * "code" -- dsp code/data, must map into GPP space
53 * "other" -- anything else
54 */
55 struct ArmDspLinkConfigMemTableEntry {
56 UInt32 addr;
57 UInt32 gppAddr;
58 UInt32 size;
59 String type;
60 }
61
62 /*!
63 * ======== DspManagement ========
64 * Value for controlling DSP from ARM w/ DspLink
65 *
66 * @field(BootAndLoadDsp) DspLink boots DSP and loads executable
67 * @field(BootDspAutonomously) DspLink boots DSP w/o loading executable
68 * @field(None) DspLink neither boots DSP nor loads executable
69 */
70 enum DspManagement {
71 BootAndLoadDsp,
72 BootDspAutonomously,
73 None
74 };
75
76 /*!
77 * ======== ArmDspLinkConfig ========
78 * Configuration for the DspLink on the Arm side
79 *
80 * Of the many fields that Link exposes for configuration,
81 * selected ones are exposed through this interface.
82 *
83 * @field(memTable) Memory table, describing all DSP segments.
84 * NOTE: segments "DDR2" (or whatever is the name of
85 * the main segment), "DSPLINKMEM", and
86 * "RESETCTRL" must be present
87 *
88 * @field(doPowerControl) Flag indicating if Link should implement
89 * power control of DSP.
90 *
91 * @field(dspManagement) Flag indicating how Link should boot/load DSP
92 */
93 struct ArmDspLinkConfig {
94 ArmDspLinkConfigMemTableEntry memTable[string];
95 Bool doPowerControl;
96 DspManagement dspManagement;
97
98 }
99
100 /*!
101 * ======== LinkConfigEntry ========
102 * This structure associates a sever executable with an ipc link
103 * configuration. The type of the linkCfg field is left as "Any",
104 * since it will depend on the module that implements the IIpc
105 * interface. This is an internal field used only by codec engine
106 * scripting.
107 *
108 * @_nodoc
109 */
110 struct LinkConfigEntry {
111 string serverName;
112 ArmDspLinkConfig linkCfg;
113 }
114
115 /*!
116 * ======== linkConfigs ========
117 * Link configurations per server; if left undefined will be
118 * set to DEFAULT_ARMDSPLINKCONFIG, but with a warning. This is an
119 * internal field, set by the Engine scripting.
120 *
121 * @_nodoc
122 */
123 config LinkConfigEntry linkConfigs[string];
124 }
125 126 127 128
129