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

    P33M committed Sep 27, 2013
    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.
  2. Add AppleTalk module

    popcornmix committed Sep 27, 2013
Commits on Sep 20, 2013
  1. Merge pull request #380 from P33M/rpi-3.6.y

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

    P33M committed Sep 20, 2013
    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.
Commits on Sep 7, 2013
Commits on Aug 30, 2013
Commits on Aug 23, 2013
  1. Merge pull request #362 from lurch/patch-1

    popcornmix committed Aug 23, 2013
    Replace magic number with its #define name
Commits on Aug 22, 2013
Commits on Aug 19, 2013
Commits on Aug 15, 2013
  1. Increase to CONFIG_MMC_BLOCK_MINORS=32

    popcornmix committed Aug 15, 2013
    and enable CONFIG_JUMP_LABEL
    See: #348
Commits on Aug 7, 2013
  1. Merge pull request #352 from P33M/rpi-3.6.y

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

    P33M committed Aug 5, 2013
    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)
  2. dwc_otg: prevent leaking URBs during enqueue

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

    P33M committed Aug 5, 2013
    Failing to set up the FIQ correctly would result in
    "IRQ 32: nobody cared" errors in dmesg.
Commits on Aug 2, 2013
  1. Merge pull request #347 from P33M/rpi-3.6.y

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

    P33M committed Aug 2, 2013
    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.
Commits on Aug 1, 2013
  1. vchiq_util: Fix race condition in push/pop

    Philip Taylor committed with popcornmix May 28, 2013
    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).
  2. VCHIQ: Fix mem leak of USER_SERVICE_T objects.

    Matthew Hails committed with popcornmix May 13, 2013
    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.
Commits on Jul 30, 2013
  1. Merge pull request #344 from P33M/rpi-3.6.y

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

    P33M committed Jul 30, 2013
    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.
Commits on Jul 27, 2013
  1. Merge pull request #340 from P33M/rpi-3.6.y

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

    P33M committed Jul 23, 2013
    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.
Commits on Jul 22, 2013
  1. Merge pull request #337 from P33M/rpi-3.6.y

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

    P33M committed Jul 22, 2013
    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.
Commits on Jul 19, 2013
  1. Merge pull request #334 from P33M/rpi-3.6.y

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

    P33M committed Jul 18, 2013
    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.
Commits on Jul 16, 2013
  1. Merge pull request #330 from P33M/rpi-3.6.y

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

    P33M committed Jul 13, 2013
    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.
Commits on Jul 13, 2013
  1. dwc_otg: mask correct interrupts after transaction error recovery

    P33M committed Jul 13, 2013
    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.
Commits on Jul 10, 2013
  1. sdhci-bcm2807: Increase sync_after_dma timeout

    popcornmix committed Jul 10, 2013
    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
Commits on Jul 8, 2013
  1. Fix function tracing

    Gordon Hollingworth committed Jul 8, 2013