linux/drivers/remoteproc/qcom_q6v5.h
<<
>>
Prefs
   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
   9struct rproc;
  10struct qcom_smem_state;
  11struct qcom_sysmon;
  12
  13struct qcom_q6v5 {
  14        struct device *dev;
  15        struct rproc *rproc;
  16
  17        struct qcom_smem_state *state;
  18        unsigned stop_bit;
  19
  20        int wdog_irq;
  21        int fatal_irq;
  22        int ready_irq;
  23        int handover_irq;
  24        int stop_irq;
  25
  26        bool handover_issued;
  27
  28        struct completion start_done;
  29        struct completion stop_done;
  30
  31        int crash_reason;
  32
  33        bool running;
  34
  35        void (*handover)(struct qcom_q6v5 *q6v5);
  36};
  37
  38int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
  39                   struct rproc *rproc, int crash_reason,
  40                   void (*handover)(struct qcom_q6v5 *q6v5));
  41
  42int qcom_q6v5_prepare(struct qcom_q6v5 *q6v5);
  43int qcom_q6v5_unprepare(struct qcom_q6v5 *q6v5);
  44int qcom_q6v5_request_stop(struct qcom_q6v5 *q6v5, struct qcom_sysmon *sysmon);
  45int qcom_q6v5_wait_for_start(struct qcom_q6v5 *q6v5, int timeout);
  46unsigned long qcom_q6v5_panic(struct qcom_q6v5 *q6v5);
  47
  48#endif
  49