Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c6c8416 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: gadget: f_gsi: Add QTI_CTRL_DATA_BUF_INFO ioctl"

parents a6561520 f91e8e39
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -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];
@@ -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;
+9 −1
Original line number Diff line number Diff line
@@ -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,
@@ -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