예제 #1
0
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),
			gser, &gser->port, gser->port_num);

	port_num = gserial_ports[gser->port_num].client_port_num;

	switch (gser->transport) {
	case USB_GADGET_FSERIAL_TRANSPORT_TTY:
		gserial_connect(&gser->port, port_num);
		break;
	case USB_GADGET_FSERIAL_TRANSPORT_SDIO:
		gsdio_connect(&gser->port, port_num);
		break;
	case USB_GADGET_FSERIAL_TRANSPORT_SMD:
		gsmd_connect(&gser->port, port_num);
		break;
	default:
		pr_err("%s: Un-supported transport: %s\n", __func__,
				transport_to_str(gser->transport));
		return -ENODEV;
	}

	return 0;
}
예제 #2
0
static int gport_connect(struct f_gser *gser)
{
	unsigned	port_num;
	int		ret;

	pr_debug("%s: transport: %s f_gser: %p gserial: %p port_num: %d\n",
			__func__, xport_to_str(gser->transport),
			gser, &gser->port, gser->port_num);

	port_num = gserial_ports[gser->port_num].client_port_num;

	switch (gser->transport) {
	case USB_GADGET_XPORT_TTY:
		gserial_connect(&gser->port, port_num);
		break;
	case USB_GADGET_XPORT_SDIO:
		gsdio_connect(&gser->port, port_num);
		break;
	case USB_GADGET_XPORT_SMD:
		gsmd_connect(&gser->port, port_num);
		break;
	case USB_GADGET_XPORT_HSIC:
		ret = ghsic_ctrl_connect(&gser->port, port_num);
		if (ret) {
			pr_err("%s: ghsic_ctrl_connect failed: err:%d\n",
					__func__, ret);
			return ret;
		}
		ret = ghsic_data_connect(&gser->port, port_num);
		if (ret) {
			pr_err("%s: ghsic_data_connect failed: err:%d\n",
					__func__, ret);
			ghsic_ctrl_disconnect(&gser->port, port_num);
			return ret;
		}
		break;
	case USB_GADGET_XPORT_HSUART:
		ret = ghsuart_data_connect(&gser->port, port_num);
		if (ret) {
			pr_err("%s: ghsuart_data_connect failed: err:%d\n",
					__func__, ret);
			return ret;
		}
		break;
	default:
		pr_err("%s: Un-supported transport: %s\n", __func__,
				xport_to_str(gser->transport));
		return -ENODEV;
	}

	return 0;
}