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.
Merge pull request #340 from P33M/rpi-3.6.y

dwc_otg: make channel halts with unknown state less damaging
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.
Merge pull request #344 from P33M/rpi-3.6.y

dwc_otg: fiq_split: use TTs with more granularity
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.
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).
dwc_otg: fix potential sleep while atomic during urb enqueue

Fixes a regression introduced with eb1b482a. 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.
Merge pull request #347 from P33M/rpi-3.6.y

dwc_otg: fix potential sleep while atomic during urb enqueue
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.
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.
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)
Merge pull request #352 from P33M/rpi-3.6.y

dwc_otg: root port and FIQ bugfixes
Increase to CONFIG_MMC_BLOCK_MINORS=32
and enable CONFIG_JUMP_LABEL
See: https://github.com/raspberrypi/linux/pull/348
Changes for new NOOBS multi partition booting from gsh
Replace magic number with its #define name
Merge pull request #362 from lurch/patch-1

Replace magic number with its #define name
Enable CONFIG_COMPACTION and move to SLUB memory allocator.
See: https://github.com/raspberrypi/linux/pull/349
Support for cheap Ralink 3070 WiFi plug

See: https://github.com/raspberrypi/linux/pull/321
Add new config options: CPU_FREQ_STAT_DETAILS, DUMMY, QFMT_V1, QFMT_V2, DLM
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 c8edb238.

In certain circumstances, usually while booting, this interrupt
storm could cause SD card timeouts.