12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
- */
- #ifndef __HAB_QNX_H
- #define __HAB_QNX_H
- #include "hab.h"
- #include "hab_pipe.h"
- #include "hab_qvm_os.h"
- struct qvm_channel {
- int be;
- struct hab_pipe *pipe;
- struct hab_pipe_endpoint *pipe_ep;
- struct hab_shared_buf *tx_buf;
- struct hab_shared_buf *rx_buf;
- struct dbg_items *dbg_itms;
- spinlock_t io_lock;
- /* common but only for guest */
- struct guest_shm_factory *guest_factory;
- struct guest_shm_control *guest_ctrl;
- /* cached guest ctrl idx value to prevent trap when accessed */
- uint32_t idx;
- /* Guest VM */
- unsigned int guest_intr;
- unsigned int guest_iid;
- unsigned int factory_addr;
- unsigned int irq;
- /* os-specific part */
- struct qvm_channel_os *os_data;
- /* debug only */
- struct workqueue_struct *wq;
- struct work_data {
- struct work_struct work;
- int data; /* free to modify */
- } wdata;
- char *side_buf; /* to store the contents from hab-pipe */
- };
- /* This is common but only for guest in HQX */
- struct shmem_irq_config {
- unsigned long factory_addr; /* from gvm settings when provided */
- int irq; /* from gvm settings when provided */
- };
- struct qvm_plugin_info {
- struct shmem_irq_config *pchan_settings;
- int setting_size;
- int curr;
- int probe_cnt;
- };
- extern struct qvm_plugin_info qvm_priv_info;
- /* Shared mem size in each direction for communication pipe */
- #define PIPE_SHMEM_SIZE (512 * 1024)
- void hab_pipe_reset(struct physical_channel *pchan);
- void habhyp_notify(void *commdev);
- unsigned long hab_shmem_factory_va(unsigned long factory_addr);
- char *hab_shmem_attach(struct qvm_channel *dev, const char *name,
- uint32_t pages);
- uint64_t get_guest_ctrl_paddr(struct qvm_channel *dev,
- unsigned long factory_addr, int irq, const char *name, uint32_t pages);
- #endif /* __HAB_QNX_H */
|