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