diff --git a/arch/arm/mach-msm/include/mach/usb_gadget_xport.h b/arch/arm/mach-msm/include/mach/usb_gadget_xport.h index ba49687b1d9..c5fa68c8e24 100644 --- a/arch/arm/mach-msm/include/mach/usb_gadget_xport.h +++ b/arch/arm/mach-msm/include/mach/usb_gadget_xport.h @@ -15,11 +15,48 @@ #define __LINUX_USB_GADGET_XPORT_H__ enum transport_type { - USB_GADGET_XPORT_NONE, + USB_GADGET_XPORT_UNDEF, USB_GADGET_XPORT_TTY, USB_GADGET_XPORT_SDIO, USB_GADGET_XPORT_SMD, - USB_GADGET_XPORT_UNDEF, + USB_GADGET_XPORT_BAM, + USB_GADGET_XPORT_NONE, }; +#define XPORT_STR_LEN 10 + +static char *xport_to_str(enum transport_type t) +{ + switch (t) { + case USB_GADGET_XPORT_TTY: + return "TTY"; + case USB_GADGET_XPORT_SDIO: + return "SDIO"; + case USB_GADGET_XPORT_SMD: + return "SMD"; + case USB_GADGET_XPORT_BAM: + return "BAM"; + case USB_GADGET_XPORT_NONE: + return "NONE"; + default: + return "UNDEFINED"; + } +} + +static enum transport_type str_to_xport(const char *name) +{ + if (!strncasecmp("TTY", name, XPORT_STR_LEN)) + return USB_GADGET_XPORT_TTY; + if (!strncasecmp("SDIO", name, XPORT_STR_LEN)) + return USB_GADGET_XPORT_SDIO; + if (!strncasecmp("SMD", name, XPORT_STR_LEN)) + return USB_GADGET_XPORT_SMD; + if (!strncasecmp("BAM", name, XPORT_STR_LEN)) + return USB_GADGET_XPORT_BAM; + if (!strncasecmp("", name, XPORT_STR_LEN)) + return USB_GADGET_XPORT_NONE; + + return USB_GADGET_XPORT_UNDEF; +} + #endif diff --git a/drivers/usb/gadget/android.c b/drivers/usb/gadget/android.c index 56bf2b58e81..5b14c601dcc 100644 --- a/drivers/usb/gadget/android.c +++ b/drivers/usb/gadget/android.c @@ -252,14 +252,9 @@ static struct android_usb_function rmnet_smd_sdio_function = { .attributes = rmnet_smd_sdio_attributes, }; -/* RMNET - used with BAM */ -#define MAX_RMNET_INSTANCES 1 -static int rmnet_instances; -static int rmnet_function_init(struct android_usb_function *f, - struct usb_composite_dev *cdev) -{ - return frmnet_init_port(MAX_RMNET_INSTANCES); -} +/*rmnet transport string format(per port):"ctrl0,data0,ctrl1,data1..." */ +#define MAX_XPORT_STR_LEN 50 +static char rmnet_transports[MAX_XPORT_STR_LEN]; static void rmnet_function_cleanup(struct android_usb_function *f) { @@ -270,45 +265,74 @@ static int rmnet_function_bind_config(struct android_usb_function *f, struct usb_configuration *c) { int i; - int ret = 0; + int err = 0; + char *ctrl_name; + char *data_name; + char buf[MAX_XPORT_STR_LEN], *b; + static int rmnet_initialized, ports; - for (i = 0; i < rmnet_instances; i++) { - ret = frmnet_bind_config(c, i); - if (ret) { + if (!rmnet_initialized) { + rmnet_initialized = 1; + strlcpy(buf, rmnet_transports, sizeof(buf)); + b = strim(buf); + while (b) { + ctrl_name = strsep(&b, ","); + data_name = strsep(&b, ","); + if (ctrl_name && data_name) { + err = frmnet_init_port(ctrl_name, data_name); + if (err) { + pr_err("rmnet: Cannot open ctrl port:" + "'%s' data port:'%s'\n", + ctrl_name, data_name); + goto out; + } + ports++; + } + } + + err = rmnet_gport_setup(); + if (err) { + pr_err("rmnet: Cannot setup transports"); + goto out; + } + } + + for (i = 0; i < ports; i++) { + err = frmnet_bind_config(c, i); + if (err) { pr_err("Could not bind rmnet%u config\n", i); break; } } - - return ret; +out: + return err; } -static ssize_t rmnet_instances_show(struct device *dev, +static ssize_t rmnet_transports_show(struct device *dev, struct device_attribute *attr, char *buf) { - return snprintf(buf, PAGE_SIZE, "%d\n", rmnet_instances); + return snprintf(buf, PAGE_SIZE, "%s\n", rmnet_transports); } -static ssize_t rmnet_instances_store(struct device *dev, - struct device_attribute *attr, const char *buf, size_t size) +static ssize_t rmnet_transports_store( + struct device *device, struct device_attribute *attr, + const char *buff, size_t size) { - int value; + strlcpy(rmnet_transports, buff, sizeof(rmnet_transports)); - sscanf(buf, "%d", &value); - if (value > MAX_RMNET_INSTANCES) - value = MAX_RMNET_INSTANCES; - rmnet_instances = value; return size; } -static DEVICE_ATTR(instances, S_IRUGO | S_IWUSR, rmnet_instances_show, - rmnet_instances_store); +static struct device_attribute dev_attr_rmnet_transports = + __ATTR(transports, S_IRUGO | S_IWUSR, + rmnet_transports_show, + rmnet_transports_store); static struct device_attribute *rmnet_function_attributes[] = { - &dev_attr_instances, NULL }; + &dev_attr_rmnet_transports, + NULL }; static struct android_usb_function rmnet_function = { .name = "rmnet", - .init = rmnet_function_init, .cleanup = rmnet_function_cleanup, .bind_config = rmnet_function_bind_config, .attributes = rmnet_function_attributes, diff --git a/drivers/usb/gadget/f_acm.c b/drivers/usb/gadget/f_acm.c index 3fd12b1fe53..7299dff0515 100644 --- a/drivers/usb/gadget/f_acm.c +++ b/drivers/usb/gadget/f_acm.c @@ -107,20 +107,6 @@ static inline struct f_acm *port_to_acm(struct gserial *p) return container_of(p, struct f_acm, port); } -static char *transport_to_str(enum transport_type t) -{ - switch (t) { - case USB_GADGET_FSERIAL_TRANSPORT_TTY: - return "TTY"; - case USB_GADGET_FSERIAL_TRANSPORT_SDIO: - return "SDIO"; - case USB_GADGET_FSERIAL_TRANSPORT_SMD: - return "SMD"; - } - - return "NONE"; -} - static int gport_setup(struct usb_configuration *c) { int ret = 0; @@ -146,7 +132,7 @@ static int gport_connect(struct f_acm *acm) pr_debug("%s: transport:%s f_acm:%p gserial:%p port_num:%d cl_port_no:%d\n", - __func__, transport_to_str(acm->transport), + __func__, xport_to_str(acm->transport), acm, &acm->port, acm->port_num, port_num); switch (acm->transport) { @@ -161,7 +147,7 @@ static int gport_connect(struct f_acm *acm) break; default: pr_err("%s: Un-supported transport: %s\n", __func__, - transport_to_str(acm->transport)); + xport_to_str(acm->transport)); return -ENODEV; } @@ -175,7 +161,7 @@ static int gport_disconnect(struct f_acm *acm) port_num = gacm_ports[acm->port_num].client_port_num; pr_debug("%s: transport:%s f_acm:%p gserial:%p port_num:%d cl_pno:%d\n", - __func__, transport_to_str(acm->transport), + __func__, xport_to_str(acm->transport), acm, &acm->port, acm->port_num, port_num); switch (acm->transport) { @@ -190,7 +176,7 @@ static int gport_disconnect(struct f_acm *acm) break; default: pr_err("%s: Un-supported transport:%s\n", __func__, - transport_to_str(acm->transport)); + xport_to_str(acm->transport)); return -ENODEV; } diff --git a/drivers/usb/gadget/f_rmnet.c b/drivers/usb/gadget/f_rmnet.c index db43f95a971..2c6a31c024d 100644 --- a/drivers/usb/gadget/f_rmnet.c +++ b/drivers/usb/gadget/f_rmnet.c @@ -17,7 +17,7 @@ #include #include -#include +#include #include "u_rmnet.h" #include "gadget_chips.h" @@ -63,7 +63,13 @@ struct f_rmnet { #define NR_RMNET_PORTS 1 static unsigned int nr_rmnet_ports; +static unsigned int no_ctrl_smd_ports; +static unsigned int no_data_bam_ports; static struct rmnet_ports { + enum transport_type data_xport; + enum transport_type ctrl_xport; + unsigned data_xport_num; + unsigned ctrl_xport_num; unsigned port_num; struct f_rmnet *port; } rmnet_ports[NR_RMNET_PORTS]; @@ -227,42 +233,75 @@ static void rmnet_free_ctrl_pkt(struct rmnet_ctrl_pkt *pkt) /* -------------------------------------------*/ -static int rmnet_gport_setup(int no_rmnet_ports) +static int rmnet_gport_setup(void) { int ret; - pr_debug("%s: no_rmnet_ports:%d\n", __func__, no_rmnet_ports); + pr_debug("%s: bam ports: %u smd ports: %u nr_rmnet_ports: %u\n", + __func__, no_data_bam_ports, no_ctrl_smd_ports, + nr_rmnet_ports); - ret = gbam_setup(no_rmnet_ports); - if (ret) - return ret; + if (no_data_bam_ports) { + ret = gbam_setup(no_data_bam_ports); + if (ret) + return ret; + } - ret = gsmd_ctrl_setup(no_rmnet_ports); - if (ret) - return ret; + if (no_ctrl_smd_ports) { + ret = gsmd_ctrl_setup(no_ctrl_smd_ports); + if (ret) + return ret; + } return 0; } static int gport_rmnet_connect(struct f_rmnet *dev) { - int ret; + int ret; + unsigned port_num; + enum transport_type cxport = rmnet_ports[dev->port_num].ctrl_xport; + enum transport_type dxport = rmnet_ports[dev->port_num].data_xport; - pr_debug("%s:dev:%p portno:%d\n", - __func__, dev, dev->port_num); + pr_debug("%s: ctrl xport: %s data xport: %s dev: %p portno: %d\n", + __func__, xport_to_str(cxport), xport_to_str(dxport), + dev, dev->port_num); - ret = gsmd_ctrl_connect(&dev->port, dev->port_num); - if (ret) { - pr_err("%s: gsmd_ctrl_connect failed: err:%d\n", - __func__, ret); - return ret; + port_num = rmnet_ports[dev->port_num].ctrl_xport_num; + switch (cxport) { + case USB_GADGET_XPORT_SMD: + ret = gsmd_ctrl_connect(&dev->port, port_num); + if (ret) { + pr_err("%s: gsmd_ctrl_connect failed: err:%d\n", + __func__, ret); + return ret; + } + break; + case USB_GADGET_XPORT_NONE: + break; + default: + pr_err("%s: Un-supported transport: %s\n", __func__, + xport_to_str(cxport)); + return -ENODEV; } - ret = gbam_connect(&dev->port, dev->port_num); - if (ret) { - pr_err("%s: gbam_connect failed: err:%d\n", - __func__, ret); - return ret; + port_num = rmnet_ports[dev->port_num].data_xport_num; + switch (dxport) { + case USB_GADGET_XPORT_BAM: + ret = gbam_connect(&dev->port, port_num); + if (ret) { + pr_err("%s: gbam_connect failed: err:%d\n", + __func__, ret); + gsmd_ctrl_disconnect(&dev->port, port_num); + return ret; + } + break; + case USB_GADGET_XPORT_NONE: + break; + default: + pr_err("%s: Un-supported transport: %s\n", __func__, + xport_to_str(dxport)); + return -ENODEV; } return 0; @@ -270,12 +309,39 @@ static int gport_rmnet_connect(struct f_rmnet *dev) static int gport_rmnet_disconnect(struct f_rmnet *dev) { - pr_debug("%s:dev:%p portno:%d\n", - __func__, dev, dev->port_num); + unsigned port_num; + enum transport_type cxport = rmnet_ports[dev->port_num].ctrl_xport; + enum transport_type dxport = rmnet_ports[dev->port_num].data_xport; - gbam_disconnect(&dev->port, dev->port_num); + pr_debug("%s: ctrl xport: %s data xport: %s dev: %p portno: %d\n", + __func__, xport_to_str(cxport), xport_to_str(dxport), + dev, dev->port_num); - gsmd_ctrl_disconnect(&dev->port, dev->port_num); + port_num = rmnet_ports[dev->port_num].ctrl_xport_num; + switch (cxport) { + case USB_GADGET_XPORT_SMD: + gsmd_ctrl_disconnect(&dev->port, port_num); + break; + case USB_GADGET_XPORT_NONE: + break; + default: + pr_err("%s: Un-supported transport: %s\n", __func__, + xport_to_str(cxport)); + return -ENODEV; + } + + port_num = rmnet_ports[dev->port_num].data_xport_num; + switch (dxport) { + case USB_GADGET_XPORT_BAM: + gbam_disconnect(&dev->port, port_num); + break; + case USB_GADGET_XPORT_NONE: + break; + default: + pr_err("%s: Un-supported transport: %s\n", __func__, + xport_to_str(dxport)); + return -ENODEV; + } return 0; } @@ -508,6 +574,7 @@ frmnet_cmd_complete(struct usb_ep *ep, struct usb_request *req) { struct f_rmnet *dev = req->context; struct usb_composite_dev *cdev; + unsigned port_num; if (!dev) { pr_err("%s: rmnet dev is null\n", __func__); @@ -518,8 +585,10 @@ frmnet_cmd_complete(struct usb_ep *ep, struct usb_request *req) cdev = dev->cdev; - if (dev->port.send_encap_cmd) - dev->port.send_encap_cmd(dev->port_num, req->buf, req->actual); + if (dev->port.send_encap_cmd) { + port_num = rmnet_ports[dev->port_num].ctrl_xport_num; + dev->port.send_encap_cmd(port_num, req->buf, req->actual); + } } static void frmnet_notify_complete(struct usb_ep *ep, struct usb_request *req) @@ -560,6 +629,7 @@ frmnet_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl) struct f_rmnet *dev = func_to_rmnet(f); struct usb_composite_dev *cdev = dev->cdev; struct usb_request *req = cdev->req; + unsigned port_num; u16 w_index = le16_to_cpu(ctrl->wIndex); u16 w_value = le16_to_cpu(ctrl->wValue); u16 w_length = le16_to_cpu(ctrl->wLength); @@ -614,10 +684,10 @@ frmnet_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl) break; case ((USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8) | USB_CDC_REQ_SET_CONTROL_LINE_STATE: - if (dev->port.notify_modem) - dev->port.notify_modem(&dev->port, - dev->port_num, - w_value); + if (dev->port.notify_modem) { + port_num = rmnet_ports[dev->port_num].ctrl_xport_num; + dev->port.notify_modem(&dev->port, port_num, w_value); + } ret = 0; break; @@ -826,42 +896,70 @@ static void frmnet_cleanup(void) kfree(rmnet_ports[i].port); nr_rmnet_ports = 0; + no_ctrl_smd_ports = 0; + no_data_bam_ports = 0; } -static int frmnet_init_port(int instances) +static int frmnet_init_port(const char *ctrl_name, const char *data_name) { - int i; - struct f_rmnet *dev; - int ret; + struct f_rmnet *dev; + struct rmnet_ports *rmnet_port; + int ret; + int i; - pr_debug("%s: instances :%d\n", __func__, instances); - - if (instances > NR_RMNET_PORTS) { - pr_err("%s: Max-%d instances supported\n", __func__, - NR_RMNET_PORTS); + if (nr_rmnet_ports >= NR_RMNET_PORTS) { + pr_err("%s: Max-%d instances supported\n", + __func__, NR_RMNET_PORTS); return -EINVAL; } - for (i = 0; i < instances; i++) { - dev = kzalloc(sizeof(struct f_rmnet), GFP_KERNEL); - if (!dev) { - pr_err("%s: Unable to allocate rmnet device\n", - __func__); - ret = -ENOMEM; - goto fail_probe; - } + pr_debug("%s: port#:%d, ctrl port: %s data port: %s\n", + __func__, nr_rmnet_ports, ctrl_name, data_name); - dev->port_num = i; - spin_lock_init(&dev->lock); - INIT_LIST_HEAD(&dev->cpkt_resp_q); - - rmnet_ports[i].port = dev; - rmnet_ports[i].port_num = i; - - nr_rmnet_ports++; + dev = kzalloc(sizeof(struct f_rmnet), GFP_KERNEL); + if (!dev) { + pr_err("%s: Unable to allocate rmnet device\n", __func__); + return -ENOMEM; } - rmnet_gport_setup(nr_rmnet_ports); + dev->port_num = nr_rmnet_ports; + spin_lock_init(&dev->lock); + INIT_LIST_HEAD(&dev->cpkt_resp_q); + + rmnet_port = &rmnet_ports[nr_rmnet_ports]; + rmnet_port->port = dev; + rmnet_port->port_num = nr_rmnet_ports; + rmnet_port->ctrl_xport = str_to_xport(ctrl_name); + rmnet_port->data_xport = str_to_xport(data_name); + + switch (rmnet_port->ctrl_xport) { + case USB_GADGET_XPORT_SMD: + rmnet_port->ctrl_xport_num = no_ctrl_smd_ports; + no_ctrl_smd_ports++; + break; + case USB_GADGET_XPORT_NONE: + break; + default: + pr_err("%s: Un-supported transport: %u\n", __func__, + rmnet_port->ctrl_xport); + ret = -ENODEV; + goto fail_probe; + } + + switch (rmnet_port->data_xport) { + case USB_GADGET_XPORT_BAM: + rmnet_port->data_xport_num = no_data_bam_ports; + no_data_bam_ports++; + break; + case USB_GADGET_XPORT_NONE: + break; + default: + pr_err("%s: Un-supported transport: %u\n", __func__, + rmnet_port->data_xport); + ret = -ENODEV; + goto fail_probe; + } + nr_rmnet_ports++; return 0; @@ -869,5 +967,9 @@ fail_probe: for (i = 0; i < nr_rmnet_ports; i++) kfree(rmnet_ports[i].port); + nr_rmnet_ports = 0; + no_ctrl_smd_ports = 0; + no_data_bam_ports = 0; + return ret; } diff --git a/drivers/usb/gadget/f_rmnet_smd_sdio.c b/drivers/usb/gadget/f_rmnet_smd_sdio.c index 2ddbd7cb9e1..f974b8ac7bf 100644 --- a/drivers/usb/gadget/f_rmnet_smd_sdio.c +++ b/drivers/usb/gadget/f_rmnet_smd_sdio.c @@ -42,6 +42,7 @@ #include #include #include +#include #ifdef CONFIG_RMNET_SMD_SDIO_CTL_CHANNEL static uint32_t rmnet_mux_sdio_ctl_ch = CONFIG_RMNET_SMD_SDIO_CTL_CHANNEL; @@ -104,12 +105,6 @@ struct rmnet_mux_ctrl_pkt { struct list_head list; }; -enum usb_rmnet_mux_xport_type { - USB_RMNET_MUX_XPORT_UNDEFINED, - USB_RMNET_MUX_XPORT_SDIO, - USB_RMNET_MUX_XPORT_SMD, -}; - struct rmnet_mux_ctrl_dev { struct list_head tx_q; wait_queue_head_t tx_wait_q; @@ -176,7 +171,7 @@ struct rmnet_mux_dev { struct rmnet_mux_ctrl_dev ctrl_dev; u8 ifc_id; - enum usb_rmnet_mux_xport_type xport; + enum transport_type xport; spinlock_t lock; atomic_t online; atomic_t notify_count; @@ -291,18 +286,6 @@ static struct usb_gadget_strings *rmnet_mux_strings[] = { NULL, }; -static char *xport_to_str(enum usb_rmnet_mux_xport_type t) -{ - switch (t) { - case USB_RMNET_MUX_XPORT_SDIO: - return "SDIO"; - case USB_RMNET_MUX_XPORT_SMD: - return "SMD"; - default: - return "UNDEFINED"; - } -} - static struct rmnet_mux_ctrl_pkt *rmnet_mux_alloc_ctrl_pkt(unsigned len, gfp_t flags) { @@ -556,7 +539,7 @@ rmnet_mux_sdio_complete_epout(struct usb_ep *ep, struct usb_request *req) int status = req->status; int queue = 0; - if (dev->xport == USB_RMNET_MUX_XPORT_UNDEFINED) { + if (dev->xport == USB_GADGET_XPORT_UNDEF) { dev_kfree_skb_any(skb); req->buf = 0; rmnet_mux_free_req(ep, req); @@ -614,7 +597,7 @@ rmnet_mux_sdio_complete_epin(struct usb_ep *ep, struct usb_request *req) struct usb_composite_dev *cdev = dev->cdev; int status = req->status; - if (dev->xport == USB_RMNET_MUX_XPORT_UNDEFINED) { + if (dev->xport == USB_GADGET_XPORT_UNDEF) { dev_kfree_skb_any(skb); req->buf = 0; rmnet_mux_free_req(ep, req); @@ -797,7 +780,7 @@ rmnet_mux_smd_complete_epout(struct usb_ep *ep, struct usb_request *req) int status = req->status; int ret; - if (dev->xport == USB_RMNET_MUX_XPORT_UNDEFINED) { + if (dev->xport == USB_GADGET_XPORT_UNDEF) { rmnet_mux_free_req(ep, req); return; } @@ -857,7 +840,7 @@ static void rmnet_mux_smd_complete_epin(struct usb_ep *ep, int status = req->status; int schedule = 0; - if (dev->xport == USB_RMNET_MUX_XPORT_UNDEFINED) { + if (dev->xport == USB_GADGET_XPORT_UNDEF) { rmnet_mux_free_req(ep, req); return; } @@ -1276,7 +1259,7 @@ static void rmnet_mux_disconnect_work(struct work_struct *w) struct rmnet_mux_smd_dev *smd_dev = &dev->smd_dev; struct rmnet_mux_ctrl_dev *ctrl_dev = &dev->ctrl_dev; - if (dev->xport == USB_RMNET_MUX_XPORT_SMD) { + if (dev->xport == USB_GADGET_XPORT_SMD) { tasklet_kill(&smd_dev->smd_data.rx_tlet); tasklet_kill(&smd_dev->smd_data.tx_tlet); } @@ -1416,8 +1399,8 @@ static ssize_t transport_store( struct rmnet_mux_dev *dev = container_of(f, struct rmnet_mux_dev, function); int value; - enum usb_rmnet_mux_xport_type given_xport; - enum usb_rmnet_mux_xport_type t; + enum transport_type given_xport; + enum transport_type t; struct rmnet_mux_smd_dev *smd_dev = &dev->smd_dev; struct rmnet_mux_sdio_dev *sdio_dev = &dev->sdio_dev; struct list_head *pool; @@ -1433,9 +1416,9 @@ static ssize_t transport_store( sscanf(buf, "%d", &value); if (value) - given_xport = USB_RMNET_MUX_XPORT_SDIO; + given_xport = USB_GADGET_XPORT_SDIO; else - given_xport = USB_RMNET_MUX_XPORT_SMD; + given_xport = USB_GADGET_XPORT_SMD; if (given_xport == dev->xport) { pr_err("%s: given_xport:%s cur_xport:%s doing nothing\n", @@ -1449,14 +1432,14 @@ static ssize_t transport_store( /* prevent any other pkts to/from usb */ t = dev->xport; - dev->xport = USB_RMNET_MUX_XPORT_UNDEFINED; - if (t != USB_RMNET_MUX_XPORT_UNDEFINED) { + dev->xport = USB_GADGET_XPORT_UNDEF; + if (t != USB_GADGET_XPORT_UNDEF) { usb_ep_fifo_flush(dev->epin); usb_ep_fifo_flush(dev->epout); } switch (t) { - case USB_RMNET_MUX_XPORT_SDIO: + case USB_GADGET_XPORT_SDIO: spin_lock_irqsave(&dev->lock, flags); /* tx_idle */ @@ -1491,7 +1474,7 @@ static ssize_t transport_store( spin_unlock_irqrestore(&dev->lock, flags); break; - case USB_RMNET_MUX_XPORT_SMD: + case USB_GADGET_XPORT_SMD: /* close smd xport */ tasklet_kill(&smd_dev->smd_data.rx_tlet); tasklet_kill(&smd_dev->smd_data.tx_tlet); @@ -1530,10 +1513,10 @@ static ssize_t transport_store( dev->xport = given_xport; switch (dev->xport) { - case USB_RMNET_MUX_XPORT_SDIO: + case USB_GADGET_XPORT_SDIO: rmnet_mux_sdio_enable(dev); break; - case USB_RMNET_MUX_XPORT_SMD: + case USB_GADGET_XPORT_SMD: rmnet_mux_smd_enable(dev); break; default: diff --git a/drivers/usb/gadget/f_serial.c b/drivers/usb/gadget/f_serial.c index aa4361f29cc..7cd0288fcea 100644 --- a/drivers/usb/gadget/f_serial.c +++ b/drivers/usb/gadget/f_serial.c @@ -251,31 +251,6 @@ static struct usb_gadget_strings *gser_strings[] = { NULL, }; -static char *transport_to_str(enum transport_type t) -{ - switch (t) { - case USB_GADGET_XPORT_TTY: - return "TTY"; - case USB_GADGET_XPORT_SDIO: - return "SDIO"; - case USB_GADGET_XPORT_SMD: - return "SMD"; - default: - return "NONE"; - } -} - -static enum transport_type serial_str_to_transport(const char *name) -{ - if (!strcasecmp("SDIO", name)) - return USB_GADGET_XPORT_SDIO; - if (!strcasecmp("SMD", name)) - return USB_GADGET_XPORT_SMD; - - return USB_GADGET_XPORT_TTY; -} - - static int gport_setup(struct usb_configuration *c) { int ret = 0; @@ -298,7 +273,7 @@ static int gport_connect(struct f_gser *gser) unsigned port_num; pr_debug("%s: transport:%s f_gser:%p gserial:%p port_num:%d\n", - __func__, transport_to_str(gser->transport), + __func__, xport_to_str(gser->transport), gser, &gser->port, gser->port_num); port_num = gserial_ports[gser->port_num].client_port_num; @@ -315,7 +290,7 @@ static int gport_connect(struct f_gser *gser) break; default: pr_err("%s: Un-supported transport: %s\n", __func__, - transport_to_str(gser->transport)); + xport_to_str(gser->transport)); return -ENODEV; } @@ -327,7 +302,7 @@ static int gport_disconnect(struct f_gser *gser) unsigned port_num; pr_debug("%s: transport:%s f_gser:%p gserial:%p port_num:%d\n", - __func__, transport_to_str(gser->transport), + __func__, xport_to_str(gser->transport), gser, &gser->port, gser->port_num); port_num = gserial_ports[gser->port_num].client_port_num; @@ -344,7 +319,7 @@ static int gport_disconnect(struct f_gser *gser) break; default: pr_err("%s: Un-supported transport:%s\n", __func__, - transport_to_str(gser->transport)); + xport_to_str(gser->transport)); return -ENODEV; } @@ -888,9 +863,9 @@ static int gserial_init_port(int port_num, const char *name) if (port_num >= GSERIAL_NO_PORTS) return -ENODEV; - transport = serial_str_to_transport(name); + transport = str_to_xport(name); pr_debug("%s, port:%d, transport:%s\n", __func__, - port_num, transport_to_str(transport)); + port_num, xport_to_str(transport)); gserial_ports[port_num].transport = transport; gserial_ports[port_num].port_num = port_num; diff --git a/include/linux/platform_data/usb_rmnet.h b/include/linux/platform_data/usb_rmnet.h deleted file mode 100644 index 68c0db709dc..00000000000 --- a/include/linux/platform_data/usb_rmnet.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (c) 2011, Code Aurora Forum. All rights reserved. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 and - * only version 2 as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - - -#ifndef __LINUX_USB_GADGET_RMNET_H__ -#define __LINUX_USB_GADGET_RMNET_H__ - -#include - -struct usb_rmnet_pdata { - unsigned num_instances; -}; - -#endif