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

Commit 9809030d authored by Skylar Chang's avatar Skylar Chang
Browse files

msm: ipa: add mhi proxy driver



Introduce IPA MHI Proxy capability to IPA driver.
This module is used to setup MHI channels and allow
data transfers between two modems.

CRs-Fixed: 2237669
Change-Id: Ibb96a12185e150ef730fa3a6118ed5e40ae06ed7
Acked-by: default avatarAdy Abraham <adya@qti.qualocmm.com>
Signed-off-by: default avatarSkylar Chang <chiaweic@codeaurora.org>
parent e14e6b52
Loading
Loading
Loading
Loading
+27 −0
Original line number Original line Diff line number Diff line
* Qualcomm Technologies, Inc. IPA MHI proxy driver module

This module enables modem to modem communication using IPA
and MHI.

Required properties:
- compatible:		Must be "qcom,ipa-mhi-proxy"
- qcom,mhi-chdb-base:	MHI channel doorbell base address in MMIO space
- qcom,mhi-erdb-base:	MHI event doorbell base address in MMIO space

Optional:
- qcom,ctrl-iova: 		Pair of start address and size of the IOVA space
				dedicated for MHI control structures
				(such as transfer rings and event rings).
				If not present, SMMU S1 is considered to be in bypass mode.
- qcom,data-iova: 		Pair of start address and size of the IOVA space
				dedicated for MHI data buffers.
				If not present, SMMU S1 is considered to be in bypass mode.

Example:
	imp: qcom,ipa-mhi-proxy {
		compatible = "qcom,ipa-mhi-proxy";
		qcom,ctrl-iova = <0x00010000 0x0FFF0000>;
		qcom,data-iova = <0x10000000 0x0FFFFFFF>;
		qcom,mhi-chdb-base = <0x40300300>;
		qcom,mhi-erdb-base = <0x40300700>;
	};
+11 −0
Original line number Original line Diff line number Diff line
@@ -147,6 +147,17 @@ config RNDIS_IPA
	  This Network interface is aimed to allow data path go through
	  This Network interface is aimed to allow data path go through
	  IPA core while using RNDIS protocol.
	  IPA core while using RNDIS protocol.


config IPA3_MHI_PROXY
	tristate "IPA3 MHI proxy driver"
	depends on RMNET_IPA3
	help
	  This driver is used as a proxy between modem and MHI host driver.
	  Its main functionality is to setup MHI Satellite channels on behalf of
	  modem and provide the ability of modem to MHI device communication.
	  Once the configuration is done modem will communicate directly with
	  the MHI device without AP involvement, with the exception of
	  power management.

config IPA_UT
config IPA_UT
	tristate "IPA Unit-Test Framework and Test Suites"
	tristate "IPA Unit-Test Framework and Test Suites"
	depends on IPA3 && DEBUG_FS
	depends on IPA3 && DEBUG_FS
+2 −0
Original line number Original line Diff line number Diff line
@@ -7,3 +7,5 @@ ipat-y := ipa.o ipa_debugfs.o ipa_hdr.o ipa_flt.o ipa_rt.o ipa_dp.o ipa_client.o
	ipa_hw_stats.o ipa_pm.o ipa_wdi3_i.o
	ipa_hw_stats.o ipa_pm.o ipa_wdi3_i.o


obj-$(CONFIG_RMNET_IPA3) += rmnet_ipa.o ipa_qmi_service_v01.o ipa_qmi_service.o rmnet_ipa_fd_ioctl.o
obj-$(CONFIG_RMNET_IPA3) += rmnet_ipa.o ipa_qmi_service_v01.o ipa_qmi_service.o rmnet_ipa_fd_ioctl.o

obj-$(CONFIG_IPA3_MHI_PROXY) += ipa_mhi_proxy.o
+1 −0
Original line number Original line Diff line number Diff line
@@ -2238,6 +2238,7 @@ int ipa3_uc_mhi_resume_channel(int channelHandle, bool LPTransitionRejected);
int ipa3_uc_mhi_stop_event_update_channel(int channelHandle);
int ipa3_uc_mhi_stop_event_update_channel(int channelHandle);
int ipa3_uc_mhi_print_stats(char *dbg_buff, int size);
int ipa3_uc_mhi_print_stats(char *dbg_buff, int size);
int ipa3_uc_memcpy(phys_addr_t dest, phys_addr_t src, int len);
int ipa3_uc_memcpy(phys_addr_t dest, phys_addr_t src, int len);
int ipa3_uc_send_remote_ipa_info(u32 remote_addr, uint32_t mbox_n);
void ipa3_tag_destroy_imm(void *user1, int user2);
void ipa3_tag_destroy_imm(void *user1, int user2);
const struct ipa_gsi_ep_config *ipa3_get_gsi_ep_info
const struct ipa_gsi_ep_config *ipa3_get_gsi_ep_info
	(enum ipa_client_type client);
	(enum ipa_client_type client);
+993 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading