1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #ifndef __QCOM_Q6V5_H__ 4 #define __QCOM_Q6V5_H__ 5 6 #include <linux/kernel.h> 7 #include <linux/completion.h> 8 9 struct rproc; 10 struct qcom_smem_state; 11 12 struct qcom_q6v5 { 13 struct device *dev; 14 struct rproc *rproc; 15 16 struct qcom_smem_state *state; 17 unsigned stop_bit; 18 19 int wdog_irq; 20 int fatal_irq; 21 int ready_irq; 22 int handover_irq; 23 int stop_irq; 24 25 bool handover_issued; 26 27 struct completion start_done; 28 struct completion stop_done; 29 30 int crash_reason; 31 32 bool running; 33 34 void (*handover)(struct qcom_q6v5 *q6v5); 35 }; 36 37 int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev, 38 struct rproc *rproc, int crash_reason, 39 void (*handover)(struct qcom_q6v5 *q6v5)); 40 41 int qcom_q6v5_prepare(struct qcom_q6v5 *q6v5); 42 int qcom_q6v5_unprepare(struct qcom_q6v5 *q6v5); 43 int qcom_q6v5_request_stop(struct qcom_q6v5 *q6v5); 44 int qcom_q6v5_wait_for_start(struct qcom_q6v5 *q6v5, int timeout); 45 unsigned long qcom_q6v5_panic(struct qcom_q6v5 *q6v5); 46 47 #endif 48