# USB Driver Can be mapped into several different functional interfaces. - USB-AT port - USB-DM port - USB-NMEA port - USB-Modem port - USB-Network adapter In QuecOpen, the GNSS NMEA is outputted to applications through a virtual serial port (/dev/smd7). USB Design Suggestions: - For downloading → DM port - For Capturing system log→ DM port - For debugging → ADB port - For USB data channel→ /dev/ttyGS0 ## Add USB virtual port diff -uprN ql-ol-sdk_ori/ql-ol-kernel/drivers/usb/gadget/android.c ql-ol-sdk/ql-ol-kernel/drivers/usb/gadget/android.c --- ql-ol-sdk_ori/ql-ol-kernel/drivers/usb/gadget/android.c 2019-02-22 15:04:37.000000000 +0800 +++ ql-ol-sdk/ql-ol-kernel/drivers/usb/gadget/android.c 2019-06-04 18:53:04.325676077 +0800 @@ -2020,7 +2020,7 @@ static struct android_usb_function qdss_ }; /* SERIAL */ -#define MAX_SERIAL_INSTANCES 4 +#define MAX_SERIAL_INSTANCES 5 struct serial_function_config { int instances_on; struct usb_function *f_serial[MAX_SERIAL_INSTANCES]; diff -uprN ql-ol-sdk_ori/ql-ol-kernel/drivers/usb/gadget/function/f_serial.c ql-ol-sdk/ql-ol-kernel/drivers/usb/gadget/function/f_serial.c --- ql-ol-sdk_ori/ql-ol-kernel/drivers/usb/gadget/function/f_serial.c 2019-02-22 15:04:37.000000000 +0800 +++ ql-ol-sdk/ql-ol-kernel/drivers/usb/gadget/function/f_serial.c 2019-06-04 18:56:52.535903240 +0800 @@ -44,7 +44,7 @@ #define GSERIAL_SET_XPORT_TYPE_SMD 1 #define GSERIAL_BUF_LEN 256 -#define GSERIAL_NO_PORTS 3 +#define GSERIAL_NO_PORTS 4 struct ioctl_smd_write_arg_type { char *buf; @@ -330,12 +330,16 @@ int gport_setup(struct usb_configuration pr_debug("%s: no_tty_ports: %u no_smd_ports: %u no_hsic_sports: %u nr_ports: %u\n", __func__, no_tty_ports, no_smd_ports, no_hsic_sports, nr_ports); + /* add usb channel */ if (no_tty_ports) { - for (i = 0; i < no_tty_ports; i++) { - ret = gserial_alloc_line( + for (i = 0; i < GSERIAL_NO_PORTS; i++) { + if (gserial_ports[i].transport == USB_GADGET_XPORT_TTY) + { + ret = gserial_alloc_line( &gserial_ports[i].client_port_num); - if (ret) - return ret; + if (ret) + return ret; + } } } diff -uprN ql-ol-sdk_ori/ql-ol-rootfs/sbin/usb/compositions/9025 ql-ol-sdk/ql-ol-rootfs/sbin/usb/compositions/9025 --- ql-ol-sdk_ori/ql-ol-rootfs/sbin/usb/compositions/9025 2019-02-22 16:01:26.000000000 +0800 +++ ql-ol-sdk/ql-ol-rootfs/sbin/usb/compositions/9025 2019-06-04 18:51:44.274980430 +0800 @@ -107,6 +107,7 @@ run_9607() { QUEC_USB_VID=2C7C QUEC_ENABLE_USB=0 QUEC_USB_NET_TYPE="rmnet" + QUEC_USB_TTYGS1=1 QUEC_MANUFCTURE="Quectel, Incorporated" QUEC_PRODUCTINFO="LTE Module" usb_dir="/data/usb" @@ -190,7 +191,12 @@ run_9607() { echo 239 > /sys/class/android_usb/android$num/bDeviceClass echo 2 > /sys/class/android_usb/android$num/bDeviceSubClass echo 1 > /sys/class/android_usb/android$num/bDeviceProtocol - echo $SERIAL_FUNC > /sys/class/android_usb/android0/f_serial/transports + #juson.zhang-2019/06/04:add usb channel + if [ $QUEC_USB_TTYGS1 -eq 0 ];then + echo $SERIAL_FUNC > /sys/class/android_usb/android0/f_serial/transports + else + echo $SERIAL_FUNC,tty > /sys/class/android_usb/android0/f_serial/transports + fi echo QTI,BAM_DMUX > /sys/class/android_usb/android0/f_rmnet/transports echo BAM_DMUX > /sys/class/android_usb/android0/f_usb_mbim/mbim_transports echo $USB_FUNC,ffs > /sys/class/android_usb/android$num/functions