123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
- */
- #ifndef __GH_DBL_H
- #define __GH_DBL_H
- #include "gh_common.h"
- typedef void (*dbl_rx_cb_t)(int irq, void *priv_data);
- enum gh_dbl_label {
- GH_DBL_TUI_LABEL,
- GH_DBL_TUI_NEURON_BLK0,
- GH_DBL_TUI_NEURON_BLK1,
- GH_DBL_TUI_QRTR,
- GH_DBL_TEST_TUIVM,
- GH_DBL_TEST_OEMVM,
- GH_DBL_HW_FENCE,
- GH_DBL_TUI_DDUMP,
- GH_DBL_OEMVM_QRTR,
- GH_DBL_VM_PANIC_NOTIFY,
- GH_DBL_LABEL_MAX
- };
- /* Possible flags to pass for send, set_mask, read, reset */
- #define GH_DBL_NONBLOCK BIT(32)
- #if IS_ENABLED(CONFIG_GH_DBL)
- void *gh_dbl_tx_register(enum gh_dbl_label label);
- void *gh_dbl_rx_register(enum gh_dbl_label label, dbl_rx_cb_t rx_cb,
- void *priv);
- int gh_dbl_tx_unregister(void *dbl_client_desc);
- int gh_dbl_rx_unregister(void *dbl_client_desc);
- int gh_dbl_send(void *dbl_client_desc, uint64_t *newflags,
- const unsigned long flags);
- int gh_dbl_set_mask(void *dbl_client_desc, gh_dbl_flags_t enable_mask,
- gh_dbl_flags_t ack_mask, const unsigned long flags);
- int gh_dbl_read_and_clean(void *dbl_client_desc, gh_dbl_flags_t *clear_flags,
- const unsigned long flags);
- int gh_dbl_reset(void *dbl_client_desc, const unsigned long flags);
- int gh_dbl_populate_cap_info(enum gh_dbl_label label, u64 cap_id,
- int direction, int rx_irq);
- int gh_dbl_reset_cap_info(enum gh_dbl_label label, int direction, int *irq);
- #else
- static inline void *gh_dbl_tx_register(enum gh_dbl_label label)
- {
- return ERR_PTR(-ENODEV);
- }
- static inline void *gh_dbl_rx_register(enum gh_dbl_label label,
- dbl_rx_cb_t rx_cb,
- void *priv)
- {
- return ERR_PTR(-ENODEV);
- }
- static inline int gh_dbl_tx_unregister(void *dbl_client_desc)
- {
- return -EINVAL;
- }
- static inline int gh_dbl_rx_unregister(void *dbl_client_desc)
- {
- return -EINVAL;
- }
- static inline int gh_dbl_send(void *dbl_client_desc, uint64_t *newflags,
- const unsigned long flags)
- {
- return -EINVAL;
- }
- static inline int gh_dbl_set_mask(void *dbl_client_desc,
- gh_dbl_flags_t enable_mask,
- gh_dbl_flags_t ack_mask,
- const unsigned long flags)
- {
- return -EINVAL;
- }
- static inline int gh_dbl_read_and_clean(void *dbl_client_desc,
- gh_dbl_flags_t *clear_flags,
- const unsigned long flags)
- {
- return -EINVAL;
- }
- static inline int gh_dbl_reset(void *dbl_client_desc, const unsigned long flags)
- {
- return -EINVAL;
- }
- static inline int gh_dbl_populate_cap_info(enum gh_dbl_label label, u64 cap_id,
- int direction, int rx_irq)
- {
- return -EINVAL;
- }
- static inline
- int gh_dbl_reset_cap_info(enum gh_dbl_label label, int direction, int *irq)
- {
- return -EINVAL;
- }
- #endif
- #endif
|