Lines Matching refs:es2

142 static void usb_log_enable(struct es2_ap_dev *es2);
143 static void usb_log_disable(struct es2_ap_dev *es2);
144 static int arpc_sync(struct es2_ap_dev *es2, u8 type, void *payload,
147 static int output_sync(struct es2_ap_dev *es2, void *req, u16 size, u8 cmd) in output_sync() argument
149 struct usb_device *udev = es2->usb_dev; in output_sync()
179 static int output_async(struct es2_ap_dev *es2, void *req, u16 size, u8 cmd) in output_async() argument
181 struct usb_device *udev = es2->usb_dev; in output_async()
220 struct es2_ap_dev *es2 = hd_to_es2(hd); in output() local
223 return output_async(es2, req, size, cmd); in output()
225 return output_sync(es2, req, size, cmd); in output()
228 static int es2_cport_in_enable(struct es2_ap_dev *es2, in es2_cport_in_enable() argument
240 dev_err(&es2->usb_dev->dev, in es2_cport_in_enable()
257 static void es2_cport_in_disable(struct es2_ap_dev *es2, in es2_cport_in_disable() argument
269 static int es2_arpc_in_enable(struct es2_ap_dev *es2) in es2_arpc_in_enable() argument
276 urb = es2->arpc_urb[i]; in es2_arpc_in_enable()
280 dev_err(&es2->usb_dev->dev, in es2_arpc_in_enable()
290 urb = es2->arpc_urb[i]; in es2_arpc_in_enable()
297 static void es2_arpc_in_disable(struct es2_ap_dev *es2) in es2_arpc_in_disable() argument
303 urb = es2->arpc_urb[i]; in es2_arpc_in_disable()
308 static struct urb *next_free_urb(struct es2_ap_dev *es2, gfp_t gfp_mask) in next_free_urb() argument
314 spin_lock_irqsave(&es2->cport_out_urb_lock, flags); in next_free_urb()
318 if (!es2->cport_out_urb_busy[i] && in next_free_urb()
319 !es2->cport_out_urb_cancelled[i]) { in next_free_urb()
320 es2->cport_out_urb_busy[i] = true; in next_free_urb()
321 urb = es2->cport_out_urb[i]; in next_free_urb()
325 spin_unlock_irqrestore(&es2->cport_out_urb_lock, flags); in next_free_urb()
333 dev_dbg(&es2->usb_dev->dev, in next_free_urb()
338 static void free_urb(struct es2_ap_dev *es2, struct urb *urb) in free_urb() argument
346 spin_lock_irqsave(&es2->cport_out_urb_lock, flags); in free_urb()
348 if (urb == es2->cport_out_urb[i]) { in free_urb()
349 es2->cport_out_urb_busy[i] = false; in free_urb()
354 spin_unlock_irqrestore(&es2->cport_out_urb_lock, flags); in free_urb()
393 struct es2_ap_dev *es2 = hd_to_es2(hd); in message_send() local
394 struct usb_device *udev = es2->usb_dev; in message_send()
411 urb = next_free_urb(es2, gfp_mask); in message_send()
415 spin_lock_irqsave(&es2->cport_out_urb_lock, flags); in message_send()
417 spin_unlock_irqrestore(&es2->cport_out_urb_lock, flags); in message_send()
426 es2->cport_out_endpoint), in message_send()
437 spin_lock_irqsave(&es2->cport_out_urb_lock, flags); in message_send()
439 spin_unlock_irqrestore(&es2->cport_out_urb_lock, flags); in message_send()
441 free_urb(es2, urb); in message_send()
456 struct es2_ap_dev *es2 = hd_to_es2(hd); in message_cancel() local
462 spin_lock_irq(&es2->cport_out_urb_lock); in message_cancel()
470 if (urb == es2->cport_out_urb[i]) { in message_cancel()
471 es2->cport_out_urb_cancelled[i] = true; in message_cancel()
475 spin_unlock_irq(&es2->cport_out_urb_lock); in message_cancel()
480 spin_lock_irq(&es2->cport_out_urb_lock); in message_cancel()
481 es2->cport_out_urb_cancelled[i] = false; in message_cancel()
482 spin_unlock_irq(&es2->cport_out_urb_lock); in message_cancel()
491 struct es2_ap_dev *es2 = hd_to_es2(hd); in es2_cport_allocate() local
504 if (es2->cdsi1_in_use) { in es2_cport_allocate()
509 es2->cdsi1_in_use = true; in es2_cport_allocate()
530 struct es2_ap_dev *es2 = hd_to_es2(hd); in es2_cport_release() local
534 es2->cdsi1_in_use = false; in es2_cport_release()
544 struct es2_ap_dev *es2 = hd_to_es2(hd); in cport_enable() local
545 struct usb_device *udev = es2->usb_dev; in cport_enable()
588 struct es2_ap_dev *es2 = hd_to_es2(hd); in es2_cport_connected() local
589 struct device *dev = &es2->usb_dev->dev; in es2_cport_connected()
594 ret = arpc_sync(es2, ARPC_TYPE_CPORT_CONNECTED, &req, sizeof(req), in es2_cport_connected()
607 struct es2_ap_dev *es2 = hd_to_es2(hd); in es2_cport_flush() local
608 struct device *dev = &es2->usb_dev->dev; in es2_cport_flush()
613 ret = arpc_sync(es2, ARPC_TYPE_CPORT_FLUSH, &req, sizeof(req), in es2_cport_flush()
626 struct es2_ap_dev *es2 = hd_to_es2(hd); in es2_cport_shutdown() local
627 struct device *dev = &es2->usb_dev->dev; in es2_cport_shutdown()
638 ret = arpc_sync(es2, ARPC_TYPE_CPORT_SHUTDOWN, &req, sizeof(req), in es2_cport_shutdown()
652 struct es2_ap_dev *es2 = hd_to_es2(hd); in es2_cport_quiesce() local
653 struct device *dev = &es2->usb_dev->dev; in es2_cport_quiesce()
667 ret = arpc_sync(es2, ARPC_TYPE_CPORT_QUIESCE, &req, sizeof(req), in es2_cport_quiesce()
680 struct es2_ap_dev *es2 = hd_to_es2(hd); in es2_cport_clear() local
681 struct device *dev = &es2->usb_dev->dev; in es2_cport_clear()
686 ret = arpc_sync(es2, ARPC_TYPE_CPORT_CLEAR, &req, sizeof(req), in es2_cport_clear()
699 struct es2_ap_dev *es2 = hd_to_es2(hd); in latency_tag_enable() local
700 struct usb_device *udev = es2->usb_dev; in latency_tag_enable()
717 struct es2_ap_dev *es2 = hd_to_es2(hd); in latency_tag_disable() local
718 struct usb_device *udev = es2->usb_dev; in latency_tag_disable()
776 static void es2_destroy(struct es2_ap_dev *es2) in es2_destroy() argument
782 debugfs_remove(es2->apb_log_enable_dentry); in es2_destroy()
783 usb_log_disable(es2); in es2_destroy()
787 urb = es2->cport_out_urb[i]; in es2_destroy()
790 es2->cport_out_urb[i] = NULL; in es2_destroy()
791 es2->cport_out_urb_busy[i] = false; /* just to be anal */ in es2_destroy()
795 usb_free_urb(es2->arpc_urb[i]); in es2_destroy()
796 kfree(es2->arpc_buffer[i]); in es2_destroy()
797 es2->arpc_buffer[i] = NULL; in es2_destroy()
801 usb_free_urb(es2->cport_in.urb[i]); in es2_destroy()
802 kfree(es2->cport_in.buffer[i]); in es2_destroy()
803 es2->cport_in.buffer[i] = NULL; in es2_destroy()
807 gb_hd_cport_release_reserved(es2->hd, ES2_CPORT_CDSI1); in es2_destroy()
808 gb_hd_cport_release_reserved(es2->hd, ES2_CPORT_CDSI0); in es2_destroy()
810 udev = es2->usb_dev; in es2_destroy()
811 gb_hd_put(es2->hd); in es2_destroy()
863 struct es2_ap_dev *es2 = hd_to_es2(hd); in cport_out_callback() local
869 spin_lock_irqsave(&es2->cport_out_urb_lock, flags); in cport_out_callback()
871 spin_unlock_irqrestore(&es2->cport_out_urb_lock, flags); in cport_out_callback()
879 free_urb(es2, urb); in cport_out_callback()
925 static struct arpc *arpc_find(struct es2_ap_dev *es2, __le16 id) in arpc_find() argument
929 list_for_each_entry(rpc, &es2->arpcs, list) { in arpc_find()
937 static void arpc_add(struct es2_ap_dev *es2, struct arpc *rpc) in arpc_add() argument
940 rpc->req->id = cpu_to_le16(es2->arpc_id_cycle++); in arpc_add()
941 list_add_tail(&rpc->list, &es2->arpcs); in arpc_add()
944 static void arpc_del(struct es2_ap_dev *es2, struct arpc *rpc) in arpc_del() argument
952 static int arpc_send(struct es2_ap_dev *es2, struct arpc *rpc, int timeout) in arpc_send() argument
954 struct usb_device *udev = es2->usb_dev; in arpc_send()
976 static int arpc_sync(struct es2_ap_dev *es2, u8 type, void *payload, in arpc_sync() argument
990 spin_lock_irqsave(&es2->arpc_lock, flags); in arpc_sync()
991 arpc_add(es2, rpc); in arpc_sync()
992 spin_unlock_irqrestore(&es2->arpc_lock, flags); in arpc_sync()
994 retval = arpc_send(es2, rpc, timeout); in arpc_sync()
1016 spin_lock_irqsave(&es2->arpc_lock, flags); in arpc_sync()
1017 arpc_del(es2, rpc); in arpc_sync()
1018 spin_unlock_irqrestore(&es2->arpc_lock, flags); in arpc_sync()
1022 dev_err(&es2->usb_dev->dev, in arpc_sync()
1031 struct es2_ap_dev *es2 = urb->context; in arpc_in_callback() local
1057 spin_lock_irqsave(&es2->arpc_lock, flags); in arpc_in_callback()
1058 rpc = arpc_find(es2, resp->id); in arpc_in_callback()
1062 spin_unlock_irqrestore(&es2->arpc_lock, flags); in arpc_in_callback()
1066 arpc_del(es2, rpc); in arpc_in_callback()
1069 spin_unlock_irqrestore(&es2->arpc_lock, flags); in arpc_in_callback()
1079 static void apb_log_get(struct es2_ap_dev *es2, char *buf) in apb_log_get() argument
1084 retval = usb_control_msg(es2->usb_dev, in apb_log_get()
1085 usb_rcvctrlpipe(es2->usb_dev, 0), in apb_log_get()
1094 kfifo_in(&es2->apb_log_fifo, buf, retval); in apb_log_get()
1100 struct es2_ap_dev *es2 = data; in apb_log_poll() local
1109 apb_log_get(es2, buf); in apb_log_poll()
1120 struct es2_ap_dev *es2 = file_inode(f)->i_private; in apb_log_read() local
1132 copied = kfifo_out(&es2->apb_log_fifo, tmp_buf, count); in apb_log_read()
1144 static void usb_log_enable(struct es2_ap_dev *es2) in usb_log_enable() argument
1146 if (!IS_ERR_OR_NULL(es2->apb_log_task)) in usb_log_enable()
1150 es2->apb_log_task = kthread_run(apb_log_poll, es2, "apb_log"); in usb_log_enable()
1151 if (IS_ERR(es2->apb_log_task)) in usb_log_enable()
1154 es2->apb_log_dentry = debugfs_create_file("apb_log", 0444, in usb_log_enable()
1155 gb_debugfs_get(), es2, in usb_log_enable()
1159 static void usb_log_disable(struct es2_ap_dev *es2) in usb_log_disable() argument
1161 if (IS_ERR_OR_NULL(es2->apb_log_task)) in usb_log_disable()
1164 debugfs_remove(es2->apb_log_dentry); in usb_log_disable()
1165 es2->apb_log_dentry = NULL; in usb_log_disable()
1167 kthread_stop(es2->apb_log_task); in usb_log_disable()
1168 es2->apb_log_task = NULL; in usb_log_disable()
1174 struct es2_ap_dev *es2 = file_inode(f)->i_private; in apb_log_enable_read() local
1175 int enable = !IS_ERR_OR_NULL(es2->apb_log_task); in apb_log_enable_read()
1187 struct es2_ap_dev *es2 = file_inode(f)->i_private; in apb_log_enable_write() local
1194 usb_log_enable(es2); in apb_log_enable_write()
1196 usb_log_disable(es2); in apb_log_enable_write()
1252 struct es2_ap_dev *es2; in ap_probe() local
1282 es2 = hd_to_es2(hd); in ap_probe()
1283 es2->hd = hd; in ap_probe()
1284 es2->usb_intf = interface; in ap_probe()
1285 es2->usb_dev = udev; in ap_probe()
1286 spin_lock_init(&es2->cport_out_urb_lock); in ap_probe()
1287 INIT_KFIFO(es2->apb_log_fifo); in ap_probe()
1288 usb_set_intfdata(interface, es2); in ap_probe()
1309 es2->cport_in.endpoint = ep_addr; in ap_probe()
1312 es2->arpc_endpoint_in = ep_addr; in ap_probe()
1323 es2->cport_out_endpoint = ep_addr; in ap_probe()
1352 es2->cport_in.urb[i] = urb; in ap_probe()
1361 usb_rcvbulkpipe(udev, es2->cport_in.endpoint), in ap_probe()
1365 es2->cport_in.buffer[i] = buffer; in ap_probe()
1378 es2->arpc_urb[i] = urb; in ap_probe()
1388 es2->arpc_endpoint_in), in ap_probe()
1390 arpc_in_callback, es2); in ap_probe()
1392 es2->arpc_buffer[i] = buffer; in ap_probe()
1405 es2->cport_out_urb[i] = urb; in ap_probe()
1406 es2->cport_out_urb_busy[i] = false; /* just to be anal */ in ap_probe()
1410 es2->apb_log_enable_dentry = debugfs_create_file("apb_log_enable", in ap_probe()
1412 gb_debugfs_get(), es2, in ap_probe()
1415 INIT_LIST_HEAD(&es2->arpcs); in ap_probe()
1416 spin_lock_init(&es2->arpc_lock); in ap_probe()
1418 retval = es2_arpc_in_enable(es2); in ap_probe()
1426 retval = es2_cport_in_enable(es2, &es2->cport_in); in ap_probe()
1435 es2_arpc_in_disable(es2); in ap_probe()
1437 es2_destroy(es2); in ap_probe()
1444 struct es2_ap_dev *es2 = usb_get_intfdata(interface); in ap_disconnect() local
1446 gb_hd_del(es2->hd); in ap_disconnect()
1448 es2_cport_in_disable(es2, &es2->cport_in); in ap_disconnect()
1449 es2_arpc_in_disable(es2); in ap_disconnect()
1451 es2_destroy(es2); in ap_disconnect()