[xilinx-xlnx:xlnx_rebase_v5.10 1566/1981] drivers/usb/cdns3/ep0.c:690: warning: expecting prototype for cdns3_gadget_ep0_queue Transfer data on endpoint zero(). Prototype was for cdns3_gadget_ep0_queue() instead
kernel test robot
lkp at intel.com
Tue Dec 14 09:44:27 PST 2021
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.10
head: 87ec9a2d98a7a7dfc98b57348a0ec310fd170e4b
commit: d3328cb2dd0a2fb94a09587105c37299e296d4c6 [1566/1981] scripts: kernel-doc: validate kernel-doc markup with the actual names
config: x86_64-randconfig-a016-20211214 (https://download.01.org/0day-ci/archive/20211215/202112150159.zq5SREqP-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a2ddb6c8ac29412b1361810972e15221fa021c)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/Xilinx/linux-xlnx/commit/d3328cb2dd0a2fb94a09587105c37299e296d4c6
git remote add xilinx-xlnx https://github.com/Xilinx/linux-xlnx
git fetch --no-tags xilinx-xlnx xlnx_rebase_v5.10
git checkout d3328cb2dd0a2fb94a09587105c37299e296d4c6
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/usb/cdns3/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>
All warnings (new ones prefixed by >>):
>> drivers/usb/cdns3/ep0.c:690: warning: expecting prototype for cdns3_gadget_ep0_queue Transfer data on endpoint zero(). Prototype was for cdns3_gadget_ep0_queue() instead
>> drivers/usb/cdns3/ep0.c:781: warning: expecting prototype for cdns3_gadget_ep_set_wedge Set wedge on selected endpoint(). Prototype was for cdns3_gadget_ep_set_wedge() instead
>> drivers/usb/cdns3/ep0.c:876: warning: expecting prototype for cdns3_init_ep0 Initializes software endpoint 0 of gadget(). Prototype was for cdns3_init_ep0() instead
--
>> drivers/usb/cdns3/gadget.c:162: warning: expecting prototype for select_ep(). Prototype was for cdns3_select_ep() instead
>> drivers/usb/cdns3/gadget.c:509: warning: expecting prototype for cdns3_wa2_descmiss_copy_data copy data from internal requests to(). Prototype was for cdns3_wa2_descmiss_copy_data() instead
>> drivers/usb/cdns3/gadget.c:2029: warning: expecting prototype for cdns3_ep_config Configure hardware endpoint(). Prototype was for cdns3_ep_config() instead
>> drivers/usb/cdns3/gadget.c:2233: warning: expecting prototype for cdns3_gadget_ep_alloc_request Allocates request(). Prototype was for cdns3_gadget_ep_alloc_request() instead
>> drivers/usb/cdns3/gadget.c:2254: warning: expecting prototype for cdns3_gadget_ep_free_request Free memory occupied by request(). Prototype was for cdns3_gadget_ep_free_request() instead
>> drivers/usb/cdns3/gadget.c:2273: warning: expecting prototype for cdns3_gadget_ep_enable Enable endpoint(). Prototype was for cdns3_gadget_ep_enable() instead
>> drivers/usb/cdns3/gadget.c:2406: warning: expecting prototype for cdns3_gadget_ep_disable Disable endpoint(). Prototype was for cdns3_gadget_ep_disable() instead
>> drivers/usb/cdns3/gadget.c:2500: warning: expecting prototype for cdns3_gadget_ep_queue Transfer data on endpoint(). Prototype was for __cdns3_gadget_ep_queue() instead
>> drivers/usb/cdns3/gadget.c:2598: warning: expecting prototype for cdns3_gadget_ep_dequeue Remove request from transfer queue(). Prototype was for cdns3_gadget_ep_dequeue() instead
>> drivers/usb/cdns3/gadget.c:2662: warning: expecting prototype for __cdns3_gadget_ep_set_halt Sets stall on selected endpoint(). Prototype was for __cdns3_gadget_ep_set_halt() instead
>> drivers/usb/cdns3/gadget.c:2683: warning: expecting prototype for __cdns3_gadget_ep_clear_halt Clears stall on selected endpoint(). Prototype was for __cdns3_gadget_ep_clear_halt() instead
>> drivers/usb/cdns3/gadget.c:2730: warning: expecting prototype for clears stall on selected endpoint(). Prototype was for cdns3_gadget_ep_set_halt() instead
>> drivers/usb/cdns3/gadget.c:2775: warning: expecting prototype for cdns3_gadget_get_frame Returns number of actual ITP frame(). Prototype was for cdns3_gadget_get_frame() instead
>> drivers/usb/cdns3/gadget.c:2886: warning: expecting prototype for cdns3_gadget_udc_start Gadget start(). Prototype was for cdns3_gadget_udc_start() instead
>> drivers/usb/cdns3/gadget.c:2930: warning: expecting prototype for cdns3_gadget_udc_stop Stops gadget(). Prototype was for cdns3_gadget_udc_stop() instead
>> drivers/usb/cdns3/gadget.c:2993: warning: expecting prototype for cdns3_init_eps Initializes software endpoints of gadget(). Prototype was for cdns3_init_eps() instead
vim +690 drivers/usb/cdns3/ep0.c
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 678
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 679 /**
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 680 * cdns3_gadget_ep0_queue Transfer data on endpoint zero
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 681 * @ep: pointer to endpoint zero object
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 682 * @request: pointer to request object
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 683 * @gfp_flags: gfp flags
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 684 *
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 685 * Returns 0 on success, error code elsewhere
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 686 */
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 687 static int cdns3_gadget_ep0_queue(struct usb_ep *ep,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 688 struct usb_request *request,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 689 gfp_t gfp_flags)
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 @690 {
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 691 struct cdns3_endpoint *priv_ep = ep_to_cdns3_ep(ep);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 692 struct cdns3_device *priv_dev = priv_ep->cdns3_dev;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 693 unsigned long flags;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 694 int ret = 0;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 695 u8 zlp = 0;
52d3967704aea6c Pawel Laszczak 2020-10-22 696 int i;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 697
d0b78265cac9d8b Peter Chen 2020-06-23 698 spin_lock_irqsave(&priv_dev->lock, flags);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 699 trace_cdns3_ep0_queue(priv_dev, request);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 700
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 701 /* cancel the request if controller receive new SETUP packet. */
d0b78265cac9d8b Peter Chen 2020-06-23 702 if (cdns3_check_new_setup(priv_dev)) {
d0b78265cac9d8b Peter Chen 2020-06-23 703 spin_unlock_irqrestore(&priv_dev->lock, flags);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 704 return -ECONNRESET;
d0b78265cac9d8b Peter Chen 2020-06-23 705 }
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 706
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 707 /* send STATUS stage. Should be called only for SET_CONFIGURATION */
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 708 if (priv_dev->ep0_stage == CDNS3_STATUS_STAGE) {
b21cf9371c2e659 Peter Chen 2020-09-01 709 u32 val;
b21cf9371c2e659 Peter Chen 2020-09-01 710
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 711 cdns3_select_ep(priv_dev, 0x00);
52d3967704aea6c Pawel Laszczak 2020-10-22 712
52d3967704aea6c Pawel Laszczak 2020-10-22 713 /*
52d3967704aea6c Pawel Laszczak 2020-10-22 714 * Configure all non-control EPs which are not enabled by class driver
52d3967704aea6c Pawel Laszczak 2020-10-22 715 */
52d3967704aea6c Pawel Laszczak 2020-10-22 716 for (i = 0; i < CDNS3_ENDPOINTS_MAX_COUNT; i++) {
52d3967704aea6c Pawel Laszczak 2020-10-22 717 priv_ep = priv_dev->eps[i];
52d3967704aea6c Pawel Laszczak 2020-10-22 718 if (priv_ep && priv_ep->flags & EP_CLAIMED &&
52d3967704aea6c Pawel Laszczak 2020-10-22 719 !(priv_ep->flags & EP_ENABLED))
52d3967704aea6c Pawel Laszczak 2020-10-22 720 cdns3_ep_config(priv_ep, 0);
52d3967704aea6c Pawel Laszczak 2020-10-22 721 }
52d3967704aea6c Pawel Laszczak 2020-10-22 722
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 723 cdns3_set_hw_configuration(priv_dev);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 724 cdns3_ep0_complete_setup(priv_dev, 0, 1);
b21cf9371c2e659 Peter Chen 2020-09-01 725 /* wait until configuration set */
b21cf9371c2e659 Peter Chen 2020-09-01 726 ret = readl_poll_timeout_atomic(&priv_dev->regs->usb_sts, val,
b21cf9371c2e659 Peter Chen 2020-09-01 727 val & USB_STS_CFGSTS_MASK, 1, 100);
b21cf9371c2e659 Peter Chen 2020-09-01 728 if (ret == -ETIMEDOUT)
b21cf9371c2e659 Peter Chen 2020-09-01 729 dev_warn(priv_dev->dev, "timeout for waiting configuration set\n");
b21cf9371c2e659 Peter Chen 2020-09-01 730
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 731 request->actual = 0;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 732 priv_dev->status_completion_no_call = true;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 733 priv_dev->pending_status_request = request;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 734 spin_unlock_irqrestore(&priv_dev->lock, flags);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 735
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 736 /*
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 737 * Since there is no completion interrupt for status stage,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 738 * it needs to call ->completion in software after
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 739 * ep0_queue is back.
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 740 */
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 741 queue_work(system_freezable_wq, &priv_dev->pending_status_wq);
b21cf9371c2e659 Peter Chen 2020-09-01 742 return ret;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 743 }
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 744
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 745 if (!list_empty(&priv_ep->pending_req_list)) {
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 746 dev_err(priv_dev->dev,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 747 "can't handle multiple requests for ep0\n");
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 748 spin_unlock_irqrestore(&priv_dev->lock, flags);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 749 return -EBUSY;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 750 }
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 751
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 752 ret = usb_gadget_map_request_by_dev(priv_dev->sysdev, request,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 753 priv_dev->ep0_data_dir);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 754 if (ret) {
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 755 spin_unlock_irqrestore(&priv_dev->lock, flags);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 756 dev_err(priv_dev->dev, "failed to map request\n");
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 757 return -EINVAL;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 758 }
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 759
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 760 request->status = -EINPROGRESS;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 761 list_add_tail(&request->list, &priv_ep->pending_req_list);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 762
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 763 if (request->zero && request->length &&
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 764 (request->length % ep->maxpacket == 0))
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 765 zlp = 1;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 766
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 767 cdns3_ep0_run_transfer(priv_dev, request->dma, request->length, 1, zlp);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 768
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 769 spin_unlock_irqrestore(&priv_dev->lock, flags);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 770
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 771 return ret;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 772 }
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 773
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 774 /**
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 775 * cdns3_gadget_ep_set_wedge Set wedge on selected endpoint
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 776 * @ep: endpoint object
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 777 *
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 778 * Returns 0
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 779 */
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 780 int cdns3_gadget_ep_set_wedge(struct usb_ep *ep)
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 @781 {
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 782 struct cdns3_endpoint *priv_ep = ep_to_cdns3_ep(ep);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 783 struct cdns3_device *priv_dev = priv_ep->cdns3_dev;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 784
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 785 dev_dbg(priv_dev->dev, "Wedge for %s\n", ep->name);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 786 cdns3_gadget_ep_set_halt(ep, 1);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 787 priv_ep->flags |= EP_WEDGE;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 788
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 789 return 0;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 790 }
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 791
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 792 const struct usb_ep_ops cdns3_gadget_ep0_ops = {
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 793 .enable = cdns3_gadget_ep0_enable,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 794 .disable = cdns3_gadget_ep0_disable,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 795 .alloc_request = cdns3_gadget_ep_alloc_request,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 796 .free_request = cdns3_gadget_ep_free_request,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 797 .queue = cdns3_gadget_ep0_queue,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 798 .dequeue = cdns3_gadget_ep_dequeue,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 799 .set_halt = cdns3_gadget_ep0_set_halt,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 800 .set_wedge = cdns3_gadget_ep_set_wedge,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 801 };
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 802
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 803 /**
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 804 * cdns3_ep0_config - Configures default endpoint
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 805 * @priv_dev: extended gadget object
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 806 *
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 807 * Functions sets parameters: maximal packet size and enables interrupts
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 808 */
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 809 void cdns3_ep0_config(struct cdns3_device *priv_dev)
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 810 {
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 811 struct cdns3_usb_regs __iomem *regs;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 812 struct cdns3_endpoint *priv_ep;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 813 u32 max_packet_size = 64;
52d3967704aea6c Pawel Laszczak 2020-10-22 814 u32 ep_cfg;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 815
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 816 regs = priv_dev->regs;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 817
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 818 if (priv_dev->gadget.speed == USB_SPEED_SUPER)
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 819 max_packet_size = 512;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 820
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 821 priv_ep = priv_dev->eps[0];
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 822
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 823 if (!list_empty(&priv_ep->pending_req_list)) {
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 824 struct usb_request *request;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 825
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 826 request = cdns3_next_request(&priv_ep->pending_req_list);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 827 list_del_init(&request->list);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 828 }
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 829
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 830 priv_dev->u1_allowed = 0;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 831 priv_dev->u2_allowed = 0;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 832
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 833 priv_dev->gadget.ep0->maxpacket = max_packet_size;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 834 cdns3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(max_packet_size);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 835
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 836 /* init ep out */
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 837 cdns3_select_ep(priv_dev, USB_DIR_OUT);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 838
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 839 if (priv_dev->dev_ver >= DEV_VER_V3) {
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 840 cdns3_set_register_bit(&priv_dev->regs->dtrans,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 841 BIT(0) | BIT(16));
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 842 cdns3_set_register_bit(&priv_dev->regs->tdl_from_trb,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 843 BIT(0) | BIT(16));
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 844 }
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 845
52d3967704aea6c Pawel Laszczak 2020-10-22 846 ep_cfg = EP_CFG_ENABLE | EP_CFG_MAXPKTSIZE(max_packet_size);
52d3967704aea6c Pawel Laszczak 2020-10-22 847
52d3967704aea6c Pawel Laszczak 2020-10-22 848 if (!(priv_ep->flags & EP_CONFIGURED))
52d3967704aea6c Pawel Laszczak 2020-10-22 849 writel(ep_cfg, ®s->ep_cfg);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 850
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 851 writel(EP_STS_EN_SETUPEN | EP_STS_EN_DESCMISEN | EP_STS_EN_TRBERREN,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 852 ®s->ep_sts_en);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 853
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 854 /* init ep in */
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 855 cdns3_select_ep(priv_dev, USB_DIR_IN);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 856
52d3967704aea6c Pawel Laszczak 2020-10-22 857 if (!(priv_ep->flags & EP_CONFIGURED))
52d3967704aea6c Pawel Laszczak 2020-10-22 858 writel(ep_cfg, ®s->ep_cfg);
52d3967704aea6c Pawel Laszczak 2020-10-22 859
52d3967704aea6c Pawel Laszczak 2020-10-22 860 priv_ep->flags |= EP_CONFIGURED;
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 861
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 862 writel(EP_STS_EN_SETUPEN | EP_STS_EN_TRBERREN, ®s->ep_sts_en);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 863
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 864 cdns3_set_register_bit(®s->usb_conf, USB_CONF_U1DS | USB_CONF_U2DS);
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 865 }
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 866
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 867 /**
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 868 * cdns3_init_ep0 Initializes software endpoint 0 of gadget
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 869 * @priv_dev: extended gadget object
9293b7db8c33b28 Lee Jones 2020-07-02 870 * @priv_ep: extended endpoint object
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 871 *
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 872 * Returns 0 on success else error code.
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 873 */
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 874 int cdns3_init_ep0(struct cdns3_device *priv_dev,
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 875 struct cdns3_endpoint *priv_ep)
7733f6c32e36ff9 Pawel Laszczak 2019-08-26 @876 {
:::::: The code at line 690 was first introduced by commit
:::::: 7733f6c32e36ff9d7adadf40001039bf219b1cbe usb: cdns3: Add Cadence USB3 DRD Driver
:::::: TO: Pawel Laszczak <pawell at cadence.com>
:::::: CC: Felipe Balbi <felipe.balbi at linux.intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
More information about the linux-arm-kernel
mailing list