Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

drm/vc4: Backport to 4.9 #1813

Closed
wants to merge 183 commits into from
Closed

drm/vc4: Backport to 4.9 #1813

wants to merge 183 commits into from

Commits on Feb 4, 2017

  1. smsx95xx: fix crimes against truesize

    smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings.
    
    This patch stops smsc95xx from changing truesize.
    
    Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
    Steve Glendinning authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    3df8aa3 View commit details
    Browse the repository at this point in the history
  2. Copy the full SHA
    aefca8f View commit details
    Browse the repository at this point in the history
  3. Allow mac address to be set in smsc95xx

    Signed-off-by: popcornmix <popcornmix@gmail.com>
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    a4774fe View commit details
    Browse the repository at this point in the history
  4. Protect __release_resource against resources without parents

    Without this patch, removing a device tree overlay can crash here.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    0b4480a View commit details
    Browse the repository at this point in the history
  5. mm: Remove the PFN busy warning

    See commit dae803e -- the warning is
    expected sometimes when using CMA.  However, that commit still spams
    my kernel log with these warnings.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    029f649 View commit details
    Browse the repository at this point in the history
  6. irq-bcm2836: Prevent spurious interrupts, and trap them early

    The old arch-specific IRQ macros included a dsb to ensure the
    write to clear the mailbox interrupt completed before returning
    from the interrupt. The BCM2836 irqchip driver needs the same
    precaution to avoid spurious interrupts.
    
    Spurious interrupts are still possible for other reasons,
    though, so trap them early.
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    3fad099 View commit details
    Browse the repository at this point in the history
  7. irqchip: bcm2835: Add FIQ support

    Add a duplicate irq range with an offset on the hwirq's so the
    driver can detect that enable_fiq() is used.
    Tested with downstream dwc_otg USB controller driver.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Acked-by: Stephen Warren <swarren@wwwdotorg.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    0c9c73f View commit details
    Browse the repository at this point in the history
  8. irqchip: irq-bcm2835: Add 2836 FIQ support

    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    3b662c4 View commit details
    Browse the repository at this point in the history
  9. spidev: Add "spidev" compatible string to silence warning

    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    21a313f View commit details
    Browse the repository at this point in the history
  10. serial: 8250: Don't crash when nr_uarts is 0

    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    0059a02 View commit details
    Browse the repository at this point in the history
  11. pinctrl-bcm2835: Set base to 0 give expected gpio numbering

    Signed-off-by: Noralf Tronnes <notro@tronnes.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    c9d0e13 View commit details
    Browse the repository at this point in the history
  12. pinctrl-bcm2835: Fix interrupt handling for GPIOs 28-31 and 46-53

    Contrary to the documentation, the BCM2835 GPIO controller actually has
    four interrupt lines - one each for the three IRQ groups and one common. Rather
    confusingly, the GPIO interrupt groups don't correspond directly with the GPIO
    control banks. Instead, GPIOs 0-27 generate IRQ GPIO0, 28-45 GPIO1 and
    46-53 GPIO2.
    
    Awkwardly, the GPIOS for IRQ GPIO1 straddle two 32-entry GPIO banks, so it is
    cleaner to split out a function to process the interrupts for a single GPIO
    bank.
    
    This bug has only just been observed because GPIOs above 27 can only be
    accessed on an old Raspberry Pi with the optional P5 header fitted, where
    the pins are often used for I2S instead.
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    c7ab4eb View commit details
    Browse the repository at this point in the history
  13. pinctrl-bcm2835: Only request the interrupts listed in the DTB

    Although the GPIO controller can generate three interrupts (four counting
    the common one), the device tree files currently only specify two. In the
    absence of the third, simply don't register that interrupt (as opposed to
    registering 0), which has the effect of making it impossible to generate
    interrupts for GPIOs 46-53 which, since they share pins with the SD card
    interface, is unlikely to be a problem.
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    a5a46d2 View commit details
    Browse the repository at this point in the history
  14. pinctrl-bcm2835: Return pins to inputs when freed

    When dynamically unloading overlays, it is important that freed pins are
    restored to being inputs to prevent functions from being enabled in
    multiple places at once.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    403ea17 View commit details
    Browse the repository at this point in the history
  15. spi-bcm2835: Support pin groups other than 7-11

    The spi-bcm2835 driver automatically uses GPIO chip-selects due to
    some unreliability of the native ones. In doing so it chooses the
    same pins as the native chip-selects would use, but the existing
    code always uses pins 7 and 8, wherever the SPI function is mapped.
    
    Search the pinctrl group assigned to the driver for pins that
    correspond to native chip-selects, and use those for GPIO chip-
    selects.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    d4a8fe9 View commit details
    Browse the repository at this point in the history
  16. spi-bcm2835: Disable forced software CS

    Select software CS in bcm2708_common.dtsi, and disable the automatic
    conversion in the driver to allow hardware CS to be re-enabled with an
    overlay.
    
    See: raspberrypi#1547
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    fa79e10 View commit details
    Browse the repository at this point in the history
  17. spi-bcm2835: Remove unused code

    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    85bb42a View commit details
    Browse the repository at this point in the history
  18. ARM: bcm2835: Set Serial number and Revision

    The VideoCore bootloader passes in Serial number and
    Revision number through Device Tree. Make these available to
    userspace through /proc/cpuinfo.
    
    Mainline status:
    
    There is a commit in linux-next that standardize passing the serial
    number through Device Tree (string: /serial-number):
    ARM: 8355/1: arch: Show the serial number from devicetree in cpuinfo
    
    There was an attempt to do the same with the revision number, but it
    didn't get in:
    [PATCH v2 1/2] arm: devtree: Set system_rev from DT revision
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    c33ee72 View commit details
    Browse the repository at this point in the history
  19. dmaengine: bcm2835: Load driver early and support legacy API

    Load driver early since at least bcm2708_fb doesn't support deferred
    probing and even if it did, we don't want the video driver deferred.
    Support the legacy DMA API which is needed by bcm2708_fb.
    Don't mask out channel 2.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    b4e0c1c View commit details
    Browse the repository at this point in the history
  20. Copy the full SHA
    05f9e93 View commit details
    Browse the repository at this point in the history
  21. clk: bcm2835: Mark GPIO clocks enabled at boot as critical.

    These divide off of PLLD_PER and are used for the ethernet and wifi
    PHYs source PLLs.  Neither of them is currently represented by a phy
    device that would grab the clock for us.
    
    This keeps other drivers from killing the networking PHYs when they
    disable their own clocks and trigger PLLD_PER's refcount going to 0.
    
    v2: Skip marking as critical if they aren't on at boot.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    c9cb549 View commit details
    Browse the repository at this point in the history
  22. rtc: Add SPI alias for pcf2123 driver

    Without this alias, Device Tree won't cause the driver
    to be loaded.
    
    See: raspberrypi#1510
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    6c8399f View commit details
    Browse the repository at this point in the history
  23. watchdog: bcm2835: Support setting reboot partition

    The Raspberry Pi firmware looks at the RSTS register to know which
    partition to boot from. The reboot syscall command
    LINUX_REBOOT_CMD_RESTART2 supports passing in a string argument.
    
    Add support for passing in a partition number 0..63 to boot from.
    Partition 63 is a special partiton indicating halt.
    If the partition doesn't exist, the firmware falls back to partition 0.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    259f169 View commit details
    Browse the repository at this point in the history
  24. Copy the full SHA
    79d9326 View commit details
    Browse the repository at this point in the history
  25. Copy the full SHA
    9799ea4 View commit details
    Browse the repository at this point in the history
  26. Register the clocks early during the boot process,

    so that special/critical clocks can get enabled early on
    in the boot process avoiding the risk of disabling a clock,
    pll_divider or pll when a claiming driver fails to install
    propperly - maybe it needs to defer.
    
    Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
    msperl authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    261269c View commit details
    Browse the repository at this point in the history
  27. bcm2835-rng: Avoid initialising if already enabled

    Avoids the 0x40000 cycles of warmup again if firmware has already used it
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    a195976 View commit details
    Browse the repository at this point in the history
  28. kbuild: Ignore dtco targets when filtering symbols

    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    6c52812 View commit details
    Browse the repository at this point in the history
  29. BCM2835_DT: Fix I2S register map

    rtiemann authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    8ee6fd9 View commit details
    Browse the repository at this point in the history
  30. Main bcm2708/bcm2709 linux port

    Signed-off-by: popcornmix <popcornmix@gmail.com>
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    bcm2709: Drop platform smp and timer init code
    
    irq-bcm2836 handles this through these functions:
    bcm2835_init_local_timer_frequency()
    bcm2836_arm_irqchip_smp_init()
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    bcm270x: Use watchdog for reboot/poweroff
    
    The watchdog driver already has support for reboot/poweroff.
    Make use of this and remove the code from the platform files.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    28a1aeb View commit details
    Browse the repository at this point in the history
  31. Add dwc_otg driver

    Signed-off-by: popcornmix <popcornmix@gmail.com>
    
    usb: dwc: fix lockdep false positive
    
    Signed-off-by: Kari Suvanto <karis79@gmail.com>
    
    usb: dwc: fix inconsistent lock state
    
    Signed-off-by: Kari Suvanto <karis79@gmail.com>
    
    Add FIQ patch to dwc_otg driver. Enable with dwc_otg.fiq_fix_enable=1. Should give about 10% more ARM performance.
    Thanks to Gordon and Costas
    
    Avoid dynamic memory allocation for channel lock in USB driver. Thanks ddv2005.
    
    Add NAK holdoff scheme. Enabled by default, disable with dwc_otg.nak_holdoff_enable=0. Thanks gsh
    
    Make sure we wait for the reset to finish
    
    dwc_otg: fix bug in dwc_otg_hcd.c resulting in silent kernel
    	 memory corruption, escalating to OOPS under high USB load.
    
    dwc_otg: Fix unsafe access of QTD during URB enqueue
    
    In dwc_otg_hcd_urb_enqueue during qtd creation, it was possible that the
    transaction could complete almost immediately after the qtd was assigned
    to a host channel during URB enqueue, which meant the qtd pointer was no
    longer valid having been completed and removed. Usually, this resulted in
    an OOPS during URB submission. By predetermining whether transactions
    need to be queued or not, this unsafe pointer access is avoided.
    
    This bug was only evident on the Pi model A where a device was attached
    that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
    
    dwc_otg: Fix incorrect URB allocation error handling
    
    If the memory allocation for a dwc_otg_urb failed, the kernel would OOPS
    because for some reason a member of the *unallocated* struct was set to
    zero. Error handling changed to fail correctly.
    
    dwc_otg: fix potential use-after-free case in interrupt handler
    
    If a transaction had previously aborted, certain interrupts are
    enabled to track error counts and reset where necessary. On IN
    endpoints the host generates an ACK interrupt near-simultaneously
    with completion of transfer. In the case where this transfer had
    previously had an error, this results in a use-after-free on
    the QTD memory space with a 1-byte length being overwritten to
    0x00.
    
    dwc_otg: add handling of SPLIT transaction data toggle errors
    
    Previously a data toggle error on packets from a USB1.1 device behind
    a TT would result in the Pi locking up as the driver never handled
    the associated interrupt. Patch adds basic retry mechanism and
    interrupt acknowledgement to cater for either a chance toggle error or
    for devices that have a broken initial toggle state (FT8U232/FT232BM).
    
    dwc_otg: implement tasklet for returning URBs to usbcore hcd layer
    
    The dwc_otg driver interrupt handler for transfer completion will spend
    a very long time with interrupts disabled when a URB is completed -
    this is because usb_hcd_giveback_urb is called from within the handler
    which for a USB device driver with complicated processing (e.g. webcam)
    will take an exorbitant amount of time to complete. This results in
    missed completion interrupts for other USB packets which lead to them
    being dropped due to microframe overruns.
    
    This patch splits returning the URB to the usb hcd layer into a
    high-priority tasklet. This will have most benefit for isochronous IN
    transfers but will also have incidental benefit where multiple periodic
    devices are active at once.
    
    dwc_otg: fix NAK holdoff and allow on split transactions only
    
    This corrects a bug where if a single active non-periodic endpoint
    had at least one transaction in its qh, on frnum == MAX_FRNUM the qh
    would get skipped and never get queued again. This would result in
    a silent device until error detection (automatic or otherwise) would
    either reset the device or flush and requeue the URBs.
    
    Additionally the NAK holdoff was enabled for all transactions - this
    would potentially stall a HS endpoint for 1ms if a previous error state
    enabled this interrupt and the next response was a NAK. Fix so that
    only split transactions get held off.
    
    dwc_otg: Call usb_hcd_unlink_urb_from_ep with lock held in completion handler
    
    usb_hcd_unlink_urb_from_ep must be called with the HCD lock held.  Calling it
    asynchronously in the tasklet was not safe (regression in
    c4564d4).
    
    This change unlinks it from the endpoint prior to queueing it for handling in
    the tasklet, and also adds a check to ensure the urb is OK to be unlinked
    before doing so.
    
    NULL pointer dereference kernel oopses had been observed in usb_hcd_giveback_urb
    when a USB device was unplugged/replugged during data transfer.  This effect
    was reproduced using automated USB port power control, hundreds of replug
    events were performed during active transfers to confirm that the problem was
    eliminated.
    
    USB fix using a FIQ to implement split transactions
    
    This commit adds a FIQ implementaion that schedules
    the split transactions using a FIQ so we don't get
    held off by the interrupt latency of Linux
    
    dwc_otg: fix device attributes and avoid kernel warnings on boot
    
    dcw_otg: avoid logging function that can cause panics
    
    See: raspberrypi/firmware#21
    Thanks to cleverca22 for fix
    
    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.
    
    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.
    
    Fix function tracing
    
    dwc_otg: whitespace cleanup in dwc_otg_urb_enqueue
    
    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.
    
    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.
    
    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.
    
    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.
    
    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.
    
    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 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)
    
    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: 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.
    
    dwc_otg: Fix for occasional lockup on boot when doing a USB reset
    
    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.
    
    Fix ARM architecture issue with local_irq_restore()
    
    If local_fiq_enable() is called before a local_irq_restore(flags) where
    the flags variable has the F bit set, the FIQ will be erroneously disabled.
    
    Fixup arch_local_irq_restore to avoid trampling the F bit in CPSR.
    
    Also fix some of the hacks previously implemented for previous dwc_otg
    incarnations.
    
    dwc_otg: fiq_fsm: Base commit for driver rewrite
    
    This commit removes the previous FIQ fixes entirely and adds fiq_fsm.
    
    This rewrite features much more complete support for split transactions
    and takes into account several OTG hardware bugs. High-speed
    isochronous transactions are also capable of being performed by fiq_fsm.
    
    All driver options have been removed and replaced with:
      - dwc_otg.fiq_enable (bool)
      - dwc_otg.fiq_fsm_enable (bool)
      - dwc_otg.fiq_fsm_mask (bitmask)
      - dwc_otg.nak_holdoff (unsigned int)
    
    Defaults are specified such that fiq_fsm behaves similarly to the
    previously implemented FIQ fixes.
    
    fiq_fsm: Push error recovery into the FIQ when fiq_fsm is used
    
    If the transfer associated with a QTD failed due to a bus error, the HCD
    would retry the transfer up to 3 times (implementing the USB2.0
    three-strikes retry in software).
    
    Due to the masking mechanism used by fiq_fsm, it is only possible to pass
    a single interrupt through to the HCD per-transfer.
    
    In this instance host channels would fall off the radar because the error
    reset would function, but the subsequent channel halt would be lost.
    
    Push the error count reset into the FIQ handler.
    
    fiq_fsm: Implement timeout mechanism
    
    For full-speed endpoints with a large packet size, interrupt latency
    runs the risk of the FIQ starting a transaction too late in a full-speed
    frame. If the device is still transmitting data when EOF2 for the
    downstream frame occurs, the hub will disable the port. This change is
    not reflected in the hub status endpoint and the device becomes
    unresponsive.
    
    Prevent high-bandwidth transactions from being started too late in a
    frame. The mechanism is not guaranteed: a combination of bit stuffing
    and hub latency may still result in a device overrunning.
    
    fiq_fsm: fix bounce buffer utilisation for Isochronous OUT
    
    Multi-packet isochronous OUT transactions were subject to a few bounday
    bugs. Fix them.
    
    Audio playback is now much more robust: however, an issue stands with
    devices that have adaptive sinks - ALSA plays samples too fast.
    
    dwc_otg: Return full-speed frame numbers in HS mode
    
    The frame counter increments on every *microframe* in high-speed mode.
    Most device drivers expect this number to be in full-speed frames - this
    caused considerable confusion to e.g. snd_usb_audio which uses the
    frame counter to estimate the number of samples played.
    
    fiq_fsm: save PID on completion of interrupt OUT transfers
    
    Also add edge case handling for interrupt transports.
    
    Note that for periodic split IN, data toggles are unimplemented in the
    OTG host hardware - it unconditionally accepts any PID.
    
    fiq_fsm: add missing case for fiq_fsm_tt_in_use()
    
    Certain combinations of bitrate and endpoint activity could
    result in a periodic transaction erroneously getting started
    while the previous Isochronous OUT was still active.
    
    fiq_fsm: clear hcintmsk for aborted transactions
    
    Prevents the FIQ from erroneously handling interrupts
    on a timed out channel.
    
    fiq_fsm: enable by default
    
    fiq_fsm: fix dequeues for non-periodic split transactions
    
    If a dequeue happened between the SSPLIT and CSPLIT phases of the
    transaction, the HCD would never receive an interrupt.
    
    fiq_fsm: Disable by default
    
    fiq_fsm: Handle HC babble errors
    
    The HCTSIZ transfer size field raises a babble interrupt if
    the counter wraps. Handle the resulting interrupt in this case.
    
    dwc_otg: fix interrupt registration for fiq_enable=0
    
    Additionally make the module parameter conditional for wherever
    hcd->fiq_state is touched.
    
    fiq_fsm: Enable by default
    
    dwc_otg: Fix various issues with root port and transaction errors
    
    Process the host port interrupts correctly (and don't trample them).
    Root port hotplug now functional again.
    
    Fix a few thinkos with the transaction error passthrough for fiq_fsm.
    
    fiq_fsm: Implement hack for Split Interrupt transactions
    
    Hubs aren't too picky about which endpoint we send Control type split
    transactions to. By treating Interrupt transfers as Control, it is
    possible to use the non-periodic queue in the OTG core as well as the
    non-periodic FIFOs in the hub itself. This massively reduces the
    microframe exclusivity/contention that periodic split transactions
    otherwise have to enforce.
    
    It goes without saying that this is a fairly egregious USB specification
    violation, but it works.
    
    Original idea by Hans Petter Selasky @ FreeBSD.org.
    
    dwc_otg: FIQ support on SMP. Set up FIQ stack and handler on Core 0 only.
    
    dwc_otg: introduce fiq_fsm_spin(un|)lock()
    
    SMP safety for the FIQ relies on register read-modify write cycles being
    completed in the correct order. Several places in the DWC code modify
    registers also touched by the FIQ. Protect these by a bare-bones lock
    mechanism.
    
    This also makes it possible to run the FIQ and IRQ handlers on different
    cores.
    
    fiq_fsm: fix build on bcm2708 and bcm2709 platforms
    
    dwc_otg: put some barriers back where they should be for UP
    
    bcm2709/dwc_otg: Setup FIQ on core 1 if >1 core active
    
    dwc_otg: fixup read-modify-write in critical paths
    
    Be more careful about read-modify-write on registers that the FIQ
    also touches.
    
    Guard fiq_fsm_spin_lock with fiq_enable check
    
    fiq_fsm: Falling out of the state machine isn't fatal
    
    This edge case can be hit if the port is disabled while the FIQ is
    in the middle of a transaction. Make the effects less severe.
    
    Also get rid of the useless return value.
    
    squash: dwc_otg: Allow to build without SMP
    
    usb: core: make overcurrent messages more prominent
    
    Hub overcurrent messages are more serious than "debug". Increase loglevel.
    
    usb: dwc_otg: Don't use dma_to_virt()
    
    Commit 6ce0d20 changes dma_to_virt() which breaks this driver.
    Open code the old dma_to_virt() implementation to work around this.
    
    Limit the use of __bus_to_virt() to cases where transfer_buffer_length
    is set and transfer_buffer is not set. This is done to increase the
    chance that this driver will also work on ARCH_BCM2835.
    
    transfer_buffer should not be NULL if the length is set, but the
    comment in the code indicates that there are situations where this
    might happen. drivers/usb/isp1760/isp1760-hcd.c also has a similar
    comment pointing to a possible: 'usb storage / SCSI bug'.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dwc_otg: Fix crash when fiq_enable=0
    
    dwc_otg: fiq_fsm: Make high-speed isochronous strided transfers work properly
    
    Certain low-bandwidth high-speed USB devices (specialist audio devices,
    compressed-frame webcams) have packet intervals > 1 microframe.
    
    Stride these transfers in the FIQ by using the start-of-frame interrupt
    to restart the channel at the right time.
    
    dwc_otg: Force host mode to fix incorrect compute module boards
    
    dwc_otg: Add ARCH_BCM2835 support
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dwc_otg: Simplify FIQ irq number code
    
    Dropping ATAGS means we can simplify the FIQ irq number code.
    Also add error checking on the returned irq number.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dwc_otg: Remove duplicate gadget probe/unregister function
    
    dwc_otg: Properly set the HFIR
    
    Douglas Anderson reported:
    
    According to the most up to date version of the dwc2 databook, the FRINT
    field of the HFIR register should be programmed to:
    * 125 us * (PHY clock freq for HS) - 1
    * 1000 us * (PHY clock freq for FS/LS) - 1
    
    This is opposed to older versions of the doc that claimed it should be:
    * 125 us * (PHY clock freq for HS)
    * 1000 us * (PHY clock freq for FS/LS)
    
    and reported lower timing jitter on a USB analyser
    
    dcw_otg: trim xfer length when buffer larger than allocated size is received
    
    dwc_otg: Don't free qh align buffers in atomic context
    
    dwc_otg: Enable the hack for Split Interrupt transactions by default
    
    dwc_otg.fiq_fsm_mask=0xF has long been a suggestion for users with audio stutters or other USB bandwidth issues.
    So far we are aware of many success stories but no failure caused by this setting.
    Make it a default to learn more.
    
    See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=70437
    
    Signed-off-by: popcornmix <popcornmix@gmail.com>
    
    dwc_otg: Use kzalloc when suitable
    
    dwc_otg: Pass struct device to dma_alloc*()
    
    This makes it possible to get the bus address from Device Tree.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    4c7d2ae View commit details
    Browse the repository at this point in the history
  32. bcm2708 framebuffer driver

    Signed-off-by: popcornmix <popcornmix@gmail.com>
    
    bcm2708_fb : Implement blanking support using the mailbox property interface
    
    bcm2708_fb: Add pan and vsync controls
    
    bcm2708_fb: DMA acceleration for fb_copyarea
    
    Based on http://www.raspberrypi.org/phpBB3/viewtopic.php?p=62425#p62425
    Also used Simon's dmaer_master module as a reference for tweaking DMA
    settings for better performance.
    
    For now busylooping only. IRQ support might be added later.
    With non-overclocked Raspberry Pi, the performance is ~360 MB/s
    for simple copy or ~260 MB/s for two-pass copy (used when dragging
    windows to the right).
    
    In the case of using DMA channel 0, the performance improves
    to ~440 MB/s.
    
    For comparison, VFP optimized CPU copy can only do ~114 MB/s in
    the same conditions (hindered by reading uncached source buffer).
    
    Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
    
    bcm2708_fb: report number of dma copies
    
    Add a counter (exported via debugfs) reporting the
    number of dma copies that the framebuffer driver
    has done, in order to help evaluate different
    optimization strategies.
    
    Signed-off-by: Luke Diamand <luked@broadcom.com>
    
    bcm2708_fb: use IRQ for DMA copies
    
    The copyarea ioctl() uses DMA to speed things along. This
    was busy-waiting for completion. This change supports using
    an interrupt instead for larger transfers. For small
    transfers, busy-waiting is still likely to be faster.
    
    Signed-off-by: Luke Diamand <luke@diamand.org>
    
    bcm2708: Make ioctl logging quieter
    
    video: fbdev: bcm2708_fb: Don't panic on error
    
    No need to panic the kernel if the video driver fails.
    Just print a message and return an error.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    fbdev: bcm2708_fb: Add ARCH_BCM2835 support
    
    Add Device Tree support.
    Pass the device to dma_alloc_coherent() in order to get the
    correct bus address on ARCH_BCM2835.
    Use the new DMA legacy API header file.
    Including <mach/platform.h> is not necessary.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    BCM270x_DT: Add bcm2708-fb device
    
    Add bcm2708-fb to Device Tree and don't add the
    platform device when booting in DT mode.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    a5db916 View commit details
    Browse the repository at this point in the history
  33. dmaengine: Add support for BCM2708

    Add support for DMA controller of BCM2708 as used in the Raspberry Pi.
    Currently it only supports cyclic DMA.
    
    Signed-off-by: Florian Meier <florian.meier@koalo.de>
    
    dmaengine: expand functionality by supporting scatter/gather transfers sdhci-bcm2708 and dma.c: fix for LITE channels
    
    DMA: fix cyclic LITE length overflow bug
    
    dmaengine: bcm2708: Remove chancnt affectations
    
    Mirror bcm2835-dma.c commit 9eba553:
    chancnt is already filled by dma_async_device_register, which uses the channel
    list to know how much channels there is.
    
    Since it's already filled, we can safely remove it from the drivers' probe
    function.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dmaengine: bcm2708: overwrite dreq only if it is not set
    
    dreq is set when the DMA channel is fetched from Device Tree.
    slave_id is set using dmaengine_slave_config().
    Only overwrite dreq with slave_id if it is not set.
    
    dreq/slave_id in the cyclic DMA case is not touched, because I don't
    have hardware to test with.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dmaengine: bcm2708: do device registration in the board file
    
    Don't register the device in the driver. Do it in the board file.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dmaengine: bcm2708: don't restrict DT support to ARCH_BCM2835
    
    Both ARCH_BCM2835 and ARCH_BCM270x are built with OF now.
    Add Device Tree support to the non ARCH_BCM2835 case.
    Use the same driver name regardless of architecture.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    BCM270x_DT: add bcm2835-dma entry
    
    Add Device Tree entry for bcm2835-dma.
    The entry doesn't contain any resources since they are handled
    by the arch/arm/mach-bcm270x/dma.c driver.
    In non-DT mode, don't add the device in the board file.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    bcm2708-dmaengine: Add debug options
    
    BCM270x: Add memory and irq resources to dmaengine device and DT
    
    Prepare for merging of the legacy DMA API arch driver dma.c
    with bcm2708-dmaengine by adding memory and irq resources both
    to platform file device and Device Tree node.
    Don't use BCM_DMAMAN_DRIVER_NAME so we don't have to include mach/dma.h
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dmaengine: bcm2708: Merge with arch dma.c driver and disable dma.c
    
    Merge the legacy DMA API driver with bcm2708-dmaengine.
    This is done so we can use bcm2708_fb on ARCH_BCM2835 (mailbox
    driver is also needed).
    
    Changes to the dma.c code:
    - Use BIT() macro.
    - Cutdown some comments to one line.
    - Add mutex to vc_dmaman and use this, since the dev lock is locked
      during probing of the engine part.
    - Add global g_dmaman variable since drvdata is used by the engine part.
    - Restructure for readability:
      vc_dmaman_chan_alloc()
      vc_dmaman_chan_free()
      bcm_dma_chan_free()
    - Restructure bcm_dma_chan_alloc() to simplify error handling.
    - Use device irq resources instead of hardcoded bcm_dma_irqs table.
    - Remove dev_dmaman_register() and code it directly.
    - Remove dev_dmaman_deregister() and code it directly.
    - Simplify bcm_dmaman_probe() using devm_* functions.
    - Get dmachans from DT if available.
    - Keep 'dma.dmachans' module argument name for backwards compatibility.
    
    Make it available on ARCH_BCM2835 as well.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dmaengine: bcm2708: set residue_granularity field
    
    bcm2708-dmaengine supports residue reporting at burst level
    but didn't report this via the residue_granularity field.
    
    Without this field set properly we get playback issues with I2S cards.
    
    dmaengine: bcm2708-dmaengine: Fix memory leak when stopping a running transfer
    
    bcm2708-dmaengine: Use more DMA channels (but not 12)
    
    1) Only the bcm2708_fb drivers uses the legacy DMA API, and
    it requires a BULK-capable channel, so all other types
    (FAST, NORMAL and LITE) can be made available to the regular
    DMA API.
    
    2) DMA channels 11-14 share an interrupt. The driver can't
    handle this, so don't use channels 12-14 (12 was used, probably
    because it appears to have an interrupt, but in reality that
    interrupt is for activity on ANY channel). This may explain
    a lockup encountered when running out of DMA channels.
    
    The combined effect of this patch is to leave 7 DMA channels
    available + channel 0 for bcm2708_fb via the legacy API.
    
    See: raspberrypi#1110
         raspberrypi#1108
    
    dmaengine: bcm2708: Make legacy API available for bcm2835-dma
    
    bcm2708_fb uses the legacy DMA API, so in order to start using
    bcm2835-dma, bcm2835-dma has to support the legacy API. Make this
    possible by exporting bcm_dmaman_probe() and bcm_dmaman_remove().
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dmaengine: bcm2708: Change DT compatible string
    
    Both bcm2835-dma and bcm2708-dmaengine have the same compatible string.
    So change compatible to "brcm,bcm2708-dma".
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    dmaengine: bcm2708: Remove driver but keep legacy API
    
    Dropping non-DT support means we don't need this driver,
    but we still need the legacy DMA API.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    bcm2708-dmaengine - Fix arm64 portability/build issues
    koalo authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    5ab3584 View commit details
    Browse the repository at this point in the history
  34. MMC: added alternative MMC driver

    mmc: Disable CMD23 transfers on all cards
    
    Pending wire-level investigation of these types of transfers
    and associated errors on bcm2835-mmc, disable for now. Fallback of
    CMD18/CMD25 transfers will be used automatically by the MMC layer.
    
    Reported/Tested-by: Gellert Weisz <gellert@raspberrypi.org>
    
    mmc: bcm2835-mmc: enable DT support for all architectures
    
    Both ARCH_BCM2835 and ARCH_BCM270x are built with OF now.
    Enable Device Tree support for all architectures.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    mmc: bcm2835-mmc: fix probe error handling
    
    Probe error handling is broken in several places.
    Simplify error handling by using device managed functions.
    Replace pr_{err,info} with dev_{err,info}.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    bcm2835-mmc: Add locks when accessing sdhost registers
    
    bcm2835-mmc: Add range of debug options for slowing things down
    
    bcm2835-mmc: Add option to disable some delays
    
    bcm2835-mmc: Add option to disable MMC_QUIRK_BLK_NO_CMD23
    
    bcm2835-mmc: Default to disabling MMC_QUIRK_BLK_NO_CMD23
    
    bcm2835-mmc: Adding overclocking option
    
    Allow a different clock speed to be substitued for a requested 50MHz.
    This option is exposed using the "overclock_50" DT parameter.
    Note that the mmc interface is restricted to EVEN integer divisions of
    250MHz, and the highest sensible option is 63 (250/4 = 62.5), the
    next being 125 (250/2) which is much too high.
    
    Use at your own risk.
    
    bcm2835-mmc: Round up the overclock, so 62 works for 62.5Mhz
    
    Also only warn once for each overclock setting.
    
    mmc: bcm2835-mmc: Make available on ARCH_BCM2835
    
    Make the bcm2835-mmc driver available for use on ARCH_BCM2835.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    BCM270x_DT: add bcm2835-mmc entry
    
    Add Device Tree entry for bcm2835-mmc.
    In non-DT mode, don't add the device in the board file.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    bcm2835-mmc: Don't overwrite MMC capabilities from DT
    
    bcm2835-mmc: Don't override bus width capabilities from devicetree
    
    Take out the force setting of the MMC_CAP_4_BIT_DATA host capability
    so that the result read from devicetree via mmc_of_parse() is
    preserved.
    
    bcm2835-mmc: Only claim one DMA channel
    
    With both MMC controllers enabled there are few DMA channels left. The
    bcm2835-mmc driver only uses DMA in one direction at a time, so it
    doesn't need to claim two channels.
    
    See: raspberrypi#1327
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    weiszg authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    feab5b6 View commit details
    Browse the repository at this point in the history
  35. Adding bcm2835-sdhost driver, and an overlay to enable it

    BCM2835 has two SD card interfaces. This driver uses the other one.
    
    bcm2835-sdhost: Error handling fix, and code clarification
    
    bcm2835-sdhost: Adding overclocking option
    
    Allow a different clock speed to be substitued for a requested 50MHz.
    This option is exposed using the "overclock_50" DT parameter.
    Note that the sdhost interface is restricted to integer divisions of
    core_freq, and the highest sensible option for a core_freq of 250MHz
    is 84 (250/3 = 83.3MHz), the next being 125 (250/2) which is much too
    high.
    
    Use at your own risk.
    
    bcm2835-sdhost: Round up the overclock, so 62 works for 62.5Mhz
    
    Also only warn once for each overclock setting.
    
    bcm2835-sdhost: Improve error handling and recovery
    
    1) Expose the hw_reset method to the MMC framework, removing many
       internal calls by the driver.
    
    2) Reduce overclock setting on error.
    
    3) Increase timeout to cope with high capacity cards.
    
    4) Add properties and parameters to control pio_limit and debug.
    
    5) Reduce messages at probe time.
    
    bcm2835-sdhost: Further improve overclock back-off
    
    bcm2835-sdhost: Clear HBLC for PIO mode
    
    Also update pio_limit default in overlay README.
    
    bcm2835-sdhost: Add the ERASE capability
    
    See: raspberrypi#1076
    
    bcm2835-sdhost: Ignore CRC7 for MMC CMD1
    
    It seems that the sdhost interface returns CRC7 errors for CMD1,
    which is the MMC-specific SEND_OP_COND. Returning these errors to
    the MMC layer causes a downward spiral, but ignoring them seems
    to be harmless.
    
    bcm2835-mmc/sdhost: Remove ARCH_BCM2835 differences
    
    The bcm2835-mmc driver (and -sdhost driver that copied from it)
    contains code to handle SDIO interrupts in a threaded interrupt
    handler rather than waking the MMC framework thread. The change
    follows a patch from Russell King that adds the facility as the
    preferred way of working.
    
    However, the new code path is only present in ARCH_BCM2835
    builds, which I have taken to be a way of testing the waters
    rather than making the change across the board; I can't see
    any technical reason why it wouldn't be enabled for MACH_BCM270X
    builds. So this patch standardises on the ARCH_BCM2835 code,
    removing the old code paths.
    
    bcm2835-sdhost: Don't log timeout errors unless debug=1
    
    The MMC card-discovery process generates timeouts. This is
    expected behaviour, so reporting it to the user serves no purpose.
    Suppress the reporting of timeout errors unless the debug flag
    is on.
    
    bcm2835-sdhost: Add workaround for odd behaviour on some cards
    
    For reasons not understood, the sdhost driver fails when reading
    sectors very near the end of some SD cards. The problem could
    be related to the similar issue that reading the final sector
    of any card as part of a multiple read never completes, and the
    workaround is an extension of the mechanism introduced to solve
    that problem which ensures those sectors are always read singly.
    
    bcm2835-sdhost: Major revision
    
    This is a significant revision of the bcm2835-sdhost driver. It
    improves on the original in a number of ways:
    
    1) Through the use of CMD23 for reads it appears to avoid problems
       reading some sectors on certain high speed cards.
    2) Better atomicity to prevent crashes.
    3) Higher performance.
    4) Activity logging included, for easier diagnosis in the event
       of a problem.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    bcm2835-sdhost: Restore ATOMIC flag to PIO sg mapping
    
    Allocation problems have been seen in a wireless driver, and
    this is the only change which might have been responsible.
    
    SQUASH: bcm2835-sdhost: Only claim one DMA channel
    
    With both MMC controllers enabled there are few DMA channels left. The
    bcm2835-sdhost driver only uses DMA in one direction at a time, so it
    doesn't need to claim two channels.
    
    See: raspberrypi#1327
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    bcm2835-sdhost: Workaround for "slow" sectors
    
    Some cards have been seen to cause timeouts after certain sectors are
    read. This workaround enforces a minimum delay between the stop after
    reading one of those sectors and a subsequent data command.
    
    Using CMD23 (SET_BLOCK_COUNT) avoids this problem, so good cards will
    not be penalised by this workaround.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    bcm2835-sdhost: Firmware manages the clock divisor
    
    The bcm2835-sdhost driver hands control of the CDIV clock divisor
    register to matching firmware, allowing it to adjust to a changing
    core clock. This removes the need to use the performance governor or
    to enable io_is_busy on the on-demand governor in order to get the
    best SD performance.
    
    N.B. As SD clocks must be an integer divisor of the core clock, it is
    possible that the SD clock for "turbo" mode can be different (even
    lower) than "normal" mode.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    bcm2835-sdhost: Reset the clock in task context
    
    Since reprogramming the clock can now involve a round-trip to the
    firmware it must not be done at atomic context, and a tasklet
    is not a task.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    bcm2835-sdhost: Don't exit cmd wait loop on error
    
    The FAIL flag can be set in the CMD register before command processing
    is complete, leading to spurious "failed to complete" errors. This has
    the effect of promoting harmless CRC7 errors during CMD1 processing
    into errors that can delay and even prevent booting.
    
    Also:
    1) Convert the last KERN_ERROR message in the register dumping to
       KERN_INFO.
    2) Remove an unnecessary reset call from  bcm2835_sdhost_add_host.
    
    See: raspberrypi#1492
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    3d0f0b3 View commit details
    Browse the repository at this point in the history
  36. mmc: Add MMC_QUIRK_ERASE_BROKEN for some cards

    Some SD cards have been found that corrupt data when small blocks
    are erased. Add a quirk to indicate that ERASE should not be used,
    and set it for cards of that type.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    mmc: Apply QUIRK_BROKEN_ERASE to other capacities
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    mmc: Add card_quirks module parameter, log quirks
    
    Use mmc_block.card_quirks to override the quirks for all SD or MMC
    cards. The value is a bitfield using the bit positions defined in
    include/linux/mmc/card.h. If the module parameter is placed in the
    kernel command line (or bootargs) stored on the card then, assuming the
    device only has one SD card interface, the override effectively becomes
    card-specific.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    f6be5bc View commit details
    Browse the repository at this point in the history
  37. cma: Add vc_cma driver to enable use of CMA

    Signed-off-by: popcornmix <popcornmix@gmail.com>
    
    vc_cma: Make the vc_cma area the default contiguous DMA area
    
    vc_cma: Provide empty functions when module is not built
    
    Providing empty functions saves the users from guarding the
    function call with an #if clause.
    Move __init markings from prototypes to functions.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    a079bbc View commit details
    Browse the repository at this point in the history
  38. bcm2708: alsa sound driver

    Signed-off-by: popcornmix <popcornmix@gmail.com>
    
    alsa: add mmap support and some cleanups to bcm2835 ALSA driver
    
    snd-bcm2835: Add support for spdif/hdmi passthrough
    
    This adds a dedicated subdevice which can be used for passthrough of non-audio
    formats (ie encoded a52) through the hdmi audio link. In addition to this
    driver extension an appropriate card config is required to make alsa-lib
    support the AES parameters for this device.
    
    snd-bcm2708: Add mutex, improve logging
    
    Fix for ALSA driver crash
    
    Avoids an issue when closing and opening vchiq where a message can arrive before service handle has been written
    
    alsa: reduce severity of expected warning message
    
    snd-bcm2708: Fix dmesg spam for non-error case
    
    alsa: Ensure mutexes are released through error paths
    
    alsa: Make interrupted close paths quieter
    
    BCM270x: Add onboard sound device to Device Tree
    
    Add Device Tree support to alsa driver.
    Add device to Device Tree.
    Don't add platform devices when booting in DT mode.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    bcm2835: access controls under the audio mutex
    
    I don't think the ALSA framework provides any kind of automatic
    synchronization within the control callbacks. We most likely need
    to ensure this manually, so add locking around all access to shared
    mutable data. In particular, bcm2835_audio_set_ctls() should
    probably always be called under our own audio lock.
    
    snd-bcm2835: Don't allow responses from VC to be interrupted by user signals
    
    There should always be a response, and retry after a signal interruption is not handled, so don't report
    we are interruptible.
    
    See: raspberrypi#1560
    
    snd-bcm2835: Use bcm2835_hw params in preallocate
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    340dfdd View commit details
    Browse the repository at this point in the history
  39. vc_mem: Add vc_mem driver for querying firmware memory addresses

    Signed-off-by: popcornmix <popcornmix@gmail.com>
    
    BCM270x: Move vc_mem
    
    Make the vc_mem module available for ARCH_BCM2835 by moving it.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    079c7a4 View commit details
    Browse the repository at this point in the history
  40. vcsm: VideoCore shared memory service for BCM2835

    Add experimental support for the VideoCore shared memory service.
    This allows user processes to allocate memory from VideoCore's
    GPU relocatable heap and mmap the buffers. Additionally, the memory
    handles can passed to other VideoCore services such as MMAL, OpenMax
    and DispmanX
    
    TODO
    * This driver was originally released for BCM28155 which has a different
      cache architecture to BCM2835. Consequently, in this release only
      uncached mappings are supported. However, there's no fundamental
      reason which cached mappings cannot be support or BCM2835
    * More refactoring is required to remove the typedefs.
    * Re-enable the some of the commented out debug-fs statistics which were
      disabled when migrating code from proc-fs.
    * There's a lot of code to support sharing of VCSM in order to support
      Android. This could probably done more cleanly or perhaps just
      removed.
    
    Signed-off-by: Tim Gover <timgover@gmail.com>
    
    config: Disable VC_SM for now to fix hang with cutdown kernel
    
    vcsm: Use boolean as it cannot be built as module
    
    On building the bcm_vc_sm as a module we get the following error:
    
    v7_dma_flush_range and do_munmap are undefined in vc-sm.ko.
    
    Fix by making it not an option to build as module
    
    vcsm: Add ioctl for custom cache flushing
    
    vc-sm: Move headers out of arch directory
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Tim Gover authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    148da7d View commit details
    Browse the repository at this point in the history
  41. Add /dev/gpiomem device for rootless user GPIO access

    Signed-off-by: Luke Wren <luke@raspberrypi.org>
    
    bcm2835-gpiomem: Fix for ARCH_BCM2835 builds
    
    Build on ARCH_BCM2835, and fail to probe if no IO resource.
    
    See: raspberrypi#1154
    Wren6991 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    f035c53 View commit details
    Browse the repository at this point in the history
  42. Add SMI driver

    Signed-off-by: Luke Wren <wren6991@gmail.com>
    Wren6991 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    ddedd1f View commit details
    Browse the repository at this point in the history
  43. MISC: bcm2835: smi: use clock manager and fix reload issues

    Use clock manager instead of self-made clockmanager.
    
    Also fix some error paths that showd up during development
    (especially missing release of dma resources on rmmod)
    
    Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
    msperl authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    6e5058f View commit details
    Browse the repository at this point in the history
  44. Add SMI NAND driver

    Signed-off-by: Luke Wren <wren6991@gmail.com>
    Wren6991 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    8314803 View commit details
    Browse the repository at this point in the history
  45. lirc: added support for RaspberryPi GPIO

    lirc_rpi: Use read_current_timer to determine transmitter delay. Thanks to jjmz and others
    See: raspberrypi#525
    
    lirc: Remove restriction on gpio pins that can be used with lirc
    
    Compute Module, for example could use different pins
    
    lirc_rpi: Add parameter to specify input pin pull
    
    Depending on the connected IR circuitry it might be desirable to change the
    gpios internal pull from it pull-down default behaviour. Add a module
    parameter to allow the user to set it explicitly.
    
    Signed-off-by: Julian Scheel <julian@jusst.de>
    
    lirc-rpi: Use the higher-level irq control functions
    
    This module used to access the irq_chip methods of the
    gpio controller directly, rather than going through the
    standard enable_irq/irq_set_irq_type functions. This
    caused problems on pinctrl-bcm2835 which only implements
    the irq_enable/disable methods and not irq_unmask/mask.
    
    lirc-rpi: Correct the interrupt usage
    
    1) Correct the use of enable_irq (i.e. don't call it so often)
    2) Correct the shutdown sequence.
    3) Avoid a bcm2708_gpio driver quirk by setting the irq flags earlier
    
    lirc-rpi: use getnstimeofday instead of read_current_timer
    
    read_current_timer isn't guaranteed to return values in
    microseconds, and indeed it doesn't on a Pi2.
    
    Issue: linux#827
    
    lirc-rpi: Add device tree support, and a suitable overlay
    
    The overlay supports DT parameters that match the old module
    parameters, except that gpio_in_pull should be set using the
    strings "up", "down" or "off".
    
    lirc-rpi: Also support pinctrl-bcm2835 in non-DT mode
    
    fix auto-sense in lirc_rpi driver
    
    On a Raspberry Pi 2, the lirc_rpi driver might receive spurious
    interrupts and change it's low-active / high-active setting.
    When this happens, the IR remote control stops working.
    
    This patch disables this auto-detection if the 'sense' parameter
    was set in the device tree, making the driver robust to such
    spurious interrupts.
    Aron Szabo authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    e125174 View commit details
    Browse the repository at this point in the history
  46. Add cpufreq driver

    Signed-off-by: popcornmix <popcornmix@gmail.com>
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    91eeb66 View commit details
    Browse the repository at this point in the history
  47. Added hwmon/thermal driver for reporting core temperature. Thanks Dorian

    BCM270x: Move thermal sensor to Device Tree
    
    Add Device Tree support to bcm2835-thermal driver.
    Add thermal sensor device to Device Tree.
    Don't add platform device when booting in DT mode.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    c83d1bb View commit details
    Browse the repository at this point in the history
  48. Add Chris Boot's i2c driver

    i2c-bcm2708: fixed baudrate
    
    Fixed issue where the wrong CDIV value was set for baudrates below 3815 Hz (for 250MHz bus clock).
    In that case the computed CDIV value was more than 0xffff. However the CDIV register width is only 16 bits.
    This resulted in incorrect setting of CDIV and higher baudrate than intended.
    Example: 3500Hz -> CDIV=0x11704 -> CDIV(16bit)=0x1704 -> 42430Hz
    After correction: 3500Hz -> CDIV=0x11704 -> CDIV(16bit)=0xffff -> 3815Hz
    The correct baudrate is shown in the log after the cdiv > 0xffff correction.
    
    Perform I2C combined transactions when possible
    
    Perform I2C combined transactions whenever possible, within the
    restrictions of the Broadcomm Serial Controller.
    
    Disable DONE interrupt during TA poll
    
    Prevent interrupt from being triggered if poll is missed and transfer
    starts and finishes.
    
    i2c: Make combined transactions optional and disabled by default
    
    i2c: bcm2708: add device tree support
    
    Add DT support to driver and add to .dtsi file.
    Setup pins in .dts file.
    i2c is disabled by default.
    
    Signed-off-by: Noralf Tronnes <notro@tronnes.org>
    
    bcm2708: don't register i2c controllers when using DT
    
    The devices for the i2c controllers are in the Device Tree.
    Only register devices when not using DT.
    
    Signed-off-by: Noralf Tronnes <notro@tronnes.org>
    
    I2C: Only register the I2C device for the current board revision
    
    i2c_bcm2708: Fix clock reference counting
    
    Fix grabbing lock from atomic context in i2c driver
    
    2 main changes:
    - check for timeouts in the bcm2708_bsc_setup function as indicated by this comment:
          /* poll for transfer start bit (should only take 1-20 polls) */
      This implies that the setup function can now fail so account for this everywhere it's called
    - Removed the clk_get_rate call from inside the setup function as it locks a mutex and that's not ok since we call it from under a spin lock.
    
    i2c-bcm2708: When using DT, leave the GPIO setup to pinctrl
    
    i2c-bcm2708: Increase timeouts to allow larger transfers
    
    Use the timeout value provided by the I2C_TIMEOUT ioctl when waiting
    for completion. The default timeout is 1 second.
    
    See: raspberrypi#260
    
    i2c-bcm2708/BCM270X_DT: Add support for I2C2
    
    The third I2C bus (I2C2) is normally reserved for HDMI use. Careless
    use of this bus can break an attached display - use with caution.
    
    It is recommended to disable accesses by VideoCore by setting
    hdmi_ignore_edid=1 or hdmi_edid_file=1 in config.txt.
    
    The interface is disabled by default - enable using the
    i2c2_iknowwhatimdoing DT parameter.
    
    bcm2708-spi: Don't use static pin configuration with DT
    
    Also remove superfluous error checking - the SPI framework ensures the
    validity of the chip_select value.
    
    i2c-bcm2708: Remove non-DT support
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    Set the BSC_CLKT clock streching timeout to 35ms as per SMBus specs.
    
    Fixes i2c_bcm2708: Write to FIFO correctly - v2 (raspberrypi#1574)
    
    * i2c: fix i2c_bcm2708: Clear FIFO before sending data
    
    Make sure FIFO gets cleared before trying to send
    data in case of a repeated start (COMBINED=Y).
    
    * i2c: fix i2c_bcm2708: Only write to FIFO when not full
    
    Check if FIFO can accept data before writing.
    To avoid a peripheral read on the last iteration of a loop,
    both bcm2708_bsc_fifo_fill and ~drain are changed as well.
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    d34838c View commit details
    Browse the repository at this point in the history
  49. char: broadcom: Add vcio module

    Add module for accessing the mailbox property channel through
    /dev/vcio. Was previously in bcm2708-vcio.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    e826eaf View commit details
    Browse the repository at this point in the history
  50. firmware: bcm2835: Support ARCH_BCM270x

    Support booting without Device Tree.
    Turn on USB power.
    Load driver early because of lacking support for deferred probing
    in many drivers.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    firmware: bcm2835: Don't turn on USB power
    
    The raspberrypi-power driver is now used to turn on USB power.
    
    This partly reverts commit:
    firmware: bcm2835: Support ARCH_BCM270x
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    2838aca View commit details
    Browse the repository at this point in the history
  51. bcm2835: add v4l2 camera device

    - Supports raw YUV capture, preview, JPEG and H264.
    - Uses videobuf2 for data transfer, using dma_buf.
    - Uses 3.6.10 timestamping
    - Camera power based on use
    - Uses immutable input mode on video encoder
    
    Signed-off-by: Daniel Stone <daniels@collabora.com>
    Signed-off-by: Luke Diamand <luked@broadcom.com>
    
    V4L2: Fixes from 6by9
    
    V4L2: Fix EV values. Add manual shutter speed control
    
    V4L2 EV values should be in units of 1/1000. Corrected.
    Add support for V4L2_CID_EXPOSURE_ABSOLUTE which should
    give manual shutter control. Requires manual exposure mode
    to be selected first.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Correct JPEG Q-factor range
    
    Should be 1-100, not 0-100
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Fix issue of driver jamming if STREAMON failed.
    
    Fix issue where the driver was left in a partially enabled
    state if STREAMON failed, and would then reject many IOCTLs
    as it thought it was streaming.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Fix ISO controls.
    
    Driver was passing the index to the GPU, and not the desired
    ISO value.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Add flicker avoidance controls
    
    Add support for V4L2_CID_POWER_LINE_FREQUENCY to set flicker
    avoidance frequencies.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Add support for frame rate control.
    
    Add support for frame rate (or time per frame as V4L2
    inverts it) control via s_parm.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Improve G_FBUF handling so we pass conformance
    
    Return some sane numbers for get framebuffer so that
    we pass conformance.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Fix information advertised through g_vidfmt
    
    Width and height were being stored based on incorrect
    values.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Add support for inline H264 headers
    
    Add support for V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER
    to control H264 inline headers.
    Requires firmware fix to work correctly, otherwise format
    has to be set to H264 before this parameter is set.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Fix JPEG timestamp issue
    
    JPEG images were coming through from the GPU with timestamp
    of 0. Detect this and give current system time instead
    of some invalid value.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Fix issue when switching down JPEG resolution.
    
    JPEG buffer size calculation is based on input resolution.
    Input resolution was being configured after output port
    format. Caused failures if switching from one JPEG resolution
    to a smaller one.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Enable MJPEG encoding
    
    Requires GPU firmware update to support MJPEG encoder.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Correct flag settings for compressed formats
    
    Set flags field correctly on enum_fmt_vid_cap for compressed
    image formats.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: H264 profile & level ctrls, FPS control and auto exp pri
    
    Several control handling updates.
    H264 profile and level controls.
    Timeperframe/FPS reworked to add V4L2_CID_EXPOSURE_AUTO_PRIORITY to
    select whether AE is allowed to override the framerate specified.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Correct BGR24 to RGB24 in format table
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Add additional pixel formats. Correct colourspace
    
    Adds the other flavours of YUYV, and NV12.
    Corrects the overlay advertised colourspace.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Drop logging msg from info to debug
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Initial pass at scene modes.
    
    Only supports exposure mode and metering modes.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Add manual white balance control.
    
    Adds support for V4L2_CID_RED_BALANCE and
    V4L2_CID_BLUE_BALANCE. Only has an effect if
    V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE has
    V4L2_WHITE_BALANCE_MANUAL selected.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    config: Enable V4L / MMAL driver
    
    V4L2: Increase the MMAL timeout to 3sec
    
    MJPEG codec flush is now taking longer and results
    in a kernel panic if the driver has stopped waiting for
    the result when it finally completes.
    Increase the timeout value from 1 to 3secs.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Add support for setting H264_I_PERIOD
    
    Adds support for the parameter V4L2_CID_MPEG_VIDEO_H264_I_PERIOD
    to set the frequency with which I frames are produced.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Enable GPU function for removing padding from images.
    
    GPU can now support arbitrary strides, although may require
    additional processing to achieve it. Enable this feature
    so that the images delivered are the size requested.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Add support for V4L2_PIX_FMT_BGR32
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Set the colourspace to avoid odd YUV-RGB conversions
    
    Removes the amiguity from the conversion routines and stops
    them dropping back to the SD vs HD choice of coeffs.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Make video/still threshold a run-time param
    
    Move the define for at what resolution the driver
    switches from a video mode capture to a stills mode
    capture to module parameters.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Fix incorrect pool sizing
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Add option to disable enum_framesizes.
    
    Gstreamer's handling of a driver that advertises
    V4L2_FRMSIZE_TYPE_STEPWISE to define the supported
    resolutions is broken. See bug
    https://bugzilla.gnome.org/show_bug.cgi?id=726521
    
    Optional parameter of gst_v4l2src_is_broken added.
    If non-zero, the driver claims not to support that
    ioctl, and gstreamer should be happy again (it
    guesses a set of defaults for itself).
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Add support for more image formats
    
    Adds YVU420 (YV12), YVU420SP (NV21), and BGR888.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    V4L2: Extend range for V4L2_CID_MPEG_VIDEO_H264_I_PERIOD
    
    Request to extend the range from the fairly arbitrary
    1000 frames (33 seconds at 30fps). Extend out to the
    max range supported (int32 value).
    Also allow 0, which is handled by the codec as only
    send an I-frame on the first frame and never again.
    There may be an exception if it detects a significant
    scene change, but there's no easy way around that.
    
    Signed-off-by: Dave Stevenson <dsteve@broadcom.com>
    
    bcm2835-camera: stop_streaming now has a void return
    
    BCM2835-V4L2: Fix compliance test failures
    
    VIDIOC_TRY_FMT and VIDIOC_S_FMT tests were faling due
    to reporting V4L2_COLORSPACE_JPEG when the colour
    format wasn't V4L2_PIX_FMT_JPEG.
    Now reports V4L2_COLORSPACE_SMPTE170M for YUV formats.
    
    bcm2835 camera planar/packed stride length
    
    Added a field to the mmal_fmt struct used to compute the bytes per line
    when using a particular format. This results in the correct stride being
    calculated even when the format is planar.
    
    Signed-off-by: Garrett Wilson <g@floft.net>
    
    bcm2835: camera: check for scene not being found
    
    static analysis by cppcheck detected some potential NULL pointer
    dereference issues:
    
    [drivers/media/platform/bcm2835/controls.c:854]: (error) Possible null
      pointer dereference: scene
      (and lines 858, 859 too)
    
    it is possible that scene is not found because of an invalue ctrl->val
    and is therefore NULL and hence causing a null pointer dereference.
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    
    bcm2835: memcpy port data to m rather than rmsg
    
    static analysis by cppcheck detected a memcpy to rmsg which is
    not actually initialized at that point.  The memcpy should be copying
    to variable m instead.
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    
    BCM2835-V4L2: Return buffers to videobuf2 on shutdown
    
    raspberrypi#817
    Fixes the kernel warning from videobuf2 as buffers
    are now returned as they are being flushed on
    stop_streaming.
    
    squash: Fixup bcm2835-camera for changes in kernel 4.4 api
    
    v4l2: Fix up driver to upstream timestamp changes
    
    bcm2835-camera: fix a bug in computation of frame timestamp
    
    Fixes raspberrypi#1318
    
    V4L2 driver updates (raspberrypi#1393)
    
    * BCM2835-V4L2: Correct ISO control and add V4L2_CID_ISO_SENSITIVITY_AUTO
    
    raspberrypi#1251
    
    V4L2_CID_ISO_SENSITIVITY was not advertising ISO*1000 as it should.
    V4L2_CID_ISO_SENSITIVITY_AUTO was not implemented, so was taking
    V4L2_CID_ISO_SENSITIVITY as 0 for auto mode.
    Still accepts 0 for auto, but also abides by the new parameter.
    
    Signed-off-by: Dave Stevenson <6by9@users.noreply.github.com>
    
    * BCM2835-V4L2: Add a video_nr parameter.
    
    Adds a kernel parameter "video_nr" to specify the preferred
    /dev/videoX device node.
    https://www.raspberrypi.org/forums/viewtopic.php?f=38&t=136120&p=905545
    
    Signed-off-by: Dave Stevenson <6by9@users.noreply.github.com>
    
    * BCM2835-V4L2: Add support for multiple cameras
    
    Ask GPU on load how many cameras have been detected, and
    enumerate that number of devices.
    Only applicable on the Compute Module as no other device
    exposes multiple CSI2 interfaces.
    
    Signed-off-by: Dave Stevenson <6by9@users.noreply.github.com>
    
    * BCM2835-V4L2: Add control of the overlay location and alpha.
    
    Actually do something useful in vidioc_s_fmt_vid_overlay and
    vidioc_try_fmt_vid_overlay, rather than effectively having
    read-only fields.
    
    Signed-off-by: Dave Stevenson <6by9@users.noreply.github.com>
    
    * BCM2835-V4L2: V4L2-Compliance failure fix
    
    VIDIOC_TRY_FMT was failing due to bytesperline not
    being set correctly by default.
    
    Signed-off-by: Dave Stevenson <6by9@users.noreply.github.com>
    
    * BCM2835-V4L2: Make all module parameters static
    
    Clean up to correct variable scope
    
    Signed-off-by: Dave Stevenson <6by9@users.noreply.github.com>
    
    V4L2: Request maximum resolution from GPU
    
    Get resolution information about the sensors from the GPU
    and advertise it correctly.
    
    Signed-off-by: Dave Stevenson <6by9@users.noreply.github.com>
    
    BCM2835-V4L2: Increase minimum resolution to 32x32
    
    raspberrypi#1498 showed
    up that 16x16 is failing to work on the GPU for some reason.
    
    GPU bug being tracked on
    raspberrypi/firmware#607
    Workaround here by increasing minimum resolution via V4L2
    to 32x32.
    
    Signed-off-by: Dave Stevenson <6by9@users.noreply.github.com>
    
    [media]: bcm2835-camera: fix compilation error
    
    There is an error when compiling rpi-4.6.y branch:
      CC [M]  drivers/media/platform/bcm2835/bcm2835-camera.o
    drivers/media/platform/bcm2835/bcm2835-camera.c:639:17: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
      .queue_setup = queue_setup,
                     ^
    drivers/media/platform/bcm2835/bcm2835-camera.c:639:17: note: (near initialization for 'bm2835_mmal_video_qops.queue_setup')
    
    The const void *parg in setup_queue callback is not needed since commit:
    df9ecb0.
    This commit removes it.
    
    Signed-off-by: Slawomir Stepien <sst@poczta.fm>
    
    bcm2835-camera: Fix max/min error when looping over cameras/resolutions
    
    See: raspberrypi#1447 (comment)
    
    BCM2835-V4L2: Correct handling for BGR24 vs RGB24.
    
    There was a bug in the GPU firmware that had reversed these
    two formats.
    Detect the old firmware, and reverse the formats if necessary.
    
    Signed-off-by: Dave Stevenson <6by9@users.noreply.github.com>
    
    BCM2835-v4l2: Fix a conformance test failure
    
    Format ioctls:
    	test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
    	warn: v4l2-test-formats.cpp(1195): S_PARM is supported but
    		doesn't report V4L2_CAP_TIMEPERFRAME.
    	fail: v4l2-test-formats.cpp(1118): node->has_frmintervals
    		&& !cap->capability
    Vincent Sanders authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    35fa034 View commit details
    Browse the repository at this point in the history
  52. scripts: Add mkknlimg and knlinfo scripts from tools repo

    The Raspberry Pi firmware looks for a trailer on the kernel image to
    determine whether it was compiled with Device Tree support enabled.
    If the firmware finds a kernel without this trailer, or which has a
    trailer indicating that it isn't DT-capable, it disables DT support
    and reverts to using ATAGs.
    
    The mkknlimg utility adds that trailer, having first analysed the
    image to look for signs of DT support and the kernel version string.
    
    knlinfo displays the contents of the trailer in the given kernel image.
    
    scripts/mkknlimg: Add support for ARCH_BCM2835
    
    Add a new trailer field indicating whether this is an ARCH_BCM2835
    build, as opposed to MACH_BCM2708/9. If the loader finds this flag
    is set it changes the default base dtb file name from bcm270x...
    to bcm283y...
    
    Also update knlinfo to show the status of the field.
    
    scripts/mkknlimg: Improve ARCH_BCM2835 detection
    
    The board support code contains sufficient strings to be able to
    distinguish 2708 vs. 2835 builds, so remove the check for
    bcm2835-pm-wdt which could exist in either.
    
    Also, since the canned configuration is no longer built in (it's
    a module), remove the config string checking.
    
    See: raspberrypi#1157
    
    scripts: Multi-platform support for mkknlimg and knlinfo
    
    The firmware uses tags in the kernel trailer to choose which dtb file
    to load. Current firmware loads bcm2835-*.dtb if the '283x' tag is true,
    otherwise it loads bcm270*.dtb. This scheme breaks if an image supports
    multiple platforms.
    
    This patch adds '270X' and '283X' tags to indicate support for RPi and
    upstream platforms, respectively. '283x' (note lower case 'x') is left
    for old firmware, and is only set if the image only supports upstream
    builds.
    
    scripts/mkknlimg: Append a trailer for all input
    
    Now that the firmware assumes an unsigned kernel is DT-capable, it is
    helpful to be able to mark a kernel as being non-DT-capable.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    scripts/knlinfo: Decode DDTK atom
    
    Show the DDTK atom as being a boolean.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    mkknlimg: Retain downstream-kernel detection
    
    With the death of ARCH_BCM2708 and ARCH_BCM2709, a new way is needed to
    determine if this is a "downstream" build that wants the firmware to
    load a bcm27xx .dtb. The vc_cma driver is used downstream but not
    upstream, making vc_cma_init a suitable predicate symbol.
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    5979935 View commit details
    Browse the repository at this point in the history
  53. scripts/dtc: Update to upstream version 1.4.1

    Includes the new localfixups format.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    scripts/dtc: Fix UMR causing corrupt dtbo overlay files
    
    struct fixup_entry is allocated from the heap but it's member
    local_fixup_generated was never initialized. This lead to
    corrupted dtbo files.
    
    Fix this by initializing local_fixup_generated to false.
    
    Signed-off-by: Matthias Reichl <hias@horus.com>
    
    scripts/dtc: Only emit local fixups for overlays
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    913a794 View commit details
    Browse the repository at this point in the history
  54. BCM2708: Add core Device Tree support

    Add the bare minimum needed to boot BCM2708 from a Device Tree.
    
    Signed-off-by: Noralf Tronnes <notro@tronnes.org>
    
    BCM2708: DT: change 'axi' nodename to 'soc'
    
    Change DT node named 'axi' to 'soc' so it matches ARCH_BCM2835.
    The VC4 bootloader fills in certain properties in the 'axi' subtree,
    but since this is part of an upstreaming effort, the name is changed.
    
    Signed-off-by: Noralf Tronnes notro@tronnes.org
    
    BCM2708_DT: Correct length of the peripheral space
    
    Use dts-dirs feature for overlays.
    
    The kernel makefiles have a dts-dirs target that is for vendor subdirectories.
    
    Using this fixes the install_dtbs target, which previously did not install the overlays.
    
    BCM270X_DT: configure I2S DMA channels
    
    Signed-off-by: Matthias Reichl <hias@horus.com>
    
    BCM270X_DT: switch to bcm2835-i2s
    
    I2S soundcard drivers with proper devicetree support (i.e. not linking
    to the cpu_dai/platform via name but to cpu/platform via of_node)
    will work out of the box without any modifications.
    
    When the kernel is compiled without devicetree support the platform
    code will instantiate the bcm2708-i2s driver and I2S soundcard drivers
    will link to it via name, as before.
    
    Signed-off-by: Matthias Reichl <hias@horus.com>
    
    SDIO-overlay: add poll_once-boolean parameter
    
    Add paramter to toggle sdio-device-polling
    done every second or once at boot-time.
    
    Signed-off-by: Patrick Boettcher <patrick.boettcher@posteo.de>
    
    BCM270X_DT: Make mmc overlay compatible with current firmware
    
    The original DT overlay logic followed a merge-then-patch procedure,
    i.e. parameters are applied to the loaded overlay before the overlay
    is merged into the base DTB. This sequence has been changed to
    patch-then-merge, in order to support parameterised node names, and
    to protect against bad overlays. As a result, overrides (parameters)
    must only target labels in the overlay, but the overlay can obviously target nodes in the base DTB.
    
    mmc-overlay.dts (that switches back to the original mmc sdcard
    driver) is the only overlay violating that rule, and this patch
    fixes it.
    
    bcm270x_dt: Use the sdhost MMC controller by default
    
    The "mmc" overlay reverts to using the other controller.
    
    squash: Add cprman to dt
    
    BCM270X_DT: Use clk_core for I2C interfaces
    
    BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi
    
    The mainline Device Tree files are quite close to downstream now.
    Let's use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi as base files
    for our dts files.
    
    Mainline dts files are based on these files:
    
              bcm2835-rpi.dtsi
      bcm2835.dtsi    bcm2836.dtsi
              bcm283x.dtsi
    
    Current downstream are based on these:
    
      bcm2708.dtsi    bcm2709.dtsi    bcm2710.dtsi
                 bcm2708_common.dtsi
    
    This patch introduces this dependency:
    
      bcm2708.dtsi    bcm2709.dtsi
              bcm2708-rpi.dtsi
              bcm270x.dtsi
      bcm2835.dtsi    bcm2836.dtsi
              bcm283x.dtsi
    
    And:
              bcm2710.dtsi
              bcm2708-rpi.dtsi
              bcm270x.dtsi
              bcm283x.dtsi
    
    bcm270x.dtsi contains the downstream bcm283x.dtsi diff.
    bcm2708-rpi.dtsi is the downstream version of bcm2835-rpi.dtsi.
    
    Other changes:
    - The led node has moved from /soc/leds to /leds. This is not a problem
      since the label is used to reference it.
    - The clk_osc reg property changes from 6 to 3.
    - The gpu nodes has their interrupt property set in the base file.
    - the clocks label does not point to the /clocks node anymore, but
      points to the cprman node. This is not a problem since the overlays
      that use the clock node refer to it directly: target-path = "/clocks";
    - some nodes now have 2 labels since mainline and downstream differs in
      this respect: cprman/clocks, spi0/spi, gpu/vc4.
    - some nodes doesn't have an explicit status = "okay" since they're not
      disabled in the base file: watchdog and random.
    - gpiomem doesn't need an explicit status = "okay".
    - bcm2708-rpi-cm.dts got the hpd-gpios property from bcm2708_common.dtsi,
      it's now set directly in that file.
    - bcm2709-rpi-2-b.dts has the timer node moved from /soc/timer to /timer.
    - Removed clock-frequency property on the bcm{2709,2710}.dtsi timer nodes.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    BCM270X_DT: Use raspberrypi-power to turn on USB power
    
    Use the raspberrypi-power driver to turn on USB power.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    
    BCM270X_DT: Add a .dtbo target, use for overlays
    
    Change the filenames and extensions to keep the pre-DDT style of
    overlay (<name>-overlay.dtb) distinct from new ones that use a
    different style of local fixups (<name>.dtbo), and to match other
    platforms.
    
    The RPi firmware uses the DDTK trailer atom to choose which type of
    overlay to use for each kernel.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    BCM270X_DT: Don't generate "linux,phandle" props
    
    The EPAPR standard says to use "phandle" properties to store phandles,
    rather than the deprecated "linux,phandle" version. By default, dtc
    generates both, but adding "-H epapr" causes it to only generate
    "phandle"s, saving some space and clutter.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    BCM270X_DT: Add overlay for enc28j60 on SPI2
    
    Works on SPI2 for compute module
    
    BCM270X_DT: Add midi-uart0 overlay
    
    MIDI requires 31.25kbaud, a baudrate unsupported by Linux. The
    midi-uart0 overlay configures uart0 (ttyAMA0) to use a fake clock
    so that requesting 38.4kbaud actually gets 31.25kbaud.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    BCM270X_DT: Add i2c-sensor overlay
    
    The i2c-sensor overlay is a container for various pressure and
    temperature sensors, currently bmp085 and bmp280. The standalone
    bmp085_i2c-sensor overlay is now deprecated.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    BCM270X_DT: overlays/*-overlay.dtb -> overlays/*.dtbo (raspberrypi#1752)
    
    We now create overlays as .dtbo files.
    
    build: support for .dtbo files for dtb overlays
    
    Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb.
    Patch the kernel, which has faulty rules to generate .dtbo the way yocto does
    
    Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
    Signed-off-by: Khem Raj <raj.khem@gmail.com>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    2ad7caa View commit details
    Browse the repository at this point in the history
  55. BCM270x_DT: Add pwr_led, and the required "input" trigger

    The "input" trigger makes the associated GPIO an input.  This is to support
    the Raspberry Pi PWR LED, which is driven by external hardware in normal use.
    
    N.B. pwr_led is not available on Model A or B boards.
    
    leds-gpio: Implement the brightness_get method
    
    The power LED uses some clever logic that means it is driven
    by a voltage measuring circuit when configured as input, otherwise
    it is driven by the GPIO output value. This patch wires up the
    brightness_get method for leds-gpio so that user-space can monitor
    the LED value via /sys/class/gpio/led1/brightness. Using the input
    trigger this returns an indication of the system power health,
    otherwise it is just whatever value the trigger has written most
    recently.
    
    See: raspberrypi#1064
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    f760337 View commit details
    Browse the repository at this point in the history
  56. fbdev: add FBIOCOPYAREA ioctl

    Based on the patch authored by Ali Gholami Rudi at
        https://lkml.org/lkml/2009/7/13/153
    
    Provide an ioctl for userspace applications, but only if this operation
    is hardware accelerated (otherwide it does not make any sense).
    
    Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
    
    bcm2708_fb: Add ioctl for reading gpu memory through dma
    ssvb authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    c19ea76 View commit details
    Browse the repository at this point in the history
  57. Speed up console framebuffer imageblit function

    Especially on platforms with a slower CPU but a relatively high
    framebuffer fill bandwidth, like current ARM devices, the existing
    console monochrome imageblit function used to draw console text is
    suboptimal for common pixel depths such as 16bpp and 32bpp. The existing
    code is quite general and can deal with several pixel depths. By creating
    special case functions for 16bpp and 32bpp, by far the most common pixel
    formats used on modern systems, a significant speed-up is attained
    which can be readily felt on ARM-based devices like the Raspberry Pi
    and the Allwinner platform, but should help any platform using the
    fb layer.
    
    The special case functions allow constant folding, eliminating a number
    of instructions including divide operations, and allow the use of an
    unrolled loop, eliminating instructions with a variable shift size,
    reducing source memory access instructions, and eliminating excessive
    branching. These unrolled loops also allow much better code optimization
    by the C compiler. The code that selects which optimized variant is used
    is also simplified, eliminating integer divide instructions.
    
    The speed-up, measured by timing 'cat file.txt' in the console, varies
    between 40% and 70%, when testing on the Raspberry Pi and Allwinner
    ARM-based platforms, depending on font size and the pixel depth, with
    the greater benefit for 32bpp.
    
    Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>
    hglm authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    11db806 View commit details
    Browse the repository at this point in the history
  58. enabling the realtime clock 1-wire chip DS1307 and 1-wire on GPIO4 (a…

    …s a module)
    
    1-wire: Add support for configuring pin for w1-gpio kernel module
    See: raspberrypi#457
    
    Add bitbanging pullups, use them for w1-gpio
    
    Allows parasite power to work, uses module option pullup=1
    
    bcm2708: Ensure 1-wire pullup is disabled by default, and expose as module parameter
    
    Signed-off-by: Alex J Lennon <ajlennon@dynamicdevices.co.uk>
    
    w1-gpio: Add gpiopin module parameter and correctly free up gpio pull-up pin, if set
    
    Signed-off-by: Alex J Lennon <ajlennon@dynamicdevices.co.uk>
    
    w1-gpio: Sort out the pullup/parasitic power tangle
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    d387edf View commit details
    Browse the repository at this point in the history
  59. Copy the full SHA
    c7850d6 View commit details
    Browse the repository at this point in the history
  60. config: Enable CONFIG_MEMCG, but leave it disabled (due to memory cos…

    …t). Enable with cgroup_enable=memory.
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    d8fe940 View commit details
    Browse the repository at this point in the history
  61. hid: Reduce default mouse polling interval to 60Hz

    Reduces overhead when using X
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    1697df6 View commit details
    Browse the repository at this point in the history
  62. rpi-ft5406: Add touchscreen driver for pi LCD display

    Fix driver detection failure Check that the buffer response is non-zero meaning the touchscreen was detected
    
    rpi-ft5406: Use firmware API
    
    RPI-FT5406: Enable aarch64 support through explicit iomem interface
    
    Signed-off-by: Gerhard de Clercq <gerharddeclercq@outlook.com>
    ghollingworth authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    e7fa4e5 View commit details
    Browse the repository at this point in the history
  63. Improve __copy_to_user and __copy_from_user performance

    Provide a __copy_from_user that uses memcpy. On BCM2708, use
    optimised memcpy/memmove/memcmp/memset implementations.
    
    arch/arm: Add mmiocpy/set aliases for memcpy/set
    
    See: raspberrypi#1082
    
    copy_from_user: CPU_SW_DOMAIN_PAN compatibility
    
    The downstream copy_from_user acceleration must also play nice with
    CONFIG_CPU_SW_DOMAIN_PAN.
    
    See: raspberrypi#1381
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    7734657 View commit details
    Browse the repository at this point in the history
  64. gpio-poweroff: Allow it to work on Raspberry Pi

    The Raspberry Pi firmware manages the power-down and reboot
    process. To do this it installs a pm_power_off handler, causing
    the gpio-poweroff module to abort the probe function.
    
    This patch introduces a "force" DT property that overrides that
    behaviour, and also adds a DT overlay to enable and control it.
    
    Note that running in an active-low configuration (DT parameter
    "active_low") requires a custom dt-blob.bin and probably won't
    allow a reboot without switching off, so an external inversion
    of the trigger signal may be preferable.
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    da2b729 View commit details
    Browse the repository at this point in the history
  65. Copy the full SHA
    91d2e7c View commit details
    Browse the repository at this point in the history
  66. ASoC: Add support for HifiBerry DAC

    This adds a machine driver for the HifiBerry DAC.
    It is a sound card that can
    be stacked onto the Raspberry Pi.
    
    Signed-off-by: Florian Meier <florian.meier@koalo.de>
    koalo authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    c9f07d6 View commit details
    Browse the repository at this point in the history
  67. ASoC: Add support for Rpi-DAC

    koalo authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    fd63dad View commit details
    Browse the repository at this point in the history
  68. ASoC: wm8804: Implement MCLK configuration options, add 32bit support…

    … WM8804 can run with PLL frequencies of 256xfs and 128xfs for most sample rates. At 192kHz only 128xfs is supported. The existing driver selects 128xfs automatically for some lower samples rates. By using an additional mclk_div divider, it is now possible to control the behaviour. This allows using 256xfs PLL frequency on all sample rates up to 96kHz. It should allow lower jitter and better signal quality. The behavior has to be controlled by the sound card driver, because some sample frequency share the same setting. e.g. 192kHz and 96kHz use 24.576MHz master clock. The only difference is the MCLK divider.
    
    This also added support for 32bit data.
    
    Signed-off-by: Daniel Matuschek <daniel@matuschek.net>
    Daniel Matuschek authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    c137d8f View commit details
    Browse the repository at this point in the history
  69. ASoC: BCM:Add support for HiFiBerry Digi. Driver is based on the patc…

    …hed WM8804 driver.
    
    Signed-off-by: Daniel Matuschek <daniel@matuschek.net>
    
    Add a parameter to turn off SPDIF output if no audio is playing
    
    This patch adds the paramater auto_shutdown_output to the kernel module.
    Default behaviour of the module is the same, but when auto_shutdown_output
    is set to 1, the SPDIF oputput will shutdown if no stream is playing.
    
    bugfix for 32kHz sample rate, was missing
    
    HiFiBerry Digi: set SPDIF status bits for sample rate
    
    The HiFiBerry Digi driver did not signal the sample rate in the SPDIF status bits.
    While this is optional, some DACs and receivers do not accept this signal. This patch
    adds the sample rate bits in the SPDIF status block.
    
    Added HiFiBerry Digi+ Pro driver
    
    Signed-off-by: Daniel Matuschek <daniel@hifiberry.com>
    Daniel Matuschek authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    8a6178b View commit details
    Browse the repository at this point in the history
  70. Add IQaudIO Sound Card support for Raspberry Pi

    Set a limit of 0dB on Digital Volume Control
    
    The main volume control in the PCM512x DAC has a range up to
    +24dB. This is dangerously loud and can potentially cause massive
    clipping in the output stages. Therefore this sets a sensible
    limit of 0dB for this control.
    
    Allow up to 24dB digital gain to be applied when using IQAudIO DAC+
    
    24db_digital_gain DT param can be used to specify that PCM512x
    codec "Digital" volume control should not be limited to 0dB gain,
    and if specified will allow the full 24dB gain.
    
    Modify IQAudIO DAC+ ASoC driver to set card/dai config from dt
    
    Add the ability to set the card name, dai name and dai stream name, from
    dt config.
    
    Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
    
    IQaudIO: auto-mute for AMP+ and DigiAMP+
    
    IQAudIO amplifier mute via GPIO22. Add dt params for "one-shot" unmute
    and auto mute.
    
    Revision 2, auto mute implementing HiassofT suggestion to mute/unmute
    using set_bias_level, rather than startup/shutdown....
    "By default DAPM waits 5 seconds (pmdown_time) before shutting down
    playback streams so a close/stop immediately followed by open/start
    doesn't trigger an amp mute+unmute."
    
    Tested on both AMP+ (via DAC+) and DigiAMP+, with both options...
    
    dtoverlay=iqaudio-dacplus,unmute_amp
     "one-shot" unmute when kernel module loads.
    
    dtoverlay=iqaudio-dacplus,auto_mute_amp
     Unmute amp when ALSA device opened by a client. Mute, with 5 second delay
     when ALSA device closed. (Re-opening the device within the 5 second close
     window, will cancel mute.)
    
    Revision 4, using gpiod.
    
    Revision 5, clean-up formatting before adding mute code.
     - Convert tab plus 4 space formatting to 2x tab
     - Remove '// NOT USED' commented code
    
    Revision 6, don't attempt to "one-shot" unmute amp, unless card is
    successfully registered.
    
    Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
    Gordon Garrity authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    db63efa View commit details
    Browse the repository at this point in the history
  71. Copy the full SHA
    bde9a1a View commit details
    Browse the repository at this point in the history
  72. Added support for HiFiBerry DAC+

    The driver is based on the HiFiBerry DAC driver. However HiFiBerry DAC+ uses
    a different codec chip (PCM5122), therefore a new driver is necessary.
    
    Add support for the HiFiBerry DAC+ Pro.
    
    The HiFiBerry DAC+ and DAC+ Pro products both use the existing bcm sound driver with the DAC+ Pro having a special clock device driver representing the two high precision oscillators.
    
    An addition bug fix is included for the PCM512x codec where by the physical size of the sample frame is used in the calculation of the LRCK divisor as it was found to be wrong when using 24-bit depth sample contained in a little endian 4-byte sample frame.
    
    Limit PCM512x "Digital" gain to 0dB by default with HiFiBerry DAC+
    
    24db_digital_gain DT param can be used to specify that PCM512x
    codec "Digital" volume control should not be limited to 0dB gain,
    and if specified will allow the full 24dB gain.
    
    Add dt param to force HiFiBerry DAC+ Pro into slave mode
    
    "dtoverlay=hifiberry-dacplus,slave"
    
    Add 'slave' param to use HiFiBerry DAC+ Pro in slave mode,
    with Pi as master for bit and frame clock.
    
    Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
    Daniel Matuschek authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    728a454 View commit details
    Browse the repository at this point in the history
  73. Added driver for HiFiBerry Amp amplifier add-on board

    The driver contains a low-level hardware driver for the TAS5713 and the
    drivers for the Raspberry Pi I2S subsystem.
    
    TAS5713: return error if initialisation fails
    
    Existing TAS5713 driver logs errors during initialisation, but does not return
    an error code. Therefore even if initialisation fails, the driver will still be
    loaded, but won't work. This patch fixes this. I2C communication error will now
    reported correctly by a non-zero return code.
    
    HiFiBerry Amp: fix device-tree problems
    
    Some code to load the driver based on device-tree-overlays was missing. This is added by this patch.
    Daniel Matuschek authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    a9a8a11 View commit details
    Browse the repository at this point in the history
  74. Revert "Added driver for HiFiBerry Amp amplifier add-on board"

    This reverts commit 3e6b00833d92a50cbcc9922deb6e1bc8fcdbb587.
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    321a000 View commit details
    Browse the repository at this point in the history
  75. Update ds1307 driver for device-tree support

    Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
    nismoryco authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    682c095 View commit details
    Browse the repository at this point in the history
  76. Add driver for rpi-proto

    Forward port of 3.10.x driver from https://github.com/koalo
    We are using a custom board and would like to use rpi 3.18.x
    kernel. Patch works fine for our embedded system.
    
    URL to the audio chip:
    http://www.mikroe.com/add-on-boards/audio-voice/audio-codec-proto/
    
    Playback tested with devicetree enabled.
    
    Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
    Waldemar Brodkorb authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    001f8b8 View commit details
    Browse the repository at this point in the history
  77. RaspiDAC3 support

    Signed-off-by: Jan Grulich <jan@grulich.eu>
    
    config: fix RaspiDAC Rev.3x dependencies
    
    Change depends to SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
    like the other I2S soundcard drivers.
    
    Signed-off-by: Matthias Reichl <hias@horus.com>
    Jan Grulich authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    26084a9 View commit details
    Browse the repository at this point in the history
  78. Add Support for JustBoom Audio boards

    justboom-dac: Adjust for ALSA API change
    
    As of 4.4, snd_soc_limit_volume now takes a struct snd_soc_card *
    rather than a struct snd_soc_codec *.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    shawaj authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    16e3f93 View commit details
    Browse the repository at this point in the history
  79. ARM: adau1977-adc: Add basic machine driver for adau1977 codec driver.

    This commit adds basic support for the codec usage including: Device tree overlay,
    binding I2S bus and setting I2S mode, clock source and frequency setting according
    to spec.
    
    Signed-off-by: Andrey Grodzovsky <andrey2805@gmail.com>
    andrey2805 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    55bbfc4 View commit details
    Browse the repository at this point in the history
  80. New AudioInjector.net Pi soundcard with low jitter audio in and out.

    Contains the sound/soc/bcm ALSA machine driver and necessary alterations to the Kconfig and Makefile.
    Adds the dts overlay and updates the Makefile and README.
    Updates the relevant defconfig files to enable building for the Raspberry Pi.
    Thanks to Phil Elwell (pelwell) for the review, simple-card concepts and discussion. Thanks to Clive Messer for overlay naming suggestions.
    
    Added support for headphones, microphone and bclk_ratio settings.
    
    This patch adds headphone and microphone capability to the Audio Injector sound card. The patch also sets the bit clock ratio for use in the bcm2835-i2s driver. The bcm2835-i2s can't handle an 8 kHz sample rate when the bit clock is at 12 MHz because its register is only 10 bits wide which can't represent the ch2 offset of 1508. For that reason, the rate constraint is added.
    flatmax authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    14502b0 View commit details
    Browse the repository at this point in the history
  81. Add IQAudIO Digi WM8804 board support

    Support IQAudIO Digi board with iqaudio_digi machine driver and
     iqaudio-digi-wm8804-audio overlay.
    
    NB. Machine driver is a cut and paste of hifiberry_digi code, with format
        and general cleanup to comply with kernel coding standards.
    
    Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
    DigitalDreamtime authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    1b18f3b View commit details
    Browse the repository at this point in the history
  82. Copy the full SHA
    6daac5c View commit details
    Browse the repository at this point in the history
  83. Add support for Dion Audio LOCO DAC-AMP HAT

    Using dedicated machine driver and pcm5102a codec driver.
    
    Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
    DigitalDreamtime authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    ce97723 View commit details
    Browse the repository at this point in the history
  84. Allo Piano DAC boards: Initial 2 channel (stereo) support (raspberryp…

    …i#1645)
    
    Add initial 2 channel (stereo) support for Allo Piano DAC (2.0/2.1) boards,
    using allo-piano-dac-pcm512x-audio overlay and allo-piano-dac ALSA ASoC
    machine driver.
    
    NB. The initial support is 2 channel (stereo) ONLY!
    (The Piano DAC 2.1 will only support 2 channel (stereo) left/right output,
     pending an update to the upstream pcm512x codec driver, which will have
     to be submitted via upstream. With the initial downstream support,
     provided by this patch, the Piano DAC 2.1 subwoofer outputs will
     not function.)
    
    Signed-off-by: Baswaraj K <jaikumar@cem-solutions.net>
    Signed-off-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
    Tested-by: Clive Messer <clive.messer@digitaldreamtime.co.uk>
    clivem authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    203501a View commit details
    Browse the repository at this point in the history
  85. Support for Blokas Labs pisound board

    Pisound dynamic overlay (raspberrypi#1760)
    
    Restructuring pisound-overlay.dts, so it can be loaded and unloaded dynamically using dtoverlay.
    
    Print a logline when the kernel module is removed.
    gtrainavicius authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    aa46aa9 View commit details
    Browse the repository at this point in the history
  86. rpi_display: add backlight driver and overlay

    Add a mailbox-driven backlight controller for the Raspberry Pi DSI
    touchscreen display. Requires updated GPU firmware to recognise the
    mailbox request.
    
    Signed-off-by: Gordon Hollingworth <gordon@raspberrypi.org>
    P33M authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    42d919a View commit details
    Browse the repository at this point in the history
  87. bcm2835-virtgpio: Virtual GPIO driver

    Add a virtual GPIO driver that uses the firmware mailbox interface to
    request that the VPU toggles LEDs.
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    1b4e68b View commit details
    Browse the repository at this point in the history
  88. amba_pl011: Don't use DT aliases for numbering

    The pl011 driver looks for DT aliases of the form "serial<n>",
    and if found uses <n> as the device ID. This can cause
    /dev/ttyAMA0 to become /dev/ttyAMA1, which is confusing if the
    other serial port is provided by the 8250 driver which doesn't
    use the same logic.
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    0c3101c View commit details
    Browse the repository at this point in the history
  89. net: Add non-mainline source for rtl8192cu wlan

    Add non-mainline source for rtl8192cu wireless driver version v4.0.2_9000 as
    this is widely used. Disable older rtlwifi driver.
    
    8192cu needs old wireless extensions
    
    The obsolete WIRELESS_EXT configuration is used
    by the old Realtek code and is needed for AP support.
    
    8192cu: CONFIG_AP_MODE hardcoded in autoconf.h
    
    rtl8192c_rf6052: PHY_RFShadowRefresh(): fix off-by-one
    
    Signed-off-by: Marc Kleine-Budde <mkl@blackshift.org>
    
    rtl8192cu: Add PID for D-Link DWA 131
    popcornmix committed Feb 4, 2017
    Copy the full SHA
    88a3749 View commit details
    Browse the repository at this point in the history
  90. net: Fix rtl8192cu build errors on other platforms

    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    suppress spurious messages
    
    Add #if for 3.14 kernel change (#87)
    
    Fixes compiling after changes in torvalds/linux@f663dd9 and torvalds/linux@99932d4
    
    Fixes #86
    
    Set dev_type to wlan
    
    Fixes #23
    
    Tentatively added support for more 8188CUS based devices.
    
    Add support for more 8188CUS and 8192CUS devices
    
    Add ProductId for the Netgear N150 - WNA1000M
    
    Fixes CONFIG_CONCURRENT_MODE CONFIG_MULTI_VIR_IFACES
    
    Fixes compatibility with 3.13
    
    Enables warning in the compiler and fixes some issues, reference => https://github.com/diederikdehaas/rtl8812AU
    
    Starts device in station mode instead of monitor, fixes NetworkManager issues
    
    Enable cfg80211 support
    
    Fix cfg80211 for kernel >= 4.7
    
    Fixes rtl8192cu for kernel >= 4.8
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    911b758 View commit details
    Browse the repository at this point in the history
  91. OF: DT-Overlay configfs interface

    This is a port of Pantelis Antoniou's v3 port that makes use of the
    new upstreamed configfs support for binary attributes.
    
    Original commit message:
    
    Add a runtime interface to using configfs for generic device tree overlay
    usage. With it its possible to use device tree overlays without having
    to use a per-platform overlay manager.
    
    Please see Documentation/devicetree/configfs-overlays.txt for more info.
    
    Changes since v2:
    - Removed ifdef CONFIG_OF_OVERLAY (since for now it's required)
    - Created a documentation entry
    - Slight rewording in Kconfig
    
    Changes since v1:
    - of_resolve() -> of_resolve_phandles().
    
    Originally-signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    DT configfs: Fix build errors on other platforms
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    DT configfs: fix build error
    
    There is an error when compiling rpi-4.6.y branch:
      CC      drivers/of/configfs.o
    drivers/of/configfs.c:291:21: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
       .default_groups = of_cfs_def_groups,
                         ^
    drivers/of/configfs.c:291:21: note: (near initialization for 'of_cfs_subsys.su_group.default_groups.next')
    
    The .default_groups is linked list since commit
    1ae1602.
    This commit uses configfs_add_default_group to fix this problem.
    
    Signed-off-by: Slawomir Stepien <sst@poczta.fm>
    pantoniou authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    af8af73 View commit details
    Browse the repository at this point in the history
  92. brcm: adds support for BCM43341 wifi

    brcmfmac: Disable power management
    
    Disable wireless power saving in the brcmfmac WLAN driver. This is a
    temporary measure until the connectivity loss resulting from power
    saving is resolved.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    brcmfmac: Use original country code as a fallback
    
    Commit 73345fd:
    
        brcmfmac: Configure country code using device specific settings
    
    prevents region codes from working on devices that lack a region code
    translation table. In the event of an absent table, preserve the old
    behaviour of using the provided code as-is.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    brcmfmac: Plug memory leak in brcmf_fill_bss_param
    
    See: raspberrypi#1471
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    
    brcmfmac: do not use internal roaming engine by default
    
    Some evidence of curing disconnects with this disabled, so make it a default.
    Can be overridden with module parameter roamoff=0
    See: http://projectable.me/optimize-my-pi-wi-fi/
    
    brcmfmac: Change stop_ap sequence
    
    Patch from Broadcom/Cypress to resolve a customer error
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Cheong2K authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    2d888be View commit details
    Browse the repository at this point in the history
  93. hci_h5: Don't send conf_req when ACTIVE

    Without this patch, a modem and kernel can continuously bombard each
    other with conf_req and conf_rsp messages, in a demented game of tag.
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    63e3b21 View commit details
    Browse the repository at this point in the history
  94. Copy the full SHA
    dcfe6cf View commit details
    Browse the repository at this point in the history
  95. Add arm64 configuration and device tree differences.

    Disable MMC_BCM2835_SDHOST and MMC_BCM2835 since these drivers are crashing at the moment.
    
    ARM64: Modify default config to get raspbian to boot (raspberrypi#1686)
    
    1. Enable emulation of deprecated instructions.
    2. Enable ARM 8.1 and 8.2 features which are not detected at runtime.
    3. Switch the default governer to powersave.
    4. Include the watchdog timer driver in the kernel image rather then a module.
    
    Tested with raspbian-jessie 2016-09-23.
    Electron752 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    24273c6 View commit details
    Browse the repository at this point in the history
  96. vchiq_arm: Tweak the logging output

    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    c5a316c View commit details
    Browse the repository at this point in the history
  97. vchiq_arm: Access the dequeue_pending flag locked

    Reading through this code looking for another problem (now found in userland)
    the use of dequeue_pending outside a lock didn't seem safe.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    c451a11 View commit details
    Browse the repository at this point in the history
  98. vchiq_arm: Service callbacks must not fail

    Service callbacks are not allowed to return an error. The internal callback
    that delivers events and messages to user tasks does not enqueue them if
    the service is closing, but this is not an error and should not be
    reported as such.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    db2437c View commit details
    Browse the repository at this point in the history
  99. vchiq_arm: Add completion records under the mutex

    An issue was observed when flushing openmax components
    which generate a large number of messages returning
    buffers to host.
    
    We occasionally found a duplicate message from 16
    messages prior, resulting in a buffer returned twice.
    
    While only one thread adds completions, without the
    mutex you don't get the protection of the automatic
    memory barrier you get with synchronisation objects.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    ed2a687 View commit details
    Browse the repository at this point in the history
  100. vchiq_arm: Avoid use of mutex in add_completion

    Claiming the completion_mutex within add_completion did prevent some
    messages appearing twice, but provokes a deadlock caused by vcsm using
    vchiq within a page fault handler.
    
    Revert the use of completion_mutex, and instead fix the original
    problem using more memory barriers.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    59d2abf View commit details
    Browse the repository at this point in the history
  101. staging/vchi: Convert to current get_user_pages() arguments.

    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    d2a51ea View commit details
    Browse the repository at this point in the history
  102. staging/vchi: Update for rename of page_cache_release() to put_page().

    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    d47b4b7 View commit details
    Browse the repository at this point in the history
  103. drivers/vchi: Remove dependency on CONFIG_BROKEN.

    The driver builds now.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    b5282b4 View commit details
    Browse the repository at this point in the history
  104. raspberrypi-firmware: Export the general transaction function.

    The vc4-firmware-kms module is going to be doing the MBOX FB call.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    207c380 View commit details
    Browse the repository at this point in the history
  105. raspberrypi-firmware: Define the MBOX channel in the header.

    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    f918546 View commit details
    Browse the repository at this point in the history
  106. drm/vc4: Add a mode for using the closed firmware for display.

    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    12d493c View commit details
    Browse the repository at this point in the history
  107. i2c: bcm2835: Fix hang for writing messages larger than 16 bytes

    Writing messages larger than the FIFO size results in a hang, rendering
    the machine unusable. This is because the RXD status flag is set on the
    first interrupt which results in bcm2835_drain_rxfifo() stealing bytes
    from the buffer. The controller continues to trigger interrupts waiting
    for the missing bytes, but bcm2835_fill_txfifo() has none to give.
    In this situation wait_for_completion_timeout() apparently is unable to
    stop the madness.
    
    The BCM2835 ARM Peripherals datasheet has this to say about the flags:
      TXD: is set when the FIFO has space for at least one byte of data.
      RXD: is set when the FIFO contains at least one byte of data.
      TXW: is set during a write transfer and the FIFO is less than full.
      RXR: is set during a read transfer and the FIFO is or more full.
    
    Implementing the logic from the downstream i2c-bcm2708 driver solved
    the hang problem.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Reviewed-by: Martin Sperl <kernel@martin.sperl.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    b302b7c View commit details
    Browse the repository at this point in the history
  108. i2c: bcm2835: Protect against unexpected TXW/RXR interrupts

    If an unexpected TXW or RXR interrupt occurs (msg_buf_remaining == 0),
    the driver has no way to fill/drain the FIFO to stop the interrupts.
    In this case the controller has to be disabled and the transfer
    completed to avoid hang.
    
    (CLKT | ERR) and DONE interrupts are completed in their own paths, and
    the controller is disabled in the transfer function after completion.
    Unite the code paths and do disabling inside the interrupt routine.
    
    Clear interrupt status bits in the united completion path instead of
    trying to do it on every interrupt which isn't necessary.
    Only CLKT, ERR and DONE can be cleared that way.
    
    Add the status value to the error value in case of TXW/RXR errors to
    distinguish them from the other S_LEN error.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    95729fe View commit details
    Browse the repository at this point in the history
  109. i2c: bcm2835: Use dev_dbg logging on transfer errors

    Writing to an AT24C32 generates on average 2x i2c transfer errors per
    32-byte page write. Which amounts to a lot for a 4k write. This is due
    to the fact that the chip doesn't respond during it's internal write
    cycle when the at24 driver tries and retries the next write.
    Only a handful drivers use dev_err() on transfer error, so switch to
    dev_dbg() instead.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    3e9e15e View commit details
    Browse the repository at this point in the history
  110. i2c: bcm2835: Can't support I2C_M_IGNORE_NAK

    The controller can't support this flag, so remove it.
    
    Documentation/i2c/i2c-protocol states that all of the message is sent:
    
    I2C_M_IGNORE_NAK:
        Normally message is interrupted immediately if there is [NA] from the
        client. Setting this flag treats any [NA] as [A], and all of
        message is sent.
    
    From the BCM2835 ARM Peripherals datasheet:
    
        The ERR field is set when the slave fails to acknowledge either
        its address or a data byte written to it.
    
    So when the controller doesn't receive an ack, it sets ERR and raises
    an interrupt. In other words, the whole message is not sent.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    9d8c576 View commit details
    Browse the repository at this point in the history
  111. i2c: bcm2835: Add support for Repeated Start Condition

    Documentation/i2c/i2c-protocol states that Combined transactions should
    separate messages with a Start bit and end the whole transaction with a
    Stop bit. This patch adds support for issuing only a Start between
    messages instead of a Stop followed by a Start.
    
    This implementation differs from downstream i2c-bcm2708 in 2 respects:
    - it uses an interrupt to detect that the transfer is active instead
      of using polling. There is no interrupt for Transfer Active, but by
      not prefilling the FIFO it's possible to use the TXW interrupt.
    - when resetting/disabling the controller between transfers it writes
      CLEAR to the control register instead of just zero.
      Using just zero gave many errors. This might be the reason why
      downstream had to disable this feature and make it available with a
      module parameter.
    
    I have run thousands of transfers to a DS1307 (rtc), MMA8451 (accel)
    and AT24C32 (eeprom) in parallel without problems.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Acked-by: Eric Anholt <eric@anholt.net>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    1099ac9 View commit details
    Browse the repository at this point in the history
  112. i2c: bcm2835: Support i2c-dev ioctl I2C_TIMEOUT

    Use i2c_adapter->timeout for the completion timeout value. The core
    default is 1 second.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    d42e420 View commit details
    Browse the repository at this point in the history
  113. i2c: bcm2835: Add support for dynamic clock

    Support a dynamic clock by reading the frequency and setting the
    divisor in the transfer function instead of during probe.
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Reviewed-by: Martin Sperl <kernel@martin.sperl.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    788daf4 View commit details
    Browse the repository at this point in the history
  114. i2c: bcm2835: Add debug support

    This adds a debug module parameter to aid in debugging transfer issues
    by printing info to the kernel log. When enabled, status values are
    collected in the interrupt routine and msg info in
    bcm2835_i2c_start_transfer(). This is done in a way that tries to avoid
    affecting timing. Having printk in the isr can mask issues.
    
    debug values (additive):
    1: Print info on error
    2: Print info on all transfers
    3: Print messages before transfer is started
    
    The value can be changed at runtime:
    /sys/module/i2c_bcm2835/parameters/debug
    
    Example output, debug=3:
    [  747.114448] bcm2835_i2c_xfer: msg(1/2) write addr=0x54, len=2 flags= [i2c1]
    [  747.114463] bcm2835_i2c_xfer: msg(2/2) read addr=0x54, len=32 flags= [i2c1]
    [  747.117809] start_transfer: msg(1/2) write addr=0x54, len=2 flags= [i2c1]
    [  747.117825] isr: remain=2, status=0x30000055 : TA TXW TXD TXE  [i2c1]
    [  747.117839] start_transfer: msg(2/2) read addr=0x54, len=32 flags= [i2c1]
    [  747.117849] isr: remain=32, status=0xd0000039 : TA RXR TXD RXD  [i2c1]
    [  747.117861] isr: remain=20, status=0xd0000039 : TA RXR TXD RXD  [i2c1]
    [  747.117870] isr: remain=8, status=0x32 : DONE TXD RXD  [i2c1]
    
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    notro authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    133b068 View commit details
    Browse the repository at this point in the history
  115. Copy the full SHA
    fbf6217 View commit details
    Browse the repository at this point in the history
  116. Copy the full SHA
    d7a7355 View commit details
    Browse the repository at this point in the history
  117. Document the si7020 option

    pelwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    e6be13c View commit details
    Browse the repository at this point in the history
  118. pisound improvements:

    * Added a writable sysfs object to enable scripts / user space software
    to blink MIDI activity LEDs for variable duration.
    * Improved hw_param constraints setting.
    * Added compatibility with S16_LE sample format.
    * Exposed some simple placeholder volume controls, so the card appears
    in volumealsa widget.
    
    Signed-off-by: Giedrius Trainavicius <giedrius@blokas.io>
    gtrainavicius authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    811d783 View commit details
    Browse the repository at this point in the history
  119. Revert "Revert "Added driver for HiFiBerry Amp amplifier add-on board""

    This reverts commit bf84bab.
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    20779ca View commit details
    Browse the repository at this point in the history
  120. hifiberry-amp: Adjust for ALSA object refactoring

    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    5f73a35 View commit details
    Browse the repository at this point in the history
  121. bcm2835-i2s: Changes for allowing asymmetric sample formats.

    This is achieved by making changes only to the requested
    stream direction format, keeping the other stream direction
    configuration intact.
    
    Signed-off-by: Giedrius Trainavicius <giedrius@blokas.io>
    gtrainavicius authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    425ee76 View commit details
    Browse the repository at this point in the history
  122. Add driver_name property

    Add driver name property for use with 5.1 passthrough audio in LibreElec and other Kodi based OSs
    shawaj authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    6e7ad27 View commit details
    Browse the repository at this point in the history
  123. Add driver_name paramater

    Add driver_name parameter for use with 5.1 passthrough audio in LibreElec and other Kodi OSs
    shawaj authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    d9f5869 View commit details
    Browse the repository at this point in the history
  124. BCM270X_DT: Add pi3-disable-wifi overlay

    pi3-disable-wifi is a minimal overlay to disable the onboard WiFi.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    11e7774 View commit details
    Browse the repository at this point in the history
  125. ARM64: Make it work again on 4.9 (raspberrypi#1790)

    * Invoke the dtc compiler with the same options used in arm mode.
    * ARM64 now uses the bcm2835 platform just like ARM32.
    * ARM64: Update bcmrpi3_defconfig
    
    Signed-off-by: Michael Zoran <mzoran@crowfest.net>
    Electron752 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    d6fbb7b View commit details
    Browse the repository at this point in the history
  126. ARM64: Enable Kernel Address Space Randomization (raspberrypi#1792)

    Randomization allows the mapping between virtual addresses and physical
    address to be different on each boot.  This makes it more difficult
    to exploit security vulnerabilities that require knowledge of fixed
    hardware addresses.
    
    The firmware generates a 8 byte random number during bootup and stores
    it in the device tree under chosen/kaslr-seed. This number is used
    to randomize the address mapping.
    
    This change enables this feature in the build configuration for ARM64.
    
    Signed-off-by: Michael Zoran <mzoran@crowfest.net>
    Electron752 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    8930b9b View commit details
    Browse the repository at this point in the history
  127. ARM64: Fix build break for RTL8187/RTL8192CU wifi

    These drivers use an ASM function from the base
    system to compute the ipv6 checksum.  These functions
    are not available on ARM64, probably because nobody
    has bother to write them.  The base system does have
    a generic "C" version, so a simple fix is to include
    the header to use the generic version on ARM64 only.
    
    A longer term solution would be to submit the necessary
    ASM function to the upstream source.
    
    With this change, these drivers now compile without
    any errors on ARM64.
    
    Signed-off-by: Michael Zoran <mzoran@crowfest.net>
    Electron752 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    d2ab394 View commit details
    Browse the repository at this point in the history
  128. ARM64: Enable RTL8187/RTL8192CU wifi in build config

    These drivers build now, so they can be enabled back
    in the build configuration just like they are for
    32 bit.
    
    Signed-off-by: Michael Zoran <mzoran@crowfest.net>
    Electron752 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    0d1eefa View commit details
    Browse the repository at this point in the history
  129. BCM270X_DT: Add spi0-cs overlay

    The spi0-cs overlay allows the software chip selectts to be modified
    using the cs0_pin and cs1_pin parameters.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    efdb964 View commit details
    Browse the repository at this point in the history
  130. spi-bcm2835: Disable forced software CS

    Select software CS in bcm2708_common.dtsi, and disable the automatic
    conversion in the driver to allow hardware CS to be re-enabled with an
    overlay.
    
    See: raspberrypi#1547
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    2248b18 View commit details
    Browse the repository at this point in the history
  131. Copy the full SHA
    7342a6a View commit details
    Browse the repository at this point in the history
  132. Revert "bcm2835-i2s: Changes for allowing asymmetric sample formats."

    This reverts commit f5a6236.
    
    See: raspberrypi#1799
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    db51b29 View commit details
    Browse the repository at this point in the history
  133. BCM270X_DT: Enable UART0 on CM3

    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    074d3a0 View commit details
    Browse the repository at this point in the history
  134. config: Add CONFIG_MD_M25P80 and CONFIG_MD_SPI_NOR

    See: raspberrypi#1781
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    1159cc6 View commit details
    Browse the repository at this point in the history
  135. ARM64/DWC_OTG: Port dwc_otg driver to ARM64

    In ARM64, the FIQ mechanism used by this driver is not current
    implemented.   As a workaround, reqular IRQ is used instead
    of FIQ.
    
    In a separate change, the IRQ-CPU mapping is round robined
    on ARM64 to increase concurrency and allow multiple interrupts
    to be serviced at a time.  This reduces the need for FIQ.
    
    Tests Run:
    
    This mechanism is most likely to break when multiple USB devices
    are attached at the same time.  So the system was tested under
    stress.
    
    Devices:
    
    1. USB Speakers playing back a FLAC audio through VLC
       at 96KHz.(Higher then typically, but supported on my speakers).
    
    2. sftp transferring large files through the buildin ethernet
       connection which is connected through USB.
    
    3. Keyboard and mouse attached and being used.
    
    Although I do occasionally hear some glitches, the music seems to
    play quite well.
    
    Signed-off-by: Michael Zoran <mzoran@crowfest.net>
    Electron752 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    2f15deb View commit details
    Browse the repository at this point in the history
  136. ARM64: Round-Robin dispatch IRQs between CPUs.

    IRQ-CPU mapping is round robined on ARM64 to increase
    concurrency and allow multiple interrupts to be serviced
    at a time.  This reduces the need for FIQ.
    
    Signed-off-by: Michael Zoran <mzoran@crowfest.net>
    Electron752 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    b51f35c View commit details
    Browse the repository at this point in the history
  137. ARM64: Enable DWC_OTG Driver In ARM64 Build Config(bcmrpi3_defconfig)

    Signed-off-by: Michael Zoran <mzoran@crowfest.net>
    Electron752 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    b0a66d7 View commit details
    Browse the repository at this point in the history
  138. ARM64: Use dwc_otg driver by default for USB.

    If it breaks on anybody, they can use the standard device tree
    overlays to switch back to the dwc2 driver.
    
    Signed-off-by: Michael Zoran <mzoran@crowfest.net>
    Electron752 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    a81b40b View commit details
    Browse the repository at this point in the history
  139. BCM270X_DT: Add reference to audio_pins to CM dtb

    The CM1 dtb contains an empty audio_pins node, but no reference to it.
    Adding the usual pinctrl reference from the audio node enables the
    audremap overlay (and others) to easily turn on audio.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    719ed1f View commit details
    Browse the repository at this point in the history
  140. Copy the full SHA
    6a4bb2c View commit details
    Browse the repository at this point in the history
  141. ASoC: A simple-card overlay for ADAU7002

    Usage: `dtoverlay=adau7002-simple`
    plasticchris authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    05f8935 View commit details
    Browse the repository at this point in the history
  142. config: Add SND_SOC_ADAU7002 codec module

    As there is now an overlay requiring it, build the codec module.
    
    Signed-off-by: Phil Elwell <phil@raspberrypi.org>
    Phil Elwell authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    86a9b1e View commit details
    Browse the repository at this point in the history
  143. Add overlay for mcp3008 adc (raspberrypi#1818)

    Some example usage:
    
    SPI0.0
    dtparam=spi=on
    dtoverlay=mcp3008:spi0-0-present
    
    SPI0.1
    dtparam=spi=on
    dtoverlay=mcp3008:spi0-1-present
    
    SPI0.0 and SPI0.1
    dtparam=spi=on
    dtoverlay=mcp3008:spi0-0-present,spi0-1-present
    
    SPI1.0
    dtparam=spi=on
    dtoverlay=spi1-1cs
    dtoverlay=mcp3008:spi1-0-present
    
    SPI1.2
    dtparam=spi=on
    dtoverlay=spi1-1cs:cs0_pin=16
    dtoverlay=mcp3008:spi1-0-present
    
    SPI1.0 and SPI1.1
    dtoverlay=spi1-2cs
    dtoverlay=mcp3008:spi1-0-present,spi1-1-present
    
    Changing the speed
    
    SPI0.0
    dtparam=spi=on
    dtoverlay=mcp3008:spi0-0-present,spi0-0-speed=2000000
    Scott Ellis authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    ad0138f View commit details
    Browse the repository at this point in the history
  144. usb: dwc2: Avoid suspending if we're in gadget mode (raspberrypi#1825)

    I've found when booting HiKey with the usb gadget cable attached
    if I then try to connect via adb, I get an infinite spew of:
    
    dwc2 f72c0000.usb: dwc2_hsotg_ep_sethalt(ep ffffffc0790ecb18 ep1out, 0)
    dwc2 f72c0000.usb: dwc2_hsotg_ep_sethalt(ep ffffffc0790eca18 ep1in, 0)
    
    It seems that the usb autosuspend is suspending the bus shortly
    after bootup when the gadget cable is attached. So when adbd
    then tries to use the device, it doesn't work and it then tries
    to restart it over and over via the ep_sethalt calls (via
    FUNCTIONFS_CLEAR_HALT ioctl).
    
    Chen Yu suggested this patch to avoid suspending if we're
    in device mode, and it avoids the problem.
    
    Cc: Wei Xu <xuwei5@hisilicon.com>
    Cc: Guodong Xu <guodong.xu@linaro.org>
    Cc: Amit Pundir <amit.pundir@linaro.org>
    Cc: Rob Herring <robh+dt@kernel.org>
    Cc: John Youn <johnyoun@synopsys.com>
    Cc: Douglas Anderson <dianders@chromium.org>
    Cc: Chen Yu <chenyu56@huawei.com>
    Cc: Kishon Vijay Abraham I <kishon@ti.com>
    Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: linux-usb@vger.kernel.org
    Suggested-by: Chen Yu <chenyu56@huawei.com>
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: John Youn <johnyoun@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    ED6E0F17 authored and popcornmix committed Feb 4, 2017
    Copy the full SHA
    7158cd0 View commit details
    Browse the repository at this point in the history
  145. config: Enable regulator support

    Signed-off-by: Matthias Reichl <hias@horus.com>
    HiassofT committed Feb 4, 2017
    Copy the full SHA
    fe1a6c3 View commit details
    Browse the repository at this point in the history
  146. BCM270x DT: expose 3.3V and 5V system rails

    Signed-off-by: Matthias Reichl <hias@horus.com>
    HiassofT committed Feb 4, 2017
    Copy the full SHA
    d318e9c View commit details
    Browse the repository at this point in the history
  147. BCM270x DT: Consolidate audio card overlays

    Reference 3.3V / 5V system rails instead of instantiating local
    regulators.
    
    Add missing power supply properties for codecs where these are
    required according to the DT bindings docs.
    
    Signed-off-by: Matthias Reichl <hias@horus.com>
    HiassofT committed Feb 4, 2017
    Copy the full SHA
    5de60e0 View commit details
    Browse the repository at this point in the history
  148. ASoC: Add driver for Cirrus Logic Audio Card

    Note: due to problems with deferred probing of regulators
    the following softdep should be added to a modprobe.d file
    
    softdep arizona-spi pre: arizona-ldo1
    
    Signed-off-by: Matthias Reichl <hias@horus.com>
    HiassofT committed Feb 4, 2017
    Copy the full SHA
    42fef81 View commit details
    Browse the repository at this point in the history
  149. config: enable Cirrus Logic Audio Card

    Signed-off-by: Matthias Reichl <hias@horus.com>
    HiassofT committed Feb 4, 2017
    Copy the full SHA
    1466527 View commit details
    Browse the repository at this point in the history

Commits on Feb 6, 2017

  1. gpio_mem: Remove unnecessary dev_info output (raspberrypi#1830)

    The open function was spamming syslog every time
    called, so have removed call completely.
    JamesH65 authored and popcornmix committed Feb 6, 2017
    Copy the full SHA
    f924918 View commit details
    Browse the repository at this point in the history

Commits on Feb 7, 2017

  1. Merge pull request raspberrypi#1810 from HiassofT/cirrus-rpi

    Add driver for Wolfson / Cirrus Logic audio card
    popcornmix committed Feb 7, 2017
    Copy the full SHA
    a5204ea View commit details
    Browse the repository at this point in the history

Commits on Feb 9, 2017

  1. clk: bcm2835: Fix ->fixed_divider of pllh_aux

    There is no fixed divider on pllh_aux.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    (cherry picked from commit f2a4692)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    6ba2e29 View commit details
    Browse the repository at this point in the history
  2. clk: bcm: Support rate change propagation on bcm2835 clocks

    Some peripheral clocks, like the VEC (Video EnCoder) clock need to be set
    to a precise rate (in our case 108MHz). With the current implementation,
    where peripheral clocks are not allowed to forward rate change requests
    to their parents, it is impossible to match this requirement unless the
    bootloader has configured things correctly, or a specific rate has been
    assigned through the DT (with the assigned-clk-rates property).
    
    Add a new field to struct bcm2835_clock_data to specify which parent
    clocks accept rate change propagation, and support set rate propagation
    in bcm2835_clock_determine_rate().
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    (cherry picked from commit 155e8b3)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    0c9c0f4 View commit details
    Browse the repository at this point in the history
  3. clk: bcm: Allow rate change propagation to PLLH_AUX on VEC clock

    The VEC clock requires needs to be set at exactly 108MHz. Allow rate
    change propagation on PLLH_AUX to match this requirement wihtout
    impacting other IPs (PLLH is currently only used by the HDMI encoder,
    which cannot be enabled when the VEC encoder is enabled).
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    (cherry picked from commit d86d46a)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    7bbf628 View commit details
    Browse the repository at this point in the history
  4. clk: bcm: Fix 'maybe-uninitialized' warning in bcm2835_clock_choose_d…

    …iv_and_prate()
    
    best_rate is reported as potentially uninitialized by gcc.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Fixes: 155e8b3 ("clk: bcm: Support rate change propagation on bcm2835 clocks")
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    (cherry picked from commit 2aab7a2)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    7f6c23e View commit details
    Browse the repository at this point in the history
  5. clk: bcm2835: Don't rate change PLLs on behalf of DSI PLL dividers.

    Our core PLLs are intended to be configured once and left alone.  With
    the SET_RATE_PARENT, asking to set the PLLD_DSI1 clock rate would
    change PLLD just to get closer to the requested DSI clock, thus
    changing PLLD_PER, the UART and ethernet PHY clock rates downstream of
    it, and breaking ethernet.
    
    We *do* want PLLH to change so that PLLH_AUX can be exactly the value
    we want, though.  Thus, we need to have a per-divider policy of
    whether to pass rate changes up.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    (cherry picked from commit 5548609)
    anholt committed Feb 9, 2017
    Copy the full SHA
    acf1733 View commit details
    Browse the repository at this point in the history
  6. clk: bcm2835: Register the DSI0/DSI1 pixel clocks.

    The DSI pixel clocks are muxed from clocks generated in the analog phy
    by the DSI driver.  In order to set them as parents, we need to do the
    same name lookup dance on them as we do for our root oscillator.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    (cherry picked from commit 8a39e9f)
    anholt committed Feb 9, 2017
    Copy the full SHA
    4b8941f View commit details
    Browse the repository at this point in the history
  7. clk: bcm2835: Add leaf clock measurement support, disabled by default

    This proved incredibly useful during debugging of the DSI driver, to
    see if our clocks were running at rate we requested.  Let's leave it
    here for the next person interacting with clocks on the platform (and
    so that hopefully we can just hook it up to debugfs some day).
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    (cherry picked from commit 3f91958)
    anholt committed Feb 9, 2017
    Copy the full SHA
    6e868e7 View commit details
    Browse the repository at this point in the history
  8. drm/panel: Add support for the Raspberry Pi 7" Touchscreen.

    This driver communicates with the Atmel microcontroller for sequencing
    the poweron of the TC358762 DSI-DPI bridge and controlling the
    backlight PWM.
    
    The following lines are required in config.txt, to keep the firmware
    from trying to bash our I2C lines and steal the DSI interrupts:
    
        disable_touchscreen=1
        ignore_lcd=2
        mask_gpu_interrupt1=0x1000
    
    This means that the firmware won't power on the panel at boot time (no
    rainbow) and the touchscreen input won't work.  The native input
    driver for the touchscreen still needs to be written.
    
    v2: Set the same default orientation as the closed source firmware
        used, which is the best for viewing angle.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    ce34270 View commit details
    Browse the repository at this point in the history
  9. BCM270X: Add the DSI panel to the defconfig.

    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    d546608 View commit details
    Browse the repository at this point in the history
  10. ARM: bcm2835: dt: Add the DSI module nodes and clocks.

    The modules stay disabled by default, and if you want to enable DSI
    you'll need an overlay that connects a panel to it.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    c23a3b1 View commit details
    Browse the repository at this point in the history
  11. BCM270X: Enable the DSI panel node in the VC4 overlay.

    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    1beb632 View commit details
    Browse the repository at this point in the history
  12. drm/vc4: Fix termination of the initial scan for branch targets.

    The loop is scanning until the original max_ip (size of the BO), but
    we want to not examine any code after the PROG_END's delay slots.
    There was a block trying to do that, except that we had some early
    continue statements if the signal wasn't a PROG_END or a BRANCH.
    
    The failure mode would be that a valid shader is rejected because some
    undefined memory after the PROG_END slots is parsed as a branch and
    the rest of its setup is illegal.  I haven't seen this in the wild,
    but valgrind was complaining when about this up in the userland
    simulator mode.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit 457e67a)
    anholt committed Feb 9, 2017
    Copy the full SHA
    692a585 View commit details
    Browse the repository at this point in the history
  13. drm/vc4: Add support for rendering with ETC1 textures.

    The validation for it ends up being quite simple, but I hadn't got
    around to it before merging the driver.  For backwards compatibility,
    we also need to add a flag so that the userspace GL driver can easily
    tell if the kernel will allow ETC1 textures (on an old kernel, it will
    continue to convert to RGBA8)
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit 7154d76)
    anholt committed Feb 9, 2017
    Copy the full SHA
    d5b4ffb View commit details
    Browse the repository at this point in the history
  14. drm/vc4: Use runtime autosuspend to avoid thrashing V3D power state.

    The pm_runtime_put() we were using immediately released power on the
    device, which meant that we were generally turning the device off and
    on once per frame.  In many profiles I've looked at, that added up to
    about 1% of CPU time, but this could get worse in the case of frequent
    rendering and readback (as may happen in X rendering).  By keeping the
    device on until we've been idle for a couple of frames, we drop the
    overhead of runtime PM down to sub-.1%.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit 3a62234)
    anholt committed Feb 9, 2017
    Copy the full SHA
    8ef20d0 View commit details
    Browse the repository at this point in the history
  15. drm/vc4: Add fragment shader threading support

    FS threading brings performance improvements of 0-20% in glmark2.
    
    The validation code checks for thread switch signals and ensures that
    the registers of the other thread are not touched, and that our clamps
    are not live across thread switches.  It also checks that the
    threading and branching instructions do not interfere.
    
    (Original patch by Jonas, changes by anholt for style cleanup,
    removing validation the kernel doesn't need to do, and adding the flag
    for userspace).
    
    v2: Minor style fixes from checkpatch.
    
    Signed-off-by: Jonas Pfeil <pfeiljonas@gmx.de>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit c778cc5)
    jonasarrow authored and anholt committed Feb 9, 2017
    Copy the full SHA
    daa397e View commit details
    Browse the repository at this point in the history
  16. drm/vc4: Fix race between page flip completion event and clean-up

    There was a small window where a userspace program could submit
    a pageflip after receiving a pageflip completion event yet still
    receive EBUSY.
    
    Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Reviewed-by: Daniel Stone <daniels@collabora.com>
    (cherry picked from commit 26fc78f)
    Derek Foreman authored and anholt committed Feb 9, 2017
    Copy the full SHA
    5ab807f View commit details
    Browse the repository at this point in the history
  17. drm/vc4: Fix ->clock_select setting for the VEC encoder

    PV_CONTROL_CLK_SELECT_VEC is actually 2 and not 0. Fix the definition and
    rework the vc4_set_crtc_possible_masks() to cover the full range of the
    PV_CONTROL_CLK_SELECT field.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit ab8df60)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    43028ce View commit details
    Browse the repository at this point in the history
  18. drm: Add TV connector states to drm_connector_state

    Some generic TV connector properties are exposed in drm_mode_config, but
    they are currently handled independently in each DRM encoder driver.
    
    Extend the drm_connector_state to store TV related states, and modify the
    drm_atomic_connector_{set,get}_property() helpers to fill the connector
    state accordingly.
    
    Each driver is then responsible for checking and applying the new config
    in its ->atomic_mode_{check,set}() operations.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit 299a16b)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    05cb15e View commit details
    Browse the repository at this point in the history
  19. drm: Turn DRM_MODE_SUBCONNECTOR_xx definitions into an enum

    List of values like the DRM_MODE_SUBCONNECTOR_xx ones are better
    represented with enums.
    
    Turn the DRM_MODE_SUBCONNECTOR_xx macros into an enum.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit dee7a4f)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    f45c84a View commit details
    Browse the repository at this point in the history
  20. drm/vc4: Add support for the VEC (Video Encoder) IP

    The VEC IP is a TV DAC, providing support for PAL and NTSC standards.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit e4b81f8)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    542f7b7 View commit details
    Browse the repository at this point in the history
  21. drm/vc4: Set up SCALER_DISPCTRL at boot.

    We want the HVS on, obviously, and we also want DSP3 (PV1's source) to
    be muxed from HVS channel 2 like we expect in vc4_crtc.c.  The
    firmware wasn't setting the DSP3 mux up when both the LCD and HDMI
    were disabled.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    4c9174b View commit details
    Browse the repository at this point in the history
  22. drm/vc4: Add support for feeding DSI encoders from the pixel valve.

    We have to set a different pixel format, which tells the hardware to
    use the pix_width field that's fed in sideband from the DSI encoder to
    divide the "pixel" clock.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    3dcdbdd View commit details
    Browse the repository at this point in the history
  23. drm/vc4: Add DSI driver

    The DSI0 and DSI1 blocks on the 2835 are related hardware blocks.
    Some registers move around, and the featureset is slightly different,
    as DSI1 (the 4-lane DSI) is a later version of the hardware block.
    This driver doesn't yet enable DSI0, since we don't have any hardware
    to test against, but it does put a lot of the register definitions and
    code in place.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    1b0a21f View commit details
    Browse the repository at this point in the history
  24. ARM: dts: bcm283x: Add VEC node in bcm283x.dtsi

    Add the VEC (Video EnCoder) node definition in bcm283x.dtsi.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit b899c45)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    383480e View commit details
    Browse the repository at this point in the history
  25. ARM: dts: bcm283x: Enable the VEC IP on all RaspberryPi boards

    Enable the VEC IP on all RaspberryPi boards.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    (cherry picked from commit 5ab1a37)
    Boris Brezillon authored and anholt committed Feb 9, 2017
    Copy the full SHA
    75d2e3f View commit details
    Browse the repository at this point in the history
  26. BCM270X: Disable VEC unless vc4-kms-v3d is present.

    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    0ead32f View commit details
    Browse the repository at this point in the history
  27. drm/vc4: Name the primary and cursor planes in fkms.

    This makes debugging nicer, compared to trying to remember what the
    IDs are.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    a26eaec View commit details
    Browse the repository at this point in the history
  28. drm/vc4: Add DRM_DEBUG_ATOMIC for the insides of fkms.

    Trying to debug weston on fkms involved figuring out what calls I was
    making to the firmware.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    4a7ba3f View commit details
    Browse the repository at this point in the history
  29. drm/vc4: Fix sending of page flip completion events in FKMS mode.

    In the rewrite of vc4_crtc.c for fkms, I dropped the part of the
    CRTC's atomic flush handler that moved the completion event from the
    proposed atomic state change to the CRTC's current state.  That meant
    that when full screen pageflipping happened (glxgears -fullscreen in
    X, compton, por weston), the app would end up blocked firever waiting
    to draw its next frame.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    71d4919 View commit details
    Browse the repository at this point in the history
  30. drm/vc4: Fulfill user BO creation requests from the kernel BO cache.

    The from_cache flag was actually "the BO is invisible to userspace",
    so we can repurpose to just zero out a cached BO and return it to
    userspace.
    
    Improves wall time for a loop of 5 glsl-algebraic-add-add-1 by
    -1.44989% +/- 0.862891% (n=28, 1 outlier removed from each that
    appeared to be other system noise)
    
    Note that there's an intel-gpu-tools test to check for the proper
    zeroing behavior here, which we continue to pass.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    a5442c1 View commit details
    Browse the repository at this point in the history
  31. drm/vc4: Fix OOPSes from trying to cache a partially constructed BO.

    If a CMA allocation failed, the partially constructed BO would be
    unreferenced through the normal path, and we might choose to put it in
    the BO cache.  If we then reused it before it expired from the cache,
    the kernel would OOPS.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Fixes: c826a6e ("drm/vc4: Add a BO cache.")
    anholt committed Feb 9, 2017
    Copy the full SHA
    bb40db9 View commit details
    Browse the repository at this point in the history
  32. drm/vc4: Verify at boot that CMA doesn't cross a 256MB boundary.

    I've seen lots of users cranking CMA up higher, so throw an error if
    they do.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    anholt committed Feb 9, 2017
    Copy the full SHA
    384a15d View commit details
    Browse the repository at this point in the history