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

Commit 271e7c08 authored by Bar Weiner's avatar Bar Weiner Committed by Gerrit - the friendly Code Review server
Browse files

usb: rmnet: Add port mapper support for Rmnet



Adding IOCTL call to be used by QTI. This new call
queries the required information for configuring port
mapper.

Change-Id: Ifdbe099e0b0716f14524e77444873bd2e8bf44de
Signed-off-by: default avatarBar Weiner <bweiner@codeaurora.org>
parent 446a396c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -59,6 +59,9 @@ struct usb_bam_connect_ipa_params {
	u32 *src_pipe;
	u32 *dst_pipe;
	enum usb_bam_pipe_dir dir;
	/* Parameters for Port Mapper */
	u32 ipa_cons_ep_idx;
	u32 ipa_prod_ep_idx;
	/* client handle assigned by IPA to client */
	u32 prod_clnt_hdl;
	u32 cons_clnt_hdl;
+2 −0
Original line number Diff line number Diff line
@@ -563,6 +563,7 @@ static int connect_pipe_ipa(u8 idx,
		sps_connection->destination = sps_out_params.ipa_bam_hdl;
		sps_connection->src_pipe_index = pipe_connect->src_pipe_index;
		sps_connection->dest_pipe_index = sps_out_params.ipa_ep_idx;
		ipa_params->ipa_cons_ep_idx = sps_out_params.ipa_ep_idx;
		*(ipa_params->src_pipe) = sps_connection->src_pipe_index;
		pipe_connect->dst_pipe_index = sps_out_params.ipa_ep_idx;
		pr_debug("%s: BAM pipe usb[%x]->ipa[%x] connection\n",
@@ -577,6 +578,7 @@ static int connect_pipe_ipa(u8 idx,
		sps_connection->source = sps_out_params.ipa_bam_hdl;
		sps_connection->destination = usb_handle;
		sps_connection->src_pipe_index = sps_out_params.ipa_ep_idx;
		ipa_params->ipa_prod_ep_idx = sps_out_params.ipa_ep_idx;
		sps_connection->dest_pipe_index = pipe_connect->dst_pipe_index;
		*(ipa_params->dst_pipe) = sps_connection->dest_pipe_index;
		pipe_connect->src_pipe_index = sps_out_params.ipa_ep_idx;
+3 −3
Original line number Diff line number Diff line
@@ -388,7 +388,7 @@ static int rmnet_gport_setup(void)
	return 0;
}

static int gport_rmnet_connect(struct f_rmnet *dev)
static int gport_rmnet_connect(struct f_rmnet *dev, unsigned intf)
{
	int			ret;
	unsigned		port_num;
@@ -413,7 +413,7 @@ static int gport_rmnet_connect(struct f_rmnet *dev)
		}
		break;
	case USB_GADGET_XPORT_QTI:
		ret = gqti_ctrl_connect(&dev->port, port_num);
		ret = gqti_ctrl_connect(&dev->port, port_num, intf);
		if (ret) {
			pr_err("%s: gqti_ctrl_connect failed: err:%d\n",
					__func__, ret);
@@ -752,7 +752,7 @@ frmnet_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
				dev->port.out->desc = NULL;
				return -EINVAL;
		}
		ret = gport_rmnet_connect(dev);
		ret = gport_rmnet_connect(dev, intf);
	}

	if (dxport == USB_GADGET_XPORT_BAM2BAM_IPA &&
+5 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@

#include <mach/usb_gadget_xport.h>
#include <linux/usb/msm_hsusb.h>
#include <linux/usb/rmnet_ctrl_qti.h>
#include <mach/usb_bam.h>

#include "u_rmnet.h"
@@ -914,6 +915,10 @@ static void gbam2bam_connect_work(struct work_struct *w)
					     bam_info.usb_bam_pipe_idx);
		}

		gqti_ctrl_update_ipa_pipes(port->port_usb, port->port_num,
			d->ipa_params.ipa_prod_ep_idx ,
			d->ipa_params.ipa_cons_ep_idx);

		connect_params.ipa_usb_pipe_hdl = d->ipa_params.prod_clnt_hdl;
		connect_params.usb_ipa_pipe_hdl = d->ipa_params.cons_clnt_hdl;
		connect_params.tethering_mode = TETH_TETHERING_MODE_RMNET;
+3 −1
Original line number Diff line number Diff line
@@ -69,7 +69,9 @@ int gsmd_ctrl_connect(struct grmnet *gr, int port_num);
void gsmd_ctrl_disconnect(struct grmnet *gr, u8 port_num);
int gsmd_ctrl_setup(enum ctrl_client client_num, unsigned int count,
					u8 *first_port_idx);
int gqti_ctrl_connect(struct grmnet *gr, u8 port_num);
int gqti_ctrl_connect(struct grmnet *gr, u8 port_num, unsigned intf);
void gqti_ctrl_disconnect(struct grmnet *gr, u8 port_num);
void gqti_ctrl_update_ipa_pipes(struct grmnet *gr, u8 port_num,
					u32 ipa_prod, u32 ipa_cons);

#endif /* __U_RMNET_H*/
Loading