1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2018-2021 Beijing WangXun Technology Co., Ltd.
3 */
4
5 #ifndef _NGBE_TYPE_DUMMY_H_
6 #define _NGBE_TYPE_DUMMY_H_
7
8 #ifdef TUP
9 #elif defined(__GNUC__)
10 #define TUP(x) x##_unused ngbe_unused
11 #elif defined(__LCLINT__)
12 #define TUP(x) x /*@unused@*/
13 #else
14 #define TUP(x) x
15 #endif /*TUP*/
16 #define TUP0 TUP(p0)
17 #define TUP1 TUP(p1)
18 #define TUP2 TUP(p2)
19 #define TUP3 TUP(p3)
20 #define TUP4 TUP(p4)
21 #define TUP5 TUP(p5)
22 #define TUP6 TUP(p6)
23 #define TUP7 TUP(p7)
24 #define TUP8 TUP(p8)
25 #define TUP9 TUP(p9)
26
27 /* struct ngbe_bus_operations */
ngbe_bus_set_lan_id_dummy(struct ngbe_hw * TUP0)28 static inline void ngbe_bus_set_lan_id_dummy(struct ngbe_hw *TUP0)
29 {
30 }
31 /* struct ngbe_rom_operations */
ngbe_rom_init_params_dummy(struct ngbe_hw * TUP0)32 static inline s32 ngbe_rom_init_params_dummy(struct ngbe_hw *TUP0)
33 {
34 return NGBE_ERR_OPS_DUMMY;
35 }
ngbe_rom_readw_buffer_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2,void * TUP3)36 static inline s32 ngbe_rom_readw_buffer_dummy(struct ngbe_hw *TUP0, u32 TUP1,
37 u32 TUP2, void *TUP3)
38 {
39 return NGBE_ERR_OPS_DUMMY;
40 }
ngbe_rom_read32_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 * TUP2)41 static inline s32 ngbe_rom_read32_dummy(struct ngbe_hw *TUP0, u32 TUP1,
42 u32 *TUP2)
43 {
44 return NGBE_ERR_OPS_DUMMY;
45 }
ngbe_rom_writew_buffer_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2,void * TUP3)46 static inline s32 ngbe_rom_writew_buffer_dummy(struct ngbe_hw *TUP0, u32 TUP1,
47 u32 TUP2, void *TUP3)
48 {
49 return NGBE_ERR_OPS_DUMMY;
50 }
ngbe_rom_validate_checksum_dummy(struct ngbe_hw * TUP0,u16 * TUP1)51 static inline s32 ngbe_rom_validate_checksum_dummy(struct ngbe_hw *TUP0,
52 u16 *TUP1)
53 {
54 return NGBE_ERR_OPS_DUMMY;
55 }
56 /* struct ngbe_mac_operations */
ngbe_mac_init_hw_dummy(struct ngbe_hw * TUP0)57 static inline s32 ngbe_mac_init_hw_dummy(struct ngbe_hw *TUP0)
58 {
59 return NGBE_ERR_OPS_DUMMY;
60 }
ngbe_mac_reset_hw_dummy(struct ngbe_hw * TUP0)61 static inline s32 ngbe_mac_reset_hw_dummy(struct ngbe_hw *TUP0)
62 {
63 return NGBE_ERR_OPS_DUMMY;
64 }
ngbe_mac_start_hw_dummy(struct ngbe_hw * TUP0)65 static inline s32 ngbe_mac_start_hw_dummy(struct ngbe_hw *TUP0)
66 {
67 return NGBE_ERR_OPS_DUMMY;
68 }
ngbe_mac_stop_hw_dummy(struct ngbe_hw * TUP0)69 static inline s32 ngbe_mac_stop_hw_dummy(struct ngbe_hw *TUP0)
70 {
71 return NGBE_ERR_OPS_DUMMY;
72 }
ngbe_mac_clear_hw_cntrs_dummy(struct ngbe_hw * TUP0)73 static inline s32 ngbe_mac_clear_hw_cntrs_dummy(struct ngbe_hw *TUP0)
74 {
75 return NGBE_ERR_OPS_DUMMY;
76 }
ngbe_mac_get_mac_addr_dummy(struct ngbe_hw * TUP0,u8 * TUP1)77 static inline s32 ngbe_mac_get_mac_addr_dummy(struct ngbe_hw *TUP0, u8 *TUP1)
78 {
79 return NGBE_ERR_OPS_DUMMY;
80 }
ngbe_mac_enable_rx_dma_dummy(struct ngbe_hw * TUP0,u32 TUP1)81 static inline s32 ngbe_mac_enable_rx_dma_dummy(struct ngbe_hw *TUP0, u32 TUP1)
82 {
83 return NGBE_ERR_OPS_DUMMY;
84 }
ngbe_mac_disable_sec_rx_path_dummy(struct ngbe_hw * TUP0)85 static inline s32 ngbe_mac_disable_sec_rx_path_dummy(struct ngbe_hw *TUP0)
86 {
87 return NGBE_ERR_OPS_DUMMY;
88 }
ngbe_mac_enable_sec_rx_path_dummy(struct ngbe_hw * TUP0)89 static inline s32 ngbe_mac_enable_sec_rx_path_dummy(struct ngbe_hw *TUP0)
90 {
91 return NGBE_ERR_OPS_DUMMY;
92 }
ngbe_mac_acquire_swfw_sync_dummy(struct ngbe_hw * TUP0,u32 TUP1)93 static inline s32 ngbe_mac_acquire_swfw_sync_dummy(struct ngbe_hw *TUP0,
94 u32 TUP1)
95 {
96 return NGBE_ERR_OPS_DUMMY;
97 }
ngbe_mac_release_swfw_sync_dummy(struct ngbe_hw * TUP0,u32 TUP1)98 static inline void ngbe_mac_release_swfw_sync_dummy(struct ngbe_hw *TUP0,
99 u32 TUP1)
100 {
101 }
ngbe_mac_setup_link_dummy(struct ngbe_hw * TUP0,u32 TUP1,bool TUP2)102 static inline s32 ngbe_mac_setup_link_dummy(struct ngbe_hw *TUP0, u32 TUP1,
103 bool TUP2)
104 {
105 return NGBE_ERR_OPS_DUMMY;
106 }
ngbe_mac_check_link_dummy(struct ngbe_hw * TUP0,u32 * TUP1,bool * TUP3,bool TUP4)107 static inline s32 ngbe_mac_check_link_dummy(struct ngbe_hw *TUP0, u32 *TUP1,
108 bool *TUP3, bool TUP4)
109 {
110 return NGBE_ERR_OPS_DUMMY;
111 }
ngbe_mac_get_link_capabilities_dummy(struct ngbe_hw * TUP0,u32 * TUP1,bool * TUP2)112 static inline s32 ngbe_mac_get_link_capabilities_dummy(struct ngbe_hw *TUP0,
113 u32 *TUP1, bool *TUP2)
114 {
115 return NGBE_ERR_OPS_DUMMY;
116 }
ngbe_setup_pba_dummy(struct ngbe_hw * TUP0)117 static inline void ngbe_setup_pba_dummy(struct ngbe_hw *TUP0)
118 {
119 }
ngbe_mac_led_on_dummy(struct ngbe_hw * TUP0,u32 TUP1)120 static inline s32 ngbe_mac_led_on_dummy(struct ngbe_hw *TUP0, u32 TUP1)
121 {
122 return NGBE_ERR_OPS_DUMMY;
123 }
ngbe_mac_led_off_dummy(struct ngbe_hw * TUP0,u32 TUP1)124 static inline s32 ngbe_mac_led_off_dummy(struct ngbe_hw *TUP0, u32 TUP1)
125 {
126 return NGBE_ERR_OPS_DUMMY;
127 }
ngbe_mac_set_rar_dummy(struct ngbe_hw * TUP0,u32 TUP1,u8 * TUP2,u32 TUP3,u32 TUP4)128 static inline s32 ngbe_mac_set_rar_dummy(struct ngbe_hw *TUP0, u32 TUP1,
129 u8 *TUP2, u32 TUP3, u32 TUP4)
130 {
131 return NGBE_ERR_OPS_DUMMY;
132 }
ngbe_mac_clear_rar_dummy(struct ngbe_hw * TUP0,u32 TUP1)133 static inline s32 ngbe_mac_clear_rar_dummy(struct ngbe_hw *TUP0, u32 TUP1)
134 {
135 return NGBE_ERR_OPS_DUMMY;
136 }
ngbe_mac_set_vmdq_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2)137 static inline s32 ngbe_mac_set_vmdq_dummy(struct ngbe_hw *TUP0, u32 TUP1,
138 u32 TUP2)
139 {
140 return NGBE_ERR_OPS_DUMMY;
141 }
ngbe_mac_clear_vmdq_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2)142 static inline s32 ngbe_mac_clear_vmdq_dummy(struct ngbe_hw *TUP0, u32 TUP1,
143 u32 TUP2)
144 {
145 return NGBE_ERR_OPS_DUMMY;
146 }
ngbe_mac_init_rx_addrs_dummy(struct ngbe_hw * TUP0)147 static inline s32 ngbe_mac_init_rx_addrs_dummy(struct ngbe_hw *TUP0)
148 {
149 return NGBE_ERR_OPS_DUMMY;
150 }
ngbe_mac_update_mc_addr_list_dummy(struct ngbe_hw * TUP0,u8 * TUP1,u32 TUP2,ngbe_mc_addr_itr TUP3,bool TUP4)151 static inline s32 ngbe_mac_update_mc_addr_list_dummy(struct ngbe_hw *TUP0,
152 u8 *TUP1, u32 TUP2, ngbe_mc_addr_itr TUP3, bool TUP4)
153 {
154 return NGBE_ERR_OPS_DUMMY;
155 }
ngbe_mac_clear_vfta_dummy(struct ngbe_hw * TUP0)156 static inline s32 ngbe_mac_clear_vfta_dummy(struct ngbe_hw *TUP0)
157 {
158 return NGBE_ERR_OPS_DUMMY;
159 }
ngbe_mac_set_vfta_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2,bool TUP3,bool TUP4)160 static inline s32 ngbe_mac_set_vfta_dummy(struct ngbe_hw *TUP0, u32 TUP1,
161 u32 TUP2, bool TUP3, bool TUP4)
162 {
163 return NGBE_ERR_OPS_DUMMY;
164 }
ngbe_mac_set_vlvf_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2,bool TUP3,u32 * TUP4,u32 TUP5,bool TUP6)165 static inline s32 ngbe_mac_set_vlvf_dummy(struct ngbe_hw *TUP0, u32 TUP1,
166 u32 TUP2, bool TUP3, u32 *TUP4, u32 TUP5, bool TUP6)
167 {
168 return NGBE_ERR_OPS_DUMMY;
169 }
ngbe_mac_set_mac_anti_spoofing_dummy(struct ngbe_hw * TUP0,bool TUP1,int TUP2)170 static inline void ngbe_mac_set_mac_anti_spoofing_dummy(struct ngbe_hw *TUP0,
171 bool TUP1, int TUP2)
172 {
173 }
ngbe_mac_set_vlan_anti_spoofing_dummy(struct ngbe_hw * TUP0,bool TUP1,int TUP2)174 static inline void ngbe_mac_set_vlan_anti_spoofing_dummy(struct ngbe_hw *TUP0,
175 bool TUP1, int TUP2)
176 {
177 }
ngbe_mac_fc_enable_dummy(struct ngbe_hw * TUP0)178 static inline s32 ngbe_mac_fc_enable_dummy(struct ngbe_hw *TUP0)
179 {
180 return NGBE_ERR_OPS_DUMMY;
181 }
ngbe_mac_setup_fc_dummy(struct ngbe_hw * TUP0)182 static inline s32 ngbe_mac_setup_fc_dummy(struct ngbe_hw *TUP0)
183 {
184 return NGBE_ERR_OPS_DUMMY;
185 }
ngbe_mac_fc_autoneg_dummy(struct ngbe_hw * TUP0)186 static inline void ngbe_mac_fc_autoneg_dummy(struct ngbe_hw *TUP0)
187 {
188 }
ngbe_mac_init_thermal_ssth_dummy(struct ngbe_hw * TUP0)189 static inline s32 ngbe_mac_init_thermal_ssth_dummy(struct ngbe_hw *TUP0)
190 {
191 return NGBE_ERR_OPS_DUMMY;
192 }
ngbe_mac_check_overtemp_dummy(struct ngbe_hw * TUP0)193 static inline s32 ngbe_mac_check_overtemp_dummy(struct ngbe_hw *TUP0)
194 {
195 return NGBE_ERR_OPS_DUMMY;
196 }
197 /* struct ngbe_phy_operations */
ngbe_phy_identify_dummy(struct ngbe_hw * TUP0)198 static inline s32 ngbe_phy_identify_dummy(struct ngbe_hw *TUP0)
199 {
200 return NGBE_ERR_OPS_DUMMY;
201 }
ngbe_phy_init_hw_dummy(struct ngbe_hw * TUP0)202 static inline s32 ngbe_phy_init_hw_dummy(struct ngbe_hw *TUP0)
203 {
204 return NGBE_ERR_OPS_DUMMY;
205 }
ngbe_phy_reset_hw_dummy(struct ngbe_hw * TUP0)206 static inline s32 ngbe_phy_reset_hw_dummy(struct ngbe_hw *TUP0)
207 {
208 return NGBE_ERR_OPS_DUMMY;
209 }
ngbe_phy_read_reg_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2,u16 * TUP3)210 static inline s32 ngbe_phy_read_reg_dummy(struct ngbe_hw *TUP0, u32 TUP1,
211 u32 TUP2, u16 *TUP3)
212 {
213 return NGBE_ERR_OPS_DUMMY;
214 }
ngbe_phy_write_reg_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2,u16 TUP3)215 static inline s32 ngbe_phy_write_reg_dummy(struct ngbe_hw *TUP0, u32 TUP1,
216 u32 TUP2, u16 TUP3)
217 {
218 return NGBE_ERR_OPS_DUMMY;
219 }
ngbe_phy_read_reg_unlocked_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2,u16 * TUP3)220 static inline s32 ngbe_phy_read_reg_unlocked_dummy(struct ngbe_hw *TUP0,
221 u32 TUP1, u32 TUP2, u16 *TUP3)
222 {
223 return NGBE_ERR_OPS_DUMMY;
224 }
ngbe_phy_write_reg_unlocked_dummy(struct ngbe_hw * TUP0,u32 TUP1,u32 TUP2,u16 TUP3)225 static inline s32 ngbe_phy_write_reg_unlocked_dummy(struct ngbe_hw *TUP0,
226 u32 TUP1, u32 TUP2, u16 TUP3)
227 {
228 return NGBE_ERR_OPS_DUMMY;
229 }
ngbe_phy_setup_link_dummy(struct ngbe_hw * TUP0,u32 TUP1,bool TUP2)230 static inline s32 ngbe_phy_setup_link_dummy(struct ngbe_hw *TUP0,
231 u32 TUP1, bool TUP2)
232 {
233 return NGBE_ERR_OPS_DUMMY;
234 }
ngbe_phy_check_link_dummy(struct ngbe_hw * TUP0,u32 * TUP1,bool * TUP2)235 static inline s32 ngbe_phy_check_link_dummy(struct ngbe_hw *TUP0, u32 *TUP1,
236 bool *TUP2)
237 {
238 return NGBE_ERR_OPS_DUMMY;
239 }
ngbe_phy_set_phy_power_dummy(struct ngbe_hw * TUP0,bool TUP1)240 static inline s32 ngbe_phy_set_phy_power_dummy(struct ngbe_hw *TUP0, bool TUP1)
241 {
242 return NGBE_ERR_OPS_DUMMY;
243 }
ngbe_get_phy_advertised_pause_dummy(struct ngbe_hw * TUP0,u8 * TUP1)244 static inline s32 ngbe_get_phy_advertised_pause_dummy(struct ngbe_hw *TUP0,
245 u8 *TUP1)
246 {
247 return NGBE_ERR_OPS_DUMMY;
248 }
ngbe_get_phy_lp_advertised_pause_dummy(struct ngbe_hw * TUP0,u8 * TUP1)249 static inline s32 ngbe_get_phy_lp_advertised_pause_dummy(struct ngbe_hw *TUP0,
250 u8 *TUP1)
251 {
252 return NGBE_ERR_OPS_DUMMY;
253 }
ngbe_set_phy_pause_adv_dummy(struct ngbe_hw * TUP0,u16 TUP1)254 static inline s32 ngbe_set_phy_pause_adv_dummy(struct ngbe_hw *TUP0, u16 TUP1)
255 {
256 return NGBE_ERR_OPS_DUMMY;
257 }
ngbe_phy_led_oem_chk_dummy(struct ngbe_hw * TUP0,u32 * TUP1)258 static inline s32 ngbe_phy_led_oem_chk_dummy(struct ngbe_hw *TUP0, u32 *TUP1)
259 {
260 return NGBE_ERR_OPS_DUMMY;
261 }
262
263 /* struct ngbe_mbx_operations */
ngbe_mbx_init_params_dummy(struct ngbe_hw * TUP0)264 static inline void ngbe_mbx_init_params_dummy(struct ngbe_hw *TUP0)
265 {
266 }
ngbe_mbx_read_dummy(struct ngbe_hw * TUP0,u32 * TUP1,u16 TUP2,u16 TUP3)267 static inline s32 ngbe_mbx_read_dummy(struct ngbe_hw *TUP0, u32 *TUP1,
268 u16 TUP2, u16 TUP3)
269 {
270 return NGBE_ERR_OPS_DUMMY;
271 }
ngbe_mbx_write_dummy(struct ngbe_hw * TUP0,u32 * TUP1,u16 TUP2,u16 TUP3)272 static inline s32 ngbe_mbx_write_dummy(struct ngbe_hw *TUP0, u32 *TUP1,
273 u16 TUP2, u16 TUP3)
274 {
275 return NGBE_ERR_OPS_DUMMY;
276 }
ngbe_mbx_check_for_msg_dummy(struct ngbe_hw * TUP0,u16 TUP1)277 static inline s32 ngbe_mbx_check_for_msg_dummy(struct ngbe_hw *TUP0, u16 TUP1)
278 {
279 return NGBE_ERR_OPS_DUMMY;
280 }
ngbe_mbx_check_for_ack_dummy(struct ngbe_hw * TUP0,u16 TUP1)281 static inline s32 ngbe_mbx_check_for_ack_dummy(struct ngbe_hw *TUP0, u16 TUP1)
282 {
283 return NGBE_ERR_OPS_DUMMY;
284 }
ngbe_mbx_check_for_rst_dummy(struct ngbe_hw * TUP0,u16 TUP1)285 static inline s32 ngbe_mbx_check_for_rst_dummy(struct ngbe_hw *TUP0, u16 TUP1)
286 {
287 return NGBE_ERR_OPS_DUMMY;
288 }
289
ngbe_init_ops_dummy(struct ngbe_hw * hw)290 static inline void ngbe_init_ops_dummy(struct ngbe_hw *hw)
291 {
292 hw->bus.set_lan_id = ngbe_bus_set_lan_id_dummy;
293 hw->rom.init_params = ngbe_rom_init_params_dummy;
294 hw->rom.readw_buffer = ngbe_rom_readw_buffer_dummy;
295 hw->rom.read32 = ngbe_rom_read32_dummy;
296 hw->rom.writew_buffer = ngbe_rom_writew_buffer_dummy;
297 hw->rom.validate_checksum = ngbe_rom_validate_checksum_dummy;
298 hw->mac.init_hw = ngbe_mac_init_hw_dummy;
299 hw->mac.reset_hw = ngbe_mac_reset_hw_dummy;
300 hw->mac.start_hw = ngbe_mac_start_hw_dummy;
301 hw->mac.stop_hw = ngbe_mac_stop_hw_dummy;
302 hw->mac.clear_hw_cntrs = ngbe_mac_clear_hw_cntrs_dummy;
303 hw->mac.get_mac_addr = ngbe_mac_get_mac_addr_dummy;
304 hw->mac.enable_rx_dma = ngbe_mac_enable_rx_dma_dummy;
305 hw->mac.disable_sec_rx_path = ngbe_mac_disable_sec_rx_path_dummy;
306 hw->mac.enable_sec_rx_path = ngbe_mac_enable_sec_rx_path_dummy;
307 hw->mac.acquire_swfw_sync = ngbe_mac_acquire_swfw_sync_dummy;
308 hw->mac.release_swfw_sync = ngbe_mac_release_swfw_sync_dummy;
309 hw->mac.setup_link = ngbe_mac_setup_link_dummy;
310 hw->mac.check_link = ngbe_mac_check_link_dummy;
311 hw->mac.get_link_capabilities = ngbe_mac_get_link_capabilities_dummy;
312 hw->mac.setup_pba = ngbe_setup_pba_dummy;
313 hw->mac.led_on = ngbe_mac_led_on_dummy;
314 hw->mac.led_off = ngbe_mac_led_off_dummy;
315 hw->mac.set_rar = ngbe_mac_set_rar_dummy;
316 hw->mac.clear_rar = ngbe_mac_clear_rar_dummy;
317 hw->mac.set_vmdq = ngbe_mac_set_vmdq_dummy;
318 hw->mac.clear_vmdq = ngbe_mac_clear_vmdq_dummy;
319 hw->mac.init_rx_addrs = ngbe_mac_init_rx_addrs_dummy;
320 hw->mac.update_mc_addr_list = ngbe_mac_update_mc_addr_list_dummy;
321 hw->mac.clear_vfta = ngbe_mac_clear_vfta_dummy;
322 hw->mac.set_vfta = ngbe_mac_set_vfta_dummy;
323 hw->mac.set_vlvf = ngbe_mac_set_vlvf_dummy;
324 hw->mac.set_mac_anti_spoofing = ngbe_mac_set_mac_anti_spoofing_dummy;
325 hw->mac.set_vlan_anti_spoofing = ngbe_mac_set_vlan_anti_spoofing_dummy;
326 hw->mac.fc_enable = ngbe_mac_fc_enable_dummy;
327 hw->mac.setup_fc = ngbe_mac_setup_fc_dummy;
328 hw->mac.fc_autoneg = ngbe_mac_fc_autoneg_dummy;
329 hw->mac.init_thermal_sensor_thresh = ngbe_mac_init_thermal_ssth_dummy;
330 hw->mac.check_overtemp = ngbe_mac_check_overtemp_dummy;
331 hw->phy.identify = ngbe_phy_identify_dummy;
332 hw->phy.init_hw = ngbe_phy_init_hw_dummy;
333 hw->phy.reset_hw = ngbe_phy_reset_hw_dummy;
334 hw->phy.read_reg = ngbe_phy_read_reg_dummy;
335 hw->phy.write_reg = ngbe_phy_write_reg_dummy;
336 hw->phy.read_reg_unlocked = ngbe_phy_read_reg_unlocked_dummy;
337 hw->phy.write_reg_unlocked = ngbe_phy_write_reg_unlocked_dummy;
338 hw->phy.setup_link = ngbe_phy_setup_link_dummy;
339 hw->phy.check_link = ngbe_phy_check_link_dummy;
340 hw->phy.get_adv_pause = ngbe_get_phy_advertised_pause_dummy;
341 hw->phy.get_lp_adv_pause = ngbe_get_phy_lp_advertised_pause_dummy;
342 hw->phy.set_pause_adv = ngbe_set_phy_pause_adv_dummy;
343 hw->phy.led_oem_chk = ngbe_phy_led_oem_chk_dummy;
344 hw->phy.set_phy_power = ngbe_phy_set_phy_power_dummy;
345 hw->mbx.init_params = ngbe_mbx_init_params_dummy;
346 hw->mbx.read = ngbe_mbx_read_dummy;
347 hw->mbx.write = ngbe_mbx_write_dummy;
348 hw->mbx.check_for_msg = ngbe_mbx_check_for_msg_dummy;
349 hw->mbx.check_for_ack = ngbe_mbx_check_for_ack_dummy;
350 hw->mbx.check_for_rst = ngbe_mbx_check_for_rst_dummy;
351 }
352
353 #endif /* _NGBE_TYPE_DUMMY_H_ */
354
355