Merge "usb: gadget: Add support for multiple RmNET" into msm-3.0
diff --git a/arch/arm/mach-msm/board-9615.c b/arch/arm/mach-msm/board-9615.c
index 1e51a8a..e68d5cd 100644
--- a/arch/arm/mach-msm/board-9615.c
+++ b/arch/arm/mach-msm/board-9615.c
@@ -322,6 +322,46 @@
.desc_fifo_size = 0x100,
},
#endif
+ [1][USB_TO_PEER_PERIPHERAL] = {
+ .src_phy_addr = USB_BAM_PHY_BASE,
+ .src_pipe_index = 13,
+ .dst_phy_addr = A2_BAM_PHY_BASE,
+ .dst_pipe_index = 2,
+ .data_fifo_base_offset = 0x2100,
+ .data_fifo_size = 0x600,
+ .desc_fifo_base_offset = 0x2700,
+ .desc_fifo_size = 0x300,
+ },
+ [1][PEER_PERIPHERAL_TO_USB] = {
+ .src_phy_addr = A2_BAM_PHY_BASE,
+ .src_pipe_index = 3,
+ .dst_phy_addr = USB_BAM_PHY_BASE,
+ .dst_pipe_index = 12,
+ .data_fifo_base_offset = 0x1a00,
+ .data_fifo_size = 0x600,
+ .desc_fifo_base_offset = 0x2000,
+ .desc_fifo_size = 0x100,
+ },
+ [2][USB_TO_PEER_PERIPHERAL] = {
+ .src_phy_addr = USB_BAM_PHY_BASE,
+ .src_pipe_index = 15,
+ .dst_phy_addr = A2_BAM_PHY_BASE,
+ .dst_pipe_index = 4,
+ .data_fifo_base_offset = 0x3100,
+ .data_fifo_size = 0x600,
+ .desc_fifo_base_offset = 0x3700,
+ .desc_fifo_size = 0x300,
+ },
+ [2][PEER_PERIPHERAL_TO_USB] = {
+ .src_phy_addr = A2_BAM_PHY_BASE,
+ .src_pipe_index = 5,
+ .dst_phy_addr = USB_BAM_PHY_BASE,
+ .dst_pipe_index = 14,
+ .data_fifo_base_offset = 0x2a00,
+ .data_fifo_size = 0x600,
+ .desc_fifo_base_offset = 0x3000,
+ .desc_fifo_size = 0x100,
+ }
};
static struct msm_usb_bam_platform_data msm_usb_bam_pdata = {
diff --git a/drivers/usb/gadget/f_rmnet.c b/drivers/usb/gadget/f_rmnet.c
index 86f8a25..d846c4e 100644
--- a/drivers/usb/gadget/f_rmnet.c
+++ b/drivers/usb/gadget/f_rmnet.c
@@ -61,7 +61,7 @@
unsigned long cpkts_len;
};
-#define NR_RMNET_PORTS 1
+#define NR_RMNET_PORTS 3
static unsigned int nr_rmnet_ports;
static unsigned int no_ctrl_smd_ports;
static unsigned int no_ctrl_hsic_ports;
@@ -334,10 +334,8 @@
switch (dxport) {
case USB_GADGET_XPORT_BAM:
case USB_GADGET_XPORT_BAM2BAM:
- /* currently only one connection (idx 0)
- is supported */
ret = gbam_connect(&dev->port, port_num,
- dxport, 0);
+ dxport, port_num);
if (ret) {
pr_err("%s: gbam_connect failed: err:%d\n",
__func__, ret);
diff --git a/drivers/usb/gadget/u_bam.c b/drivers/usb/gadget/u_bam.c
index 30f30cf..6299cdd 100644
--- a/drivers/usb/gadget/u_bam.c
+++ b/drivers/usb/gadget/u_bam.c
@@ -29,7 +29,7 @@
#include "u_rmnet.h"
#define BAM_N_PORTS 1
-#define BAM2BAM_N_PORTS 1
+#define BAM2BAM_N_PORTS 3
static struct workqueue_struct *gbam_wq;
static int n_bam_ports;
diff --git a/drivers/usb/gadget/u_rmnet_ctrl_smd.c b/drivers/usb/gadget/u_rmnet_ctrl_smd.c
index a55fc77..8671669 100644
--- a/drivers/usb/gadget/u_rmnet_ctrl_smd.c
+++ b/drivers/usb/gadget/u_rmnet_ctrl_smd.c
@@ -24,9 +24,9 @@
#include "u_rmnet.h"
-#define NR_CTRL_SMD_PORTS 1
+#define NR_CTRL_SMD_PORTS 3
static int n_rmnet_ctrl_ports;
-static char *rmnet_ctrl_names[] = { "DATA40_CNTL" };
+static char *rmnet_ctrl_names[] = {"DATA40_CNTL", "DATA39_CNTL", "DATA38_CNTL"};
static struct workqueue_struct *grmnet_ctrl_wq;
#define SMD_CH_MAX_LEN 20