diff options
Diffstat (limited to 'drivers/usb/dwc3')
-rw-r--r-- | drivers/usb/dwc3/dwc3-omap.c | 15 | ||||
-rw-r--r-- | drivers/usb/dwc3/dwc3-pci.c | 2 | ||||
-rw-r--r-- | drivers/usb/dwc3/ep0.c | 48 | ||||
-rw-r--r-- | drivers/usb/dwc3/gadget.c | 39 | ||||
-rw-r--r-- | drivers/usb/dwc3/gadget.h | 3 | ||||
-rw-r--r-- | drivers/usb/dwc3/trace.h | 53 |
6 files changed, 103 insertions, 57 deletions
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c index 2f537d588225..a0aa9f3da441 100644 --- a/drivers/usb/dwc3/dwc3-omap.c +++ b/drivers/usb/dwc3/dwc3-omap.c | |||
@@ -597,7 +597,7 @@ static int dwc3_omap_prepare(struct device *dev) | |||
597 | { | 597 | { |
598 | struct dwc3_omap *omap = dev_get_drvdata(dev); | 598 | struct dwc3_omap *omap = dev_get_drvdata(dev); |
599 | 599 | ||
600 | dwc3_omap_write_irqmisc_set(omap, 0x00); | 600 | dwc3_omap_disable_irqs(omap); |
601 | 601 | ||
602 | return 0; | 602 | return 0; |
603 | } | 603 | } |
@@ -605,19 +605,8 @@ static int dwc3_omap_prepare(struct device *dev) | |||
605 | static void dwc3_omap_complete(struct device *dev) | 605 | static void dwc3_omap_complete(struct device *dev) |
606 | { | 606 | { |
607 | struct dwc3_omap *omap = dev_get_drvdata(dev); | 607 | struct dwc3_omap *omap = dev_get_drvdata(dev); |
608 | u32 reg; | ||
609 | 608 | ||
610 | reg = (USBOTGSS_IRQMISC_OEVT | | 609 | dwc3_omap_enable_irqs(omap); |
611 | USBOTGSS_IRQMISC_DRVVBUS_RISE | | ||
612 | USBOTGSS_IRQMISC_CHRGVBUS_RISE | | ||
613 | USBOTGSS_IRQMISC_DISCHRGVBUS_RISE | | ||
614 | USBOTGSS_IRQMISC_IDPULLUP_RISE | | ||
615 | USBOTGSS_IRQMISC_DRVVBUS_FALL | | ||
616 | USBOTGSS_IRQMISC_CHRGVBUS_FALL | | ||
617 | USBOTGSS_IRQMISC_DISCHRGVBUS_FALL | | ||
618 | USBOTGSS_IRQMISC_IDPULLUP_FALL); | ||
619 | |||
620 | dwc3_omap_write_irqmisc_set(omap, reg); | ||
621 | } | 610 | } |
622 | 611 | ||
623 | static int dwc3_omap_suspend(struct device *dev) | 612 | static int dwc3_omap_suspend(struct device *dev) |
diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c index 436fb08c40b8..a36cf66302fb 100644 --- a/drivers/usb/dwc3/dwc3-pci.c +++ b/drivers/usb/dwc3/dwc3-pci.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3 0xabcd | 30 | #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3 0xabcd |
31 | #define PCI_DEVICE_ID_INTEL_BYT 0x0f37 | 31 | #define PCI_DEVICE_ID_INTEL_BYT 0x0f37 |
32 | #define PCI_DEVICE_ID_INTEL_MRFLD 0x119e | 32 | #define PCI_DEVICE_ID_INTEL_MRFLD 0x119e |
33 | #define PCI_DEVICE_ID_INTEL_BSW 0x22B7 | ||
33 | 34 | ||
34 | struct dwc3_pci { | 35 | struct dwc3_pci { |
35 | struct device *dev; | 36 | struct device *dev; |
@@ -181,6 +182,7 @@ static const struct pci_device_id dwc3_pci_id_table[] = { | |||
181 | PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, | 182 | PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, |
182 | PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3), | 183 | PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3), |
183 | }, | 184 | }, |
185 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BSW), }, | ||
184 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT), }, | 186 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT), }, |
185 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MRFLD), }, | 187 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MRFLD), }, |
186 | { } /* Terminating Entry */ | 188 | { } /* Terminating Entry */ |
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index b35938777dde..711b23019d54 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/drivers/usb/dwc3/ep0.c | |||
@@ -256,7 +256,7 @@ static void dwc3_ep0_stall_and_restart(struct dwc3 *dwc) | |||
256 | 256 | ||
257 | /* stall is always issued on EP0 */ | 257 | /* stall is always issued on EP0 */ |
258 | dep = dwc->eps[0]; | 258 | dep = dwc->eps[0]; |
259 | __dwc3_gadget_ep_set_halt(dep, 1); | 259 | __dwc3_gadget_ep_set_halt(dep, 1, false); |
260 | dep->flags = DWC3_EP_ENABLED; | 260 | dep->flags = DWC3_EP_ENABLED; |
261 | dwc->delayed_status = false; | 261 | dwc->delayed_status = false; |
262 | 262 | ||
@@ -271,7 +271,7 @@ static void dwc3_ep0_stall_and_restart(struct dwc3 *dwc) | |||
271 | dwc3_ep0_out_start(dwc); | 271 | dwc3_ep0_out_start(dwc); |
272 | } | 272 | } |
273 | 273 | ||
274 | int dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value) | 274 | int __dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value) |
275 | { | 275 | { |
276 | struct dwc3_ep *dep = to_dwc3_ep(ep); | 276 | struct dwc3_ep *dep = to_dwc3_ep(ep); |
277 | struct dwc3 *dwc = dep->dwc; | 277 | struct dwc3 *dwc = dep->dwc; |
@@ -281,6 +281,20 @@ int dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value) | |||
281 | return 0; | 281 | return 0; |
282 | } | 282 | } |
283 | 283 | ||
284 | int dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value) | ||
285 | { | ||
286 | struct dwc3_ep *dep = to_dwc3_ep(ep); | ||
287 | struct dwc3 *dwc = dep->dwc; | ||
288 | unsigned long flags; | ||
289 | int ret; | ||
290 | |||
291 | spin_lock_irqsave(&dwc->lock, flags); | ||
292 | ret = __dwc3_gadget_ep0_set_halt(ep, value); | ||
293 | spin_unlock_irqrestore(&dwc->lock, flags); | ||
294 | |||
295 | return ret; | ||
296 | } | ||
297 | |||
284 | void dwc3_ep0_out_start(struct dwc3 *dwc) | 298 | void dwc3_ep0_out_start(struct dwc3 *dwc) |
285 | { | 299 | { |
286 | int ret; | 300 | int ret; |
@@ -466,7 +480,7 @@ static int dwc3_ep0_handle_feature(struct dwc3 *dwc, | |||
466 | return -EINVAL; | 480 | return -EINVAL; |
467 | if (set == 0 && (dep->flags & DWC3_EP_WEDGE)) | 481 | if (set == 0 && (dep->flags & DWC3_EP_WEDGE)) |
468 | break; | 482 | break; |
469 | ret = __dwc3_gadget_ep_set_halt(dep, set); | 483 | ret = __dwc3_gadget_ep_set_halt(dep, set, true); |
470 | if (ret) | 484 | if (ret) |
471 | return -EINVAL; | 485 | return -EINVAL; |
472 | break; | 486 | break; |
@@ -775,9 +789,6 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc, | |||
775 | 789 | ||
776 | dwc->ep0_next_event = DWC3_EP0_NRDY_STATUS; | 790 | dwc->ep0_next_event = DWC3_EP0_NRDY_STATUS; |
777 | 791 | ||
778 | r = next_request(&ep0->request_list); | ||
779 | ur = &r->request; | ||
780 | |||
781 | trb = dwc->ep0_trb; | 792 | trb = dwc->ep0_trb; |
782 | 793 | ||
783 | status = DWC3_TRB_SIZE_TRBSTS(trb->size); | 794 | status = DWC3_TRB_SIZE_TRBSTS(trb->size); |
@@ -790,6 +801,12 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc, | |||
790 | return; | 801 | return; |
791 | } | 802 | } |
792 | 803 | ||
804 | r = next_request(&ep0->request_list); | ||
805 | if (!r) | ||
806 | return; | ||
807 | |||
808 | ur = &r->request; | ||
809 | |||
793 | length = trb->size & DWC3_TRB_SIZE_MASK; | 810 | length = trb->size & DWC3_TRB_SIZE_MASK; |
794 | 811 | ||
795 | if (dwc->ep0_bounced) { | 812 | if (dwc->ep0_bounced) { |
@@ -811,12 +828,19 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc, | |||
811 | 828 | ||
812 | dwc3_ep0_stall_and_restart(dwc); | 829 | dwc3_ep0_stall_and_restart(dwc); |
813 | } else { | 830 | } else { |
814 | /* | 831 | dwc3_gadget_giveback(ep0, r, 0); |
815 | * handle the case where we have to send a zero packet. This | 832 | |
816 | * seems to be case when req.length > maxpacket. Could it be? | 833 | if (IS_ALIGNED(ur->length, ep0->endpoint.maxpacket) && |
817 | */ | 834 | ur->length && ur->zero) { |
818 | if (r) | 835 | int ret; |
819 | dwc3_gadget_giveback(ep0, r, 0); | 836 | |
837 | dwc->ep0_next_event = DWC3_EP0_COMPLETE; | ||
838 | |||
839 | ret = dwc3_ep0_start_trans(dwc, epnum, | ||
840 | dwc->ctrl_req_addr, 0, | ||
841 | DWC3_TRBCTL_CONTROL_DATA); | ||
842 | WARN_ON(ret < 0); | ||
843 | } | ||
820 | } | 844 | } |
821 | } | 845 | } |
822 | 846 | ||
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 3818b26bfc05..546ea5431b8c 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c | |||
@@ -525,12 +525,11 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, | |||
525 | if (!usb_endpoint_xfer_isoc(desc)) | 525 | if (!usb_endpoint_xfer_isoc(desc)) |
526 | return 0; | 526 | return 0; |
527 | 527 | ||
528 | memset(&trb_link, 0, sizeof(trb_link)); | ||
529 | |||
530 | /* Link TRB for ISOC. The HWO bit is never reset */ | 528 | /* Link TRB for ISOC. The HWO bit is never reset */ |
531 | trb_st_hw = &dep->trb_pool[0]; | 529 | trb_st_hw = &dep->trb_pool[0]; |
532 | 530 | ||
533 | trb_link = &dep->trb_pool[DWC3_TRB_NUM - 1]; | 531 | trb_link = &dep->trb_pool[DWC3_TRB_NUM - 1]; |
532 | memset(trb_link, 0, sizeof(*trb_link)); | ||
534 | 533 | ||
535 | trb_link->bpl = lower_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw)); | 534 | trb_link->bpl = lower_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw)); |
536 | trb_link->bph = upper_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw)); | 535 | trb_link->bph = upper_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw)); |
@@ -581,7 +580,7 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep) | |||
581 | 580 | ||
582 | /* make sure HW endpoint isn't stalled */ | 581 | /* make sure HW endpoint isn't stalled */ |
583 | if (dep->flags & DWC3_EP_STALL) | 582 | if (dep->flags & DWC3_EP_STALL) |
584 | __dwc3_gadget_ep_set_halt(dep, 0); | 583 | __dwc3_gadget_ep_set_halt(dep, 0, false); |
585 | 584 | ||
586 | reg = dwc3_readl(dwc->regs, DWC3_DALEPENA); | 585 | reg = dwc3_readl(dwc->regs, DWC3_DALEPENA); |
587 | reg &= ~DWC3_DALEPENA_EP(dep->number); | 586 | reg &= ~DWC3_DALEPENA_EP(dep->number); |
@@ -1202,15 +1201,28 @@ out0: | |||
1202 | return ret; | 1201 | return ret; |
1203 | } | 1202 | } |
1204 | 1203 | ||
1205 | int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value) | 1204 | int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol) |
1206 | { | 1205 | { |
1207 | struct dwc3_gadget_ep_cmd_params params; | 1206 | struct dwc3_gadget_ep_cmd_params params; |
1208 | struct dwc3 *dwc = dep->dwc; | 1207 | struct dwc3 *dwc = dep->dwc; |
1209 | int ret; | 1208 | int ret; |
1210 | 1209 | ||
1210 | if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) { | ||
1211 | dev_err(dwc->dev, "%s is of Isochronous type\n", dep->name); | ||
1212 | return -EINVAL; | ||
1213 | } | ||
1214 | |||
1211 | memset(¶ms, 0x00, sizeof(params)); | 1215 | memset(¶ms, 0x00, sizeof(params)); |
1212 | 1216 | ||
1213 | if (value) { | 1217 | if (value) { |
1218 | if (!protocol && ((dep->direction && dep->flags & DWC3_EP_BUSY) || | ||
1219 | (!list_empty(&dep->req_queued) || | ||
1220 | !list_empty(&dep->request_list)))) { | ||
1221 | dev_dbg(dwc->dev, "%s: pending request, cannot halt\n", | ||
1222 | dep->name); | ||
1223 | return -EAGAIN; | ||
1224 | } | ||
1225 | |||
1214 | ret = dwc3_send_gadget_ep_cmd(dwc, dep->number, | 1226 | ret = dwc3_send_gadget_ep_cmd(dwc, dep->number, |
1215 | DWC3_DEPCMD_SETSTALL, ¶ms); | 1227 | DWC3_DEPCMD_SETSTALL, ¶ms); |
1216 | if (ret) | 1228 | if (ret) |
@@ -1241,15 +1253,7 @@ static int dwc3_gadget_ep_set_halt(struct usb_ep *ep, int value) | |||
1241 | int ret; | 1253 | int ret; |
1242 | 1254 | ||
1243 | spin_lock_irqsave(&dwc->lock, flags); | 1255 | spin_lock_irqsave(&dwc->lock, flags); |
1244 | 1256 | ret = __dwc3_gadget_ep_set_halt(dep, value, false); | |
1245 | if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) { | ||
1246 | dev_err(dwc->dev, "%s is of Isochronous type\n", dep->name); | ||
1247 | ret = -EINVAL; | ||
1248 | goto out; | ||
1249 | } | ||
1250 | |||
1251 | ret = __dwc3_gadget_ep_set_halt(dep, value); | ||
1252 | out: | ||
1253 | spin_unlock_irqrestore(&dwc->lock, flags); | 1257 | spin_unlock_irqrestore(&dwc->lock, flags); |
1254 | 1258 | ||
1255 | return ret; | 1259 | return ret; |
@@ -1260,15 +1264,18 @@ static int dwc3_gadget_ep_set_wedge(struct usb_ep *ep) | |||
1260 | struct dwc3_ep *dep = to_dwc3_ep(ep); | 1264 | struct dwc3_ep *dep = to_dwc3_ep(ep); |
1261 | struct dwc3 *dwc = dep->dwc; | 1265 | struct dwc3 *dwc = dep->dwc; |
1262 | unsigned long flags; | 1266 | unsigned long flags; |
1267 | int ret; | ||
1263 | 1268 | ||
1264 | spin_lock_irqsave(&dwc->lock, flags); | 1269 | spin_lock_irqsave(&dwc->lock, flags); |
1265 | dep->flags |= DWC3_EP_WEDGE; | 1270 | dep->flags |= DWC3_EP_WEDGE; |
1266 | spin_unlock_irqrestore(&dwc->lock, flags); | ||
1267 | 1271 | ||
1268 | if (dep->number == 0 || dep->number == 1) | 1272 | if (dep->number == 0 || dep->number == 1) |
1269 | return dwc3_gadget_ep0_set_halt(ep, 1); | 1273 | ret = __dwc3_gadget_ep0_set_halt(ep, 1); |
1270 | else | 1274 | else |
1271 | return dwc3_gadget_ep_set_halt(ep, 1); | 1275 | ret = __dwc3_gadget_ep_set_halt(dep, 1, false); |
1276 | spin_unlock_irqrestore(&dwc->lock, flags); | ||
1277 | |||
1278 | return ret; | ||
1272 | } | 1279 | } |
1273 | 1280 | ||
1274 | /* -------------------------------------------------------------------------- */ | 1281 | /* -------------------------------------------------------------------------- */ |
diff --git a/drivers/usb/dwc3/gadget.h b/drivers/usb/dwc3/gadget.h index 178ad8982206..18ae3eaa8b6f 100644 --- a/drivers/usb/dwc3/gadget.h +++ b/drivers/usb/dwc3/gadget.h | |||
@@ -82,10 +82,11 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, | |||
82 | void dwc3_ep0_interrupt(struct dwc3 *dwc, | 82 | void dwc3_ep0_interrupt(struct dwc3 *dwc, |
83 | const struct dwc3_event_depevt *event); | 83 | const struct dwc3_event_depevt *event); |
84 | void dwc3_ep0_out_start(struct dwc3 *dwc); | 84 | void dwc3_ep0_out_start(struct dwc3 *dwc); |
85 | int __dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value); | ||
85 | int dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value); | 86 | int dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value); |
86 | int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request, | 87 | int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request, |
87 | gfp_t gfp_flags); | 88 | gfp_t gfp_flags); |
88 | int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value); | 89 | int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol); |
89 | 90 | ||
90 | /** | 91 | /** |
91 | * dwc3_gadget_ep_get_transfer_index - Gets transfer index from HW | 92 | * dwc3_gadget_ep_get_transfer_index - Gets transfer index from HW |
diff --git a/drivers/usb/dwc3/trace.h b/drivers/usb/dwc3/trace.h index 78aff1da089a..60b0f41eafc4 100644 --- a/drivers/usb/dwc3/trace.h +++ b/drivers/usb/dwc3/trace.h | |||
@@ -73,15 +73,23 @@ DECLARE_EVENT_CLASS(dwc3_log_ctrl, | |||
73 | TP_PROTO(struct usb_ctrlrequest *ctrl), | 73 | TP_PROTO(struct usb_ctrlrequest *ctrl), |
74 | TP_ARGS(ctrl), | 74 | TP_ARGS(ctrl), |
75 | TP_STRUCT__entry( | 75 | TP_STRUCT__entry( |
76 | __field(struct usb_ctrlrequest *, ctrl) | 76 | __field(__u8, bRequestType) |
77 | __field(__u8, bRequest) | ||
78 | __field(__le16, wValue) | ||
79 | __field(__le16, wIndex) | ||
80 | __field(__le16, wLength) | ||
77 | ), | 81 | ), |
78 | TP_fast_assign( | 82 | TP_fast_assign( |
79 | __entry->ctrl = ctrl; | 83 | __entry->bRequestType = ctrl->bRequestType; |
84 | __entry->bRequest = ctrl->bRequest; | ||
85 | __entry->wValue = ctrl->wValue; | ||
86 | __entry->wIndex = ctrl->wIndex; | ||
87 | __entry->wLength = ctrl->wLength; | ||
80 | ), | 88 | ), |
81 | TP_printk("bRequestType %02x bRequest %02x wValue %04x wIndex %04x wLength %d", | 89 | TP_printk("bRequestType %02x bRequest %02x wValue %04x wIndex %04x wLength %d", |
82 | __entry->ctrl->bRequestType, __entry->ctrl->bRequest, | 90 | __entry->bRequestType, __entry->bRequest, |
83 | le16_to_cpu(__entry->ctrl->wValue), le16_to_cpu(__entry->ctrl->wIndex), | 91 | le16_to_cpu(__entry->wValue), le16_to_cpu(__entry->wIndex), |
84 | le16_to_cpu(__entry->ctrl->wLength) | 92 | le16_to_cpu(__entry->wLength) |
85 | ) | 93 | ) |
86 | ); | 94 | ); |
87 | 95 | ||
@@ -94,15 +102,22 @@ DECLARE_EVENT_CLASS(dwc3_log_request, | |||
94 | TP_PROTO(struct dwc3_request *req), | 102 | TP_PROTO(struct dwc3_request *req), |
95 | TP_ARGS(req), | 103 | TP_ARGS(req), |
96 | TP_STRUCT__entry( | 104 | TP_STRUCT__entry( |
105 | __dynamic_array(char, name, DWC3_MSG_MAX) | ||
97 | __field(struct dwc3_request *, req) | 106 | __field(struct dwc3_request *, req) |
107 | __field(unsigned, actual) | ||
108 | __field(unsigned, length) | ||
109 | __field(int, status) | ||
98 | ), | 110 | ), |
99 | TP_fast_assign( | 111 | TP_fast_assign( |
112 | snprintf(__get_str(name), DWC3_MSG_MAX, "%s", req->dep->name); | ||
100 | __entry->req = req; | 113 | __entry->req = req; |
114 | __entry->actual = req->request.actual; | ||
115 | __entry->length = req->request.length; | ||
116 | __entry->status = req->request.status; | ||
101 | ), | 117 | ), |
102 | TP_printk("%s: req %p length %u/%u ==> %d", | 118 | TP_printk("%s: req %p length %u/%u ==> %d", |
103 | __entry->req->dep->name, __entry->req, | 119 | __get_str(name), __entry->req, __entry->actual, __entry->length, |
104 | __entry->req->request.actual, __entry->req->request.length, | 120 | __entry->status |
105 | __entry->req->request.status | ||
106 | ) | 121 | ) |
107 | ); | 122 | ); |
108 | 123 | ||
@@ -158,17 +173,17 @@ DECLARE_EVENT_CLASS(dwc3_log_gadget_ep_cmd, | |||
158 | struct dwc3_gadget_ep_cmd_params *params), | 173 | struct dwc3_gadget_ep_cmd_params *params), |
159 | TP_ARGS(dep, cmd, params), | 174 | TP_ARGS(dep, cmd, params), |
160 | TP_STRUCT__entry( | 175 | TP_STRUCT__entry( |
161 | __field(struct dwc3_ep *, dep) | 176 | __dynamic_array(char, name, DWC3_MSG_MAX) |
162 | __field(unsigned int, cmd) | 177 | __field(unsigned int, cmd) |
163 | __field(struct dwc3_gadget_ep_cmd_params *, params) | 178 | __field(struct dwc3_gadget_ep_cmd_params *, params) |
164 | ), | 179 | ), |
165 | TP_fast_assign( | 180 | TP_fast_assign( |
166 | __entry->dep = dep; | 181 | snprintf(__get_str(name), DWC3_MSG_MAX, "%s", dep->name); |
167 | __entry->cmd = cmd; | 182 | __entry->cmd = cmd; |
168 | __entry->params = params; | 183 | __entry->params = params; |
169 | ), | 184 | ), |
170 | TP_printk("%s: cmd '%s' [%d] params %08x %08x %08x\n", | 185 | TP_printk("%s: cmd '%s' [%d] params %08x %08x %08x\n", |
171 | __entry->dep->name, dwc3_gadget_ep_cmd_string(__entry->cmd), | 186 | __get_str(name), dwc3_gadget_ep_cmd_string(__entry->cmd), |
172 | __entry->cmd, __entry->params->param0, | 187 | __entry->cmd, __entry->params->param0, |
173 | __entry->params->param1, __entry->params->param2 | 188 | __entry->params->param1, __entry->params->param2 |
174 | ) | 189 | ) |
@@ -184,16 +199,24 @@ DECLARE_EVENT_CLASS(dwc3_log_trb, | |||
184 | TP_PROTO(struct dwc3_ep *dep, struct dwc3_trb *trb), | 199 | TP_PROTO(struct dwc3_ep *dep, struct dwc3_trb *trb), |
185 | TP_ARGS(dep, trb), | 200 | TP_ARGS(dep, trb), |
186 | TP_STRUCT__entry( | 201 | TP_STRUCT__entry( |
187 | __field(struct dwc3_ep *, dep) | 202 | __dynamic_array(char, name, DWC3_MSG_MAX) |
188 | __field(struct dwc3_trb *, trb) | 203 | __field(struct dwc3_trb *, trb) |
204 | __field(u32, bpl) | ||
205 | __field(u32, bph) | ||
206 | __field(u32, size) | ||
207 | __field(u32, ctrl) | ||
189 | ), | 208 | ), |
190 | TP_fast_assign( | 209 | TP_fast_assign( |
191 | __entry->dep = dep; | 210 | snprintf(__get_str(name), DWC3_MSG_MAX, "%s", dep->name); |
192 | __entry->trb = trb; | 211 | __entry->trb = trb; |
212 | __entry->bpl = trb->bpl; | ||
213 | __entry->bph = trb->bph; | ||
214 | __entry->size = trb->size; | ||
215 | __entry->ctrl = trb->ctrl; | ||
193 | ), | 216 | ), |
194 | TP_printk("%s: trb %p bph %08x bpl %08x size %08x ctrl %08x\n", | 217 | TP_printk("%s: trb %p bph %08x bpl %08x size %08x ctrl %08x\n", |
195 | __entry->dep->name, __entry->trb, __entry->trb->bph, | 218 | __get_str(name), __entry->trb, __entry->bph, __entry->bpl, |
196 | __entry->trb->bpl, __entry->trb->size, __entry->trb->ctrl | 219 | __entry->size, __entry->ctrl |
197 | ) | 220 | ) |
198 | ); | 221 | ); |
199 | 222 | ||