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

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

Merge "msm: ipa_fwmk: Provide api for mhi driver to update state"

parents 761f457a 5148b81b
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -321,6 +321,8 @@ struct ipa_fmwk_contex {
	int (*ipa_mhi_handle_ipa_config_req)(
		struct ipa_config_req_msg_v01 *config_req);

	int (*ipa_mhi_update_mstate)(enum ipa_mhi_mstate mstate_info);

	/* ipa_wigig APIs */
	int (*ipa_wigig_init)(struct ipa_wigig_init_in_params *in,
		struct ipa_wigig_init_out_params *out);
@@ -1484,7 +1486,8 @@ int ipa_fmwk_register_ipa_mhi(const struct ipa_mhi_data *in)
		|| ipa_fmwk_ctx->ipa_mhi_suspend
		|| ipa_fmwk_ctx->ipa_mhi_resume
		|| ipa_fmwk_ctx->ipa_mhi_destroy
		|| ipa_fmwk_ctx->ipa_mhi_handle_ipa_config_req) {
		|| ipa_fmwk_ctx->ipa_mhi_handle_ipa_config_req
		|| ipa_fmwk_ctx->ipa_mhi_update_mstate) {
		pr_err("ipa_mhi APIs were already initialized\n");
		return -EPERM;
	}
@@ -1498,6 +1501,7 @@ int ipa_fmwk_register_ipa_mhi(const struct ipa_mhi_data *in)
	ipa_fmwk_ctx->ipa_mhi_destroy = in->ipa_mhi_destroy;
	ipa_fmwk_ctx->ipa_mhi_handle_ipa_config_req =
		in->ipa_mhi_handle_ipa_config_req;
	ipa_fmwk_ctx->ipa_mhi_update_mstate = in->ipa_mhi_update_mstate;

	pr_info("ipa_mhi registered successfully\n");

@@ -1588,6 +1592,16 @@ int ipa_mhi_handle_ipa_config_req(struct ipa_config_req_msg_v01 *config_req)
}
EXPORT_SYMBOL(ipa_mhi_handle_ipa_config_req);

int ipa_mhi_update_mstate(enum ipa_mhi_mstate mstate_info)
{
	int ret;

	IPA_FMWK_DISPATCH_RETURN(ipa_mhi_update_mstate, mstate_info);

	return ret;
}
EXPORT_SYMBOL(ipa_mhi_update_mstate);

/* registration API for IPA wigig module */
int ipa_fmwk_register_ipa_wigig(const struct ipa_wigig_data *in)
{
+2 −0
Original line number Diff line number Diff line
@@ -228,6 +228,8 @@ struct ipa_mhi_data {

	int (*ipa_mhi_handle_ipa_config_req)(
		struct ipa_config_req_msg_v01 *config_req);

	int (*ipa_mhi_update_mstate)(enum ipa_mhi_mstate mstate_info);
};

struct ipa_wigig_data {
+17 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
 */

#ifndef IPA_MHI_H_
@@ -22,6 +22,14 @@ enum ipa_mhi_event_type {
	IPA_MHI_EVENT_MAX,
};

enum ipa_mhi_mstate {
	IPA_MHI_STATE_M0,
	IPA_MHI_STATE_M1,
	IPA_MHI_STATE_M2,
	IPA_MHI_STATE_M3,
	IPA_MHI_STATE_M_MAX
};

typedef void (*mhi_client_cb)(void *priv, enum ipa_mhi_event_type event,
	unsigned long data);

@@ -111,6 +119,8 @@ int ipa_mhi_resume(void);

void ipa_mhi_destroy(void);

int ipa_mhi_update_mstate(enum ipa_mhi_mstate mstate_info);

#else /* IS_ENABLED(CONFIG_IPA3) */

static inline int ipa_mhi_init(struct ipa_mhi_init_params *params)
@@ -149,6 +159,12 @@ static inline void ipa_mhi_destroy(void)

}

static inline int ipa_mhi_update_mstate
			(enum ipa_mhi_mstate mstate_info)
{
	return -EPERM;
}

#endif /* IS_ENABLED(CONFIG_IPA3) */

#endif /* IPA_MHI_H_ */