Skip to content
Commits on Sep 27, 2013
  1. dwc_otg: Don't issue traffic to LS devices in FS mode

    Issuing low-speed packets when the root port is in full-speed mode
    causes the root port to stop responding. Explicitly fail when
    enqueuing URBs to a LS endpoint on a FS bus.
    P33M committed Sep 27, 2013
  2. @popcornmix

    Add AppleTalk module

    popcornmix committed Sep 27, 2013
Commits on Sep 20, 2013
  1. @popcornmix
  2. @popcornmix
  3. @popcornmix

    Merge pull request #380 from P33M/rpi-3.6.y

    dwc_otg: Enable NAK holdoff for control split transactions
    popcornmix committed Sep 20, 2013
  4. dwc_otg: Enable NAK holdoff for control split transactions

    Certain low-speed devices take a very long time to complete a
    data or status stage of a control transaction, producing NAK
    responses until they complete internal processing - the USB2.0
    spec limit is up to 500mS. This causes the same type of interrupt
    storm as seen with USB-serial dongles prior to c8edb23.
    
    In certain circumstances, usually while booting, this interrupt
    storm could cause SD card timeouts.
    P33M committed Sep 20, 2013
Commits on Sep 7, 2013
  1. @popcornmix
  2. @popcornmix
Commits on Aug 30, 2013
  1. @popcornmix
Commits on Aug 23, 2013
  1. @popcornmix

    Merge pull request #362 from lurch/patch-1

    Replace magic number with its #define name
    popcornmix committed Aug 23, 2013
Commits on Aug 22, 2013
  1. @lurch
Commits on Aug 19, 2013
  1. @popcornmix
Commits on Aug 15, 2013
  1. @popcornmix

    Increase to CONFIG_MMC_BLOCK_MINORS=32

    and enable CONFIG_JUMP_LABEL
    See: #348
    popcornmix committed Aug 15, 2013
Commits on Aug 7, 2013
  1. @popcornmix

    Merge pull request #352 from P33M/rpi-3.6.y

    dwc_otg: root port and FIQ bugfixes
    popcornmix committed Aug 7, 2013
Commits on Aug 5, 2013
  1. dwc_otg: prevent crashes on host port disconnects

    Fix several issues resulting in crashes or inconsistent state
    if a Model A root port was disconnected.
    
    - Clean up queue heads properly in kill_urbs_in_qh_list by
      removing the empty QHs from the schedule lists
    - Set the halt status properly to prevent IRQ handlers from
      using freed memory
    - Add fiq_split related cleanup for saved registers
    - Make microframe scheduling reclaim host channels if
      active during a disconnect
    - Abort URBs with -ESHUTDOWN status response, informing
      device drivers so they respond in a more correct fashion
      and don't try to resubmit URBs
    - Prevent IRQ handlers from attempting to handle channel
      interrupts if the associated URB was dequeued (and the
      driver state was cleared)
    P33M committed Aug 5, 2013
  2. dwc_otg: prevent leaking URBs during enqueue

    A dwc_otg_urb would get leaked if the HCD enqueue function
    failed for any reason. Free the URB at the appropriate points.
    P33M committed Aug 5, 2013
  3. dwc_otg: make fiq_split_enable imply fiq_fix_enable

    Failing to set up the FIQ correctly would result in
    "IRQ 32: nobody cared" errors in dmesg.
    P33M committed Aug 5, 2013
Commits on Aug 2, 2013
  1. @P33M

    Merge pull request #347 from P33M/rpi-3.6.y

    dwc_otg: fix potential sleep while atomic during urb enqueue
    P33M committed Aug 2, 2013
  2. dwc_otg: fix potential sleep while atomic during urb enqueue

    Fixes a regression introduced with eb1b482. Kmalloc called from
    dwc_otg_hcd_qtd_add / dwc_otg_hcd_qtd_create did not always have
    the GPF_ATOMIC flag set. Force this flag when inside the larger
    critical section.
    P33M committed Aug 2, 2013
Commits on Aug 1, 2013
  1. @popcornmix

    vchiq_util: Fix race condition in push/pop

    The lack of memory barriers could (very rarely) result in
    vchiu_queue_pop reading the next value before it had been written
    (getting either NULL, or a value that had been popped once already).
    Philip Taylor committed with popcornmix May 28, 2013
  2. @popcornmix

    VCHIQ: Fix mem leak of USER_SERVICE_T objects.

    The userdata for VCHIQ services created through the ioctl API is
    a kmalloced structure. These objects were getting leaked, most
    notably in vchiq_release(), where the service could be closed,
    freed and removed from the service list before the wait-to-die
    loop was entered.
    
    This change adds a userdata termination callback, and implements
    it in the case where USER_SERVICE_T is used for the service
    userdata.
    Matthew Hails committed with popcornmix May 13, 2013
Commits on Jul 30, 2013
  1. @popcornmix

    Merge pull request #344 from P33M/rpi-3.6.y

    dwc_otg: fiq_split: use TTs with more granularity
    popcornmix committed Jul 30, 2013
  2. dwc_otg: fiq_split: use TTs with more granularity

    This fixes certain issues with split transaction scheduling.
    
    - Isochronous multi-packet OUT transactions now hog the TT until
      they are completed - this prevents hubs aborting transactions
      if they get a periodic start-split out-of-order
    - Don't perform TT allocation on non-periodic endpoints - this
      allows simultaneous use of the TT's bulk/control and periodic
      transaction buffers
    
    This commit will mainly affect USB audio playback.
    P33M committed Jul 30, 2013
Commits on Jul 27, 2013
  1. @popcornmix

    Merge pull request #340 from P33M/rpi-3.6.y

    dwc_otg: make channel halts with unknown state less damaging
    popcornmix committed Jul 27, 2013
Commits on Jul 23, 2013
  1. dwc_otg: make channel halts with unknown state less damaging

    If the IRQ received a channel halt interrupt through the FIQ
    with no other bits set, the IRQ would not release the host
    channel and never complete the URB.
    
    Add catchall handling to treat as a transaction error and retry.
    P33M committed Jul 23, 2013
Commits on Jul 22, 2013
  1. @popcornmix

    Merge pull request #337 from P33M/rpi-3.6.y

    dwc_otg: prevent BUG() in TT allocation if hub address is > 16
    popcornmix committed Jul 22, 2013
  2. dwc_otg: prevent BUG() in TT allocation if hub address is > 16

    A fixed-size array is used to track TT allocation. This was
    previously set to 16 which caused a crash because
    dwc_otg_hcd_allocate_port would read past the end of the array.
    
    This was hit if a hub was plugged in which enumerated as addr > 16,
    due to previous device resets or unplugs.
    
    Also add #ifdef FIQ_DEBUG around hcd->hub_port_alloc[], which grows
    to a large size if 128 hub addresses are supported. This field is
    for debug only for tracking which frame an allocate happened in.
    P33M committed Jul 22, 2013
Commits on Jul 19, 2013
  1. @popcornmix

    Merge pull request #334 from P33M/rpi-3.6.y

    dwc_otg: prevent OOPSes during device disconnects
    popcornmix committed Jul 19, 2013
Commits on Jul 18, 2013
  1. dwc_otg: prevent OOPSes during device disconnects

    The dwc_otg_urb_enqueue function is thread-unsafe. In particular the
    access of urb->hcpriv, usb_hcd_link_urb_to_ep, dwc_otg_urb->qtd and
    friends does not occur within a critical section and so if a device
    was unplugged during activity there was a high chance that the
    usbcore hub_thread would try to disable the endpoint with partially-
    formed entries in the URB queue. This would result in BUG() or null
    pointer dereferences.
    
    Fix so that access of urb->hcpriv, enqueuing to the hardware and
    adding to usbcore endpoint URB lists is contained within a single
    critical section.
    P33M committed Jul 18, 2013
Commits on Jul 16, 2013
  1. @popcornmix

    Merge pull request #330 from P33M/rpi-3.6.y

    dwc_otg: more robust interrupt handling
    popcornmix committed Jul 16, 2013
Commits on Jul 14, 2013
  1. dwc_otg: fiq: prevent FIQ thrash and incorrect state passing to IRQ

    In the case of a transaction to a device that had previously aborted
    due to an error, several interrupts are enabled to reset the error
    count when a device responds. This has the side-effect of making the
    FIQ thrash because the hardware will generate multiple instances of
    a NAK on an IN bulk/interrupt endpoint and multiple instances of ACK
    on an OUT bulk/interrupt endpoint. Make the FIQ mask and clear the
    associated interrupts.
    
    Additionally, on non-split transactions make sure that only unmasked
    interrupts are cleared. This caused a hard-to-trigger but serious
    race condition when you had the combination of an endpoint awaiting
    error recovery and a transaction completed on an endpoint - due to
    the sequencing and timing of interrupts generated by the dwc_otg core,
    it was possible to confuse the IRQ handler.
    P33M committed Jul 13, 2013
Commits on Jul 13, 2013
  1. dwc_otg: mask correct interrupts after transaction error recovery

    The dwc_otg driver will unmask certain interrupts on a transaction
    that previously halted in the error state in order to reset the
    QTD error count. The various fine-grained interrupt handlers do not
    consider that other interrupts besides themselves were unmasked.
    
    By disabling the two other interrupts only ever enabled in DMA mode
    for this purpose, we can avoid unnecessary function calls in the
    IRQ handler. This will also prevent an unneccesary FIQ interrupt
    from being generated if the FIQ is enabled.
    P33M committed Jul 13, 2013
Commits on Jul 10, 2013
  1. @popcornmix

    sdhci-bcm2807: Increase sync_after_dma timeout

    The current timeout is being hit with some cards that complete successfully with a longer timeout.
    The timeout is not handled well, and is believed to be a code path that causes corruption.
    872a8ff suggests that crappy cards can take up to 3 seconds to respond
    popcornmix committed Jul 10, 2013
Commits on Jul 8, 2013
  1. Fix function tracing

    Gordon Hollingworth committed Jul 8, 2013
Something went wrong with that request. Please try again.