msm: ipa: Support hardware accelerated DIAG over qdss with ipa_fmwk
Add support to accelarate QDSS diag traffic over IPA to the PCIe host with ipa fmwk support. Change-Id: I64a8c493e8b6ef3fc525a3edcfd57e1cd11ccb6c Signed-off-by: Michael Adisumarta <madisuma@codeaurora.org>
This commit is contained in:
parent
d1d92738ec
commit
33962cd2e1
@ -241,6 +241,11 @@ struct ipa_fmwk_contex {
|
||||
|
||||
int (*ipa_wdi_dereg_intf)(const char *netdev_name);
|
||||
|
||||
int (*ipa_qdss_conn_pipes)(struct ipa_qdss_conn_in_params *in,
|
||||
struct ipa_qdss_conn_out_params *out);
|
||||
|
||||
int (*ipa_qdss_disconn_pipes)(void);
|
||||
|
||||
int (*ipa_wdi_conn_pipes)(struct ipa_wdi_conn_in_params *in,
|
||||
struct ipa_wdi_conn_out_params *out);
|
||||
|
||||
@ -1230,6 +1235,52 @@ int ipa_wdi_sw_stats(struct ipa_wdi_tx_info *info)
|
||||
}
|
||||
EXPORT_SYMBOL(ipa_wdi_sw_stats);
|
||||
|
||||
int ipa_qdss_conn_pipes(struct ipa_qdss_conn_in_params *in,
|
||||
struct ipa_qdss_conn_out_params *out)
|
||||
{
|
||||
int ret;
|
||||
|
||||
IPA_FMWK_DISPATCH_RETURN(ipa_qdss_conn_pipes,
|
||||
in, out);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(ipa_qdss_conn_pipes);
|
||||
|
||||
int ipa_qdss_disconn_pipes(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
IPA_FMWK_DISPATCH_RETURN(ipa_qdss_disconn_pipes);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(ipa_qdss_disconn_pipes);
|
||||
|
||||
/* registration API for IPA qdss module */
|
||||
int ipa_fmwk_register_ipa_qdss(const struct ipa_qdss_data *in)
|
||||
{
|
||||
if (!ipa_fmwk_ctx) {
|
||||
pr_err("ipa framework hasn't been initialized yet\n");
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
if (ipa_fmwk_ctx->ipa_qdss_conn_pipes
|
||||
|| ipa_fmwk_ctx->ipa_qdss_disconn_pipes) {
|
||||
pr_err("ipa_qdss APIs were already initialized\n");
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
ipa_fmwk_ctx->ipa_qdss_conn_pipes = in->ipa_qdss_conn_pipes;
|
||||
ipa_fmwk_ctx->ipa_qdss_disconn_pipes = in->ipa_qdss_disconn_pipes;
|
||||
|
||||
pr_info("ipa_qdss registered successfully\n");
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL(ipa_fmwk_register_ipa_qdss);
|
||||
|
||||
/* registration API for IPA gsb module */
|
||||
int ipa_fmwk_register_gsb(const struct ipa_gsb_data *in)
|
||||
{
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <linux/ipa_mhi.h>
|
||||
#include <linux/ipa_wigig.h>
|
||||
#include <linux/ipa_wdi3.h>
|
||||
#include <linux/ipa_qdss.h>
|
||||
#include <linux/ipa_usb.h>
|
||||
#include <linux/ipa_odu_bridge.h>
|
||||
#include <linux/ipa_qmi_service_v01.h>
|
||||
@ -171,6 +172,13 @@ struct ipa_wdi3_data {
|
||||
int (*ipa_get_wdi_version)(void);
|
||||
};
|
||||
|
||||
struct ipa_qdss_data {
|
||||
int (*ipa_qdss_conn_pipes)(struct ipa_qdss_conn_in_params *in,
|
||||
struct ipa_qdss_conn_out_params *out);
|
||||
|
||||
int (*ipa_qdss_disconn_pipes)(void);
|
||||
};
|
||||
|
||||
struct ipa_gsb_data {
|
||||
int (*ipa_bridge_init)(struct ipa_bridge_init_params *params, u32 *hdl);
|
||||
|
||||
@ -310,6 +318,8 @@ int ipa_fmwk_register_ipa_wigig(const struct ipa_wigig_data *in);
|
||||
|
||||
int ipa_fmwk_register_ipa_eth(const struct ipa_eth_data *in);
|
||||
|
||||
int ipa_fmwk_register_ipa_qdss(const struct ipa_qdss_data *in);
|
||||
|
||||
#else /* IS_ENABLED(CONFIG_IPA3) */
|
||||
|
||||
int ipa_fmwk_register_ipa(const struct ipa_core_data *in)
|
||||
@ -327,6 +337,11 @@ int ipa_fmwk_register_ipa_wdi3(const struct ipa_wdi3_data *in)
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
int ipa_fmwk_register_ipa_qdss(const struct ipa3_qdss_data *in)
|
||||
{
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
int ipa_fmwk_register_gsb(const struct ipa_gsb_data *in)
|
||||
{
|
||||
return -EPERM;
|
||||
|
@ -57,7 +57,7 @@ struct ipa_qdss_conn_out_params {
|
||||
phys_addr_t ipa_rx_db_pa;
|
||||
};
|
||||
|
||||
#if defined CONFIG_IPA3
|
||||
#if IS_ENABLED(CONFIG_IPA3)
|
||||
|
||||
/**
|
||||
* ipa_qdss_conn_pipes - Client should call this
|
||||
|
Loading…
Reference in New Issue
Block a user