1. 14 8月, 2015 17 次提交
    • P
      usb: chipidea: add tx/rx burst size configuration interface · 96625ead
      Peter Chen 提交于
      The user can adjust it through dts or platform data
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      96625ead
    • P
      usb: chipidea: usbmisc_imx: add non-burst setting for imx6 · ed6e5eb5
      Peter Chen 提交于
      With this setting and AHBBRST at SBUSCFG as "Incremental burst of
      unspecified length", each non-burst size can be taken as single
      transfer. It is benefit for non-burst size transfer.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      ed6e5eb5
    • P
      usb: chipidea: add ahb burst configuration interface · 65668718
      Peter Chen 提交于
      The users can change it through dts or platform data if they
      want to change the default value.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      65668718
    • P
      usb: chipidea: imx: add stream mode enable for device mode at imx6sl/imx6sx · 0ef877a4
      Peter Chen 提交于
      Stream mode enable is known for better performance, this stream mode
      enable patch has been passed with stress tests at device mode for
      imx6sl and imx6sx, and no issue is found.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      0ef877a4
    • P
      usb: chipidea: define stream mode disable for both roles · 8022d3d5
      Peter Chen 提交于
      The system bus and chipidea IP have different limitations for
      both host and device mode.
      For example, with below errata, we need to enable SDIS(Stream Disable
      Mode) at host mode. But we don't want it for device mode at the
      same system.
      
      TAR 9000378958
      Title: Non-Double Word Aligned Buffer Address Sometimes Causes Host to
      Hang on OUT Retry
      Impacted Configuration: Host mode, all transfer types
      Description:
      The host core operating in streaming mode may under run while sending
      the data packet of an OUT transaction. This under run can occur if
      there are unexpected system delays in fetching the remaining packet
      data from memory. The host forces a bad CRC on the packet, the device
      detects the error and discards the packet. The host then retries a Bulk,
      Interrupt, or Control transfer if an under run occurs according to the
      USB specification. During simulations, it was found that the host does
      not issue the retry of the failed bulk OUT. It does not issue any other
      transactions except SOF packets that have incorrect frame numbers.
      
      The second failure mode occurs if the under run occurs on an ISO OUT
      transaction and the next ISO transaction is a zero byte packet. The host
      does not issue any transactions (including SOFs). The device detects a
      Suspend condition, reverts to full speed, and waits for resume signaling.
      
      A third failure mode occurs when the host under runs on an ISO OUT and
      the next ISO in the schedule is an ISO OUT with two max packets of 1024
      bytes each. The host should issue MDATA for the first OUT followed by
      DATA1 for the second. However, it drops the MDATA transaction, and
      issues the DATA1 transaction.
      
      The system impact of this bug is the same regardless of the failure mode
      observed. The host core hangs, the ehci_ctrl state machine waits for the
      protocol engine to send the completion status for the corrupted
      transaction, which never occurs. No indication is sent to the host
      controller driver, no register bits change and no interrupts occur.
      Eventually the requesting application times out.
      
      Detailed internal behavior:
      The EHCI control state machine (ehci_ctrl) in the DMA block is responsible
      for parsing the schedules and initiating all transactions. The ehci_ctrl
      state machine passes the transaction details to the protocol block by
      writing the transaction information in to the TxFIFO. It then asserts
      the pe_hst_run_pkt signal to inform the host protocol state machine
      (pe_hst_state) that there is a packet in the TxFIFO.
      A tag of 0x0 indicates a start of packet with the data providing the
      following information:
      
      35:32 Tag
      31:30 Reserved
      29:23 Endpoint (lowest 4 bits)
      22:16 Address
      15:10 Reserved
      9:8 Endpoint speed
      7:6 Endpoint type
      5:6 Data Toggle
      3:0 PID
      The pe_hst_state reads the packet information and constructs the packet
      and issues it to the PHY interface.
      The ehci_ctrl state machine writes the start transaction information in
      to the TxFIFO as 0x03002910c for the OUT packet that had the under run
      error. However, it writes 0xC3002910C for the retry of the Out
      transaction, which is incorrect.
      The pe_hst_state enters a bus timeout state after sending the bad CRC
      for the packet that under ran. It then purges any data that was back
      filled in to the TxFIFO for the packet that under ran. The pe_hst_state
      machine stops purging the TxFIFO when it is empty or if it reads a
      location that has a tag of 0x0, indicating a start of packet command.
      
      The pe_hst_state reads 0xC3002910C and discards it as it does not decode
      to a start of packet command. It continues to purge the OUT data that
      has been pre-buffered for the OUT retry . The pe_hst_state detects the
      hst_packet_run signal and attempts to read the PID and address
      information from the TxFIFO. This location has packet data and so does
      not decode to a valid PID and so falls through to the PE_HST_SOF_LOAD
      state where the frame_num_counter is updated. The frame_num_counter
      is updated with the data in the TxFIFO. In this case, the data is
      incorrect as the ehci_ctrl state machine did not initiate the load.
      The hst_pe_state machine detects the SOF request signal and sends an
      SOF with the bad frame number. Meanwhile, the ehci_ctrl state machine
      waits indefinitely in the run_pkt state waiting for the completion
      status from pe_hst_state machine, which will never happen.
      
      The ISO failure case is similar except that there is no retry for ISO.
      The ehci_ctrl state machine moves to the next transfer in the periodic
      schedule. If the under run occurs on the last entry of the periodic
      list then it moves to the Async schedule.
      
      In the case of ISO OUT simulations, the next ISO is a zero byte OUT
      and again the start of packet command gets corrupted. The TxFIFO is
      empty when the hst_pe_state attempts to read the Address and PID
      information as the transaction is a zero byte packet. This results
      in the hst_pe_state machine staying in the GET_PID state, which means
      that it does not issue any transactions (including SOFs). The device
      detects a Suspend condition and reverts to full speed mode and waits
      for a Resume or Reset signal.
      
      The EHCI specification allows a Non-DoubleWord (32 bits) offset to
      be used as a current offset for Buffer Pointer Page 0 of the qTD.
      In Non-DoubleWord aligned cases, the core reads the packet data
      from the AHB memory, performs the alignment operation before writing
      it in to the TxFIFO as a 32 bit data word. An End Of Packet tag (EOP)
      is written to the TxFIFO after all the packet data has been written
      in to the TxFIFO. The alignment function is reset to Idle by the EOP
      tag. The corruption of the start of packet command arises because the
      packet buffer for the OUT transaction that under ran is not aligned
      to a DoubleWord, and hence no EOP tag is written to the TxFIFO. The
      alignment function is still active when the start packet information
      is written in to the TxFIFO for the retry of the bulk packet or for
      the next transaction in the case of an under run on an ISO. This
      results in the corruption of the start tag and the transaction
      information.
      
      Click for waveform showing the command 0x 0000300291 being written in
      to the TX FIFO for the Out that under ran.
      Click for waveform showing the command 0xC3002910C written to the
      TxFIFO instead of 0x 0000300291
      Versions affected: Versions 2.10a and previous versions
      How discovered: Customer simulation
      
      Workaround:
      1- The EHCI specification allows a non-DoubleWord offset to be used
      as a current offset for Buffer Pointer Page 0 of the qTD. However,
      if a DoubleWord offset is used then this issue does not arise.
      2- Use non streaming mode to eliminate under runs.
      
      Resolution:
      The fix involves changes to the traffic state machine in the
      vusb_hs_dma_traf block. The ehci_ctrl state machine updates the context
      information by encoding the transaction results on the
      hst_op_context_update signals at the end of a transaction. The signal
      hst_op_context_update is added to the traffic state machine, and the
      tx_fifo_under_ran_r signal is generated if the transaction results in
      an under run error. Click for waveform
      
      The traffic state machine then traverses to the do_eop states if the
      tx_fifo_under_ran error is asserted. Thus an EOP tag is written in to
      the TxFIFO as shown in this waveform .
      
      The EOP tag resets the align state machine to the Idle state ensuring
      that the next command written by the echi_ctrl state machine does not
      get corrupted.
      
      File(s) modified:
      RTL code fixed: …..
      Method of reproducing: This failure cannot be reproduced in the current
      test bench.
      Date Found: March 2010
      Date Fixed: June 2010
      Update information:
      Added the RTL code fix
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      8022d3d5
    • P
      usb: chipidea: udc: zero-length packet is only needed for TX · a4da4f12
      Peter Chen 提交于
      The zero-length packet is the sendor tells the receiver that there
      is no more data, so it is only needed at the TX side.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      a4da4f12
    • P
      usb: chipidea: host: override hcd reset API · 11a27098
      Peter Chen 提交于
      The system configuration API should be called before the controller
      run, otherwise, undefined results may occur. So, we override hcd
      reset API, and add system configuration API after controller reset.
      
      Cc: Li Jun <peter.chen@freescale.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      11a27098
    • T
      usb: chipidea: imx: properly check for usbmisc · ef12da91
      Tomeu Vizoso 提交于
      If usbmisc hasn't probed yet, defer the probe.
      
      It's not enough to check if the platform device for the OF node of the
      usbmisc has been registered, but it also needs to have been probed
      already before we can call imx_usbmisc_init().
      
      This can happen if the order in which devices are probed change due to
      async probing or on-demand probing of dependencies.
      Signed-off-by: NTomeu Vizoso <tomeu.vizoso@collabora.com>
      ef12da91
    • L
      usb: chipidea: debug: add runtime pm for register access · bc249379
      Li Jun 提交于
      Add runtime pm operations for registers access to avoid system hang.
      Signed-off-by: NLi Jun <jun.li@freescale.com>
      bc249379
    • N
      usb:chipidea:Make the function hw_alloc_repmap have a return type of void · 158ec071
      Nicholas Krause 提交于
      This makes the function hw_alloc_repmap be declared to have a return
      type of void now due to this particular function never returning
      a error code to its caller due to this function always running
      successfully to completion nor it's caller putting the return
      value into a variable in order to check if a error code is passed
      from the function hw_alloc_repmap when calling this function.
      Signed-off-by: NNicholas Krause <xerofoify@gmail.com>
      158ec071
    • P
      usb: chipidea: host: delete the redundancy ci_hdrc struct · 1311d6e3
      Peter Chen 提交于
      The struct ci_hdrc is the drvdata for hcd device, so we don't
      need to introduce extra ci_hdrc structure for ehci.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      1311d6e3
    • P
      usb: chipidea: introduce ITC tuning interface · df96ed8d
      Peter Chen 提交于
      ITC (Interrupt Threshold Control) is used to set the maximum rate at which
      the host/device controller will issue interrupts. The default value is 8 (1ms)
      for it. EHCI core will modify it to 1, but device mode keeps it as default
      value.
      
      In some use cases like Android ADB, it only has one usb request for each
      direction, and maximum payload data is only 4KB, so the speed is 4MB/s
      at most, it needs controller to trigger interrupt as fast as possible
      to increase the speed. The USB performance will be better if the interrupt
      can be triggered faster.
      
      Reduce ITC value is benefit for USB performance, but the interrupt number
      is increased at the same time, it may increase cpu utilization too.
      Most of use case cares about performance, but some may care about
      cpu utilization, so, we leave a platform interface for user.
      We set ITC as 1 (1 micro-frame) as default value which is aligned
      with ehci core default value.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      df96ed8d
    • P
      usb: chipidea: introduce ci_platform_configure · bf9c85e7
      Peter Chen 提交于
      It is used to configure controller parameters according to
      platform data, like speed, stream mode, etc, both host and
      device's initialization need it, most of code are the
      same for both roles, with this new interface, it can reduce
      the duplicated code and be easy to maintain in future.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      bf9c85e7
    • P
      usb: chipidea: otg_fsm: delete the duplicated reset controller operation · 9d2effea
      Peter Chen 提交于
      At host_stop, it will call usb_remove_hcd, and reset controller later.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      9d2effea
    • P
      usb: chipidea: udc: add USB_DEVICE_A_HNP_SUPPORT request support · 3520d462
      Peter Chen 提交于
      We can support USB OTG 1.3 USB_DEVICE_A_HNP_SUPPORT request when
      the driver supports OTG FSM mode.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      3520d462
    • P
      usb: chipidea: imx: enable CI_HDRC_SET_NON_ZERO_TTHA · e765bfb7
      Peter Chen 提交于
      For i.mx platform, set ttctrl.ttha with non-zero value only affects
      sitd, and ehci core makes sure the schedule is not full when accepts
      new request, so it will not occur the transaction which will acorss
      the SoF.
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      e765bfb7
    • P
      usb: chipidea: add ttctrl.ttha control interface · 28362673
      Peter Chen 提交于
      The register of ttctrl.ttha describes like below:
      - Internal TT Hub Address Representation
      - RW
      - Default = 0000000b
      This field is used to match against the Hub Address field in QH & siTD
      to determine if the packet is routed to the internal TT for directly
      attached FS/LS devices. If the Hub Address in the QH or siTD does not
      match this address then the packet will be broadcast on the High Speed
      ports destined for a downstream High Speed hub with the address in the QH/siTD.
      
      In silicon RTL, this entry only affects QH and siTD, and the hub.addr at
      both QH and siTD are 0 in ehci core for chipidea (with hcd->has_tt = 1).
      
      So, for QH, if the "usage_tt" flag at RTL is 0, set CI_HDRC_SET_NON_ZERO_TTHA
      will not affect QH (with non-hs device); for siTD, set this flag
      will change remaining space requirement for the last transaction from 1023
      bytes to 188 bytes, it can increase the number of transactions within one
      frame, ehci periodic schedule code will not queue the packet if the frame space
      is full, so it is safe to set this flag for siTD.
      
      With this flag, it can fix the problem Alan Stern reported below:
      http://www.spinics.net/lists/linux-usb/msg123125.html
      And may fix Michael Tessier's problem too.
      http://www.spinics.net/lists/linux-usb/msg118679.html
      
      CC: stern@rowland.harvard.edu
      CC: michael.tessier@axiontech.ca
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      28362673
  2. 05 8月, 2015 1 次提交
  3. 03 8月, 2015 1 次提交
  4. 29 7月, 2015 2 次提交
  5. 22 7月, 2015 1 次提交
    • P
      usb: chipidea: ehci_init_driver is intended to call one time · 2f01a33b
      Peter Chen 提交于
      The ehci_init_driver is used to initialize hcd APIs for each
      ehci controller driver, it is designed to be called only one time
      and before driver register is called. The current design will
      cause ehci_init_driver is called multiple times at probe process,
      it will cause hc_driver's initialization affect current running hcd.
      
      We run out NULL pointer dereference problem when one hcd is started
      by module_init, and the other is started by otg thread at SMP platform.
      The reason for this problem is ehci_init_driver will do memory copy
      for current uniform hc_driver, and this memory copy will do memset (as 0)
      first, so when the first hcd is running usb_add_hcd, and the second
      hcd may clear the uniform hc_driver's space (at ehci_init_driver),
      then the first hcd will meet NULL pointer at the same time.
      
      See below two logs:
      
      LOG_1:
      ci_hdrc ci_hdrc.0: EHCI Host Controller
      ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
      ci_hdrc ci_hdrc.1: doesn't support gadget
      Unable to handle kernel NULL pointer dereference at virtual address 00000014
      pgd = 80004000
      [00000014] *pgd=00000000
      Internal error: Oops: 805 [#1] PREEMPT SMP ARM
      Modules linked in:
      CPU: 0 PID: 108 Comm: kworker/u8:2 Not tainted 3.14.38-222193-g24b2734-dirty #25
      Workqueue: ci_otg ci_otg_work
      task: d839ec00 ti: d8400000 task.ti: d8400000
      PC is at ehci_run+0x4c/0x284
      LR is at _raw_spin_unlock_irqrestore+0x28/0x54
      pc : [<8041f9a0>]    lr : [<8070ea84>]    psr: 60000113
      sp : d8401e30  ip : 00000000  fp : d8004400
      r10: 00000001  r9 : 00000001  r8 : 00000000
      r7 : 00000000  r6 : d8419940  r5 : 80dd24c0  r4 : d8419800
      r3 : 8001d060  r2 : 00000000  r1 : 00000001  r0 : 00000000
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c53c7d  Table: 1000404a  DAC: 00000015
      Process kworker/u8:2 (pid: 108, stack limit = 0xd8400238)
      Stack: (0xd8401e30 to 0xd8402000)
      1e20:                                     d87523c0 d8401e48 66667562 d8419800
      1e40: 00000000 00000000 d8419800 00000000 00000000 00000000 d84198b0 8040fcdc
      1e60: 00000000 80dd320c d8477610 d8419c00 d803d010 d8419800 00000000 00000000
      1e80: d8004400 00000000 d8400008 80431494 80431374 d803d100 d803d010 d803d1ac
      1ea0: 00000000 80432428 804323d4 d803d100 00000001 80435eb8 80e0d0bc d803d100
      1ec0: 00000006 80436458 00000000 d803d100 80e92ec8 80436f44 d803d010 d803d100
      1ee0: d83fde00 8043292c d8752710 d803d1f4 d803d010 8042ddfc 8042ddb8 d83f3b00
      1f00: d803d1f4 80042b60 00000000 00000003 00000001 00000001 80054598 d83f3b00
      1f20: d8004400 d83f3b18 d8004414 d8400000 80e3957b 00000089 d8004400 80043814
      1f40: d839ec00 00000000 d83fcd80 d83f3b00 800436e4 00000000 00000000 00000000
      1f60: 00000000 80048f34 00000000 00000000 00000000 d83f3b00 00000000 00000000
      1f80: d8401f80 d8401f80 00000000 00000000 d8401f90 d8401f90 d8401fac d83fcd80
      1fa0: 80048e68 00000000 00000000 8000e538 00000000 00000000 00000000 00000000
      1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
      [<8041f9a0>] (ehci_run) from [<8040fcdc>] (usb_add_hcd+0x248/0x6e8)
      [<8040fcdc>] (usb_add_hcd) from [<80431494>] (host_start+0x120/0x2e4)
      [<80431494>] (host_start) from [<80432428>] (ci_otg_start_host+0x54/0xbc)
      [<80432428>] (ci_otg_start_host) from [<80435eb8>] (otg_set_protocol+0xa4/0xd0)
      [<80435eb8>] (otg_set_protocol) from [<80436458>] (otg_set_state+0x574/0xc58)
      [<80436458>] (otg_set_state) from [<80436f44>] (otg_statemachine+0x408/0x46c)
      [<80436f44>] (otg_statemachine) from [<8043292c>] (ci_otg_fsm_work+0x3c/0x190)
      [<8043292c>] (ci_otg_fsm_work) from [<8042ddfc>] (ci_otg_work+0x44/0x1c4)
      [<8042ddfc>] (ci_otg_work) from [<80042b60>] (process_one_work+0xf4/0x35c)
      [<80042b60>] (process_one_work) from [<80043814>] (worker_thread+0x130/0x3bc)
      [<80043814>] (worker_thread) from [<80048f34>] (kthread+0xcc/0xe4)
      [<80048f34>] (kthread) from [<8000e538>] (ret_from_fork+0x14/0x3c)
      Code: e5953018 e3530000 0a000000 e12fff33 (e5878014)
      
      LOG_2:
      ci_hdrc ci_hdrc.0: EHCI Host Controller
      ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
      ci_hdrc ci_hdrc.1: doesn't support gadget
      Unable to handle kernel NULL pointer dereference at virtual address 00000000
      pgd = 80004000
      [00000000] *pgd=00000000
      In Online 00:00ternal e      Offline rror: Oops: 80000005 [#1] PREEMPT SMP ARM
      Modules linked in:
      CPU: 0 PID: 108 Comm: kworker/u8:2 Not tainted 3.14.38-02007-g24b2734-dirty #127
      Workque Online 00:00ue: ci_o      Offline tg ci_otg_work
      Online 00:00task: d8      Offline 39ec00 ti: d83ea000 task.ti: d83ea000
      PC is at 0x0
      LR is at usb_add_hcd+0x248/0x6e8
      pc : [<00000000>]    lr : [<8040f644>]    psr: 60000113
      sp : d83ebe60  ip : 00000000  fp : d8004400
      r10: 00000001  r9 : 00000001  r8 : d85fd4b0
      r7 : 00000000  r6 : 00000000  r5 : 00000000  r4 : d85fd400
      r3 : 00000000  r2 : d85fd4f4  r1 : 80410178  r0 : d85fd400
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c53c7d  Table: 1000404a  DAC: 00000015
      Process kworker/u8:2 (pid: 108, stack limit = 0xd83ea238)
      Stack: (0xd83ebe60 to 0xd83ec000)
      be60: 00000000 80dd920c d8654e10 d85fd800 d803e010 d85fd400 00000000 00000000
      be80: d8004400 00000000 d83ea008 80430e34 80430d14 d803e100 d803e010 d803e1ac
      bea0: 00000000 80431dc8 80431d74 d803e100 00000001 80435858 80e130bc d803e100
      bec0: 00000006 80435df8 00000000 d803e100 80e98ec8 804368e4 d803e010 d803e100
      bee0: d86e8100 804322cc d86cf050 d803e1f4 d803e010 8042d79c 8042d758 d83cf900
      bf00: d803e1f4 80042b78 00000000 00000003 00000001 00000001 800545e8 d83cf900
      bf20: d8004400 d83cf918 d8004414 d83ea000 80e3f57b 00000089 d8004400 8004382c
      bf40: d839ec00 00000000 d8393780 d83cf900 800436fc 00000000 00000000 00000000
      bf60: 00000000 80048f50 80e019f4 00000000 0000264c d83cf900 00000000 00000000
      bf80: d83ebf80 d83ebf80 00000000 00000000 d83ebf90 d83ebf90 d83ebfac d8393780
      bfa0: 80048e84 00000000 00000000 8000e538 00000000 00000000 00000000 00000000
      bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 ee66e85d 133ebd03
      [<804 Online 00:000f644>]       Offline (usb_add_hcd) from [<80430e34>] (host_start+0x120/0x2e4)
      [<80430e34>] (host_start) from [<80431dc8>] (ci_otg_start_host+0x54/0xbc)
      [<80431dc8>] (ci_otg_start_host) from [<80435858>] (otg_set_protocol+0xa4/0xd0)
      [<80435858>] (otg_set_protocol) from [<80435df8>] (otg_set_state+0x574/0xc58)
      [<80435df8>] (otg_set_state) from [<804368e4>] (otg_statemachine+0x408/0x46c)
      [<804368e4>] (otg_statemachine) from [<804322cc>] (ci_otg_fsm_work+0x3c/0x190)
      [<804322cc>] (ci_otg_fsm_work) from [<8042d79c>] (ci_otg_work+0x44/0x1c4)
      [<8042d79c>] (ci_otg_work) from [<80042b78>] (process_one_work+0xf4/0x35c)
      [<80042b78>] (process_one_work) from [<8004382c>] (worker_thread+0x130/0x3bc)
      [<8004382c>] (worker_thread) from [<80048f50>] (kthread+0xcc/0xe4)
      [<80048f50>] (kthread) from [<8000e538>] (ret_from_fork+0x14/0x3c)
      Code: bad PC value
      
      Cc: Jun Li <jun.li@freescale.com>
      Cc: <stable@vger.kernel.org>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NPeter Chen <peter.chen@freescale.com>
      2f01a33b
  6. 10 6月, 2015 2 次提交
  7. 08 6月, 2015 1 次提交
  8. 06 5月, 2015 1 次提交
  9. 28 4月, 2015 1 次提交
  10. 08 4月, 2015 2 次提交
  11. 26 3月, 2015 6 次提交
  12. 20 3月, 2015 1 次提交
  13. 18 3月, 2015 4 次提交