Files
2025-08-12 22:16:57 +02:00

111 lines
2.7 KiB
C
Executable File

/* 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