Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3cbb54d authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa: Support hardware accelerated DIAG over qdss with ipa_fmwk"

parents f79ed0db 33962cd2
Loading
Loading
Loading
Loading
+51 −0
Original line number Diff line number Diff line
@@ -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)
{
+15 −0
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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