1af2c3834SStanimir Varbanov /*
2af2c3834SStanimir Varbanov  * Copyright (C) 2017 Linaro Ltd.
3af2c3834SStanimir Varbanov  *
4af2c3834SStanimir Varbanov  * This program is free software; you can redistribute it and/or modify
5af2c3834SStanimir Varbanov  * it under the terms of the GNU General Public License version 2 and
6af2c3834SStanimir Varbanov  * only version 2 as published by the Free Software Foundation.
7af2c3834SStanimir Varbanov  *
8af2c3834SStanimir Varbanov  * This program is distributed in the hope that it will be useful,
9af2c3834SStanimir Varbanov  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10af2c3834SStanimir Varbanov  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11af2c3834SStanimir Varbanov  * GNU General Public License for more details.
12af2c3834SStanimir Varbanov  *
13af2c3834SStanimir Varbanov  */
14af2c3834SStanimir Varbanov #ifndef __VENUS_FIRMWARE_H__
15af2c3834SStanimir Varbanov #define __VENUS_FIRMWARE_H__
16af2c3834SStanimir Varbanov 
17af2c3834SStanimir Varbanov struct device;
18af2c3834SStanimir Varbanov 
19f9799fccSStanimir Varbanov int venus_firmware_init(struct venus_core *core);
20f9799fccSStanimir Varbanov void venus_firmware_deinit(struct venus_core *core);
21a4cf7e3cSVikash Garodia int venus_boot(struct venus_core *core);
22df381dc8SVikash Garodia int venus_shutdown(struct venus_core *core);
235df317c8SVikash Garodia int venus_set_hw_state(struct venus_core *core, bool suspend);
245df317c8SVikash Garodia 
255df317c8SVikash Garodia static inline int venus_set_hw_state_suspend(struct venus_core *core)
265df317c8SVikash Garodia {
275df317c8SVikash Garodia 	return venus_set_hw_state(core, false);
285df317c8SVikash Garodia }
295df317c8SVikash Garodia 
305df317c8SVikash Garodia static inline int venus_set_hw_state_resume(struct venus_core *core)
315df317c8SVikash Garodia {
325df317c8SVikash Garodia 	return venus_set_hw_state(core, true);
335df317c8SVikash Garodia }
34af2c3834SStanimir Varbanov 
35af2c3834SStanimir Varbanov #endif
36