Loading drivers/usb/gadget/function/f_gsi.c +31 −0 Original line number Diff line number Diff line Loading @@ -1173,6 +1173,7 @@ static long gsi_ctrl_dev_ioctl(struct file *fp, unsigned int cmd, struct f_gsi *gsi; struct gsi_ctrl_pkt *cpkt; struct ep_info info; struct data_buf_info data_info; enum ipa_usb_teth_prot prot_id = *(enum ipa_usb_teth_prot *)(fp->private_data); struct gsi_inst_status *inst_cur = &inst_status[prot_id]; Loading Loading @@ -1302,6 +1303,36 @@ static long gsi_ctrl_dev_ioctl(struct file *fp, unsigned int cmd, log_event_dbg("Sent NTB datagrams count %d", gsi->d_port.ntb_info.ntb_max_datagrams); break; case QTI_CTRL_DATA_BUF_INFO: if (gsi->d_port.out_ep) { data_info.epout_buf_len = gsi->d_port.out_request.buf_len; data_info.epout_total_buf_len = gsi->d_port.out_request.buf_len * gsi->d_port.out_request.num_bufs; log_event_dbg("prot id :%d OUT: buf_len:%u total_len: %u", gsi->prot_id, data_info.epout_buf_len, data_info.epout_total_buf_len); } if (gsi->d_port.in_ep) { data_info.epin_buf_len = gsi->d_port.in_request.buf_len; data_info.epin_total_buf_len = gsi->d_port.in_request.buf_len * gsi->d_port.in_request.num_bufs; log_event_dbg("prot id :%d IN: buf_len:%u total_len:%u\n", gsi->prot_id, data_info.epin_buf_len, data_info.epin_total_buf_len); } ret = copy_to_user((void __user *)arg, &data_info, sizeof(data_info)); if (ret) { log_event_err("QTI_CTRL_DATA_BUF_INFO: copy_to_user failed"); ret = -EFAULT; } break; default: log_event_err("wrong parameter"); ret = -EINVAL; Loading include/uapi/linux/usb/usb_ctrl_qti.h +9 −1 Original line number Diff line number Diff line Loading @@ -11,6 +11,8 @@ #define QTI_CTRL_EP_LOOKUP _IOR(QTI_CTRL_IOCTL_MAGIC, 3, struct ep_info) #define QTI_CTRL_MODEM_OFFLINE _IO(QTI_CTRL_IOCTL_MAGIC, 4) #define QTI_CTRL_MODEM_ONLINE _IO(QTI_CTRL_IOCTL_MAGIC, 5) #define QTI_CTRL_DATA_BUF_INFO \ _IOR(QTI_CTRL_IOCTL_MAGIC, 6, struct data_buf_info) enum peripheral_ep_type { DATA_EP_TYPE_RESERVED = 0x0, Loading @@ -37,5 +39,11 @@ struct ep_info { }; #endif struct data_buf_info { __u32 epout_buf_len; __u32 epout_total_buf_len; __u32 epin_buf_len; __u32 epin_total_buf_len; }; #endif Loading
drivers/usb/gadget/function/f_gsi.c +31 −0 Original line number Diff line number Diff line Loading @@ -1173,6 +1173,7 @@ static long gsi_ctrl_dev_ioctl(struct file *fp, unsigned int cmd, struct f_gsi *gsi; struct gsi_ctrl_pkt *cpkt; struct ep_info info; struct data_buf_info data_info; enum ipa_usb_teth_prot prot_id = *(enum ipa_usb_teth_prot *)(fp->private_data); struct gsi_inst_status *inst_cur = &inst_status[prot_id]; Loading Loading @@ -1302,6 +1303,36 @@ static long gsi_ctrl_dev_ioctl(struct file *fp, unsigned int cmd, log_event_dbg("Sent NTB datagrams count %d", gsi->d_port.ntb_info.ntb_max_datagrams); break; case QTI_CTRL_DATA_BUF_INFO: if (gsi->d_port.out_ep) { data_info.epout_buf_len = gsi->d_port.out_request.buf_len; data_info.epout_total_buf_len = gsi->d_port.out_request.buf_len * gsi->d_port.out_request.num_bufs; log_event_dbg("prot id :%d OUT: buf_len:%u total_len: %u", gsi->prot_id, data_info.epout_buf_len, data_info.epout_total_buf_len); } if (gsi->d_port.in_ep) { data_info.epin_buf_len = gsi->d_port.in_request.buf_len; data_info.epin_total_buf_len = gsi->d_port.in_request.buf_len * gsi->d_port.in_request.num_bufs; log_event_dbg("prot id :%d IN: buf_len:%u total_len:%u\n", gsi->prot_id, data_info.epin_buf_len, data_info.epin_total_buf_len); } ret = copy_to_user((void __user *)arg, &data_info, sizeof(data_info)); if (ret) { log_event_err("QTI_CTRL_DATA_BUF_INFO: copy_to_user failed"); ret = -EFAULT; } break; default: log_event_err("wrong parameter"); ret = -EINVAL; Loading
include/uapi/linux/usb/usb_ctrl_qti.h +9 −1 Original line number Diff line number Diff line Loading @@ -11,6 +11,8 @@ #define QTI_CTRL_EP_LOOKUP _IOR(QTI_CTRL_IOCTL_MAGIC, 3, struct ep_info) #define QTI_CTRL_MODEM_OFFLINE _IO(QTI_CTRL_IOCTL_MAGIC, 4) #define QTI_CTRL_MODEM_ONLINE _IO(QTI_CTRL_IOCTL_MAGIC, 5) #define QTI_CTRL_DATA_BUF_INFO \ _IOR(QTI_CTRL_IOCTL_MAGIC, 6, struct data_buf_info) enum peripheral_ep_type { DATA_EP_TYPE_RESERVED = 0x0, Loading @@ -37,5 +39,11 @@ struct ep_info { }; #endif struct data_buf_info { __u32 epout_buf_len; __u32 epout_total_buf_len; __u32 epin_buf_len; __u32 epin_total_buf_len; }; #endif