1. 14 9月, 2021 1 次提交
  2. 10 6月, 2021 1 次提交
  3. 27 5月, 2021 2 次提交
    • L
      usb: cdns3: cdns3-gadget: Provide correct function naming for '__cdns3_gadget_ep_queue()' · 00dfda2d
      Lee Jones 提交于
      Fixes the following W=1 kernel build warning(s):
      
       drivers/usb/cdns3/cdns3-gadget.c:2499: warning: expecting prototype for cdns3_gadget_ep_queue(). Prototype was for __cdns3_gadget_ep_queue() instead
      
      Cc: Peter Chen <peter.chen@kernel.org>
      Cc: Pawel Laszczak <pawell@cadence.com>
      Cc: Roger Quadros <rogerq@kernel.org>
      Cc: Aswath Govindraju <a-govindraju@ti.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Pawel Jez <pjez@cadence.com>
      Cc: linux-usb@vger.kernel.org
      Acked-by: NPeter Chen <peter.chen@kernel.org>
      Signed-off-by: NLee Jones <lee.jones@linaro.org>
      Link: https://lore.kernel.org/r/20210526130037.856068-21-lee.jones@linaro.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      00dfda2d
    • L
      usb: cdns3: cdns3-gadget: Fix a bunch of kernel-doc related formatting issues · 56480a03
      Lee Jones 提交于
      Fixes the following W=1 kernel build warning(s):
      
       drivers/usb/cdns3/cdns3-gadget.c:163: warning: expecting prototype for select_ep(). Prototype was for cdns3_select_ep() instead
       drivers/usb/cdns3/cdns3-gadget.c:2025: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2224: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2247: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2264: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2399: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2489: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2589: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2656: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2677: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2722: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2768: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2877: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2923: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
       drivers/usb/cdns3/cdns3-gadget.c:2986: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
      
      Cc: Peter Chen <peter.chen@kernel.org>
      Cc: Pawel Laszczak <pawell@cadence.com>
      Cc: Roger Quadros <rogerq@kernel.org>
      Cc: Aswath Govindraju <a-govindraju@ti.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Pawel Jez <pjez@cadence.com>
      Cc: linux-usb@vger.kernel.org
      Acked-by: NPeter Chen <peter.chen@kernel.org>
      Signed-off-by: NLee Jones <lee.jones@linaro.org>
      Link: https://lore.kernel.org/r/20210526130037.856068-8-lee.jones@linaro.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      56480a03
  4. 25 5月, 2021 1 次提交
  5. 11 5月, 2021 2 次提交
  6. 12 4月, 2021 3 次提交
  7. 29 12月, 2020 3 次提交
    • P
      usb: cdns3: Fixes for sparse warnings · fba8701b
      Pawel Laszczak 提交于
      Patch fixes the following warnings:
      cdns3-gadget.c:1203: sparse: warning: incorrect type
                           in assignment (different base types)
      cdns3-gadget.c:1203: sparse:  expected restricted __le32 [usertype] length
      cdns3-gadget.c:1203: sparse:  got unsigned long
      cdns3-gadget.c:1250: sparse: warning: invalid assignment: |=
      cdns3-gadget.c:1250: sparse:  left side has type restricted __le32
      cdns3-gadget.c:1250: sparse:  right side has type unsigned long
      cdns3-gadget.c:1253: sparse: warning: invalid assignment: |=
      cdns3-gadget.c:1253: sparse:  left side has type restricted __le32
      cdns3-gadget.c:1253: sparse:  right side has type unsigned long
      cdns3-ep0.c:367: sparse: warning: restricted __le16 degrades to integer
      cdns3-ep0.c:792: sparse: warning: symbol 'cdns3_gadget_ep0_ops' was not
                                        declared. Should it be static?
      Reported-by: Nkernel test robot <lkp@intel.com>
      Signed-off-by: NPawel Laszczak <pawell@cadence.com>
      Signed-off-by: NPeter Chen <peter.chen@nxp.com>
      fba8701b
    • P
      usb: cdns3: Change file names for cdns3 driver. · 64b558f5
      Pawel Laszczak 提交于
      Patch adds prefix cdns3- to all file names related only to
      cdns3 driver.
      Signed-off-by: NPawel Laszczak <pawell@cadence.com>
      Signed-off-by: NPeter Chen <peter.chen@nxp.com>
      64b558f5
    • P
      usb: cdns3: Refactoring names in reusable code · 0b490046
      Pawel Laszczak 提交于
      Patch change the functions and objects names in reusable code.
      The reusable code includes core.c, core.h, drd.c and drd.h files.
      It also changes the names of all references to these functions and
      objects in other cdns3 files. There are a lot of changes, but all
      changes are very trivial.
      The reason of this patch is to avoid of mixing prefix cdns3 and cdnsp in
      in cdnsp driver what could introduce some confusion in understanding
      of cdnsp driver.
      This patch assumes to use three different prefixes in Cadence
      USB drivers:
        cdns: for common reusable code
        cdnsp: for names related only with cdnsp driver
        cdns3: for names related only with cdns3 driver
      Signed-off-by: NPawel Laszczak <pawell@cadence.com>
      Tested-by: NAswath Govindraju <a-govindraju@ti.com>
      Signed-off-by: NPeter Chen <peter.chen@nxp.com>
      0b490046
  8. 10 12月, 2020 1 次提交
  9. 30 11月, 2020 1 次提交
  10. 16 11月, 2020 2 次提交
  11. 30 10月, 2020 2 次提交
    • P
      usb: cdns3: gadget: own the lock wrongly at the suspend routine · e11d2bf2
      Peter Chen 提交于
      When the system goes to suspend, if the controller is at device mode with
      cable connecting to host, the call stack is: cdns3_suspend->
      cdns3_gadget_suspend -> cdns3_disconnect_gadget, after cdns3_disconnect_gadget
      is called, it owns lock wrongly, it causes the system being deadlock after
      resume due to at cdns3_device_thread_irq_handler, it tries to get the lock,
      but can't get it forever.
      
      To fix it, we delete the unlock-lock operations at cdns3_disconnect_gadget,
      and do it at the caller.
      
      Fixes: b1234e3b ("usb: cdns3: add runtime PM support")
      Acked-by: NPawel Laszczak <pawell@cadence.com>
      Signed-off-by: NPeter Chen <peter.chen@nxp.com>
      e11d2bf2
    • P
      usb: cdns3: Fix on-chip memory overflow issue · 52d39677
      Pawel Laszczak 提交于
      Patch fixes issue caused setting On-chip memory overflow bit in usb_sts
      register. The issue occurred because EP_CFG register was set twice
      before USB_STS.CFGSTS was set. Every write operation on EP_CFG.BUFFERING
      causes that controller increases internal counter holding the number
      of reserved on-chip buffers. First time this register was updated in
      function cdns3_ep_config before delegating SET_CONFIGURATION request
      to class driver and again it was updated when class wanted to enable
      endpoint.  This patch fixes this issue by configuring endpoints
      enabled by class driver in cdns3_gadget_ep_enable and others just
      before status stage.
      
      Cc: stable@vger.kernel.org#v5.8+
      Fixes: 7733f6c3 ("usb: cdns3: Add Cadence USB3 DRD Driver")
      Reported-and-tested-by: NPeter Chen <peter.chen@nxp.com>
      Signed-off-by: NPawel Laszczak <pawell@cadence.com>
      Signed-off-by: NPeter Chen <peter.chen@nxp.com>
      52d39677
  12. 28 10月, 2020 1 次提交
  13. 02 10月, 2020 12 次提交
  14. 24 9月, 2020 1 次提交
    • P
      usb: cdns3: gadget: free interrupt after gadget has deleted · 98df91f8
      Peter Chen 提交于
      The interrupt may occur during the gadget deletion, it fixes the
      below oops.
      
      [ 2394.974604] configfs-gadget gadget: suspend
      [ 2395.042578] configfs-gadget 5b130000.usb: unregistering UDC driver [g1]
      [ 2395.382562] irq 229: nobody cared (try booting with the "irqpoll" option)
      [ 2395.389362] CPU: 0 PID: 301 Comm: kworker/u12:6 Not tainted 5.8.0-rc3-next-20200703-00060-g2f13b83cbf30-dirty #456
      [ 2395.399712] Hardware name: Freescale i.MX8QM MEK (DT)
      [ 2395.404782] Workqueue: 2-0051 tcpm_state_machine_work
      [ 2395.409832] Call trace:
      [ 2395.412289]  dump_backtrace+0x0/0x1d0
      [ 2395.415950]  show_stack+0x1c/0x28
      [ 2395.419271]  dump_stack+0xbc/0x118
      [ 2395.422678]  __report_bad_irq+0x50/0xe0
      [ 2395.426513]  note_interrupt+0x2cc/0x38c
      [ 2395.430355]  handle_irq_event_percpu+0x88/0x90
      [ 2395.434800]  handle_irq_event+0x4c/0xe8
      [ 2395.438640]  handle_fasteoi_irq+0xbc/0x168
      [ 2395.442740]  generic_handle_irq+0x34/0x48
      [ 2395.446752]  __handle_domain_irq+0x68/0xc0
      [ 2395.450846]  gic_handle_irq+0x64/0x150
      [ 2395.454596]  el1_irq+0xb8/0x180
      [ 2395.457733]  __do_softirq+0xac/0x3b8
      [ 2395.461310]  irq_exit+0xc0/0xe0
      [ 2395.464448]  __handle_domain_irq+0x6c/0xc0
      [ 2395.468540]  gic_handle_irq+0x64/0x150
      [ 2395.472295]  el1_irq+0xb8/0x180
      [ 2395.475436]  _raw_spin_unlock_irqrestore+0x14/0x48
      [ 2395.480232]  usb_gadget_disconnect+0x120/0x140
      [ 2395.484678]  usb_gadget_remove_driver+0xb4/0xd0
      [ 2395.489208]  usb_del_gadget+0x6c/0xc8
      [ 2395.492872]  cdns3_gadget_exit+0x5c/0x120
      [ 2395.496882]  cdns3_role_stop+0x60/0x90
      [ 2395.500634]  cdns3_role_set+0x64/0xd8
      [ 2395.504301]  usb_role_switch_set_role.part.0+0x3c/0x90
      [ 2395.509444]  usb_role_switch_set_role+0x20/0x30
      [ 2395.513978]  tcpm_mux_set+0x60/0xf8
      [ 2395.517470]  tcpm_reset_port+0xa4/0xf0
      [ 2395.521222]  tcpm_detach.part.0+0x44/0x50
      [ 2395.525227]  tcpm_state_machine_work+0x8b0/0x2360
      [ 2395.529932]  process_one_work+0x1c8/0x470
      [ 2395.533939]  worker_thread+0x50/0x420
      [ 2395.537603]  kthread+0x148/0x168
      [ 2395.540830]  ret_from_fork+0x10/0x18
      [ 2395.544399] handlers:
      [ 2395.546671] [<000000008dea28da>] cdns3_wakeup_irq
      [ 2395.551375] [<000000009fee5c61>] cdns3_drd_irq threaded [<000000005148eaec>] cdns3_drd_thread_irq
      [ 2395.560255] Disabling IRQ #229
      [ 2395.563454] configfs-gadget gadget: unbind function 'Mass Storage Function'/000000000132f835
      [ 2395.563657] configfs-gadget gadget: unbind
      [ 2395.563917] udc 5b130000.usb: releasing '5b130000.usb'
      
      Fixes: 7733f6c3 ("usb: cdns3: Add Cadence USB3 DRD Driver")
      Cc: <stable@vger.kernel.org>
      Acked-by: NRoger Quadros <rogerq@ti.com>
      Signed-off-by: NPeter Chen <peter.chen@nxp.com>
      Signed-off-by: NFelipe Balbi <balbi@kernel.org>
      98df91f8
  15. 24 7月, 2020 3 次提交
    • P
      usb: cdns3: drd: simplify *switch_gadet and *switch_host · b2aeb6da
      Pawel Laszczak 提交于
      Patch split function cdns3_drd_switch_gadget and
      cdns3_drd_switch_host into:
      - cdns3_drd_host_on
      - cdns3_drd_host_off
      - cdns3_drd_gadget_on
      - cdns3_drd_gadgett_off
      
      These functions don't have any shared code so it's better to
      have smaller, faster and easier functions.
      Signed-off-by: NPawel Laszczak <pawell@cadence.com>
      Reviewed-by: NPeter Chen <peter.chen@nxp.com>
      Signed-off-by: NFelipe Balbi <balbi@kernel.org>
      b2aeb6da
    • P
      usb: cdns3: gadget: always zeroed TRB buffer when enable endpoint · 95f5acfc
      Peter Chen 提交于
      During the endpoint dequeue operation, it changes dequeued TRB as link
      TRB, when the endpoint is disabled and re-enabled, the DMA fetches the
      TRB before the link TRB, after it handles current TRB, the DMA pointer
      will advance to the TRB after link TRB, but enqueue and dequene
      variables don't know it due to no hardware interrupt at the time, when
      the next TRB is added to link TRB position, the DMA will not handle
      this TRB due to its pointer is already at the next TRB. See the trace
      log like below:
      
      file-storage-675   [001] d..1    86.585657: usb_ep_queue: ep0: req 00000000df9b3a4f length 0/0 sgs 0/0 stream 0 zsI status 0 --> 0
      file-storage-675   [001] d..1    86.585663: cdns3_ep_queue: ep1out: req: 000000002ebce364, req buff 00000000f5bc96b4, length: 0/1024 zsi, status: -115, trb: [start:0, end:0: virt addr (null)], flags:0 SID: 0
      file-storage-675   [001] d..1    86.585671: cdns3_prepare_trb: ep1out: trb 000000007f770303, dma buf: 0xbd195800, size: 1024, burst: 128 ctrl: 0x00000425 (C=1, T=0, ISP, IOC, Normal) SID:0 LAST_SID:0
      file-storage-675   [001] d..1    86.585676: cdns3_ring:
                  Ring contents for ep1out:
                  Ring deq index: 0, trb: 000000007f770303 (virt), 0xc4003000 (dma)
                  Ring enq index: 1, trb: 0000000049c1ba21 (virt), 0xc400300c (dma)
                  free trbs: 38, CCS=1, PCS=1
                  @0x00000000c4003000 bd195800 80020400 00000425
                  @0x00000000c400300c c4003018 80020400 00001811
                  @0x00000000c4003018 bcfcc000 0000001f 00000426
                  @0x00000000c4003024 bcfce800 0000001f 00000426
      
      	    ...
      
       irq/144-5b13000-698   [000] d...    87.619286: usb_gadget_giveback_request: ep1in: req 0000000031b832eb length 13/13 sgs 0/0 stream 0 zsI status 0 --> 0
          file-storage-675   [001] d..1    87.619287: cdns3_ep_queue: ep1out: req: 000000002ebce364, req buff 00000000f5bc96b4, length: 0/1024 zsi, status: -115, trb: [start:0, end:0: virt addr 0x80020400c400300c], flags:0 SID: 0
          file-storage-675   [001] d..1    87.619294: cdns3_prepare_trb: ep1out: trb 0000000049c1ba21, dma buf: 0xbd198000, size: 1024, burst: 128 ctrl: 0x00000425 (C=1, T=0, ISP, IOC, Normal) SID:0 LAST_SID:0
          file-storage-675   [001] d..1    87.619297: cdns3_ring:
                      Ring contents for ep1out:
                      Ring deq index: 1, trb: 0000000049c1ba21 (virt), 0xc400300c (dma)
                      Ring enq index: 2, trb: 0000000059b34b67 (virt), 0xc4003018 (dma)
                      free trbs: 38, CCS=1, PCS=1
                      @0x00000000c4003000 bd195800 0000001f 00000427
                      @0x00000000c400300c bd198000 80020400 00000425
                      @0x00000000c4003018 bcfcc000 0000001f 00000426
                      @0x00000000c4003024 bcfce800 0000001f 00000426
      		...
      
          file-storage-675   [001] d..1    87.619305: cdns3_doorbell_epx: ep1out, ep_trbaddr c4003018
          file-storage-675   [001] ....    87.619308: usb_ep_queue: ep1out: req 000000002ebce364 length 0/1024 sgs 0/0 stream 0 zsI status -115 --> 0
       irq/144-5b13000-698   [000] d..1    87.619315: cdns3_epx_irq: IRQ for ep1out: 01000c80 TRBERR , ep_traddr: c4003018 ep_last_sid: 00000000 use_streams: 0
       irq/144-5b13000-698   [000] d..1    87.619395: cdns3_usb_irq: IRQ 00000008 = Hot Reset
      
      Fixes: f616c3bd ("usb: cdns3: Fix dequeue implementation")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NPeter Chen <peter.chen@nxp.com>
      Signed-off-by: NFelipe Balbi <balbi@kernel.org>
      95f5acfc
    • P
      usb: cdns3: gadget: improve the set_configuration handling · f4cfe5ce
      Peter Chen 提交于
      - Delete the duplicated EP_CMD_ERDY and EP_CMD_REQ_CMPL setting
      - Prepare the next setup before setting EP_CMD_ERDY and EP_CMD_REQ_CMPL,
      it could avoid a bug that DMA hang at EP0 OUT for DEV_VER_NXP_V1
      - Delete the duplicated cdns3_set_hw_configuration calling at
      cdns3_req_ep0_set_configuration, the composite.c will handle
      this request, and call .ep0_queue back, and at .ep_queue it will
      call cdns3_set_hw_configuration.
      - Move cdns3_allow_enable_l1 into cdns3_set_hw_configuration since
      it is part of this function.
      Signed-off-by: NPeter Chen <peter.chen@nxp.com>
      Signed-off-by: NFelipe Balbi <balbi@kernel.org>
      f4cfe5ce
  16. 10 7月, 2020 1 次提交
  17. 03 7月, 2020 1 次提交
    • L
      usb: cdns3: gadget: Fix a bunch of kernel doc issues · 4a35aa6d
      Lee Jones 提交于
      Mainline misspelled function argument descriptions.  Also one
      formatting issue with a missing '@' identifier.
      
      Fixes the following W=1 build warnings:
      
       drivers/usb/cdns3/gadget.c:653: warning: Function parameter or member 'priv_ep' not described in 'cdns3_wa2_descmissing_packet'
       drivers/usb/cdns3/gadget.c:653: warning: Excess function parameter 'priv_dev' description in 'cdns3_wa2_descmissing_packet'
       drivers/usb/cdns3/gadget.c:1088: warning: Function parameter or member 'request' not described in 'cdns3_ep_run_transfer'
       drivers/usb/cdns3/gadget.c:2574: warning: Function parameter or member 'priv_ep' not described in '__cdns3_gadget_ep_set_halt'
       drivers/usb/cdns3/gadget.c:2574: warning: Excess function parameter 'ep' description in '__cdns3_gadget_ep_set_halt'
       drivers/usb/cdns3/gadget.c:2595: warning: Function parameter or member 'priv_ep' not described in '__cdns3_gadget_ep_clear_halt'
       drivers/usb/cdns3/gadget.c:2595: warning: Excess function parameter 'ep' description in '__cdns3_gadget_ep_clear_halt'
       drivers/usb/cdns3/gadget.c:2898: warning: Function parameter or member 'priv_dev' not described in 'cdns3_init_eps'
       drivers/usb/cdns3/gadget.c:2898: warning: Excess function parameter 'cdns3' description in 'cdns3_init_eps'
       drivers/usb/cdns3/gadget.c:3210: warning: Function parameter or member 'cdns' not described in 'cdns3_gadget_init'
      
      Cc: Pawel Laszczak <pawell@cadence.com>
      Cc: Pawel Jez <pjez@cadence.com>
      Cc: Peter Chen <peter.chen@nxp.com>
      Signed-off-by: NLee Jones <lee.jones@linaro.org>
      Link: https://lore.kernel.org/r/20200702144625.2533530-18-lee.jones@linaro.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4a35aa6d
  18. 01 7月, 2020 2 次提交