Lines Matching refs:pep

345 int cdnsp_ep_enqueue(struct cdnsp_ep *pep, struct cdnsp_request *preq)
347 struct cdnsp_device *pdev = pep->pdev;
351 if (preq->epnum == 0 && !list_empty(&pep->pending_list)) {
359 preq->direction = pep->direction;
360 preq->epnum = pep->number;
363 ret = usb_gadget_map_request_by_dev(pdev->dev, request, pep->direction);
369 list_add_tail(&preq->list, &pep->pending_list);
373 switch (usb_endpoint_type(pep->endpoint.desc)) {
392 pep->direction);
424 int cdnsp_ep_dequeue(struct cdnsp_ep *pep, struct cdnsp_request *preq)
426 struct cdnsp_device *pdev = pep->pdev;
432 if (GET_EP_CTX_STATE(pep->out_ctx) == EP_STATE_RUNNING)
433 ret_stop = cdnsp_cmd_stop_ep(pdev, pep);
435 ret_rem = cdnsp_remove_request(pdev, preq, pep);
489 struct cdnsp_ep *pep)
508 TRB_TO_EP_ID(data) == (pep->idx + 1)) {
597 struct cdnsp_ep *pep,
604 ret = cdnsp_cmd_stop_ep(pdev, pep);
609 if (GET_EP_CTX_STATE(pep->out_ctx) == EP_STATE_STOPPED) {
610 cdnsp_queue_halt_endpoint(pdev, pep->idx);
615 pep->ep_state |= EP_HALTED;
617 cdnsp_queue_reset_ep(pdev, pep->idx);
620 trace_cdnsp_handle_cmd_reset_ep(pep->out_ctx);
625 pep->ep_state &= ~EP_HALTED;
627 if (pep->idx != 0 && !(pep->ep_state & EP_WEDGE))
628 cdnsp_ring_doorbell_for_active_rings(pdev, pep);
630 pep->ep_state &= ~EP_WEDGE;
637 struct cdnsp_ep *pep)
668 ep_sts = GET_EP_CTX_STATE(pep->out_ctx);
676 trace_cdnsp_handle_cmd_config_ep(pep->out_ctx);
766 int cdnsp_alloc_streams(struct cdnsp_device *pdev, struct cdnsp_ep *pep)
768 unsigned int num_streams = usb_ss_max_streams(pep->endpoint.comp_desc);
788 trace_cdnsp_stream_number(pep, num_stream_ctxs, num_streams);
790 ret = cdnsp_alloc_stream_info(pdev, pep, num_stream_ctxs, num_streams);
794 cdnsp_setup_streams_ep_input_ctx(pdev, pep->in_ctx, &pep->stream_info);
796 pep->ep_state |= EP_HAS_STREAMS;
797 pep->stream_info.td_count = 0;
798 pep->stream_info.first_prime_det = 0;
932 struct cdnsp_ep *pep;
941 pep = to_cdnsp_ep(ep);
942 pdev = pep->pdev;
943 pep->ep_state &= ~EP_UNCONFIGURED;
945 if (dev_WARN_ONCE(pdev->dev, pep->ep_state & EP_ENABLED,
946 "%s is already enabled\n", pep->name))
958 pep->interval = desc->bInterval ? BIT(desc->bInterval - 1) : 0;
962 pep->interval = desc->bInterval << 3;
964 pep->interval = BIT(desc->bInterval - 1) << 3;
968 if (pep->interval > BIT(12)) {
977 ret = cdnsp_endpoint_init(pdev, pep, GFP_ATOMIC);
985 ret = cdnsp_update_eps_configuration(pdev, pep);
987 cdnsp_free_endpoint_rings(pdev, pep);
991 pep->ep_state |= EP_ENABLED;
992 pep->ep_state &= ~EP_STOPPED;
995 trace_cdnsp_ep_enable_end(pep, 0);
1006 struct cdnsp_ep *pep;
1014 pep = to_cdnsp_ep(ep);
1015 pdev = pep->pdev;
1019 if (!(pep->ep_state & EP_ENABLED)) {
1020 dev_err(pdev->dev, "%s is already disabled\n", pep->name);
1025 pep->ep_state |= EP_DIS_IN_RROGRESS;
1028 if (!(pep->ep_state & EP_UNCONFIGURED))
1029 cdnsp_cmd_stop_ep(pdev, pep);
1032 while (!list_empty(&pep->pending_list)) {
1033 preq = next_request(&pep->pending_list);
1034 cdnsp_ep_dequeue(pep, preq);
1037 cdnsp_invalidate_ep_events(pdev, pep);
1039 pep->ep_state &= ~EP_DIS_IN_RROGRESS;
1040 drop_flag = cdnsp_get_endpoint_flag(pep->endpoint.desc);
1045 cdnsp_endpoint_zero(pdev, pep);
1047 if (!(pep->ep_state & EP_UNCONFIGURED))
1048 ret = cdnsp_update_eps_configuration(pdev, pep);
1050 cdnsp_free_endpoint_rings(pdev, pep);
1052 pep->ep_state &= ~(EP_ENABLED | EP_UNCONFIGURED);
1053 pep->ep_state |= EP_STOPPED;
1056 trace_cdnsp_ep_disable_end(pep, 0);
1065 struct cdnsp_ep *pep = to_cdnsp_ep(ep);
1072 preq->epnum = pep->number;
1073 preq->pep = pep;
1095 struct cdnsp_ep *pep;
1102 pep = to_cdnsp_ep(ep);
1103 pdev = pep->pdev;
1105 if (!(pep->ep_state & EP_ENABLED)) {
1107 pep->name);
1113 ret = cdnsp_ep_enqueue(pep, preq);
1122 struct cdnsp_ep *pep = to_cdnsp_ep(ep);
1123 struct cdnsp_device *pdev = pep->pdev;
1130 if (!pep->endpoint.desc) {
1133 pep->name);
1138 if (!(pep->ep_state & EP_ENABLED))
1142 ret = cdnsp_ep_dequeue(pep, to_cdnsp_request(request));
1150 struct cdnsp_ep *pep = to_cdnsp_ep(ep);
1151 struct cdnsp_device *pdev = pep->pdev;
1158 preq = next_request(&pep->pending_list);
1161 trace_cdnsp_ep_busy_try_halt_again(pep, 0);
1167 ret = cdnsp_halt_endpoint(pdev, pep, value);
1176 struct cdnsp_ep *pep = to_cdnsp_ep(ep);
1177 struct cdnsp_device *pdev = pep->pdev;
1182 pep->ep_state |= EP_WEDGE;
1183 ret = cdnsp_halt_endpoint(pdev, pep, 1);
1211 void cdnsp_gadget_giveback(struct cdnsp_ep *pep,
1215 struct cdnsp_device *pdev = pep->pdev;
1229 usb_gadget_giveback_request(&pep->endpoint, &preq->request);
1571 struct cdnsp_ep *pep)
1578 if (!pep->direction) {
1579 pep->buffering = readl(reg + XBUF_RX_TAG_MASK_0_OFFSET);
1580 pep->buffering_period = readl(reg + XBUF_RX_TAG_MASK_1_OFFSET);
1581 pep->buffering = (pep->buffering + 1) / 2;
1582 pep->buffering_period = (pep->buffering_period + 1) / 2;
1591 reg += pep->number * sizeof(u32) * 2;
1593 pep->buffering = (readl(reg) + 1) / 2;
1594 pep->buffering_period = pep->buffering;
1600 struct cdnsp_ep *pep;
1620 pep = &pdev->eps[i];
1621 pep->pdev = pdev;
1622 pep->number = epnum;
1623 pep->direction = direction; /* 0 for OUT, 1 for IN. */
1630 snprintf(pep->name, sizeof(pep->name), "ep%d%s",
1633 pep->idx = 0;
1634 usb_ep_set_maxpacket_limit(&pep->endpoint, 512);
1635 pep->endpoint.maxburst = 1;
1636 pep->endpoint.ops = &cdnsp_gadget_ep0_ops;
1637 pep->endpoint.desc = &cdnsp_gadget_ep0_desc;
1638 pep->endpoint.comp_desc = NULL;
1639 pep->endpoint.caps.type_control = true;
1640 pep->endpoint.caps.dir_in = true;
1641 pep->endpoint.caps.dir_out = true;
1643 pdev->ep0_preq.epnum = pep->number;
1644 pdev->ep0_preq.pep = pep;
1645 pdev->gadget.ep0 = &pep->endpoint;
1647 snprintf(pep->name, sizeof(pep->name), "ep%d%s",
1648 epnum, (pep->direction) ? "in" : "out");
1650 pep->idx = (epnum * 2 + (direction ? 1 : 0)) - 1;
1651 usb_ep_set_maxpacket_limit(&pep->endpoint, 1024);
1653 pep->endpoint.max_streams = max_streams;
1654 pep->endpoint.ops = &cdnsp_gadget_ep_ops;
1655 list_add_tail(&pep->endpoint.ep_list,
1658 pep->endpoint.caps.type_iso = true;
1659 pep->endpoint.caps.type_bulk = true;
1660 pep->endpoint.caps.type_int = true;
1662 pep->endpoint.caps.dir_in = direction;
1663 pep->endpoint.caps.dir_out = !direction;
1666 pep->endpoint.name = pep->name;
1667 pep->in_ctx = cdnsp_get_ep_ctx(&pdev->in_ctx, pep->idx);
1668 pep->out_ctx = cdnsp_get_ep_ctx(&pdev->out_ctx, pep->idx);
1669 cdnsp_get_ep_buffering(pdev, pep);
1674 pep->name, 1024,
1675 str_yes_no(pep->endpoint.caps.type_control),
1676 str_yes_no(pep->endpoint.caps.type_int),
1677 str_yes_no(pep->endpoint.caps.type_bulk),
1678 str_yes_no(pep->endpoint.caps.type_iso),
1679 str_yes_no(pep->endpoint.caps.dir_in),
1680 str_yes_no(pep->endpoint.caps.dir_out));
1682 INIT_LIST_HEAD(&pep->pending_list);
1690 struct cdnsp_ep *pep;
1694 pep = &pdev->eps[i];
1695 if (pep->number != 0 && pep->out_ctx)
1696 list_del(&pep->endpoint.ep_list);