18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci#ifndef __QCOM_Q6V5_H__ 48c2ecf20Sopenharmony_ci#define __QCOM_Q6V5_H__ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <linux/kernel.h> 78c2ecf20Sopenharmony_ci#include <linux/completion.h> 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cistruct rproc; 108c2ecf20Sopenharmony_cistruct qcom_smem_state; 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cistruct qcom_q6v5 { 138c2ecf20Sopenharmony_ci struct device *dev; 148c2ecf20Sopenharmony_ci struct rproc *rproc; 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci struct qcom_smem_state *state; 178c2ecf20Sopenharmony_ci unsigned stop_bit; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci int wdog_irq; 208c2ecf20Sopenharmony_ci int fatal_irq; 218c2ecf20Sopenharmony_ci int ready_irq; 228c2ecf20Sopenharmony_ci int handover_irq; 238c2ecf20Sopenharmony_ci int stop_irq; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci bool handover_issued; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci struct completion start_done; 288c2ecf20Sopenharmony_ci struct completion stop_done; 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci int crash_reason; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci bool running; 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci void (*handover)(struct qcom_q6v5 *q6v5); 358c2ecf20Sopenharmony_ci}; 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ciint qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev, 388c2ecf20Sopenharmony_ci struct rproc *rproc, int crash_reason, 398c2ecf20Sopenharmony_ci void (*handover)(struct qcom_q6v5 *q6v5)); 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciint qcom_q6v5_prepare(struct qcom_q6v5 *q6v5); 428c2ecf20Sopenharmony_ciint qcom_q6v5_unprepare(struct qcom_q6v5 *q6v5); 438c2ecf20Sopenharmony_ciint qcom_q6v5_request_stop(struct qcom_q6v5 *q6v5); 448c2ecf20Sopenharmony_ciint qcom_q6v5_wait_for_start(struct qcom_q6v5 *q6v5, int timeout); 458c2ecf20Sopenharmony_ciunsigned long qcom_q6v5_panic(struct qcom_q6v5 *q6v5); 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci#endif 48