[source] brcm2708: update linux 4.4 patches to latest version

LEDE Commits lede-commits at lists.infradead.org
Sat Sep 10 06:01:55 PDT 2016


noltari pushed a commit to source.git, branch master:
https://git.lede-project.org/2b1c6b21b5e6c82ebb55d7fb7df90e60e88cbb14

commit 2b1c6b21b5e6c82ebb55d7fb7df90e60e88cbb14
Author: Álvaro Fernández Rojas <noltari at gmail.com>
AuthorDate: Sat Sep 10 14:54:26 2016 +0200

    brcm2708: update linux 4.4 patches to latest version
    
    As usual these patches were extracted and rebased from the raspberry pi repo:
    https://github.com/raspberrypi/linux/tree/rpi-4.4.y
    
    Also adds support for Raspberry Pi Compute Module 3 (untested).
    
    Signed-off-by: Álvaro Fernández Rojas <noltari at gmail.com>
---
 target/linux/brcm2708/image/Makefile               |    4 +-
 target/linux/brcm2708/image/config.txt             |    1 +
 target/linux/brcm2708/modules.mk                   |    2 +-
 ...0001-smsx95xx-fix-crimes-against-truesize.patch |    4 +-
 ...02-smsc95xx-Disable-turbo-mode-by-default.patch |    4 +-
 ...around-for-issue-where-dirty-page-count-g.patch |    6 +-
 .../0004-BCM2835_DT-Fix-I2S-register-map.patch     |    4 +-
 ...-Prevent-spurious-interrupts-and-trap-the.patch |    5 +-
 .../0006-irqchip-bcm2835-Add-FIQ-support.patch     |    4 +-
 ...-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch |    4 +-
 ...erial-8250-Don-t-crash-when-nr_uarts-is-0.patch |    4 +-
 ...2835-Set-base-to-0-give-expected-gpio-num.patch |    5 +-
 ...2835-Fix-interrupt-handling-for-GPIOs-28-.patch |    6 +-
 ...2835-Only-request-the-interrupts-listed-i.patch |    6 +-
 ...cm2835-Support-pin-groups-other-than-7-11.patch |    4 +-
 ...RM-bcm2835-Set-Serial-number-and-Revision.patch |    4 +-
 ...-get-base-address-for-DMA-from-devicetree.patch |    4 +-
 ...-add-24bit-support-update-bclk_ratio-to-m.patch |    6 +-
 ...s-setup-clock-only-if-CPU-is-clock-master.patch |    4 +-
 ...835-i2s-Eliminate-debugfs-directory-error.patch |    4 +-
 .../0018-bcm2835-i2s-Register-PCM-device.patch     |    4 +-
 ...i2s-Enable-MMAP-support-via-a-DT-property.patch |    4 +-
 ...0-dmaengine-bcm2835-Add-slave-dma-support.patch |    4 +-
 ...ine-bcm2835-set-residue_granularity-field.patch |    4 +-
 ...cm2835-Load-driver-early-and-support-lega.patch |    5 +-
 ...-dma-Fix-dreq-not-set-for-slave-transfers.patch |    4 +-
 ...-Limit-cyclic-transfers-on-lite-channels-.patch |    5 +-
 .../0025-bcm2835-Add-support-for-uart1.patch       |    4 +-
 ...irmware-bcm2835-Add-missing-property-tags.patch |    4 +-
 .../0027-Main-bcm2708-bcm2709-linux-port.patch     |    4 +-
 ...-squash-include-ARCH_BCM2708-ARCH_BCM2709.patch |    4 +-
 .../patches-4.4/0029-Add-dwc_otg-driver.patch      |    4 +-
 .../0030-bcm2708-framebuffer-driver.patch          |    4 +-
 .../0031-dmaengine-Add-support-for-BCM2708.patch   |    4 +-
 .../0032-MMC-added-alternative-MMC-driver.patch    |    4 +-
 ...835-sdhost-driver-and-an-overlay-to-enabl.patch |    5 +-
 ...ma-Add-vc_cma-driver-to-enable-use-of-CMA.patch |    4 +-
 .../0035-bcm2708-alsa-sound-driver.patch           |    4 +-
 .../patches-4.4/0036-bcm2708-vchiq-driver.patch    |    4 +-
 .../0037-vc_mem-Add-vc_mem-driver.patch            |    4 +-
 ...deoCore-shared-memory-service-for-BCM2835.patch |    4 +-
 ...omem-device-for-rootless-user-GPIO-access.patch |    4 +-
 .../brcm2708/patches-4.4/0040-Add-SMI-driver.patch |    4 +-
 .../patches-4.4/0041-Add-SMI-NAND-driver.patch     |    4 +-
 ...2-lirc-added-support-for-RaspberryPi-GPIO.patch |    4 +-
 .../patches-4.4/0043-Add-cpufreq-driver.patch      |    4 +-
 ...-thermal-driver-for-reporting-core-temper.patch |    6 +-
 .../0045-Add-Chris-Boot-s-i2c-driver.patch         |    4 +-
 .../0046-char-broadcom-Add-vcio-module.patch       |    4 +-
 ...047-firmware-bcm2835-Support-ARCH_BCM270x.patch |    4 +-
 .../0048-bcm2835-add-v4l2-camera-device.patch      |    4 +-
 ...-mkknlimg-and-knlinfo-scripts-from-tools-.patch |    5 +-
 ...port-for-the-CONFIG_CMDLINE_EXTEND-option.patch |    4 +-
 ...0051-BCM2708-Add-core-Device-Tree-support.patch |    4 +-
 ...2-bcm2835-Match-with-BCM2708-Device-Trees.patch |    4 +-
 .../0053-fbdev-add-FBIOCOPYAREA-ioctl.patch        |    4 +-
 ...up-console-framebuffer-imageblit-function.patch |    4 +-
 ...8-Allow-mac-address-to-be-set-in-smsc95xx.patch |    4 +-
 ...e-realtime-clock-1-wire-chip-DS1307-and-1.patch |    6 +-
 ...060-Added-Device-IDs-for-August-DVB-T-205.patch |    4 +-
 ...le-CONFIG_MEMCG-but-leave-it-disabled-due.patch |    6 +-
 .../0062-ASoC-Add-support-for-PCM5102A-codec.patch |    4 +-
 .../0063-ASoC-Add-support-for-HifiBerry-DAC.patch  |    4 +-
 .../0064-ASoC-Add-support-for-Rpi-DAC.patch        |    4 +-
 ...-Implement-MCLK-configuration-options-add.patch |   22 +-
 ...d-support-for-HiFiBerry-Digi.-Driver-is-b.patch |    6 +-
 ...-Set-idle_bias_off-to-false-Idle-bias-has.patch |    6 +-
 ...audIO-Sound-Card-support-for-Raspberry-Pi.patch |    4 +-
 ...ce-default-mouse-polling-interval-to-60Hz.patch |    4 +-
 .../0070-Added-support-for-HiFiBerry-DAC.patch     |    4 +-
 ...r-for-HiFiBerry-Amp-amplifier-add-on-boar.patch |    4 +-
 ...ate-ds1307-driver-for-device-tree-support.patch |    4 +-
 ...Add-pwr_led-and-the-required-input-trigge.patch |    5 +-
 ...d-device-tree-compatible-string-and-an-ov.patch |    5 +-
 .../0075-Add-driver-for-rpi-proto.patch            |    4 +-
 .../0076-config-Add-default-configs.patch          |    4 +-
 .../0077-bcm2835-bcm2835_defconfig.patch           |    4 +-
 ...Add-touchscreen-driver-for-pi-LCD-display.patch |    4 +-
 ...opy_to_user-and-__copy_from_user-performa.patch |    5 +-
 ...poweroff-Allow-it-to-work-on-Raspberry-Pi.patch |    4 +-
 ...spidev-compatible-string-to-silence-warni.patch |    5 +-
 .../0082-scripts-dtc-Add-overlay-support.patch     |    4 +-
 ...fd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch |    4 +-
 .../patches-4.4/0084-RaspiDAC3-support.patch       |    4 +-
 ...85-tpa6130a2-Add-headphone-switch-control.patch |    4 +-
 .../0086-irq-bcm2835-Fix-building-with-2708.patch  |    4 +-
 ..._display-add-backlight-driver-and-overlay.patch |    4 +-
 ...88-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch |    4 +-
 ...ti-platform-support-for-mkknlimg-and-knli.patch |    5 +-
 ...-suport-for-3D-rendering-using-the-V3D-en.patch |    5 +-
 .../0091-drm-vc4-Force-HDMI-to-connected.patch     |    4 +-
 .../0092-drm-vc4-bo-cache-locking-fixes.patch      |    4 +-
 .../0093-drm-vc4-bo-cache-locking-cleanup.patch    |    4 +-
 ...vc4-Use-job_lock-to-protect-seqno_cb_list.patch |    4 +-
 ...c4-Drop-struct_mutex-around-CL-validation.patch |    4 +-
 ...c4-Drop-struct_mutex-around-CL-validation.patch |    4 +-
 ...dd-support-for-more-display-plane-formats.patch |    4 +-
 ...m-vc4-No-need-to-stop-the-stopped-threads.patch |    4 +-
 ...ove-extra-barrier-s-aroudn-CTnCA-CTnEA-se.patch |    5 +-
 ...rm-vc4-Fix-a-typo-in-a-V3D-debug-register.patch |    4 +-
 ...ble-VC4-modules-and-increase-CMA-size-wit.patch |    6 +-
 .../brcm2708/patches-4.4/0102-squash-fixups.patch  |    4 +-
 ...missing-vc4-kms-v3d-overlay.dtb-to-makefi.patch |    5 +-
 ...-Also-build-the-driver-for-downstream-ker.patch |    5 +-
 ...dts-Added-overlay-for-gpio_ir_recv-driver.patch |    4 +-
 ...pio-module-and-add-a-device-tree-overlay-.patch |    6 +-
 .../0107-New-overlay-for-PiScreen2r.patch          |    4 +-
 ...verlay-for-Adafruit-PiTFT-2.8-capacitive-.patch |    6 +-
 ...109-Add-support-for-the-HiFiBerry-DAC-Pro.patch |    4 +-
 .../0110-BCM270X_DT-Add-at86rf233-overlay.patch    |    4 +-
 .../0111-mm-Remove-the-PFN-busy-warning.patch      |    4 +-
 ...optional-field-in-the-driver-struct-for-G.patch |    6 +-
 ...-an-interface-for-capturing-the-GPU-state.patch |    6 +-
 ...ate-a-bunch-of-code-to-match-upstream-sub.patch |    5 +-
 ...-driver-s-gem_object_free-function-from-C.patch |    6 +-
 ...16-drm-vc4-Add-support-for-MSAA-rendering.patch |    4 +-
 ...ew-more-non-functional-changes-to-sync-to.patch |    4 +-
 ...-hpd-gpios-for-HDMI-GPIO-like-what-landed.patch |    6 +-
 ...chronize-validation-code-for-v2-submissio.patch |    6 +-
 ...use-mmc_debug-if-CONFIG_MMC_BCM2835-is-no.patch |    5 +-
 ...k-timeout-fix-modprobe-baudrate-parameter.patch |    5 +-
 ...-bcm270x_dt-Add-dwc2-and-dwc-otg-overlays.patch |    4 +-
 ...Add-the-sdtweak-overlay-for-tuning-sdhost.patch |    5 +-
 ...-Don-t-override-bus-width-capabilities-fr.patch |    6 +-
 ...0125-SDIO-overlay-add-bus_width-parameter.patch |    4 +-
 ...end-allowed-range-of-channels-and-sampler.patch |    5 +-
 ...cm2835-restrict-channels-rate-to-8-960000.patch |    4 +-
 .../0128-rpi-update-vc_vchi_audioserv_defs.h.patch |    4 +-
 .../0129-bcm2835-implement-channel-map-API.patch   |    4 +-
 ...835-access-controls-under-the-audio-mutex.patch |    4 +-
 ...ays-use-2-4-8-channels-for-multichannel-l.patch |    5 +-
 ...y-allow-stereo-if-analogue-jack-is-select.patch |    5 +-
 .../0133-bcm2835-interpolate-audio-delay.patch     |    4 +-
 ...ost-Add-workaround-for-odd-behaviour-on-s.patch |    6 +-
 ...35-bcm2835-sdhost-Add-debug_flags-dtparam.patch |    4 +-
 ...Add-sdio_overclock-parameter-to-sdio-over.patch |    5 +-
 ...add-support-for-the-DT-property-wakeup-so.patch |    5 +-
 .../0138-dt-overlay-add-wittypi-overlay.dts.patch  |    4 +-
 ...cm2708-Don-t-change-module-baudrate-param.patch |    5 +-
 ...-24dB-digital-gain-to-be-applied-when-usi.patch |    6 +-
 ...2x-Digital-gain-to-0dB-by-default-with-Hi.patch |    6 +-
 ...M270X_DT-Adjust-overlay-README-formatting.patch |    4 +-
 .../0143-bcm2835-sdhost-Major-revision.patch       |    4 +-
 ...270X_DT-Add-dtparams-for-the-SD-interface.patch |    4 +-
 ...m-xfer-length-when-buffer-larger-than-all.patch |    6 +-
 ...ost-Restore-ATOMIC-flag-to-PIO-sg-mapping.patch |    4 +-
 ...c95xx-driver-to-check-for-a-valid-MAC-add.patch |    7 +-
 ...dcw_otg-Make-trimming-messages-less-noisy.patch |    4 +-
 ...BCM270X_DT-at86rf233-overlay-drop-to-3MHz.patch |    4 +-
 ...m2835-sdhost-Downgrade-log-message-status.patch |    4 +-
 .../0151-config-Enable-HCI-over-UARTs.patch        |    4 +-
 ...52-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch |    4 +-
 ..._pl011-Don-t-use-DT-aliases-for-numbering.patch |    4 +-
 ...-Add-bindings-for-the-auxiliary-periphera.patch |    6 +-
 ...-Add-a-driver-for-the-auxiliary-periphera.patch |    6 +-
 .../0156-Aux-SPI-1-2-implementation.patch          |    4 +-
 ...d-missing-.owner-fields-in-sound-card-dri.patch |    5 +-
 ...d-option-to-disable-the-crimes-against-tr.patch |    6 +-
 ...0159-bcm2835-virtgpio-Virtual-GPIO-driver.patch |    4 +-
 .../0160-BCM270X_DT-Add-Pi3-support.patch          |    4 +-
 ...161-DT-Add-overlays-to-configure-I2C-pins.patch |    4 +-
 ...era-fix-a-bug-in-computation-of-frame-tim.patch |    5 +-
 ...163-BCM270X_DT-Add-pi3-disable-bt-overlay.patch |    4 +-
 ...BCM270X_DT-Add-pi3-miniuart-bt-DT-overlay.patch |    4 +-
 ...-Pi3-DT-Add-dtparams-for-the-SD-interface.patch |    4 +-
 .../0166-vchiq_arm-Tweak-the-logging-output.patch  |    4 +-
 ...bcm2835-sdhost-Only-claim-one-DMA-channel.patch |    4 +-
 ...68-bcm2835-mmc-Only-claim-one-DMA-channel.patch |    4 +-
 .../0169-config-rebuild-with-savedefconfig.patch   |    4 +-
 .../0170-config-Add-module-for-mcp3422-ADC.patch   |    4 +-
 ...-Pi3-DT-Add-pull-ups-on-the-UART-RX-lines.patch |    4 +-
 ...X_DT-rpi-display-overlay-add-swapxy-param.patch |    4 +-
 .../0174-Remove-I2S-config-from-bt_pins.patch      |    4 +-
 ...75-Revert-scripts-dtc-Add-overlay-support.patch |    4 +-
 ...ipts-dtc-Update-to-upstream-version-1.4.1.patch |    4 +-
 ...0177-configfs-implement-binary-attributes.patch |    4 +-
 .../0178-OF-DT-Overlay-configfs-interface.patch    |    4 +-
 ...elease_resource-against-resources-without.patch |    5 +-
 ...0X_DT-Add-a-.dtbo-target-use-for-overlays.patch |    4 +-
 .../0181-scripts-knlinfo-Decode-DDTK-atom.patch    |    4 +-
 ...mic-Device-Tree-for-bcmrpi_defconfig-and-.patch |    4 +-
 ...dd-CONFIG_OF_CONFIGFS-to-bcmrpi_defconfig.patch |    4 +-
 ...ild-dtbs_install-installs-.dtbo-files-too.patch |    4 +-
 ...cm2835-sdhost-Workaround-for-slow-sectors.patch |    4 +-
 ...186-BCM270X_DT-Add-labels-to-spidev-nodes.patch |    4 +-
 ...-BCM270X_DT-Use-spidev-labels-in-overlays.patch |    4 +-
 ...DT-Build-and-document-the-wittypi-overlay.patch |    4 +-
 ...-Fix-UMR-causing-corrupt-dtbo-overlay-fil.patch |    5 +-
 .../0190-BCM270X_DT-Add-dtparam-for-uart1.patch    |    4 +-
 ...-overlay-Use-label-so-overrides-can-apply.patch |    4 +-
 ...-a-debugfs-node-for-tracking-execution-st.patch |    5 +-
 ...lude-vc4_drm.h-in-uapi-in-downstream-buil.patch |    5 +-
 ...-Validate-that-WAIT_BO-padding-is-cleared.patch |    4 +-
 ...-the-clear-color-for-the-first-tile-rende.patch |    5 +-
 ...urn-an-ERR_PTR-from-BO-creation-instead-o.patch |    5 +-
 ...ix-ERESTARTSYS-error-return-from-BO-waits.patch |    4 +-
 ...Drop-error-message-on-seqno-wait-timeouts.patch |    4 +-
 ...270X_DT-Add-1-bit-SDIO-using-minimal-pins.patch |    4 +-
 ...rlay-and-enable-support-for-QCA7000-board.patch |    4 +-
 ...l-Take-care-starting-a-hung-up-tty-s-port.patch |    4 +-
 ...iuart-bt-overlay-Correct-and-clarify-info.patch |    4 +-
 ...rlays-Params-must-have-in-overlay-targets.patch |    4 +-
 ...5-BCM270X_DT-Switch-Compute-Module-to-MMC.patch |    4 +-
 ...-t-free-qh-align-buffers-in-atomic-contex.patch |    5 +-
 ...ble-the-hack-for-Split-Interrupt-transact.patch |    6 +-
 ..._DT-Remove-explicit-claiming-of-UART-pins.patch |    4 +-
 ...irc_rpi-Lower-IR-reception-error-to-debug.patch |    4 +-
 ...rm-Access-the-dequeue_pending-flag-locked.patch |    4 +-
 .../0211-BCM270X_DT-Add-pi3-act-led-overlay.patch  |    4 +-
 ...vchiq_arm-Service-callbacks-must-not-fail.patch |    4 +-
 ...d-configs-and-overlay-for-PCA9548-I2C-mux.patch |    4 +-
 ...-BCM270X_DT-Add-DS1339-to-i2c-rtc-overlay.patch |    4 +-
 ...from_user-CPU_SW_DOMAIN_PAN-compatibility.patch |    4 +-
 ...m2835-sdhost-Adjust-to-core-clock-changes.patch |    4 +-
 ...70X_DT-Document-hazards-of-sdhost-overlay.patch |    4 +-
 ...8-cpufreq-Temporarily-ignore-io_is_busy-1.patch |    4 +-
 ...t-cpufreq-Temporarily-ignore-io_is_busy-1.patch |    4 +-
 ...20-net-sched-add-skb_at_tc_ingress-helper.patch |    4 +-
 ..._postpush_rcsum-and-fix-dev_forward_skb-o.patch |   97 -
 ...35-sdhost-Precalc-divisors-and-overclocks.patch |    4 +-
 ...835-sdhost-Precalc-divisors-and-overclock.patch |    5 +-
 ...m2835-sdhost-Adjust-to-core-clock-changes.patch |    4 +-
 ...sdhost-Firmware-manages-the-clock-divisor.patch |    4 +-
 ...rt-cpufreq-Temporarily-ignore-io_is_busy-.patch |    5 +-
 .../0227-config-Enabled-IPV6_SUBTREES.patch        |    4 +-
 ...0228-add-smsc95xx-packetsize-module_param.patch |    4 +-
 ...power-off-rather-than-busy-spinning-when-.patch |    6 +-
 ...835-dma-Fix-dreq-not-set-for-slave-transf.patch |    5 +-
 ...Add-CONFIG_PWM_PCA9685-for-NXP-PCA9685-dr.patch |    6 +-
 ...70X_DT-Don-t-generate-linux-phandle-props.patch |    4 +-
 .../0233-V4L2-driver-updates-1393.patch            |    4 +-
 ...35-sdhost-Reset-the-clock-in-task-context.patch |    4 +-
 ...le-CONFIG_IPV6_ROUTER_PREF-for-networks-w.patch |    6 +-
 .../0236-Enable-hid-betopff-module.patch           |    4 +-
 ...-IPV6-a-module-and-regenerate-with-defcon.patch |    5 +-
 .../0238-BCM270X_DT-Add-dpi24-overlay.patch        |    4 +-
 ...dIO-DAC-ASoC-driver-to-set-card-dai-confi.patch |    6 +-
 ...-for-the-Digital-Dreamtime-Akkordion-musi.patch |    5 +-
 ...41-Add-Support-for-BoomBerry-Audio-boards.patch |    4 +-
 ...42-Add-support-for-mcp7940x-family-of-RTC.patch |    4 +-
 ...config-Fix-typo-on-BoomBerry-configuratio.patch |    6 +-
 ...-boomberry-dac-Adjust-for-ALSA-API-change.patch |    4 +-
 ...-unused-sm_cache_map_vector-definition-14.patch |    5 +-
 ...s-mkknlimg-Append-a-trailer-for-all-input.patch |    4 +-
 ...hermal-Don-t-report-unsupported-trip-type.patch |    4 +-
 ...s-dtc-Only-emit-local-fixups-for-overlays.patch |    4 +-
 ...not-require-substream-for-accessing-chmap.patch |    5 +-
 ...-fallback-channel-layouts-if-channel-map-.patch |    6 +-
 ...0251-bcm2835-log-which-channel-map-is-set.patch |    4 +-
 ...-add-a-round-up-ability-to-the-clock-divi.patch |    5 +-
 ...cm2835-Support-for-clock-parent-selection.patch |    4 +-
 .../0254-clk-bcm2835-Add-PWM-clock-support.patch   |    4 +-
 ...-added-missing-clock-register-definitions.patch |    5 +-
 ...-correctly-enable-fractional-clock-suppor.patch |    5 +-
 ...-clk-bcm2835-clean-up-coding-style-issues.patch |    4 +-
 ...35-expose-raw-clock-registers-via-debugfs.patch |    4 +-
 ...-remove-use-of-BCM2835_CLOCK_COUNT-in-dri.patch |    5 +-
 ...-reorganize-bcm2835_clock_array-assignmen.patch |    5 +-
 ...lk-bcm2835-enable-management-of-PCM-clock.patch |    4 +-
 ...lk-bcm2835-add-missing-PLL-clock-dividers.patch |    4 +-
 ...lk-bcm2835-add-missing-osc-and-per-clocks.patch |    4 +-
 ...-Define-two-new-packets-from-the-latest-f.patch |    4 +-
 ...5-ARM-bcm2835-add-rpi-power-domain-driver.patch |    4 +-
 ...5-clarify-RASPBERRYPI_FIRMWARE-dependency.patch |    4 +-
 ...m2708-Enable-building-power-domain-driver.patch |    4 +-
 ...8-Add-RASPBERRYPI_POWER-to-the-defconfigs.patch |    4 +-
 ...-the-power-domain-driver-to-the-device-tr.patch |    5 +-
 ...erence-the-HDMI-power-domain-for-the-HDMI.patch |    5 +-
 ...y_to_user-returns-the-number-of-bytes-rem.patch |    5 +-
 ...ocate-enough-memory-in-vc4_save_hang_stat.patch |    5 +-
 ...73-drm-vc4-fix-warning-in-validate-printf.patch |    4 +-
 ...prove-comments-on-vc4_plane_state-members.patch |    4 +-
 ...dd-missing-__iomem-annotation-to-hw_dlist.patch |    4 +-
 ...e-the-plane-clipping-scaling-setup-to-a-s.patch |    6 +-
 ...-a-proper-short-circut-path-for-legacy-cu.patch |    6 +-
 ...e-the-CRTCs-cooperate-on-allocating-displ.patch |    6 +-
 ...-vc4-Add-more-display-planes-to-each-CRTC.patch |    4 +-
 ...-which-value-is-being-used-for-source-ima.patch |    5 +-
 ...Add-support-for-scaling-of-display-planes.patch |    4 +-
 .../0282-drm-vc4-Add-support-for-YUV-planes.patch  |    4 +-
 ...4-Fix-spurious-GPU-resets-due-to-BO-reuse.patch |    4 +-
 ...-a-framebuffer-reference-leak-on-async-fl.patch |    6 +-
 ...Bring-HDMI-up-from-power-off-if-necessary.patch |    4 +-
 ...vc4-Add-another-reg-to-HDMI-debug-dumping.patch |    4 +-
 ...-Fix-the-name-of-the-VSYNCD_EVEN-register.patch |    4 +-
 ...x-setting-of-vertical-timings-in-the-CRTC.patch |    4 +-
 ...c4-Initialize-scaler-DISPBKGND-on-modeset.patch |    4 +-
 ...rove-throughput-by-pipelining-binning-and.patch |    4 +-
 ...-gpiolib-know-that-we-re-OK-with-sleeping.patch |    6 +-
 ...pect-GPIO_ACTIVE_LOW-on-HDMI-HPD-if-set-i.patch |    6 +-
 ...4-Return-EFAULT-on-copy_from_user-failure.patch |    4 +-
 ...ognize-a-more-specific-compatible-string-.patch |    5 +-
 ...08-Move-the-CMA-range-down-for-kernel-4.4.patch |    4 +-
 ...-fix-check-of-error-code-returned-by-devm.patch |    4 +-
 ...rm-Add-completion-records-under-the-mutex.patch |    4 +-
 .../0298-config-Add-DRM_UDL-module.patch           |    4 +-
 ...-bcm2835-i2s-Reduce-the-TX-DREQ-threshold.patch |    4 +-
 ...-V4L2-Request-maximum-resolution-from-GPU.patch |    4 +-
 ...0301-ARM-bcm2835-add-i2s-gpio28-31-for-cm.patch |    4 +-
 ...c4-Add-DT-parameters-to-control-CMA-usage.patch |    4 +-
 ...SH-BCM270X_DT-Add-make-rule-for-sdio-1bit.patch |    4 +-
 .../0304-dts-add-overlay-for-pitft22.patch         |    4 +-
 ...0X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch |    4 +-
 ...DT-Fix-codec-use-in-hifiberry-dac-overlay.patch |    4 +-
 ...vert-bcm2835-log-which-channel-map-is-set.patch |    4 +-
 ...835-add-fallback-channel-layouts-if-chann.patch |    6 +-
 ...835-do-not-require-substream-for-accessin.patch |    6 +-
 ...12-Revert-bcm2835-interpolate-audio-delay.patch |    4 +-
 ...835-only-allow-stereo-if-analogue-jack-is.patch |    6 +-
 ...835-always-use-2-4-8-channels-for-multich.patch |    6 +-
 ...-Revert-bcm2835-implement-channel-map-API.patch |    4 +-
 ...835-extend-allowed-range-of-channels-and-.patch |    4 +-
 ...bcm2835-Return-pins-to-inputs-when-freed.patch} |    4 +-
 ...BCM270X_DT-i2c0-bcm2708-pin-group-params.patch} |    4 +-
 ...config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch} |    4 +-
 ...vert-rpi-update-vc_vchi_audioserv_defs.h.patch} |    4 +-
 ...config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch} |    4 +-
 ...-adc-Add-basic-machine-driver-for-adau19.patch} |    6 +-
 ...24dB-digital-gain-to-be-applied-when-usi.patch} |    6 +-
 ...config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch} |    4 +-
 ...ove-vc4-node-contents-to-bcm2708_common..patch} |    5 +-
 ...et-correct-HDMI-HPD-GPIO-levels-for-vari.patch} |    6 +-
 ...7-Revert-drm-vc4-Force-HDMI-to-connected.patch} |    4 +-
 ...clude-DRM_PANEL_SIMPLE-in-the-defconfigs.patch} |    4 +-
 ...-encoder-and-connector-type-enum-for-DPI.patch} |    4 +-
 ...330-dt-bindings-Add-binding-docs-for-V3D.patch} |    4 +-
 ...ver.patch => 0331-drm-vc4-Add-DPI-driver.patch} |    4 +-
 ...4-Fix-NULL-deref-in-HDMI-init-error-path.patch} |    4 +-
 ...-out-the-simplefb-framebuffer-before-we-.patch} |    6 +-
 ...=> 0334-drm-vc4-Rename-async-to-nonblock.patch} |    4 +-
 ...0335-drm-vc4-Add-support-for-gamma-ramps.patch} |    4 +-
 ...-drm-vc4-Add-missing-render-node-support.patch} |    4 +-
 ...simple-Add-the-7-DPI-panel-from-Adafruit.patch} |    4 +-
 ...dd-the-disabled-by-default-DPI-device-no.patch} |    5 +-
 ...get_vblank_counter-with-proper-no-op-for.patch} |    6 +-
 ...drm_vblank_put-get-imbalance-in-page-fli.patch} |    5 +-
 ..._DT-Add-umbrella-I2C-Mux-overlay-i2c-mux.patch} |    4 +-
 ..._DT-Include-address-override-for-pca9542.patch} |    4 +-
 ...DT-Fix-the-tinylcd35-overlay-RTC-support.patch} |    4 +-
 ...lk-Allow-clocks-to-be-marked-as-CRITICAL.patch} |    4 +-
 ...k-bcm2835-Mark-the-VPU-clock-as-critical.patch} |    4 +-
 ...Mark-GPIO-clocks-enabled-at-boot-as-crit.patch} |    5 +-
 ...Skip-PLLC-clocks-when-deciding-on-a-new-.patch} |    6 +-
 ...dd-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch} |    4 +-
 ...ector.net-Pi-soundcard-with-low-jitter-a.patch} |    6 +-
 ...y-QUIRK_BROKEN_ERASE-to-other-capacities.patch} |    4 +-
 ...-card_quirks-module-parameter-log-quirks.patch} |    4 +-
 ...nsure-that-any-pending-alarm-is-cleared-.patch} |    6 +-
 ...t-Revert-drm-vc4-Force-HDMI-to-connected.patch} |    4 +-
 ...tch => 0355-config-Add-NF_MATCH_RPFILTER.patch} |    4 +-
 ...y-for-Microchip-MCP23017-I2C-gpio-expand.patch} |    5 +-
 ...ra-Fix-max-min-error-when-looping-over-c.patch} |    4 +-
 ...erry-name-to-JustBoom-in-all-locations-d.patch} |    6 +-
 ...-to-force-HiFiBerry-DAC-Pro-into-slave-m.patch} |    5 +-
 ...69-simple-add-sound-dai-cells-to-I2S-def.patch} |    4 +-
 ...4L2-Increase-minimum-resolution-to-32x32.patch} |    4 +-
 ...onfig-Add-support-for-Logitech-Rumblepad.patch} |    4 +-
 ...or-RRA-DigiDAC1-soundcard-using-WM8741-W.patch} |    5 +-
 ...V4L2-Correct-handling-for-BGR24-vs-RGB24.patch} |    4 +-
 ..._DT-Add-mcp23017-to-the-overlay-Makefile.patch} |    4 +-
 ..._DT-Sort-entries-to-placate-check-script.patch} |    4 +-
 ...lay-gpio_pin-shouldn-t-change-pull-setti.patch} |    5 +-
 ...ore-define-a-default-timeout-for-drivers.patch} |    4 +-
 ...edia-rc-gpio-ir-recv-add-timeout-on-idle.patch} |    4 +-
 ...ve-a-now-duplicated-definition-IR_DEFAUL.patch} |    4 +-
 ...wakeup-source-option-for-the-i2c-rtc-Dev.patch} |    6 +-
 ...h => 0382-BCM270X_DT-Fix-rpi-dac-overlay.patch} |    4 +-
 ...T-Make-i2c-gpio-usable-by-other-overlays.patch} |    4 +-
 ...verlay.patch => 0387-Add-ads1015-overlay.patch} |    4 +-
 ...Fixed-MCP23017-section-in-overlay-README.patch} |    4 +-
 ...t-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch} |    4 +-
 ...35-dma-Limit-cyclic-transfers-on-lite-ch.patch} |    6 +-
 ...gine-bcm2835-Load-driver-early-and-suppo.patch} |    6 +-
 ...-dmaengine-bcm2835-Add-slave-dma-support.patch} |    4 +-
 ...m2835-remove-unnecessary-masking-of-dma-.patch} |    4 +-
 ...m2835-add-additional-defines-for-DMA-reg.patch} |    5 +-
 ...m2835-move-cyclic-member-from-bcm2835_ch.patch} |    6 +-
 ...m2835-move-controlblock-chain-generation.patch} |    6 +-
 ...m2835-limit-max-length-based-on-channel-.patch} |    5 +-
 ...m2835-add-slave_sg-support-to-bcm2835-dm.patch} |    5 +-
 ...m2835-add-dma_memcopy-support-to-bcm2835.patch} |    5 +-
 ...gine-bcm2835-use-platform_get_irq_byname.patch} |    4 +-
 ...m2835-Load-driver-early-and-support-lega.patch} |    5 +-
 ...changed-bcrm-dma-channel-mask-to-mask-ou.patch} |    6 +-
 ...add-interrupt-names-and-apply-correct-ma.patch} |    5 +-
 ...make-dma-channel-0-available-for-kms-set.patch} |    5 +-
 ...-bcm2835-Fix-cyclic-DMA-period-splitting.patch} |    4 +-
 ...m2835-Avoid-splitting-periods-into-very-.patch} |    6 +-
 ...m2835-Fix-polling-for-completion-of-DMA-.patch} |    6 +-
 ...BCM270X_DT-Add-spi-rtc-overlay-on-SPI0.0.patch} |    4 +-
 ...410-rtc-Add-SPI-alias-for-pcf2123-driver.patch} |    4 +-
 ...t-for-headphones-microphone-and-bclk_rat.patch} |    6 +-
 ...12-IQaudIO-auto-mute-for-AMP-and-DigiAMP.patch} |    4 +-
 ...-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch} |    4 +-
 ...upport-for-xpad-driver-fixes-flashing-le.patch} |    6 +-
 ...-information-for-getting-pi3-miniuart-bt.patch} |    6 +-
 ...35-sdhost-Improvements-to-error-recovery.patch} |    4 +-
 ...2835-Fix-return-type-of-bcm2835_pmx_free.patch} |    4 +-
 ...18-Add-IQAudIO-Digi-WM8804-board-support.patch} |    4 +-
 ...lay-for-NXP-SC16IS752-Dual-UART-with-SPI.patch} |    4 +-
 ...0-spi-bcm2835-Disable-forced-software-CS.patch} |    4 +-
 ...0X_DT-Overlay-to-re-enable-HW-CS-on-SPI0.patch} |    4 +-
 ...-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch} |    4 +-
 .../0423-ASoc-wm8731-add-32bit-mode.patch          |   39 +
 ..._DT-Declare-the-audio-PWM-pins-explicitly.patch |  122 ++
 ...425-BCM270X_DT-Restore-lost-closing-brace.patch |   20 +
 ...Add-driver-for-mcp23017-I2C-GPIO-expander.patch |   56 +
 ..._arm-Avoid-use-of-mutex-in-add_completion.patch |  192 ++
 ...-bcm2708_fb-Default-framebuffer-to-32-bit.patch |   21 +
 .../0429-fix-auto-sense-in-lirc_rpi-driver.patch   |   45 +
 .../0430-enable-gembird-joypad-support.patch       |   30 +
 .../0431-Added-HiFiBerry-Digi-Pro-driver.patch     |  187 ++
 ...-Mark-the-CM-SDRAM-clock-s-parent-as-crit.patch |   73 +
 ...-Don-t-rate-change-PLLs-on-behalf-of-divi.patch |   27 +
 ...-Do-appropriate-name-lookups-for-DSI1-s-p.patch |  125 ++
 ...2835-Add-an-enum-for-the-DSI1-pixel-clock.patch |   87 +
 ...helper-Remove-implicit-call-to-disable_un.patch |   79 +
 ...d-assert_falling_edge-to-pps-gpio-overlay.patch |   31 +
 .../0438-drm-mipi-dsi-Unregister-bus-at-exit.patch |   30 +
 ...i-Allow-to-build-drm-mipi-dsi-as-a-module.patch |   32 +
 ...m-vc4-Fix-flipped-HVS-channels-for-DSI0-1.patch |   30 +
 ...-support-for-feeding-DSI-encoders-from-th.patch |   96 +
 ...rt-switching-to-using-debugfs_reg32-helpe.patch |  156 ++
 .../patches-4.4/0443-drm-vc4-Add-DSI1-driver.patch | 1914 ++++++++++++++++++++
 ...dd-support-for-the-Raspberry-Pi-7-Touchsc.patch |  390 ++++
 ...M270X-Add-the-DSI-panel-to-the-defconfig.patch} |   20 +-
 ...-the-DSI-and-DSI-panel-nodes-to-the-VC4-o.patch |   84 +
 ...f_device_uevent_modalias-for-DRM_MIPI_DSI.patch |   21 +
 ...dalias-uevents-for-the-DSI-devices-we-cre.patch |   48 +
 ..._hdmi-add-missing-of_node_put-after-calli.patch |   46 +
 .../0450-drm-vc4-Use-for_each_plane_in_state.patch |   42 +
 ...c4-Fix-ioctl-permissions-for-render-nodes.patch |   39 +
 ...e-pageflip-completion-handling-more-robus.patch |  126 ++
 ...an-up-error-exit-path-on-failed-dpi_conne.patch |   53 +
 ...nable-XBGR8888-and-ABGR8888-pixel-formats.patch |   34 +
 ...d-the-HVS-before-we-bind-the-individual-C.patch |   28 +
 ...vc4-Implement-precise-vblank-timestamping.patch |  358 ++++
 ...drm-vc4-remove-redundant-ret-status-check.patch |   35 +
 ...c4-add-extern-C-guard-for-the-UAPI-header.patch |   34 +
 ...-vc4-Fix-definition-of-QPU_R_MS_REV_FLAGS.patch |   25 +
 ...0-drm-vc4-Fix-a-the-the-typo-in-a-comment.patch |   22 +
 ...urn-EBUSY-if-there-s-already-a-pending-fl.patch |   44 +
 .../0462-config-Enable-SENSORS_LM75.patch          |   30 +
 .../0463-config-Enable-SERIAL_SC16IS7XX.patch      |   30 +
 ...-Don-t-allow-responses-from-VC-to-be-inte.patch |   63 +
 ...5-BCM270X-Connect-V3D-to-its-power-domain.patch |   23 +
 .../0466-drm-vc4-Enable-runtime-PM.patch           |  205 +++
 ...p-firmware-node-getting-now-that-we-use-t.patch |   54 +
 ...-runtime-PM-to-power-cycle-the-device-whe.patch |  102 ++
 ...rop-debug-printf-from-the-Raspberry-Pi-to.patch |   21 +
 ...lace-HDMI-force-connected-with-an-EDID-pr.patch |   42 +
 ...ethernet-enc28j60-add-device-tree-support.patch |  143 ++
 ...j60-Fix-race-condition-in-enc28j60-driver.patch |   64 +
 .../patches-4.4/0473-Add-cm3-dts-file.patch        |  200 ++
 ...70X-Drop-HPD-setting-from-the-common-dtsi.patch |   21 +
 ...-Drop-incorrect-HDMI-HPD-line-from-the-DT.patch |   26 +
 ...-a-getparam-ioctl-for-getting-the-V3D-ide.patch |  124 ++
 ...e-validation-s-current-max-ip-into-the-va.patch |  176 ++
 ...-a-bitmap-of-branch-targets-during-shader.patch |  200 ++
 ...-support-for-branching-in-shader-validati.patch |  475 +++++
 ...-a-getparam-to-signal-support-for-branche.patch |   38 +
 ...-t-force-new-binner-overflow-allocation-p.patch |   28 +
 ...-drm_free_large-on-handles-to-match-its-a.patch |   27 +
 ...Fix-oops-when-userspace-hands-in-a-bad-BO.patch |   26 +
 ...-overflow-mem-unreferencing-when-the-binn.patch |   57 +
 .../0485-config-Enable-SERIAL_SC16IS7XX_SPI.patch  |   33 +
 ...-Microchip-MCP23S08-17-SPI-gpio-expanders.patch |  791 ++++++++
 .../0487-BCM270X_DT-Add-audio_pins-to-CM-dtb.patch |   24 +
 ...-BCM270X_DT-Don-t-enable-UART0-in-CM3-dtb.patch |   37 +
 .../0489-overlays-Add-audremap-overlay.patch       |   56 +
 ...s-Add-swap_lr-and-enable_jack-to-audremap.patch |   50 +
 ...Clarify-gpio-poweroff-semantics-in-README.patch |   24 +
 ...erlays-added-sc16is750-UART-over-I2C-1617.patch |   81 +
 ...ix-l2cap_sock_setsockopt-with-optname-BT_.patch |   33 +
 .../0494-config-Add-CONFIG_IPVLAN-module.patch     |   30 +
 .../0495-config-Add-CONFIG_VXLAN-module.patch      |   30 +
 ...c_bcm2708-Write-to-FIFO-correctly-v2-1574.patch |   48 +
 ...-sdhost-Don-t-exit-cmd-wait-loop-on-error.patch |   63 +
 ...X_DT-Use-bcm2835-sdhost-on-Compute-Module.patch |   30 +
 ...e-that-parameters-are-properly-checked-wi.patch |   27 +
 ...0500-config-Enabled-SENSORS_INA2XX-module.patch |   30 +
 481 files changed, 9266 insertions(+), 1049 deletions(-)

diff --git a/target/linux/brcm2708/image/Makefile b/target/linux/brcm2708/image/Makefile
index 81a7647..85c72e2 100644
--- a/target/linux/brcm2708/image/Makefile
+++ b/target/linux/brcm2708/image/Makefile
@@ -68,8 +68,8 @@ ifeq ($(SUBTARGET),bcm2709)
 endif
 
 define Device/rpi-3
-  DEVICE_TITLE := Raspberry Pi 3 B
-  DEVICE_DTS := bcm2710-rpi-3-b
+  DEVICE_TITLE := Raspberry Pi 3 B/CM
+  DEVICE_DTS := bcm2710-rpi-3-b bcm2710-rpi-cm3
   DEVICE_PACKAGES := brcmfmac43430-firmware-sdio kmod-brcmfmac wpad-mini
 endef
 ifeq ($(SUBTARGET),bcm2710)
diff --git a/target/linux/brcm2708/image/config.txt b/target/linux/brcm2708/image/config.txt
index 23adf27..b0fbd7a 100644
--- a/target/linux/brcm2708/image/config.txt
+++ b/target/linux/brcm2708/image/config.txt
@@ -947,6 +947,7 @@ dtparam=spi=on
 #dtoverlay=hifiberry-dac
 #dtoverlay=hifiberry-dacplus
 #dtoverlay=hifiberry-digi
+#dtoverlay=hifiberry-digi-pro
 #dtoverlay=iqaudio-dac
 #dtoverlay=iqaudio-dacplus
 #dtoverlay=iqaudio-digi-wm8804-audio
diff --git a/target/linux/brcm2708/modules.mk b/target/linux/brcm2708/modules.mk
index 70ef662..4cfdd6d 100644
--- a/target/linux/brcm2708/modules.mk
+++ b/target/linux/brcm2708/modules.mk
@@ -183,7 +183,7 @@ endef
 $(eval $(call KernelPackage,sound-soc-hifiberry-dacplus))
 
 define KernelPackage/sound-soc-hifiberry-digi
-  TITLE:=Support for HifiBerry Digi
+  TITLE:=Support for HifiBerry Digi / Digi+ / Digi+ Pro
   KCONFIG:= \
 	CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI \
 	CONFIG_SND_SOC_WM8804
diff --git a/target/linux/brcm2708/patches-4.4/0001-smsx95xx-fix-crimes-against-truesize.patch b/target/linux/brcm2708/patches-4.4/0001-smsx95xx-fix-crimes-against-truesize.patch
index 9b384a2..5e6a82c 100644
--- a/target/linux/brcm2708/patches-4.4/0001-smsx95xx-fix-crimes-against-truesize.patch
+++ b/target/linux/brcm2708/patches-4.4/0001-smsx95xx-fix-crimes-against-truesize.patch
@@ -1,7 +1,7 @@
-From 047957666a5478b924a129892c54ab9c41816a43 Mon Sep 17 00:00:00 2001
+From 4f81faf37ec66edd44da24800c5a5ae87edae808 Mon Sep 17 00:00:00 2001
 From: Steve Glendinning <steve.glendinning at smsc.com>
 Date: Thu, 19 Feb 2015 18:47:12 +0000
-Subject: [PATCH 001/423] smsx95xx: fix crimes against truesize
+Subject: [PATCH] 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.
 
diff --git a/target/linux/brcm2708/patches-4.4/0002-smsc95xx-Disable-turbo-mode-by-default.patch b/target/linux/brcm2708/patches-4.4/0002-smsc95xx-Disable-turbo-mode-by-default.patch
index 9fc6c91..1a79fd0 100644
--- a/target/linux/brcm2708/patches-4.4/0002-smsc95xx-Disable-turbo-mode-by-default.patch
+++ b/target/linux/brcm2708/patches-4.4/0002-smsc95xx-Disable-turbo-mode-by-default.patch
@@ -1,7 +1,7 @@
-From 4b0c62e74a6e2e01e7d37fb6be0865df77c0ad03 Mon Sep 17 00:00:00 2001
+From 588a0950ef065eb5a0b36974394245ae2c9fc75b Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 17 Apr 2015 16:58:45 +0100
-Subject: [PATCH 002/423] smsc95xx: Disable turbo mode by default
+Subject: [PATCH] smsc95xx: Disable turbo mode by default
 
 ---
  drivers/net/usb/smsc95xx.c | 2 +-
diff --git a/target/linux/brcm2708/patches-4.4/0003-vmstat-Workaround-for-issue-where-dirty-page-count-g.patch b/target/linux/brcm2708/patches-4.4/0003-vmstat-Workaround-for-issue-where-dirty-page-count-g.patch
index 74ada16..e93fc31 100644
--- a/target/linux/brcm2708/patches-4.4/0003-vmstat-Workaround-for-issue-where-dirty-page-count-g.patch
+++ b/target/linux/brcm2708/patches-4.4/0003-vmstat-Workaround-for-issue-where-dirty-page-count-g.patch
@@ -1,8 +1,8 @@
-From d69c65cb5ad6738d5bec2531df75824c44459800 Mon Sep 17 00:00:00 2001
+From 8ca7ff8021f8d9bcbac83bd4584da9bbc854b829 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 18 Jun 2014 13:42:01 +0100
-Subject: [PATCH 003/423] vmstat: Workaround for issue where dirty page count
- goes negative
+Subject: [PATCH] vmstat: Workaround for issue where dirty page count goes
+ negative
 
 See:
 https://github.com/raspberrypi/linux/issues/617
diff --git a/target/linux/brcm2708/patches-4.4/0004-BCM2835_DT-Fix-I2S-register-map.patch b/target/linux/brcm2708/patches-4.4/0004-BCM2835_DT-Fix-I2S-register-map.patch
index 8585c23..bd4e1f7 100644
--- a/target/linux/brcm2708/patches-4.4/0004-BCM2835_DT-Fix-I2S-register-map.patch
+++ b/target/linux/brcm2708/patches-4.4/0004-BCM2835_DT-Fix-I2S-register-map.patch
@@ -1,7 +1,7 @@
-From 7d5a47372854564f8071edeaf217360d2f53cde0 Mon Sep 17 00:00:00 2001
+From 7aa3931981956896b353b58c068a941f522182bf Mon Sep 17 00:00:00 2001
 From: Robert Tiemann <rtie at gmx.de>
 Date: Mon, 20 Jul 2015 11:01:25 +0200
-Subject: [PATCH 004/423] BCM2835_DT: Fix I2S register map
+Subject: [PATCH] BCM2835_DT: Fix I2S register map
 
 ---
  Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt   | 4 ++--
diff --git a/target/linux/brcm2708/patches-4.4/0005-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch b/target/linux/brcm2708/patches-4.4/0005-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch
index bcc521e..3977b8d 100644
--- a/target/linux/brcm2708/patches-4.4/0005-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch
+++ b/target/linux/brcm2708/patches-4.4/0005-irq-bcm2836-Prevent-spurious-interrupts-and-trap-the.patch
@@ -1,8 +1,7 @@
-From 8ec469e6ed6a5dd357c04322dfc4e2ddbfcc040b Mon Sep 17 00:00:00 2001
+From 71609ab22785edd13b385920b1b0c6de24adc901 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 4 Dec 2015 17:41:50 +0000
-Subject: [PATCH 005/423] irq-bcm2836: Prevent spurious interrupts, and trap
- them early
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0006-irqchip-bcm2835-Add-FIQ-support.patch b/target/linux/brcm2708/patches-4.4/0006-irqchip-bcm2835-Add-FIQ-support.patch
index 592773c..8ad59ed 100644
--- a/target/linux/brcm2708/patches-4.4/0006-irqchip-bcm2835-Add-FIQ-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0006-irqchip-bcm2835-Add-FIQ-support.patch
@@ -1,7 +1,7 @@
-From daf4407e90396b12f87cfd75651505dee67f1c0c Mon Sep 17 00:00:00 2001
+From e34586ca8f6b346d1ee37230f26c7ad44ca15786 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Fri, 12 Jun 2015 19:01:05 +0200
-Subject: [PATCH 006/423] irqchip: bcm2835: Add FIQ support
+Subject: [PATCH] irqchip: bcm2835: Add FIQ support
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0007-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch b/target/linux/brcm2708/patches-4.4/0007-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch
index 53cec54..b58728d 100644
--- a/target/linux/brcm2708/patches-4.4/0007-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0007-irqchip-irq-bcm2835-Add-2836-FIQ-support.patch
@@ -1,7 +1,7 @@
-From d6cad8a047430f5095e43e0d0e8f083e6ab411df Mon Sep 17 00:00:00 2001
+From e6387565d57b8d3912948dfb89d27705ef04bb89 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Fri, 23 Oct 2015 16:26:55 +0200
-Subject: [PATCH 007/423] irqchip: irq-bcm2835: Add 2836 FIQ support
+Subject: [PATCH] irqchip: irq-bcm2835: Add 2836 FIQ support
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0008-serial-8250-Don-t-crash-when-nr_uarts-is-0.patch b/target/linux/brcm2708/patches-4.4/0008-serial-8250-Don-t-crash-when-nr_uarts-is-0.patch
index 156798d..49ead89 100644
--- a/target/linux/brcm2708/patches-4.4/0008-serial-8250-Don-t-crash-when-nr_uarts-is-0.patch
+++ b/target/linux/brcm2708/patches-4.4/0008-serial-8250-Don-t-crash-when-nr_uarts-is-0.patch
@@ -1,7 +1,7 @@
-From cc33367763a6674463698cffab1a4a653df4ebd3 Mon Sep 17 00:00:00 2001
+From 5638cf1b2b8a418553790662c414b29ced8521dd Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 30 Jun 2015 14:12:42 +0100
-Subject: [PATCH 008/423] serial: 8250: Don't crash when nr_uarts is 0
+Subject: [PATCH] serial: 8250: Don't crash when nr_uarts is 0
 
 ---
  drivers/tty/serial/8250/8250_core.c | 2 ++
diff --git a/target/linux/brcm2708/patches-4.4/0009-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch b/target/linux/brcm2708/patches-4.4/0009-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch
index f0f47cb..c9c0936 100644
--- a/target/linux/brcm2708/patches-4.4/0009-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch
+++ b/target/linux/brcm2708/patches-4.4/0009-pinctrl-bcm2835-Set-base-to-0-give-expected-gpio-num.patch
@@ -1,8 +1,7 @@
-From f168c856794b7a771661df395f3fd16b8c8435b3 Mon Sep 17 00:00:00 2001
+From d64c6c6de97acb1f18415dfeeabd7e19294830a1 Mon Sep 17 00:00:00 2001
 From: notro <notro at tronnes.org>
 Date: Thu, 10 Jul 2014 13:59:47 +0200
-Subject: [PATCH 009/423] pinctrl-bcm2835: Set base to 0 give expected gpio
- numbering
+Subject: [PATCH] pinctrl-bcm2835: Set base to 0 give expected gpio numbering
 
 Signed-off-by: Noralf Tronnes <notro at tronnes.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0010-pinctrl-bcm2835-Fix-interrupt-handling-for-GPIOs-28-.patch b/target/linux/brcm2708/patches-4.4/0010-pinctrl-bcm2835-Fix-interrupt-handling-for-GPIOs-28-.patch
index 0b84e72..44e79fa 100644
--- a/target/linux/brcm2708/patches-4.4/0010-pinctrl-bcm2835-Fix-interrupt-handling-for-GPIOs-28-.patch
+++ b/target/linux/brcm2708/patches-4.4/0010-pinctrl-bcm2835-Fix-interrupt-handling-for-GPIOs-28-.patch
@@ -1,8 +1,8 @@
-From 62e5e9d21249eb4818c37bbcc07b334f97684f0b Mon Sep 17 00:00:00 2001
+From 1d1f6e6688a282e9b091fcb56719893c72e88a3a Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 24 Feb 2015 13:40:50 +0000
-Subject: [PATCH 010/423] pinctrl-bcm2835: Fix interrupt handling for GPIOs
- 28-31 and 46-53
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0011-pinctrl-bcm2835-Only-request-the-interrupts-listed-i.patch b/target/linux/brcm2708/patches-4.4/0011-pinctrl-bcm2835-Only-request-the-interrupts-listed-i.patch
index 20cbbcf..7ac6970 100644
--- a/target/linux/brcm2708/patches-4.4/0011-pinctrl-bcm2835-Only-request-the-interrupts-listed-i.patch
+++ b/target/linux/brcm2708/patches-4.4/0011-pinctrl-bcm2835-Only-request-the-interrupts-listed-i.patch
@@ -1,8 +1,8 @@
-From 33665d0e0cca6401025655121d66450716353f75 Mon Sep 17 00:00:00 2001
+From d52d6e440040cd5139f9f9ef0071ea00b103302e Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 26 Feb 2015 09:58:22 +0000
-Subject: [PATCH 011/423] pinctrl-bcm2835: Only request the interrupts listed
- in the DTB
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0012-spi-bcm2835-Support-pin-groups-other-than-7-11.patch b/target/linux/brcm2708/patches-4.4/0012-spi-bcm2835-Support-pin-groups-other-than-7-11.patch
index 5eb0f9c..13ef439 100644
--- a/target/linux/brcm2708/patches-4.4/0012-spi-bcm2835-Support-pin-groups-other-than-7-11.patch
+++ b/target/linux/brcm2708/patches-4.4/0012-spi-bcm2835-Support-pin-groups-other-than-7-11.patch
@@ -1,7 +1,7 @@
-From 9cb63901af94334ee9f4bf55f731633ea478626a Mon Sep 17 00:00:00 2001
+From 41c1cc2920df75124c931cd58f6b67ec586a5a6a Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 24 Jun 2015 14:10:44 +0100
-Subject: [PATCH 012/423] spi-bcm2835: Support pin groups other than 7-11
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0013-ARM-bcm2835-Set-Serial-number-and-Revision.patch b/target/linux/brcm2708/patches-4.4/0013-ARM-bcm2835-Set-Serial-number-and-Revision.patch
index 125b3fd..a1b4af0 100644
--- a/target/linux/brcm2708/patches-4.4/0013-ARM-bcm2835-Set-Serial-number-and-Revision.patch
+++ b/target/linux/brcm2708/patches-4.4/0013-ARM-bcm2835-Set-Serial-number-and-Revision.patch
@@ -1,7 +1,7 @@
-From d9bc838cde2a45c850c3a23d96c8ebe9715ea253 Mon Sep 17 00:00:00 2001
+From 3b9d28ec938020106f431f5a47ab5525b73bb0d0 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Wed, 3 Jun 2015 12:26:13 +0200
-Subject: [PATCH 013/423] ARM: bcm2835: Set Serial number and Revision
+Subject: [PATCH] ARM: bcm2835: Set Serial number and Revision
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0014-bcm2835-i2s-get-base-address-for-DMA-from-devicetree.patch b/target/linux/brcm2708/patches-4.4/0014-bcm2835-i2s-get-base-address-for-DMA-from-devicetree.patch
index 3ac376a..9e551b9 100644
--- a/target/linux/brcm2708/patches-4.4/0014-bcm2835-i2s-get-base-address-for-DMA-from-devicetree.patch
+++ b/target/linux/brcm2708/patches-4.4/0014-bcm2835-i2s-get-base-address-for-DMA-from-devicetree.patch
@@ -1,7 +1,7 @@
-From 5d071d8a4f3a0c60bd48071d64f9d311d019d296 Mon Sep 17 00:00:00 2001
+From 17025015a60ffc92d09ade98131ed080bbf09106 Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Sun, 11 Oct 2015 16:44:05 +0200
-Subject: [PATCH 014/423] bcm2835-i2s: get base address for DMA from devicetree
+Subject: [PATCH] bcm2835-i2s: get base address for DMA from devicetree
 
 Code copied from spi-bcm2835. Get physical address from devicetree
 instead of using hardcoded constant.
diff --git a/target/linux/brcm2708/patches-4.4/0015-bcm2835-i2s-add-24bit-support-update-bclk_ratio-to-m.patch b/target/linux/brcm2708/patches-4.4/0015-bcm2835-i2s-add-24bit-support-update-bclk_ratio-to-m.patch
index 9dfb283..5afab2e 100644
--- a/target/linux/brcm2708/patches-4.4/0015-bcm2835-i2s-add-24bit-support-update-bclk_ratio-to-m.patch
+++ b/target/linux/brcm2708/patches-4.4/0015-bcm2835-i2s-add-24bit-support-update-bclk_ratio-to-m.patch
@@ -1,8 +1,8 @@
-From b4e96aa5e8f7825050d7ef74ec59d684cedcc8f1 Mon Sep 17 00:00:00 2001
+From fb1dbd3a7ff1ae0ccd429a4decafc882473f5d94 Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Sun, 11 Oct 2015 15:21:16 +0200
-Subject: [PATCH 015/423] bcm2835-i2s: add 24bit support, update bclk_ratio to
- more correct values
+Subject: [PATCH] bcm2835-i2s: add 24bit support, update bclk_ratio to more
+ correct values
 
 Code ported from bcm2708-i2s driver in Raspberry Pi tree.
 
diff --git a/target/linux/brcm2708/patches-4.4/0016-bcm2835-i2s-setup-clock-only-if-CPU-is-clock-master.patch b/target/linux/brcm2708/patches-4.4/0016-bcm2835-i2s-setup-clock-only-if-CPU-is-clock-master.patch
index dfcb747..e61700f 100644
--- a/target/linux/brcm2708/patches-4.4/0016-bcm2835-i2s-setup-clock-only-if-CPU-is-clock-master.patch
+++ b/target/linux/brcm2708/patches-4.4/0016-bcm2835-i2s-setup-clock-only-if-CPU-is-clock-master.patch
@@ -1,7 +1,7 @@
-From bd46c6f9df173b2b81bac5cb19814f0b66063b25 Mon Sep 17 00:00:00 2001
+From 63e23a08bd0bcf782f870bacaf82404e36a6a1bd Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Sun, 11 Oct 2015 15:25:51 +0200
-Subject: [PATCH 016/423] bcm2835-i2s: setup clock only if CPU is clock master
+Subject: [PATCH] bcm2835-i2s: setup clock only if CPU is clock master
 
 Code ported from bcm2708-i2s driver in Raspberry Pi tree.
 
diff --git a/target/linux/brcm2708/patches-4.4/0017-bcm2835-i2s-Eliminate-debugfs-directory-error.patch b/target/linux/brcm2708/patches-4.4/0017-bcm2835-i2s-Eliminate-debugfs-directory-error.patch
index bfa51fe..306dd97 100644
--- a/target/linux/brcm2708/patches-4.4/0017-bcm2835-i2s-Eliminate-debugfs-directory-error.patch
+++ b/target/linux/brcm2708/patches-4.4/0017-bcm2835-i2s-Eliminate-debugfs-directory-error.patch
@@ -1,7 +1,7 @@
-From 83f3ec096572e1f1878eb5f97632e7830fc606bd Mon Sep 17 00:00:00 2001
+From 487c53a0c7bbf586ccc441dfc6f7021dc5f1522d Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Sun, 11 Oct 2015 15:49:51 +0200
-Subject: [PATCH 017/423] bcm2835-i2s: Eliminate debugfs directory error
+Subject: [PATCH] bcm2835-i2s: Eliminate debugfs directory error
 
 Code ported from bcm2708-i2s driver in Raspberry Pi tree.
 
diff --git a/target/linux/brcm2708/patches-4.4/0018-bcm2835-i2s-Register-PCM-device.patch b/target/linux/brcm2708/patches-4.4/0018-bcm2835-i2s-Register-PCM-device.patch
index 44a2b00..f7470a3 100644
--- a/target/linux/brcm2708/patches-4.4/0018-bcm2835-i2s-Register-PCM-device.patch
+++ b/target/linux/brcm2708/patches-4.4/0018-bcm2835-i2s-Register-PCM-device.patch
@@ -1,7 +1,7 @@
-From c096f1d64ef032af2c9f2713727de6ec849969c5 Mon Sep 17 00:00:00 2001
+From d86d8ab0405b4eecee7516670e9497ce450c1bbe Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Sun, 11 Oct 2015 15:35:20 +0200
-Subject: [PATCH 018/423] bcm2835-i2s: Register PCM device
+Subject: [PATCH] bcm2835-i2s: Register PCM device
 
 Code ported from bcm2708-i2s driver in Raspberry Pi tree.
 
diff --git a/target/linux/brcm2708/patches-4.4/0019-bcm2835-i2s-Enable-MMAP-support-via-a-DT-property.patch b/target/linux/brcm2708/patches-4.4/0019-bcm2835-i2s-Enable-MMAP-support-via-a-DT-property.patch
index 2f16bf7..6624efb 100644
--- a/target/linux/brcm2708/patches-4.4/0019-bcm2835-i2s-Enable-MMAP-support-via-a-DT-property.patch
+++ b/target/linux/brcm2708/patches-4.4/0019-bcm2835-i2s-Enable-MMAP-support-via-a-DT-property.patch
@@ -1,7 +1,7 @@
-From ec8796e8ccf92931ff87fb7626be8f3e63ddc2d0 Mon Sep 17 00:00:00 2001
+From 4d08d5e742e59e1e73787bfeca27595d5afbf1af Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Sun, 11 Oct 2015 15:55:21 +0200
-Subject: [PATCH 019/423] bcm2835-i2s: Enable MMAP support via a DT property
+Subject: [PATCH] bcm2835-i2s: Enable MMAP support via a DT property
 
 Code ported from bcm2708-i2s driver in Raspberry Pi tree.
 
diff --git a/target/linux/brcm2708/patches-4.4/0020-dmaengine-bcm2835-Add-slave-dma-support.patch b/target/linux/brcm2708/patches-4.4/0020-dmaengine-bcm2835-Add-slave-dma-support.patch
index 8155cc7..651f96e 100644
--- a/target/linux/brcm2708/patches-4.4/0020-dmaengine-bcm2835-Add-slave-dma-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0020-dmaengine-bcm2835-Add-slave-dma-support.patch
@@ -1,7 +1,7 @@
-From a272c5805686c77e924f85e314cb5df77bea40be Mon Sep 17 00:00:00 2001
+From c9f03ab8241d445daebd5fb8c4cf63c976460e2d Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Thu, 9 Apr 2015 12:34:11 +0200
-Subject: [PATCH 020/423] dmaengine: bcm2835: Add slave dma support
+Subject: [PATCH] dmaengine: bcm2835: Add slave dma support
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0021-dmaengine-bcm2835-set-residue_granularity-field.patch b/target/linux/brcm2708/patches-4.4/0021-dmaengine-bcm2835-set-residue_granularity-field.patch
index 7be45f7..336f50d 100644
--- a/target/linux/brcm2708/patches-4.4/0021-dmaengine-bcm2835-set-residue_granularity-field.patch
+++ b/target/linux/brcm2708/patches-4.4/0021-dmaengine-bcm2835-set-residue_granularity-field.patch
@@ -1,7 +1,7 @@
-From 5780349e26ba486276936393f666bea55c5dbf1e Mon Sep 17 00:00:00 2001
+From f4f1c7f4084eca4b826a07a43c467e2febe57f1e Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Sat, 3 Oct 2015 15:58:59 +0200
-Subject: [PATCH 021/423] dmaengine: bcm2835: set residue_granularity field
+Subject: [PATCH] dmaengine: bcm2835: set residue_granularity field
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0022-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch b/target/linux/brcm2708/patches-4.4/0022-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
index 9f86ae9..00ba9cd 100644
--- a/target/linux/brcm2708/patches-4.4/0022-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
+++ b/target/linux/brcm2708/patches-4.4/0022-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
@@ -1,8 +1,7 @@
-From 24e006fc71be77120ac237af3797f4aa103ca0e1 Mon Sep 17 00:00:00 2001
+From d7714e2a4e40cbeb4e69fb7465621f2014b358d2 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Sat, 3 Oct 2015 22:22:55 +0200
-Subject: [PATCH 022/423] dmaengine: bcm2835: Load driver early and support
- legacy API
+Subject: [PATCH] dmaengine: bcm2835: Load driver early and support legacy API
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0023-bcm2835-dma-Fix-dreq-not-set-for-slave-transfers.patch b/target/linux/brcm2708/patches-4.4/0023-bcm2835-dma-Fix-dreq-not-set-for-slave-transfers.patch
index 490cadb..403e297 100644
--- a/target/linux/brcm2708/patches-4.4/0023-bcm2835-dma-Fix-dreq-not-set-for-slave-transfers.patch
+++ b/target/linux/brcm2708/patches-4.4/0023-bcm2835-dma-Fix-dreq-not-set-for-slave-transfers.patch
@@ -1,7 +1,7 @@
-From 411b5abcce1b72fdba106a7236548b8b5315a6e6 Mon Sep 17 00:00:00 2001
+From 93e23eca701dfbf20def2a598af43d64c39bd9b8 Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Sat, 10 Oct 2015 12:29:18 +0200
-Subject: [PATCH 023/423] bcm2835-dma: Fix dreq not set for slave transfers
+Subject: [PATCH] bcm2835-dma: Fix dreq not set for slave transfers
 
 Set dreq to slave_id if it is not set like in bcm2708-dmaengine.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0024-bcm2835-dma-Limit-cyclic-transfers-on-lite-channels-.patch b/target/linux/brcm2708/patches-4.4/0024-bcm2835-dma-Limit-cyclic-transfers-on-lite-channels-.patch
index b332fe6..92f1c03 100644
--- a/target/linux/brcm2708/patches-4.4/0024-bcm2835-dma-Limit-cyclic-transfers-on-lite-channels-.patch
+++ b/target/linux/brcm2708/patches-4.4/0024-bcm2835-dma-Limit-cyclic-transfers-on-lite-channels-.patch
@@ -1,8 +1,7 @@
-From 8eb5210cea099d814f9e583358343d8680c5d05d Mon Sep 17 00:00:00 2001
+From fc5bc111e65b27883284591aec9db5a290665ac9 Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Sun, 11 Oct 2015 12:28:30 +0200
-Subject: [PATCH 024/423] bcm2835-dma: Limit cyclic transfers on lite channels
- to 32k
+Subject: [PATCH] bcm2835-dma: Limit cyclic transfers on lite channels to 32k
 
 Transfers larger than 32k cause repeated clicking with I2S soundcards.
 The exact reason is yet unknown, so limit to 32k as bcm2708-dmaengine
diff --git a/target/linux/brcm2708/patches-4.4/0025-bcm2835-Add-support-for-uart1.patch b/target/linux/brcm2708/patches-4.4/0025-bcm2835-Add-support-for-uart1.patch
index f7faeff..d1c8941 100644
--- a/target/linux/brcm2708/patches-4.4/0025-bcm2835-Add-support-for-uart1.patch
+++ b/target/linux/brcm2708/patches-4.4/0025-bcm2835-Add-support-for-uart1.patch
@@ -1,7 +1,7 @@
-From c8963aeb4b3fbebc8e1de91a65e9f188a1e43d59 Mon Sep 17 00:00:00 2001
+From e95d949879bf632a5fa82c9a1c5607b40388484e Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Sat, 15 Aug 2015 20:50:02 +0200
-Subject: [PATCH 025/423] bcm2835: Add support for uart1
+Subject: [PATCH] bcm2835: Add support for uart1
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0026-firmware-bcm2835-Add-missing-property-tags.patch b/target/linux/brcm2708/patches-4.4/0026-firmware-bcm2835-Add-missing-property-tags.patch
index f303420..14c3aac 100644
--- a/target/linux/brcm2708/patches-4.4/0026-firmware-bcm2835-Add-missing-property-tags.patch
+++ b/target/linux/brcm2708/patches-4.4/0026-firmware-bcm2835-Add-missing-property-tags.patch
@@ -1,7 +1,7 @@
-From ed165fd5d29fa90e6605cb4b87ec5cd35e4209c7 Mon Sep 17 00:00:00 2001
+From 65277e76bcc581bb99f98bb69d9b603bdbfa1d98 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Fri, 26 Jun 2015 14:21:20 +0200
-Subject: [PATCH 026/423] firmware: bcm2835: Add missing property tags
+Subject: [PATCH] firmware: bcm2835: Add missing property tags
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0027-Main-bcm2708-bcm2709-linux-port.patch b/target/linux/brcm2708/patches-4.4/0027-Main-bcm2708-bcm2709-linux-port.patch
index 7fd31eb..766e499 100644
--- a/target/linux/brcm2708/patches-4.4/0027-Main-bcm2708-bcm2709-linux-port.patch
+++ b/target/linux/brcm2708/patches-4.4/0027-Main-bcm2708-bcm2709-linux-port.patch
@@ -1,7 +1,7 @@
-From 50d8450a9fd5b05873e3b404e2089067920d53c1 Mon Sep 17 00:00:00 2001
+From cea9e735ed55e4e75819e984290cf147e9712c73 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Sun, 12 May 2013 12:24:19 +0100
-Subject: [PATCH 027/423] Main bcm2708/bcm2709 linux port
+Subject: [PATCH] Main bcm2708/bcm2709 linux port
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0028-squash-include-ARCH_BCM2708-ARCH_BCM2709.patch b/target/linux/brcm2708/patches-4.4/0028-squash-include-ARCH_BCM2708-ARCH_BCM2709.patch
index 99a6bed..63231fa 100644
--- a/target/linux/brcm2708/patches-4.4/0028-squash-include-ARCH_BCM2708-ARCH_BCM2709.patch
+++ b/target/linux/brcm2708/patches-4.4/0028-squash-include-ARCH_BCM2708-ARCH_BCM2709.patch
@@ -1,7 +1,7 @@
-From f455b928205d24aebbf0cc3cf5a9fff4cfb9563e Mon Sep 17 00:00:00 2001
+From 613412454d5196c8982a3abc0820389c16599a51 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 11 Nov 2015 21:01:15 +0000
-Subject: [PATCH 028/423] squash: include ARCH_BCM2708 / ARCH_BCM2709
+Subject: [PATCH] squash: include ARCH_BCM2708 / ARCH_BCM2709
 
 ---
  drivers/char/hw_random/Kconfig    |  2 +-
diff --git a/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch b/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch
index 379d35c..57f442c 100644
--- a/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch
@@ -1,7 +1,7 @@
-From 89ea7c60a305783a6790e7e7e91b1451cd40fe78 Mon Sep 17 00:00:00 2001
+From 130a06f0f8becad1e93d3dda1ce96d6e5413ee39 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 1 May 2013 19:46:17 +0100
-Subject: [PATCH 029/423] Add dwc_otg driver
+Subject: [PATCH] Add dwc_otg driver
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0030-bcm2708-framebuffer-driver.patch b/target/linux/brcm2708/patches-4.4/0030-bcm2708-framebuffer-driver.patch
index 7e9426a..18be579 100644
--- a/target/linux/brcm2708/patches-4.4/0030-bcm2708-framebuffer-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0030-bcm2708-framebuffer-driver.patch
@@ -1,7 +1,7 @@
-From 006091f6aa1f34a2b92fb8ff1defd86d232b7e90 Mon Sep 17 00:00:00 2001
+From c634714a43035371d4035b65e67413dcf1ff0f8e Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 17 Jun 2015 17:06:34 +0100
-Subject: [PATCH 030/423] bcm2708 framebuffer driver
+Subject: [PATCH] bcm2708 framebuffer driver
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0031-dmaengine-Add-support-for-BCM2708.patch b/target/linux/brcm2708/patches-4.4/0031-dmaengine-Add-support-for-BCM2708.patch
index 14dd81b..067b5ad 100644
--- a/target/linux/brcm2708/patches-4.4/0031-dmaengine-Add-support-for-BCM2708.patch
+++ b/target/linux/brcm2708/patches-4.4/0031-dmaengine-Add-support-for-BCM2708.patch
@@ -1,7 +1,7 @@
-From 6ab9b89c4a3def17db462e0902bb0ba325a7c191 Mon Sep 17 00:00:00 2001
+From 5fca3a9b2f0c0c928fa94368cdb767829a696ed5 Mon Sep 17 00:00:00 2001
 From: Florian Meier <florian.meier at koalo.de>
 Date: Fri, 22 Nov 2013 14:22:53 +0100
-Subject: [PATCH 031/423] dmaengine: Add support for BCM2708
+Subject: [PATCH] dmaengine: Add support for BCM2708
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0032-MMC-added-alternative-MMC-driver.patch b/target/linux/brcm2708/patches-4.4/0032-MMC-added-alternative-MMC-driver.patch
index a220691..2c9534f 100644
--- a/target/linux/brcm2708/patches-4.4/0032-MMC-added-alternative-MMC-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0032-MMC-added-alternative-MMC-driver.patch
@@ -1,7 +1,7 @@
-From ed0042e046abbd2cee8425ff8e8c535cb025c22a Mon Sep 17 00:00:00 2001
+From 28aa7cada5d110ced59ef0d9392a7fb3121cc551 Mon Sep 17 00:00:00 2001
 From: gellert <gellert at raspberrypi.org>
 Date: Fri, 15 Aug 2014 16:35:06 +0100
-Subject: [PATCH 032/423] MMC: added alternative MMC driver
+Subject: [PATCH] MMC: added alternative MMC driver
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0033-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch b/target/linux/brcm2708/patches-4.4/0033-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch
index 333c302..5ec38b2 100644
--- a/target/linux/brcm2708/patches-4.4/0033-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch
+++ b/target/linux/brcm2708/patches-4.4/0033-Adding-bcm2835-sdhost-driver-and-an-overlay-to-enabl.patch
@@ -1,8 +1,7 @@
-From 7b251a5ab7f06c8f5720a0d49529e0dbe0514503 Mon Sep 17 00:00:00 2001
+From 0c9b7e17d022e45363737d67da590524416f8e3d Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 25 Mar 2015 17:49:47 +0000
-Subject: [PATCH 033/423] Adding bcm2835-sdhost driver, and an overlay to
- enable it
+Subject: [PATCH] Adding bcm2835-sdhost driver, and an overlay to enable it
 
 BCM2835 has two SD card interfaces. This driver uses the other one.
 
diff --git a/target/linux/brcm2708/patches-4.4/0034-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch b/target/linux/brcm2708/patches-4.4/0034-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch
index 3773cd7..e9a6ed1 100644
--- a/target/linux/brcm2708/patches-4.4/0034-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch
+++ b/target/linux/brcm2708/patches-4.4/0034-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch
@@ -1,7 +1,7 @@
-From effd8d3a65306de4f6cb43aa2139a75d181d9cee Mon Sep 17 00:00:00 2001
+From dec8e7bfb37280733ec278955f1bd8dd2bc176b8 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 3 Jul 2013 00:31:47 +0100
-Subject: [PATCH 034/423] cma: Add vc_cma driver to enable use of CMA
+Subject: [PATCH] cma: Add vc_cma driver to enable use of CMA
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0035-bcm2708-alsa-sound-driver.patch b/target/linux/brcm2708/patches-4.4/0035-bcm2708-alsa-sound-driver.patch
index 06b770f..f4bbcf3 100644
--- a/target/linux/brcm2708/patches-4.4/0035-bcm2708-alsa-sound-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0035-bcm2708-alsa-sound-driver.patch
@@ -1,7 +1,7 @@
-From 809b8fb074a009dec508c02986b27979c5d78b1d Mon Sep 17 00:00:00 2001
+From b3f75cc54e1ee4612cfb34e2a91e03e3d1923534 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Mon, 26 Mar 2012 22:15:50 +0100
-Subject: [PATCH 035/423] bcm2708: alsa sound driver
+Subject: [PATCH] bcm2708: alsa sound driver
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0036-bcm2708-vchiq-driver.patch b/target/linux/brcm2708/patches-4.4/0036-bcm2708-vchiq-driver.patch
index 3b94b8e..5086521 100644
--- a/target/linux/brcm2708/patches-4.4/0036-bcm2708-vchiq-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0036-bcm2708-vchiq-driver.patch
@@ -1,7 +1,7 @@
-From 1b37904494fc7c9923dde14aa08a63405d89d989 Mon Sep 17 00:00:00 2001
+From 9a1f0040b1f125f8729c772c1ad8e6940b923d7a Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 2 Jul 2013 23:42:01 +0100
-Subject: [PATCH 036/423] bcm2708 vchiq driver
+Subject: [PATCH] bcm2708 vchiq driver
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0037-vc_mem-Add-vc_mem-driver.patch b/target/linux/brcm2708/patches-4.4/0037-vc_mem-Add-vc_mem-driver.patch
index 189c771..ead1162 100644
--- a/target/linux/brcm2708/patches-4.4/0037-vc_mem-Add-vc_mem-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0037-vc_mem-Add-vc_mem-driver.patch
@@ -1,7 +1,7 @@
-From 1dc99a2709085bc7bda11bd457280e9f00fd173b Mon Sep 17 00:00:00 2001
+From bad77c41a36b52033392a19b2b6d51037f2614a5 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 17 Jun 2015 16:07:06 +0100
-Subject: [PATCH 037/423] vc_mem: Add vc_mem driver
+Subject: [PATCH] vc_mem: Add vc_mem driver
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0038-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch b/target/linux/brcm2708/patches-4.4/0038-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch
index e6e088c..fd193b0 100644
--- a/target/linux/brcm2708/patches-4.4/0038-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch
+++ b/target/linux/brcm2708/patches-4.4/0038-vcsm-VideoCore-shared-memory-service-for-BCM2835.patch
@@ -1,7 +1,7 @@
-From 98151664c3404e6ce9abe16241aaef78d260c967 Mon Sep 17 00:00:00 2001
+From 6bdbcad7cce6f6a6fc02f67add6b82d3fcc9e0c6 Mon Sep 17 00:00:00 2001
 From: Tim Gover <tgover at broadcom.com>
 Date: Tue, 22 Jul 2014 15:41:04 +0100
-Subject: [PATCH 038/423] vcsm: VideoCore shared memory service for BCM2835
+Subject: [PATCH] vcsm: VideoCore shared memory service for BCM2835
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0039-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch b/target/linux/brcm2708/patches-4.4/0039-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch
index f9d03e1..25a2ae7 100644
--- a/target/linux/brcm2708/patches-4.4/0039-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch
+++ b/target/linux/brcm2708/patches-4.4/0039-Add-dev-gpiomem-device-for-rootless-user-GPIO-access.patch
@@ -1,7 +1,7 @@
-From ccfc207deae0f9e76975908af6c16460a4e05650 Mon Sep 17 00:00:00 2001
+From 5dc37246986844910511379a5c57ca87a50c6c0d Mon Sep 17 00:00:00 2001
 From: Luke Wren <luke at raspberrypi.org>
 Date: Fri, 21 Aug 2015 23:14:48 +0100
-Subject: [PATCH 039/423] Add /dev/gpiomem device for rootless user GPIO access
+Subject: [PATCH] Add /dev/gpiomem device for rootless user GPIO access
 
 Signed-off-by: Luke Wren <luke at raspberrypi.org>
 
diff --git a/target/linux/brcm2708/patches-4.4/0040-Add-SMI-driver.patch b/target/linux/brcm2708/patches-4.4/0040-Add-SMI-driver.patch
index e6e8da6..c69862f 100644
--- a/target/linux/brcm2708/patches-4.4/0040-Add-SMI-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0040-Add-SMI-driver.patch
@@ -1,7 +1,7 @@
-From d2e199c4c3e599a0166cbaed671f5446a366ccd6 Mon Sep 17 00:00:00 2001
+From d85d7801b25872d08bd848c40da8fce973db5e46 Mon Sep 17 00:00:00 2001
 From: Luke Wren <wren6991 at gmail.com>
 Date: Sat, 5 Sep 2015 01:14:45 +0100
-Subject: [PATCH 040/423] Add SMI driver
+Subject: [PATCH] Add SMI driver
 
 Signed-off-by: Luke Wren <wren6991 at gmail.com>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0041-Add-SMI-NAND-driver.patch b/target/linux/brcm2708/patches-4.4/0041-Add-SMI-NAND-driver.patch
index 3c5692a..b5fe990 100644
--- a/target/linux/brcm2708/patches-4.4/0041-Add-SMI-NAND-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0041-Add-SMI-NAND-driver.patch
@@ -1,7 +1,7 @@
-From f7066cd5ed22219015dd9e55dd2070f4822da956 Mon Sep 17 00:00:00 2001
+From b1718d13dae01f04ead925c9562bf18634bbf267 Mon Sep 17 00:00:00 2001
 From: Luke Wren <wren6991 at gmail.com>
 Date: Sat, 5 Sep 2015 01:16:10 +0100
-Subject: [PATCH 041/423] Add SMI NAND driver
+Subject: [PATCH] Add SMI NAND driver
 
 Signed-off-by: Luke Wren <wren6991 at gmail.com>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0042-lirc-added-support-for-RaspberryPi-GPIO.patch b/target/linux/brcm2708/patches-4.4/0042-lirc-added-support-for-RaspberryPi-GPIO.patch
index dd4a033..d9e9079 100644
--- a/target/linux/brcm2708/patches-4.4/0042-lirc-added-support-for-RaspberryPi-GPIO.patch
+++ b/target/linux/brcm2708/patches-4.4/0042-lirc-added-support-for-RaspberryPi-GPIO.patch
@@ -1,7 +1,7 @@
-From 687cb2fff7d0f3480fd39e5ffbebe912e46fa972 Mon Sep 17 00:00:00 2001
+From b4269ab1d08d22959ec26ce1d31a45a1c5e85191 Mon Sep 17 00:00:00 2001
 From: Aron Szabo <aron at aron.ws>
 Date: Sat, 16 Jun 2012 12:15:55 +0200
-Subject: [PATCH 042/423] lirc: added support for RaspberryPi GPIO
+Subject: [PATCH] lirc: added support for RaspberryPi GPIO
 
 lirc_rpi: Use read_current_timer to determine transmitter delay. Thanks to jjmz and others
 See: https://github.com/raspberrypi/linux/issues/525
diff --git a/target/linux/brcm2708/patches-4.4/0043-Add-cpufreq-driver.patch b/target/linux/brcm2708/patches-4.4/0043-Add-cpufreq-driver.patch
index 884abdf..11659f6 100644
--- a/target/linux/brcm2708/patches-4.4/0043-Add-cpufreq-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0043-Add-cpufreq-driver.patch
@@ -1,7 +1,7 @@
-From bf5b94ef7f3f667e384108aa84bee8195da04383 Mon Sep 17 00:00:00 2001
+From f3f2bddacba23cab954a421d490bd17364e69d2d Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 3 Jul 2013 00:49:20 +0100
-Subject: [PATCH 043/423] Add cpufreq driver
+Subject: [PATCH] Add cpufreq driver
 
 Signed-off-by: popcornmix <popcornmix at gmail.com>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0044-Added-hwmon-thermal-driver-for-reporting-core-temper.patch b/target/linux/brcm2708/patches-4.4/0044-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
index f55071d..deb88d4 100644
--- a/target/linux/brcm2708/patches-4.4/0044-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
+++ b/target/linux/brcm2708/patches-4.4/0044-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
@@ -1,8 +1,8 @@
-From 83b388b35dea05c454a5b2eceec0eff06cc863fb Mon Sep 17 00:00:00 2001
+From 688fec3024a2648a48396168a73ada00131682e1 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 26 Mar 2013 19:24:24 +0000
-Subject: [PATCH 044/423] Added hwmon/thermal driver for reporting core
- temperature. Thanks Dorian
+Subject: [PATCH] Added hwmon/thermal driver for reporting core temperature.
+ Thanks Dorian
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0045-Add-Chris-Boot-s-i2c-driver.patch b/target/linux/brcm2708/patches-4.4/0045-Add-Chris-Boot-s-i2c-driver.patch
index 874796a..21d0674 100644
--- a/target/linux/brcm2708/patches-4.4/0045-Add-Chris-Boot-s-i2c-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0045-Add-Chris-Boot-s-i2c-driver.patch
@@ -1,7 +1,7 @@
-From d25b6fcbf3005ae61c5a1940b8a0a47ee545289b Mon Sep 17 00:00:00 2001
+From b78bc1bb96c2db043c3be03c1bcccefa22621543 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 17 Jun 2015 15:44:08 +0100
-Subject: [PATCH 045/423] Add Chris Boot's i2c driver
+Subject: [PATCH] Add Chris Boot's i2c driver
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0046-char-broadcom-Add-vcio-module.patch b/target/linux/brcm2708/patches-4.4/0046-char-broadcom-Add-vcio-module.patch
index 92f728c..0b21588 100644
--- a/target/linux/brcm2708/patches-4.4/0046-char-broadcom-Add-vcio-module.patch
+++ b/target/linux/brcm2708/patches-4.4/0046-char-broadcom-Add-vcio-module.patch
@@ -1,7 +1,7 @@
-From ea599a4e38ae921ec5aa8966163ea442357281df Mon Sep 17 00:00:00 2001
+From 0fed71c0553d0bc86798f395c7e354cd132c9802 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Fri, 26 Jun 2015 14:27:06 +0200
-Subject: [PATCH 046/423] char: broadcom: Add vcio module
+Subject: [PATCH] char: broadcom: Add vcio module
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0047-firmware-bcm2835-Support-ARCH_BCM270x.patch b/target/linux/brcm2708/patches-4.4/0047-firmware-bcm2835-Support-ARCH_BCM270x.patch
index 5e9b745..2713d7f 100644
--- a/target/linux/brcm2708/patches-4.4/0047-firmware-bcm2835-Support-ARCH_BCM270x.patch
+++ b/target/linux/brcm2708/patches-4.4/0047-firmware-bcm2835-Support-ARCH_BCM270x.patch
@@ -1,7 +1,7 @@
-From 996a87d316243001486fe36b36a7b6ffb4dd1b28 Mon Sep 17 00:00:00 2001
+From 2d716ee18a62c6e8b3a2e28a225bb3484693b6d2 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Fri, 26 Jun 2015 14:25:01 +0200
-Subject: [PATCH 047/423] firmware: bcm2835: Support ARCH_BCM270x
+Subject: [PATCH] firmware: bcm2835: Support ARCH_BCM270x
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0048-bcm2835-add-v4l2-camera-device.patch b/target/linux/brcm2708/patches-4.4/0048-bcm2835-add-v4l2-camera-device.patch
index 51b1501..6f59f57 100644
--- a/target/linux/brcm2708/patches-4.4/0048-bcm2835-add-v4l2-camera-device.patch
+++ b/target/linux/brcm2708/patches-4.4/0048-bcm2835-add-v4l2-camera-device.patch
@@ -1,7 +1,7 @@
-From b7c2738cecfa7e32e689f9e9f51f7a0283c6e494 Mon Sep 17 00:00:00 2001
+From b2868be5ed011e649590efdbcc6356bee4fcf257 Mon Sep 17 00:00:00 2001
 From: Vincent Sanders <vincent.sanders at collabora.co.uk>
 Date: Wed, 30 Jan 2013 12:45:18 +0000
-Subject: [PATCH 048/423] bcm2835: add v4l2 camera device
+Subject: [PATCH] bcm2835: add v4l2 camera device
 
 - Supports raw YUV capture, preview, JPEG and H264.
 - Uses videobuf2 for data transfer, using dma_buf.
diff --git a/target/linux/brcm2708/patches-4.4/0049-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch b/target/linux/brcm2708/patches-4.4/0049-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch
index ddde544..06d2a0b 100644
--- a/target/linux/brcm2708/patches-4.4/0049-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch
+++ b/target/linux/brcm2708/patches-4.4/0049-scripts-Add-mkknlimg-and-knlinfo-scripts-from-tools-.patch
@@ -1,8 +1,7 @@
-From 5ea28aea74a57b9cbbb59ee7df29c5994fc6ad81 Mon Sep 17 00:00:00 2001
+From 10a2bc39e76f415f9a42166ccc7af7e7b43565fc Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 11 May 2015 09:00:42 +0100
-Subject: [PATCH 049/423] scripts: Add mkknlimg and knlinfo scripts from tools
- repo
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0050-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch b/target/linux/brcm2708/patches-4.4/0050-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch
index c1308c5..60bed19 100644
--- a/target/linux/brcm2708/patches-4.4/0050-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch
+++ b/target/linux/brcm2708/patches-4.4/0050-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch
@@ -1,7 +1,7 @@
-From ef0a1dc5b8069728671aa1d4a9cee2a2beda16be Mon Sep 17 00:00:00 2001
+From 5e3dd32b2906cc4f07b81f18de3d4a23c417e8fc Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 5 Dec 2014 17:26:26 +0000
-Subject: [PATCH 050/423] fdt: Add support for the CONFIG_CMDLINE_EXTEND option
+Subject: [PATCH] fdt: Add support for the CONFIG_CMDLINE_EXTEND option
 
 ---
  drivers/of/fdt.c | 29 ++++++++++++++++++++++++-----
diff --git a/target/linux/brcm2708/patches-4.4/0051-BCM2708-Add-core-Device-Tree-support.patch b/target/linux/brcm2708/patches-4.4/0051-BCM2708-Add-core-Device-Tree-support.patch
index 8f0f231..9631c93 100644
--- a/target/linux/brcm2708/patches-4.4/0051-BCM2708-Add-core-Device-Tree-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0051-BCM2708-Add-core-Device-Tree-support.patch
@@ -1,7 +1,7 @@
-From c159387861a9b3e1b0f9fe12d6afe06f0cb8994d Mon Sep 17 00:00:00 2001
+From 48b5e0d194a88c4de6956f94ddd788e126de0a77 Mon Sep 17 00:00:00 2001
 From: notro <notro at tronnes.org>
 Date: Wed, 9 Jul 2014 14:46:08 +0200
-Subject: [PATCH 051/423] BCM2708: Add core Device Tree support
+Subject: [PATCH] BCM2708: Add core Device Tree support
 
 Add the bare minimum needed to boot BCM2708 from a Device Tree.
 
diff --git a/target/linux/brcm2708/patches-4.4/0052-bcm2835-Match-with-BCM2708-Device-Trees.patch b/target/linux/brcm2708/patches-4.4/0052-bcm2835-Match-with-BCM2708-Device-Trees.patch
index bd48e73..5d3ebc5 100644
--- a/target/linux/brcm2708/patches-4.4/0052-bcm2835-Match-with-BCM2708-Device-Trees.patch
+++ b/target/linux/brcm2708/patches-4.4/0052-bcm2835-Match-with-BCM2708-Device-Trees.patch
@@ -1,7 +1,7 @@
-From d867b1d6a7470aec5946b495a10a311742b08c18 Mon Sep 17 00:00:00 2001
+From a8bd4a9fead66a720889c5693bf0d21608d9e2c0 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Sat, 15 Aug 2015 20:47:07 +0200
-Subject: [PATCH 052/423] bcm2835: Match with BCM2708 Device Trees
+Subject: [PATCH] bcm2835: Match with BCM2708 Device Trees
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0053-fbdev-add-FBIOCOPYAREA-ioctl.patch b/target/linux/brcm2708/patches-4.4/0053-fbdev-add-FBIOCOPYAREA-ioctl.patch
index b4944e4..2a07c75 100644
--- a/target/linux/brcm2708/patches-4.4/0053-fbdev-add-FBIOCOPYAREA-ioctl.patch
+++ b/target/linux/brcm2708/patches-4.4/0053-fbdev-add-FBIOCOPYAREA-ioctl.patch
@@ -1,7 +1,7 @@
-From 6e0a601e2a1eb727b7b3f00c41e5d54197087feb Mon Sep 17 00:00:00 2001
+From a05a655545efe01002cf061b4373a9bb0071a302 Mon Sep 17 00:00:00 2001
 From: Siarhei Siamashka <siarhei.siamashka at gmail.com>
 Date: Mon, 17 Jun 2013 13:32:11 +0300
-Subject: [PATCH 053/423] fbdev: add FBIOCOPYAREA ioctl
+Subject: [PATCH] fbdev: add FBIOCOPYAREA ioctl
 
 Based on the patch authored by Ali Gholami Rudi at
     https://lkml.org/lkml/2009/7/13/153
diff --git a/target/linux/brcm2708/patches-4.4/0057-Speed-up-console-framebuffer-imageblit-function.patch b/target/linux/brcm2708/patches-4.4/0057-Speed-up-console-framebuffer-imageblit-function.patch
index 05bbf2a..8325ba9 100644
--- a/target/linux/brcm2708/patches-4.4/0057-Speed-up-console-framebuffer-imageblit-function.patch
+++ b/target/linux/brcm2708/patches-4.4/0057-Speed-up-console-framebuffer-imageblit-function.patch
@@ -1,7 +1,7 @@
-From 90df15f55607a4ec3b29374c5f7781300160bac3 Mon Sep 17 00:00:00 2001
+From 4d7fd18a26cbb4a3cab0aff6ed48070e3aaf3599 Mon Sep 17 00:00:00 2001
 From: Harm Hanemaaijer <fgenfb at yahoo.com>
 Date: Thu, 20 Jun 2013 20:21:39 +0200
-Subject: [PATCH 057/423] Speed up console framebuffer imageblit function
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0058-Allow-mac-address-to-be-set-in-smsc95xx.patch b/target/linux/brcm2708/patches-4.4/0058-Allow-mac-address-to-be-set-in-smsc95xx.patch
index afc515a..31adff7 100644
--- a/target/linux/brcm2708/patches-4.4/0058-Allow-mac-address-to-be-set-in-smsc95xx.patch
+++ b/target/linux/brcm2708/patches-4.4/0058-Allow-mac-address-to-be-set-in-smsc95xx.patch
@@ -1,7 +1,7 @@
-From 531927425d5bfd1525c7d47d321eeddff1eb3364 Mon Sep 17 00:00:00 2001
+From e681d15368e0c4515a5ee4bf238f859e8c501cf9 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 26 Mar 2013 17:26:38 +0000
-Subject: [PATCH 058/423] Allow mac address to be set in smsc95xx
+Subject: [PATCH] Allow mac address to be set in smsc95xx
 
 Signed-off-by: popcornmix <popcornmix at gmail.com>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0059-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch b/target/linux/brcm2708/patches-4.4/0059-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch
index ef5bf1d..890bd74 100644
--- a/target/linux/brcm2708/patches-4.4/0059-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch
+++ b/target/linux/brcm2708/patches-4.4/0059-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch
@@ -1,8 +1,8 @@
-From f339686c292d0a4e50fbe6f9ccb294291f103605 Mon Sep 17 00:00:00 2001
+From cab5187fbbc59808bab951b7f2736c4f0deff9fa Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 8 May 2013 11:46:50 +0100
-Subject: [PATCH 059/423] enabling the realtime clock 1-wire chip DS1307 and
- 1-wire on GPIO4 (as a module)
+Subject: [PATCH] enabling the realtime clock 1-wire chip DS1307 and 1-wire on
+ GPIO4 (as a module)
 
 1-wire: Add support for configuring pin for w1-gpio kernel module
 See: https://github.com/raspberrypi/linux/pull/457
diff --git a/target/linux/brcm2708/patches-4.4/0060-Added-Device-IDs-for-August-DVB-T-205.patch b/target/linux/brcm2708/patches-4.4/0060-Added-Device-IDs-for-August-DVB-T-205.patch
index 09c6aad..4573772 100644
--- a/target/linux/brcm2708/patches-4.4/0060-Added-Device-IDs-for-August-DVB-T-205.patch
+++ b/target/linux/brcm2708/patches-4.4/0060-Added-Device-IDs-for-August-DVB-T-205.patch
@@ -1,7 +1,7 @@
-From 934350e21fb2edfd042742892bbd4ea5173208ab Mon Sep 17 00:00:00 2001
+From c21be4772d67bc0b6bd3a59ce878b5dae705af44 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 3 Jul 2013 00:54:08 +0100
-Subject: [PATCH 060/423] Added Device IDs for August DVB-T 205
+Subject: [PATCH] Added Device IDs for August DVB-T 205
 
 ---
  drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 4 ++++
diff --git a/target/linux/brcm2708/patches-4.4/0061-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch b/target/linux/brcm2708/patches-4.4/0061-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
index 6418cc0..662d90d 100644
--- a/target/linux/brcm2708/patches-4.4/0061-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
+++ b/target/linux/brcm2708/patches-4.4/0061-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
@@ -1,8 +1,8 @@
-From 1ca424ef0079f90d9c5d1310bcbefe928b5e3fec Mon Sep 17 00:00:00 2001
+From 7106c05e5f71588e746c786f93b1fca9dcdd3c50 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 18 Dec 2013 22:16:19 +0000
-Subject: [PATCH 061/423] config: Enable CONFIG_MEMCG, but leave it disabled
- (due to memory cost). Enable with cgroup_enable=memory.
+Subject: [PATCH] config: Enable CONFIG_MEMCG, but leave it disabled (due to
+ memory cost). Enable with cgroup_enable=memory.
 
 ---
  kernel/cgroup.c | 23 ++++++++++++++++++++++-
diff --git a/target/linux/brcm2708/patches-4.4/0062-ASoC-Add-support-for-PCM5102A-codec.patch b/target/linux/brcm2708/patches-4.4/0062-ASoC-Add-support-for-PCM5102A-codec.patch
index 12a87af..3001849 100644
--- a/target/linux/brcm2708/patches-4.4/0062-ASoC-Add-support-for-PCM5102A-codec.patch
+++ b/target/linux/brcm2708/patches-4.4/0062-ASoC-Add-support-for-PCM5102A-codec.patch
@@ -1,7 +1,7 @@
-From fe45c479a680651326d22e6b966df63b2e719f70 Mon Sep 17 00:00:00 2001
+From dbcc62f3ac4f3996b77cfb6b00ec26dc99f2521b Mon Sep 17 00:00:00 2001
 From: Florian Meier <florian.meier at koalo.de>
 Date: Fri, 22 Nov 2013 14:59:51 +0100
-Subject: [PATCH 062/423] ASoC: Add support for PCM5102A codec
+Subject: [PATCH] ASoC: Add support for PCM5102A codec
 
 Some definitions to support the PCM5102A codec
 by Texas Instruments.
diff --git a/target/linux/brcm2708/patches-4.4/0063-ASoC-Add-support-for-HifiBerry-DAC.patch b/target/linux/brcm2708/patches-4.4/0063-ASoC-Add-support-for-HifiBerry-DAC.patch
index 5b90e11..943febc 100644
--- a/target/linux/brcm2708/patches-4.4/0063-ASoC-Add-support-for-HifiBerry-DAC.patch
+++ b/target/linux/brcm2708/patches-4.4/0063-ASoC-Add-support-for-HifiBerry-DAC.patch
@@ -1,7 +1,7 @@
-From 35b87454d0cc08adf25c4e4e50cfbcae16af45eb Mon Sep 17 00:00:00 2001
+From 592ac515f17d49627b6653375267bad5c4bb1e5c Mon Sep 17 00:00:00 2001
 From: Florian Meier <florian.meier at koalo.de>
 Date: Fri, 22 Nov 2013 19:19:08 +0100
-Subject: [PATCH 063/423] ASoC: Add support for HifiBerry DAC
+Subject: [PATCH] ASoC: Add support for HifiBerry DAC
 
 This adds a machine driver for the HifiBerry DAC.
 It is a sound card that can
diff --git a/target/linux/brcm2708/patches-4.4/0064-ASoC-Add-support-for-Rpi-DAC.patch b/target/linux/brcm2708/patches-4.4/0064-ASoC-Add-support-for-Rpi-DAC.patch
index 8e6e1e0..5adc047 100644
--- a/target/linux/brcm2708/patches-4.4/0064-ASoC-Add-support-for-Rpi-DAC.patch
+++ b/target/linux/brcm2708/patches-4.4/0064-ASoC-Add-support-for-Rpi-DAC.patch
@@ -1,7 +1,7 @@
-From 3f7614446e868612ab9099c7c959f43f29aa7e03 Mon Sep 17 00:00:00 2001
+From ffd6597f0c3cff5d2171347f23b9a98d4e6fa95e Mon Sep 17 00:00:00 2001
 From: Florian Meier <florian.meier at koalo.de>
 Date: Fri, 22 Nov 2013 19:21:34 +0100
-Subject: [PATCH 064/423] ASoC: Add support for Rpi-DAC
+Subject: [PATCH] ASoC: Add support for Rpi-DAC
 
 ---
  sound/soc/bcm/Kconfig       |   7 +++
diff --git a/target/linux/brcm2708/patches-4.4/0065-ASoC-wm8804-Implement-MCLK-configuration-options-add.patch b/target/linux/brcm2708/patches-4.4/0065-ASoC-wm8804-Implement-MCLK-configuration-options-add.patch
index fa02163..b71141c 100644
--- a/target/linux/brcm2708/patches-4.4/0065-ASoC-wm8804-Implement-MCLK-configuration-options-add.patch
+++ b/target/linux/brcm2708/patches-4.4/0065-ASoC-wm8804-Implement-MCLK-configuration-options-add.patch
@@ -1,16 +1,16 @@
-From 6148931ae669f041a7036c9eb0ec1b225275c1dd Mon Sep 17 00:00:00 2001
+From 34e0545c33b0f444a5dd8c066cfe37420e95db33 Mon Sep 17 00:00:00 2001
 From: Daniel Matuschek <info at crazy-audio.com>
 Date: Wed, 15 Jan 2014 21:41:23 +0100
-Subject: [PATCH 065/423] 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.
+Subject: [PATCH] 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.
 
diff --git a/target/linux/brcm2708/patches-4.4/0066-ASoC-BCM-Add-support-for-HiFiBerry-Digi.-Driver-is-b.patch b/target/linux/brcm2708/patches-4.4/0066-ASoC-BCM-Add-support-for-HiFiBerry-Digi.-Driver-is-b.patch
index fb95a67..727e727 100644
--- a/target/linux/brcm2708/patches-4.4/0066-ASoC-BCM-Add-support-for-HiFiBerry-Digi.-Driver-is-b.patch
+++ b/target/linux/brcm2708/patches-4.4/0066-ASoC-BCM-Add-support-for-HiFiBerry-Digi.-Driver-is-b.patch
@@ -1,8 +1,8 @@
-From 8678473916702a1f744f65ca953febb10c297827 Mon Sep 17 00:00:00 2001
+From 1d300db91ccab78593f0ea40d4e1c8a931232197 Mon Sep 17 00:00:00 2001
 From: Daniel Matuschek <info at crazy-audio.com>
 Date: Wed, 15 Jan 2014 21:42:08 +0100
-Subject: [PATCH 066/423] ASoC: BCM:Add support for HiFiBerry Digi. Driver is
- based on the patched WM8804 driver.
+Subject: [PATCH] ASoC: BCM:Add support for HiFiBerry Digi. Driver is based on
+ the patched WM8804 driver.
 
 Signed-off-by: Daniel Matuschek <daniel at matuschek.net>
 
diff --git a/target/linux/brcm2708/patches-4.4/0067-ASoC-wm8804-Set-idle_bias_off-to-false-Idle-bias-has.patch b/target/linux/brcm2708/patches-4.4/0067-ASoC-wm8804-Set-idle_bias_off-to-false-Idle-bias-has.patch
index 4cd07fd..f9c7067 100644
--- a/target/linux/brcm2708/patches-4.4/0067-ASoC-wm8804-Set-idle_bias_off-to-false-Idle-bias-has.patch
+++ b/target/linux/brcm2708/patches-4.4/0067-ASoC-wm8804-Set-idle_bias_off-to-false-Idle-bias-has.patch
@@ -1,8 +1,8 @@
-From db3e779eb462f937984d57ed072b84c736ac179c Mon Sep 17 00:00:00 2001
+From 0dd064b656993f40c09c055a6bef13fa023ceedf Mon Sep 17 00:00:00 2001
 From: Daniel Matuschek <info at crazy-audio.com>
 Date: Thu, 16 Jan 2014 07:36:35 +0100
-Subject: [PATCH 067/423] ASoC: wm8804: Set idle_bias_off to false Idle bias
- has been change to remove warning on driver startup
+Subject: [PATCH] ASoC: wm8804: Set idle_bias_off to false Idle bias has been
+ change to remove warning on driver startup
 
 Signed-off-by: Daniel Matuschek <daniel at matuschek.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0068-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch b/target/linux/brcm2708/patches-4.4/0068-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch
index 0088c6e..2c86d25 100644
--- a/target/linux/brcm2708/patches-4.4/0068-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch
+++ b/target/linux/brcm2708/patches-4.4/0068-Add-IQaudIO-Sound-Card-support-for-Raspberry-Pi.patch
@@ -1,7 +1,7 @@
-From b4efbfd86348893b2317131b7d355f64e619ab06 Mon Sep 17 00:00:00 2001
+From 8a4af475fccaff7b70b3d93ef1730001a2376063 Mon Sep 17 00:00:00 2001
 From: Gordon Garrity <gordon at iqaudio.com>
 Date: Sat, 8 Mar 2014 16:56:57 +0000
-Subject: [PATCH 068/423] Add IQaudIO Sound Card support for Raspberry Pi
+Subject: [PATCH] Add IQaudIO Sound Card support for Raspberry Pi
 
 Set a limit of 0dB on Digital Volume Control
 
diff --git a/target/linux/brcm2708/patches-4.4/0069-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch b/target/linux/brcm2708/patches-4.4/0069-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch
index aeadeb6..c3b5999 100644
--- a/target/linux/brcm2708/patches-4.4/0069-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch
+++ b/target/linux/brcm2708/patches-4.4/0069-hid-Reduce-default-mouse-polling-interval-to-60Hz.patch
@@ -1,7 +1,7 @@
-From 2238f04766e0b653319a3291b546ba49d651ce81 Mon Sep 17 00:00:00 2001
+From 8529e2130a7d67c7595746e5cf618e6058c3315c Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Mon, 14 Jul 2014 22:02:09 +0100
-Subject: [PATCH 069/423] hid: Reduce default mouse polling interval to 60Hz
+Subject: [PATCH] hid: Reduce default mouse polling interval to 60Hz
 
 Reduces overhead when using X
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0070-Added-support-for-HiFiBerry-DAC.patch b/target/linux/brcm2708/patches-4.4/0070-Added-support-for-HiFiBerry-DAC.patch
index dcdddf3..a6a55f3 100644
--- a/target/linux/brcm2708/patches-4.4/0070-Added-support-for-HiFiBerry-DAC.patch
+++ b/target/linux/brcm2708/patches-4.4/0070-Added-support-for-HiFiBerry-DAC.patch
@@ -1,7 +1,7 @@
-From 3d116a8311017380e686bdddf80143d1a6cf885e Mon Sep 17 00:00:00 2001
+From aaa93fd9dee0084d0c2d9b50021fe7f2a2457fd7 Mon Sep 17 00:00:00 2001
 From: Daniel Matuschek <info at crazy-audio.com>
 Date: Mon, 4 Aug 2014 10:06:56 +0200
-Subject: [PATCH 070/423] Added support for HiFiBerry DAC+
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0071-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch b/target/linux/brcm2708/patches-4.4/0071-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch
index 7c3fb9d..1d71ac9 100644
--- a/target/linux/brcm2708/patches-4.4/0071-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch
+++ b/target/linux/brcm2708/patches-4.4/0071-Added-driver-for-HiFiBerry-Amp-amplifier-add-on-boar.patch
@@ -1,7 +1,7 @@
-From 7266f151fac2e09d08b71dc0bdd404506dc00055 Mon Sep 17 00:00:00 2001
+From 4f718b9dbd8bd3d9ce465351463b0240116f4945 Mon Sep 17 00:00:00 2001
 From: Daniel Matuschek <info at crazy-audio.com>
 Date: Mon, 4 Aug 2014 11:09:58 +0200
-Subject: [PATCH 071/423] Added driver for HiFiBerry Amp amplifier add-on board
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0072-Update-ds1307-driver-for-device-tree-support.patch b/target/linux/brcm2708/patches-4.4/0072-Update-ds1307-driver-for-device-tree-support.patch
index e3322fb..0259d5e 100644
--- a/target/linux/brcm2708/patches-4.4/0072-Update-ds1307-driver-for-device-tree-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0072-Update-ds1307-driver-for-device-tree-support.patch
@@ -1,7 +1,7 @@
-From 62e75253eba759318d83706ba162a14c53182ff5 Mon Sep 17 00:00:00 2001
+From 5527e5534c58f8555d699d10d2d67afc3aa768e0 Mon Sep 17 00:00:00 2001
 From: Ryan Coe <bluemrp9 at gmail.com>
 Date: Sat, 31 Jan 2015 18:25:49 -0700
-Subject: [PATCH 072/423] Update ds1307 driver for device-tree support
+Subject: [PATCH] Update ds1307 driver for device-tree support
 
 Signed-off-by: Ryan Coe <bluemrp9 at gmail.com>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0073-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch b/target/linux/brcm2708/patches-4.4/0073-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch
index 44b2866..63ac021 100644
--- a/target/linux/brcm2708/patches-4.4/0073-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch
+++ b/target/linux/brcm2708/patches-4.4/0073-BCM270x_DT-Add-pwr_led-and-the-required-input-trigge.patch
@@ -1,8 +1,7 @@
-From 8404a4fe589f3b7a42eb4d3e61719d76dfb83658 Mon Sep 17 00:00:00 2001
+From b19a2e678c297e81b8b9ab6db1f4775be1c678a8 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 6 Feb 2015 13:50:57 +0000
-Subject: [PATCH 073/423] BCM270x_DT: Add pwr_led, and the required "input"
- trigger
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0074-enc28j60-Add-device-tree-compatible-string-and-an-ov.patch b/target/linux/brcm2708/patches-4.4/0074-enc28j60-Add-device-tree-compatible-string-and-an-ov.patch
index b11ad3b..bb88376 100644
--- a/target/linux/brcm2708/patches-4.4/0074-enc28j60-Add-device-tree-compatible-string-and-an-ov.patch
+++ b/target/linux/brcm2708/patches-4.4/0074-enc28j60-Add-device-tree-compatible-string-and-an-ov.patch
@@ -1,8 +1,7 @@
-From ec66f897c2625ff0764c64229b4756b0b6f88a03 Mon Sep 17 00:00:00 2001
+From 2eb050c58ca0620dd91af4e49a584118fadd9398 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 27 Feb 2015 15:10:24 +0000
-Subject: [PATCH 074/423] enc28j60: Add device tree compatible string and an
- overlay
+Subject: [PATCH] enc28j60: Add device tree compatible string and an overlay
 
 ---
  drivers/net/ethernet/microchip/enc28j60.c | 7 +++++++
diff --git a/target/linux/brcm2708/patches-4.4/0075-Add-driver-for-rpi-proto.patch b/target/linux/brcm2708/patches-4.4/0075-Add-driver-for-rpi-proto.patch
index 3ee2aef..20f0dc3 100644
--- a/target/linux/brcm2708/patches-4.4/0075-Add-driver-for-rpi-proto.patch
+++ b/target/linux/brcm2708/patches-4.4/0075-Add-driver-for-rpi-proto.patch
@@ -1,7 +1,7 @@
-From f48bdbd9477a98b4ab42e72c45ce7162eb09c030 Mon Sep 17 00:00:00 2001
+From bae12047250724b26ffd0acdceeede7dfe766f52 Mon Sep 17 00:00:00 2001
 From: Waldemar Brodkorb <wbrodkorb at conet.de>
 Date: Wed, 25 Mar 2015 09:26:17 +0100
-Subject: [PATCH 075/423] Add driver for rpi-proto
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0076-config-Add-default-configs.patch b/target/linux/brcm2708/patches-4.4/0076-config-Add-default-configs.patch
index 7500bb2..4f49348 100644
--- a/target/linux/brcm2708/patches-4.4/0076-config-Add-default-configs.patch
+++ b/target/linux/brcm2708/patches-4.4/0076-config-Add-default-configs.patch
@@ -1,7 +1,7 @@
-From 212f11d668fe451c892828d1882ddc5d8b591621 Mon Sep 17 00:00:00 2001
+From b9a95c01f53d1ae5e2e5d24682d7533ee1f487a8 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Mon, 13 Apr 2015 17:16:29 +0100
-Subject: [PATCH 076/423] config: Add default configs
+Subject: [PATCH] config: Add default configs
 
 ---
  arch/arm/configs/bcm2709_defconfig | 1254 +++++++++++++++++++++++++++++++++++
diff --git a/target/linux/brcm2708/patches-4.4/0077-bcm2835-bcm2835_defconfig.patch b/target/linux/brcm2708/patches-4.4/0077-bcm2835-bcm2835_defconfig.patch
index 28309e2..1726f5a 100644
--- a/target/linux/brcm2708/patches-4.4/0077-bcm2835-bcm2835_defconfig.patch
+++ b/target/linux/brcm2708/patches-4.4/0077-bcm2835-bcm2835_defconfig.patch
@@ -1,7 +1,7 @@
-From cc0e6881fbf29462ec038d308a655c935a9096f7 Mon Sep 17 00:00:00 2001
+From c06545159fe86fd45a9ff570e0a1b7cf04c2ebe0 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Wed, 29 Apr 2015 17:24:02 +0200
-Subject: [PATCH 077/423] bcm2835: bcm2835_defconfig
+Subject: [PATCH] bcm2835: bcm2835_defconfig
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0078-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch b/target/linux/brcm2708/patches-4.4/0078-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch
index 50b55fd..960b19f 100644
--- a/target/linux/brcm2708/patches-4.4/0078-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch
+++ b/target/linux/brcm2708/patches-4.4/0078-rpi-ft5406-Add-touchscreen-driver-for-pi-LCD-display.patch
@@ -1,7 +1,7 @@
-From 6910ec0ffdad51f2a970f8080545c3ce621f3042 Mon Sep 17 00:00:00 2001
+From 1c0f57f0ad2d226ec0d1ef1e91a38c3abdee891a Mon Sep 17 00:00:00 2001
 From: Gordon Hollingworth <gordon at raspberrypi.org>
 Date: Tue, 12 May 2015 14:47:56 +0100
-Subject: [PATCH 078/423] rpi-ft5406: Add touchscreen driver for pi LCD display
+Subject: [PATCH] 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
 
diff --git a/target/linux/brcm2708/patches-4.4/0079-Improve-__copy_to_user-and-__copy_from_user-performa.patch b/target/linux/brcm2708/patches-4.4/0079-Improve-__copy_to_user-and-__copy_from_user-performa.patch
index c685572..235008e 100644
--- a/target/linux/brcm2708/patches-4.4/0079-Improve-__copy_to_user-and-__copy_from_user-performa.patch
+++ b/target/linux/brcm2708/patches-4.4/0079-Improve-__copy_to_user-and-__copy_from_user-performa.patch
@@ -1,8 +1,7 @@
-From efa4432e1c5b0a373108e2f4cefc23d882939e0c Mon Sep 17 00:00:00 2001
+From 74c81d3d8233d758e3e58f9a72dd6370d08077ac Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 13 Oct 2014 11:47:53 +0100
-Subject: [PATCH 079/423] Improve __copy_to_user and __copy_from_user
- performance
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0080-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch b/target/linux/brcm2708/patches-4.4/0080-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch
index 2f6dccc..d02152d 100644
--- a/target/linux/brcm2708/patches-4.4/0080-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch
+++ b/target/linux/brcm2708/patches-4.4/0080-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch
@@ -1,7 +1,7 @@
-From 2fd2d651ece51accc95f9f9fcb8256e7d05a26df Mon Sep 17 00:00:00 2001
+From 24703d6981447867a7092997e29ac911698ec77d Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 25 Jun 2015 12:16:11 +0100
-Subject: [PATCH 080/423] gpio-poweroff: Allow it to work on Raspberry Pi
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0081-spidev-Add-spidev-compatible-string-to-silence-warni.patch b/target/linux/brcm2708/patches-4.4/0081-spidev-Add-spidev-compatible-string-to-silence-warni.patch
index cddfab2..875d319 100644
--- a/target/linux/brcm2708/patches-4.4/0081-spidev-Add-spidev-compatible-string-to-silence-warni.patch
+++ b/target/linux/brcm2708/patches-4.4/0081-spidev-Add-spidev-compatible-string-to-silence-warni.patch
@@ -1,8 +1,7 @@
-From 2cba4b03311a1d55f96d6e759ffb234f67d02080 Mon Sep 17 00:00:00 2001
+From 962e7c5c04075063b86f389043dcfe1ac948a868 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 14 Jul 2015 10:26:09 +0100
-Subject: [PATCH 081/423] spidev: Add "spidev" compatible string to silence
- warning
+Subject: [PATCH] spidev: Add "spidev" compatible string to silence warning
 
 See: https://github.com/raspberrypi/linux/issues/1054
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0082-scripts-dtc-Add-overlay-support.patch b/target/linux/brcm2708/patches-4.4/0082-scripts-dtc-Add-overlay-support.patch
index 8915537..31c02d6 100644
--- a/target/linux/brcm2708/patches-4.4/0082-scripts-dtc-Add-overlay-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0082-scripts-dtc-Add-overlay-support.patch
@@ -1,7 +1,7 @@
-From 48bbf5d241136bc7cf19db80aeb4b09040dde4da Mon Sep 17 00:00:00 2001
+From cd035dbd2c541ab1f517f79d6b7c54948a91ed8b Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 14 Jul 2015 17:00:18 +0100
-Subject: [PATCH 082/423] scripts/dtc: Add overlay support
+Subject: [PATCH] scripts/dtc: Add overlay support
 
 ---
  scripts/dtc/checks.c                 |  119 ++-
diff --git a/target/linux/brcm2708/patches-4.4/0083-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch b/target/linux/brcm2708/patches-4.4/0083-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
index f2b07d2..7d491d5 100644
--- a/target/linux/brcm2708/patches-4.4/0083-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0083-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
@@ -1,7 +1,7 @@
-From cb1da07eaac82084fe16f086989d98b5590a4d61 Mon Sep 17 00:00:00 2001
+From 2b475b95bcf5487bd23b7a636ce36fae98f6e81a Mon Sep 17 00:00:00 2001
 From: Phil Elwell <pelwell at users.noreply.github.com>
 Date: Tue, 14 Jul 2015 14:32:47 +0100
-Subject: [PATCH 083/423] mfd: Add Raspberry Pi Sense HAT core driver
+Subject: [PATCH] mfd: Add Raspberry Pi Sense HAT core driver
 
 ---
  drivers/input/joystick/Kconfig           |   8 +
diff --git a/target/linux/brcm2708/patches-4.4/0084-RaspiDAC3-support.patch b/target/linux/brcm2708/patches-4.4/0084-RaspiDAC3-support.patch
index 035088d..b187046 100644
--- a/target/linux/brcm2708/patches-4.4/0084-RaspiDAC3-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0084-RaspiDAC3-support.patch
@@ -1,7 +1,7 @@
-From 10cbc09000e1d326cff1273f92423c30f9a848a9 Mon Sep 17 00:00:00 2001
+From 89afb4f891b10c2f736cfac22f274e33ebc5256e Mon Sep 17 00:00:00 2001
 From: Jan Grulich <jan at grulich.eu>
 Date: Mon, 24 Aug 2015 16:03:47 +0100
-Subject: [PATCH 084/423] RaspiDAC3 support
+Subject: [PATCH] RaspiDAC3 support
 
 Signed-off-by: Jan Grulich <jan at grulich.eu>
 
diff --git a/target/linux/brcm2708/patches-4.4/0085-tpa6130a2-Add-headphone-switch-control.patch b/target/linux/brcm2708/patches-4.4/0085-tpa6130a2-Add-headphone-switch-control.patch
index 2919498..aca4d75 100644
--- a/target/linux/brcm2708/patches-4.4/0085-tpa6130a2-Add-headphone-switch-control.patch
+++ b/target/linux/brcm2708/patches-4.4/0085-tpa6130a2-Add-headphone-switch-control.patch
@@ -1,7 +1,7 @@
-From dcfb4303fbbc327ec5f1b990d12c79384cd5a8db Mon Sep 17 00:00:00 2001
+From d182e9b8453b663bb0c75f73e1791bf78f2d4bcc Mon Sep 17 00:00:00 2001
 From: Jan Grulich <jan at grulich.eu>
 Date: Mon, 24 Aug 2015 16:02:34 +0100
-Subject: [PATCH 085/423] tpa6130a2: Add headphone switch control
+Subject: [PATCH] tpa6130a2: Add headphone switch control
 
 Signed-off-by: Jan Grulich <jan at grulich.eu>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0086-irq-bcm2835-Fix-building-with-2708.patch b/target/linux/brcm2708/patches-4.4/0086-irq-bcm2835-Fix-building-with-2708.patch
index 4e76983..edd3660 100644
--- a/target/linux/brcm2708/patches-4.4/0086-irq-bcm2835-Fix-building-with-2708.patch
+++ b/target/linux/brcm2708/patches-4.4/0086-irq-bcm2835-Fix-building-with-2708.patch
@@ -1,7 +1,7 @@
-From 20bc23d5669c1a70a03db60768eb3d4b100a658f Mon Sep 17 00:00:00 2001
+From 80bd42a96b7c6a20219803609651acd9e49f4db6 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Mon, 28 Sep 2015 23:38:59 +0100
-Subject: [PATCH 086/423] irq-bcm2835: Fix building with 2708
+Subject: [PATCH] irq-bcm2835: Fix building with 2708
 
 ---
  drivers/irqchip/irq-bcm2835.c | 3 ++-
diff --git a/target/linux/brcm2708/patches-4.4/0087-rpi_display-add-backlight-driver-and-overlay.patch b/target/linux/brcm2708/patches-4.4/0087-rpi_display-add-backlight-driver-and-overlay.patch
index f1a7db8..db292cc 100644
--- a/target/linux/brcm2708/patches-4.4/0087-rpi_display-add-backlight-driver-and-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0087-rpi_display-add-backlight-driver-and-overlay.patch
@@ -1,7 +1,7 @@
-From cabbd4561f8a04b087fb867cedb002cd5170375f Mon Sep 17 00:00:00 2001
+From a8124cba46bd8d4d8fdf9e09fe3046b01ff21c42 Mon Sep 17 00:00:00 2001
 From: P33M <P33M at github.com>
 Date: Wed, 21 Oct 2015 14:55:21 +0100
-Subject: [PATCH 087/423] rpi_display: add backlight driver and overlay
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0088-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch b/target/linux/brcm2708/patches-4.4/0088-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch
index 364f4ff..ef15b9e 100644
--- a/target/linux/brcm2708/patches-4.4/0088-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch
+++ b/target/linux/brcm2708/patches-4.4/0088-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch
@@ -1,7 +1,7 @@
-From c0af79182427336015c026314b7c35a82c24b7aa Mon Sep 17 00:00:00 2001
+From 7e7500431515d41e1498cef0984ef6f9b91cac67 Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Mon, 16 Nov 2015 14:05:35 +0000
-Subject: [PATCH 088/423] bcm2835-dma: Fix up convert to DMA pool
+Subject: [PATCH] bcm2835-dma: Fix up convert to DMA pool
 
 ---
  drivers/dma/bcm2835-dma.c | 36 ++++++++++++++++++++++++++----------
diff --git a/target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch b/target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch
index 8b93b5a..a3bd0a0 100644
--- a/target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch
+++ b/target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch
@@ -1,8 +1,7 @@
-From 644468c76c90757811b1490557d7fa1ab8e9477b Mon Sep 17 00:00:00 2001
+From 93ede86bcccc686cdc933e0711289b0312f0361a Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 11 Nov 2015 11:38:59 +0000
-Subject: [PATCH 089/423] scripts: Multi-platform support for mkknlimg and
- knlinfo
+Subject: [PATCH] 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,
diff --git a/target/linux/brcm2708/patches-4.4/0090-drm-vc4-Add-suport-for-3D-rendering-using-the-V3D-en.patch b/target/linux/brcm2708/patches-4.4/0090-drm-vc4-Add-suport-for-3D-rendering-using-the-V3D-en.patch
index 3a8892b..c3ca128 100644
--- a/target/linux/brcm2708/patches-4.4/0090-drm-vc4-Add-suport-for-3D-rendering-using-the-V3D-en.patch
+++ b/target/linux/brcm2708/patches-4.4/0090-drm-vc4-Add-suport-for-3D-rendering-using-the-V3D-en.patch
@@ -1,8 +1,7 @@
-From b2366bf5c6c6c13d7d3b0e7099c6e71f4f775df6 Mon Sep 17 00:00:00 2001
+From a70ea1cd22e9b4e7278dfea3b2d6fb87e8902ca3 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 2 Mar 2015 13:01:12 -0800
-Subject: [PATCH 090/423] drm/vc4: Add suport for 3D rendering using the V3D
- engine.
+Subject: [PATCH] drm/vc4: Add suport for 3D rendering using the V3D engine.
 
 This is a squash of the out-of-tree development series.  Since that
 series contained code from the first "get a demo triangle rendered
diff --git a/target/linux/brcm2708/patches-4.4/0091-drm-vc4-Force-HDMI-to-connected.patch b/target/linux/brcm2708/patches-4.4/0091-drm-vc4-Force-HDMI-to-connected.patch
index a6f78ef..00a22d3 100644
--- a/target/linux/brcm2708/patches-4.4/0091-drm-vc4-Force-HDMI-to-connected.patch
+++ b/target/linux/brcm2708/patches-4.4/0091-drm-vc4-Force-HDMI-to-connected.patch
@@ -1,7 +1,7 @@
-From ffe4a5fe0c4dfb0c58193b6ff2e5e7eb37b350ad Mon Sep 17 00:00:00 2001
+From 1c356bdfac710d5427cfeac2ce2216d0bb17a6db Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Wed, 14 Oct 2015 11:32:14 -0700
-Subject: [PATCH 091/423] drm/vc4: Force HDMI to connected.
+Subject: [PATCH] drm/vc4: Force HDMI to connected.
 
 For some reason on the downstream tree, the HPD GPIO isn't working.
 
diff --git a/target/linux/brcm2708/patches-4.4/0092-drm-vc4-bo-cache-locking-fixes.patch b/target/linux/brcm2708/patches-4.4/0092-drm-vc4-bo-cache-locking-fixes.patch
index b8df545..df465b4 100644
--- a/target/linux/brcm2708/patches-4.4/0092-drm-vc4-bo-cache-locking-fixes.patch
+++ b/target/linux/brcm2708/patches-4.4/0092-drm-vc4-bo-cache-locking-fixes.patch
@@ -1,7 +1,7 @@
-From ac56795420156559b5381fbf4ad1f607baca2935 Mon Sep 17 00:00:00 2001
+From 99cab11df7185247a24977d8cbcf5d660d0f861b Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 19 Oct 2015 08:23:18 -0700
-Subject: [PATCH 092/423] drm/vc4: bo cache locking fixes.
+Subject: [PATCH] drm/vc4: bo cache locking fixes.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0093-drm-vc4-bo-cache-locking-cleanup.patch b/target/linux/brcm2708/patches-4.4/0093-drm-vc4-bo-cache-locking-cleanup.patch
index 223524e..b0ae22f 100644
--- a/target/linux/brcm2708/patches-4.4/0093-drm-vc4-bo-cache-locking-cleanup.patch
+++ b/target/linux/brcm2708/patches-4.4/0093-drm-vc4-bo-cache-locking-cleanup.patch
@@ -1,7 +1,7 @@
-From 0ff2836cb0c35edfaa40124957f5884527bd4c1e Mon Sep 17 00:00:00 2001
+From beac608ce63d6537a89f3de8080a1c2d16aa1a4c Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 19 Oct 2015 08:29:41 -0700
-Subject: [PATCH 093/423] drm/vc4: bo cache locking cleanup.
+Subject: [PATCH] drm/vc4: bo cache locking cleanup.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch b/target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch
index 8292103..4a29fc1 100644
--- a/target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch
+++ b/target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch
@@ -1,7 +1,7 @@
-From 616e0a78750f2c92c52ac7f6638a8f5a901afdaf Mon Sep 17 00:00:00 2001
+From 454b9dabe51753598732a2d91f742abdd82f3b18 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 19 Oct 2015 08:32:24 -0700
-Subject: [PATCH 094/423] drm/vc4: Use job_lock to protect seqno_cb_list.
+Subject: [PATCH] drm/vc4: Use job_lock to protect seqno_cb_list.
 
 We're (mostly) not supposed to be using struct_mutex in drivers these
 days.
diff --git a/target/linux/brcm2708/patches-4.4/0095-drm-vc4-Drop-struct_mutex-around-CL-validation.patch b/target/linux/brcm2708/patches-4.4/0095-drm-vc4-Drop-struct_mutex-around-CL-validation.patch
index edc6f75..0cf7654 100644
--- a/target/linux/brcm2708/patches-4.4/0095-drm-vc4-Drop-struct_mutex-around-CL-validation.patch
+++ b/target/linux/brcm2708/patches-4.4/0095-drm-vc4-Drop-struct_mutex-around-CL-validation.patch
@@ -1,7 +1,7 @@
-From c554ca947004989217c25487dfadedd633928dc3 Mon Sep 17 00:00:00 2001
+From 72634a2adb667d991249e66e691878cd7e7722a0 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 19 Oct 2015 08:44:35 -0700
-Subject: [PATCH 095/423] drm/vc4: Drop struct_mutex around CL validation.
+Subject: [PATCH] drm/vc4: Drop struct_mutex around CL validation.
 
 We were using it so that we could make sure that shader validation
 state didn't change while we were validating, but now shader
diff --git a/target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch b/target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch
index 1ab2a2f..98412c1 100644
--- a/target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch
+++ b/target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch
@@ -1,7 +1,7 @@
-From c43a9027e42856592c071e5bbc7e38e8f236ce51 Mon Sep 17 00:00:00 2001
+From 81fcdac0b54488a1fea35a0fe2e799511888fa84 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 19 Oct 2015 08:44:35 -0700
-Subject: [PATCH 096/423] drm/vc4: Drop struct_mutex around CL validation.
+Subject: [PATCH] drm/vc4: Drop struct_mutex around CL validation.
 
 We were using it so that we could make sure that shader validation
 state didn't change while we were validating, but now shader
diff --git a/target/linux/brcm2708/patches-4.4/0097-drm-vc4-Add-support-for-more-display-plane-formats.patch b/target/linux/brcm2708/patches-4.4/0097-drm-vc4-Add-support-for-more-display-plane-formats.patch
index 8e479a9..6f0ad8a 100644
--- a/target/linux/brcm2708/patches-4.4/0097-drm-vc4-Add-support-for-more-display-plane-formats.patch
+++ b/target/linux/brcm2708/patches-4.4/0097-drm-vc4-Add-support-for-more-display-plane-formats.patch
@@ -1,7 +1,7 @@
-From ea5d1ac38aba536dcd088cbf8eae229e4651ccbd Mon Sep 17 00:00:00 2001
+From 593759c954e9ac7b237bb4e2136a12952ae107d0 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 20 Oct 2015 13:59:15 +0100
-Subject: [PATCH 097/423] drm/vc4: Add support for more display plane formats.
+Subject: [PATCH] drm/vc4: Add support for more display plane formats.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0098-drm-vc4-No-need-to-stop-the-stopped-threads.patch b/target/linux/brcm2708/patches-4.4/0098-drm-vc4-No-need-to-stop-the-stopped-threads.patch
index 004c1a3..18dffd6 100644
--- a/target/linux/brcm2708/patches-4.4/0098-drm-vc4-No-need-to-stop-the-stopped-threads.patch
+++ b/target/linux/brcm2708/patches-4.4/0098-drm-vc4-No-need-to-stop-the-stopped-threads.patch
@@ -1,7 +1,7 @@
-From 910b5fa15403115a76d5ee2a4f7932b051454e9c Mon Sep 17 00:00:00 2001
+From ab2cd74a31d3da208cc6264ab79c1c0ee503498d Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 23 Oct 2015 12:31:56 +0100
-Subject: [PATCH 098/423] drm/vc4: No need to stop the stopped threads.
+Subject: [PATCH] drm/vc4: No need to stop the stopped threads.
 
 This was leftover debug code from the hackdriver.  We never submit
 unless the thread is already idle.
diff --git a/target/linux/brcm2708/patches-4.4/0099-drm-vc4-Remove-extra-barrier-s-aroudn-CTnCA-CTnEA-se.patch b/target/linux/brcm2708/patches-4.4/0099-drm-vc4-Remove-extra-barrier-s-aroudn-CTnCA-CTnEA-se.patch
index 47bde13..432a60e 100644
--- a/target/linux/brcm2708/patches-4.4/0099-drm-vc4-Remove-extra-barrier-s-aroudn-CTnCA-CTnEA-se.patch
+++ b/target/linux/brcm2708/patches-4.4/0099-drm-vc4-Remove-extra-barrier-s-aroudn-CTnCA-CTnEA-se.patch
@@ -1,8 +1,7 @@
-From bc2764818666e6b24c4dc41e65a472a3fd0bdd74 Mon Sep 17 00:00:00 2001
+From 7ab57c24a8c094163c2a5da180edbba0c45b5765 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 23 Oct 2015 12:33:43 +0100
-Subject: [PATCH 099/423] drm/vc4: Remove extra barrier()s aroudn CTnCA/CTnEA
- setup.
+Subject: [PATCH] drm/vc4: Remove extra barrier()s aroudn CTnCA/CTnEA setup.
 
 The writel() that these expand to already does barriers.
 
diff --git a/target/linux/brcm2708/patches-4.4/0100-drm-vc4-Fix-a-typo-in-a-V3D-debug-register.patch b/target/linux/brcm2708/patches-4.4/0100-drm-vc4-Fix-a-typo-in-a-V3D-debug-register.patch
index ca8c8b6..e15cae8 100644
--- a/target/linux/brcm2708/patches-4.4/0100-drm-vc4-Fix-a-typo-in-a-V3D-debug-register.patch
+++ b/target/linux/brcm2708/patches-4.4/0100-drm-vc4-Fix-a-typo-in-a-V3D-debug-register.patch
@@ -1,7 +1,7 @@
-From b474d69ad1b4e5032c565868082e36f64854106e Mon Sep 17 00:00:00 2001
+From b1cfa411e68e4afc1d8bedda4ae1924108a5c2fa Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 23 Oct 2015 14:57:22 +0100
-Subject: [PATCH 100/423] drm/vc4: Fix a typo in a V3D debug register.
+Subject: [PATCH] drm/vc4: Fix a typo in a V3D debug register.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0101-drm-vc4-Enable-VC4-modules-and-increase-CMA-size-wit.patch b/target/linux/brcm2708/patches-4.4/0101-drm-vc4-Enable-VC4-modules-and-increase-CMA-size-wit.patch
index ff46406..5cf4a64 100644
--- a/target/linux/brcm2708/patches-4.4/0101-drm-vc4-Enable-VC4-modules-and-increase-CMA-size-wit.patch
+++ b/target/linux/brcm2708/patches-4.4/0101-drm-vc4-Enable-VC4-modules-and-increase-CMA-size-wit.patch
@@ -1,8 +1,8 @@
-From 29e3799c22dba7bb579a8caacc957f888965b2dc Mon Sep 17 00:00:00 2001
+From 7a4238c79a815c0cb87eecb30897f6710f5e4a82 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 2 Nov 2015 17:07:33 +0000
-Subject: [PATCH 101/423] drm/vc4: Enable VC4 modules, and increase CMA size
- with overlay
+Subject: [PATCH] drm/vc4: Enable VC4 modules, and increase CMA size with
+ overlay
 
 If using the overlay, be careful not to boot to GUI or run startx,
 or the Pi will almost hang, reporting stalls in kernel threads.
diff --git a/target/linux/brcm2708/patches-4.4/0102-squash-fixups.patch b/target/linux/brcm2708/patches-4.4/0102-squash-fixups.patch
index eb92ddf..f904656 100644
--- a/target/linux/brcm2708/patches-4.4/0102-squash-fixups.patch
+++ b/target/linux/brcm2708/patches-4.4/0102-squash-fixups.patch
@@ -1,7 +1,7 @@
-From 9727788fde8cab56ee1f6957aa6a0d369401dfbb Mon Sep 17 00:00:00 2001
+From 505327ef0c6712565139bfbae6fde8c881566088 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 18 Nov 2015 18:29:58 +0000
-Subject: [PATCH 102/423] squash: fixups
+Subject: [PATCH] squash: fixups
 
 ---
  drivers/gpu/drm/vc4/Kconfig   | 2 +-
diff --git a/target/linux/brcm2708/patches-4.4/0103-squash-add-missing-vc4-kms-v3d-overlay.dtb-to-makefi.patch b/target/linux/brcm2708/patches-4.4/0103-squash-add-missing-vc4-kms-v3d-overlay.dtb-to-makefi.patch
index d8f12f3..ee54a40 100644
--- a/target/linux/brcm2708/patches-4.4/0103-squash-add-missing-vc4-kms-v3d-overlay.dtb-to-makefi.patch
+++ b/target/linux/brcm2708/patches-4.4/0103-squash-add-missing-vc4-kms-v3d-overlay.dtb-to-makefi.patch
@@ -1,8 +1,7 @@
-From aefe0ee79893899fcbbaeac2c1ea27828d5b9645 Mon Sep 17 00:00:00 2001
+From fd632236b26e841d032acc5fce6cdd4d50780daa Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 18 Nov 2015 20:26:03 +0000
-Subject: [PATCH 103/423] squash: add missing vc4-kms-v3d-overlay.dtb to
- makefile
+Subject: [PATCH] squash: add missing vc4-kms-v3d-overlay.dtb to makefile
 
 ---
  arch/arm/boot/dts/overlays/Makefile | 1 +
diff --git a/target/linux/brcm2708/patches-4.4/0104-clk-bcm2835-Also-build-the-driver-for-downstream-ker.patch b/target/linux/brcm2708/patches-4.4/0104-clk-bcm2835-Also-build-the-driver-for-downstream-ker.patch
index 93b752e..3cf0524 100644
--- a/target/linux/brcm2708/patches-4.4/0104-clk-bcm2835-Also-build-the-driver-for-downstream-ker.patch
+++ b/target/linux/brcm2708/patches-4.4/0104-clk-bcm2835-Also-build-the-driver-for-downstream-ker.patch
@@ -1,8 +1,7 @@
-From 02f9b12f8c9335eb9312bbde0f2a06ae52d35191 Mon Sep 17 00:00:00 2001
+From d8d6facbd16527ccc11a926e769ec3e86f60dcdb Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 12 Oct 2015 11:23:34 -0700
-Subject: [PATCH 104/423] clk: bcm2835: Also build the driver for downstream
- kernels.
+Subject: [PATCH] clk: bcm2835: Also build the driver for downstream kernels.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0105-dts-Added-overlay-for-gpio_ir_recv-driver.patch b/target/linux/brcm2708/patches-4.4/0105-dts-Added-overlay-for-gpio_ir_recv-driver.patch
index 25cecf2..da3fcce 100644
--- a/target/linux/brcm2708/patches-4.4/0105-dts-Added-overlay-for-gpio_ir_recv-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0105-dts-Added-overlay-for-gpio_ir_recv-driver.patch
@@ -1,7 +1,7 @@
-From 9bf65a0b3903fdd475b8c6a59426c415ecdf3ec3 Mon Sep 17 00:00:00 2001
+From d47719348c1c616d8ffa42d9ae8827147c0251ea Mon Sep 17 00:00:00 2001
 From: Holger Steinhaus <hsteinhaus at gmx.de>
 Date: Sat, 14 Nov 2015 18:37:43 +0100
-Subject: [PATCH 105/423] dts: Added overlay for gpio_ir_recv driver
+Subject: [PATCH] dts: Added overlay for gpio_ir_recv driver
 
 ---
  arch/arm/boot/dts/overlays/Makefile            |  1 +
diff --git a/target/linux/brcm2708/patches-4.4/0106-Build-i2c_gpio-module-and-add-a-device-tree-overlay-.patch b/target/linux/brcm2708/patches-4.4/0106-Build-i2c_gpio-module-and-add-a-device-tree-overlay-.patch
index f3cecaa..5b3a401 100644
--- a/target/linux/brcm2708/patches-4.4/0106-Build-i2c_gpio-module-and-add-a-device-tree-overlay-.patch
+++ b/target/linux/brcm2708/patches-4.4/0106-Build-i2c_gpio-module-and-add-a-device-tree-overlay-.patch
@@ -1,8 +1,8 @@
-From 377a971a6d66cd45f011daeb17eaf6cbba59f54c Mon Sep 17 00:00:00 2001
+From 85b8ee017f92d4aa0e004e01878cab3ba5b88851 Mon Sep 17 00:00:00 2001
 From: Alistair Buxton <a.j.buxton at gmail.com>
 Date: Sun, 1 Nov 2015 22:27:56 +0000
-Subject: [PATCH 106/423] Build i2c_gpio module and add a device tree overlay
- to configure it.
+Subject: [PATCH] Build i2c_gpio module and add a device tree overlay to
+ configure it.
 
 ---
  arch/arm/boot/dts/overlays/Makefile             |  1 +
diff --git a/target/linux/brcm2708/patches-4.4/0107-New-overlay-for-PiScreen2r.patch b/target/linux/brcm2708/patches-4.4/0107-New-overlay-for-PiScreen2r.patch
index 22ed096..94bb91f 100644
--- a/target/linux/brcm2708/patches-4.4/0107-New-overlay-for-PiScreen2r.patch
+++ b/target/linux/brcm2708/patches-4.4/0107-New-overlay-for-PiScreen2r.patch
@@ -1,7 +1,7 @@
-From 40fb51ca3709e962289b659216d5fa29758b5044 Mon Sep 17 00:00:00 2001
+From 1e78b98d827b57373b0a984af0ceb21e576b6037 Mon Sep 17 00:00:00 2001
 From: mwilliams03 <mark.mwilliams at gmail.com>
 Date: Sun, 18 Oct 2015 17:07:24 -0700
-Subject: [PATCH 107/423] New overlay for PiScreen2r
+Subject: [PATCH] New overlay for PiScreen2r
 
 ---
  arch/arm/boot/dts/overlays/Makefile               |   1 +
diff --git a/target/linux/brcm2708/patches-4.4/0108-dts-Added-overlay-for-Adafruit-PiTFT-2.8-capacitive-.patch b/target/linux/brcm2708/patches-4.4/0108-dts-Added-overlay-for-Adafruit-PiTFT-2.8-capacitive-.patch
index a840bb8..3deca39 100644
--- a/target/linux/brcm2708/patches-4.4/0108-dts-Added-overlay-for-Adafruit-PiTFT-2.8-capacitive-.patch
+++ b/target/linux/brcm2708/patches-4.4/0108-dts-Added-overlay-for-Adafruit-PiTFT-2.8-capacitive-.patch
@@ -1,8 +1,8 @@
-From 413f3dadca77a06ea8f0ed1f83a2adc99cdc1fe0 Mon Sep 17 00:00:00 2001
+From cd12f8bd219b60685803c427847909f5151d8143 Mon Sep 17 00:00:00 2001
 From: Ondrej Wisniewski <ondrej.wisniewski at gmail.com>
 Date: Fri, 6 Nov 2015 15:01:28 +0100
-Subject: [PATCH 108/423] dts: Added overlay for Adafruit PiTFT 2.8" capacitive
- touch screen
+Subject: [PATCH] dts: Added overlay for Adafruit PiTFT 2.8" capacitive touch
+ screen
 
 ---
  arch/arm/boot/dts/overlays/Makefile                |  1 +
diff --git a/target/linux/brcm2708/patches-4.4/0109-Add-support-for-the-HiFiBerry-DAC-Pro.patch b/target/linux/brcm2708/patches-4.4/0109-Add-support-for-the-HiFiBerry-DAC-Pro.patch
index a1834b6..cce82ef 100644
--- a/target/linux/brcm2708/patches-4.4/0109-Add-support-for-the-HiFiBerry-DAC-Pro.patch
+++ b/target/linux/brcm2708/patches-4.4/0109-Add-support-for-the-HiFiBerry-DAC-Pro.patch
@@ -1,7 +1,7 @@
-From 03155cfced4c9bf25f22f125aeeb820ca4d08e64 Mon Sep 17 00:00:00 2001
+From bc4c561b1b11b068263addb6ca5055136859cc5e Mon Sep 17 00:00:00 2001
 From: Stuart MacLean <stuart at hifiberry.com>
 Date: Fri, 2 Oct 2015 15:12:59 +0100
-Subject: [PATCH 109/423] Add support for the HiFiBerry DAC+ Pro.
+Subject: [PATCH] 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.
 
diff --git a/target/linux/brcm2708/patches-4.4/0110-BCM270X_DT-Add-at86rf233-overlay.patch b/target/linux/brcm2708/patches-4.4/0110-BCM270X_DT-Add-at86rf233-overlay.patch
index c3b98b5..614ab0c 100644
--- a/target/linux/brcm2708/patches-4.4/0110-BCM270X_DT-Add-at86rf233-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0110-BCM270X_DT-Add-at86rf233-overlay.patch
@@ -1,7 +1,7 @@
-From 787c2642cbfe90d0ea548926f3eab12bc5d3e378 Mon Sep 17 00:00:00 2001
+From c952f560bf95867368542c0f2e46abe536ad9afc Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 5 Oct 2015 10:47:45 +0100
-Subject: [PATCH 110/423] BCM270X_DT: Add at86rf233 overlay
+Subject: [PATCH] BCM270X_DT: Add at86rf233 overlay
 
 Add an overlay to support the Atmel AT86RF233 WPAN transceiver on spi0.0.
 
diff --git a/target/linux/brcm2708/patches-4.4/0111-mm-Remove-the-PFN-busy-warning.patch b/target/linux/brcm2708/patches-4.4/0111-mm-Remove-the-PFN-busy-warning.patch
index 59e61b7..d2e3547 100644
--- a/target/linux/brcm2708/patches-4.4/0111-mm-Remove-the-PFN-busy-warning.patch
+++ b/target/linux/brcm2708/patches-4.4/0111-mm-Remove-the-PFN-busy-warning.patch
@@ -1,7 +1,7 @@
-From 2da545ccd7f9bada3a8afe11c735f772a1907acc Mon Sep 17 00:00:00 2001
+From daf482fad156e7bf39e3e2a26183452068796e7d Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Thu, 18 Dec 2014 16:07:15 -0800
-Subject: [PATCH 111/423] mm: Remove the PFN busy warning
+Subject: [PATCH] mm: Remove the PFN busy warning
 
 See commit dae803e165a11bc88ca8dbc07a11077caf97bbcb -- the warning is
 expected sometimes when using CMA.  However, that commit still spams
diff --git a/target/linux/brcm2708/patches-4.4/0112-drm-Put-an-optional-field-in-the-driver-struct-for-G.patch b/target/linux/brcm2708/patches-4.4/0112-drm-Put-an-optional-field-in-the-driver-struct-for-G.patch
index 6777acd..91694ad 100644
--- a/target/linux/brcm2708/patches-4.4/0112-drm-Put-an-optional-field-in-the-driver-struct-for-G.patch
+++ b/target/linux/brcm2708/patches-4.4/0112-drm-Put-an-optional-field-in-the-driver-struct-for-G.patch
@@ -1,8 +1,8 @@
-From 1936051dc9366b134607f626e92a6c58f3a645e6 Mon Sep 17 00:00:00 2001
+From a1fbf2a0424262c6f2d974aa5a6e71d47288e1a8 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Wed, 19 Nov 2014 12:06:38 -0800
-Subject: [PATCH 112/423] drm: Put an optional field in the driver struct for
- GEM obj struct size.
+Subject: [PATCH] drm: Put an optional field in the driver struct for GEM obj
+ struct size.
 
 This allows a driver to derive from the CMA object without copying all
 of the code.
diff --git a/target/linux/brcm2708/patches-4.4/0113-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch b/target/linux/brcm2708/patches-4.4/0113-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch
index efb7f9f..16dbe75 100644
--- a/target/linux/brcm2708/patches-4.4/0113-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch
+++ b/target/linux/brcm2708/patches-4.4/0113-drm-vc4-Add-an-interface-for-capturing-the-GPU-state.patch
@@ -1,8 +1,8 @@
-From 513851ff3c5601e7ebcbc0d22df31a0c8ef141e6 Mon Sep 17 00:00:00 2001
+From 66b424ecf55290f394d004e13f800bec1b44a87a Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 30 Oct 2015 10:09:02 -0700
-Subject: [PATCH 113/423] drm/vc4: Add an interface for capturing the GPU state
- after a hang.
+Subject: [PATCH] drm/vc4: Add an interface for capturing the GPU state after a
+ hang.
 
 This can be parsed with vc4-gpu-tools tools for trying to figure out
 what was going on.
diff --git a/target/linux/brcm2708/patches-4.4/0114-drm-vc4-Update-a-bunch-of-code-to-match-upstream-sub.patch b/target/linux/brcm2708/patches-4.4/0114-drm-vc4-Update-a-bunch-of-code-to-match-upstream-sub.patch
index d7065fc..d99aca9 100644
--- a/target/linux/brcm2708/patches-4.4/0114-drm-vc4-Update-a-bunch-of-code-to-match-upstream-sub.patch
+++ b/target/linux/brcm2708/patches-4.4/0114-drm-vc4-Update-a-bunch-of-code-to-match-upstream-sub.patch
@@ -1,8 +1,7 @@
-From 20619faf6bc00265bb70b0ef189a1f8618f3e508 Mon Sep 17 00:00:00 2001
+From c6f6dec9e9b7956d7261f11caf6e2a0b78a54d89 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 4 Dec 2015 11:35:34 -0800
-Subject: [PATCH 114/423] drm/vc4: Update a bunch of code to match upstream
- submission.
+Subject: [PATCH] drm/vc4: Update a bunch of code to match upstream submission.
 
 This gets almost everything matching, except for the MSAA support and
 using generic PM domains.
diff --git a/target/linux/brcm2708/patches-4.4/0115-drm-Use-the-driver-s-gem_object_free-function-from-C.patch b/target/linux/brcm2708/patches-4.4/0115-drm-Use-the-driver-s-gem_object_free-function-from-C.patch
index 3b99f25..f7eaf91 100644
--- a/target/linux/brcm2708/patches-4.4/0115-drm-Use-the-driver-s-gem_object_free-function-from-C.patch
+++ b/target/linux/brcm2708/patches-4.4/0115-drm-Use-the-driver-s-gem_object_free-function-from-C.patch
@@ -1,8 +1,8 @@
-From ea38a9fb0b8312167361ea9957b4f7a3233492aa Mon Sep 17 00:00:00 2001
+From 3fb1fdfad76d7ebbe1c78e262f57e636cfa2545d Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 11 Dec 2015 19:45:03 -0800
-Subject: [PATCH 115/423] drm: Use the driver's gem_object_free function from
- CMA helpers.
+Subject: [PATCH] drm: Use the driver's gem_object_free function from CMA
+ helpers.
 
 VC4 wraps the CMA objects in its own structures, so it needs to do its
 own teardown (waiting for GPU to finish, updating bo_stats tracking).
diff --git a/target/linux/brcm2708/patches-4.4/0116-drm-vc4-Add-support-for-MSAA-rendering.patch b/target/linux/brcm2708/patches-4.4/0116-drm-vc4-Add-support-for-MSAA-rendering.patch
index c4546a0..d8cc646 100644
--- a/target/linux/brcm2708/patches-4.4/0116-drm-vc4-Add-support-for-MSAA-rendering.patch
+++ b/target/linux/brcm2708/patches-4.4/0116-drm-vc4-Add-support-for-MSAA-rendering.patch
@@ -1,7 +1,7 @@
-From 37a1421ea161a9da980cae4ff81a3fb5521d5090 Mon Sep 17 00:00:00 2001
+From 3fcab2551c8649da57ad5fc5166f85edd870f641 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 17 Jul 2015 13:15:50 -0700
-Subject: [PATCH 116/423] drm/vc4: Add support for MSAA rendering.
+Subject: [PATCH] drm/vc4: Add support for MSAA rendering.
 
 For MSAA, you set a bit in the binner that halves the size of tiles in
 each direction, so you can pack 4 samples per pixel in the tile
diff --git a/target/linux/brcm2708/patches-4.4/0117-drm-vc4-A-few-more-non-functional-changes-to-sync-to.patch b/target/linux/brcm2708/patches-4.4/0117-drm-vc4-A-few-more-non-functional-changes-to-sync-to.patch
index 3a6798f..8cf3997 100644
--- a/target/linux/brcm2708/patches-4.4/0117-drm-vc4-A-few-more-non-functional-changes-to-sync-to.patch
+++ b/target/linux/brcm2708/patches-4.4/0117-drm-vc4-A-few-more-non-functional-changes-to-sync-to.patch
@@ -1,7 +1,7 @@
-From a7d3659d3eefde8fc449f0ca33584a9490165d15 Mon Sep 17 00:00:00 2001
+From 4c19d1b2713fd0452edfc479cea4628229048994 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 8 Dec 2015 14:00:43 -0800
-Subject: [PATCH 117/423] drm/vc4: A few more non-functional changes to sync to
+Subject: [PATCH] drm/vc4: A few more non-functional changes to sync to
  upstream.
 
 At this point all that's left is the force-enable of HDMI connector,
diff --git a/target/linux/brcm2708/patches-4.4/0118-drm-vc4-Use-hpd-gpios-for-HDMI-GPIO-like-what-landed.patch b/target/linux/brcm2708/patches-4.4/0118-drm-vc4-Use-hpd-gpios-for-HDMI-GPIO-like-what-landed.patch
index f4627ae..ea9ba0b 100644
--- a/target/linux/brcm2708/patches-4.4/0118-drm-vc4-Use-hpd-gpios-for-HDMI-GPIO-like-what-landed.patch
+++ b/target/linux/brcm2708/patches-4.4/0118-drm-vc4-Use-hpd-gpios-for-HDMI-GPIO-like-what-landed.patch
@@ -1,8 +1,8 @@
-From d3e66a857abb05fe9eb367e0a8160584ec1db1a7 Mon Sep 17 00:00:00 2001
+From b45971f3b371a7e50bfa2ebd8545abaf299182d5 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 15 Dec 2015 23:46:32 +0000
-Subject: [PATCH 118/423] drm/vc4: Use "hpd-gpios" for HDMI GPIO, like what
- landed upstream.
+Subject: [PATCH] drm/vc4: Use "hpd-gpios" for HDMI GPIO, like what landed
+ upstream.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0119-drm-vc4-Synchronize-validation-code-for-v2-submissio.patch b/target/linux/brcm2708/patches-4.4/0119-drm-vc4-Synchronize-validation-code-for-v2-submissio.patch
index 4fe630f..0a85518 100644
--- a/target/linux/brcm2708/patches-4.4/0119-drm-vc4-Synchronize-validation-code-for-v2-submissio.patch
+++ b/target/linux/brcm2708/patches-4.4/0119-drm-vc4-Synchronize-validation-code-for-v2-submissio.patch
@@ -1,8 +1,8 @@
-From 10caa2cc688e4837723da80f010e89a79e040c26 Mon Sep 17 00:00:00 2001
+From 837fa77c227eda3ebdab64b24acb3dc94599e76d Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 7 Dec 2015 12:35:01 -0800
-Subject: [PATCH 119/423] drm/vc4: Synchronize validation code for v2
- submission upstream.
+Subject: [PATCH] drm/vc4: Synchronize validation code for v2 submission
+ upstream.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0120-MMC-Do-not-use-mmc_debug-if-CONFIG_MMC_BCM2835-is-no.patch b/target/linux/brcm2708/patches-4.4/0120-MMC-Do-not-use-mmc_debug-if-CONFIG_MMC_BCM2835-is-no.patch
index 4059802..4a81e5a 100644
--- a/target/linux/brcm2708/patches-4.4/0120-MMC-Do-not-use-mmc_debug-if-CONFIG_MMC_BCM2835-is-no.patch
+++ b/target/linux/brcm2708/patches-4.4/0120-MMC-Do-not-use-mmc_debug-if-CONFIG_MMC_BCM2835-is-no.patch
@@ -1,8 +1,7 @@
-From f6d5c3deefad3bf030e1410afeac8f562ed7be4d Mon Sep 17 00:00:00 2001
+From 6a602d99694b69c8cd19970f7d2b019dadaaaa09 Mon Sep 17 00:00:00 2001
 From: janluca <janluca at zedat.fu-berlin.de>
 Date: Sun, 27 Dec 2015 14:34:04 +0100
-Subject: [PATCH 120/423] MMC: Do not use mmc_debug if CONFIG_MMC_BCM2835 is
- not set
+Subject: [PATCH] MMC: Do not use mmc_debug if CONFIG_MMC_BCM2835 is not set
 
 If CONFIG_MMC_BCM2835 was not set the compiling of the kernel failed
 since mmc_debug was not defined but used in drivers/mmc/core/quirks.c.
diff --git a/target/linux/brcm2708/patches-4.4/0121-Extend-clock-timeout-fix-modprobe-baudrate-parameter.patch b/target/linux/brcm2708/patches-4.4/0121-Extend-clock-timeout-fix-modprobe-baudrate-parameter.patch
index 0969926..eb39fff 100644
--- a/target/linux/brcm2708/patches-4.4/0121-Extend-clock-timeout-fix-modprobe-baudrate-parameter.patch
+++ b/target/linux/brcm2708/patches-4.4/0121-Extend-clock-timeout-fix-modprobe-baudrate-parameter.patch
@@ -1,8 +1,7 @@
-From 4baa30f9ca6367b354e98536f838d0b60499a51e Mon Sep 17 00:00:00 2001
+From 29171b2e2b69a4edb84bd228e1d9ea0451e7dcd2 Mon Sep 17 00:00:00 2001
 From: Devon Fyson <devonfyson at gmail.com>
 Date: Wed, 30 Dec 2015 16:40:47 -0500
-Subject: [PATCH 121/423] Extend clock timeout, fix modprobe baudrate
- parameter.
+Subject: [PATCH] Extend clock timeout, fix modprobe baudrate parameter.
 
 Set the BSC_CLKT clock streching timeout to 35ms as per SMBus specs.\n- Increase priority of baudrate parameter passed to modprobe (in /etc/modprobe.d/*.conf or command line). Currently custom baudrates don't work because they are overridden by clock-frequency in the platform_device passed to the function.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0122-bcm270x_dt-Add-dwc2-and-dwc-otg-overlays.patch b/target/linux/brcm2708/patches-4.4/0122-bcm270x_dt-Add-dwc2-and-dwc-otg-overlays.patch
index 39a0733..03a2eca 100644
--- a/target/linux/brcm2708/patches-4.4/0122-bcm270x_dt-Add-dwc2-and-dwc-otg-overlays.patch
+++ b/target/linux/brcm2708/patches-4.4/0122-bcm270x_dt-Add-dwc2-and-dwc-otg-overlays.patch
@@ -1,7 +1,7 @@
-From 0af77632d0318f69474e46a0473e64854562842c Mon Sep 17 00:00:00 2001
+From 9715590cd5024b1eb657d06a6eb60a48751e221c Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Thu, 31 Dec 2015 16:44:58 +0100
-Subject: [PATCH 122/423] bcm270x_dt: Add dwc2 and dwc-otg overlays
+Subject: [PATCH] bcm270x_dt: Add dwc2 and dwc-otg overlays
 
 ---
  arch/arm/boot/dts/overlays/Makefile            |  2 ++
diff --git a/target/linux/brcm2708/patches-4.4/0123-BCM270X_DT-Add-the-sdtweak-overlay-for-tuning-sdhost.patch b/target/linux/brcm2708/patches-4.4/0123-BCM270X_DT-Add-the-sdtweak-overlay-for-tuning-sdhost.patch
index 2bdcdc1..abb58a3 100644
--- a/target/linux/brcm2708/patches-4.4/0123-BCM270X_DT-Add-the-sdtweak-overlay-for-tuning-sdhost.patch
+++ b/target/linux/brcm2708/patches-4.4/0123-BCM270X_DT-Add-the-sdtweak-overlay-for-tuning-sdhost.patch
@@ -1,8 +1,7 @@
-From 2d13c12edb132e32ab3e500cd1f783cc7bba84ac Mon Sep 17 00:00:00 2001
+From 5c8479b7e82155eed9e86658935dda7bf8202b8d Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 4 Jan 2016 14:42:17 +0000
-Subject: [PATCH 123/423] BCM270X_DT: Add the sdtweak overlay, for tuning
- sdhost
+Subject: [PATCH] BCM270X_DT: Add the sdtweak overlay, for tuning sdhost
 
 The sdhost overlay declares the sdhost interface and allows parameters
 to be set. This is overkill for situations where the user just wants to
diff --git a/target/linux/brcm2708/patches-4.4/0124-bcm2835-mmc-Don-t-override-bus-width-capabilities-fr.patch b/target/linux/brcm2708/patches-4.4/0124-bcm2835-mmc-Don-t-override-bus-width-capabilities-fr.patch
index 5f379bc..907b1fe 100644
--- a/target/linux/brcm2708/patches-4.4/0124-bcm2835-mmc-Don-t-override-bus-width-capabilities-fr.patch
+++ b/target/linux/brcm2708/patches-4.4/0124-bcm2835-mmc-Don-t-override-bus-width-capabilities-fr.patch
@@ -1,8 +1,8 @@
-From a49c5fc29582017da47598db437cf253e7620e7e Mon Sep 17 00:00:00 2001
+From 5e45aa3d7aa8a59d82fb57cafd341e2c8c908f81 Mon Sep 17 00:00:00 2001
 From: Andrew Litt <ajlitt at splunge.net>
 Date: Mon, 11 Jan 2016 07:54:21 +0000
-Subject: [PATCH 124/423] bcm2835-mmc: Don't override bus width capabilities
- from devicetree
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0125-SDIO-overlay-add-bus_width-parameter.patch b/target/linux/brcm2708/patches-4.4/0125-SDIO-overlay-add-bus_width-parameter.patch
index 6de7437..6a3d874 100644
--- a/target/linux/brcm2708/patches-4.4/0125-SDIO-overlay-add-bus_width-parameter.patch
+++ b/target/linux/brcm2708/patches-4.4/0125-SDIO-overlay-add-bus_width-parameter.patch
@@ -1,7 +1,7 @@
-From c7f6e0ebbdbff464b2eaad598adb9e592e7e5a21 Mon Sep 17 00:00:00 2001
+From bafb94810a17cd66baa5d220f6005d8f1db1e516 Mon Sep 17 00:00:00 2001
 From: Andrew Litt <ajlitt at splunge.net>
 Date: Mon, 11 Jan 2016 07:55:54 +0000
-Subject: [PATCH 125/423] SDIO-overlay: add bus_width parameter
+Subject: [PATCH] SDIO-overlay: add bus_width parameter
 
 Allow setting of the SDIO bus width capability of the bcm2835-mmc
 host.  This is helpful when only a 1 bit wide bus is connected
diff --git a/target/linux/brcm2708/patches-4.4/0126-bcm2835-extend-allowed-range-of-channels-and-sampler.patch b/target/linux/brcm2708/patches-4.4/0126-bcm2835-extend-allowed-range-of-channels-and-sampler.patch
index fca4df9..b9c2918 100644
--- a/target/linux/brcm2708/patches-4.4/0126-bcm2835-extend-allowed-range-of-channels-and-sampler.patch
+++ b/target/linux/brcm2708/patches-4.4/0126-bcm2835-extend-allowed-range-of-channels-and-sampler.patch
@@ -1,8 +1,7 @@
-From 05c2e0a07f9b7f7f348f05f127871be618b66ad8 Mon Sep 17 00:00:00 2001
+From 0b6eb4c6015ead6da180ef4a4da695b660bcb99f Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Wed, 13 Jan 2016 19:41:45 +0100
-Subject: [PATCH 126/423] bcm2835: extend allowed range of channels and
- samplerates
+Subject: [PATCH] bcm2835: extend allowed range of channels and samplerates
 
 Allow everything the videocore accepts.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0127-bcm2835-restrict-channels-rate-to-8-960000.patch b/target/linux/brcm2708/patches-4.4/0127-bcm2835-restrict-channels-rate-to-8-960000.patch
index 0883222..52601b1 100644
--- a/target/linux/brcm2708/patches-4.4/0127-bcm2835-restrict-channels-rate-to-8-960000.patch
+++ b/target/linux/brcm2708/patches-4.4/0127-bcm2835-restrict-channels-rate-to-8-960000.patch
@@ -1,7 +1,7 @@
-From eeb06bfcdcc321f270753d6ba822c9212c49db00 Mon Sep 17 00:00:00 2001
+From 4b235ff95b0fcfa9731c1159402f4fef0e26f1d3 Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Wed, 13 Jan 2016 19:42:18 +0100
-Subject: [PATCH 127/423] bcm2835: restrict channels*rate to 8*960000
+Subject: [PATCH] bcm2835: restrict channels*rate to 8*960000
 
 This is required at least for SPDIF. If the bitrate goes above,
 videocore will either resample the audio or corrupt it due to
diff --git a/target/linux/brcm2708/patches-4.4/0128-rpi-update-vc_vchi_audioserv_defs.h.patch b/target/linux/brcm2708/patches-4.4/0128-rpi-update-vc_vchi_audioserv_defs.h.patch
index 8efedf0..a6b211d 100644
--- a/target/linux/brcm2708/patches-4.4/0128-rpi-update-vc_vchi_audioserv_defs.h.patch
+++ b/target/linux/brcm2708/patches-4.4/0128-rpi-update-vc_vchi_audioserv_defs.h.patch
@@ -1,7 +1,7 @@
-From 74e3804dcc18b79f64c2f9d36e5481277ee2f7eb Mon Sep 17 00:00:00 2001
+From fa0c088b7f7372b6946a2f2139f0e391cace34d6 Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Wed, 13 Jan 2016 19:42:48 +0100
-Subject: [PATCH 128/423] rpi: update vc_vchi_audioserv_defs.h
+Subject: [PATCH] rpi: update vc_vchi_audioserv_defs.h
 
 Add audioserv 3 extensions. The changes were taken from the paste
 linked here:
diff --git a/target/linux/brcm2708/patches-4.4/0129-bcm2835-implement-channel-map-API.patch b/target/linux/brcm2708/patches-4.4/0129-bcm2835-implement-channel-map-API.patch
index 256d38b..6f3f5a4 100644
--- a/target/linux/brcm2708/patches-4.4/0129-bcm2835-implement-channel-map-API.patch
+++ b/target/linux/brcm2708/patches-4.4/0129-bcm2835-implement-channel-map-API.patch
@@ -1,7 +1,7 @@
-From 134223185c5da1678106310a2ca98146d8d80c49 Mon Sep 17 00:00:00 2001
+From 55349969a1914b515956c14f3fafd25df5c827a9 Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Wed, 13 Jan 2016 19:43:12 +0100
-Subject: [PATCH 129/423] bcm2835: implement channel map API
+Subject: [PATCH] bcm2835: implement channel map API
 
 Report all layouts supported by the HDMI protocol to userspace.
 Make the videocore set the correct layout according to the
diff --git a/target/linux/brcm2708/patches-4.4/0130-bcm2835-access-controls-under-the-audio-mutex.patch b/target/linux/brcm2708/patches-4.4/0130-bcm2835-access-controls-under-the-audio-mutex.patch
index 5d92507..099c8ec 100644
--- a/target/linux/brcm2708/patches-4.4/0130-bcm2835-access-controls-under-the-audio-mutex.patch
+++ b/target/linux/brcm2708/patches-4.4/0130-bcm2835-access-controls-under-the-audio-mutex.patch
@@ -1,7 +1,7 @@
-From 8aa6bca1b7f62cc2b953d6384138bb262dc16434 Mon Sep 17 00:00:00 2001
+From 7067b04bc0f05e25621868e47e3de42befa8ac61 Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Wed, 13 Jan 2016 19:43:35 +0100
-Subject: [PATCH 130/423] bcm2835: access controls under the audio mutex
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0131-bcm2835-always-use-2-4-8-channels-for-multichannel-l.patch b/target/linux/brcm2708/patches-4.4/0131-bcm2835-always-use-2-4-8-channels-for-multichannel-l.patch
index c12a104..731091d 100644
--- a/target/linux/brcm2708/patches-4.4/0131-bcm2835-always-use-2-4-8-channels-for-multichannel-l.patch
+++ b/target/linux/brcm2708/patches-4.4/0131-bcm2835-always-use-2-4-8-channels-for-multichannel-l.patch
@@ -1,8 +1,7 @@
-From bbbdf3afb567a7bded1b606d34ba6d97cbf1fb0a Mon Sep 17 00:00:00 2001
+From db9dc8093738d064963257f19b8b6d927d137dd9 Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Wed, 13 Jan 2016 19:44:03 +0100
-Subject: [PATCH 131/423] bcm2835: always use 2/4/8 channels for multichannel
- layouts
+Subject: [PATCH] bcm2835: always use 2/4/8 channels for multichannel layouts
 
 Pad the unused channels with NA. This means userspace needs to write
 additional, silent padding channels, which is not ideal, but better
diff --git a/target/linux/brcm2708/patches-4.4/0132-bcm2835-only-allow-stereo-if-analogue-jack-is-select.patch b/target/linux/brcm2708/patches-4.4/0132-bcm2835-only-allow-stereo-if-analogue-jack-is-select.patch
index 84b6a5d..98be6d2 100644
--- a/target/linux/brcm2708/patches-4.4/0132-bcm2835-only-allow-stereo-if-analogue-jack-is-select.patch
+++ b/target/linux/brcm2708/patches-4.4/0132-bcm2835-only-allow-stereo-if-analogue-jack-is-select.patch
@@ -1,8 +1,7 @@
-From 9e26f4ac9231419f7dcc0f793fb2d1f17748eae9 Mon Sep 17 00:00:00 2001
+From 8bf3ca92ea1352a4b97258eee4b225240e525a54 Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Wed, 13 Jan 2016 19:44:24 +0100
-Subject: [PATCH 132/423] bcm2835: only allow stereo if analogue jack is
- selected
+Subject: [PATCH] bcm2835: only allow stereo if analogue jack is selected
 
 Sending more than 2 channels to videocore while outputting to analogue
 mysteriously outputs heavy artifacts. So just paint it over with a
diff --git a/target/linux/brcm2708/patches-4.4/0133-bcm2835-interpolate-audio-delay.patch b/target/linux/brcm2708/patches-4.4/0133-bcm2835-interpolate-audio-delay.patch
index 79a4040..3ea75ee 100644
--- a/target/linux/brcm2708/patches-4.4/0133-bcm2835-interpolate-audio-delay.patch
+++ b/target/linux/brcm2708/patches-4.4/0133-bcm2835-interpolate-audio-delay.patch
@@ -1,7 +1,7 @@
-From 44ea54f0017696e00153c389a274b97938f093e9 Mon Sep 17 00:00:00 2001
+From 7756cf7615123045c60b9f9e311d2491a5e23424 Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Wed, 13 Jan 2016 19:44:47 +0100
-Subject: [PATCH 133/423] bcm2835: interpolate audio delay
+Subject: [PATCH] bcm2835: interpolate audio delay
 
 It appears the GPU only sends us a message all 10ms to update
 the playback progress. Other than this, the playback position
diff --git a/target/linux/brcm2708/patches-4.4/0134-bcm2835-sdhost-Add-workaround-for-odd-behaviour-on-s.patch b/target/linux/brcm2708/patches-4.4/0134-bcm2835-sdhost-Add-workaround-for-odd-behaviour-on-s.patch
index 014fd5d..8eda6d5 100644
--- a/target/linux/brcm2708/patches-4.4/0134-bcm2835-sdhost-Add-workaround-for-odd-behaviour-on-s.patch
+++ b/target/linux/brcm2708/patches-4.4/0134-bcm2835-sdhost-Add-workaround-for-odd-behaviour-on-s.patch
@@ -1,8 +1,8 @@
-From 58389f0ac10212334f0146ca72a4ef364e8c15df Mon Sep 17 00:00:00 2001
+From 2e34fd2e06d95cd4e4e29d94ce016ab4426f75af Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 19 Jan 2016 17:16:38 +0000
-Subject: [PATCH 134/423] bcm2835-sdhost: Add workaround for odd behaviour on
- some cards
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0135-bcm2835-sdhost-Add-debug_flags-dtparam.patch b/target/linux/brcm2708/patches-4.4/0135-bcm2835-sdhost-Add-debug_flags-dtparam.patch
index f7d9d3d..4086649 100644
--- a/target/linux/brcm2708/patches-4.4/0135-bcm2835-sdhost-Add-debug_flags-dtparam.patch
+++ b/target/linux/brcm2708/patches-4.4/0135-bcm2835-sdhost-Add-debug_flags-dtparam.patch
@@ -1,7 +1,7 @@
-From 2b579856474546abebe0a3e38899893bbd7345c2 Mon Sep 17 00:00:00 2001
+From 8349a032c4e1d3f9c3c5e4bb66064b6addf6f111 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 22 Jan 2016 16:03:24 +0000
-Subject: [PATCH 135/423] bcm2835-sdhost: Add debug_flags dtparam
+Subject: [PATCH] bcm2835-sdhost: Add debug_flags dtparam
 
 Bit zero disables the single-read-sectors map:
 
diff --git a/target/linux/brcm2708/patches-4.4/0136-BCM270X_DT-Add-sdio_overclock-parameter-to-sdio-over.patch b/target/linux/brcm2708/patches-4.4/0136-BCM270X_DT-Add-sdio_overclock-parameter-to-sdio-over.patch
index ab0ebbb..13aec51 100644
--- a/target/linux/brcm2708/patches-4.4/0136-BCM270X_DT-Add-sdio_overclock-parameter-to-sdio-over.patch
+++ b/target/linux/brcm2708/patches-4.4/0136-BCM270X_DT-Add-sdio_overclock-parameter-to-sdio-over.patch
@@ -1,8 +1,7 @@
-From b02faf882ad1216f89a12391f1499e7c47dbbb13 Mon Sep 17 00:00:00 2001
+From 1bb36898f708926752ef4afa43c62056b376d7a4 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 25 Jan 2016 09:12:06 +0000
-Subject: [PATCH 136/423] BCM270X_DT: Add sdio_overclock parameter to sdio
- overlay
+Subject: [PATCH] BCM270X_DT: Add sdio_overclock parameter to sdio overlay
 
 The sdio_overclock parameter is like the overclock_50 parameter, i.e.
 it sets an alternate frequency (in MHz) to use when the MMC framework
diff --git a/target/linux/brcm2708/patches-4.4/0137-rtc-ds1307-add-support-for-the-DT-property-wakeup-so.patch b/target/linux/brcm2708/patches-4.4/0137-rtc-ds1307-add-support-for-the-DT-property-wakeup-so.patch
index 626519f..7be2d88 100644
--- a/target/linux/brcm2708/patches-4.4/0137-rtc-ds1307-add-support-for-the-DT-property-wakeup-so.patch
+++ b/target/linux/brcm2708/patches-4.4/0137-rtc-ds1307-add-support-for-the-DT-property-wakeup-so.patch
@@ -1,8 +1,7 @@
-From a74004694a521e40b57db19b761265759d4279e2 Mon Sep 17 00:00:00 2001
+From e4bd962eeb728b924ebdaca077c2136280a190f2 Mon Sep 17 00:00:00 2001
 From: Michael Lange <linuxstuff at milaw.biz>
 Date: Thu, 21 Jan 2016 18:10:16 +0100
-Subject: [PATCH 137/423] rtc: ds1307: add support for the DT property
- 'wakeup-source'
+Subject: [PATCH] rtc: ds1307: add support for the DT property 'wakeup-source'
 
 For RTC chips with no IRQ directly connected to the SoC, the RTC chip
 can be forced as a wakeup source by stating that explicitly in
diff --git a/target/linux/brcm2708/patches-4.4/0138-dt-overlay-add-wittypi-overlay.dts.patch b/target/linux/brcm2708/patches-4.4/0138-dt-overlay-add-wittypi-overlay.dts.patch
index 88cef6d..a085021 100644
--- a/target/linux/brcm2708/patches-4.4/0138-dt-overlay-add-wittypi-overlay.dts.patch
+++ b/target/linux/brcm2708/patches-4.4/0138-dt-overlay-add-wittypi-overlay.dts.patch
@@ -1,7 +1,7 @@
-From 8f9769d2ca0c6743ccaac0f5a43e8a690aaec3c1 Mon Sep 17 00:00:00 2001
+From 44a37e094bbe4dd9ee63fb1d5426b3945981fd26 Mon Sep 17 00:00:00 2001
 From: vitalogy <vitalogy_github at milaw.biz>
 Date: Tue, 19 Jan 2016 07:02:02 +0100
-Subject: [PATCH 138/423] dt-overlay: add wittypi-overlay.dts
+Subject: [PATCH] dt-overlay: add wittypi-overlay.dts
 
 ---
  arch/arm/boot/dts/overlays/wittypi-overlay.dts | 44 ++++++++++++++++++++++++++
diff --git a/target/linux/brcm2708/patches-4.4/0139-FIXUP-i2c_bcm2708-Don-t-change-module-baudrate-param.patch b/target/linux/brcm2708/patches-4.4/0139-FIXUP-i2c_bcm2708-Don-t-change-module-baudrate-param.patch
index bcb1636..37cf64a 100644
--- a/target/linux/brcm2708/patches-4.4/0139-FIXUP-i2c_bcm2708-Don-t-change-module-baudrate-param.patch
+++ b/target/linux/brcm2708/patches-4.4/0139-FIXUP-i2c_bcm2708-Don-t-change-module-baudrate-param.patch
@@ -1,8 +1,7 @@
-From cdc262a3377780a97c4bf2054d55ec8752d80e89 Mon Sep 17 00:00:00 2001
+From 4efc768113042d0b48fdb4e170d5469f93f6e20b Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 19 Jan 2016 16:28:05 +0000
-Subject: [PATCH 139/423] FIXUP i2c_bcm2708: Don't change module baudrate
- parameter
+Subject: [PATCH] FIXUP i2c_bcm2708: Don't change module baudrate parameter
 
 Overwriting the baudrate module parameter creates an apparent
 forced baudrate for i2c busses after the first. Not only does this
diff --git a/target/linux/brcm2708/patches-4.4/0140-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch b/target/linux/brcm2708/patches-4.4/0140-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch
index 20489bb..0af3a52 100644
--- a/target/linux/brcm2708/patches-4.4/0140-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch
+++ b/target/linux/brcm2708/patches-4.4/0140-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch
@@ -1,8 +1,8 @@
-From ccbc06892764dda07be0a17c8541f3dc18de97c6 Mon Sep 17 00:00:00 2001
+From 290cec3c415ef37c10465f201545f26423241249 Mon Sep 17 00:00:00 2001
 From: Digital Dreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Thu, 4 Feb 2016 14:14:44 +0000
-Subject: [PATCH 140/423] Allow up to 24dB digital gain to be applied when
- using IQAudIO DAC+
+Subject: [PATCH] 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,
diff --git a/target/linux/brcm2708/patches-4.4/0141-Limit-PCM512x-Digital-gain-to-0dB-by-default-with-Hi.patch b/target/linux/brcm2708/patches-4.4/0141-Limit-PCM512x-Digital-gain-to-0dB-by-default-with-Hi.patch
index 8ad2afa..7003f57 100644
--- a/target/linux/brcm2708/patches-4.4/0141-Limit-PCM512x-Digital-gain-to-0dB-by-default-with-Hi.patch
+++ b/target/linux/brcm2708/patches-4.4/0141-Limit-PCM512x-Digital-gain-to-0dB-by-default-with-Hi.patch
@@ -1,8 +1,8 @@
-From 427a1c87dc8100722e3a8c7476573fe3715f5b5a Mon Sep 17 00:00:00 2001
+From 3f38eac723b07d22f70a77ae006d18eb84218a9e Mon Sep 17 00:00:00 2001
 From: Digital Dreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Thu, 4 Feb 2016 20:04:00 +0000
-Subject: [PATCH 141/423] Limit PCM512x "Digital" gain to 0dB by default with
- HiFiBerry DAC+
+Subject: [PATCH] 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,
diff --git a/target/linux/brcm2708/patches-4.4/0142-BCM270X_DT-Adjust-overlay-README-formatting.patch b/target/linux/brcm2708/patches-4.4/0142-BCM270X_DT-Adjust-overlay-README-formatting.patch
index 614f5b6..20b4425 100644
--- a/target/linux/brcm2708/patches-4.4/0142-BCM270X_DT-Adjust-overlay-README-formatting.patch
+++ b/target/linux/brcm2708/patches-4.4/0142-BCM270X_DT-Adjust-overlay-README-formatting.patch
@@ -1,7 +1,7 @@
-From 305469eecd74e0c7e78b1646dfbc3bdd498b341e Mon Sep 17 00:00:00 2001
+From 8d559133434730d0a1c5f661e6cdaca27f6ee184 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 8 Feb 2016 09:46:33 +0000
-Subject: [PATCH 142/423] BCM270X_DT: Adjust overlay README formatting
+Subject: [PATCH] BCM270X_DT: Adjust overlay README formatting
 
 ---
  arch/arm/boot/dts/overlays/README | 414 +++++++++++++++++++-------------------
diff --git a/target/linux/brcm2708/patches-4.4/0143-bcm2835-sdhost-Major-revision.patch b/target/linux/brcm2708/patches-4.4/0143-bcm2835-sdhost-Major-revision.patch
index 90a15a4..9a8364a 100644
--- a/target/linux/brcm2708/patches-4.4/0143-bcm2835-sdhost-Major-revision.patch
+++ b/target/linux/brcm2708/patches-4.4/0143-bcm2835-sdhost-Major-revision.patch
@@ -1,7 +1,7 @@
-From 8fcc1b75df2cfc5e75b36ab6cf62232291b47df1 Mon Sep 17 00:00:00 2001
+From da5b64aae5cb189a2a2e24a459e84cb5fab5d864 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 11 Feb 2016 16:51:01 +0000
-Subject: [PATCH 143/423] bcm2835-sdhost: Major revision
+Subject: [PATCH] bcm2835-sdhost: Major revision
 
 This is a significant revision of the bcm2835-sdhost driver. It
 improves on the original in a number of ways:
diff --git a/target/linux/brcm2708/patches-4.4/0144-BCM270X_DT-Add-dtparams-for-the-SD-interface.patch b/target/linux/brcm2708/patches-4.4/0144-BCM270X_DT-Add-dtparams-for-the-SD-interface.patch
index a1db24c..5ff574f 100644
--- a/target/linux/brcm2708/patches-4.4/0144-BCM270X_DT-Add-dtparams-for-the-SD-interface.patch
+++ b/target/linux/brcm2708/patches-4.4/0144-BCM270X_DT-Add-dtparams-for-the-SD-interface.patch
@@ -1,7 +1,7 @@
-From 367af45e7a38258b1198af604070cc09198b1a61 Mon Sep 17 00:00:00 2001
+From f6031fa472bf8ce9eaba902b00cd2af3d00f0fb4 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 12 Feb 2016 15:38:00 +0000
-Subject: [PATCH 144/423] BCM270X_DT: Add dtparams for the SD interface
+Subject: [PATCH] BCM270X_DT: Add dtparams for the SD interface
 
 Add new base dtparams sd_overclock, sd_force_pio, sd_pio_limit
 and sd_debug.
diff --git a/target/linux/brcm2708/patches-4.4/0145-dcw_otg-trim-xfer-length-when-buffer-larger-than-all.patch b/target/linux/brcm2708/patches-4.4/0145-dcw_otg-trim-xfer-length-when-buffer-larger-than-all.patch
index 5217c72..70d0764 100644
--- a/target/linux/brcm2708/patches-4.4/0145-dcw_otg-trim-xfer-length-when-buffer-larger-than-all.patch
+++ b/target/linux/brcm2708/patches-4.4/0145-dcw_otg-trim-xfer-length-when-buffer-larger-than-all.patch
@@ -1,8 +1,8 @@
-From f9149b39714c2115a49fe806f3e5117fa2f55ec8 Mon Sep 17 00:00:00 2001
+From 20c4f162386eea18273c461a183244a472ecc1da Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 12 Feb 2016 14:50:25 +0000
-Subject: [PATCH 145/423] dcw_otg: trim xfer length when buffer larger than
- allocated size is received
+Subject: [PATCH] dcw_otg: trim xfer length when buffer larger than allocated
+ size is received
 
 ---
  drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 11 +++++++++++
diff --git a/target/linux/brcm2708/patches-4.4/0146-bcm2835-sdhost-Restore-ATOMIC-flag-to-PIO-sg-mapping.patch b/target/linux/brcm2708/patches-4.4/0146-bcm2835-sdhost-Restore-ATOMIC-flag-to-PIO-sg-mapping.patch
index b3a1e2f..6ca2b54 100644
--- a/target/linux/brcm2708/patches-4.4/0146-bcm2835-sdhost-Restore-ATOMIC-flag-to-PIO-sg-mapping.patch
+++ b/target/linux/brcm2708/patches-4.4/0146-bcm2835-sdhost-Restore-ATOMIC-flag-to-PIO-sg-mapping.patch
@@ -1,7 +1,7 @@
-From 865b951f9bc7ce938c240eb17e829fd666a3f5eb Mon Sep 17 00:00:00 2001
+From 2ace17c79f413a43950944cf282235ea3de8c6e2 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 15 Feb 2016 10:00:27 +0000
-Subject: [PATCH 146/423] bcm2835-sdhost: Restore ATOMIC flag to PIO sg mapping
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0147-Updated-smsc95xx-driver-to-check-for-a-valid-MAC-add.patch b/target/linux/brcm2708/patches-4.4/0147-Updated-smsc95xx-driver-to-check-for-a-valid-MAC-add.patch
index ac947ae..476e01b 100644
--- a/target/linux/brcm2708/patches-4.4/0147-Updated-smsc95xx-driver-to-check-for-a-valid-MAC-add.patch
+++ b/target/linux/brcm2708/patches-4.4/0147-Updated-smsc95xx-driver-to-check-for-a-valid-MAC-add.patch
@@ -1,9 +1,8 @@
-From af4e7094adf051d1cec6ebc04cfbc5d3049ce126 Mon Sep 17 00:00:00 2001
+From ef351705676a8a3906bfbc3696e7d44bcc3a320b Mon Sep 17 00:00:00 2001
 From: Craig Roberts <cjr at craigroberts.net>
 Date: Tue, 16 Feb 2016 10:03:42 +0000
-Subject: [PATCH 147/423] Updated smsc95xx driver to check for a valid MAC
- address in eeprom before using smsc95xx.macaddr parameter passed on command
- line.
+Subject: [PATCH] Updated smsc95xx driver to check for a valid MAC address in
+ eeprom before using smsc95xx.macaddr parameter passed on command line.
 
 The built-in RPi adaptor will still get a MAC address based on the parameter passed on the command line as the RPi hardware does not have an eeprom,
 however usb->ethernet adaptors using the same driver should have an eeprom with MAC address as part of their hardware and therefore will use this
diff --git a/target/linux/brcm2708/patches-4.4/0148-dcw_otg-Make-trimming-messages-less-noisy.patch b/target/linux/brcm2708/patches-4.4/0148-dcw_otg-Make-trimming-messages-less-noisy.patch
index 9e20d19..790d296 100644
--- a/target/linux/brcm2708/patches-4.4/0148-dcw_otg-Make-trimming-messages-less-noisy.patch
+++ b/target/linux/brcm2708/patches-4.4/0148-dcw_otg-Make-trimming-messages-less-noisy.patch
@@ -1,7 +1,7 @@
-From f65f992c827f63ab148a991fe3599804704fa338 Mon Sep 17 00:00:00 2001
+From 82973637f761439a9ff507bf7a0a4aa325d98870 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 17 Feb 2016 19:02:31 +0000
-Subject: [PATCH 148/423] dcw_otg: Make trimming messages less noisy
+Subject: [PATCH] dcw_otg: Make trimming messages less noisy
 
 ---
  drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 6 ++++--
diff --git a/target/linux/brcm2708/patches-4.4/0149-BCM270X_DT-at86rf233-overlay-drop-to-3MHz.patch b/target/linux/brcm2708/patches-4.4/0149-BCM270X_DT-at86rf233-overlay-drop-to-3MHz.patch
index d73f1a2..47db7aa 100644
--- a/target/linux/brcm2708/patches-4.4/0149-BCM270X_DT-at86rf233-overlay-drop-to-3MHz.patch
+++ b/target/linux/brcm2708/patches-4.4/0149-BCM270X_DT-at86rf233-overlay-drop-to-3MHz.patch
@@ -1,7 +1,7 @@
-From dbf8f761e366f4c93e8c2c2a1558561faa762f9f Mon Sep 17 00:00:00 2001
+From dfcdab5a069fb85d39ae9b0b86dca5f7277a5a47 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 18 Feb 2016 15:28:14 +0000
-Subject: [PATCH 149/423] BCM270X_DT: at86rf233 overlay - drop to 3MHz
+Subject: [PATCH] BCM270X_DT: at86rf233 overlay - drop to 3MHz
 
 The consensus is that 6MHz is too fast, but that 3MHz is OK.
 
diff --git a/target/linux/brcm2708/patches-4.4/0150-bcm2835-sdhost-Downgrade-log-message-status.patch b/target/linux/brcm2708/patches-4.4/0150-bcm2835-sdhost-Downgrade-log-message-status.patch
index 9776c10..a39efeb 100644
--- a/target/linux/brcm2708/patches-4.4/0150-bcm2835-sdhost-Downgrade-log-message-status.patch
+++ b/target/linux/brcm2708/patches-4.4/0150-bcm2835-sdhost-Downgrade-log-message-status.patch
@@ -1,7 +1,7 @@
-From c7dc70d85fa909f1ffb7b490f93b56cabf0b155f Mon Sep 17 00:00:00 2001
+From 0f091b751bab3fcedb2281d3a201c42c627c7867 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 19 Feb 2016 12:04:48 +0000
-Subject: [PATCH 150/423] bcm2835-sdhost: Downgrade log message status
+Subject: [PATCH] bcm2835-sdhost: Downgrade log message status
 
 ---
  drivers/mmc/host/bcm2835-sdhost.c | 4 ++--
diff --git a/target/linux/brcm2708/patches-4.4/0151-config-Enable-HCI-over-UARTs.patch b/target/linux/brcm2708/patches-4.4/0151-config-Enable-HCI-over-UARTs.patch
index d98d401..e398707 100644
--- a/target/linux/brcm2708/patches-4.4/0151-config-Enable-HCI-over-UARTs.patch
+++ b/target/linux/brcm2708/patches-4.4/0151-config-Enable-HCI-over-UARTs.patch
@@ -1,7 +1,7 @@
-From 6c1cfd3b278d6f0656f33646392c81f41b2dc5ac Mon Sep 17 00:00:00 2001
+From 87614bfb6cc2eba2b5dd80596a76866f42bef42a Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 15 Jan 2016 16:48:27 +0000
-Subject: [PATCH 151/423] config: Enable HCI over UARTs
+Subject: [PATCH] config: Enable HCI over UARTs
 
 ---
  arch/arm/configs/bcm2709_defconfig | 3 +++
diff --git a/target/linux/brcm2708/patches-4.4/0152-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch b/target/linux/brcm2708/patches-4.4/0152-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch
index 963fa86..05c2ae2 100644
--- a/target/linux/brcm2708/patches-4.4/0152-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch
+++ b/target/linux/brcm2708/patches-4.4/0152-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch
@@ -1,7 +1,7 @@
-From f736186a0650f05ba00fa51957b25d6486ea3358 Mon Sep 17 00:00:00 2001
+From fc507785b54db0e908719ba738531f45fb1797d3 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 17 Dec 2015 13:37:07 +0000
-Subject: [PATCH 152/423] hci_h5: Don't send conf_req when ACTIVE
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0153-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch b/target/linux/brcm2708/patches-4.4/0153-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch
index 8c2872c..7cadb2a 100644
--- a/target/linux/brcm2708/patches-4.4/0153-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch
+++ b/target/linux/brcm2708/patches-4.4/0153-amba_pl011-Don-t-use-DT-aliases-for-numbering.patch
@@ -1,7 +1,7 @@
-From 36b4312e6c109ead13feef44315fa73d1e1fa9f0 Mon Sep 17 00:00:00 2001
+From e0f147530d17dfe705fee528c40232047bd1ee47 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 23 Feb 2016 17:26:48 +0000
-Subject: [PATCH 153/423] amba_pl011: Don't use DT aliases for numbering
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0154-clk-bcm2835-Add-bindings-for-the-auxiliary-periphera.patch b/target/linux/brcm2708/patches-4.4/0154-clk-bcm2835-Add-bindings-for-the-auxiliary-periphera.patch
index 526dcc7..7e1b2ba 100644
--- a/target/linux/brcm2708/patches-4.4/0154-clk-bcm2835-Add-bindings-for-the-auxiliary-periphera.patch
+++ b/target/linux/brcm2708/patches-4.4/0154-clk-bcm2835-Add-bindings-for-the-auxiliary-periphera.patch
@@ -1,8 +1,8 @@
-From 36dba68f842fac976afdd4487958d014ffdb130d Mon Sep 17 00:00:00 2001
+From 0ace9f0a0b1d5768cec58a69bd0d4fffd5995ad2 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 15 Dec 2015 15:35:57 -0800
-Subject: [PATCH 154/423] clk: bcm2835: Add bindings for the auxiliary
- peripheral clock gates.
+Subject: [PATCH] clk: bcm2835: Add bindings for the auxiliary peripheral clock
+ gates.
 
 These will be used for enabling UART1, SPI1, and SPI2.
 
diff --git a/target/linux/brcm2708/patches-4.4/0155-clk-bcm2835-Add-a-driver-for-the-auxiliary-periphera.patch b/target/linux/brcm2708/patches-4.4/0155-clk-bcm2835-Add-a-driver-for-the-auxiliary-periphera.patch
index 868ebbe..f095a7a 100644
--- a/target/linux/brcm2708/patches-4.4/0155-clk-bcm2835-Add-a-driver-for-the-auxiliary-periphera.patch
+++ b/target/linux/brcm2708/patches-4.4/0155-clk-bcm2835-Add-a-driver-for-the-auxiliary-periphera.patch
@@ -1,8 +1,8 @@
-From 308d421f734ecdf5664603b87d2b327c2f46f810 Mon Sep 17 00:00:00 2001
+From 19a393608fdcadad7fdde85e4439f05d10381d84 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 15 Dec 2015 15:35:58 -0800
-Subject: [PATCH 155/423] clk: bcm2835: Add a driver for the auxiliary
- peripheral clock gates.
+Subject: [PATCH] clk: bcm2835: Add a driver for the auxiliary peripheral clock
+ gates.
 
 There are a pair of SPI masters and a mini UART that were last minute
 additions.  As a result, they didn't get integrated in the same way as
diff --git a/target/linux/brcm2708/patches-4.4/0156-Aux-SPI-1-2-implementation.patch b/target/linux/brcm2708/patches-4.4/0156-Aux-SPI-1-2-implementation.patch
index 58e8b0a..8094495 100644
--- a/target/linux/brcm2708/patches-4.4/0156-Aux-SPI-1-2-implementation.patch
+++ b/target/linux/brcm2708/patches-4.4/0156-Aux-SPI-1-2-implementation.patch
@@ -1,7 +1,7 @@
-From 70fb111800b9bb01e4c95ea9e351cb15748f692f Mon Sep 17 00:00:00 2001
+From fb47ac65c77bd2bc6480bb45a0bef29056108984 Mon Sep 17 00:00:00 2001
 From: Fraser <github at frasersdev.net>
 Date: Tue, 23 Feb 2016 10:04:37 +1100
-Subject: [PATCH 156/423] Aux SPI 1&2 implementation
+Subject: [PATCH] Aux SPI 1&2 implementation
 
 Adds aux spi 1 & 2 devices to compatible raspberry PIs.
 * Minor config of the driver build environment to ensure they get built
diff --git a/target/linux/brcm2708/patches-4.4/0157-ASoC-bcm-add-missing-.owner-fields-in-sound-card-dri.patch b/target/linux/brcm2708/patches-4.4/0157-ASoC-bcm-add-missing-.owner-fields-in-sound-card-dri.patch
index 92919b2..953b0f2 100644
--- a/target/linux/brcm2708/patches-4.4/0157-ASoC-bcm-add-missing-.owner-fields-in-sound-card-dri.patch
+++ b/target/linux/brcm2708/patches-4.4/0157-ASoC-bcm-add-missing-.owner-fields-in-sound-card-dri.patch
@@ -1,8 +1,7 @@
-From 5590ca50d54491e5fc3f273f03198a1b08fd88cc Mon Sep 17 00:00:00 2001
+From 8369af719005849271d4c50a87dc6422b83dc276 Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Tue, 23 Feb 2016 17:28:23 +0100
-Subject: [PATCH 157/423] ASoC: bcm: add missing .owner fields in sound card
- drivers
+Subject: [PATCH] ASoC: bcm: add missing .owner fields in sound card drivers
 
 If snd_soc_card.owner is not set the kernel won't do usage refcounting
 and one can remove the card driver module while it's in use (eg playback
diff --git a/target/linux/brcm2708/patches-4.4/0158-smsx95xx-Add-option-to-disable-the-crimes-against-tr.patch b/target/linux/brcm2708/patches-4.4/0158-smsx95xx-Add-option-to-disable-the-crimes-against-tr.patch
index bd052f2..b94313c 100644
--- a/target/linux/brcm2708/patches-4.4/0158-smsx95xx-Add-option-to-disable-the-crimes-against-tr.patch
+++ b/target/linux/brcm2708/patches-4.4/0158-smsx95xx-Add-option-to-disable-the-crimes-against-tr.patch
@@ -1,8 +1,8 @@
-From 10a0c1a532cb7800e2eb56ac6e38dedbaf262ce5 Mon Sep 17 00:00:00 2001
+From 3bd2928682ee70f260d9c62a17d1a5e43f979fec Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Wed, 20 Jan 2016 17:50:09 +0000
-Subject: [PATCH 158/423] smsx95xx: Add option to disable the crimes against
- truesize fix
+Subject: [PATCH] smsx95xx: Add option to disable the crimes against truesize
+ fix
 
 It may improve iperf numbers on Pi 1, but may generate dmesg warnings and possibly cause network issues
 See issue 1248.
diff --git a/target/linux/brcm2708/patches-4.4/0159-bcm2835-virtgpio-Virtual-GPIO-driver.patch b/target/linux/brcm2708/patches-4.4/0159-bcm2835-virtgpio-Virtual-GPIO-driver.patch
index d78cabe..e0bcd93 100644
--- a/target/linux/brcm2708/patches-4.4/0159-bcm2835-virtgpio-Virtual-GPIO-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0159-bcm2835-virtgpio-Virtual-GPIO-driver.patch
@@ -1,7 +1,7 @@
-From e08489bbbba7a911dc99495e152c4366ed646db8 Mon Sep 17 00:00:00 2001
+From fba2e30e3511cbc94249468490843723268a0c39 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 23 Feb 2016 19:56:04 +0000
-Subject: [PATCH 159/423] bcm2835-virtgpio: Virtual GPIO driver
+Subject: [PATCH] bcm2835-virtgpio: Virtual GPIO driver
 
 Add a virtual GPIO driver that uses the firmware mailbox interface to
 request that the VPU toggles LEDs.
diff --git a/target/linux/brcm2708/patches-4.4/0160-BCM270X_DT-Add-Pi3-support.patch b/target/linux/brcm2708/patches-4.4/0160-BCM270X_DT-Add-Pi3-support.patch
index ec015cd..04c5e09 100644
--- a/target/linux/brcm2708/patches-4.4/0160-BCM270X_DT-Add-Pi3-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0160-BCM270X_DT-Add-Pi3-support.patch
@@ -1,7 +1,7 @@
-From 5985096850e6608704489e7c7936d885fb3a3507 Mon Sep 17 00:00:00 2001
+From d5ed78c5a2305b7952f4e86f4de4c68630875264 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 21 Jan 2016 17:57:49 +0000
-Subject: [PATCH 160/423] BCM270X_DT: Add Pi3 support
+Subject: [PATCH] BCM270X_DT: Add Pi3 support
 
 ---
  arch/arm/boot/dts/Makefile            |   1 +
diff --git a/target/linux/brcm2708/patches-4.4/0161-DT-Add-overlays-to-configure-I2C-pins.patch b/target/linux/brcm2708/patches-4.4/0161-DT-Add-overlays-to-configure-I2C-pins.patch
index ccadd82..145c6e7 100644
--- a/target/linux/brcm2708/patches-4.4/0161-DT-Add-overlays-to-configure-I2C-pins.patch
+++ b/target/linux/brcm2708/patches-4.4/0161-DT-Add-overlays-to-configure-I2C-pins.patch
@@ -1,7 +1,7 @@
-From f2f877b174c8dc15f77cbaea553edf21c74d525c Mon Sep 17 00:00:00 2001
+From ff7f4e8e8f46f1132b1013cf1799abb7dde687cb Mon Sep 17 00:00:00 2001
 From: Dave Stevenson <6by9 at users.noreply.github.com>
 Date: Mon, 8 Feb 2016 23:49:41 +0000
-Subject: [PATCH 161/423] DT: Add overlays to configure I2C pins
+Subject: [PATCH] DT: Add overlays to configure I2C pins
 
 Lifted from
 https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=120938&p=825883
diff --git a/target/linux/brcm2708/patches-4.4/0162-bcm2835-camera-fix-a-bug-in-computation-of-frame-tim.patch b/target/linux/brcm2708/patches-4.4/0162-bcm2835-camera-fix-a-bug-in-computation-of-frame-tim.patch
index 8753693..04616bf 100644
--- a/target/linux/brcm2708/patches-4.4/0162-bcm2835-camera-fix-a-bug-in-computation-of-frame-tim.patch
+++ b/target/linux/brcm2708/patches-4.4/0162-bcm2835-camera-fix-a-bug-in-computation-of-frame-tim.patch
@@ -1,8 +1,7 @@
-From c2132fecb5584da2653ce99ebbfb382673489e94 Mon Sep 17 00:00:00 2001
+From 185f82a6c86933b1df3ba8ec99f82fbcdd77d396 Mon Sep 17 00:00:00 2001
 From: Dhiraj Goel <dhiraj.goel at gmail.com>
 Date: Thu, 3 Mar 2016 21:10:50 -0800
-Subject: [PATCH 162/423] bcm2835-camera: fix a bug in computation of frame
- timestamp
+Subject: [PATCH] bcm2835-camera: fix a bug in computation of frame timestamp
 
 Fixes #1318
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0163-BCM270X_DT-Add-pi3-disable-bt-overlay.patch b/target/linux/brcm2708/patches-4.4/0163-BCM270X_DT-Add-pi3-disable-bt-overlay.patch
index 7ac4ca8..d2c554c 100644
--- a/target/linux/brcm2708/patches-4.4/0163-BCM270X_DT-Add-pi3-disable-bt-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0163-BCM270X_DT-Add-pi3-disable-bt-overlay.patch
@@ -1,7 +1,7 @@
-From a8b3a8c0c610b29be2d685548a1b21269b651b33 Mon Sep 17 00:00:00 2001
+From f74038a8afbdbb109f831befeb53ce2b641a8805 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 2 Mar 2016 10:59:05 +0000
-Subject: [PATCH 163/423] BCM270X_DT: Add pi3-disable-bt overlay
+Subject: [PATCH] BCM270X_DT: Add pi3-disable-bt overlay
 
 Disable Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15. To disable
 the systemd service that initialises the modem so it doesn't use the UART:
diff --git a/target/linux/brcm2708/patches-4.4/0164-BCM270X_DT-Add-pi3-miniuart-bt-DT-overlay.patch b/target/linux/brcm2708/patches-4.4/0164-BCM270X_DT-Add-pi3-miniuart-bt-DT-overlay.patch
index 3cad9ca..27d7390 100644
--- a/target/linux/brcm2708/patches-4.4/0164-BCM270X_DT-Add-pi3-miniuart-bt-DT-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0164-BCM270X_DT-Add-pi3-miniuart-bt-DT-overlay.patch
@@ -1,7 +1,7 @@
-From 8a2725220ebcc2207c979e2c816a911aa20fa3f3 Mon Sep 17 00:00:00 2001
+From 3a7f5db20ed4d685ce8b5336f859d547bdd98a85 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 7 Mar 2016 09:53:03 +0000
-Subject: [PATCH 164/423] BCM270X_DT: Add pi3-miniuart-bt DT overlay
+Subject: [PATCH] BCM270X_DT: Add pi3-miniuart-bt DT overlay
 
 Switch Pi3 Bluetooth function to use the mini-UART (ttyS0) and restore
 UART0/ttyAMA0 over GPIOs 14 & 15. Note that this may reduce the maximum
diff --git a/target/linux/brcm2708/patches-4.4/0165-Pi3-DT-Add-dtparams-for-the-SD-interface.patch b/target/linux/brcm2708/patches-4.4/0165-Pi3-DT-Add-dtparams-for-the-SD-interface.patch
index d1b6ce7..ecccb2a 100644
--- a/target/linux/brcm2708/patches-4.4/0165-Pi3-DT-Add-dtparams-for-the-SD-interface.patch
+++ b/target/linux/brcm2708/patches-4.4/0165-Pi3-DT-Add-dtparams-for-the-SD-interface.patch
@@ -1,7 +1,7 @@
-From bcd71e5dd7b7f9ad1a5b7b77edc3350feede7bfb Mon Sep 17 00:00:00 2001
+From a241da2b069599afab9ee1259855d3c2e509894d Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 7 Mar 2016 13:38:39 +0000
-Subject: [PATCH 165/423] Pi3 DT: Add dtparams for the SD interface
+Subject: [PATCH] Pi3 DT: Add dtparams for the SD interface
 
 Add new base dtparams sd_overclock, sd_force_pio, sd_pio_limit
 and sd_debug. These were missed out of the initial Pi3 DTB.
diff --git a/target/linux/brcm2708/patches-4.4/0166-vchiq_arm-Tweak-the-logging-output.patch b/target/linux/brcm2708/patches-4.4/0166-vchiq_arm-Tweak-the-logging-output.patch
index e6b704a..d293862 100644
--- a/target/linux/brcm2708/patches-4.4/0166-vchiq_arm-Tweak-the-logging-output.patch
+++ b/target/linux/brcm2708/patches-4.4/0166-vchiq_arm-Tweak-the-logging-output.patch
@@ -1,7 +1,7 @@
-From 0b72e9bbaf15534b6437d6377a20870125bfcb06 Mon Sep 17 00:00:00 2001
+From 37f28c9626c8217166a1096e1d6432fca73a0849 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 7 Mar 2016 15:05:11 +0000
-Subject: [PATCH 166/423] vchiq_arm: Tweak the logging output
+Subject: [PATCH] vchiq_arm: Tweak the logging output
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0167-bcm2835-sdhost-Only-claim-one-DMA-channel.patch b/target/linux/brcm2708/patches-4.4/0167-bcm2835-sdhost-Only-claim-one-DMA-channel.patch
index 8cc918b..c487d66 100644
--- a/target/linux/brcm2708/patches-4.4/0167-bcm2835-sdhost-Only-claim-one-DMA-channel.patch
+++ b/target/linux/brcm2708/patches-4.4/0167-bcm2835-sdhost-Only-claim-one-DMA-channel.patch
@@ -1,7 +1,7 @@
-From 71804345eb4c8408fb50b0f15b750915776a20ad Mon Sep 17 00:00:00 2001
+From 5f0af4369aeb791f481e05447e1d4d05579367cd Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 7 Mar 2016 16:46:39 +0000
-Subject: [PATCH 167/423] bcm2835-sdhost: Only claim one DMA channel
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0168-bcm2835-mmc-Only-claim-one-DMA-channel.patch b/target/linux/brcm2708/patches-4.4/0168-bcm2835-mmc-Only-claim-one-DMA-channel.patch
index 4444c54..8d78521 100644
--- a/target/linux/brcm2708/patches-4.4/0168-bcm2835-mmc-Only-claim-one-DMA-channel.patch
+++ b/target/linux/brcm2708/patches-4.4/0168-bcm2835-mmc-Only-claim-one-DMA-channel.patch
@@ -1,7 +1,7 @@
-From c9c0bca2cf5a88e1bbfe1c0ebfc190e3f9c80bef Mon Sep 17 00:00:00 2001
+From fba9024580be3eed90cce59f776fc27e6ca8fbc9 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 8 Mar 2016 09:49:16 +0000
-Subject: [PATCH 168/423] bcm2835-mmc: Only claim one DMA channel
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0169-config-rebuild-with-savedefconfig.patch b/target/linux/brcm2708/patches-4.4/0169-config-rebuild-with-savedefconfig.patch
index 2a40041..186667a 100644
--- a/target/linux/brcm2708/patches-4.4/0169-config-rebuild-with-savedefconfig.patch
+++ b/target/linux/brcm2708/patches-4.4/0169-config-rebuild-with-savedefconfig.patch
@@ -1,7 +1,7 @@
-From 3ca8b2725059ac5f0255f6304777af2b3f6d8d38 Mon Sep 17 00:00:00 2001
+From fe221477aa6c78391646e226c029a56e34595873 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 8 Mar 2016 17:08:39 +0000
-Subject: [PATCH 169/423] config: rebuild with savedefconfig
+Subject: [PATCH] config: rebuild with savedefconfig
 
 ---
  arch/arm/configs/bcm2709_defconfig | 3 +--
diff --git a/target/linux/brcm2708/patches-4.4/0170-config-Add-module-for-mcp3422-ADC.patch b/target/linux/brcm2708/patches-4.4/0170-config-Add-module-for-mcp3422-ADC.patch
index 938362a..b180692 100644
--- a/target/linux/brcm2708/patches-4.4/0170-config-Add-module-for-mcp3422-ADC.patch
+++ b/target/linux/brcm2708/patches-4.4/0170-config-Add-module-for-mcp3422-ADC.patch
@@ -1,7 +1,7 @@
-From 3ff0e5914f2868ff8fdbb42247e96726296bea5d Mon Sep 17 00:00:00 2001
+From 8ceec2dfed10944e299b4114d756dbe494baaaec Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 8 Mar 2016 17:06:33 +0000
-Subject: [PATCH 170/423] config: Add module for mcp3422 ADC
+Subject: [PATCH] config: Add module for mcp3422 ADC
 
 ---
  arch/arm/configs/bcm2709_defconfig | 1 +
diff --git a/target/linux/brcm2708/patches-4.4/0171-Pi3-DT-Add-pull-ups-on-the-UART-RX-lines.patch b/target/linux/brcm2708/patches-4.4/0171-Pi3-DT-Add-pull-ups-on-the-UART-RX-lines.patch
index e816819..94f24ea 100644
--- a/target/linux/brcm2708/patches-4.4/0171-Pi3-DT-Add-pull-ups-on-the-UART-RX-lines.patch
+++ b/target/linux/brcm2708/patches-4.4/0171-Pi3-DT-Add-pull-ups-on-the-UART-RX-lines.patch
@@ -1,7 +1,7 @@
-From 89946d941588d63fb3a84c039acb154a4441e3f0 Mon Sep 17 00:00:00 2001
+From e1fd7a9ccd89e291334d4a9d6b7d1f3040d7aad0 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 8 Mar 2016 16:18:57 +0000
-Subject: [PATCH 171/423] Pi3 DT: Add pull-ups on the UART RX lines
+Subject: [PATCH] Pi3 DT: Add pull-ups on the UART RX lines
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0173-BCM270X_DT-rpi-display-overlay-add-swapxy-param.patch b/target/linux/brcm2708/patches-4.4/0173-BCM270X_DT-rpi-display-overlay-add-swapxy-param.patch
index e783f33..f6d1fc9 100644
--- a/target/linux/brcm2708/patches-4.4/0173-BCM270X_DT-rpi-display-overlay-add-swapxy-param.patch
+++ b/target/linux/brcm2708/patches-4.4/0173-BCM270X_DT-rpi-display-overlay-add-swapxy-param.patch
@@ -1,7 +1,7 @@
-From 7a33a72a9f2fd1091cd8b5f38bd9468c3fdbfdb9 Mon Sep 17 00:00:00 2001
+From 94ffee1a2cbfa8016ca9e4782342618bf88a14c7 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 9 Mar 2016 21:28:52 +0000
-Subject: [PATCH 173/423] BCM270X_DT: rpi-display overlay - add swapxy param
+Subject: [PATCH] BCM270X_DT: rpi-display overlay - add swapxy param
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0174-Remove-I2S-config-from-bt_pins.patch b/target/linux/brcm2708/patches-4.4/0174-Remove-I2S-config-from-bt_pins.patch
index 11972b6..f064c03 100644
--- a/target/linux/brcm2708/patches-4.4/0174-Remove-I2S-config-from-bt_pins.patch
+++ b/target/linux/brcm2708/patches-4.4/0174-Remove-I2S-config-from-bt_pins.patch
@@ -1,7 +1,7 @@
-From aa4e7d0b5d49c77ace418c07ba301fafb53c38ef Mon Sep 17 00:00:00 2001
+From 1bdb6cc0903dce08e168a6d23ba6675202c3dd0f Mon Sep 17 00:00:00 2001
 From: DigitalDreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Fri, 11 Mar 2016 11:44:35 +0000
-Subject: [PATCH 174/423] Remove I2S config from bt_pins.
+Subject: [PATCH] Remove I2S config from bt_pins.
 
 Remove I2S config from bt_pins. Causes issues with clock alignment when I2S is
 used by an external DAC via GPIO header.
diff --git a/target/linux/brcm2708/patches-4.4/0175-Revert-scripts-dtc-Add-overlay-support.patch b/target/linux/brcm2708/patches-4.4/0175-Revert-scripts-dtc-Add-overlay-support.patch
index 3f1f955..50e5478 100644
--- a/target/linux/brcm2708/patches-4.4/0175-Revert-scripts-dtc-Add-overlay-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0175-Revert-scripts-dtc-Add-overlay-support.patch
@@ -1,7 +1,7 @@
-From 769fa207da8b9cf5e87f67fc7a1d4644257e29da Mon Sep 17 00:00:00 2001
+From f8a8a35b960f948c60c9d0a4b544366c9154d5a0 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 10 Aug 2015 09:44:59 +0100
-Subject: [PATCH 175/423] Revert "scripts/dtc: Add overlay support"
+Subject: [PATCH] Revert "scripts/dtc: Add overlay support"
 
 This reverts commit fa6d1755c2fdd9451077d8248e3804f0619f19b9.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0176-scripts-dtc-Update-to-upstream-version-1.4.1.patch b/target/linux/brcm2708/patches-4.4/0176-scripts-dtc-Update-to-upstream-version-1.4.1.patch
index 2c5f004..82a7443 100644
--- a/target/linux/brcm2708/patches-4.4/0176-scripts-dtc-Update-to-upstream-version-1.4.1.patch
+++ b/target/linux/brcm2708/patches-4.4/0176-scripts-dtc-Update-to-upstream-version-1.4.1.patch
@@ -1,7 +1,7 @@
-From 58d2939986c3db3d57cad899a758cf5e325072c5 Mon Sep 17 00:00:00 2001
+From c128c19379082f13558d4b51ae7d15a209bd9918 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 10 Aug 2015 09:49:15 +0100
-Subject: [PATCH 176/423] scripts/dtc: Update to upstream version 1.4.1
+Subject: [PATCH] scripts/dtc: Update to upstream version 1.4.1
 
 Includes the new localfixups format.
 
diff --git a/target/linux/brcm2708/patches-4.4/0177-configfs-implement-binary-attributes.patch b/target/linux/brcm2708/patches-4.4/0177-configfs-implement-binary-attributes.patch
index d80a7f3..03d6814 100644
--- a/target/linux/brcm2708/patches-4.4/0177-configfs-implement-binary-attributes.patch
+++ b/target/linux/brcm2708/patches-4.4/0177-configfs-implement-binary-attributes.patch
@@ -1,7 +1,7 @@
-From 4105c60fc35515eb614e54b5ca51e2da2f6e78e7 Mon Sep 17 00:00:00 2001
+From 14ea3d6ac7fea0e515bbde859379b0a43b6d67b9 Mon Sep 17 00:00:00 2001
 From: Pantelis Antoniou <pantelis.antoniou at konsulko.com>
 Date: Thu, 22 Oct 2015 23:30:04 +0300
-Subject: [PATCH 177/423] configfs: implement binary attributes
+Subject: [PATCH] configfs: implement binary attributes
 
 ConfigFS lacked binary attributes up until now. This patch
 introduces support for binary attributes in a somewhat similar
diff --git a/target/linux/brcm2708/patches-4.4/0178-OF-DT-Overlay-configfs-interface.patch b/target/linux/brcm2708/patches-4.4/0178-OF-DT-Overlay-configfs-interface.patch
index d4ee94c..4dae3cf 100644
--- a/target/linux/brcm2708/patches-4.4/0178-OF-DT-Overlay-configfs-interface.patch
+++ b/target/linux/brcm2708/patches-4.4/0178-OF-DT-Overlay-configfs-interface.patch
@@ -1,7 +1,7 @@
-From 4f9177551b224eb3cf97bbe797a2909bb6ab2998 Mon Sep 17 00:00:00 2001
+From 9745f13ee715e7f47ac11a31d0f75b9661b63344 Mon Sep 17 00:00:00 2001
 From: Pantelis Antoniou <pantelis.antoniou at konsulko.com>
 Date: Wed, 3 Dec 2014 13:23:28 +0200
-Subject: [PATCH 178/423] OF: DT-Overlay configfs interface
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0179-Protect-__release_resource-against-resources-without.patch b/target/linux/brcm2708/patches-4.4/0179-Protect-__release_resource-against-resources-without.patch
index d450c09..39f260c 100644
--- a/target/linux/brcm2708/patches-4.4/0179-Protect-__release_resource-against-resources-without.patch
+++ b/target/linux/brcm2708/patches-4.4/0179-Protect-__release_resource-against-resources-without.patch
@@ -1,8 +1,7 @@
-From b20701a18267d97ae47407f713bda22e2b647bc1 Mon Sep 17 00:00:00 2001
+From 984c98b47f9ffd5f57599e604df2cc09c63f74ba Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 13 Mar 2015 12:43:36 +0000
-Subject: [PATCH 179/423] Protect __release_resource against resources without
- parents
+Subject: [PATCH] Protect __release_resource against resources without parents
 
 Without this patch, removing a device tree overlay can crash here.
 
diff --git a/target/linux/brcm2708/patches-4.4/0180-BCM270X_DT-Add-a-.dtbo-target-use-for-overlays.patch b/target/linux/brcm2708/patches-4.4/0180-BCM270X_DT-Add-a-.dtbo-target-use-for-overlays.patch
index 816edda..45de5b8 100644
--- a/target/linux/brcm2708/patches-4.4/0180-BCM270X_DT-Add-a-.dtbo-target-use-for-overlays.patch
+++ b/target/linux/brcm2708/patches-4.4/0180-BCM270X_DT-Add-a-.dtbo-target-use-for-overlays.patch
@@ -1,7 +1,7 @@
-From 931d7ab56b2798d9b72ef2308d981d824335b7de Mon Sep 17 00:00:00 2001
+From 95aee427e91922408870627e6e3d66f975791336 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 13 Mar 2015 20:00:21 +0000
-Subject: [PATCH 180/423] BCM270X_DT: Add a .dtbo target, use for overlays
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0181-scripts-knlinfo-Decode-DDTK-atom.patch b/target/linux/brcm2708/patches-4.4/0181-scripts-knlinfo-Decode-DDTK-atom.patch
index 1dc8283..e793f1a 100644
--- a/target/linux/brcm2708/patches-4.4/0181-scripts-knlinfo-Decode-DDTK-atom.patch
+++ b/target/linux/brcm2708/patches-4.4/0181-scripts-knlinfo-Decode-DDTK-atom.patch
@@ -1,7 +1,7 @@
-From 97ce4cd9a2b9c596c382c4af688518eaf6a5a84b Mon Sep 17 00:00:00 2001
+From 5f1a77a98df6352d585a906a61166062cb43c14b Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 29 May 2015 11:18:58 +0100
-Subject: [PATCH 181/423] scripts/knlinfo: Decode DDTK atom
+Subject: [PATCH] scripts/knlinfo: Decode DDTK atom
 
 Show the DDTK atom as being a boolean.
 
diff --git a/target/linux/brcm2708/patches-4.4/0182-Enable-Dynamic-Device-Tree-for-bcmrpi_defconfig-and-.patch b/target/linux/brcm2708/patches-4.4/0182-Enable-Dynamic-Device-Tree-for-bcmrpi_defconfig-and-.patch
index a1ced93..418a8d7 100644
--- a/target/linux/brcm2708/patches-4.4/0182-Enable-Dynamic-Device-Tree-for-bcmrpi_defconfig-and-.patch
+++ b/target/linux/brcm2708/patches-4.4/0182-Enable-Dynamic-Device-Tree-for-bcmrpi_defconfig-and-.patch
@@ -1,7 +1,7 @@
-From b6d96f1dc239d7b7e71aa658156c893e46e6a2bf Mon Sep 17 00:00:00 2001
+From 6d4c8ab1f16bc536dd5d858341e1c0d0b67d930b Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 29 May 2015 11:48:59 +0100
-Subject: [PATCH 182/423] Enable Dynamic Device Tree for bcmrpi_defconfig and
+Subject: [PATCH] Enable Dynamic Device Tree for bcmrpi_defconfig and
  bcm2709_defconfig
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
diff --git a/target/linux/brcm2708/patches-4.4/0183-SQUASH-Add-CONFIG_OF_CONFIGFS-to-bcmrpi_defconfig.patch b/target/linux/brcm2708/patches-4.4/0183-SQUASH-Add-CONFIG_OF_CONFIGFS-to-bcmrpi_defconfig.patch
index 1a2e0c6..0100df7 100644
--- a/target/linux/brcm2708/patches-4.4/0183-SQUASH-Add-CONFIG_OF_CONFIGFS-to-bcmrpi_defconfig.patch
+++ b/target/linux/brcm2708/patches-4.4/0183-SQUASH-Add-CONFIG_OF_CONFIGFS-to-bcmrpi_defconfig.patch
@@ -1,7 +1,7 @@
-From dbe624ecbe5f601297665da59ba6cfc11e8150d4 Mon Sep 17 00:00:00 2001
+From fbc9f06dc47543dbd6b7f2806f6535082eac3696 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Sun, 13 Mar 2016 16:14:44 +0000
-Subject: [PATCH 183/423] SQUASH: Add CONFIG_OF_CONFIGFS to bcmrpi_defconfig
+Subject: [PATCH] SQUASH: Add CONFIG_OF_CONFIGFS to bcmrpi_defconfig
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0184-dts-kbuild-dtbs_install-installs-.dtbo-files-too.patch b/target/linux/brcm2708/patches-4.4/0184-dts-kbuild-dtbs_install-installs-.dtbo-files-too.patch
index 501c0fc..6889847 100644
--- a/target/linux/brcm2708/patches-4.4/0184-dts-kbuild-dtbs_install-installs-.dtbo-files-too.patch
+++ b/target/linux/brcm2708/patches-4.4/0184-dts-kbuild-dtbs_install-installs-.dtbo-files-too.patch
@@ -1,7 +1,7 @@
-From ac5048f5b6df22924f23952107e3810f999387bf Mon Sep 17 00:00:00 2001
+From 68bdbeeade267f4aff7a4eaf9a122baf306982f4 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 14 Mar 2016 16:56:54 +0000
-Subject: [PATCH 184/423] dts, kbuild: dtbs_install installs .dtbo files too
+Subject: [PATCH] dts, kbuild: dtbs_install installs .dtbo files too
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0185-bcm2835-sdhost-Workaround-for-slow-sectors.patch b/target/linux/brcm2708/patches-4.4/0185-bcm2835-sdhost-Workaround-for-slow-sectors.patch
index 9b68f5b..7640647 100644
--- a/target/linux/brcm2708/patches-4.4/0185-bcm2835-sdhost-Workaround-for-slow-sectors.patch
+++ b/target/linux/brcm2708/patches-4.4/0185-bcm2835-sdhost-Workaround-for-slow-sectors.patch
@@ -1,7 +1,7 @@
-From 4f52f1f19ee9c54eb0022eeff03a380fca01384b Mon Sep 17 00:00:00 2001
+From a4a7cdd3364de9fa9edfb32a64fa0e7a577d9143 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 15 Mar 2016 14:10:29 +0000
-Subject: [PATCH 185/423] bcm2835-sdhost: Workaround for "slow" sectors
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0186-BCM270X_DT-Add-labels-to-spidev-nodes.patch b/target/linux/brcm2708/patches-4.4/0186-BCM270X_DT-Add-labels-to-spidev-nodes.patch
index 0355f09..d2277b9 100644
--- a/target/linux/brcm2708/patches-4.4/0186-BCM270X_DT-Add-labels-to-spidev-nodes.patch
+++ b/target/linux/brcm2708/patches-4.4/0186-BCM270X_DT-Add-labels-to-spidev-nodes.patch
@@ -1,7 +1,7 @@
-From 69b8da40b814a65b49a19058e906b26b44303fba Mon Sep 17 00:00:00 2001
+From bf6a2bb922c5ef6831d40eb934597733836080bf Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 15 Mar 2016 15:49:16 +0000
-Subject: [PATCH 186/423] BCM270X_DT: Add labels to spidev nodes
+Subject: [PATCH] BCM270X_DT: Add labels to spidev nodes
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0187-BCM270X_DT-Use-spidev-labels-in-overlays.patch b/target/linux/brcm2708/patches-4.4/0187-BCM270X_DT-Use-spidev-labels-in-overlays.patch
index 50d139f..e1facfa 100644
--- a/target/linux/brcm2708/patches-4.4/0187-BCM270X_DT-Use-spidev-labels-in-overlays.patch
+++ b/target/linux/brcm2708/patches-4.4/0187-BCM270X_DT-Use-spidev-labels-in-overlays.patch
@@ -1,7 +1,7 @@
-From 37d926b159b0cb6ebe80c24b9641e12b6fbd3dd5 Mon Sep 17 00:00:00 2001
+From 66c35d065749cfb8b128077cfc1a114674273bea Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 15 Mar 2016 16:27:26 +0000
-Subject: [PATCH 187/423] BCM270X_DT: Use spidev labels in overlays
+Subject: [PATCH] BCM270X_DT: Use spidev labels in overlays
 
 ---
  arch/arm/boot/dts/overlays/ads7846-overlay.dts     | 22 ++++++++++-------
diff --git a/target/linux/brcm2708/patches-4.4/0188-BCM270X_DT-Build-and-document-the-wittypi-overlay.patch b/target/linux/brcm2708/patches-4.4/0188-BCM270X_DT-Build-and-document-the-wittypi-overlay.patch
index bdfd289..d74ce04 100644
--- a/target/linux/brcm2708/patches-4.4/0188-BCM270X_DT-Build-and-document-the-wittypi-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0188-BCM270X_DT-Build-and-document-the-wittypi-overlay.patch
@@ -1,7 +1,7 @@
-From 286f21ae694dd4e3798011d771f6833318f8371c Mon Sep 17 00:00:00 2001
+From 3b2ac4714efbc144e8df9fd939498313958eaac5 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 15 Mar 2016 16:41:37 +0000
-Subject: [PATCH 188/423] BCM270X_DT: Build and document the wittypi overlay
+Subject: [PATCH] BCM270X_DT: Build and document the wittypi overlay
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0189-scripts-dtc-Fix-UMR-causing-corrupt-dtbo-overlay-fil.patch b/target/linux/brcm2708/patches-4.4/0189-scripts-dtc-Fix-UMR-causing-corrupt-dtbo-overlay-fil.patch
index a028ec7..cfa53d4 100644
--- a/target/linux/brcm2708/patches-4.4/0189-scripts-dtc-Fix-UMR-causing-corrupt-dtbo-overlay-fil.patch
+++ b/target/linux/brcm2708/patches-4.4/0189-scripts-dtc-Fix-UMR-causing-corrupt-dtbo-overlay-fil.patch
@@ -1,8 +1,7 @@
-From 65d8417f8d87161c1bc6b6b0bc43a32a89546ee4 Mon Sep 17 00:00:00 2001
+From c12c80f4a33ca959cb0a62c6284bbc27cdce0b48 Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Tue, 15 Mar 2016 21:13:39 +0100
-Subject: [PATCH 189/423] scripts/dtc: Fix UMR causing corrupt dtbo overlay
- files
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0190-BCM270X_DT-Add-dtparam-for-uart1.patch b/target/linux/brcm2708/patches-4.4/0190-BCM270X_DT-Add-dtparam-for-uart1.patch
index 9e3f2fe..b707548 100644
--- a/target/linux/brcm2708/patches-4.4/0190-BCM270X_DT-Add-dtparam-for-uart1.patch
+++ b/target/linux/brcm2708/patches-4.4/0190-BCM270X_DT-Add-dtparam-for-uart1.patch
@@ -1,7 +1,7 @@
-From 0913a8d9a13e327cd592970da2555c32963a90e7 Mon Sep 17 00:00:00 2001
+From 64b838bcfcd490561e919bd569da8ab3afb83f83 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 16 Mar 2016 08:35:06 +0000
-Subject: [PATCH 190/423] BCM270X_DT: Add dtparam for uart1
+Subject: [PATCH] BCM270X_DT: Add dtparam for uart1
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0191-dwc-overlay-Use-label-so-overrides-can-apply.patch b/target/linux/brcm2708/patches-4.4/0191-dwc-overlay-Use-label-so-overrides-can-apply.patch
index d7ca6ac..0e0583e 100644
--- a/target/linux/brcm2708/patches-4.4/0191-dwc-overlay-Use-label-so-overrides-can-apply.patch
+++ b/target/linux/brcm2708/patches-4.4/0191-dwc-overlay-Use-label-so-overrides-can-apply.patch
@@ -1,7 +1,7 @@
-From 664a65f96f3a1afdacf3697460fb57e3a34080fb Mon Sep 17 00:00:00 2001
+From a81b12982d9624ad84d05996233239bb7e213f70 Mon Sep 17 00:00:00 2001
 From: Przemek Rudy <prudy1 at o2.pl>
 Date: Fri, 11 Mar 2016 22:41:26 +0100
-Subject: [PATCH 191/423] dwc-overlay: Use label so overrides can apply.
+Subject: [PATCH] dwc-overlay: Use label so overrides can apply.
 
 ---
  arch/arm/boot/dts/overlays/dwc2-overlay.dts | 10 +++++-----
diff --git a/target/linux/brcm2708/patches-4.4/0192-drm-vc4-Add-a-debugfs-node-for-tracking-execution-st.patch b/target/linux/brcm2708/patches-4.4/0192-drm-vc4-Add-a-debugfs-node-for-tracking-execution-st.patch
index 7b57c64..2a0ffc5 100644
--- a/target/linux/brcm2708/patches-4.4/0192-drm-vc4-Add-a-debugfs-node-for-tracking-execution-st.patch
+++ b/target/linux/brcm2708/patches-4.4/0192-drm-vc4-Add-a-debugfs-node-for-tracking-execution-st.patch
@@ -1,8 +1,7 @@
-From 52a53c8b62c8e5500ffa6131ed367c0271c05679 Mon Sep 17 00:00:00 2001
+From 2bcb714370ae69fe808d7e2061927c2ea1753ff7 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 22 Jan 2016 13:06:39 -0800
-Subject: [PATCH 192/423] drm/vc4: Add a debugfs node for tracking execution
- state.
+Subject: [PATCH] drm/vc4: Add a debugfs node for tracking execution state.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0193-drm-vc4-Include-vc4_drm.h-in-uapi-in-downstream-buil.patch b/target/linux/brcm2708/patches-4.4/0193-drm-vc4-Include-vc4_drm.h-in-uapi-in-downstream-buil.patch
index f3db1bd..da10790 100644
--- a/target/linux/brcm2708/patches-4.4/0193-drm-vc4-Include-vc4_drm.h-in-uapi-in-downstream-buil.patch
+++ b/target/linux/brcm2708/patches-4.4/0193-drm-vc4-Include-vc4_drm.h-in-uapi-in-downstream-buil.patch
@@ -1,8 +1,7 @@
-From aa0275b3a1823ea863d2f9f2635cc6ca446adb92 Mon Sep 17 00:00:00 2001
+From e8da5a4c9dfbb65205cc9e4d448af3e8965af88d Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 25 Jan 2016 13:03:33 -0800
-Subject: [PATCH 193/423] drm/vc4: Include vc4_drm.h in uapi in downstream
- build.
+Subject: [PATCH] drm/vc4: Include vc4_drm.h in uapi in downstream build.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0194-drm-vc4-Validate-that-WAIT_BO-padding-is-cleared.patch b/target/linux/brcm2708/patches-4.4/0194-drm-vc4-Validate-that-WAIT_BO-padding-is-cleared.patch
index 7e76e2b..f53dcec 100644
--- a/target/linux/brcm2708/patches-4.4/0194-drm-vc4-Validate-that-WAIT_BO-padding-is-cleared.patch
+++ b/target/linux/brcm2708/patches-4.4/0194-drm-vc4-Validate-that-WAIT_BO-padding-is-cleared.patch
@@ -1,7 +1,7 @@
-From 5528526faa0302e28b284590f761d43d66e85632 Mon Sep 17 00:00:00 2001
+From baf132f97c5fa25c0dcec59369e225e759ab22e6 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 25 Jan 2016 13:05:00 -0800
-Subject: [PATCH 194/423] drm/vc4: Validate that WAIT_BO padding is cleared.
+Subject: [PATCH] drm/vc4: Validate that WAIT_BO padding is cleared.
 
 This is ABI future-proofing if we ever want to extend the pad to mean
 something.
diff --git a/target/linux/brcm2708/patches-4.4/0195-drm-vc4-Fix-the-clear-color-for-the-first-tile-rende.patch b/target/linux/brcm2708/patches-4.4/0195-drm-vc4-Fix-the-clear-color-for-the-first-tile-rende.patch
index 06b5012..a1a3d6b 100644
--- a/target/linux/brcm2708/patches-4.4/0195-drm-vc4-Fix-the-clear-color-for-the-first-tile-rende.patch
+++ b/target/linux/brcm2708/patches-4.4/0195-drm-vc4-Fix-the-clear-color-for-the-first-tile-rende.patch
@@ -1,8 +1,7 @@
-From 68cbe5055b8b2d1b96fd6b5009f16064783e6b00 Mon Sep 17 00:00:00 2001
+From 339e2ea50b25fe0183161cee31f640e691f2a1c0 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 25 Jan 2016 13:52:41 -0800
-Subject: [PATCH 195/423] drm/vc4: Fix the clear color for the first tile
- rendered.
+Subject: [PATCH] drm/vc4: Fix the clear color for the first tile rendered.
 
 Apparently in hardware (as opposed to simulation), the clear colors
 need to be uploaded before the render config, otherwise they won't
diff --git a/target/linux/brcm2708/patches-4.4/0196-drm-vc4-Return-an-ERR_PTR-from-BO-creation-instead-o.patch b/target/linux/brcm2708/patches-4.4/0196-drm-vc4-Return-an-ERR_PTR-from-BO-creation-instead-o.patch
index 1ef827b..f9daa87 100644
--- a/target/linux/brcm2708/patches-4.4/0196-drm-vc4-Return-an-ERR_PTR-from-BO-creation-instead-o.patch
+++ b/target/linux/brcm2708/patches-4.4/0196-drm-vc4-Return-an-ERR_PTR-from-BO-creation-instead-o.patch
@@ -1,8 +1,7 @@
-From 8833c229e00291163a2464d82d0d7902e24466ca Mon Sep 17 00:00:00 2001
+From 96cfc336eb33c0152c4aff462bd6a21cd75cc731 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 25 Jan 2016 14:13:12 -0800
-Subject: [PATCH 196/423] drm/vc4: Return an ERR_PTR from BO creation instead
- of NULL.
+Subject: [PATCH] drm/vc4: Return an ERR_PTR from BO creation instead of NULL.
 
 Fixes igt vc4_create_bo/create-bo-0 by returning -EINVAL from the
 ioctl instead of -ENOMEM.
diff --git a/target/linux/brcm2708/patches-4.4/0197-drm-vc4-Fix-ERESTARTSYS-error-return-from-BO-waits.patch b/target/linux/brcm2708/patches-4.4/0197-drm-vc4-Fix-ERESTARTSYS-error-return-from-BO-waits.patch
index c112951..0d185a6 100644
--- a/target/linux/brcm2708/patches-4.4/0197-drm-vc4-Fix-ERESTARTSYS-error-return-from-BO-waits.patch
+++ b/target/linux/brcm2708/patches-4.4/0197-drm-vc4-Fix-ERESTARTSYS-error-return-from-BO-waits.patch
@@ -1,7 +1,7 @@
-From a60ba3cce2f5fb3bb34443d4b5ba8cbf135e6163 Mon Sep 17 00:00:00 2001
+From 0304e9381edf30280122d981e5a1b8dedc4c003f Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 25 Jan 2016 14:32:41 -0800
-Subject: [PATCH 197/423] drm/vc4: Fix -ERESTARTSYS error return from BO waits.
+Subject: [PATCH] drm/vc4: Fix -ERESTARTSYS error return from BO waits.
 
 This caused the wait ioctls to claim that waiting had completed when
 we actually got interrupted by a signal before it was done.  Fixes
diff --git a/target/linux/brcm2708/patches-4.4/0198-drm-vc4-Drop-error-message-on-seqno-wait-timeouts.patch b/target/linux/brcm2708/patches-4.4/0198-drm-vc4-Drop-error-message-on-seqno-wait-timeouts.patch
index f61a459..c0ec526 100644
--- a/target/linux/brcm2708/patches-4.4/0198-drm-vc4-Drop-error-message-on-seqno-wait-timeouts.patch
+++ b/target/linux/brcm2708/patches-4.4/0198-drm-vc4-Drop-error-message-on-seqno-wait-timeouts.patch
@@ -1,7 +1,7 @@
-From e3ff132f57aa1837e2ec8deff44c263157962bb6 Mon Sep 17 00:00:00 2001
+From d12dd7a58fcc585b75fae60ab230a51b2ac9a6cb Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 25 Jan 2016 14:33:50 -0800
-Subject: [PATCH 198/423] drm/vc4: Drop error message on seqno wait timeouts.
+Subject: [PATCH] drm/vc4: Drop error message on seqno wait timeouts.
 
 These ioctls end up getting exposed to userspace, and having normal
 user requests print DRM errors is obviously wrong.  The message was
diff --git a/target/linux/brcm2708/patches-4.4/0199-BCM270X_DT-Add-1-bit-SDIO-using-minimal-pins.patch b/target/linux/brcm2708/patches-4.4/0199-BCM270X_DT-Add-1-bit-SDIO-using-minimal-pins.patch
index 24ea18c..9e00446 100644
--- a/target/linux/brcm2708/patches-4.4/0199-BCM270X_DT-Add-1-bit-SDIO-using-minimal-pins.patch
+++ b/target/linux/brcm2708/patches-4.4/0199-BCM270X_DT-Add-1-bit-SDIO-using-minimal-pins.patch
@@ -1,7 +1,7 @@
-From e1b1b8a6f9dbdcf019b8975d5ced5a0393b23dd3 Mon Sep 17 00:00:00 2001
+From 895c93a3efd6653df6bbabc12c2e0205be5560dd Mon Sep 17 00:00:00 2001
 From: campag <dave-lowe at ntlworld.com>
 Date: Wed, 24 Feb 2016 16:45:42 +0000
-Subject: [PATCH 199/423] BCM270X_DT: Add 1-bit SDIO using minimal pins...
+Subject: [PATCH] BCM270X_DT: Add 1-bit SDIO using minimal pins...
 
 ... for that mode: GPIOs 22-25.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0201-Add-overlay-and-enable-support-for-QCA7000-board.patch b/target/linux/brcm2708/patches-4.4/0201-Add-overlay-and-enable-support-for-QCA7000-board.patch
index 51e5885..56e6b50 100644
--- a/target/linux/brcm2708/patches-4.4/0201-Add-overlay-and-enable-support-for-QCA7000-board.patch
+++ b/target/linux/brcm2708/patches-4.4/0201-Add-overlay-and-enable-support-for-QCA7000-board.patch
@@ -1,7 +1,7 @@
-From 51405bd458e0e16e1b1a912e6361c83633567de1 Mon Sep 17 00:00:00 2001
+From 52ca91f1e28a45f4584432525b149f32a0048dd0 Mon Sep 17 00:00:00 2001
 From: Michael Heimpold <michael.heimpold at i2se.com>
 Date: Fri, 29 Jan 2016 12:00:37 +0100
-Subject: [PATCH 201/423] Add overlay and enable support for QCA7000 board
+Subject: [PATCH] Add overlay and enable support for QCA7000 board
 
 This adds a device tree overlay for the QCA7000 which can be used
 when attaching an I2SE's PLC Stamp micro EVK to the Raspberry Pi.
diff --git a/target/linux/brcm2708/patches-4.4/0202-serial-Take-care-starting-a-hung-up-tty-s-port.patch b/target/linux/brcm2708/patches-4.4/0202-serial-Take-care-starting-a-hung-up-tty-s-port.patch
index a5049d8..e917d44 100644
--- a/target/linux/brcm2708/patches-4.4/0202-serial-Take-care-starting-a-hung-up-tty-s-port.patch
+++ b/target/linux/brcm2708/patches-4.4/0202-serial-Take-care-starting-a-hung-up-tty-s-port.patch
@@ -1,7 +1,7 @@
-From 91796069d412600985585cbb8d72cb5dbf7d9a2e Mon Sep 17 00:00:00 2001
+From baaee4dd48573d8de4e22d812717c6863ba4b7e6 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 9 Mar 2016 13:28:24 +0000
-Subject: [PATCH 202/423] serial: Take care starting a hung-up tty's port
+Subject: [PATCH] serial: Take care starting a hung-up tty's port
 
 tty_port_hangup sets a port's tty field to NULL (holding the port lock),
 but uart_tx_stopped, called from __uart_start (with the port lock),
diff --git a/target/linux/brcm2708/patches-4.4/0203-pi3-miniuart-bt-overlay-Correct-and-clarify-info.patch b/target/linux/brcm2708/patches-4.4/0203-pi3-miniuart-bt-overlay-Correct-and-clarify-info.patch
index feef4ca..340be02 100644
--- a/target/linux/brcm2708/patches-4.4/0203-pi3-miniuart-bt-overlay-Correct-and-clarify-info.patch
+++ b/target/linux/brcm2708/patches-4.4/0203-pi3-miniuart-bt-overlay-Correct-and-clarify-info.patch
@@ -1,7 +1,7 @@
-From c920022cc697e98b64bc9af5fc64ca0f2c802ccd Mon Sep 17 00:00:00 2001
+From f763209fb1c001b84b03ba86c72db7a7ae8fb441 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 17 Mar 2016 10:16:16 +0000
-Subject: [PATCH 203/423] pi3-miniuart-bt-overlay: Correct and clarify info
+Subject: [PATCH] pi3-miniuart-bt-overlay: Correct and clarify info
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0204-pwm-overlays-Params-must-have-in-overlay-targets.patch b/target/linux/brcm2708/patches-4.4/0204-pwm-overlays-Params-must-have-in-overlay-targets.patch
index 1aee8c5..8921375 100644
--- a/target/linux/brcm2708/patches-4.4/0204-pwm-overlays-Params-must-have-in-overlay-targets.patch
+++ b/target/linux/brcm2708/patches-4.4/0204-pwm-overlays-Params-must-have-in-overlay-targets.patch
@@ -1,7 +1,7 @@
-From 0ba5b23995c38e7c477647aaf84df0a0dc136b70 Mon Sep 17 00:00:00 2001
+From 45513400f0b487f9bbca90e823fa591ef741dad8 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 17 Mar 2016 10:41:56 +0000
-Subject: [PATCH 204/423] pwm overlays: Params must have in-overlay targets
+Subject: [PATCH] pwm overlays: Params must have in-overlay targets
 
 ---
  arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts | 9 ++++++++-
diff --git a/target/linux/brcm2708/patches-4.4/0205-BCM270X_DT-Switch-Compute-Module-to-MMC.patch b/target/linux/brcm2708/patches-4.4/0205-BCM270X_DT-Switch-Compute-Module-to-MMC.patch
index eb3b1de..a328f35 100644
--- a/target/linux/brcm2708/patches-4.4/0205-BCM270X_DT-Switch-Compute-Module-to-MMC.patch
+++ b/target/linux/brcm2708/patches-4.4/0205-BCM270X_DT-Switch-Compute-Module-to-MMC.patch
@@ -1,7 +1,7 @@
-From ffb63fd81160a7ec5876a7e3f29b78b68e481bc7 Mon Sep 17 00:00:00 2001
+From 263f82e038a8ae204e6beaf2102ad9d91d5ca4ee Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 18 Mar 2016 13:06:29 +0000
-Subject: [PATCH 205/423] BCM270X_DT: Switch Compute Module to MMC
+Subject: [PATCH] BCM270X_DT: Switch Compute Module to MMC
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0206-dwc_otg-Don-t-free-qh-align-buffers-in-atomic-contex.patch b/target/linux/brcm2708/patches-4.4/0206-dwc_otg-Don-t-free-qh-align-buffers-in-atomic-contex.patch
index 9342892..5c9edea 100644
--- a/target/linux/brcm2708/patches-4.4/0206-dwc_otg-Don-t-free-qh-align-buffers-in-atomic-contex.patch
+++ b/target/linux/brcm2708/patches-4.4/0206-dwc_otg-Don-t-free-qh-align-buffers-in-atomic-contex.patch
@@ -1,8 +1,7 @@
-From d309ffcbd73c0fb942d4f92b1a5089a40fe3855e Mon Sep 17 00:00:00 2001
+From c237ff4a1325ac94169ed1f5f9022f1358b79ac9 Mon Sep 17 00:00:00 2001
 From: P33M <P33M at github.com>
 Date: Fri, 18 Mar 2016 17:38:37 +0000
-Subject: [PATCH 206/423] dwc_otg: Don't free qh align buffers in atomic
- context
+Subject: [PATCH] dwc_otg: Don't free qh align buffers in atomic context
 
 ---
  drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c | 9 +++++++--
diff --git a/target/linux/brcm2708/patches-4.4/0207-dwc_otg-Enable-the-hack-for-Split-Interrupt-transact.patch b/target/linux/brcm2708/patches-4.4/0207-dwc_otg-Enable-the-hack-for-Split-Interrupt-transact.patch
index 560b6b2..783efba 100644
--- a/target/linux/brcm2708/patches-4.4/0207-dwc_otg-Enable-the-hack-for-Split-Interrupt-transact.patch
+++ b/target/linux/brcm2708/patches-4.4/0207-dwc_otg-Enable-the-hack-for-Split-Interrupt-transact.patch
@@ -1,8 +1,8 @@
-From 7db6ea3f5e135665bb4275d8b74bbe900d9aad7a Mon Sep 17 00:00:00 2001
+From 87dd923568a28a6784581a3f4c18970b834779a8 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Mon, 21 Mar 2016 15:38:38 +0000
-Subject: [PATCH 207/423] dwc_otg: Enable the hack for Split Interrupt
- transactions by default
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0208-BCM270X_DT-Remove-explicit-claiming-of-UART-pins.patch b/target/linux/brcm2708/patches-4.4/0208-BCM270X_DT-Remove-explicit-claiming-of-UART-pins.patch
index 78b5405..d4eb172 100644
--- a/target/linux/brcm2708/patches-4.4/0208-BCM270X_DT-Remove-explicit-claiming-of-UART-pins.patch
+++ b/target/linux/brcm2708/patches-4.4/0208-BCM270X_DT-Remove-explicit-claiming-of-UART-pins.patch
@@ -1,7 +1,7 @@
-From 4416c9473baa7439421aba5b58bc55cfc23f0a15 Mon Sep 17 00:00:00 2001
+From 678f08c4c3fd62b5e3cd95cc9596733354b2ba19 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Sat, 19 Mar 2016 16:51:37 +0000
-Subject: [PATCH 208/423] BCM270X_DT: Remove explicit claiming of UART pins
+Subject: [PATCH] BCM270X_DT: Remove explicit claiming of UART pins
 
 It is convenient to be able to map a different function to the UART
 pins (e.g. DPI for vga666) without having to disable the UART first.
diff --git a/target/linux/brcm2708/patches-4.4/0209-lirc_rpi-Lower-IR-reception-error-to-debug.patch b/target/linux/brcm2708/patches-4.4/0209-lirc_rpi-Lower-IR-reception-error-to-debug.patch
index 9376121..663d9cc 100644
--- a/target/linux/brcm2708/patches-4.4/0209-lirc_rpi-Lower-IR-reception-error-to-debug.patch
+++ b/target/linux/brcm2708/patches-4.4/0209-lirc_rpi-Lower-IR-reception-error-to-debug.patch
@@ -1,7 +1,7 @@
-From 324d6d326ca794bf6d639b85c9745628b99b47c9 Mon Sep 17 00:00:00 2001
+From f05cfb491a1895d0975be326a9e7e061c6db2d5a Mon Sep 17 00:00:00 2001
 From: Rodrigo Freire <rfreire at rf.usersys.redhat.com>
 Date: Tue, 22 Mar 2016 12:40:33 -0300
-Subject: [PATCH 209/423] lirc_rpi: Lower IR reception error to debug
+Subject: [PATCH] lirc_rpi: Lower IR reception error to debug
 
 Lowers a IR reception error condition message to KERNEL_DEBUG
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0210-vchiq_arm-Access-the-dequeue_pending-flag-locked.patch b/target/linux/brcm2708/patches-4.4/0210-vchiq_arm-Access-the-dequeue_pending-flag-locked.patch
index 664d110..861f885 100644
--- a/target/linux/brcm2708/patches-4.4/0210-vchiq_arm-Access-the-dequeue_pending-flag-locked.patch
+++ b/target/linux/brcm2708/patches-4.4/0210-vchiq_arm-Access-the-dequeue_pending-flag-locked.patch
@@ -1,7 +1,7 @@
-From 8a4ce18b5f3ca5570666284a3a0208534dd41c26 Mon Sep 17 00:00:00 2001
+From 39afc75832ce9cd81f09b035630dd30e325f1797 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 23 Mar 2016 14:16:25 +0000
-Subject: [PATCH 210/423] vchiq_arm: Access the dequeue_pending flag locked
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0211-BCM270X_DT-Add-pi3-act-led-overlay.patch b/target/linux/brcm2708/patches-4.4/0211-BCM270X_DT-Add-pi3-act-led-overlay.patch
index 018cbf7..9a9ec81 100644
--- a/target/linux/brcm2708/patches-4.4/0211-BCM270X_DT-Add-pi3-act-led-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0211-BCM270X_DT-Add-pi3-act-led-overlay.patch
@@ -1,7 +1,7 @@
-From 47e82ea7d35926f12bd642e1ad2727b9a128536a Mon Sep 17 00:00:00 2001
+From 48ba5a6ae0158827e416d8b8cd21680672737b79 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 23 Mar 2016 15:57:14 +0000
-Subject: [PATCH 211/423] BCM270X_DT: Add pi3-act-led overlay
+Subject: [PATCH] BCM270X_DT: Add pi3-act-led overlay
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0212-vchiq_arm-Service-callbacks-must-not-fail.patch b/target/linux/brcm2708/patches-4.4/0212-vchiq_arm-Service-callbacks-must-not-fail.patch
index 134abc8..533a3a2 100644
--- a/target/linux/brcm2708/patches-4.4/0212-vchiq_arm-Service-callbacks-must-not-fail.patch
+++ b/target/linux/brcm2708/patches-4.4/0212-vchiq_arm-Service-callbacks-must-not-fail.patch
@@ -1,7 +1,7 @@
-From 81e1683aced46435585f3a0a81e47f9bc7609abf Mon Sep 17 00:00:00 2001
+From 827e46013755254e526f0b682495ee88066a05a3 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 23 Mar 2016 20:53:47 +0000
-Subject: [PATCH 212/423] vchiq_arm: Service callbacks must not fail
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0213-Add-configs-and-overlay-for-PCA9548-I2C-mux.patch b/target/linux/brcm2708/patches-4.4/0213-Add-configs-and-overlay-for-PCA9548-I2C-mux.patch
index 3ad0410..d7bb6a2 100644
--- a/target/linux/brcm2708/patches-4.4/0213-Add-configs-and-overlay-for-PCA9548-I2C-mux.patch
+++ b/target/linux/brcm2708/patches-4.4/0213-Add-configs-and-overlay-for-PCA9548-I2C-mux.patch
@@ -1,7 +1,7 @@
-From 9a4c1bb2dd7727a0592ec0456b6763bd9d12bf2b Mon Sep 17 00:00:00 2001
+From 07207eccca9d4439d69e56fb5df378ac669087bf Mon Sep 17 00:00:00 2001
 From: Dave Stevenson <6by9 at users.noreply.github.com>
 Date: Thu, 17 Mar 2016 18:16:16 +0000
-Subject: [PATCH 213/423] Add configs and overlay for PCA9548 I2C mux
+Subject: [PATCH] Add configs and overlay for PCA9548 I2C mux
 
 Adds kernel configs for I2C muxes and a dt overlay for PCA9548
 that adds the 8 muxed I2C buses and mux device.
diff --git a/target/linux/brcm2708/patches-4.4/0214-BCM270X_DT-Add-DS1339-to-i2c-rtc-overlay.patch b/target/linux/brcm2708/patches-4.4/0214-BCM270X_DT-Add-DS1339-to-i2c-rtc-overlay.patch
index 8533117..3155cce 100644
--- a/target/linux/brcm2708/patches-4.4/0214-BCM270X_DT-Add-DS1339-to-i2c-rtc-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0214-BCM270X_DT-Add-DS1339-to-i2c-rtc-overlay.patch
@@ -1,7 +1,7 @@
-From 1523d333d0f5df470b0c0beedc9aa0b5a26e03aa Mon Sep 17 00:00:00 2001
+From d491a6a5acfeacccf0a24171babc0d5cf80a91da Mon Sep 17 00:00:00 2001
 From: Nicolas Boullis <nboullis at debian.org>
 Date: Wed, 23 Mar 2016 23:40:15 +0100
-Subject: [PATCH 214/423] BCM270X_DT: Add DS1339 to i2c-rtc overlay
+Subject: [PATCH] BCM270X_DT: Add DS1339 to i2c-rtc overlay
 
 ---
  arch/arm/boot/dts/overlays/README              | 4 ++++
diff --git a/target/linux/brcm2708/patches-4.4/0215-copy_from_user-CPU_SW_DOMAIN_PAN-compatibility.patch b/target/linux/brcm2708/patches-4.4/0215-copy_from_user-CPU_SW_DOMAIN_PAN-compatibility.patch
index 3859d09..0203f96 100644
--- a/target/linux/brcm2708/patches-4.4/0215-copy_from_user-CPU_SW_DOMAIN_PAN-compatibility.patch
+++ b/target/linux/brcm2708/patches-4.4/0215-copy_from_user-CPU_SW_DOMAIN_PAN-compatibility.patch
@@ -1,7 +1,7 @@
-From b6d043f90d9f788b1aae010f76884c62c646c9bf Mon Sep 17 00:00:00 2001
+From 2f3fc168789eb4952a99e19c046867516fc522f7 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 29 Mar 2016 15:32:30 +0100
-Subject: [PATCH 215/423] copy_from_user: CPU_SW_DOMAIN_PAN compatibility
+Subject: [PATCH] copy_from_user: CPU_SW_DOMAIN_PAN compatibility
 
 The downstream copy_from_user acceleration must also play nice with
 CONFIG_CPU_SW_DOMAIN_PAN.
diff --git a/target/linux/brcm2708/patches-4.4/0216-bcm2835-sdhost-Adjust-to-core-clock-changes.patch b/target/linux/brcm2708/patches-4.4/0216-bcm2835-sdhost-Adjust-to-core-clock-changes.patch
index 09d6647..4717b20 100644
--- a/target/linux/brcm2708/patches-4.4/0216-bcm2835-sdhost-Adjust-to-core-clock-changes.patch
+++ b/target/linux/brcm2708/patches-4.4/0216-bcm2835-sdhost-Adjust-to-core-clock-changes.patch
@@ -1,7 +1,7 @@
-From 3410a0f56bdd85a526ce87eebb1b14b9f7b28f87 Mon Sep 17 00:00:00 2001
+From f48a0653d0d30576b57061c30e3907e3363b6107 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 30 Mar 2016 16:33:09 +0100
-Subject: [PATCH 216/423] bcm2835-sdhost: Adjust to core clock changes
+Subject: [PATCH] bcm2835-sdhost: Adjust to core clock changes
 
 The SDHOST block uses the core clock, so previously it has been
 necessary to prevent the core clock from changing in order to maintain
diff --git a/target/linux/brcm2708/patches-4.4/0217-BCM270X_DT-Document-hazards-of-sdhost-overlay.patch b/target/linux/brcm2708/patches-4.4/0217-BCM270X_DT-Document-hazards-of-sdhost-overlay.patch
index 79f6864..b30040f 100644
--- a/target/linux/brcm2708/patches-4.4/0217-BCM270X_DT-Document-hazards-of-sdhost-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0217-BCM270X_DT-Document-hazards-of-sdhost-overlay.patch
@@ -1,7 +1,7 @@
-From cef80f622db0010b80505bb5ffe200918e1c5cdb Mon Sep 17 00:00:00 2001
+From b80428cf646d37e5b84103807a7259f8dccfe4d0 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 30 Mar 2016 17:07:15 +0100
-Subject: [PATCH 217/423] BCM270X_DT: Document hazards of sdhost overlay
+Subject: [PATCH] BCM270X_DT: Document hazards of sdhost overlay
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0218-cpufreq-Temporarily-ignore-io_is_busy-1.patch b/target/linux/brcm2708/patches-4.4/0218-cpufreq-Temporarily-ignore-io_is_busy-1.patch
index 030485b..1997e32 100644
--- a/target/linux/brcm2708/patches-4.4/0218-cpufreq-Temporarily-ignore-io_is_busy-1.patch
+++ b/target/linux/brcm2708/patches-4.4/0218-cpufreq-Temporarily-ignore-io_is_busy-1.patch
@@ -1,7 +1,7 @@
-From 282da1ae4ebaa2fbc33b6dc96f4d483c43715a51 Mon Sep 17 00:00:00 2001
+From 6a91406ee4a03844ef1dd7b9db4f4d52eee9047d Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 30 Mar 2016 17:23:15 +0100
-Subject: [PATCH 218/423] cpufreq: Temporarily ignore io_is_busy=1
+Subject: [PATCH] cpufreq: Temporarily ignore io_is_busy=1
 
 To speed testing of the new sdhost driver that adapts to changes in
 core_freq, hack the on-demand governor to treat io_is_busy=1 as
diff --git a/target/linux/brcm2708/patches-4.4/0219-Revert-cpufreq-Temporarily-ignore-io_is_busy-1.patch b/target/linux/brcm2708/patches-4.4/0219-Revert-cpufreq-Temporarily-ignore-io_is_busy-1.patch
index 98e9e6e..3cdd24e 100644
--- a/target/linux/brcm2708/patches-4.4/0219-Revert-cpufreq-Temporarily-ignore-io_is_busy-1.patch
+++ b/target/linux/brcm2708/patches-4.4/0219-Revert-cpufreq-Temporarily-ignore-io_is_busy-1.patch
@@ -1,7 +1,7 @@
-From 80f0513490df97cbc5cea73c6047fd80388467c3 Mon Sep 17 00:00:00 2001
+From 29e93302df7295b89c3819c304ce25d7830bd857 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 30 Mar 2016 20:18:38 +0100
-Subject: [PATCH 219/423] Revert "cpufreq: Temporarily ignore io_is_busy=1"
+Subject: [PATCH] Revert "cpufreq: Temporarily ignore io_is_busy=1"
 
 This reverts commit 2af1218a8a0220fec526f64d03977b8451afb4c8.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0220-net-sched-add-skb_at_tc_ingress-helper.patch b/target/linux/brcm2708/patches-4.4/0220-net-sched-add-skb_at_tc_ingress-helper.patch
index 6a19b8e..38f86fd 100644
--- a/target/linux/brcm2708/patches-4.4/0220-net-sched-add-skb_at_tc_ingress-helper.patch
+++ b/target/linux/brcm2708/patches-4.4/0220-net-sched-add-skb_at_tc_ingress-helper.patch
@@ -1,7 +1,7 @@
-From 5383498b7d0c4976b35d0a1dfaa0e71f20541440 Mon Sep 17 00:00:00 2001
+From cb795ee030d3ed4b792e795e545b81c00254df25 Mon Sep 17 00:00:00 2001
 From: Daniel Borkmann <daniel at iogearbox.net>
 Date: Thu, 7 Jan 2016 15:50:22 +0100
-Subject: [PATCH 220/423] net, sched: add skb_at_tc_ingress helper
+Subject: [PATCH] net, sched: add skb_at_tc_ingress helper
 
 Add a skb_at_tc_ingress() as this will be needed elsewhere as well and
 can hide the ugly ifdef.
diff --git a/target/linux/brcm2708/patches-4.4/0221-bpf-add-skb_postpush_rcsum-and-fix-dev_forward_skb-o.patch b/target/linux/brcm2708/patches-4.4/0221-bpf-add-skb_postpush_rcsum-and-fix-dev_forward_skb-o.patch
deleted file mode 100644
index ee8548f..0000000
--- a/target/linux/brcm2708/patches-4.4/0221-bpf-add-skb_postpush_rcsum-and-fix-dev_forward_skb-o.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 367956e87b62ae1f015ccbff58c7920a2e7a3511 Mon Sep 17 00:00:00 2001
-From: Daniel Borkmann <daniel at iogearbox.net>
-Date: Thu, 7 Jan 2016 15:50:23 +0100
-Subject: [PATCH 221/423] bpf: add skb_postpush_rcsum and fix dev_forward_skb
- occasions
-
-Add a small helper skb_postpush_rcsum() and fix up redirect locations
-that need CHECKSUM_COMPLETE fixups on ingress. dev_forward_skb() expects
-a proper csum that covers also Ethernet header, f.e. since 2c26d34bbcc0
-("net/core: Handle csum for CHECKSUM_COMPLETE VXLAN forwarding"), we
-also do skb_postpull_rcsum() after pulling Ethernet header off via
-eth_type_trans().
-
-When using eBPF in a netns setup f.e. with vxlan in collect metadata mode,
-I can trigger the following csum issue with an IPv6 setup:
-
-  [  505.144065] dummy1: hw csum failure
-  [...]
-  [  505.144108] Call Trace:
-  [  505.144112]  <IRQ>  [<ffffffff81372f08>] dump_stack+0x44/0x5c
-  [  505.144134]  [<ffffffff81607cea>] netdev_rx_csum_fault+0x3a/0x40
-  [  505.144142]  [<ffffffff815fee3f>] __skb_checksum_complete+0xcf/0xe0
-  [  505.144149]  [<ffffffff816f0902>] nf_ip6_checksum+0xb2/0x120
-  [  505.144161]  [<ffffffffa08c0e0e>] icmpv6_error+0x17e/0x328 [nf_conntrack_ipv6]
-  [  505.144170]  [<ffffffffa0898eca>] ? ip6t_do_table+0x2fa/0x645 [ip6_tables]
-  [  505.144177]  [<ffffffffa08c0725>] ? ipv6_get_l4proto+0x65/0xd0 [nf_conntrack_ipv6]
-  [  505.144189]  [<ffffffffa06c9a12>] nf_conntrack_in+0xc2/0x5a0 [nf_conntrack]
-  [  505.144196]  [<ffffffffa08c039c>] ipv6_conntrack_in+0x1c/0x20 [nf_conntrack_ipv6]
-  [  505.144204]  [<ffffffff8164385d>] nf_iterate+0x5d/0x70
-  [  505.144210]  [<ffffffff816438d6>] nf_hook_slow+0x66/0xc0
-  [  505.144218]  [<ffffffff816bd302>] ipv6_rcv+0x3f2/0x4f0
-  [  505.144225]  [<ffffffff816bca40>] ? ip6_make_skb+0x1b0/0x1b0
-  [  505.144232]  [<ffffffff8160b77b>] __netif_receive_skb_core+0x36b/0x9a0
-  [  505.144239]  [<ffffffff8160bdc8>] ? __netif_receive_skb+0x18/0x60
-  [  505.144245]  [<ffffffff8160bdc8>] __netif_receive_skb+0x18/0x60
-  [  505.144252]  [<ffffffff8160ccff>] process_backlog+0x9f/0x140
-  [  505.144259]  [<ffffffff8160c4a5>] net_rx_action+0x145/0x320
-  [...]
-
-What happens is that on ingress, we push Ethernet header back in, either
-from cls_bpf or right before skb_do_redirect(), but without updating csum.
-The "hw csum failure" can be fixed by using the new skb_postpush_rcsum()
-helper for the dev_forward_skb() case to correct the csum diff again.
-
-Thanks to Hannes Frederic Sowa for the csum_partial() idea!
-
-Fixes: 3896d655f4d4 ("bpf: introduce bpf_clone_redirect() helper")
-Fixes: 27b29f63058d ("bpf: add bpf_redirect() helper")
-Signed-off-by: Daniel Borkmann <daniel at iogearbox.net>
-Acked-by: Alexei Starovoitov <ast at kernel.org>
-Signed-off-by: David S. Miller <davem at davemloft.net>
----
- net/core/filter.c | 17 +++++++++++++----
- 1 file changed, 13 insertions(+), 4 deletions(-)
-
---- a/net/core/filter.c
-+++ b/net/core/filter.c
-@@ -1291,8 +1291,9 @@ static u64 bpf_skb_store_bytes(u64 r1, u
- 		/* skb_store_bits cannot return -EFAULT here */
- 		skb_store_bits(skb, offset, ptr, len);
- 
--	if (BPF_RECOMPUTE_CSUM(flags) && skb->ip_summed == CHECKSUM_COMPLETE)
--		skb->csum = csum_add(skb->csum, csum_partial(ptr, len, 0));
-+	if (BPF_RECOMPUTE_CSUM(flags))
-+		skb_postpush_rcsum(skb, ptr, len);
-+
- 	return 0;
- }
- 
-@@ -1415,8 +1416,12 @@ static u64 bpf_clone_redirect(u64 r1, u6
- 	if (unlikely(!skb2))
- 		return -ENOMEM;
- 
--	if (BPF_IS_REDIRECT_INGRESS(flags))
-+	if (BPF_IS_REDIRECT_INGRESS(flags)) {
-+		if (skb_at_tc_ingress(skb2))
-+			skb_postpush_rcsum(skb2, skb_mac_header(skb2),
-+					   skb2->mac_len);
- 		return dev_forward_skb(dev, skb2);
-+	}
- 
- 	skb2->dev = dev;
- 	skb_sender_cpu_clear(skb2);
-@@ -1459,8 +1464,12 @@ int skb_do_redirect(struct sk_buff *skb)
- 		return -EINVAL;
- 	}
- 
--	if (BPF_IS_REDIRECT_INGRESS(ri->flags))
-+	if (BPF_IS_REDIRECT_INGRESS(ri->flags)) {
-+		if (skb_at_tc_ingress(skb))
-+			skb_postpush_rcsum(skb, skb_mac_header(skb),
-+					   skb->mac_len);
- 		return dev_forward_skb(dev, skb);
-+	}
- 
- 	skb->dev = dev;
- 	skb_sender_cpu_clear(skb);
diff --git a/target/linux/brcm2708/patches-4.4/0222-bcm2835-sdhost-Precalc-divisors-and-overclocks.patch b/target/linux/brcm2708/patches-4.4/0222-bcm2835-sdhost-Precalc-divisors-and-overclocks.patch
index 2b88134..9863595 100644
--- a/target/linux/brcm2708/patches-4.4/0222-bcm2835-sdhost-Precalc-divisors-and-overclocks.patch
+++ b/target/linux/brcm2708/patches-4.4/0222-bcm2835-sdhost-Precalc-divisors-and-overclocks.patch
@@ -1,7 +1,7 @@
-From 5891d0fea3401ae4248fb98d6e70c9e6ffcf1aab Mon Sep 17 00:00:00 2001
+From 4a680ce7ef96ac561e02c1e02951a210092a2ef6 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 31 Mar 2016 15:44:53 +0100
-Subject: [PATCH 222/423] bcm2835-sdhost: Precalc divisors and overclocks
+Subject: [PATCH] bcm2835-sdhost: Precalc divisors and overclocks
 
 Recalculating the clock divisors when the core clock changes is wasteful
 and makes it harder to manage the overclock settings. Instead,
diff --git a/target/linux/brcm2708/patches-4.4/0223-Revert-bcm2835-sdhost-Precalc-divisors-and-overclock.patch b/target/linux/brcm2708/patches-4.4/0223-Revert-bcm2835-sdhost-Precalc-divisors-and-overclock.patch
index 87e4382..1087501 100644
--- a/target/linux/brcm2708/patches-4.4/0223-Revert-bcm2835-sdhost-Precalc-divisors-and-overclock.patch
+++ b/target/linux/brcm2708/patches-4.4/0223-Revert-bcm2835-sdhost-Precalc-divisors-and-overclock.patch
@@ -1,8 +1,7 @@
-From 4d85eac2b4821741269c9e49a0f3d0589291c83a Mon Sep 17 00:00:00 2001
+From 664ffae1f5e89a69f12f83717c2a7efccea008ca Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 4 Apr 2016 12:35:32 +0100
-Subject: [PATCH 223/423] Revert "bcm2835-sdhost: Precalc divisors and
- overclocks"
+Subject: [PATCH] Revert "bcm2835-sdhost: Precalc divisors and overclocks"
 
 This reverts commit 20260462773366a5734e5268dae0a4c179a21a2d.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0224-Revert-bcm2835-sdhost-Adjust-to-core-clock-changes.patch b/target/linux/brcm2708/patches-4.4/0224-Revert-bcm2835-sdhost-Adjust-to-core-clock-changes.patch
index bf0b1e8..55d5c89 100644
--- a/target/linux/brcm2708/patches-4.4/0224-Revert-bcm2835-sdhost-Adjust-to-core-clock-changes.patch
+++ b/target/linux/brcm2708/patches-4.4/0224-Revert-bcm2835-sdhost-Adjust-to-core-clock-changes.patch
@@ -1,7 +1,7 @@
-From 2f5c0928b44b0d34a975b4fb8165c26a134d7097 Mon Sep 17 00:00:00 2001
+From fe985856bc342027d498cfb5e261fef698ac336b Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 4 Apr 2016 12:35:51 +0100
-Subject: [PATCH 224/423] Revert "bcm2835-sdhost: Adjust to core clock changes"
+Subject: [PATCH] Revert "bcm2835-sdhost: Adjust to core clock changes"
 
 This reverts commit 4b89d07fd299a0f4e25321920cb74416ba2e638e.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0225-bcm2835-sdhost-Firmware-manages-the-clock-divisor.patch b/target/linux/brcm2708/patches-4.4/0225-bcm2835-sdhost-Firmware-manages-the-clock-divisor.patch
index 27f070b..8d503b8 100644
--- a/target/linux/brcm2708/patches-4.4/0225-bcm2835-sdhost-Firmware-manages-the-clock-divisor.patch
+++ b/target/linux/brcm2708/patches-4.4/0225-bcm2835-sdhost-Firmware-manages-the-clock-divisor.patch
@@ -1,7 +1,7 @@
-From 0b7ab0214a63a19c8c1a383b3ef89713c91e0251 Mon Sep 17 00:00:00 2001
+From 38575eb0b705f13b039b433687cf2a70cd8d425b Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 4 Apr 2016 16:03:18 +0100
-Subject: [PATCH 225/423] bcm2835-sdhost: Firmware manages the clock divisor
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0226-Revert-Revert-cpufreq-Temporarily-ignore-io_is_busy-.patch b/target/linux/brcm2708/patches-4.4/0226-Revert-Revert-cpufreq-Temporarily-ignore-io_is_busy-.patch
index 91d52ce..c3bd751 100644
--- a/target/linux/brcm2708/patches-4.4/0226-Revert-Revert-cpufreq-Temporarily-ignore-io_is_busy-.patch
+++ b/target/linux/brcm2708/patches-4.4/0226-Revert-Revert-cpufreq-Temporarily-ignore-io_is_busy-.patch
@@ -1,8 +1,7 @@
-From 136379745690939706d830547ff754e770e832eb Mon Sep 17 00:00:00 2001
+From 086b24cf253a55acfaa185310fa19b7493ddbe3f Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Mon, 4 Apr 2016 19:52:27 +0100
-Subject: [PATCH 226/423] Revert "Revert "cpufreq: Temporarily ignore
- io_is_busy=1""
+Subject: [PATCH] Revert "Revert "cpufreq: Temporarily ignore io_is_busy=1""
 
 This reverts commit c353af0f83220068c10f6593b1767576b9b6cc18.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0227-config-Enabled-IPV6_SUBTREES.patch b/target/linux/brcm2708/patches-4.4/0227-config-Enabled-IPV6_SUBTREES.patch
index 06f24e4..8dd8dfe 100644
--- a/target/linux/brcm2708/patches-4.4/0227-config-Enabled-IPV6_SUBTREES.patch
+++ b/target/linux/brcm2708/patches-4.4/0227-config-Enabled-IPV6_SUBTREES.patch
@@ -1,7 +1,7 @@
-From ad66c705ec0cd980297425e2d0541c68eedf1557 Mon Sep 17 00:00:00 2001
+From 2791d33cb965581363a616e116574b16cf279a5a Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Thu, 31 Mar 2016 16:49:52 +0100
-Subject: [PATCH 227/423] config: Enabled IPV6_SUBTREES
+Subject: [PATCH] config: Enabled IPV6_SUBTREES
 
 ---
  arch/arm/configs/bcm2709_defconfig | 1 +
diff --git a/target/linux/brcm2708/patches-4.4/0228-add-smsc95xx-packetsize-module_param.patch b/target/linux/brcm2708/patches-4.4/0228-add-smsc95xx-packetsize-module_param.patch
index 622eaa9..7258c94 100644
--- a/target/linux/brcm2708/patches-4.4/0228-add-smsc95xx-packetsize-module_param.patch
+++ b/target/linux/brcm2708/patches-4.4/0228-add-smsc95xx-packetsize-module_param.patch
@@ -1,7 +1,7 @@
-From fefd3cd13f39ac77c50b63abcb41dd01163e127a Mon Sep 17 00:00:00 2001
+From 8e367cd08419234412d2d9b430d2ebe7d528b931 Mon Sep 17 00:00:00 2001
 From: Sam Nazarko <email at samnazarko.co.uk>
 Date: Fri, 1 Apr 2016 17:27:21 +0100
-Subject: [PATCH 228/423] add smsc95xx packetsize module_param
+Subject: [PATCH] add smsc95xx packetsize module_param
 
 Signed-off-by: Sam Nazarko <email at samnazarko.co.uk>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0229-reboot-Use-power-off-rather-than-busy-spinning-when-.patch b/target/linux/brcm2708/patches-4.4/0229-reboot-Use-power-off-rather-than-busy-spinning-when-.patch
index 87296ac..278aa61 100644
--- a/target/linux/brcm2708/patches-4.4/0229-reboot-Use-power-off-rather-than-busy-spinning-when-.patch
+++ b/target/linux/brcm2708/patches-4.4/0229-reboot-Use-power-off-rather-than-busy-spinning-when-.patch
@@ -1,8 +1,8 @@
-From c927d6c160408b033223d7cf7795e2ec0faa78fa Mon Sep 17 00:00:00 2001
+From 9891143d60d8c653db23b6fafaa402fc1de12588 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 5 Apr 2016 19:40:12 +0100
-Subject: [PATCH 229/423] reboot: Use power off rather than busy spinning when
- halt is requested
+Subject: [PATCH] reboot: Use power off rather than busy spinning when halt is
+ requested
 
 ---
  arch/arm/kernel/reboot.c | 6 +-----
diff --git a/target/linux/brcm2708/patches-4.4/0230-Revert-bcm2835-dma-Fix-dreq-not-set-for-slave-transf.patch b/target/linux/brcm2708/patches-4.4/0230-Revert-bcm2835-dma-Fix-dreq-not-set-for-slave-transf.patch
index 0058a5b..c4f36e1 100644
--- a/target/linux/brcm2708/patches-4.4/0230-Revert-bcm2835-dma-Fix-dreq-not-set-for-slave-transf.patch
+++ b/target/linux/brcm2708/patches-4.4/0230-Revert-bcm2835-dma-Fix-dreq-not-set-for-slave-transf.patch
@@ -1,8 +1,7 @@
-From dc09000595f912aec73956e6db7be266c434fd3e Mon Sep 17 00:00:00 2001
+From 8fa158cb700b0fdbb76ede07ec2103b5930e0913 Mon Sep 17 00:00:00 2001
 From: HiassofT <github at hias.horus.com>
 Date: Wed, 6 Apr 2016 21:45:01 +0200
-Subject: [PATCH 230/423] Revert "bcm2835-dma: Fix dreq not set for slave
- transfers"
+Subject: [PATCH] Revert "bcm2835-dma: Fix dreq not set for slave transfers"
 
 This reverts commit 8ad957e866a1fe1450f663f2b00a57d7de44904c.
 
diff --git a/target/linux/brcm2708/patches-4.4/0231-RPi-config-Add-CONFIG_PWM_PCA9685-for-NXP-PCA9685-dr.patch b/target/linux/brcm2708/patches-4.4/0231-RPi-config-Add-CONFIG_PWM_PCA9685-for-NXP-PCA9685-dr.patch
index 2d2e07c..f1c6433 100644
--- a/target/linux/brcm2708/patches-4.4/0231-RPi-config-Add-CONFIG_PWM_PCA9685-for-NXP-PCA9685-dr.patch
+++ b/target/linux/brcm2708/patches-4.4/0231-RPi-config-Add-CONFIG_PWM_PCA9685-for-NXP-PCA9685-dr.patch
@@ -1,8 +1,8 @@
-From f736b53bdc910c364e8f2cd0f0c1bf1edf41f048 Mon Sep 17 00:00:00 2001
+From 2026557f3f9df2d0563f71b4bd704956c4cfd4ab Mon Sep 17 00:00:00 2001
 From: Dave Stevenson <6by9 at users.noreply.github.com>
 Date: Fri, 1 Apr 2016 15:28:46 +0100
-Subject: [PATCH 231/423] RPi config: Add CONFIG_PWM_PCA9685 for NXP PCA9685
- driver over I2C
+Subject: [PATCH] RPi config: Add CONFIG_PWM_PCA9685 for NXP PCA9685 driver
+ over I2C
 
 Includes DT overlay to configure it.
 
diff --git a/target/linux/brcm2708/patches-4.4/0232-BCM270X_DT-Don-t-generate-linux-phandle-props.patch b/target/linux/brcm2708/patches-4.4/0232-BCM270X_DT-Don-t-generate-linux-phandle-props.patch
index b77fef1..a6630fd 100644
--- a/target/linux/brcm2708/patches-4.4/0232-BCM270X_DT-Don-t-generate-linux-phandle-props.patch
+++ b/target/linux/brcm2708/patches-4.4/0232-BCM270X_DT-Don-t-generate-linux-phandle-props.patch
@@ -1,7 +1,7 @@
-From 3d7cb0d28c79c6418a3666803960881e21e5c974 Mon Sep 17 00:00:00 2001
+From 28cb7cf5480a77df08bba1e30e7070dff46463d7 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 8 Apr 2016 17:43:27 +0100
-Subject: [PATCH 232/423] BCM270X_DT: Don't generate "linux,phandle" props
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0233-V4L2-driver-updates-1393.patch b/target/linux/brcm2708/patches-4.4/0233-V4L2-driver-updates-1393.patch
index 89198b2..92a834a 100644
--- a/target/linux/brcm2708/patches-4.4/0233-V4L2-driver-updates-1393.patch
+++ b/target/linux/brcm2708/patches-4.4/0233-V4L2-driver-updates-1393.patch
@@ -1,7 +1,7 @@
-From 901e004652b14261a036e259adac0a380bbb724b Mon Sep 17 00:00:00 2001
+From 35730c81cb94119c117901bbdcc148baf35aa37c Mon Sep 17 00:00:00 2001
 From: 6by9 <6by9 at users.noreply.github.com>
 Date: Fri, 8 Apr 2016 18:15:43 +0100
-Subject: [PATCH 233/423] V4L2 driver updates (#1393)
+Subject: [PATCH] V4L2 driver updates (#1393)
 
 * BCM2835-V4L2: Correct ISO control and add V4L2_CID_ISO_SENSITIVITY_AUTO
 
diff --git a/target/linux/brcm2708/patches-4.4/0234-bcm2835-sdhost-Reset-the-clock-in-task-context.patch b/target/linux/brcm2708/patches-4.4/0234-bcm2835-sdhost-Reset-the-clock-in-task-context.patch
index b15a89d..a01d406 100644
--- a/target/linux/brcm2708/patches-4.4/0234-bcm2835-sdhost-Reset-the-clock-in-task-context.patch
+++ b/target/linux/brcm2708/patches-4.4/0234-bcm2835-sdhost-Reset-the-clock-in-task-context.patch
@@ -1,7 +1,7 @@
-From f900cc706eca16b68d335810173b253229109ec5 Mon Sep 17 00:00:00 2001
+From b61249080d5492fdb4bcf22e1672dc773a9bd95a Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 11 Apr 2016 12:50:58 +0100
-Subject: [PATCH 234/423] bcm2835-sdhost: Reset the clock in task context
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0235-config-Enable-CONFIG_IPV6_ROUTER_PREF-for-networks-w.patch b/target/linux/brcm2708/patches-4.4/0235-config-Enable-CONFIG_IPV6_ROUTER_PREF-for-networks-w.patch
index 0db27e0..0b69ca3 100644
--- a/target/linux/brcm2708/patches-4.4/0235-config-Enable-CONFIG_IPV6_ROUTER_PREF-for-networks-w.patch
+++ b/target/linux/brcm2708/patches-4.4/0235-config-Enable-CONFIG_IPV6_ROUTER_PREF-for-networks-w.patch
@@ -1,8 +1,8 @@
-From 9e67abb08bb66fcffa1540bc18b98beeda7d6285 Mon Sep 17 00:00:00 2001
+From 715ff3d10588ca8b2a72acbc918ba4849a1f988c Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Thu, 7 Apr 2016 12:44:24 +0100
-Subject: [PATCH 235/423] config: Enable CONFIG_IPV6_ROUTER_PREF for networks
- with multiple routers
+Subject: [PATCH] config: Enable CONFIG_IPV6_ROUTER_PREF for networks with
+ multiple routers
 
 ---
  arch/arm/configs/bcm2709_defconfig | 1 +
diff --git a/target/linux/brcm2708/patches-4.4/0236-Enable-hid-betopff-module.patch b/target/linux/brcm2708/patches-4.4/0236-Enable-hid-betopff-module.patch
index c66e428..9b3f2f6 100644
--- a/target/linux/brcm2708/patches-4.4/0236-Enable-hid-betopff-module.patch
+++ b/target/linux/brcm2708/patches-4.4/0236-Enable-hid-betopff-module.patch
@@ -1,7 +1,7 @@
-From b7d3c1f41a346bccd4a8ec3f553a6f109677c37b Mon Sep 17 00:00:00 2001
+From 0561be97d8de22572d91d78c807b1bb4a38255f3 Mon Sep 17 00:00:00 2001
 From: jochenberger <fooberger at gmail.com>
 Date: Thu, 7 Apr 2016 21:38:46 +0200
-Subject: [PATCH 236/423] Enable hid-betopff module
+Subject: [PATCH] Enable hid-betopff module
 
 Add force feedback support for Betop based devices
 https://github.com/raspberrypi/linux/blob/rpi-4.1.y/drivers/hid/hid-betopff.c
diff --git a/target/linux/brcm2708/patches-4.4/0237-config-Make-IPV6-a-module-and-regenerate-with-defcon.patch b/target/linux/brcm2708/patches-4.4/0237-config-Make-IPV6-a-module-and-regenerate-with-defcon.patch
index fb606a4..2bd1e96 100644
--- a/target/linux/brcm2708/patches-4.4/0237-config-Make-IPV6-a-module-and-regenerate-with-defcon.patch
+++ b/target/linux/brcm2708/patches-4.4/0237-config-Make-IPV6-a-module-and-regenerate-with-defcon.patch
@@ -1,8 +1,7 @@
-From 66e5546f065bd4c854e6ccfe192942a76137e80f Mon Sep 17 00:00:00 2001
+From 9efe69a81ab2f031cbfeccb2f606a241f155e6b5 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 12 Apr 2016 12:45:16 +0100
-Subject: [PATCH 237/423] config: Make IPV6 a module and regenerate with
- defconfig
+Subject: [PATCH] config: Make IPV6 a module and regenerate with defconfig
 
 ---
  arch/arm/configs/bcm2709_defconfig | 4 ++--
diff --git a/target/linux/brcm2708/patches-4.4/0238-BCM270X_DT-Add-dpi24-overlay.patch b/target/linux/brcm2708/patches-4.4/0238-BCM270X_DT-Add-dpi24-overlay.patch
index 8d24a94..66d7985 100644
--- a/target/linux/brcm2708/patches-4.4/0238-BCM270X_DT-Add-dpi24-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0238-BCM270X_DT-Add-dpi24-overlay.patch
@@ -1,7 +1,7 @@
-From 6db3147b0daf8b893eba23c305ec5e39354587d2 Mon Sep 17 00:00:00 2001
+From f88c6236440972207406742d87692859b4f15612 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 5 Apr 2016 13:01:54 +0100
-Subject: [PATCH 238/423] BCM270X_DT: Add dpi24 overlay
+Subject: [PATCH] BCM270X_DT: Add dpi24 overlay
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0239-Modify-IQAudIO-DAC-ASoC-driver-to-set-card-dai-confi.patch b/target/linux/brcm2708/patches-4.4/0239-Modify-IQAudIO-DAC-ASoC-driver-to-set-card-dai-confi.patch
index 33a15e9..9d6927a 100644
--- a/target/linux/brcm2708/patches-4.4/0239-Modify-IQAudIO-DAC-ASoC-driver-to-set-card-dai-confi.patch
+++ b/target/linux/brcm2708/patches-4.4/0239-Modify-IQAudIO-DAC-ASoC-driver-to-set-card-dai-confi.patch
@@ -1,8 +1,8 @@
-From e26827db219f8221e20aba5e7f564d61b4fa2be3 Mon Sep 17 00:00:00 2001
+From 6e50eac8d374fa7d6ed3e02564851bc250443402 Mon Sep 17 00:00:00 2001
 From: DigitalDreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Thu, 14 Apr 2016 00:57:33 +0100
-Subject: [PATCH 239/423] Modify IQAudIO DAC+ ASoC driver to set card/dai
- config from dt
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0240-Add-support-for-the-Digital-Dreamtime-Akkordion-musi.patch b/target/linux/brcm2708/patches-4.4/0240-Add-support-for-the-Digital-Dreamtime-Akkordion-musi.patch
index 5560412..a767d3e 100644
--- a/target/linux/brcm2708/patches-4.4/0240-Add-support-for-the-Digital-Dreamtime-Akkordion-musi.patch
+++ b/target/linux/brcm2708/patches-4.4/0240-Add-support-for-the-Digital-Dreamtime-Akkordion-musi.patch
@@ -1,8 +1,7 @@
-From 69211c7619dd7788d92c8e9c8e47de6a2ac66d76 Mon Sep 17 00:00:00 2001
+From 0a36540c6a3b383a554412bf65cc75d65f7b77f8 Mon Sep 17 00:00:00 2001
 From: DigitalDreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Thu, 14 Apr 2016 01:00:58 +0100
-Subject: [PATCH 240/423] Add support for the Digital Dreamtime Akkordion music
- player.
+Subject: [PATCH] Add support for the Digital Dreamtime Akkordion music player.
 
 Support the Digital Dreamtime Akkordion using the OEM IQAudIO DAC+ or
 DACZero modules. Set ALSA card name, ("Akkordion"), from dt config.
diff --git a/target/linux/brcm2708/patches-4.4/0241-Add-Support-for-BoomBerry-Audio-boards.patch b/target/linux/brcm2708/patches-4.4/0241-Add-Support-for-BoomBerry-Audio-boards.patch
index c1c88f1..e0f62c9 100644
--- a/target/linux/brcm2708/patches-4.4/0241-Add-Support-for-BoomBerry-Audio-boards.patch
+++ b/target/linux/brcm2708/patches-4.4/0241-Add-Support-for-BoomBerry-Audio-boards.patch
@@ -1,7 +1,7 @@
-From acfc71e5a52a8c2389341052d9d4d3f2d807f962 Mon Sep 17 00:00:00 2001
+From 3120b4247e34e255f4f43d291df4b779b3e9d4c8 Mon Sep 17 00:00:00 2001
 From: Aaron Shaw <shawaj at gmail.com>
 Date: Thu, 7 Apr 2016 21:26:21 +0100
-Subject: [PATCH 241/423] Add Support for BoomBerry Audio boards
+Subject: [PATCH] Add Support for BoomBerry Audio boards
 
 ---
  arch/arm/boot/dts/overlays/Makefile                |   2 +
diff --git a/target/linux/brcm2708/patches-4.4/0242-Add-support-for-mcp7940x-family-of-RTC.patch b/target/linux/brcm2708/patches-4.4/0242-Add-support-for-mcp7940x-family-of-RTC.patch
index d0a50ef..9974349 100644
--- a/target/linux/brcm2708/patches-4.4/0242-Add-support-for-mcp7940x-family-of-RTC.patch
+++ b/target/linux/brcm2708/patches-4.4/0242-Add-support-for-mcp7940x-family-of-RTC.patch
@@ -1,7 +1,7 @@
-From 0046657bca51cfb61edcb38cef3039d304863a25 Mon Sep 17 00:00:00 2001
+From 215eb99b0a93a3365c7e3819b2701b416f88a25a Mon Sep 17 00:00:00 2001
 From: Aaron Shaw <shawaj at gmail.com>
 Date: Fri, 8 Apr 2016 00:06:00 +0100
-Subject: [PATCH 242/423] Add support for mcp7940x family of RTC
+Subject: [PATCH] Add support for mcp7940x family of RTC
 
 ---
  arch/arm/boot/dts/overlays/README              | 2 ++
diff --git a/target/linux/brcm2708/patches-4.4/0243-bcm2709_defconfig-Fix-typo-on-BoomBerry-configuratio.patch b/target/linux/brcm2708/patches-4.4/0243-bcm2709_defconfig-Fix-typo-on-BoomBerry-configuratio.patch
index e66f0a4..bfdc329 100644
--- a/target/linux/brcm2708/patches-4.4/0243-bcm2709_defconfig-Fix-typo-on-BoomBerry-configuratio.patch
+++ b/target/linux/brcm2708/patches-4.4/0243-bcm2709_defconfig-Fix-typo-on-BoomBerry-configuratio.patch
@@ -1,8 +1,8 @@
-From eecfe86df596a7b589040300fead9621aaaa24de Mon Sep 17 00:00:00 2001
+From ab1d490040fb4f7ea284feebb8a1e78bd6d54176 Mon Sep 17 00:00:00 2001
 From: Jeremy McDermond <nh6z at nh6z.net>
 Date: Thu, 14 Apr 2016 09:39:20 -0700
-Subject: [PATCH 243/423] bcm2709_defconfig:  Fix typo on BoomBerry
- configuration directive
+Subject: [PATCH] bcm2709_defconfig:  Fix typo on BoomBerry configuration
+ directive
 
 The BoomBerry configuration directive in bcm2709_defconfig has a typo.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0244-boomberry-dac-Adjust-for-ALSA-API-change.patch b/target/linux/brcm2708/patches-4.4/0244-boomberry-dac-Adjust-for-ALSA-API-change.patch
index a5ce314..f9cfb57 100644
--- a/target/linux/brcm2708/patches-4.4/0244-boomberry-dac-Adjust-for-ALSA-API-change.patch
+++ b/target/linux/brcm2708/patches-4.4/0244-boomberry-dac-Adjust-for-ALSA-API-change.patch
@@ -1,7 +1,7 @@
-From b2722225844f050026ed43446d67d26032af05ed Mon Sep 17 00:00:00 2001
+From 9d3c4c7019c68e5eb1c1635c8878f5c6bff3e120 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 15 Apr 2016 10:48:39 +0100
-Subject: [PATCH 244/423] boomberry-dac: Adjust for ALSA API change
+Subject: [PATCH] boomberry-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 *.
diff --git a/target/linux/brcm2708/patches-4.4/0245-vmcs-Remove-unused-sm_cache_map_vector-definition-14.patch b/target/linux/brcm2708/patches-4.4/0245-vmcs-Remove-unused-sm_cache_map_vector-definition-14.patch
index b89b4c4..e4ad3c4 100644
--- a/target/linux/brcm2708/patches-4.4/0245-vmcs-Remove-unused-sm_cache_map_vector-definition-14.patch
+++ b/target/linux/brcm2708/patches-4.4/0245-vmcs-Remove-unused-sm_cache_map_vector-definition-14.patch
@@ -1,8 +1,7 @@
-From 9a9153d6a6e2c413ff568a9e26dd4711060c0732 Mon Sep 17 00:00:00 2001
+From 39aaeeb6912c97ede930b463c99b7848d1340a45 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem at gmail.com>
 Date: Sun, 17 Apr 2016 04:44:47 -0700
-Subject: [PATCH 245/423] vmcs: Remove unused sm_cache_map_vector definition
- (#1411)
+Subject: [PATCH] vmcs: Remove unused sm_cache_map_vector definition (#1411)
 
 The code using it also ifdef'ed with 0, anyyd gcc 6
 complains
diff --git a/target/linux/brcm2708/patches-4.4/0246-scripts-mkknlimg-Append-a-trailer-for-all-input.patch b/target/linux/brcm2708/patches-4.4/0246-scripts-mkknlimg-Append-a-trailer-for-all-input.patch
index eab548a..99bfb66 100644
--- a/target/linux/brcm2708/patches-4.4/0246-scripts-mkknlimg-Append-a-trailer-for-all-input.patch
+++ b/target/linux/brcm2708/patches-4.4/0246-scripts-mkknlimg-Append-a-trailer-for-all-input.patch
@@ -1,7 +1,7 @@
-From de215293c91853f39344b66ea18ca49b975f4783 Mon Sep 17 00:00:00 2001
+From 27c3944874a034975d23722b10d6d7e6b7dd930d Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 18 Apr 2016 11:56:53 +0100
-Subject: [PATCH 246/423] scripts/mkknlimg: Append a trailer for all input
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0247-bcm2835_thermal-Don-t-report-unsupported-trip-type.patch b/target/linux/brcm2708/patches-4.4/0247-bcm2835_thermal-Don-t-report-unsupported-trip-type.patch
index 14401e2..95ba5d6 100644
--- a/target/linux/brcm2708/patches-4.4/0247-bcm2835_thermal-Don-t-report-unsupported-trip-type.patch
+++ b/target/linux/brcm2708/patches-4.4/0247-bcm2835_thermal-Don-t-report-unsupported-trip-type.patch
@@ -1,7 +1,7 @@
-From 9f8cfdfbb0850aed63d1489469b36f53affa99aa Mon Sep 17 00:00:00 2001
+From bd462524b465fc6aeed292cca8c2da19be3d9887 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 19 Apr 2016 12:57:52 +0100
-Subject: [PATCH 247/423] bcm2835_thermal: Don't report unsupported trip type
+Subject: [PATCH] bcm2835_thermal: Don't report unsupported trip type
 
 ---
  drivers/thermal/bcm2835-thermal.c | 34 +---------------------------------
diff --git a/target/linux/brcm2708/patches-4.4/0248-scripts-dtc-Only-emit-local-fixups-for-overlays.patch b/target/linux/brcm2708/patches-4.4/0248-scripts-dtc-Only-emit-local-fixups-for-overlays.patch
index 511763f..a73bb23 100644
--- a/target/linux/brcm2708/patches-4.4/0248-scripts-dtc-Only-emit-local-fixups-for-overlays.patch
+++ b/target/linux/brcm2708/patches-4.4/0248-scripts-dtc-Only-emit-local-fixups-for-overlays.patch
@@ -1,7 +1,7 @@
-From fffbc0bb693d462619402b4ca134c3d591e799bf Mon Sep 17 00:00:00 2001
+From e9e95f1830775a13ccd1a3746d7fa526ed2c722c Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 19 Apr 2016 13:55:29 +0100
-Subject: [PATCH 248/423] scripts/dtc: Only emit local fixups for overlays
+Subject: [PATCH] scripts/dtc: Only emit local fixups for overlays
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0249-bcm2835-do-not-require-substream-for-accessing-chmap.patch b/target/linux/brcm2708/patches-4.4/0249-bcm2835-do-not-require-substream-for-accessing-chmap.patch
index 25b6617..d50c802 100644
--- a/target/linux/brcm2708/patches-4.4/0249-bcm2835-do-not-require-substream-for-accessing-chmap.patch
+++ b/target/linux/brcm2708/patches-4.4/0249-bcm2835-do-not-require-substream-for-accessing-chmap.patch
@@ -1,8 +1,7 @@
-From afad9ef007320f0cda5b97004d07a52e8387e912 Mon Sep 17 00:00:00 2001
+From 955fba9c62f43238b5c3687a78ed812ac95edd44 Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Tue, 19 Apr 2016 16:08:35 +0200
-Subject: [PATCH 249/423] bcm2835: do not require substream for accessing chmap
- ctl
+Subject: [PATCH] bcm2835: do not require substream for accessing chmap ctl
 
 Fixes alsasctl store/restore operation.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0250-bcm2835-add-fallback-channel-layouts-if-channel-map-.patch b/target/linux/brcm2708/patches-4.4/0250-bcm2835-add-fallback-channel-layouts-if-channel-map-.patch
index 9285411..b498d00 100644
--- a/target/linux/brcm2708/patches-4.4/0250-bcm2835-add-fallback-channel-layouts-if-channel-map-.patch
+++ b/target/linux/brcm2708/patches-4.4/0250-bcm2835-add-fallback-channel-layouts-if-channel-map-.patch
@@ -1,8 +1,8 @@
-From 7c2791eb1e01c8714d5553bd2bd5e611394a6517 Mon Sep 17 00:00:00 2001
+From f3e1f2d9d34ab1cfafc4df7d67b7c65619b69ce0 Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Tue, 19 Apr 2016 16:29:41 +0200
-Subject: [PATCH 250/423] bcm2835: add fallback channel layouts if channel map
- API is not used
+Subject: [PATCH] bcm2835: add fallback channel layouts if channel map API is
+ not used
 
 Should be more useful than just forcing stereo.
 
diff --git a/target/linux/brcm2708/patches-4.4/0251-bcm2835-log-which-channel-map-is-set.patch b/target/linux/brcm2708/patches-4.4/0251-bcm2835-log-which-channel-map-is-set.patch
index 4b53f36..9f56fb0 100644
--- a/target/linux/brcm2708/patches-4.4/0251-bcm2835-log-which-channel-map-is-set.patch
+++ b/target/linux/brcm2708/patches-4.4/0251-bcm2835-log-which-channel-map-is-set.patch
@@ -1,7 +1,7 @@
-From 317cae9751a3e08bbddaeb6099e05c7700884a30 Mon Sep 17 00:00:00 2001
+From 221eae6137f4ed70aa0c55decd7a0659391cd30b Mon Sep 17 00:00:00 2001
 From: wm4 <wm4 at nowhere>
 Date: Tue, 19 Apr 2016 16:38:03 +0200
-Subject: [PATCH 251/423] bcm2835: log which channel map is set
+Subject: [PATCH] bcm2835: log which channel map is set
 
 ---
  sound/arm/bcm2835-vchiq.c | 5 +++++
diff --git a/target/linux/brcm2708/patches-4.4/0252-clk-bcm2835-add-a-round-up-ability-to-the-clock-divi.patch b/target/linux/brcm2708/patches-4.4/0252-clk-bcm2835-add-a-round-up-ability-to-the-clock-divi.patch
index 47e3fe7..ae18b44 100644
--- a/target/linux/brcm2708/patches-4.4/0252-clk-bcm2835-add-a-round-up-ability-to-the-clock-divi.patch
+++ b/target/linux/brcm2708/patches-4.4/0252-clk-bcm2835-add-a-round-up-ability-to-the-clock-divi.patch
@@ -1,8 +1,7 @@
-From a216a6ac7b7efad9d9d62ffa6be5fd1809953b6d Mon Sep 17 00:00:00 2001
+From 01993e1dda68d85ff6cf11cab6051bcefa46d2c1 Mon Sep 17 00:00:00 2001
 From: Remi Pommarel <repk at triplefau.lt>
 Date: Sun, 6 Dec 2015 17:22:46 +0100
-Subject: [PATCH 252/423] clk: bcm2835: add a round up ability to the clock
- divisor
+Subject: [PATCH] clk: bcm2835: add a round up ability to the clock divisor
 
 Make bcm2835_clock_choose_div to optionally round up the chosen MASH divisor
 so that the resulting average rate will not be higher than the requested one.
diff --git a/target/linux/brcm2708/patches-4.4/0253-clk-bcm2835-Support-for-clock-parent-selection.patch b/target/linux/brcm2708/patches-4.4/0253-clk-bcm2835-Support-for-clock-parent-selection.patch
index a6078da..db53ad3 100644
--- a/target/linux/brcm2708/patches-4.4/0253-clk-bcm2835-Support-for-clock-parent-selection.patch
+++ b/target/linux/brcm2708/patches-4.4/0253-clk-bcm2835-Support-for-clock-parent-selection.patch
@@ -1,7 +1,7 @@
-From 29085f56d20e9c563b183a003f39f7cfc7884b17 Mon Sep 17 00:00:00 2001
+From c9de2447d4b9cf641276d74902405a0b5e1c2a8d Mon Sep 17 00:00:00 2001
 From: Remi Pommarel <repk at triplefau.lt>
 Date: Sun, 6 Dec 2015 17:22:47 +0100
-Subject: [PATCH 253/423] clk: bcm2835: Support for clock parent selection
+Subject: [PATCH] clk: bcm2835: Support for clock parent selection
 
 Some bcm2835 clocks used by hardware (like "PWM" or "H264") can have multiple
 parent clocks. These clocks divide the rate of a parent which can be selected by
diff --git a/target/linux/brcm2708/patches-4.4/0254-clk-bcm2835-Add-PWM-clock-support.patch b/target/linux/brcm2708/patches-4.4/0254-clk-bcm2835-Add-PWM-clock-support.patch
index 6a6b0d8..5bf7066 100644
--- a/target/linux/brcm2708/patches-4.4/0254-clk-bcm2835-Add-PWM-clock-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0254-clk-bcm2835-Add-PWM-clock-support.patch
@@ -1,7 +1,7 @@
-From fc112f40c9d15990686e0481db5bb5ed23567299 Mon Sep 17 00:00:00 2001
+From cbf30c2377959725bfcccc8cbb5b98fe6af4aefb Mon Sep 17 00:00:00 2001
 From: Remi Pommarel <repk at triplefau.lt>
 Date: Sun, 6 Dec 2015 17:22:48 +0100
-Subject: [PATCH 254/423] clk: bcm2835: Add PWM clock support
+Subject: [PATCH] clk: bcm2835: Add PWM clock support
 
 Register the pwm clock for bcm2835.
 
diff --git a/target/linux/brcm2708/patches-4.4/0255-clk-bcm2835-added-missing-clock-register-definitions.patch b/target/linux/brcm2708/patches-4.4/0255-clk-bcm2835-added-missing-clock-register-definitions.patch
index 8e570de..db44df7 100644
--- a/target/linux/brcm2708/patches-4.4/0255-clk-bcm2835-added-missing-clock-register-definitions.patch
+++ b/target/linux/brcm2708/patches-4.4/0255-clk-bcm2835-added-missing-clock-register-definitions.patch
@@ -1,8 +1,7 @@
-From b1871ea5430a67f6476c666b70985924f27a88a0 Mon Sep 17 00:00:00 2001
+From f9855ea88630c3fdf6508db8775f34103f363f50 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Tue, 22 Dec 2015 20:13:08 +0000
-Subject: [PATCH 255/423] clk: bcm2835: added missing clock register
- definitions
+Subject: [PATCH] clk: bcm2835: added missing clock register definitions
 
 Added missing CTRL and DIV clock register definitions for:
 PCM, SLIM, TCNT, TEC, TD0, TD1
diff --git a/target/linux/brcm2708/patches-4.4/0256-clk-bcm2835-correctly-enable-fractional-clock-suppor.patch b/target/linux/brcm2708/patches-4.4/0256-clk-bcm2835-correctly-enable-fractional-clock-suppor.patch
index 3ecd5e3..1313aea 100644
--- a/target/linux/brcm2708/patches-4.4/0256-clk-bcm2835-correctly-enable-fractional-clock-suppor.patch
+++ b/target/linux/brcm2708/patches-4.4/0256-clk-bcm2835-correctly-enable-fractional-clock-suppor.patch
@@ -1,8 +1,7 @@
-From 7182f4321e85d4911762f7dd2b38e6e1a7919073 Mon Sep 17 00:00:00 2001
+From 111293a9f0aa27bfdbb0ca864d9524691bb5934f Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Mon, 29 Feb 2016 11:39:21 +0000
-Subject: [PATCH 256/423] clk: bcm2835: correctly enable fractional clock
- support
+Subject: [PATCH] clk: bcm2835: correctly enable fractional clock support
 
 The current driver calculates the clock divider with
 fractional support enabled.
diff --git a/target/linux/brcm2708/patches-4.4/0257-clk-bcm2835-clean-up-coding-style-issues.patch b/target/linux/brcm2708/patches-4.4/0257-clk-bcm2835-clean-up-coding-style-issues.patch
index 30ef85a..1c05e87 100644
--- a/target/linux/brcm2708/patches-4.4/0257-clk-bcm2835-clean-up-coding-style-issues.patch
+++ b/target/linux/brcm2708/patches-4.4/0257-clk-bcm2835-clean-up-coding-style-issues.patch
@@ -1,7 +1,7 @@
-From 9da8191efd09a55914c0078ee23317cd79c48b15 Mon Sep 17 00:00:00 2001
+From 30ffff91447cd2d0dc6afd6ada53b13bc04f2f05 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Mon, 29 Feb 2016 11:39:22 +0000
-Subject: [PATCH 257/423] clk: bcm2835: clean up coding style issues
+Subject: [PATCH] clk: bcm2835: clean up coding style issues
 
 Fix all the checkpatch complaints for clk-bcm2835.c
 
diff --git a/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch b/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch
index 764ed2b..f1f118a 100644
--- a/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch
+++ b/target/linux/brcm2708/patches-4.4/0258-clk-bcm2835-expose-raw-clock-registers-via-debugfs.patch
@@ -1,7 +1,7 @@
-From f057d681e2af27bd013072cf8b46df927d4c03d1 Mon Sep 17 00:00:00 2001
+From 57390bceca1ef7df484290d3864b76a217c6b553 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Mon, 29 Feb 2016 14:20:15 +0000
-Subject: [PATCH 258/423] clk: bcm2835: expose raw clock-registers via debugfs
+Subject: [PATCH] clk: bcm2835: expose raw clock-registers via debugfs
 
 For debugging purposes under some circumstance
 it helps to be able to see the actual clock registers.
diff --git a/target/linux/brcm2708/patches-4.4/0259-clk-bcm2835-remove-use-of-BCM2835_CLOCK_COUNT-in-dri.patch b/target/linux/brcm2708/patches-4.4/0259-clk-bcm2835-remove-use-of-BCM2835_CLOCK_COUNT-in-dri.patch
index fca8c89..acce39c 100644
--- a/target/linux/brcm2708/patches-4.4/0259-clk-bcm2835-remove-use-of-BCM2835_CLOCK_COUNT-in-dri.patch
+++ b/target/linux/brcm2708/patches-4.4/0259-clk-bcm2835-remove-use-of-BCM2835_CLOCK_COUNT-in-dri.patch
@@ -1,8 +1,7 @@
-From 6cf07099604e362169932d82444a0f234cc8cbe0 Mon Sep 17 00:00:00 2001
+From 061e3130a957f04af48ff703209096e8a0b5655e Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Mon, 29 Feb 2016 12:51:41 +0000
-Subject: [PATCH 259/423] clk: bcm2835: remove use of BCM2835_CLOCK_COUNT in
- driver
+Subject: [PATCH] clk: bcm2835: remove use of BCM2835_CLOCK_COUNT in driver
 
 As the use of BCM2835_CLOCK_COUNT in
 include/dt-bindings/clock/bcm2835.h is frowned upon as
diff --git a/target/linux/brcm2708/patches-4.4/0260-clk-bcm2835-reorganize-bcm2835_clock_array-assignmen.patch b/target/linux/brcm2708/patches-4.4/0260-clk-bcm2835-reorganize-bcm2835_clock_array-assignmen.patch
index 7705ab0..21513f0 100644
--- a/target/linux/brcm2708/patches-4.4/0260-clk-bcm2835-reorganize-bcm2835_clock_array-assignmen.patch
+++ b/target/linux/brcm2708/patches-4.4/0260-clk-bcm2835-reorganize-bcm2835_clock_array-assignmen.patch
@@ -1,8 +1,7 @@
-From fd09548954d1301cce55d136aaeecd617d36b491 Mon Sep 17 00:00:00 2001
+From c0e6c2ae19400047ad0f744f95b6997b579e0ffc Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Mon, 29 Feb 2016 12:51:42 +0000
-Subject: [PATCH 260/423] clk: bcm2835: reorganize bcm2835_clock_array
- assignment
+Subject: [PATCH] clk: bcm2835: reorganize bcm2835_clock_array assignment
 
 Reorganize bcm2835_clock_array so that there is no more
 need for separate bcm2835_*_data structures to be defined.
diff --git a/target/linux/brcm2708/patches-4.4/0261-clk-bcm2835-enable-management-of-PCM-clock.patch b/target/linux/brcm2708/patches-4.4/0261-clk-bcm2835-enable-management-of-PCM-clock.patch
index 42481fd..c14dceb 100644
--- a/target/linux/brcm2708/patches-4.4/0261-clk-bcm2835-enable-management-of-PCM-clock.patch
+++ b/target/linux/brcm2708/patches-4.4/0261-clk-bcm2835-enable-management-of-PCM-clock.patch
@@ -1,7 +1,7 @@
-From be05b91c313b122b4b1cb92bea7582b92eff3950 Mon Sep 17 00:00:00 2001
+From 5be1920e2cfc7e351aeff3920607c4d96fed9f1a Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Mon, 29 Feb 2016 12:51:43 +0000
-Subject: [PATCH 261/423] clk: bcm2835: enable management of PCM clock
+Subject: [PATCH] clk: bcm2835: enable management of PCM clock
 
 Enable the PCM clock in the SOC, which is used by the
 bcm2835-i2s driver.
diff --git a/target/linux/brcm2708/patches-4.4/0262-clk-bcm2835-add-missing-PLL-clock-dividers.patch b/target/linux/brcm2708/patches-4.4/0262-clk-bcm2835-add-missing-PLL-clock-dividers.patch
index dd71a4d..2bb2db6b 100644
--- a/target/linux/brcm2708/patches-4.4/0262-clk-bcm2835-add-missing-PLL-clock-dividers.patch
+++ b/target/linux/brcm2708/patches-4.4/0262-clk-bcm2835-add-missing-PLL-clock-dividers.patch
@@ -1,7 +1,7 @@
-From bea282aec8f05b08fd5185f7aeb75050a00c1d49 Mon Sep 17 00:00:00 2001
+From 0bd7afe408b2afd845f3b4971cfa641653716a12 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Mon, 29 Feb 2016 15:43:56 +0000
-Subject: [PATCH 262/423] clk: bcm2835: add missing PLL clock dividers
+Subject: [PATCH] clk: bcm2835: add missing PLL clock dividers
 
 Signed-off-by: Martin Sperl <kernel at martin.sperl.org>
 Signed-off-by: Eric Anholt <eric at anholt.net>
diff --git a/target/linux/brcm2708/patches-4.4/0263-clk-bcm2835-add-missing-osc-and-per-clocks.patch b/target/linux/brcm2708/patches-4.4/0263-clk-bcm2835-add-missing-osc-and-per-clocks.patch
index 553de1d..697f373 100644
--- a/target/linux/brcm2708/patches-4.4/0263-clk-bcm2835-add-missing-osc-and-per-clocks.patch
+++ b/target/linux/brcm2708/patches-4.4/0263-clk-bcm2835-add-missing-osc-and-per-clocks.patch
@@ -1,7 +1,7 @@
-From f634bd6444b004d080a6bbcee812f95669d6a91f Mon Sep 17 00:00:00 2001
+From 3f26e43abb4c245d41dfbed03d82c3bc36044b04 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Mon, 29 Feb 2016 15:43:57 +0000
-Subject: [PATCH 263/423] clk: bcm2835: add missing osc and per clocks
+Subject: [PATCH] clk: bcm2835: add missing osc and per clocks
 
 Add AVE0, DFT, GP0, GP1, GP2, SLIM, SMI, TEC, DPI, CAM0, CAM1, DSI0E,
 and DSI1E.  PULSE is not added because it has an extra divider.
diff --git a/target/linux/brcm2708/patches-4.4/0264-ARM-bcm2835-Define-two-new-packets-from-the-latest-f.patch b/target/linux/brcm2708/patches-4.4/0264-ARM-bcm2835-Define-two-new-packets-from-the-latest-f.patch
index 9ceb072..cfe6c95 100644
--- a/target/linux/brcm2708/patches-4.4/0264-ARM-bcm2835-Define-two-new-packets-from-the-latest-f.patch
+++ b/target/linux/brcm2708/patches-4.4/0264-ARM-bcm2835-Define-two-new-packets-from-the-latest-f.patch
@@ -1,7 +1,7 @@
-From 2d65549219b48c5da3bcc743477567b41017c96f Mon Sep 17 00:00:00 2001
+From 0021fdc59ccc2901f9ae829eb89d624a518eab27 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 1 Dec 2015 16:49:12 -0800
-Subject: [PATCH 264/423] ARM: bcm2835: Define two new packets from the latest
+Subject: [PATCH] ARM: bcm2835: Define two new packets from the latest
  firmware.
 
 These packets give us direct access to the firmware's power management
diff --git a/target/linux/brcm2708/patches-4.4/0265-ARM-bcm2835-add-rpi-power-domain-driver.patch b/target/linux/brcm2708/patches-4.4/0265-ARM-bcm2835-add-rpi-power-domain-driver.patch
index c3330a6..a278597 100644
--- a/target/linux/brcm2708/patches-4.4/0265-ARM-bcm2835-add-rpi-power-domain-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0265-ARM-bcm2835-add-rpi-power-domain-driver.patch
@@ -1,7 +1,7 @@
-From 0e371c743ab0adb7ada29fbe13712d7ab5696382 Mon Sep 17 00:00:00 2001
+From fab8814aede95569e5dfe3bad78ceda471bd341f Mon Sep 17 00:00:00 2001
 From: Alexander Aring <alex.aring at gmail.com>
 Date: Wed, 16 Dec 2015 16:26:47 -0800
-Subject: [PATCH 265/423] ARM: bcm2835: add rpi power domain driver
+Subject: [PATCH] ARM: bcm2835: add rpi power domain driver
 
 This patch adds support for several power domains on Raspberry Pi,
 including USB (so it can be enabled even if the bootloader didn't do
diff --git a/target/linux/brcm2708/patches-4.4/0266-ARM-bcm2835-clarify-RASPBERRYPI_FIRMWARE-dependency.patch b/target/linux/brcm2708/patches-4.4/0266-ARM-bcm2835-clarify-RASPBERRYPI_FIRMWARE-dependency.patch
index 734762d..210ea4f 100644
--- a/target/linux/brcm2708/patches-4.4/0266-ARM-bcm2835-clarify-RASPBERRYPI_FIRMWARE-dependency.patch
+++ b/target/linux/brcm2708/patches-4.4/0266-ARM-bcm2835-clarify-RASPBERRYPI_FIRMWARE-dependency.patch
@@ -1,7 +1,7 @@
-From b07da9e061614b18af32b80e75843e85a0171e56 Mon Sep 17 00:00:00 2001
+From 98f387ec974ccd45054a13211ed8d91d46bbe4cc Mon Sep 17 00:00:00 2001
 From: Arnd Bergmann <arnd at arndb.de>
 Date: Thu, 31 Dec 2015 23:39:14 +0100
-Subject: [PATCH 266/423] ARM: bcm2835: clarify RASPBERRYPI_FIRMWARE dependency
+Subject: [PATCH] ARM: bcm2835: clarify RASPBERRYPI_FIRMWARE dependency
 
 The firmware driver can be a loadable module, but the power domain
 can only be built-in, so we get a build error in an allmodconfig
diff --git a/target/linux/brcm2708/patches-4.4/0267-ARM-bcm2708-Enable-building-power-domain-driver.patch b/target/linux/brcm2708/patches-4.4/0267-ARM-bcm2708-Enable-building-power-domain-driver.patch
index e6decc3..f97b2e7 100644
--- a/target/linux/brcm2708/patches-4.4/0267-ARM-bcm2708-Enable-building-power-domain-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0267-ARM-bcm2708-Enable-building-power-domain-driver.patch
@@ -1,7 +1,7 @@
-From befc30415610ee28c619b14b8cee501184b43bf8 Mon Sep 17 00:00:00 2001
+From 5b934c573b70da98f70b98aa20a1f96bba8ef9b2 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 19 Apr 2016 15:55:02 -0700
-Subject: [PATCH 267/423] ARM: bcm2708: Enable building power domain driver.
+Subject: [PATCH] ARM: bcm2708: Enable building power domain driver.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0268-bcm2708-Add-RASPBERRYPI_POWER-to-the-defconfigs.patch b/target/linux/brcm2708/patches-4.4/0268-bcm2708-Add-RASPBERRYPI_POWER-to-the-defconfigs.patch
index 3d6b740..f11638e 100644
--- a/target/linux/brcm2708/patches-4.4/0268-bcm2708-Add-RASPBERRYPI_POWER-to-the-defconfigs.patch
+++ b/target/linux/brcm2708/patches-4.4/0268-bcm2708-Add-RASPBERRYPI_POWER-to-the-defconfigs.patch
@@ -1,7 +1,7 @@
-From b4ca3f0d1ec696492df39df6878a96d1ec14458a Mon Sep 17 00:00:00 2001
+From 9d065d6d38cb379a36e655c98f5e42cbfc1de0b2 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 19 Apr 2016 14:23:30 -0700
-Subject: [PATCH 268/423] bcm2708: Add RASPBERRYPI_POWER to the defconfigs.
+Subject: [PATCH] bcm2708: Add RASPBERRYPI_POWER to the defconfigs.
 
 This will be used by the GPU driver for powering on HDMI at boot time
 and for 3D hang reset.
diff --git a/target/linux/brcm2708/patches-4.4/0269-bcm2708-Add-the-power-domain-driver-to-the-device-tr.patch b/target/linux/brcm2708/patches-4.4/0269-bcm2708-Add-the-power-domain-driver-to-the-device-tr.patch
index 2c6a619..c7c2148 100644
--- a/target/linux/brcm2708/patches-4.4/0269-bcm2708-Add-the-power-domain-driver-to-the-device-tr.patch
+++ b/target/linux/brcm2708/patches-4.4/0269-bcm2708-Add-the-power-domain-driver-to-the-device-tr.patch
@@ -1,8 +1,7 @@
-From 5a8fe845b22e7ecef4b0d0d7fdfaa21794fa48c9 Mon Sep 17 00:00:00 2001
+From 61a1a146c39f694a1d347ac251ebd9b7d804064f Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 19 Apr 2016 14:36:31 -0700
-Subject: [PATCH 269/423] bcm2708: Add the power domain driver to the device
- tree.
+Subject: [PATCH] bcm2708: Add the power domain driver to the device tree.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0270-bcm2708-Reference-the-HDMI-power-domain-for-the-HDMI.patch b/target/linux/brcm2708/patches-4.4/0270-bcm2708-Reference-the-HDMI-power-domain-for-the-HDMI.patch
index c4adce6..95c9d91 100644
--- a/target/linux/brcm2708/patches-4.4/0270-bcm2708-Reference-the-HDMI-power-domain-for-the-HDMI.patch
+++ b/target/linux/brcm2708/patches-4.4/0270-bcm2708-Reference-the-HDMI-power-domain-for-the-HDMI.patch
@@ -1,8 +1,7 @@
-From e3f9f86ddec3e4a07333fa7f368440e09a7252ce Mon Sep 17 00:00:00 2001
+From 8c3b6b58d1f49ce8a352379cd48647e8116659ca Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 19 Apr 2016 14:40:08 -0700
-Subject: [PATCH 270/423] bcm2708: Reference the HDMI power domain for the HDMI
- driver.
+Subject: [PATCH] bcm2708: Reference the HDMI power domain for the HDMI driver.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0271-drm-vc4-copy_to_user-returns-the-number-of-bytes-rem.patch b/target/linux/brcm2708/patches-4.4/0271-drm-vc4-copy_to_user-returns-the-number-of-bytes-rem.patch
index b630dad..3ced0ef 100644
--- a/target/linux/brcm2708/patches-4.4/0271-drm-vc4-copy_to_user-returns-the-number-of-bytes-rem.patch
+++ b/target/linux/brcm2708/patches-4.4/0271-drm-vc4-copy_to_user-returns-the-number-of-bytes-rem.patch
@@ -1,8 +1,7 @@
-From a11ebfca5c605cdd30599edf201a65ece99b05fe Mon Sep 17 00:00:00 2001
+From e1d56edafff76ade96b5dce25e7cf1300213929b Mon Sep 17 00:00:00 2001
 From: Dan Carpenter <dan.carpenter at oracle.com>
 Date: Thu, 17 Dec 2015 15:36:28 +0300
-Subject: [PATCH 271/423] drm/vc4: copy_to_user() returns the number of bytes
- remaining
+Subject: [PATCH] drm/vc4: copy_to_user() returns the number of bytes remaining
 
 The copy_to/from_user() functions return the number of bytes remaining
 to be copied.  We want to return error codes here.
diff --git a/target/linux/brcm2708/patches-4.4/0272-drm-vc4-allocate-enough-memory-in-vc4_save_hang_stat.patch b/target/linux/brcm2708/patches-4.4/0272-drm-vc4-allocate-enough-memory-in-vc4_save_hang_stat.patch
index 06c7a06..6d1cbc7 100644
--- a/target/linux/brcm2708/patches-4.4/0272-drm-vc4-allocate-enough-memory-in-vc4_save_hang_stat.patch
+++ b/target/linux/brcm2708/patches-4.4/0272-drm-vc4-allocate-enough-memory-in-vc4_save_hang_stat.patch
@@ -1,8 +1,7 @@
-From 5c182b5f46cb781e945b3e567ac97fbb369d75d4 Mon Sep 17 00:00:00 2001
+From 6d29873e5a006db5b342630976b5527c8049acd2 Mon Sep 17 00:00:00 2001
 From: Dan Carpenter <dan.carpenter at oracle.com>
 Date: Thu, 17 Dec 2015 15:39:08 +0300
-Subject: [PATCH 272/423] drm/vc4: allocate enough memory in
- vc4_save_hang_state()
+Subject: [PATCH] drm/vc4: allocate enough memory in vc4_save_hang_state()
 
 "state" is smaller than "kernel_state" so we end up corrupting memory.
 
diff --git a/target/linux/brcm2708/patches-4.4/0273-drm-vc4-fix-warning-in-validate-printf.patch b/target/linux/brcm2708/patches-4.4/0273-drm-vc4-fix-warning-in-validate-printf.patch
index 4d3d94c..a654f14 100644
--- a/target/linux/brcm2708/patches-4.4/0273-drm-vc4-fix-warning-in-validate-printf.patch
+++ b/target/linux/brcm2708/patches-4.4/0273-drm-vc4-fix-warning-in-validate-printf.patch
@@ -1,7 +1,7 @@
-From eeafab86c1440009e0a09819019f0d6b562650a1 Mon Sep 17 00:00:00 2001
+From 015bc9646e2ff3586789757645aeee592819d843 Mon Sep 17 00:00:00 2001
 From: Dave Airlie <airlied at redhat.com>
 Date: Mon, 18 Jan 2016 09:10:42 +1000
-Subject: [PATCH 273/423] drm/vc4: fix warning in validate printf.
+Subject: [PATCH] drm/vc4: fix warning in validate printf.
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0274-drm-vc4-Improve-comments-on-vc4_plane_state-members.patch b/target/linux/brcm2708/patches-4.4/0274-drm-vc4-Improve-comments-on-vc4_plane_state-members.patch
index f7215c7..c31bfbe 100644
--- a/target/linux/brcm2708/patches-4.4/0274-drm-vc4-Improve-comments-on-vc4_plane_state-members.patch
+++ b/target/linux/brcm2708/patches-4.4/0274-drm-vc4-Improve-comments-on-vc4_plane_state-members.patch
@@ -1,7 +1,7 @@
-From 91b875c48c7aee103c14418730bc9ceb96aa18ac Mon Sep 17 00:00:00 2001
+From 2fa85567b77dc0a771cdeb37a4e6fb27ec23100d Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 28 Dec 2015 14:14:09 -0800
-Subject: [PATCH 274/423] drm/vc4: Improve comments on vc4_plane_state members.
+Subject: [PATCH] drm/vc4: Improve comments on vc4_plane_state members.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 (cherry picked from commit f427fb16cf756548c39256b569cf083f39bcc4e9)
diff --git a/target/linux/brcm2708/patches-4.4/0275-drm-vc4-Add-missing-__iomem-annotation-to-hw_dlist.patch b/target/linux/brcm2708/patches-4.4/0275-drm-vc4-Add-missing-__iomem-annotation-to-hw_dlist.patch
index 091a2b7..e37fffc 100644
--- a/target/linux/brcm2708/patches-4.4/0275-drm-vc4-Add-missing-__iomem-annotation-to-hw_dlist.patch
+++ b/target/linux/brcm2708/patches-4.4/0275-drm-vc4-Add-missing-__iomem-annotation-to-hw_dlist.patch
@@ -1,7 +1,7 @@
-From e0ab0c8c87b39aaf254f3b5625509dce3daeb216 Mon Sep 17 00:00:00 2001
+From 66c0f03718b26cb3bf47c60ef94770fab9728464 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 28 Dec 2015 14:14:57 -0800
-Subject: [PATCH 275/423] drm/vc4: Add missing __iomem annotation to hw_dlist.
+Subject: [PATCH] drm/vc4: Add missing __iomem annotation to hw_dlist.
 
 This is the pointer to the HVS device's memory where we stored the
 contents of *dlist.
diff --git a/target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch b/target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch
index af7bbe1..0be0676 100644
--- a/target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch
+++ b/target/linux/brcm2708/patches-4.4/0276-drm-vc4-Move-the-plane-clipping-scaling-setup-to-a-s.patch
@@ -1,8 +1,8 @@
-From fd6dfd0af2ab83d8df5d7b17a52fbf0284e42f2b Mon Sep 17 00:00:00 2001
+From eb708cc358e2f94461f971012c9c477a41b01237 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 28 Dec 2015 14:34:44 -0800
-Subject: [PATCH 276/423] drm/vc4: Move the plane clipping/scaling setup to a
- separate function.
+Subject: [PATCH] drm/vc4: Move the plane clipping/scaling setup to a separate
+ function.
 
 As we add actual scaling, this is going to get way more complicated.
 
diff --git a/target/linux/brcm2708/patches-4.4/0277-drm-vc4-Add-a-proper-short-circut-path-for-legacy-cu.patch b/target/linux/brcm2708/patches-4.4/0277-drm-vc4-Add-a-proper-short-circut-path-for-legacy-cu.patch
index 891383e..0e72748 100644
--- a/target/linux/brcm2708/patches-4.4/0277-drm-vc4-Add-a-proper-short-circut-path-for-legacy-cu.patch
+++ b/target/linux/brcm2708/patches-4.4/0277-drm-vc4-Add-a-proper-short-circut-path-for-legacy-cu.patch
@@ -1,8 +1,8 @@
-From 3f24f34e62b4bdcff3a5d46e847b200b5380b5ee Mon Sep 17 00:00:00 2001
+From 81f885f1ab1729bb2d14ca44d4861e0bb982b324 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Wed, 30 Dec 2015 11:50:22 -0800
-Subject: [PATCH 277/423] drm/vc4: Add a proper short-circut path for legacy
- cursor updates.
+Subject: [PATCH] drm/vc4: Add a proper short-circut path for legacy cursor
+ updates.
 
 Previously, on every modeset we would allocate new display list
 memory, recompute changed planes, write all of them to the new memory,
diff --git a/target/linux/brcm2708/patches-4.4/0278-drm-vc4-Make-the-CRTCs-cooperate-on-allocating-displ.patch b/target/linux/brcm2708/patches-4.4/0278-drm-vc4-Make-the-CRTCs-cooperate-on-allocating-displ.patch
index f235996..c676273 100644
--- a/target/linux/brcm2708/patches-4.4/0278-drm-vc4-Make-the-CRTCs-cooperate-on-allocating-displ.patch
+++ b/target/linux/brcm2708/patches-4.4/0278-drm-vc4-Make-the-CRTCs-cooperate-on-allocating-displ.patch
@@ -1,8 +1,8 @@
-From 417b8c7dcc6cad23f255a4307dda97d04f9c9b5b Mon Sep 17 00:00:00 2001
+From 1c86cb2794cdba850675a95de59acf505a3d7654 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 28 Dec 2015 13:25:41 -0800
-Subject: [PATCH 278/423] drm/vc4: Make the CRTCs cooperate on allocating
- display lists.
+Subject: [PATCH] drm/vc4: Make the CRTCs cooperate on allocating display
+ lists.
 
 So far, we've only ever lit up one CRTC, so this has been fine.  To
 extend to more displays or more planes, we need to make sure we don't
diff --git a/target/linux/brcm2708/patches-4.4/0279-drm-vc4-Add-more-display-planes-to-each-CRTC.patch b/target/linux/brcm2708/patches-4.4/0279-drm-vc4-Add-more-display-planes-to-each-CRTC.patch
index 3deccf5..8cfb9ea 100644
--- a/target/linux/brcm2708/patches-4.4/0279-drm-vc4-Add-more-display-planes-to-each-CRTC.patch
+++ b/target/linux/brcm2708/patches-4.4/0279-drm-vc4-Add-more-display-planes-to-each-CRTC.patch
@@ -1,7 +1,7 @@
-From a4e111deb5b2aaff6cd633135825c40d03b3ac74 Mon Sep 17 00:00:00 2001
+From dfda3a55b70ee0b1227ec4551d6376d463dd14b9 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 20 Oct 2015 14:18:56 +0100
-Subject: [PATCH 279/423] drm/vc4: Add more display planes to each CRTC.
+Subject: [PATCH] drm/vc4: Add more display planes to each CRTC.
 
 Previously we only did the primary and cursor plane, but overlay
 planes are useful and just require this setup to add, since all planes
diff --git a/target/linux/brcm2708/patches-4.4/0280-drm-vc4-Fix-which-value-is-being-used-for-source-ima.patch b/target/linux/brcm2708/patches-4.4/0280-drm-vc4-Fix-which-value-is-being-used-for-source-ima.patch
index 980fed1..ecfc9da 100644
--- a/target/linux/brcm2708/patches-4.4/0280-drm-vc4-Fix-which-value-is-being-used-for-source-ima.patch
+++ b/target/linux/brcm2708/patches-4.4/0280-drm-vc4-Fix-which-value-is-being-used-for-source-ima.patch
@@ -1,8 +1,7 @@
-From 265a20f8e1c0e3578aea9dcf9d2ea93ea909b76b Mon Sep 17 00:00:00 2001
+From 4ac20cea599c0f91b3240013ce603e608cab2d6a Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 28 Dec 2015 14:45:25 -0800
-Subject: [PATCH 280/423] drm/vc4: Fix which value is being used for source
- image size.
+Subject: [PATCH] drm/vc4: Fix which value is being used for source image size.
 
 This doesn't matter yet since we only allow 1:1 scaling, but the
 comment clearly says we should be using the source size.
diff --git a/target/linux/brcm2708/patches-4.4/0281-drm-vc4-Add-support-for-scaling-of-display-planes.patch b/target/linux/brcm2708/patches-4.4/0281-drm-vc4-Add-support-for-scaling-of-display-planes.patch
index 8fd1294..e7e5986 100644
--- a/target/linux/brcm2708/patches-4.4/0281-drm-vc4-Add-support-for-scaling-of-display-planes.patch
+++ b/target/linux/brcm2708/patches-4.4/0281-drm-vc4-Add-support-for-scaling-of-display-planes.patch
@@ -1,7 +1,7 @@
-From 8d513c7a67cce0bf0ef312323753eccbd0f3f71a Mon Sep 17 00:00:00 2001
+From 0b7d1c1de27840bd1a32bc0a28c8354e362b38ca Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 20 Oct 2015 16:06:57 +0100
-Subject: [PATCH 281/423] drm/vc4: Add support for scaling of display planes.
+Subject: [PATCH] drm/vc4: Add support for scaling of display planes.
 
 This implements a simple policy for choosing scaling modes
 (trapezoidal for decimation, PPF for magnification), and a single PPF
diff --git a/target/linux/brcm2708/patches-4.4/0282-drm-vc4-Add-support-for-YUV-planes.patch b/target/linux/brcm2708/patches-4.4/0282-drm-vc4-Add-support-for-YUV-planes.patch
index fbc7126..ed999d2 100644
--- a/target/linux/brcm2708/patches-4.4/0282-drm-vc4-Add-support-for-YUV-planes.patch
+++ b/target/linux/brcm2708/patches-4.4/0282-drm-vc4-Add-support-for-YUV-planes.patch
@@ -1,7 +1,7 @@
-From 40707ee2d92a2d229aa6b328c93aec0e3026c2a7 Mon Sep 17 00:00:00 2001
+From 64f2da0496d51f7260e18aeed6e72ed09fec7b00 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Wed, 30 Dec 2015 12:25:44 -0800
-Subject: [PATCH 282/423] drm/vc4: Add support for YUV planes.
+Subject: [PATCH] drm/vc4: Add support for YUV planes.
 
 This supports 420 and 422 subsampling with 2 or 3 planes, tested with
 modetest.  It doesn't set up chroma subsampling position (which it
diff --git a/target/linux/brcm2708/patches-4.4/0283-drm-vc4-Fix-spurious-GPU-resets-due-to-BO-reuse.patch b/target/linux/brcm2708/patches-4.4/0283-drm-vc4-Fix-spurious-GPU-resets-due-to-BO-reuse.patch
index efbcafa..f699b30 100644
--- a/target/linux/brcm2708/patches-4.4/0283-drm-vc4-Fix-spurious-GPU-resets-due-to-BO-reuse.patch
+++ b/target/linux/brcm2708/patches-4.4/0283-drm-vc4-Fix-spurious-GPU-resets-due-to-BO-reuse.patch
@@ -1,7 +1,7 @@
-From afe4e8694c719164db2918fe267658e4971bafaa Mon Sep 17 00:00:00 2001
+From bb79ceb9166d67ad8d658dead2f62bda7668f139 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 8 Feb 2016 11:19:14 -0800
-Subject: [PATCH 283/423] drm/vc4: Fix spurious GPU resets due to BO reuse.
+Subject: [PATCH] drm/vc4: Fix spurious GPU resets due to BO reuse.
 
 We were tracking the "where are the head pointers pointing" globally,
 so if another job reused the same BOs and execution was at the same
diff --git a/target/linux/brcm2708/patches-4.4/0284-drm-vc4-Fix-a-framebuffer-reference-leak-on-async-fl.patch b/target/linux/brcm2708/patches-4.4/0284-drm-vc4-Fix-a-framebuffer-reference-leak-on-async-fl.patch
index 0173657..366ac24 100644
--- a/target/linux/brcm2708/patches-4.4/0284-drm-vc4-Fix-a-framebuffer-reference-leak-on-async-fl.patch
+++ b/target/linux/brcm2708/patches-4.4/0284-drm-vc4-Fix-a-framebuffer-reference-leak-on-async-fl.patch
@@ -1,8 +1,8 @@
-From 0a26ed79b85b1fd55b88a1c3b5d1b4c3382b03f9 Mon Sep 17 00:00:00 2001
+From 2ee2a1f157f4eb81c2aca3a076fe74c1e587d2f8 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 5 Feb 2016 15:06:15 -0800
-Subject: [PATCH 284/423] drm/vc4: Fix a framebuffer reference leak on async
- flip interrupt.
+Subject: [PATCH] drm/vc4: Fix a framebuffer reference leak on async flip
+ interrupt.
 
 We'd need X to queue up an async pageflip while another is
 outstanding, and then take a SIGIO.  I think X actually avoids sending
diff --git a/target/linux/brcm2708/patches-4.4/0285-drm-vc4-Bring-HDMI-up-from-power-off-if-necessary.patch b/target/linux/brcm2708/patches-4.4/0285-drm-vc4-Bring-HDMI-up-from-power-off-if-necessary.patch
index a435d65..5391264 100644
--- a/target/linux/brcm2708/patches-4.4/0285-drm-vc4-Bring-HDMI-up-from-power-off-if-necessary.patch
+++ b/target/linux/brcm2708/patches-4.4/0285-drm-vc4-Bring-HDMI-up-from-power-off-if-necessary.patch
@@ -1,7 +1,7 @@
-From aae3a606556af7e815414df480aa49e1e56d1bc1 Mon Sep 17 00:00:00 2001
+From 17467b182d70d76c27d8e498abb281b28f58f92c Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 12 Feb 2016 14:15:14 -0800
-Subject: [PATCH 285/423] drm/vc4: Bring HDMI up from power off if necessary.
+Subject: [PATCH] drm/vc4: Bring HDMI up from power off if necessary.
 
 If the firmware hadn't brought up HDMI for us, we need to do its
 power-on reset sequence (reset HD and and clear its STANDBY bits,
diff --git a/target/linux/brcm2708/patches-4.4/0286-drm-vc4-Add-another-reg-to-HDMI-debug-dumping.patch b/target/linux/brcm2708/patches-4.4/0286-drm-vc4-Add-another-reg-to-HDMI-debug-dumping.patch
index a243899..eb087df 100644
--- a/target/linux/brcm2708/patches-4.4/0286-drm-vc4-Add-another-reg-to-HDMI-debug-dumping.patch
+++ b/target/linux/brcm2708/patches-4.4/0286-drm-vc4-Add-another-reg-to-HDMI-debug-dumping.patch
@@ -1,7 +1,7 @@
-From 6b4cbec225aa2ab85069aecfae8c328892cc7a3d Mon Sep 17 00:00:00 2001
+From 00d72cb223055ccdac7e9cda524b00a26a63c13e Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 12 Feb 2016 15:16:56 -0800
-Subject: [PATCH 286/423] drm/vc4: Add another reg to HDMI debug dumping.
+Subject: [PATCH] drm/vc4: Add another reg to HDMI debug dumping.
 
 This is also involved in the HDMI setup sequence so it's nice to see
 it.
diff --git a/target/linux/brcm2708/patches-4.4/0287-drm-vc4-Fix-the-name-of-the-VSYNCD_EVEN-register.patch b/target/linux/brcm2708/patches-4.4/0287-drm-vc4-Fix-the-name-of-the-VSYNCD_EVEN-register.patch
index ac4b27d..4e8a119 100644
--- a/target/linux/brcm2708/patches-4.4/0287-drm-vc4-Fix-the-name-of-the-VSYNCD_EVEN-register.patch
+++ b/target/linux/brcm2708/patches-4.4/0287-drm-vc4-Fix-the-name-of-the-VSYNCD_EVEN-register.patch
@@ -1,7 +1,7 @@
-From 3793554fcc4a8aa0545f109b5e8413c3ba42b823 Mon Sep 17 00:00:00 2001
+From 7c26f1c9cbdcaa0e8e3c6b740273f4722ce5c4ed Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 15 Feb 2016 17:06:02 -0800
-Subject: [PATCH 287/423] drm/vc4: Fix the name of the VSYNCD_EVEN register.
+Subject: [PATCH] drm/vc4: Fix the name of the VSYNCD_EVEN register.
 
 It's used for delaying vsync in interlaced mode.
 
diff --git a/target/linux/brcm2708/patches-4.4/0288-drm-vc4-Fix-setting-of-vertical-timings-in-the-CRTC.patch b/target/linux/brcm2708/patches-4.4/0288-drm-vc4-Fix-setting-of-vertical-timings-in-the-CRTC.patch
index 4542ac4..97f1c6a 100644
--- a/target/linux/brcm2708/patches-4.4/0288-drm-vc4-Fix-setting-of-vertical-timings-in-the-CRTC.patch
+++ b/target/linux/brcm2708/patches-4.4/0288-drm-vc4-Fix-setting-of-vertical-timings-in-the-CRTC.patch
@@ -1,7 +1,7 @@
-From aaf3c3ab336f0ff54be5b7eb4de5adca3cd2c05a Mon Sep 17 00:00:00 2001
+From 9654afa1c26516e3461cd8575f08b367fe5ff42a Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 15 Feb 2016 17:31:41 -0800
-Subject: [PATCH 288/423] drm/vc4: Fix setting of vertical timings in the CRTC.
+Subject: [PATCH] drm/vc4: Fix setting of vertical timings in the CRTC.
 
 It looks like when I went to add the interlaced bits, I just took the
 existing PV_VERT* block and indented it, instead of copy and pasting
diff --git a/target/linux/brcm2708/patches-4.4/0289-drm-vc4-Initialize-scaler-DISPBKGND-on-modeset.patch b/target/linux/brcm2708/patches-4.4/0289-drm-vc4-Initialize-scaler-DISPBKGND-on-modeset.patch
index ebda454..608a467 100644
--- a/target/linux/brcm2708/patches-4.4/0289-drm-vc4-Initialize-scaler-DISPBKGND-on-modeset.patch
+++ b/target/linux/brcm2708/patches-4.4/0289-drm-vc4-Initialize-scaler-DISPBKGND-on-modeset.patch
@@ -1,7 +1,7 @@
-From bf75b498fa8699b0b3230c33cc16a0633ff0e65c Mon Sep 17 00:00:00 2001
+From a4d7f252c7aca463cd85dd21f5929e4ba12a2a41 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 16 Feb 2016 10:24:08 -0800
-Subject: [PATCH 289/423] drm/vc4: Initialize scaler DISPBKGND on modeset.
+Subject: [PATCH] drm/vc4: Initialize scaler DISPBKGND on modeset.
 
 We weren't updating the interlaced bit, so we'd scan out incorrectly
 if the firmware had brought up the TV encoder and we were switching to
diff --git a/target/linux/brcm2708/patches-4.4/0290-drm-vc4-improve-throughput-by-pipelining-binning-and.patch b/target/linux/brcm2708/patches-4.4/0290-drm-vc4-improve-throughput-by-pipelining-binning-and.patch
index 11f7bd2..e03e761 100644
--- a/target/linux/brcm2708/patches-4.4/0290-drm-vc4-improve-throughput-by-pipelining-binning-and.patch
+++ b/target/linux/brcm2708/patches-4.4/0290-drm-vc4-improve-throughput-by-pipelining-binning-and.patch
@@ -1,7 +1,7 @@
-From 346367864363fa323ee502d9e8fb36b964cbbdb0 Mon Sep 17 00:00:00 2001
+From 1624a40cc0b7760e60b842b15fe46859940a9f48 Mon Sep 17 00:00:00 2001
 From: Varad Gautam <varadgautam at gmail.com>
 Date: Wed, 17 Feb 2016 19:08:21 +0530
-Subject: [PATCH 290/423] drm/vc4: improve throughput by pipelining binning and
+Subject: [PATCH] drm/vc4: improve throughput by pipelining binning and
  rendering jobs
 
 The hardware provides us with separate threads for binning and
diff --git a/target/linux/brcm2708/patches-4.4/0291-drm-vc4-Let-gpiolib-know-that-we-re-OK-with-sleeping.patch b/target/linux/brcm2708/patches-4.4/0291-drm-vc4-Let-gpiolib-know-that-we-re-OK-with-sleeping.patch
index daf76bc..d282d25 100644
--- a/target/linux/brcm2708/patches-4.4/0291-drm-vc4-Let-gpiolib-know-that-we-re-OK-with-sleeping.patch
+++ b/target/linux/brcm2708/patches-4.4/0291-drm-vc4-Let-gpiolib-know-that-we-re-OK-with-sleeping.patch
@@ -1,8 +1,8 @@
-From 52a8cd7d35e6c8860c2449e04ae305a3cdc671f1 Mon Sep 17 00:00:00 2001
+From 92bceb9faef5ef033e79b746aa8d5fd465548fbc Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 29 Feb 2016 17:53:00 -0800
-Subject: [PATCH 291/423] drm/vc4: Let gpiolib know that we're OK with sleeping
- for HPD.
+Subject: [PATCH] drm/vc4: Let gpiolib know that we're OK with sleeping for
+ HPD.
 
 Fixes an error thrown every few seconds when we poll HPD when it's on
 a I2C to GPIO expander.
diff --git a/target/linux/brcm2708/patches-4.4/0292-drm-vc4-Respect-GPIO_ACTIVE_LOW-on-HDMI-HPD-if-set-i.patch b/target/linux/brcm2708/patches-4.4/0292-drm-vc4-Respect-GPIO_ACTIVE_LOW-on-HDMI-HPD-if-set-i.patch
index cb53110..e6f8e9b 100644
--- a/target/linux/brcm2708/patches-4.4/0292-drm-vc4-Respect-GPIO_ACTIVE_LOW-on-HDMI-HPD-if-set-i.patch
+++ b/target/linux/brcm2708/patches-4.4/0292-drm-vc4-Respect-GPIO_ACTIVE_LOW-on-HDMI-HPD-if-set-i.patch
@@ -1,8 +1,8 @@
-From dd556129599f962e6da90bcd1150d8604979ceee Mon Sep 17 00:00:00 2001
+From ce00fb0111a4b7c47dc301d7d4845736ee9bb493 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 29 Feb 2016 17:53:01 -0800
-Subject: [PATCH 292/423] drm/vc4: Respect GPIO_ACTIVE_LOW on HDMI HPD if set
- in the devicetree.
+Subject: [PATCH] drm/vc4: Respect GPIO_ACTIVE_LOW on HDMI HPD if set in the
+ devicetree.
 
 The original Raspberry Pi had the GPIO active high, but the later
 models are active low.  The DT GPIO bindings allow specifying the
diff --git a/target/linux/brcm2708/patches-4.4/0293-drm-vc4-Return-EFAULT-on-copy_from_user-failure.patch b/target/linux/brcm2708/patches-4.4/0293-drm-vc4-Return-EFAULT-on-copy_from_user-failure.patch
index 082dec5..202425f 100644
--- a/target/linux/brcm2708/patches-4.4/0293-drm-vc4-Return-EFAULT-on-copy_from_user-failure.patch
+++ b/target/linux/brcm2708/patches-4.4/0293-drm-vc4-Return-EFAULT-on-copy_from_user-failure.patch
@@ -1,7 +1,7 @@
-From deb04405c9c7362840387414fcf33f01d056c697 Mon Sep 17 00:00:00 2001
+From b73a3233de4b17d80cfb100dcda2216cb3fcf8c6 Mon Sep 17 00:00:00 2001
 From: Dan Carpenter <dan.carpenter at oracle.com>
 Date: Tue, 8 Mar 2016 15:09:41 +0300
-Subject: [PATCH 293/423] drm/vc4: Return -EFAULT on copy_from_user() failure
+Subject: [PATCH] drm/vc4: Return -EFAULT on copy_from_user() failure
 
 The copy_from_user() function returns the number of bytes not copied but
 we want to return a negative error code.
diff --git a/target/linux/brcm2708/patches-4.4/0294-drm-vc4-Recognize-a-more-specific-compatible-string-.patch b/target/linux/brcm2708/patches-4.4/0294-drm-vc4-Recognize-a-more-specific-compatible-string-.patch
index 14cc702..c7fe18c 100644
--- a/target/linux/brcm2708/patches-4.4/0294-drm-vc4-Recognize-a-more-specific-compatible-string-.patch
+++ b/target/linux/brcm2708/patches-4.4/0294-drm-vc4-Recognize-a-more-specific-compatible-string-.patch
@@ -1,8 +1,7 @@
-From 16410f120e31739e61b0a89f91539cd551e088cc Mon Sep 17 00:00:00 2001
+From 4e30b1819e50588d5a3720ad1ac42cfbcb913101 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 4 Mar 2016 12:32:07 -0800
-Subject: [PATCH 294/423] drm/vc4: Recognize a more specific compatible string
- for V3D.
+Subject: [PATCH] drm/vc4: Recognize a more specific compatible string for V3D.
 
 The Raspberry Pi Foundation's firmware updates are shipping device
 trees using the old string, so we'll keep recognizing that as this rev
diff --git a/target/linux/brcm2708/patches-4.4/0295-ARM-bcm2708-Move-the-CMA-range-down-for-kernel-4.4.patch b/target/linux/brcm2708/patches-4.4/0295-ARM-bcm2708-Move-the-CMA-range-down-for-kernel-4.4.patch
index a6afa30..4661e4a 100644
--- a/target/linux/brcm2708/patches-4.4/0295-ARM-bcm2708-Move-the-CMA-range-down-for-kernel-4.4.patch
+++ b/target/linux/brcm2708/patches-4.4/0295-ARM-bcm2708-Move-the-CMA-range-down-for-kernel-4.4.patch
@@ -1,7 +1,7 @@
-From 08b78882a19227210b133f5fd66c923c4dec2d5d Mon Sep 17 00:00:00 2001
+From 6cdbac4755ed4e63299ea24635597e1d1188e8c8 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 19 Apr 2016 17:21:06 -0700
-Subject: [PATCH 295/423] ARM: bcm2708: Move the CMA range down for kernel 4.4.
+Subject: [PATCH] ARM: bcm2708: Move the CMA range down for kernel 4.4.
 
 The previous area no longer works, for reasons I haven't investigated.
 Just move it somewhere that works.
diff --git a/target/linux/brcm2708/patches-4.4/0296-clk-bcm2835-fix-check-of-error-code-returned-by-devm.patch b/target/linux/brcm2708/patches-4.4/0296-clk-bcm2835-fix-check-of-error-code-returned-by-devm.patch
index 11a5aba..376d992 100644
--- a/target/linux/brcm2708/patches-4.4/0296-clk-bcm2835-fix-check-of-error-code-returned-by-devm.patch
+++ b/target/linux/brcm2708/patches-4.4/0296-clk-bcm2835-fix-check-of-error-code-returned-by-devm.patch
@@ -1,7 +1,7 @@
-From 962b219e1cbec5b7fc6a3b5c9e03077ca759695d Mon Sep 17 00:00:00 2001
+From e16d40b0eafe97952af1005d8b1ab97ce4440066 Mon Sep 17 00:00:00 2001
 From: Vladimir Zapolskiy <vz at mleia.com>
 Date: Sun, 6 Mar 2016 03:21:35 +0200
-Subject: [PATCH 296/423] clk: bcm2835: fix check of error code returned by
+Subject: [PATCH] clk: bcm2835: fix check of error code returned by
  devm_ioremap_resource()
 
 The change fixes potential oops while accessing iomem on invalid
diff --git a/target/linux/brcm2708/patches-4.4/0297-vchiq_arm-Add-completion-records-under-the-mutex.patch b/target/linux/brcm2708/patches-4.4/0297-vchiq_arm-Add-completion-records-under-the-mutex.patch
index 8075b63..6dd4180 100644
--- a/target/linux/brcm2708/patches-4.4/0297-vchiq_arm-Add-completion-records-under-the-mutex.patch
+++ b/target/linux/brcm2708/patches-4.4/0297-vchiq_arm-Add-completion-records-under-the-mutex.patch
@@ -1,7 +1,7 @@
-From 3ea5efb1f91da877b375eccb94e1cd4517fd8638 Mon Sep 17 00:00:00 2001
+From d4bbd21245e600f32074724152f77a4ae9904047 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 21 Apr 2016 13:49:32 +0100
-Subject: [PATCH 297/423] vchiq_arm: Add completion records under the mutex
+Subject: [PATCH] vchiq_arm: Add completion records under the mutex
 
 An issue was observed when flushing openmax components
 which generate a large number of messages returning
diff --git a/target/linux/brcm2708/patches-4.4/0298-config-Add-DRM_UDL-module.patch b/target/linux/brcm2708/patches-4.4/0298-config-Add-DRM_UDL-module.patch
index 4dd489c..1b0aff7 100644
--- a/target/linux/brcm2708/patches-4.4/0298-config-Add-DRM_UDL-module.patch
+++ b/target/linux/brcm2708/patches-4.4/0298-config-Add-DRM_UDL-module.patch
@@ -1,7 +1,7 @@
-From 51453a026306a2b1c7ccad6bcc9ab95a24d49bc3 Mon Sep 17 00:00:00 2001
+From 03fb94e9e8e68ba9809bdd0f966346ea2807d1dd Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 21 Apr 2016 16:07:15 +0100
-Subject: [PATCH 298/423] config: Add DRM_UDL module
+Subject: [PATCH] config: Add DRM_UDL module
 
 See: https://github.com/raspberrypi/linux/issues/1422
 
diff --git a/target/linux/brcm2708/patches-4.4/0299-bcm2835-i2s-Reduce-the-TX-DREQ-threshold.patch b/target/linux/brcm2708/patches-4.4/0299-bcm2835-i2s-Reduce-the-TX-DREQ-threshold.patch
index d4b4492..1048b2a 100644
--- a/target/linux/brcm2708/patches-4.4/0299-bcm2835-i2s-Reduce-the-TX-DREQ-threshold.patch
+++ b/target/linux/brcm2708/patches-4.4/0299-bcm2835-i2s-Reduce-the-TX-DREQ-threshold.patch
@@ -1,7 +1,7 @@
-From c2dd47a309d6eee486191ef7805ba3f544ff3dae Mon Sep 17 00:00:00 2001
+From a7f989cdcb11a8ff5bbb51a675e3662872b5dd55 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 21 Apr 2016 15:44:14 +0100
-Subject: [PATCH 299/423] bcm2835-i2s: Reduce the TX DREQ threshold
+Subject: [PATCH] bcm2835-i2s: Reduce the TX DREQ threshold
 
 TX FIFO overrun is thought to be the cause of channel swapping, so
 reducing the DREQ threshold seems reasonable and appears to be
diff --git a/target/linux/brcm2708/patches-4.4/0300-V4L2-Request-maximum-resolution-from-GPU.patch b/target/linux/brcm2708/patches-4.4/0300-V4L2-Request-maximum-resolution-from-GPU.patch
index f980400..9c3bdea 100644
--- a/target/linux/brcm2708/patches-4.4/0300-V4L2-Request-maximum-resolution-from-GPU.patch
+++ b/target/linux/brcm2708/patches-4.4/0300-V4L2-Request-maximum-resolution-from-GPU.patch
@@ -1,7 +1,7 @@
-From 99f198703d9ba6c286ca936850a12e6ca3f6b78b Mon Sep 17 00:00:00 2001
+From 4bf5d7236db0e122eb20cf73699557122f49c9dc Mon Sep 17 00:00:00 2001
 From: Dave Stevenson <6by9 at users.noreply.github.com>
 Date: Sat, 16 Apr 2016 23:09:54 +0100
-Subject: [PATCH 300/423] V4L2: Request maximum resolution from GPU
+Subject: [PATCH] V4L2: Request maximum resolution from GPU
 
 Get resolution information about the sensors from the GPU
 and advertise it correctly.
diff --git a/target/linux/brcm2708/patches-4.4/0301-ARM-bcm2835-add-i2s-gpio28-31-for-cm.patch b/target/linux/brcm2708/patches-4.4/0301-ARM-bcm2835-add-i2s-gpio28-31-for-cm.patch
index 6ec13c9..132ee07 100644
--- a/target/linux/brcm2708/patches-4.4/0301-ARM-bcm2835-add-i2s-gpio28-31-for-cm.patch
+++ b/target/linux/brcm2708/patches-4.4/0301-ARM-bcm2835-add-i2s-gpio28-31-for-cm.patch
@@ -1,7 +1,7 @@
-From 19244064105686007a875c423970e3113da4e73c Mon Sep 17 00:00:00 2001
+From c865e89f79eca5a324d541a03aa4725bc0614f64 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Sat, 23 Apr 2016 15:21:41 +0000
-Subject: [PATCH 301/423] ARM: bcm2835: add i2s-gpio28-31 for cm
+Subject: [PATCH] ARM: bcm2835: add i2s-gpio28-31 for cm
 
 Add i2s-gpio28-31 overlay for compute module
 so that i2s is using gpio28-31
diff --git a/target/linux/brcm2708/patches-4.4/0302-drm-vc4-Add-DT-parameters-to-control-CMA-usage.patch b/target/linux/brcm2708/patches-4.4/0302-drm-vc4-Add-DT-parameters-to-control-CMA-usage.patch
index 5f04f2f..34f0e80 100644
--- a/target/linux/brcm2708/patches-4.4/0302-drm-vc4-Add-DT-parameters-to-control-CMA-usage.patch
+++ b/target/linux/brcm2708/patches-4.4/0302-drm-vc4-Add-DT-parameters-to-control-CMA-usage.patch
@@ -1,7 +1,7 @@
-From 5f632f8aba2da50bba83537926a1d3a466ca2a51 Mon Sep 17 00:00:00 2001
+From 4f7d976e703d5196ade9d27074ce4bb49c11bb52 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Sun, 24 Apr 2016 17:28:15 +0100
-Subject: [PATCH 302/423] drm/vc4: Add DT parameters to control CMA usage
+Subject: [PATCH] drm/vc4: Add DT parameters to control CMA usage
 
 Example: dtoverlay=vc4-kms-v3d,cma-128
 
diff --git a/target/linux/brcm2708/patches-4.4/0303-SQUASH-BCM270X_DT-Add-make-rule-for-sdio-1bit.patch b/target/linux/brcm2708/patches-4.4/0303-SQUASH-BCM270X_DT-Add-make-rule-for-sdio-1bit.patch
index 9c09169..866983f 100644
--- a/target/linux/brcm2708/patches-4.4/0303-SQUASH-BCM270X_DT-Add-make-rule-for-sdio-1bit.patch
+++ b/target/linux/brcm2708/patches-4.4/0303-SQUASH-BCM270X_DT-Add-make-rule-for-sdio-1bit.patch
@@ -1,7 +1,7 @@
-From 2745d40fb64e1663fba690f69ea0a87a171a43f6 Mon Sep 17 00:00:00 2001
+From 314c504fe66cf918a847fd0ab5a4c9f82def6e06 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 25 Apr 2016 10:43:36 +0100
-Subject: [PATCH 303/423] SQUASH: BCM270X_DT: Add make rule for sdio-1bit
+Subject: [PATCH] SQUASH: BCM270X_DT: Add make rule for sdio-1bit
 
 See: https://github.com/raspberrypi/linux/pull/1301
 
diff --git a/target/linux/brcm2708/patches-4.4/0304-dts-add-overlay-for-pitft22.patch b/target/linux/brcm2708/patches-4.4/0304-dts-add-overlay-for-pitft22.patch
index 2c3706f..e6f53cd 100644
--- a/target/linux/brcm2708/patches-4.4/0304-dts-add-overlay-for-pitft22.patch
+++ b/target/linux/brcm2708/patches-4.4/0304-dts-add-overlay-for-pitft22.patch
@@ -1,7 +1,7 @@
-From 2e099f313b5fa1f2eb508da3b7322dea3c27053d Mon Sep 17 00:00:00 2001
+From d2ecf44fbe03bd988a608473d5b515d21fab8950 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Petter=20Mab=C3=A4cker?= <petter at technux.se>
 Date: Fri, 8 Jan 2016 09:02:44 +0100
-Subject: [PATCH 304/423] dts: add overlay for pitft22
+Subject: [PATCH] dts: add overlay for pitft22
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0305-BCM270X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch b/target/linux/brcm2708/patches-4.4/0305-BCM270X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch
index 3b34850..db5ecb2 100644
--- a/target/linux/brcm2708/patches-4.4/0305-BCM270X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch
+++ b/target/linux/brcm2708/patches-4.4/0305-BCM270X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch
@@ -1,7 +1,7 @@
-From ef21e99d52371ca26385dce327687880143316a1 Mon Sep 17 00:00:00 2001
+From 5bab2e037ad60c491b7a48171b33fb1413e91352 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Tue, 26 Apr 2016 10:44:59 +0100
-Subject: [PATCH 305/423] BCM270X_DT: Sound DT adjustments for Dynamic DT
+Subject: [PATCH] BCM270X_DT: Sound DT adjustments for Dynamic DT
 
 There are a number of issues when loading and unloading overlays for
 sound cards:
diff --git a/target/linux/brcm2708/patches-4.4/0306-BCM270X_DT-Fix-codec-use-in-hifiberry-dac-overlay.patch b/target/linux/brcm2708/patches-4.4/0306-BCM270X_DT-Fix-codec-use-in-hifiberry-dac-overlay.patch
index 8cbc0c8..e32f9f3 100644
--- a/target/linux/brcm2708/patches-4.4/0306-BCM270X_DT-Fix-codec-use-in-hifiberry-dac-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0306-BCM270X_DT-Fix-codec-use-in-hifiberry-dac-overlay.patch
@@ -1,7 +1,7 @@
-From 27105cf8f4de0124cfdeb3413d5475aff3c8f00f Mon Sep 17 00:00:00 2001
+From 5f01fff2c8d665404e11aff29278d63f6250af61 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 27 Apr 2016 12:01:41 +0100
-Subject: [PATCH 306/423] BCM270X_DT: Fix codec use in hifiberry-dac overlay
+Subject: [PATCH] BCM270X_DT: Fix codec use in hifiberry-dac overlay
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0309-Revert-bcm2835-log-which-channel-map-is-set.patch b/target/linux/brcm2708/patches-4.4/0309-Revert-bcm2835-log-which-channel-map-is-set.patch
index aafca79..d04a1eb 100644
--- a/target/linux/brcm2708/patches-4.4/0309-Revert-bcm2835-log-which-channel-map-is-set.patch
+++ b/target/linux/brcm2708/patches-4.4/0309-Revert-bcm2835-log-which-channel-map-is-set.patch
@@ -1,7 +1,7 @@
-From ad45da06f725ba7f1280c69e0476919d87f8030c Mon Sep 17 00:00:00 2001
+From 593366c81d96fb54152093ab5ca3d62607440cf8 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 29 Apr 2016 17:27:33 +0100
-Subject: [PATCH 309/423] Revert "bcm2835: log which channel map is set"
+Subject: [PATCH] Revert "bcm2835: log which channel map is set"
 
 This reverts commit cd560b8658868d9652ab31754e02f86daf6831ba.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0310-Revert-bcm2835-add-fallback-channel-layouts-if-chann.patch b/target/linux/brcm2708/patches-4.4/0310-Revert-bcm2835-add-fallback-channel-layouts-if-chann.patch
index 9f8d7d9..56497d1 100644
--- a/target/linux/brcm2708/patches-4.4/0310-Revert-bcm2835-add-fallback-channel-layouts-if-chann.patch
+++ b/target/linux/brcm2708/patches-4.4/0310-Revert-bcm2835-add-fallback-channel-layouts-if-chann.patch
@@ -1,8 +1,8 @@
-From f8473a921ad7208ca5b4218571f3ffd267b18cff Mon Sep 17 00:00:00 2001
+From ed9e011f0f6a823a2e278ce7dd9e8bb620b08e56 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 29 Apr 2016 17:27:35 +0100
-Subject: [PATCH 310/423] Revert "bcm2835: add fallback channel layouts if
- channel map API is not used"
+Subject: [PATCH] Revert "bcm2835: add fallback channel layouts if channel map
+ API is not used"
 
 This reverts commit ceacfff9f86f89826dbc8a6df667f485894327d1.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0311-Revert-bcm2835-do-not-require-substream-for-accessin.patch b/target/linux/brcm2708/patches-4.4/0311-Revert-bcm2835-do-not-require-substream-for-accessin.patch
index 152ab91..83b675d 100644
--- a/target/linux/brcm2708/patches-4.4/0311-Revert-bcm2835-do-not-require-substream-for-accessin.patch
+++ b/target/linux/brcm2708/patches-4.4/0311-Revert-bcm2835-do-not-require-substream-for-accessin.patch
@@ -1,8 +1,8 @@
-From 75045e771ab867b6cd397b1d1280e81584ddc401 Mon Sep 17 00:00:00 2001
+From e26366439123ef9f20f7728942f35937035c9c73 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 29 Apr 2016 17:27:36 +0100
-Subject: [PATCH 311/423] Revert "bcm2835: do not require substream for
- accessing chmap ctl"
+Subject: [PATCH] Revert "bcm2835: do not require substream for accessing chmap
+ ctl"
 
 This reverts commit a05b4815196018c329ea98c24205bc6fa9c097e0.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0312-Revert-bcm2835-interpolate-audio-delay.patch b/target/linux/brcm2708/patches-4.4/0312-Revert-bcm2835-interpolate-audio-delay.patch
index a972170..0b50d27 100644
--- a/target/linux/brcm2708/patches-4.4/0312-Revert-bcm2835-interpolate-audio-delay.patch
+++ b/target/linux/brcm2708/patches-4.4/0312-Revert-bcm2835-interpolate-audio-delay.patch
@@ -1,7 +1,7 @@
-From 65978c7586dc8fe403a3a3bebf40de881b8d2741 Mon Sep 17 00:00:00 2001
+From 30abbf1d6db5eb081c9693958b098d86758aa7f4 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 29 Apr 2016 17:27:37 +0100
-Subject: [PATCH 312/423] Revert "bcm2835: interpolate audio delay"
+Subject: [PATCH] Revert "bcm2835: interpolate audio delay"
 
 This reverts commit 83eca613d0eddd2c8299f114b8fe573ccaffdefc.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0313-Revert-bcm2835-only-allow-stereo-if-analogue-jack-is.patch b/target/linux/brcm2708/patches-4.4/0313-Revert-bcm2835-only-allow-stereo-if-analogue-jack-is.patch
index ce48ff1..c601196 100644
--- a/target/linux/brcm2708/patches-4.4/0313-Revert-bcm2835-only-allow-stereo-if-analogue-jack-is.patch
+++ b/target/linux/brcm2708/patches-4.4/0313-Revert-bcm2835-only-allow-stereo-if-analogue-jack-is.patch
@@ -1,8 +1,8 @@
-From 71c5f4311cf466ec59d058102c21b12c93d46a64 Mon Sep 17 00:00:00 2001
+From ad3d718e72cdc2c01c22578831603ea1981f9906 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 29 Apr 2016 17:28:06 +0100
-Subject: [PATCH 313/423] Revert "bcm2835: only allow stereo if analogue jack
- is selected"
+Subject: [PATCH] Revert "bcm2835: only allow stereo if analogue jack is
+ selected"
 
 This reverts commit 5f7049894f47b3836838cd68e29ee883179c80b3.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0314-Revert-bcm2835-always-use-2-4-8-channels-for-multich.patch b/target/linux/brcm2708/patches-4.4/0314-Revert-bcm2835-always-use-2-4-8-channels-for-multich.patch
index 4d8e508..e1efbf7 100644
--- a/target/linux/brcm2708/patches-4.4/0314-Revert-bcm2835-always-use-2-4-8-channels-for-multich.patch
+++ b/target/linux/brcm2708/patches-4.4/0314-Revert-bcm2835-always-use-2-4-8-channels-for-multich.patch
@@ -1,8 +1,8 @@
-From 36b6b25b8fe95dc3d4c9b0ded58827b5660e1a87 Mon Sep 17 00:00:00 2001
+From 506c92b9847bb1fb0ef2fab567b74da572c2ad97 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 29 Apr 2016 17:28:08 +0100
-Subject: [PATCH 314/423] Revert "bcm2835: always use 2/4/8 channels for
- multichannel layouts"
+Subject: [PATCH] Revert "bcm2835: always use 2/4/8 channels for multichannel
+ layouts"
 
 This reverts commit 06931f74092d86087144f070b06a4444df8b444b.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0315-Revert-bcm2835-implement-channel-map-API.patch b/target/linux/brcm2708/patches-4.4/0315-Revert-bcm2835-implement-channel-map-API.patch
index d6c5b6c..d5d70b3 100644
--- a/target/linux/brcm2708/patches-4.4/0315-Revert-bcm2835-implement-channel-map-API.patch
+++ b/target/linux/brcm2708/patches-4.4/0315-Revert-bcm2835-implement-channel-map-API.patch
@@ -1,7 +1,7 @@
-From f830d4081e228776a7236be435921016b3ae1347 Mon Sep 17 00:00:00 2001
+From 1e3a2bebcbd26fdf1b0d13d2219186163708ae4c Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 29 Apr 2016 17:29:03 +0100
-Subject: [PATCH 315/423] Revert "bcm2835: implement channel map API"
+Subject: [PATCH] Revert "bcm2835: implement channel map API"
 
 This reverts commit 5efba3f8c180c39609a8d40033ef92046ef0de75.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0316-Revert-bcm2835-extend-allowed-range-of-channels-and-.patch b/target/linux/brcm2708/patches-4.4/0316-Revert-bcm2835-extend-allowed-range-of-channels-and-.patch
index cb549a0..c128686 100644
--- a/target/linux/brcm2708/patches-4.4/0316-Revert-bcm2835-extend-allowed-range-of-channels-and-.patch
+++ b/target/linux/brcm2708/patches-4.4/0316-Revert-bcm2835-extend-allowed-range-of-channels-and-.patch
@@ -1,7 +1,7 @@
-From c46ed63ab5c1c24f3732aa410e9b9661d4c18ce7 Mon Sep 17 00:00:00 2001
+From cb54a471f7066a763b9da5d33d6613fe15d2aa3d Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 29 Apr 2016 17:30:00 +0100
-Subject: [PATCH 316/423] Revert "bcm2835: extend allowed range of channels and
+Subject: [PATCH] Revert "bcm2835: extend allowed range of channels and
  samplerates"
 
 This reverts commit 688a5f0daa45e0a51b324707768d472e1d715c13.
diff --git a/target/linux/brcm2708/patches-4.4/0318-pinctrl-bcm2835-Return-pins-to-inputs-when-freed.patch b/target/linux/brcm2708/patches-4.4/0317-pinctrl-bcm2835-Return-pins-to-inputs-when-freed.patch
similarity index 90%
rename from target/linux/brcm2708/patches-4.4/0318-pinctrl-bcm2835-Return-pins-to-inputs-when-freed.patch
rename to target/linux/brcm2708/patches-4.4/0317-pinctrl-bcm2835-Return-pins-to-inputs-when-freed.patch
index 89bc34a..685cd79 100644
--- a/target/linux/brcm2708/patches-4.4/0318-pinctrl-bcm2835-Return-pins-to-inputs-when-freed.patch
+++ b/target/linux/brcm2708/patches-4.4/0317-pinctrl-bcm2835-Return-pins-to-inputs-when-freed.patch
@@ -1,7 +1,7 @@
-From a336b35810263be890a30356837c75dc54b2e3be Mon Sep 17 00:00:00 2001
+From 550960c37d5de04808943e9ae6cecb16ad003070 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 6 May 2016 12:32:47 +0100
-Subject: [PATCH 318/423] pinctrl-bcm2835: Return pins to inputs when freed
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0319-BCM270X_DT-i2c0-bcm2708-pin-group-params.patch b/target/linux/brcm2708/patches-4.4/0318-BCM270X_DT-i2c0-bcm2708-pin-group-params.patch
similarity index 95%
rename from target/linux/brcm2708/patches-4.4/0319-BCM270X_DT-i2c0-bcm2708-pin-group-params.patch
rename to target/linux/brcm2708/patches-4.4/0318-BCM270X_DT-i2c0-bcm2708-pin-group-params.patch
index 04f2e11..fdebd34 100644
--- a/target/linux/brcm2708/patches-4.4/0319-BCM270X_DT-i2c0-bcm2708-pin-group-params.patch
+++ b/target/linux/brcm2708/patches-4.4/0318-BCM270X_DT-i2c0-bcm2708-pin-group-params.patch
@@ -1,7 +1,7 @@
-From e239ab77f367aff3bcb1d2ed807c438cf0f2ffe8 Mon Sep 17 00:00:00 2001
+From 9b6cc71b7159bebe78cd1ee823a479c0ca485c82 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 6 May 2016 12:53:16 +0100
-Subject: [PATCH 319/423] BCM270X_DT: i2c0-bcm2708 - pin group params
+Subject: [PATCH] BCM270X_DT: i2c0-bcm2708 - pin group params
 
 Add parameters to set pin groups as a unit, setting the pin function
 appropriately. The parameters are:
diff --git a/target/linux/brcm2708/patches-4.4/0320-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch b/target/linux/brcm2708/patches-4.4/0319-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
similarity index 84%
rename from target/linux/brcm2708/patches-4.4/0320-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
rename to target/linux/brcm2708/patches-4.4/0319-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
index 82df548..13ee212 100644
--- a/target/linux/brcm2708/patches-4.4/0320-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
+++ b/target/linux/brcm2708/patches-4.4/0319-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
@@ -1,7 +1,7 @@
-From e43e0bc1fe4a0a1c9e02b7a66dc9481e54c6f8cd Mon Sep 17 00:00:00 2001
+From 708cc4c531fdf3b6061589031cd15b9382e042b8 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 6 May 2016 12:40:37 +0100
-Subject: [PATCH 320/423] config: Add CONFIG_DRM_LOAD_EDID_FIRMWARE
+Subject: [PATCH] config: Add CONFIG_DRM_LOAD_EDID_FIRMWARE
 
 ---
  arch/arm/configs/bcm2709_defconfig | 1 +
diff --git a/target/linux/brcm2708/patches-4.4/0321-Revert-rpi-update-vc_vchi_audioserv_defs.h.patch b/target/linux/brcm2708/patches-4.4/0320-Revert-rpi-update-vc_vchi_audioserv_defs.h.patch
similarity index 92%
rename from target/linux/brcm2708/patches-4.4/0321-Revert-rpi-update-vc_vchi_audioserv_defs.h.patch
rename to target/linux/brcm2708/patches-4.4/0320-Revert-rpi-update-vc_vchi_audioserv_defs.h.patch
index 0820c8a..a2e5b6e 100644
--- a/target/linux/brcm2708/patches-4.4/0321-Revert-rpi-update-vc_vchi_audioserv_defs.h.patch
+++ b/target/linux/brcm2708/patches-4.4/0320-Revert-rpi-update-vc_vchi_audioserv_defs.h.patch
@@ -1,7 +1,7 @@
-From 07abcf3c2c3ae76a2be75e4fcc85ecd49d727a8a Mon Sep 17 00:00:00 2001
+From 61a0378d024e96bfe068fac75a4ed401eef46676 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 6 May 2016 17:18:57 +0100
-Subject: [PATCH 321/423] Revert "rpi: update vc_vchi_audioserv_defs.h"
+Subject: [PATCH] Revert "rpi: update vc_vchi_audioserv_defs.h"
 
 This reverts commit 64fa9f963dffab0145f7960a593422064bb0aa8d.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0322-Revert-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch b/target/linux/brcm2708/patches-4.4/0321-Revert-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
similarity index 85%
rename from target/linux/brcm2708/patches-4.4/0322-Revert-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
rename to target/linux/brcm2708/patches-4.4/0321-Revert-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
index 54bf7a8..bcfe02b 100644
--- a/target/linux/brcm2708/patches-4.4/0322-Revert-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
+++ b/target/linux/brcm2708/patches-4.4/0321-Revert-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
@@ -1,7 +1,7 @@
-From 19526f5f7bdd0ffe5f079197598f1276fed9bcff Mon Sep 17 00:00:00 2001
+From d796713d0e6da4b9fdfd88350f0321d8f63ccf91 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 6 May 2016 17:21:58 +0100
-Subject: [PATCH 322/423] Revert "config: Add CONFIG_DRM_LOAD_EDID_FIRMWARE"
+Subject: [PATCH] Revert "config: Add CONFIG_DRM_LOAD_EDID_FIRMWARE"
 
 This reverts commit 417aed4cb35a479e001c8389fd8d97c3ea612999.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0323-ARM-adau1977-adc-Add-basic-machine-driver-for-adau19.patch b/target/linux/brcm2708/patches-4.4/0322-ARM-adau1977-adc-Add-basic-machine-driver-for-adau19.patch
similarity index 98%
rename from target/linux/brcm2708/patches-4.4/0323-ARM-adau1977-adc-Add-basic-machine-driver-for-adau19.patch
rename to target/linux/brcm2708/patches-4.4/0322-ARM-adau1977-adc-Add-basic-machine-driver-for-adau19.patch
index 76fdef6..e6ba866 100644
--- a/target/linux/brcm2708/patches-4.4/0323-ARM-adau1977-adc-Add-basic-machine-driver-for-adau19.patch
+++ b/target/linux/brcm2708/patches-4.4/0322-ARM-adau1977-adc-Add-basic-machine-driver-for-adau19.patch
@@ -1,8 +1,8 @@
-From 8c2a8f26d78f29aa349b184a9e87586df735b51e Mon Sep 17 00:00:00 2001
+From e6728a3fb4b185e632a63b7d0d61838d8d690548 Mon Sep 17 00:00:00 2001
 From: Andrey Grodzovsky <andrey2805 at gmail.com>
 Date: Tue, 3 May 2016 22:10:59 -0400
-Subject: [PATCH 323/423] ARM: adau1977-adc: Add basic machine driver for
- adau1977 codec driver.
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0324-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch b/target/linux/brcm2708/patches-4.4/0323-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch
similarity index 93%
rename from target/linux/brcm2708/patches-4.4/0324-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch
rename to target/linux/brcm2708/patches-4.4/0323-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch
index ad4d3b1..3278745 100644
--- a/target/linux/brcm2708/patches-4.4/0324-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch
+++ b/target/linux/brcm2708/patches-4.4/0323-Allow-up-to-24dB-digital-gain-to-be-applied-when-usi.patch
@@ -1,8 +1,8 @@
-From d81de2a4a1223296b17dac8e652b0b31911f6dd1 Mon Sep 17 00:00:00 2001
+From 691922255a15630c6f726c4c871ce2475d4fec72 Mon Sep 17 00:00:00 2001
 From: DigitalDreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Fri, 6 May 2016 09:42:55 +0100
-Subject: [PATCH 324/423] Allow up to 24dB digital gain to be applied when
- using IQAudIO DAC
+Subject: [PATCH] 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,
diff --git a/target/linux/brcm2708/patches-4.4/0325-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch b/target/linux/brcm2708/patches-4.4/0324-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
similarity index 84%
rename from target/linux/brcm2708/patches-4.4/0325-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
rename to target/linux/brcm2708/patches-4.4/0324-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
index 20cb9db..bfb7bf6 100644
--- a/target/linux/brcm2708/patches-4.4/0325-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
+++ b/target/linux/brcm2708/patches-4.4/0324-config-Add-CONFIG_DRM_LOAD_EDID_FIRMWARE.patch
@@ -1,7 +1,7 @@
-From 65042bea86d4204f83acd09cb665a2d91b365105 Mon Sep 17 00:00:00 2001
+From e84d0b3f337b2ad8f8b7879fb64bcd48a87919c6 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 6 May 2016 12:40:37 +0100
-Subject: [PATCH 325/423] config: Add CONFIG_DRM_LOAD_EDID_FIRMWARE
+Subject: [PATCH] config: Add CONFIG_DRM_LOAD_EDID_FIRMWARE
 
 ---
  arch/arm/configs/bcm2709_defconfig | 1 +
diff --git a/target/linux/brcm2708/patches-4.4/0326-BCM270X_DT-Move-vc4-node-contents-to-bcm2708_common..patch b/target/linux/brcm2708/patches-4.4/0325-BCM270X_DT-Move-vc4-node-contents-to-bcm2708_common..patch
similarity index 97%
rename from target/linux/brcm2708/patches-4.4/0326-BCM270X_DT-Move-vc4-node-contents-to-bcm2708_common..patch
rename to target/linux/brcm2708/patches-4.4/0325-BCM270X_DT-Move-vc4-node-contents-to-bcm2708_common..patch
index 3dc05f6..ef74e1e 100644
--- a/target/linux/brcm2708/patches-4.4/0326-BCM270X_DT-Move-vc4-node-contents-to-bcm2708_common..patch
+++ b/target/linux/brcm2708/patches-4.4/0325-BCM270X_DT-Move-vc4-node-contents-to-bcm2708_common..patch
@@ -1,8 +1,7 @@
-From c571a3b93af54fb31cf6125d7a3dfba634b4f099 Mon Sep 17 00:00:00 2001
+From a2d2ac2146d46c29d9fd086c777ca7643eb699db Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 6 May 2016 11:48:35 -0700
-Subject: [PATCH 326/423] BCM270X_DT: Move vc4 node contents to
- bcm2708_common.dtsi.
+Subject: [PATCH] BCM270X_DT: Move vc4 node contents to bcm2708_common.dtsi.
 
 This should clarify what's going on with the overlay: The hardware is
 always present, we're just enabling the DT node so that the vc4 driver
diff --git a/target/linux/brcm2708/patches-4.4/0327-BCM270X_DT-Set-correct-HDMI-HPD-GPIO-levels-for-vari.patch b/target/linux/brcm2708/patches-4.4/0326-BCM270X_DT-Set-correct-HDMI-HPD-GPIO-levels-for-vari.patch
similarity index 89%
rename from target/linux/brcm2708/patches-4.4/0327-BCM270X_DT-Set-correct-HDMI-HPD-GPIO-levels-for-vari.patch
rename to target/linux/brcm2708/patches-4.4/0326-BCM270X_DT-Set-correct-HDMI-HPD-GPIO-levels-for-vari.patch
index e05da8d..f29a4c9 100644
--- a/target/linux/brcm2708/patches-4.4/0327-BCM270X_DT-Set-correct-HDMI-HPD-GPIO-levels-for-vari.patch
+++ b/target/linux/brcm2708/patches-4.4/0326-BCM270X_DT-Set-correct-HDMI-HPD-GPIO-levels-for-vari.patch
@@ -1,8 +1,8 @@
-From da8c5943777182ae813ae0e1332e45ffaec0b7fa Mon Sep 17 00:00:00 2001
+From f8d384eb825833f16db1b410dc7bdb62857bcf54 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 6 May 2016 12:42:26 -0700
-Subject: [PATCH 327/423] BCM270X_DT: Set correct HDMI HPD GPIO levels for
- various boards.
+Subject: [PATCH] BCM270X_DT: Set correct HDMI HPD GPIO levels for various
+ boards.
 
 The CM is left out, because I haven't found a source for how the CM's
 HPD is connected.
diff --git a/target/linux/brcm2708/patches-4.4/0328-Revert-drm-vc4-Force-HDMI-to-connected.patch b/target/linux/brcm2708/patches-4.4/0327-Revert-drm-vc4-Force-HDMI-to-connected.patch
similarity index 85%
rename from target/linux/brcm2708/patches-4.4/0328-Revert-drm-vc4-Force-HDMI-to-connected.patch
rename to target/linux/brcm2708/patches-4.4/0327-Revert-drm-vc4-Force-HDMI-to-connected.patch
index 14beb8a..47b395f 100644
--- a/target/linux/brcm2708/patches-4.4/0328-Revert-drm-vc4-Force-HDMI-to-connected.patch
+++ b/target/linux/brcm2708/patches-4.4/0327-Revert-drm-vc4-Force-HDMI-to-connected.patch
@@ -1,7 +1,7 @@
-From 51ee0bd70a886329018e8d22fda1fe4f360a9ff3 Mon Sep 17 00:00:00 2001
+From bfde336df6d52984f6eef6ad5e4981fe18c0dfcc Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 6 May 2016 12:43:25 -0700
-Subject: [PATCH 328/423] Revert "drm/vc4: Force HDMI to connected."
+Subject: [PATCH] Revert "drm/vc4: Force HDMI to connected."
 
 Now that we have the HDMI HPD GPIOs correctly identified in the DT, we
 should be able to successfully detect HDMI.
diff --git a/target/linux/brcm2708/patches-4.4/0329-BCM270X-Include-DRM_PANEL_SIMPLE-in-the-defconfigs.patch b/target/linux/brcm2708/patches-4.4/0328-BCM270X-Include-DRM_PANEL_SIMPLE-in-the-defconfigs.patch
similarity index 85%
copy from target/linux/brcm2708/patches-4.4/0329-BCM270X-Include-DRM_PANEL_SIMPLE-in-the-defconfigs.patch
copy to target/linux/brcm2708/patches-4.4/0328-BCM270X-Include-DRM_PANEL_SIMPLE-in-the-defconfigs.patch
index cedb9b9..f054521 100644
--- a/target/linux/brcm2708/patches-4.4/0329-BCM270X-Include-DRM_PANEL_SIMPLE-in-the-defconfigs.patch
+++ b/target/linux/brcm2708/patches-4.4/0328-BCM270X-Include-DRM_PANEL_SIMPLE-in-the-defconfigs.patch
@@ -1,7 +1,7 @@
-From 9768eff7323ea9e3b663be5e2850fdf87ddfe13f Mon Sep 17 00:00:00 2001
+From a62182109337f799ee97d1e41fee09be5faa8975 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 6 May 2016 12:59:27 -0700
-Subject: [PATCH 329/423] BCM270X: Include DRM_PANEL_SIMPLE in the defconfigs.
+Subject: [PATCH] BCM270X: Include DRM_PANEL_SIMPLE in the defconfigs.
 
 This is going to be required for the Adafruit DPI panel support.
 
diff --git a/target/linux/brcm2708/patches-4.4/0330-drm-Add-an-encoder-and-connector-type-enum-for-DPI.patch b/target/linux/brcm2708/patches-4.4/0329-drm-Add-an-encoder-and-connector-type-enum-for-DPI.patch
similarity index 94%
rename from target/linux/brcm2708/patches-4.4/0330-drm-Add-an-encoder-and-connector-type-enum-for-DPI.patch
rename to target/linux/brcm2708/patches-4.4/0329-drm-Add-an-encoder-and-connector-type-enum-for-DPI.patch
index 3408097..9e2da1d 100644
--- a/target/linux/brcm2708/patches-4.4/0330-drm-Add-an-encoder-and-connector-type-enum-for-DPI.patch
+++ b/target/linux/brcm2708/patches-4.4/0329-drm-Add-an-encoder-and-connector-type-enum-for-DPI.patch
@@ -1,7 +1,7 @@
-From 72a4218cce198ffd0a920c98856f1dfecdfac9c9 Mon Sep 17 00:00:00 2001
+From 870639e585709adc65183d75619fc01e35adb774 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 18 Mar 2016 12:34:59 -0700
-Subject: [PATCH 330/423] drm: Add an encoder and connector type enum for DPI.
+Subject: [PATCH] drm: Add an encoder and connector type enum for DPI.
 
 Right now exynos is exposing DPI as a TMDS encoder and VGA connector,
 which seems rather misleading.  This isn't just an internal detail,
diff --git a/target/linux/brcm2708/patches-4.4/0331-dt-bindings-Add-binding-docs-for-V3D.patch b/target/linux/brcm2708/patches-4.4/0330-dt-bindings-Add-binding-docs-for-V3D.patch
similarity index 90%
rename from target/linux/brcm2708/patches-4.4/0331-dt-bindings-Add-binding-docs-for-V3D.patch
rename to target/linux/brcm2708/patches-4.4/0330-dt-bindings-Add-binding-docs-for-V3D.patch
index c46c843..cb1fae5 100644
--- a/target/linux/brcm2708/patches-4.4/0331-dt-bindings-Add-binding-docs-for-V3D.patch
+++ b/target/linux/brcm2708/patches-4.4/0330-dt-bindings-Add-binding-docs-for-V3D.patch
@@ -1,7 +1,7 @@
-From f0be0cb1bc970ddc67e9194d4d6ca5a3a18cd903 Mon Sep 17 00:00:00 2001
+From eb2044830badaa2cc277e21920c4d401dde554cd Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 4 Mar 2016 12:32:06 -0800
-Subject: [PATCH 331/423] dt-bindings: Add binding docs for V3D.
+Subject: [PATCH] dt-bindings: Add binding docs for V3D.
 
 This was missed in the upstreaming process.
 
diff --git a/target/linux/brcm2708/patches-4.4/0332-drm-vc4-Add-DPI-driver.patch b/target/linux/brcm2708/patches-4.4/0331-drm-vc4-Add-DPI-driver.patch
similarity index 99%
rename from target/linux/brcm2708/patches-4.4/0332-drm-vc4-Add-DPI-driver.patch
rename to target/linux/brcm2708/patches-4.4/0331-drm-vc4-Add-DPI-driver.patch
index d05c27e..671c9b2 100644
--- a/target/linux/brcm2708/patches-4.4/0332-drm-vc4-Add-DPI-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0331-drm-vc4-Add-DPI-driver.patch
@@ -1,7 +1,7 @@
-From dca9cac2b454a88889adc7befac74090612576ef Mon Sep 17 00:00:00 2001
+From fe826daeea975dcf3ce3fca6e8a0850e5761f602 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Wed, 10 Feb 2016 11:42:32 -0800
-Subject: [PATCH 332/423] drm/vc4: Add DPI driver
+Subject: [PATCH] drm/vc4: Add DPI driver
 
 The DPI interface involves taking a ton of our GPIOs to be used as
 outputs, and routing display signals over them in parallel.
diff --git a/target/linux/brcm2708/patches-4.4/0333-drm-vc4-Fix-NULL-deref-in-HDMI-init-error-path.patch b/target/linux/brcm2708/patches-4.4/0332-drm-vc4-Fix-NULL-deref-in-HDMI-init-error-path.patch
similarity index 82%
rename from target/linux/brcm2708/patches-4.4/0333-drm-vc4-Fix-NULL-deref-in-HDMI-init-error-path.patch
rename to target/linux/brcm2708/patches-4.4/0332-drm-vc4-Fix-NULL-deref-in-HDMI-init-error-path.patch
index cf7a647..e702146 100644
--- a/target/linux/brcm2708/patches-4.4/0333-drm-vc4-Fix-NULL-deref-in-HDMI-init-error-path.patch
+++ b/target/linux/brcm2708/patches-4.4/0332-drm-vc4-Fix-NULL-deref-in-HDMI-init-error-path.patch
@@ -1,7 +1,7 @@
-From 1d72ad4fa3c57879ab677f66ce957a093eeb577c Mon Sep 17 00:00:00 2001
+From 69def03fa1b25514d142397748522e1f88b325cb Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 4 Apr 2016 14:25:59 -0700
-Subject: [PATCH 333/423] drm/vc4: Fix NULL deref in HDMI init error path
+Subject: [PATCH] drm/vc4: Fix NULL deref in HDMI init error path
 
 If you make it here other than through err_destroy_encoder, vc4->hdmi
 is still NULL.
diff --git a/target/linux/brcm2708/patches-4.4/0334-drm-vc4-Kick-out-the-simplefb-framebuffer-before-we-.patch b/target/linux/brcm2708/patches-4.4/0333-drm-vc4-Kick-out-the-simplefb-framebuffer-before-we-.patch
similarity index 89%
rename from target/linux/brcm2708/patches-4.4/0334-drm-vc4-Kick-out-the-simplefb-framebuffer-before-we-.patch
rename to target/linux/brcm2708/patches-4.4/0333-drm-vc4-Kick-out-the-simplefb-framebuffer-before-we-.patch
index f42eb5b..8347338 100644
--- a/target/linux/brcm2708/patches-4.4/0334-drm-vc4-Kick-out-the-simplefb-framebuffer-before-we-.patch
+++ b/target/linux/brcm2708/patches-4.4/0333-drm-vc4-Kick-out-the-simplefb-framebuffer-before-we-.patch
@@ -1,8 +1,8 @@
-From d8bb97aba2a3d6c946b7c176370a71d117dee52c Mon Sep 17 00:00:00 2001
+From 8fde5a249d84674a92b4732def88cbc47f2bb530 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 19 Apr 2016 13:24:14 -0700
-Subject: [PATCH 334/423] drm/vc4: Kick out the simplefb framebuffer before we
- set up KMS.
+Subject: [PATCH] drm/vc4: Kick out the simplefb framebuffer before we set up
+ KMS.
 
 If we don't, then simplefb stays loaded on /dev/fb0 even though
 scanout isn't happening from simplefb's memory area any more, and you
diff --git a/target/linux/brcm2708/patches-4.4/0335-drm-vc4-Rename-async-to-nonblock.patch b/target/linux/brcm2708/patches-4.4/0334-drm-vc4-Rename-async-to-nonblock.patch
similarity index 92%
rename from target/linux/brcm2708/patches-4.4/0335-drm-vc4-Rename-async-to-nonblock.patch
rename to target/linux/brcm2708/patches-4.4/0334-drm-vc4-Rename-async-to-nonblock.patch
index 572a5b3..698dd34 100644
--- a/target/linux/brcm2708/patches-4.4/0335-drm-vc4-Rename-async-to-nonblock.patch
+++ b/target/linux/brcm2708/patches-4.4/0334-drm-vc4-Rename-async-to-nonblock.patch
@@ -1,7 +1,7 @@
-From fadf429b758f5a3b6122d73fd1f8551a5f21cf3c Mon Sep 17 00:00:00 2001
+From db48b84381e9cc7c4cc559bad3e5210db3b13c4e Mon Sep 17 00:00:00 2001
 From: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
 Date: Tue, 26 Apr 2016 16:11:44 +0200
-Subject: [PATCH 335/423] drm/vc4: Rename async to nonblock.
+Subject: [PATCH] drm/vc4: Rename async to nonblock.
 
 The async name is deprecated and should be changed to nonblocking.
 
diff --git a/target/linux/brcm2708/patches-4.4/0336-drm-vc4-Add-support-for-gamma-ramps.patch b/target/linux/brcm2708/patches-4.4/0335-drm-vc4-Add-support-for-gamma-ramps.patch
similarity index 97%
rename from target/linux/brcm2708/patches-4.4/0336-drm-vc4-Add-support-for-gamma-ramps.patch
rename to target/linux/brcm2708/patches-4.4/0335-drm-vc4-Add-support-for-gamma-ramps.patch
index fe0567c..9168f20 100644
--- a/target/linux/brcm2708/patches-4.4/0336-drm-vc4-Add-support-for-gamma-ramps.patch
+++ b/target/linux/brcm2708/patches-4.4/0335-drm-vc4-Add-support-for-gamma-ramps.patch
@@ -1,7 +1,7 @@
-From ad9de9ffedcbcc35c4fe13cddabda66abc98e3ef Mon Sep 17 00:00:00 2001
+From 16c6164e2046f7b7bce7c1e028a2f938545f5401 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Thu, 31 Mar 2016 18:38:20 -0700
-Subject: [PATCH 336/423] drm/vc4: Add support for gamma ramps.
+Subject: [PATCH] drm/vc4: Add support for gamma ramps.
 
 We could possibly save a bit of power by not requesting gamma
 conversion when the ramp happens to be 1:1, but at least if all the
diff --git a/target/linux/brcm2708/patches-4.4/0337-drm-vc4-Add-missing-render-node-support.patch b/target/linux/brcm2708/patches-4.4/0336-drm-vc4-Add-missing-render-node-support.patch
similarity index 85%
rename from target/linux/brcm2708/patches-4.4/0337-drm-vc4-Add-missing-render-node-support.patch
rename to target/linux/brcm2708/patches-4.4/0336-drm-vc4-Add-missing-render-node-support.patch
index a33df8f..e5dd1ae 100644
--- a/target/linux/brcm2708/patches-4.4/0337-drm-vc4-Add-missing-render-node-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0336-drm-vc4-Add-missing-render-node-support.patch
@@ -1,7 +1,7 @@
-From 889865acbf4ea68d241448cf413d8667b8abf312 Mon Sep 17 00:00:00 2001
+From cb3e6f502adebcbddfe15a3479c3e48305717f46 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Thu, 14 Apr 2016 23:16:05 -0700
-Subject: [PATCH 337/423] drm/vc4: Add missing render node support
+Subject: [PATCH] drm/vc4: Add missing render node support
 
 There shouldn't be any other driver support necessary, since none of
 the driver-specific ioctls ever required auth, and none of them deal
diff --git a/target/linux/brcm2708/patches-4.4/0338-drm-panel-simple-Add-the-7-DPI-panel-from-Adafruit.patch b/target/linux/brcm2708/patches-4.4/0337-drm-panel-simple-Add-the-7-DPI-panel-from-Adafruit.patch
similarity index 94%
rename from target/linux/brcm2708/patches-4.4/0338-drm-panel-simple-Add-the-7-DPI-panel-from-Adafruit.patch
rename to target/linux/brcm2708/patches-4.4/0337-drm-panel-simple-Add-the-7-DPI-panel-from-Adafruit.patch
index 0b836da..c62a621 100644
--- a/target/linux/brcm2708/patches-4.4/0338-drm-panel-simple-Add-the-7-DPI-panel-from-Adafruit.patch
+++ b/target/linux/brcm2708/patches-4.4/0337-drm-panel-simple-Add-the-7-DPI-panel-from-Adafruit.patch
@@ -1,7 +1,7 @@
-From 0445e26913d81b7e6cde6202d969e59f25d08fd2 Mon Sep 17 00:00:00 2001
+From 59c699fe982aa0df961465654c4d87d109b127e6 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Thu, 24 Mar 2016 17:23:48 -0700
-Subject: [PATCH 338/423] drm/panel: simple: Add the 7" DPI panel from Adafruit
+Subject: [PATCH] drm/panel: simple: Add the 7" DPI panel from Adafruit
 
 This is a basic TFT panel with a 40-pin FPC connector on it.  The
 specification doesn't define timings, but the Adafruit instructions
diff --git a/target/linux/brcm2708/patches-4.4/0339-BCM270X_DT-Add-the-disabled-by-default-DPI-device-no.patch b/target/linux/brcm2708/patches-4.4/0338-BCM270X_DT-Add-the-disabled-by-default-DPI-device-no.patch
similarity index 85%
rename from target/linux/brcm2708/patches-4.4/0339-BCM270X_DT-Add-the-disabled-by-default-DPI-device-no.patch
rename to target/linux/brcm2708/patches-4.4/0338-BCM270X_DT-Add-the-disabled-by-default-DPI-device-no.patch
index 6552186..fdb3f31 100644
--- a/target/linux/brcm2708/patches-4.4/0339-BCM270X_DT-Add-the-disabled-by-default-DPI-device-no.patch
+++ b/target/linux/brcm2708/patches-4.4/0338-BCM270X_DT-Add-the-disabled-by-default-DPI-device-no.patch
@@ -1,8 +1,7 @@
-From 2f2c9d21a772c179638bdcf660ca4559d189c3f4 Mon Sep 17 00:00:00 2001
+From 55387e0dc0e0982f62b1131e79a86e655dcfb3f4 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 6 May 2016 13:18:09 -0700
-Subject: [PATCH 339/423] BCM270X_DT: Add the disabled-by-default DPI device
- node.
+Subject: [PATCH] BCM270X_DT: Add the disabled-by-default DPI device node.
 
 This will be enabled and connected to a particular panel by DT
 overlays.
diff --git a/target/linux/brcm2708/patches-4.4/0340-drm-vc4-Fix-get_vblank_counter-with-proper-no-op-for.patch b/target/linux/brcm2708/patches-4.4/0339-drm-vc4-Fix-get_vblank_counter-with-proper-no-op-for.patch
similarity index 86%
rename from target/linux/brcm2708/patches-4.4/0340-drm-vc4-Fix-get_vblank_counter-with-proper-no-op-for.patch
rename to target/linux/brcm2708/patches-4.4/0339-drm-vc4-Fix-get_vblank_counter-with-proper-no-op-for.patch
index ec172d0..031c328 100644
--- a/target/linux/brcm2708/patches-4.4/0340-drm-vc4-Fix-get_vblank_counter-with-proper-no-op-for.patch
+++ b/target/linux/brcm2708/patches-4.4/0339-drm-vc4-Fix-get_vblank_counter-with-proper-no-op-for.patch
@@ -1,8 +1,8 @@
-From 41a242de6e06a106399d2c713dc4114da3532d22 Mon Sep 17 00:00:00 2001
+From 9684d1176621e7edee8475dbd3ad186591898b21 Mon Sep 17 00:00:00 2001
 From: Mario Kleiner <mario.kleiner.de at gmail.com>
 Date: Fri, 6 May 2016 19:26:05 +0200
-Subject: [PATCH 340/423] drm/vc4: Fix get_vblank_counter with proper no-op for
- Linux 4.4+
+Subject: [PATCH] drm/vc4: Fix get_vblank_counter with proper no-op for Linux
+ 4.4+
 
 get_vblank_counter hooked up to drm_vblank_count() which alway was
 non-sensical but didn't hurt in the past. Since Linux 4.4 it
diff --git a/target/linux/brcm2708/patches-4.4/0341-drm-vc4-Fix-drm_vblank_put-get-imbalance-in-page-fli.patch b/target/linux/brcm2708/patches-4.4/0340-drm-vc4-Fix-drm_vblank_put-get-imbalance-in-page-fli.patch
similarity index 90%
rename from target/linux/brcm2708/patches-4.4/0341-drm-vc4-Fix-drm_vblank_put-get-imbalance-in-page-fli.patch
rename to target/linux/brcm2708/patches-4.4/0340-drm-vc4-Fix-drm_vblank_put-get-imbalance-in-page-fli.patch
index 77a8f07..616ff43 100644
--- a/target/linux/brcm2708/patches-4.4/0341-drm-vc4-Fix-drm_vblank_put-get-imbalance-in-page-fli.patch
+++ b/target/linux/brcm2708/patches-4.4/0340-drm-vc4-Fix-drm_vblank_put-get-imbalance-in-page-fli.patch
@@ -1,8 +1,7 @@
-From 4f9f74feec3951986a22aff184d0fa6fb7a47b93 Mon Sep 17 00:00:00 2001
+From bd3aef6d9474fbb9fe063a2f409f920263c28ff1 Mon Sep 17 00:00:00 2001
 From: Mario Kleiner <mario.kleiner.de at gmail.com>
 Date: Fri, 6 May 2016 19:26:06 +0200
-Subject: [PATCH 341/423] drm/vc4: Fix drm_vblank_put/get imbalance in page
- flip path.
+Subject: [PATCH] drm/vc4: Fix drm_vblank_put/get imbalance in page flip path.
 
 The async page flip path was missing drm_crtc_vblank_get/put
 completely. The sync flip path was missing a vblank put, so async
diff --git a/target/linux/brcm2708/patches-4.4/0342-BCM270X_DT-Add-umbrella-I2C-Mux-overlay-i2c-mux.patch b/target/linux/brcm2708/patches-4.4/0341-BCM270X_DT-Add-umbrella-I2C-Mux-overlay-i2c-mux.patch
similarity index 97%
rename from target/linux/brcm2708/patches-4.4/0342-BCM270X_DT-Add-umbrella-I2C-Mux-overlay-i2c-mux.patch
rename to target/linux/brcm2708/patches-4.4/0341-BCM270X_DT-Add-umbrella-I2C-Mux-overlay-i2c-mux.patch
index ce65c6c..363f0c8 100644
--- a/target/linux/brcm2708/patches-4.4/0342-BCM270X_DT-Add-umbrella-I2C-Mux-overlay-i2c-mux.patch
+++ b/target/linux/brcm2708/patches-4.4/0341-BCM270X_DT-Add-umbrella-I2C-Mux-overlay-i2c-mux.patch
@@ -1,7 +1,7 @@
-From 347b13e71792301011d09442c6150d6aec8d89e0 Mon Sep 17 00:00:00 2001
+From ee32bb475a3986f961466e00f5ed0bc1fb708699 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 11 May 2016 15:38:04 +0100
-Subject: [PATCH 342/423] BCM270X_DT: Add umbrella I2C Mux overlay i2c-mux
+Subject: [PATCH] BCM270X_DT: Add umbrella I2C Mux overlay i2c-mux
 
 This overlay supports a range of I2C multiplexers - PCA9542 (2 ports),
 PCA9545 (4 ports) and PCA9548 (8 ports).
diff --git a/target/linux/brcm2708/patches-4.4/0343-BCM270X_DT-Include-address-override-for-pca9542.patch b/target/linux/brcm2708/patches-4.4/0342-BCM270X_DT-Include-address-override-for-pca9542.patch
similarity index 81%
rename from target/linux/brcm2708/patches-4.4/0343-BCM270X_DT-Include-address-override-for-pca9542.patch
rename to target/linux/brcm2708/patches-4.4/0342-BCM270X_DT-Include-address-override-for-pca9542.patch
index c5b7d1a..877d347 100644
--- a/target/linux/brcm2708/patches-4.4/0343-BCM270X_DT-Include-address-override-for-pca9542.patch
+++ b/target/linux/brcm2708/patches-4.4/0342-BCM270X_DT-Include-address-override-for-pca9542.patch
@@ -1,7 +1,7 @@
-From d800efe9cfbd2da1f1ee88196a34447ff7fa7461 Mon Sep 17 00:00:00 2001
+From 4ba99a9cdd73c1e8f24ac981a7d7af3f440de4f6 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 12 May 2016 08:52:06 +0100
-Subject: [PATCH 343/423] BCM270X_DT: Include address override for pca9542
+Subject: [PATCH] BCM270X_DT: Include address override for pca9542
 
 Omitted from "BCM270X_DT: Add umbrella I2C Mux overlay i2c-mux".
 
diff --git a/target/linux/brcm2708/patches-4.4/0344-BCM270X_DT-Fix-the-tinylcd35-overlay-RTC-support.patch b/target/linux/brcm2708/patches-4.4/0343-BCM270X_DT-Fix-the-tinylcd35-overlay-RTC-support.patch
similarity index 92%
rename from target/linux/brcm2708/patches-4.4/0344-BCM270X_DT-Fix-the-tinylcd35-overlay-RTC-support.patch
rename to target/linux/brcm2708/patches-4.4/0343-BCM270X_DT-Fix-the-tinylcd35-overlay-RTC-support.patch
index 6127769..cb6f460 100644
--- a/target/linux/brcm2708/patches-4.4/0344-BCM270X_DT-Fix-the-tinylcd35-overlay-RTC-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0343-BCM270X_DT-Fix-the-tinylcd35-overlay-RTC-support.patch
@@ -1,7 +1,7 @@
-From 9812988c5073448717f74b5bf9aae9da029fb530 Mon Sep 17 00:00:00 2001
+From f2bdc9fa776b22616cb5ec64ae1d027b8c4ca721 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 12 May 2016 09:04:20 +0100
-Subject: [PATCH 344/423] BCM270X_DT: Fix the tinylcd35 overlay RTC support
+Subject: [PATCH] BCM270X_DT: Fix the tinylcd35 overlay RTC support
 
 Now that overlay parameters are applied before the merge (a requirement
 for kernel runtime overlays) it is illegal for parameters/overrides to
diff --git a/target/linux/brcm2708/patches-4.4/0345-clk-Allow-clocks-to-be-marked-as-CRITICAL.patch b/target/linux/brcm2708/patches-4.4/0344-clk-Allow-clocks-to-be-marked-as-CRITICAL.patch
similarity index 91%
rename from target/linux/brcm2708/patches-4.4/0345-clk-Allow-clocks-to-be-marked-as-CRITICAL.patch
rename to target/linux/brcm2708/patches-4.4/0344-clk-Allow-clocks-to-be-marked-as-CRITICAL.patch
index 04ccb70..ca69a6d 100644
--- a/target/linux/brcm2708/patches-4.4/0345-clk-Allow-clocks-to-be-marked-as-CRITICAL.patch
+++ b/target/linux/brcm2708/patches-4.4/0344-clk-Allow-clocks-to-be-marked-as-CRITICAL.patch
@@ -1,7 +1,7 @@
-From 3832bdcd51bcc95305c6ee0b381ae664d0516ce5 Mon Sep 17 00:00:00 2001
+From f782ae472861f096fb8b349c3775fbce6316826e Mon Sep 17 00:00:00 2001
 From: Lee Jones <lee.jones at linaro.org>
 Date: Thu, 11 Feb 2016 13:19:09 -0800
-Subject: [PATCH 345/423] clk: Allow clocks to be marked as CRITICAL
+Subject: [PATCH] clk: Allow clocks to be marked as CRITICAL
 
 Critical clocks are those which must not be gated, else undefined
 or catastrophic failure would occur.  Here we have chosen to
diff --git a/target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch b/target/linux/brcm2708/patches-4.4/0345-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch
similarity index 90%
rename from target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch
rename to target/linux/brcm2708/patches-4.4/0345-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch
index 5e5c028..92b9501 100644
--- a/target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch
+++ b/target/linux/brcm2708/patches-4.4/0345-clk-bcm2835-Mark-the-VPU-clock-as-critical.patch
@@ -1,7 +1,7 @@
-From 644a5704bc14bbdea57fabeed0a5f2eb4e8f7251 Mon Sep 17 00:00:00 2001
+From 9f73459ac27903bb52d831db29cb70a95189fdba Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 26 Apr 2016 11:44:59 -0700
-Subject: [PATCH 346/423] clk: bcm2835: Mark the VPU clock as critical
+Subject: [PATCH] clk: bcm2835: Mark the VPU clock as critical
 
 The VPU clock is also the clock for our AXI bus, so we really can't
 disable it.  This might have happened during boot if, for example,
diff --git a/target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch b/target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
similarity index 91%
rename from target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
rename to target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
index 16e753e..60e4dd9 100644
--- a/target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
+++ b/target/linux/brcm2708/patches-4.4/0346-clk-bcm2835-Mark-GPIO-clocks-enabled-at-boot-as-crit.patch
@@ -1,8 +1,7 @@
-From 9a5319c6915364018e9422b6cef7e63a011b8b57 Mon Sep 17 00:00:00 2001
+From 832d2f1df231073ac72474743e3d3adbf0540030 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Mon, 9 May 2016 17:28:18 -0700
-Subject: [PATCH 347/423] clk: bcm2835: Mark GPIO clocks enabled at boot as
- critical.
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0348-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch b/target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch
similarity index 93%
rename from target/linux/brcm2708/patches-4.4/0348-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch
rename to target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch
index f9b84cc..cc90841 100644
--- a/target/linux/brcm2708/patches-4.4/0348-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch
+++ b/target/linux/brcm2708/patches-4.4/0347-clk-bcm2835-Skip-PLLC-clocks-when-deciding-on-a-new-.patch
@@ -1,8 +1,8 @@
-From 58d35c928d3fad63627f4bd84126746a08e6ff6c Mon Sep 17 00:00:00 2001
+From 960587a39d7ca3d5279841218b42e008df7194aa Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Tue, 26 Apr 2016 12:39:45 -0700
-Subject: [PATCH 348/423] clk: bcm2835: Skip PLLC clocks when deciding on a new
- clock parent
+Subject: [PATCH] clk: bcm2835: Skip PLLC clocks when deciding on a new clock
+ parent
 
 If the firmware had set up a clock to source from PLLC, go along with
 it.  But if we're looking for a new parent, we don't want to switch it
diff --git a/target/linux/brcm2708/patches-4.4/0349-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch b/target/linux/brcm2708/patches-4.4/0348-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch
similarity index 92%
rename from target/linux/brcm2708/patches-4.4/0349-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch
rename to target/linux/brcm2708/patches-4.4/0348-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch
index 0058e8a..852f47b 100644
--- a/target/linux/brcm2708/patches-4.4/0349-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch
+++ b/target/linux/brcm2708/patches-4.4/0348-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch
@@ -1,7 +1,7 @@
-From efba060602bfb54eb1106972360df001bb88ae3b Mon Sep 17 00:00:00 2001
+From 8b01bab8c89fd4930ad304b5a7b3c1f6016c3743 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 11 May 2016 12:50:33 +0100
-Subject: [PATCH 349/423] mmc: Add MMC_QUIRK_ERASE_BROKEN for some cards
+Subject: [PATCH] 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,
diff --git a/target/linux/brcm2708/patches-4.4/0350-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch b/target/linux/brcm2708/patches-4.4/0349-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch
similarity index 98%
rename from target/linux/brcm2708/patches-4.4/0350-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch
rename to target/linux/brcm2708/patches-4.4/0349-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch
index f9f0600..c29bd86 100644
--- a/target/linux/brcm2708/patches-4.4/0350-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch
+++ b/target/linux/brcm2708/patches-4.4/0349-New-AudioInjector.net-Pi-soundcard-with-low-jitter-a.patch
@@ -1,8 +1,8 @@
-From ea3e9f892437a7afc78ac04e899fa35c155f198e Mon Sep 17 00:00:00 2001
+From ae776ef7eb34d99945aadbaa607e1aec66fd04d0 Mon Sep 17 00:00:00 2001
 From: Matt Flax <flatmax at flatmax.org>
 Date: Mon, 16 May 2016 21:36:31 +1000
-Subject: [PATCH 350/423] New AudioInjector.net Pi soundcard with low jitter
- audio in and out.
+Subject: [PATCH] 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.
diff --git a/target/linux/brcm2708/patches-4.4/0351-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch b/target/linux/brcm2708/patches-4.4/0350-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch
similarity index 81%
rename from target/linux/brcm2708/patches-4.4/0351-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch
rename to target/linux/brcm2708/patches-4.4/0350-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch
index 299fdf5..c75fca6 100644
--- a/target/linux/brcm2708/patches-4.4/0351-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch
+++ b/target/linux/brcm2708/patches-4.4/0350-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch
@@ -1,7 +1,7 @@
-From 4742aa31f93ae7d222d2564b2258a16fd297659e Mon Sep 17 00:00:00 2001
+From 2aa9602cca746c3bd2fe664574234adb147e4ba7 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 19 May 2016 14:40:28 +0100
-Subject: [PATCH 351/423] mmc: Apply QUIRK_BROKEN_ERASE to other capacities
+Subject: [PATCH] mmc: Apply QUIRK_BROKEN_ERASE to other capacities
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0353-mmc-Add-card_quirks-module-parameter-log-quirks.patch b/target/linux/brcm2708/patches-4.4/0352-mmc-Add-card_quirks-module-parameter-log-quirks.patch
similarity index 94%
rename from target/linux/brcm2708/patches-4.4/0353-mmc-Add-card_quirks-module-parameter-log-quirks.patch
rename to target/linux/brcm2708/patches-4.4/0352-mmc-Add-card_quirks-module-parameter-log-quirks.patch
index 4a9a51a..97fe268 100644
--- a/target/linux/brcm2708/patches-4.4/0353-mmc-Add-card_quirks-module-parameter-log-quirks.patch
+++ b/target/linux/brcm2708/patches-4.4/0352-mmc-Add-card_quirks-module-parameter-log-quirks.patch
@@ -1,7 +1,7 @@
-From 2c0da5702844c4ec246243634778bd3448100570 Mon Sep 17 00:00:00 2001
+From 2b859a1735c3113756c172ab8113f3f764c49c38 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 20 May 2016 10:11:43 +0100
-Subject: [PATCH 353/423] mmc: Add card_quirks module parameter, log quirks
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0354-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch b/target/linux/brcm2708/patches-4.4/0353-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch
similarity index 90%
rename from target/linux/brcm2708/patches-4.4/0354-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch
rename to target/linux/brcm2708/patches-4.4/0353-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch
index 49d7b33..1c6c5c9 100644
--- a/target/linux/brcm2708/patches-4.4/0354-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch
+++ b/target/linux/brcm2708/patches-4.4/0353-rtc-ds1307-ensure-that-any-pending-alarm-is-cleared-.patch
@@ -1,8 +1,8 @@
-From 82be650e97522260a9694ae56dc3475f40c4240e Mon Sep 17 00:00:00 2001
+From dab463aa0dbd5ac45403dade2723046eba214359 Mon Sep 17 00:00:00 2001
 From: Nicolas Boullis <nboullis at debian.org>
 Date: Sun, 10 Apr 2016 13:23:05 +0200
-Subject: [PATCH 354/423] rtc: ds1307: ensure that any pending alarm is cleared
- before a new alarm is enabled
+Subject: [PATCH] rtc: ds1307: ensure that any pending alarm is cleared before
+ a new alarm is enabled
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0355-Revert-Revert-drm-vc4-Force-HDMI-to-connected.patch b/target/linux/brcm2708/patches-4.4/0354-Revert-Revert-drm-vc4-Force-HDMI-to-connected.patch
similarity index 85%
rename from target/linux/brcm2708/patches-4.4/0355-Revert-Revert-drm-vc4-Force-HDMI-to-connected.patch
rename to target/linux/brcm2708/patches-4.4/0354-Revert-Revert-drm-vc4-Force-HDMI-to-connected.patch
index 3d2f489..6770f91 100644
--- a/target/linux/brcm2708/patches-4.4/0355-Revert-Revert-drm-vc4-Force-HDMI-to-connected.patch
+++ b/target/linux/brcm2708/patches-4.4/0354-Revert-Revert-drm-vc4-Force-HDMI-to-connected.patch
@@ -1,7 +1,7 @@
-From e1240073ba4bb5f845edc69437d2b638678332f9 Mon Sep 17 00:00:00 2001
+From 01f818eabe959b1d58ad3ef41310e1210b04a9b0 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Mon, 23 May 2016 17:06:08 +0100
-Subject: [PATCH 355/423] Revert "Revert "drm/vc4: Force HDMI to connected.""
+Subject: [PATCH] Revert "Revert "drm/vc4: Force HDMI to connected.""
 
 This reverts commit 7da44d06540b4a191ecc74e943f3203577fce0df.
 
diff --git a/target/linux/brcm2708/patches-4.4/0356-config-Add-NF_MATCH_RPFILTER.patch b/target/linux/brcm2708/patches-4.4/0355-config-Add-NF_MATCH_RPFILTER.patch
similarity index 91%
rename from target/linux/brcm2708/patches-4.4/0356-config-Add-NF_MATCH_RPFILTER.patch
rename to target/linux/brcm2708/patches-4.4/0355-config-Add-NF_MATCH_RPFILTER.patch
index 1bc3d85..530ad49 100644
--- a/target/linux/brcm2708/patches-4.4/0356-config-Add-NF_MATCH_RPFILTER.patch
+++ b/target/linux/brcm2708/patches-4.4/0355-config-Add-NF_MATCH_RPFILTER.patch
@@ -1,7 +1,7 @@
-From 7c64de28d0552c8240cf79b934b069dd9af24b14 Mon Sep 17 00:00:00 2001
+From 42af2a4e065f71af6505ba6159073a2da28bcc2f Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Mon, 23 May 2016 18:22:52 +0100
-Subject: [PATCH 356/423] config: Add NF_MATCH_RPFILTER
+Subject: [PATCH] config: Add NF_MATCH_RPFILTER
 
 ---
  arch/arm/configs/bcm2709_defconfig | 2 ++
diff --git a/target/linux/brcm2708/patches-4.4/0357-Added-Overlay-for-Microchip-MCP23017-I2C-gpio-expand.patch b/target/linux/brcm2708/patches-4.4/0356-Added-Overlay-for-Microchip-MCP23017-I2C-gpio-expand.patch
similarity index 93%
rename from target/linux/brcm2708/patches-4.4/0357-Added-Overlay-for-Microchip-MCP23017-I2C-gpio-expand.patch
rename to target/linux/brcm2708/patches-4.4/0356-Added-Overlay-for-Microchip-MCP23017-I2C-gpio-expand.patch
index 35eb321..1221839 100644
--- a/target/linux/brcm2708/patches-4.4/0357-Added-Overlay-for-Microchip-MCP23017-I2C-gpio-expand.patch
+++ b/target/linux/brcm2708/patches-4.4/0356-Added-Overlay-for-Microchip-MCP23017-I2C-gpio-expand.patch
@@ -1,8 +1,7 @@
-From d4011a19f3e6a9c6696f0d5498df9c17a1ba2fb3 Mon Sep 17 00:00:00 2001
+From 40609ec9a60194b9f04cf5ee4fbc4ee5a011a7ea Mon Sep 17 00:00:00 2001
 From: Michael Kaplan <m.kaplan at evva.com>
 Date: Tue, 24 May 2016 10:19:08 +0200
-Subject: [PATCH 357/423] Added Overlay for Microchip MCP23017 I2C gpio
- expander
+Subject: [PATCH] Added Overlay for Microchip MCP23017 I2C gpio expander
 
 ---
  arch/arm/boot/dts/overlays/README               |  9 +++++
diff --git a/target/linux/brcm2708/patches-4.4/0364-bcm2835-camera-Fix-max-min-error-when-looping-over-c.patch b/target/linux/brcm2708/patches-4.4/0363-bcm2835-camera-Fix-max-min-error-when-looping-over-c.patch
similarity index 84%
rename from target/linux/brcm2708/patches-4.4/0364-bcm2835-camera-Fix-max-min-error-when-looping-over-c.patch
rename to target/linux/brcm2708/patches-4.4/0363-bcm2835-camera-Fix-max-min-error-when-looping-over-c.patch
index ba29be2..df6fd7e 100644
--- a/target/linux/brcm2708/patches-4.4/0364-bcm2835-camera-Fix-max-min-error-when-looping-over-c.patch
+++ b/target/linux/brcm2708/patches-4.4/0363-bcm2835-camera-Fix-max-min-error-when-looping-over-c.patch
@@ -1,7 +1,7 @@
-From d832db5de5893d3d6020a9d3e32aa4cd80490cc9 Mon Sep 17 00:00:00 2001
+From bc431816b3277e61807a3c279ae8fe11b1599f67 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 24 May 2016 16:20:09 +0100
-Subject: [PATCH 364/423] bcm2835-camera: Fix max/min error when looping over
+Subject: [PATCH] bcm2835-camera: Fix max/min error when looping over
  cameras/resolutions
 
 See: https://github.com/raspberrypi/linux/issues/1447#issuecomment-221303506
diff --git a/target/linux/brcm2708/patches-4.4/0365-Change-BoomBerry-name-to-JustBoom-in-all-locations-d.patch b/target/linux/brcm2708/patches-4.4/0364-Change-BoomBerry-name-to-JustBoom-in-all-locations-d.patch
similarity index 99%
rename from target/linux/brcm2708/patches-4.4/0365-Change-BoomBerry-name-to-JustBoom-in-all-locations-d.patch
rename to target/linux/brcm2708/patches-4.4/0364-Change-BoomBerry-name-to-JustBoom-in-all-locations-d.patch
index faf982f..7593544 100644
--- a/target/linux/brcm2708/patches-4.4/0365-Change-BoomBerry-name-to-JustBoom-in-all-locations-d.patch
+++ b/target/linux/brcm2708/patches-4.4/0364-Change-BoomBerry-name-to-JustBoom-in-all-locations-d.patch
@@ -1,8 +1,8 @@
-From 648226e081795be9ebaad2dc14bf768ba785f277 Mon Sep 17 00:00:00 2001
+From 027817e4c01f900824dde9932e1e3fb32575bc9f Mon Sep 17 00:00:00 2001
 From: Aaron Shaw <shawaj at gmail.com>
 Date: Thu, 26 May 2016 23:37:11 +0100
-Subject: [PATCH 365/423] Change BoomBerry name to JustBoom in all locations
- due to legal challenge
+Subject: [PATCH] Change BoomBerry name to JustBoom in all locations due to
+ legal challenge
 
 ---
  arch/arm/boot/dts/overlays/Makefile                |   4 +-
diff --git a/target/linux/brcm2708/patches-4.4/0369-Add-dt-param-to-force-HiFiBerry-DAC-Pro-into-slave-m.patch b/target/linux/brcm2708/patches-4.4/0368-Add-dt-param-to-force-HiFiBerry-DAC-Pro-into-slave-m.patch
similarity index 95%
rename from target/linux/brcm2708/patches-4.4/0369-Add-dt-param-to-force-HiFiBerry-DAC-Pro-into-slave-m.patch
rename to target/linux/brcm2708/patches-4.4/0368-Add-dt-param-to-force-HiFiBerry-DAC-Pro-into-slave-m.patch
index 920199f..11019f2 100644
--- a/target/linux/brcm2708/patches-4.4/0369-Add-dt-param-to-force-HiFiBerry-DAC-Pro-into-slave-m.patch
+++ b/target/linux/brcm2708/patches-4.4/0368-Add-dt-param-to-force-HiFiBerry-DAC-Pro-into-slave-m.patch
@@ -1,8 +1,7 @@
-From e4183dfba92b3adf88a9be7e073cf80c5bda2c69 Mon Sep 17 00:00:00 2001
+From 23a2a66f68d9cef1664e904b741e074dab5b82d6 Mon Sep 17 00:00:00 2001
 From: DigitalDreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Sun, 29 May 2016 05:22:29 +0100
-Subject: [PATCH 369/423] Add dt param to force HiFiBerry DAC+ Pro into slave
- mode
+Subject: [PATCH] Add dt param to force HiFiBerry DAC+ Pro into slave mode
 
 "dtoverlay=hifiberry-dacplus,slave"
 
diff --git a/target/linux/brcm2708/patches-4.4/0370-simple-add-sound-dai-cells-to-I2S-def.patch b/target/linux/brcm2708/patches-4.4/0369-simple-add-sound-dai-cells-to-I2S-def.patch
similarity index 88%
rename from target/linux/brcm2708/patches-4.4/0370-simple-add-sound-dai-cells-to-I2S-def.patch
rename to target/linux/brcm2708/patches-4.4/0369-simple-add-sound-dai-cells-to-I2S-def.patch
index f84b7b8..464bd2c 100644
--- a/target/linux/brcm2708/patches-4.4/0370-simple-add-sound-dai-cells-to-I2S-def.patch
+++ b/target/linux/brcm2708/patches-4.4/0369-simple-add-sound-dai-cells-to-I2S-def.patch
@@ -1,7 +1,7 @@
-From b035bb68499b1b100f3f06c76fc1ad7f10953f19 Mon Sep 17 00:00:00 2001
+From 488b8934b1f8c36a86570c6d6215404a2508cf5d Mon Sep 17 00:00:00 2001
 From: DigitalDreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Thu, 19 May 2016 00:00:00 +0100
-Subject: [PATCH 370/423] simple: add sound-dai-cells to I2S def
+Subject: [PATCH] simple: add sound-dai-cells to I2S def
 
 Add '#sound-dai-cells = <0>;' to the I2S definition in
 bcm2708_common.dtsi
diff --git a/target/linux/brcm2708/patches-4.4/0371-BCM2835-V4L2-Increase-minimum-resolution-to-32x32.patch b/target/linux/brcm2708/patches-4.4/0370-BCM2835-V4L2-Increase-minimum-resolution-to-32x32.patch
similarity index 86%
rename from target/linux/brcm2708/patches-4.4/0371-BCM2835-V4L2-Increase-minimum-resolution-to-32x32.patch
rename to target/linux/brcm2708/patches-4.4/0370-BCM2835-V4L2-Increase-minimum-resolution-to-32x32.patch
index 3dfe037..02df95d 100644
--- a/target/linux/brcm2708/patches-4.4/0371-BCM2835-V4L2-Increase-minimum-resolution-to-32x32.patch
+++ b/target/linux/brcm2708/patches-4.4/0370-BCM2835-V4L2-Increase-minimum-resolution-to-32x32.patch
@@ -1,7 +1,7 @@
-From 85e7cbd400714fff019db2d1ec7eb500a6bbc0ba Mon Sep 17 00:00:00 2001
+From 23573e4540b9de3c8506fa26956815fc0d71fb75 Mon Sep 17 00:00:00 2001
 From: Dave Stevenson <6by9 at users.noreply.github.com>
 Date: Tue, 31 May 2016 10:38:31 +0100
-Subject: [PATCH 371/423] BCM2835-V4L2: Increase minimum resolution to 32x32
+Subject: [PATCH] BCM2835-V4L2: Increase minimum resolution to 32x32
 
 https://github.com/raspberrypi/linux/issues/1498 showed
 up that 16x16 is failing to work on the GPU for some reason.
diff --git a/target/linux/brcm2708/patches-4.4/0372-config-Add-support-for-Logitech-Rumblepad.patch b/target/linux/brcm2708/patches-4.4/0371-config-Add-support-for-Logitech-Rumblepad.patch
similarity index 87%
rename from target/linux/brcm2708/patches-4.4/0372-config-Add-support-for-Logitech-Rumblepad.patch
rename to target/linux/brcm2708/patches-4.4/0371-config-Add-support-for-Logitech-Rumblepad.patch
index eebb627..3aa98a4 100644
--- a/target/linux/brcm2708/patches-4.4/0372-config-Add-support-for-Logitech-Rumblepad.patch
+++ b/target/linux/brcm2708/patches-4.4/0371-config-Add-support-for-Logitech-Rumblepad.patch
@@ -1,7 +1,7 @@
-From f141b0d59a1cc6783462e3b0656527a12e63be4a Mon Sep 17 00:00:00 2001
+From 339b9cfaae888619c7c84c18c148a48baadddc2d Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Fri, 27 May 2016 18:23:51 +0100
-Subject: [PATCH 372/423] config: Add support for Logitech Rumblepad
+Subject: [PATCH] config: Add support for Logitech Rumblepad
 
 ---
  arch/arm/configs/bcm2709_defconfig | 4 ++++
diff --git a/target/linux/brcm2708/patches-4.4/0373-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch b/target/linux/brcm2708/patches-4.4/0372-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch
similarity index 99%
rename from target/linux/brcm2708/patches-4.4/0373-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch
rename to target/linux/brcm2708/patches-4.4/0372-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch
index 15b6888..303d45d 100644
--- a/target/linux/brcm2708/patches-4.4/0373-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch
+++ b/target/linux/brcm2708/patches-4.4/0372-New-driver-for-RRA-DigiDAC1-soundcard-using-WM8741-W.patch
@@ -1,8 +1,7 @@
-From 4e543fbd917ecbc07317afa418341bde1c0569b6 Mon Sep 17 00:00:00 2001
+From bcba10e5c5da279fa57920ee1c08ee1dea84a4f6 Mon Sep 17 00:00:00 2001
 From: escalator2015 <jmtasende at gmail.com>
 Date: Tue, 24 May 2016 16:20:09 +0100
-Subject: [PATCH 373/423] New driver for RRA DigiDAC1 soundcard using WM8741 +
- WM8804
+Subject: [PATCH] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804
 
 ---
  arch/arm/boot/dts/overlays/Makefile                |   1 +
diff --git a/target/linux/brcm2708/patches-4.4/0375-BCM2835-V4L2-Correct-handling-for-BGR24-vs-RGB24.patch b/target/linux/brcm2708/patches-4.4/0374-BCM2835-V4L2-Correct-handling-for-BGR24-vs-RGB24.patch
similarity index 97%
rename from target/linux/brcm2708/patches-4.4/0375-BCM2835-V4L2-Correct-handling-for-BGR24-vs-RGB24.patch
rename to target/linux/brcm2708/patches-4.4/0374-BCM2835-V4L2-Correct-handling-for-BGR24-vs-RGB24.patch
index 8e6f2fe..2b262f2 100644
--- a/target/linux/brcm2708/patches-4.4/0375-BCM2835-V4L2-Correct-handling-for-BGR24-vs-RGB24.patch
+++ b/target/linux/brcm2708/patches-4.4/0374-BCM2835-V4L2-Correct-handling-for-BGR24-vs-RGB24.patch
@@ -1,7 +1,7 @@
-From e773144578da8e21392ce8b6e99cfcd313779da9 Mon Sep 17 00:00:00 2001
+From 1fa221e0909bc0052bdc8b458fb31e8a088e7723 Mon Sep 17 00:00:00 2001
 From: Dave Stevenson <6by9 at users.noreply.github.com>
 Date: Wed, 25 May 2016 23:25:36 +0100
-Subject: [PATCH 375/423] BCM2835-V4L2: Correct handling for BGR24 vs RGB24.
+Subject: [PATCH] BCM2835-V4L2: Correct handling for BGR24 vs RGB24.
 
 There was a bug in the GPU firmware that had reversed these
 two formats.
diff --git a/target/linux/brcm2708/patches-4.4/0376-BCM270X_DT-Add-mcp23017-to-the-overlay-Makefile.patch b/target/linux/brcm2708/patches-4.4/0375-BCM270X_DT-Add-mcp23017-to-the-overlay-Makefile.patch
similarity index 82%
rename from target/linux/brcm2708/patches-4.4/0376-BCM270X_DT-Add-mcp23017-to-the-overlay-Makefile.patch
rename to target/linux/brcm2708/patches-4.4/0375-BCM270X_DT-Add-mcp23017-to-the-overlay-Makefile.patch
index 34698ab..40dc096 100644
--- a/target/linux/brcm2708/patches-4.4/0376-BCM270X_DT-Add-mcp23017-to-the-overlay-Makefile.patch
+++ b/target/linux/brcm2708/patches-4.4/0375-BCM270X_DT-Add-mcp23017-to-the-overlay-Makefile.patch
@@ -1,7 +1,7 @@
-From 9bfe3611959168e5d1035bafc8917340bc1e9791 Mon Sep 17 00:00:00 2001
+From b7cd83145ba0f51721715034135a6c396dff9522 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 3 Jun 2016 22:21:47 +0100
-Subject: [PATCH 376/423] BCM270X_DT: Add mcp23017 to the overlay Makefile
+Subject: [PATCH] BCM270X_DT: Add mcp23017 to the overlay Makefile
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0377-BCM270X_DT-Sort-entries-to-placate-check-script.patch b/target/linux/brcm2708/patches-4.4/0376-BCM270X_DT-Sort-entries-to-placate-check-script.patch
similarity index 94%
rename from target/linux/brcm2708/patches-4.4/0377-BCM270X_DT-Sort-entries-to-placate-check-script.patch
rename to target/linux/brcm2708/patches-4.4/0376-BCM270X_DT-Sort-entries-to-placate-check-script.patch
index d403289..3614b93 100644
--- a/target/linux/brcm2708/patches-4.4/0377-BCM270X_DT-Sort-entries-to-placate-check-script.patch
+++ b/target/linux/brcm2708/patches-4.4/0376-BCM270X_DT-Sort-entries-to-placate-check-script.patch
@@ -1,7 +1,7 @@
-From e5dfd4f6544c0bc78d3d5b4158ad0f3660a244d4 Mon Sep 17 00:00:00 2001
+From 847d6f110dcd6b95120fc224cd71151464990f56 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 3 Jun 2016 23:01:01 +0100
-Subject: [PATCH 377/423] BCM270X_DT: Sort entries to placate check script
+Subject: [PATCH] BCM270X_DT: Sort entries to placate check script
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0378-gpio-ir-overlay-gpio_pin-shouldn-t-change-pull-setti.patch b/target/linux/brcm2708/patches-4.4/0377-gpio-ir-overlay-gpio_pin-shouldn-t-change-pull-setti.patch
similarity index 87%
rename from target/linux/brcm2708/patches-4.4/0378-gpio-ir-overlay-gpio_pin-shouldn-t-change-pull-setti.patch
rename to target/linux/brcm2708/patches-4.4/0377-gpio-ir-overlay-gpio_pin-shouldn-t-change-pull-setti.patch
index 2b7368f..1d8ec84 100644
--- a/target/linux/brcm2708/patches-4.4/0378-gpio-ir-overlay-gpio_pin-shouldn-t-change-pull-setti.patch
+++ b/target/linux/brcm2708/patches-4.4/0377-gpio-ir-overlay-gpio_pin-shouldn-t-change-pull-setti.patch
@@ -1,8 +1,7 @@
-From 5ae23709f303503c983cc3658a95ade9573c2540 Mon Sep 17 00:00:00 2001
+From 61702c8c68510797341356d03cf63380190afea9 Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Sat, 4 Jun 2016 11:30:48 +0200
-Subject: [PATCH 378/423] gpio-ir overlay: gpio_pin shouldn't change pull
- setting
+Subject: [PATCH] gpio-ir overlay: gpio_pin shouldn't change pull setting
 
 Signed-off-by: Matthias Reichl <hias at horus.com>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0379-media-rc-core-define-a-default-timeout-for-drivers.patch b/target/linux/brcm2708/patches-4.4/0378-media-rc-core-define-a-default-timeout-for-drivers.patch
similarity index 83%
rename from target/linux/brcm2708/patches-4.4/0379-media-rc-core-define-a-default-timeout-for-drivers.patch
rename to target/linux/brcm2708/patches-4.4/0378-media-rc-core-define-a-default-timeout-for-drivers.patch
index 130afb5..77967a2 100644
--- a/target/linux/brcm2708/patches-4.4/0379-media-rc-core-define-a-default-timeout-for-drivers.patch
+++ b/target/linux/brcm2708/patches-4.4/0378-media-rc-core-define-a-default-timeout-for-drivers.patch
@@ -1,7 +1,7 @@
-From 17d27b2171c997d5803172e7a9fa4f474f9687c1 Mon Sep 17 00:00:00 2001
+From 3d63c720f92caf1f3870154739bf9770eab06b9a Mon Sep 17 00:00:00 2001
 From: Eric Nelson <eric at nelint.com>
 Date: Sat, 3 Oct 2015 08:18:50 -0700
-Subject: [PATCH 379/423] [media] rc-core: define a default timeout for drivers
+Subject: [PATCH] [media] rc-core: define a default timeout for drivers
 
 A default timeout value of 125 ms should work for all decoders.
 
diff --git a/target/linux/brcm2708/patches-4.4/0380-media-rc-gpio-ir-recv-add-timeout-on-idle.patch b/target/linux/brcm2708/patches-4.4/0379-media-rc-gpio-ir-recv-add-timeout-on-idle.patch
similarity index 95%
rename from target/linux/brcm2708/patches-4.4/0380-media-rc-gpio-ir-recv-add-timeout-on-idle.patch
rename to target/linux/brcm2708/patches-4.4/0379-media-rc-gpio-ir-recv-add-timeout-on-idle.patch
index 02514cb..1436803 100644
--- a/target/linux/brcm2708/patches-4.4/0380-media-rc-gpio-ir-recv-add-timeout-on-idle.patch
+++ b/target/linux/brcm2708/patches-4.4/0379-media-rc-gpio-ir-recv-add-timeout-on-idle.patch
@@ -1,7 +1,7 @@
-From 87909c64d14dc0f907ebe95f77874075a75e7f66 Mon Sep 17 00:00:00 2001
+From ae20f89a35806322a318195e1067ddd9ca8b7eb8 Mon Sep 17 00:00:00 2001
 From: Eric Nelson <eric at nelint.com>
 Date: Wed, 23 Sep 2015 11:07:08 -0300
-Subject: [PATCH 380/423] [media] rc: gpio-ir-recv: add timeout on idle
+Subject: [PATCH] [media] rc: gpio-ir-recv: add timeout on idle
 
 Many decoders require a trailing space (period without IR illumination)
 to be delivered before completing a decode.
diff --git a/target/linux/brcm2708/patches-4.4/0381-smsir.h-remove-a-now-duplicated-definition-IR_DEFAUL.patch b/target/linux/brcm2708/patches-4.4/0380-smsir.h-remove-a-now-duplicated-definition-IR_DEFAUL.patch
similarity index 81%
rename from target/linux/brcm2708/patches-4.4/0381-smsir.h-remove-a-now-duplicated-definition-IR_DEFAUL.patch
rename to target/linux/brcm2708/patches-4.4/0380-smsir.h-remove-a-now-duplicated-definition-IR_DEFAUL.patch
index b4cd66e..53d338b 100644
--- a/target/linux/brcm2708/patches-4.4/0381-smsir.h-remove-a-now-duplicated-definition-IR_DEFAUL.patch
+++ b/target/linux/brcm2708/patches-4.4/0380-smsir.h-remove-a-now-duplicated-definition-IR_DEFAUL.patch
@@ -1,7 +1,7 @@
-From 3818b6877b525824f6fff4c9ede5f768ce55aac6 Mon Sep 17 00:00:00 2001
+From 0f922daa23beb3c3f591d61824a2e4a2031559a3 Mon Sep 17 00:00:00 2001
 From: Mauro Carvalho Chehab <mchehab at osg.samsung.com>
 Date: Thu, 19 Nov 2015 11:41:36 -0200
-Subject: [PATCH 381/423] smsir.h: remove a now duplicated definition
+Subject: [PATCH] smsir.h: remove a now duplicated definition
  (IR_DEFAULT_TIMEOUT)
 
 This macro is now part of the core. Remove from Siano driver.
diff --git a/target/linux/brcm2708/patches-4.4/0382-Implement-a-wakeup-source-option-for-the-i2c-rtc-Dev.patch b/target/linux/brcm2708/patches-4.4/0381-Implement-a-wakeup-source-option-for-the-i2c-rtc-Dev.patch
similarity index 87%
rename from target/linux/brcm2708/patches-4.4/0382-Implement-a-wakeup-source-option-for-the-i2c-rtc-Dev.patch
rename to target/linux/brcm2708/patches-4.4/0381-Implement-a-wakeup-source-option-for-the-i2c-rtc-Dev.patch
index 571c66b..7108614 100644
--- a/target/linux/brcm2708/patches-4.4/0382-Implement-a-wakeup-source-option-for-the-i2c-rtc-Dev.patch
+++ b/target/linux/brcm2708/patches-4.4/0381-Implement-a-wakeup-source-option-for-the-i2c-rtc-Dev.patch
@@ -1,8 +1,8 @@
-From 0b0219c615f8715c180e0c20bbecb97ae2c49f45 Mon Sep 17 00:00:00 2001
+From 23a16f885df81479a81bc6ba3ebbb4a25716ca6c Mon Sep 17 00:00:00 2001
 From: Nicolas Boullis <nboullis at debian.org>
 Date: Sat, 4 Jun 2016 00:57:06 +0200
-Subject: [PATCH 382/423] Implement a "wakeup-source" option for the i2c-rtc
- DeviceTree overlay.
+Subject: [PATCH] Implement a "wakeup-source" option for the i2c-rtc DeviceTree
+ overlay.
 
 See: https://github.com/raspberrypi/linux/pull/1511
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0383-BCM270X_DT-Fix-rpi-dac-overlay.patch b/target/linux/brcm2708/patches-4.4/0382-BCM270X_DT-Fix-rpi-dac-overlay.patch
similarity index 90%
rename from target/linux/brcm2708/patches-4.4/0383-BCM270X_DT-Fix-rpi-dac-overlay.patch
rename to target/linux/brcm2708/patches-4.4/0382-BCM270X_DT-Fix-rpi-dac-overlay.patch
index 1f04d53..760359c 100644
--- a/target/linux/brcm2708/patches-4.4/0383-BCM270X_DT-Fix-rpi-dac-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0382-BCM270X_DT-Fix-rpi-dac-overlay.patch
@@ -1,7 +1,7 @@
-From 5524577be75ee648266c47fe6d4a9be80411827f Mon Sep 17 00:00:00 2001
+From d6b1e376414ff77bcfc449e7dcc0f1ee7b91a888 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 3 Jun 2016 21:56:40 +0100
-Subject: [PATCH 383/423] BCM270X_DT: Fix rpi-dac overlay
+Subject: [PATCH] BCM270X_DT: Fix rpi-dac overlay
 
 The rpi-dac overlay is almost identical to the hifiberry-dac overlay -
 the codec used is different but it also doesn't sit on the I2C bus. As
diff --git a/target/linux/brcm2708/patches-4.4/0384-BCM270X_DT-Make-i2c-gpio-usable-by-other-overlays.patch b/target/linux/brcm2708/patches-4.4/0383-BCM270X_DT-Make-i2c-gpio-usable-by-other-overlays.patch
similarity index 85%
rename from target/linux/brcm2708/patches-4.4/0384-BCM270X_DT-Make-i2c-gpio-usable-by-other-overlays.patch
rename to target/linux/brcm2708/patches-4.4/0383-BCM270X_DT-Make-i2c-gpio-usable-by-other-overlays.patch
index 81e4ed4..6671b69 100644
--- a/target/linux/brcm2708/patches-4.4/0384-BCM270X_DT-Make-i2c-gpio-usable-by-other-overlays.patch
+++ b/target/linux/brcm2708/patches-4.4/0383-BCM270X_DT-Make-i2c-gpio-usable-by-other-overlays.patch
@@ -1,7 +1,7 @@
-From 1ea97f82e7a653ad18f39f9de5ea34f182650d70 Mon Sep 17 00:00:00 2001
+From 5e5cb8f76037673c14925324606738587f65427c Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Mon, 6 Jun 2016 09:23:37 +0100
-Subject: [PATCH 384/423] BCM270X_DT: Make i2c-gpio usable by other overlays
+Subject: [PATCH] BCM270X_DT: Make i2c-gpio usable by other overlays
 
 Modify the i2c-gpio overlay to export symbol i2c-gpio for use by other
 overlays. Export the alias as well for good measure.
diff --git a/target/linux/brcm2708/patches-4.4/0388-Add-ads1015-overlay.patch b/target/linux/brcm2708/patches-4.4/0387-Add-ads1015-overlay.patch
similarity index 97%
rename from target/linux/brcm2708/patches-4.4/0388-Add-ads1015-overlay.patch
rename to target/linux/brcm2708/patches-4.4/0387-Add-ads1015-overlay.patch
index 1aece82..80c663e 100644
--- a/target/linux/brcm2708/patches-4.4/0388-Add-ads1015-overlay.patch
+++ b/target/linux/brcm2708/patches-4.4/0387-Add-ads1015-overlay.patch
@@ -1,7 +1,7 @@
-From a16a1b167229779e3e417a1f63eeb176048ef6e0 Mon Sep 17 00:00:00 2001
+From adce42f39f75ac5d479d2b4caff73723107e0539 Mon Sep 17 00:00:00 2001
 From: Erik Sejr <erik at eriks.ssimicro.com>
 Date: Tue, 7 Jun 2016 20:58:17 -0400
-Subject: [PATCH 388/423] Add ads1015 overlay
+Subject: [PATCH] Add ads1015 overlay
 
 See: https://github.com/raspberrypi/linux/pull/1520
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0389-Fixed-MCP23017-section-in-overlay-README.patch b/target/linux/brcm2708/patches-4.4/0388-Fixed-MCP23017-section-in-overlay-README.patch
similarity index 85%
rename from target/linux/brcm2708/patches-4.4/0389-Fixed-MCP23017-section-in-overlay-README.patch
rename to target/linux/brcm2708/patches-4.4/0388-Fixed-MCP23017-section-in-overlay-README.patch
index 21676a8..a120f14 100644
--- a/target/linux/brcm2708/patches-4.4/0389-Fixed-MCP23017-section-in-overlay-README.patch
+++ b/target/linux/brcm2708/patches-4.4/0388-Fixed-MCP23017-section-in-overlay-README.patch
@@ -1,7 +1,7 @@
-From 863ab87efa682d499ed1bfaeae1753e4a86b392d Mon Sep 17 00:00:00 2001
+From 83ee5f5d26599a914e05a9eac8250029a4410969 Mon Sep 17 00:00:00 2001
 From: Michael Kaplan <m.kaplan at evva.com>
 Date: Wed, 8 Jun 2016 15:14:11 +0200
-Subject: [PATCH 389/423] Fixed MCP23017 section in overlay README
+Subject: [PATCH] Fixed MCP23017 section in overlay README
 
 Old description could have led to the misunderstanding that it is an
 i2c port expander, but in fact it is a gpio expander.
diff --git a/target/linux/brcm2708/patches-4.4/0390-Revert-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch b/target/linux/brcm2708/patches-4.4/0389-Revert-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch
similarity index 94%
rename from target/linux/brcm2708/patches-4.4/0390-Revert-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch
rename to target/linux/brcm2708/patches-4.4/0389-Revert-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch
index 97a16a2..3cbcba0 100644
--- a/target/linux/brcm2708/patches-4.4/0390-Revert-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch
+++ b/target/linux/brcm2708/patches-4.4/0389-Revert-bcm2835-dma-Fix-up-convert-to-DMA-pool.patch
@@ -1,7 +1,7 @@
-From d9c36fdc44cdf154a0849b03e94b0a6b6f86defb Mon Sep 17 00:00:00 2001
+From a236ecec838c8cf9928e9d2b8dc03346276627a1 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Fri, 22 Apr 2016 17:17:13 +0000
-Subject: [PATCH 390/423] Revert "bcm2835-dma: Fix up convert to DMA pool"
+Subject: [PATCH] Revert "bcm2835-dma: Fix up convert to DMA pool"
 
 This reverts commit ec2e48fda22c57cab56a4332d1a095f91c919493.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0391-Revert-bcm2835-dma-Limit-cyclic-transfers-on-lite-ch.patch b/target/linux/brcm2708/patches-4.4/0390-Revert-bcm2835-dma-Limit-cyclic-transfers-on-lite-ch.patch
similarity index 86%
rename from target/linux/brcm2708/patches-4.4/0391-Revert-bcm2835-dma-Limit-cyclic-transfers-on-lite-ch.patch
rename to target/linux/brcm2708/patches-4.4/0390-Revert-bcm2835-dma-Limit-cyclic-transfers-on-lite-ch.patch
index 1fd6fb2..d99355d 100644
--- a/target/linux/brcm2708/patches-4.4/0391-Revert-bcm2835-dma-Limit-cyclic-transfers-on-lite-ch.patch
+++ b/target/linux/brcm2708/patches-4.4/0390-Revert-bcm2835-dma-Limit-cyclic-transfers-on-lite-ch.patch
@@ -1,8 +1,8 @@
-From 0bdc822d579b856a40a24f8c58765d2200f15099 Mon Sep 17 00:00:00 2001
+From 31c4d45f25abd0680e05775f3166ec6066e39a2a Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Fri, 22 Apr 2016 17:17:22 +0000
-Subject: [PATCH 391/423] Revert "bcm2835-dma: Limit cyclic transfers on lite
- channels to 32k"
+Subject: [PATCH] Revert "bcm2835-dma: Limit cyclic transfers on lite channels
+ to 32k"
 
 This reverts commit 052c2005b6ecedc5abad86632f5781adda310aa7.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0392-Revert-dmaengine-bcm2835-Load-driver-early-and-suppo.patch b/target/linux/brcm2708/patches-4.4/0391-Revert-dmaengine-bcm2835-Load-driver-early-and-suppo.patch
similarity index 93%
rename from target/linux/brcm2708/patches-4.4/0392-Revert-dmaengine-bcm2835-Load-driver-early-and-suppo.patch
rename to target/linux/brcm2708/patches-4.4/0391-Revert-dmaengine-bcm2835-Load-driver-early-and-suppo.patch
index 5ad5ffa..b7fdb9e 100644
--- a/target/linux/brcm2708/patches-4.4/0392-Revert-dmaengine-bcm2835-Load-driver-early-and-suppo.patch
+++ b/target/linux/brcm2708/patches-4.4/0391-Revert-dmaengine-bcm2835-Load-driver-early-and-suppo.patch
@@ -1,8 +1,8 @@
-From 7550c11bac6c1990f2e4a583c99e211cb402782b Mon Sep 17 00:00:00 2001
+From 7d58feb7f06a5e05aa3b99b32b4bba4b927b7b3f Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Fri, 22 Apr 2016 17:17:30 +0000
-Subject: [PATCH 392/423] Revert "dmaengine: bcm2835: Load driver early and
- support legacy API"
+Subject: [PATCH] Revert "dmaengine: bcm2835: Load driver early and support
+ legacy API"
 
 This reverts commit 6f56fff39c811953809b011f59c49a2122c4d173.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0393-Revert-dmaengine-bcm2835-Add-slave-dma-support.patch b/target/linux/brcm2708/patches-4.4/0392-Revert-dmaengine-bcm2835-Add-slave-dma-support.patch
similarity index 98%
rename from target/linux/brcm2708/patches-4.4/0393-Revert-dmaengine-bcm2835-Add-slave-dma-support.patch
rename to target/linux/brcm2708/patches-4.4/0392-Revert-dmaengine-bcm2835-Add-slave-dma-support.patch
index 890ebb8..7cac679 100644
--- a/target/linux/brcm2708/patches-4.4/0393-Revert-dmaengine-bcm2835-Add-slave-dma-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0392-Revert-dmaengine-bcm2835-Add-slave-dma-support.patch
@@ -1,7 +1,7 @@
-From c748f44b0b10023e4207cb288ce9c169e390fbaf Mon Sep 17 00:00:00 2001
+From b80a19b329a3fcbb74490a4b8d86055ee7d40c13 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Fri, 22 Apr 2016 17:17:37 +0000
-Subject: [PATCH 393/423] Revert "dmaengine: bcm2835: Add slave dma support"
+Subject: [PATCH] Revert "dmaengine: bcm2835: Add slave dma support"
 
 This reverts commit 8a349301238aabb40c9da5ca8c8492b6b8d146f6.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0394-dmaengine-bcm2835-remove-unnecessary-masking-of-dma-.patch b/target/linux/brcm2708/patches-4.4/0393-dmaengine-bcm2835-remove-unnecessary-masking-of-dma-.patch
similarity index 92%
rename from target/linux/brcm2708/patches-4.4/0394-dmaengine-bcm2835-remove-unnecessary-masking-of-dma-.patch
rename to target/linux/brcm2708/patches-4.4/0393-dmaengine-bcm2835-remove-unnecessary-masking-of-dma-.patch
index 63a232a..5254a2a 100644
--- a/target/linux/brcm2708/patches-4.4/0394-dmaengine-bcm2835-remove-unnecessary-masking-of-dma-.patch
+++ b/target/linux/brcm2708/patches-4.4/0393-dmaengine-bcm2835-remove-unnecessary-masking-of-dma-.patch
@@ -1,7 +1,7 @@
-From dd06728c740cdeb3346a7b74d8a5924672ed6da1 Mon Sep 17 00:00:00 2001
+From 0f65c306a55ab6a8e8148b6d9c966a1d214ae3c9 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Wed, 16 Mar 2016 12:24:56 -0700
-Subject: [PATCH 394/423] dmaengine: bcm2835: remove unnecessary masking of dma
+Subject: [PATCH] dmaengine: bcm2835: remove unnecessary masking of dma
  channels
 
 The original patch contained 3 dma channels that were masked out.
diff --git a/target/linux/brcm2708/patches-4.4/0395-dmaengine-bcm2835-add-additional-defines-for-DMA-reg.patch b/target/linux/brcm2708/patches-4.4/0394-dmaengine-bcm2835-add-additional-defines-for-DMA-reg.patch
similarity index 96%
rename from target/linux/brcm2708/patches-4.4/0395-dmaengine-bcm2835-add-additional-defines-for-DMA-reg.patch
rename to target/linux/brcm2708/patches-4.4/0394-dmaengine-bcm2835-add-additional-defines-for-DMA-reg.patch
index f2cc0e3..6f300a2 100644
--- a/target/linux/brcm2708/patches-4.4/0395-dmaengine-bcm2835-add-additional-defines-for-DMA-reg.patch
+++ b/target/linux/brcm2708/patches-4.4/0394-dmaengine-bcm2835-add-additional-defines-for-DMA-reg.patch
@@ -1,8 +1,7 @@
-From b1f4d42406261ed1ddffbbf0582ebbfaf6c0a73b Mon Sep 17 00:00:00 2001
+From 2e9daa8fabdef7a31da63f9a532105d94ade48ae Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Wed, 16 Mar 2016 12:24:57 -0700
-Subject: [PATCH 395/423] dmaengine: bcm2835: add additional defines for
- DMA-registers
+Subject: [PATCH] dmaengine: bcm2835: add additional defines for DMA-registers
 
 Add additional defines describing the DMA registers
 as well as adding some more documentation to those registers.
diff --git a/target/linux/brcm2708/patches-4.4/0396-dmaengine-bcm2835-move-cyclic-member-from-bcm2835_ch.patch b/target/linux/brcm2708/patches-4.4/0395-dmaengine-bcm2835-move-cyclic-member-from-bcm2835_ch.patch
similarity index 89%
rename from target/linux/brcm2708/patches-4.4/0396-dmaengine-bcm2835-move-cyclic-member-from-bcm2835_ch.patch
rename to target/linux/brcm2708/patches-4.4/0395-dmaengine-bcm2835-move-cyclic-member-from-bcm2835_ch.patch
index 8b97f11..831928c 100644
--- a/target/linux/brcm2708/patches-4.4/0396-dmaengine-bcm2835-move-cyclic-member-from-bcm2835_ch.patch
+++ b/target/linux/brcm2708/patches-4.4/0395-dmaengine-bcm2835-move-cyclic-member-from-bcm2835_ch.patch
@@ -1,8 +1,8 @@
-From 51fa7004613fc6a4567938f0a8358346ca602b5f Mon Sep 17 00:00:00 2001
+From 45a5aa455ea243c3daf0d1bdbfdb83787ae95249 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Wed, 16 Mar 2016 12:24:58 -0700
-Subject: [PATCH 396/423] dmaengine: bcm2835: move cyclic member from
- bcm2835_chan into bcm2835_desc
+Subject: [PATCH] dmaengine: bcm2835: move cyclic member from bcm2835_chan into
+ bcm2835_desc
 
 In preparation to consolidating code we move the cyclic member
 into the bcm_2835_desc structure.
diff --git a/target/linux/brcm2708/patches-4.4/0397-dmaengine-bcm2835-move-controlblock-chain-generation.patch b/target/linux/brcm2708/patches-4.4/0396-dmaengine-bcm2835-move-controlblock-chain-generation.patch
similarity index 98%
rename from target/linux/brcm2708/patches-4.4/0397-dmaengine-bcm2835-move-controlblock-chain-generation.patch
rename to target/linux/brcm2708/patches-4.4/0396-dmaengine-bcm2835-move-controlblock-chain-generation.patch
index f998a88..1507d6b 100644
--- a/target/linux/brcm2708/patches-4.4/0397-dmaengine-bcm2835-move-controlblock-chain-generation.patch
+++ b/target/linux/brcm2708/patches-4.4/0396-dmaengine-bcm2835-move-controlblock-chain-generation.patch
@@ -1,8 +1,8 @@
-From b181092e7661f90e4777e0b858e601a33c1e5af9 Mon Sep 17 00:00:00 2001
+From a41b5c7005c6880ac91b9e08062c6b6813df758e Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Wed, 16 Mar 2016 12:24:59 -0700
-Subject: [PATCH 397/423] dmaengine: bcm2835: move controlblock chain
- generation into separate method
+Subject: [PATCH] dmaengine: bcm2835: move controlblock chain generation into
+ separate method
 
 In preparation of adding slave_sg functionality this patch moves the
 generation/allocation of bcm2835_desc and the building of
diff --git a/target/linux/brcm2708/patches-4.4/0398-dmaengine-bcm2835-limit-max-length-based-on-channel-.patch b/target/linux/brcm2708/patches-4.4/0397-dmaengine-bcm2835-limit-max-length-based-on-channel-.patch
similarity index 96%
rename from target/linux/brcm2708/patches-4.4/0398-dmaengine-bcm2835-limit-max-length-based-on-channel-.patch
rename to target/linux/brcm2708/patches-4.4/0397-dmaengine-bcm2835-limit-max-length-based-on-channel-.patch
index e679850..65b402a 100644
--- a/target/linux/brcm2708/patches-4.4/0398-dmaengine-bcm2835-limit-max-length-based-on-channel-.patch
+++ b/target/linux/brcm2708/patches-4.4/0397-dmaengine-bcm2835-limit-max-length-based-on-channel-.patch
@@ -1,8 +1,7 @@
-From 930015dce415e4203daeafb09c24759ac883613e Mon Sep 17 00:00:00 2001
+From 350247e0611f171a3372386e389e24746daff84f Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Wed, 16 Mar 2016 12:25:00 -0700
-Subject: [PATCH 398/423] dmaengine: bcm2835: limit max length based on channel
- type
+Subject: [PATCH] dmaengine: bcm2835: limit max length based on channel type
 
 The bcm2835 dma system has 2 basic types of dma-channels:
 * "normal" channels
diff --git a/target/linux/brcm2708/patches-4.4/0399-dmaengine-bcm2835-add-slave_sg-support-to-bcm2835-dm.patch b/target/linux/brcm2708/patches-4.4/0398-dmaengine-bcm2835-add-slave_sg-support-to-bcm2835-dm.patch
similarity index 97%
rename from target/linux/brcm2708/patches-4.4/0399-dmaengine-bcm2835-add-slave_sg-support-to-bcm2835-dm.patch
rename to target/linux/brcm2708/patches-4.4/0398-dmaengine-bcm2835-add-slave_sg-support-to-bcm2835-dm.patch
index ad1a0f8..ef1b433 100644
--- a/target/linux/brcm2708/patches-4.4/0399-dmaengine-bcm2835-add-slave_sg-support-to-bcm2835-dm.patch
+++ b/target/linux/brcm2708/patches-4.4/0398-dmaengine-bcm2835-add-slave_sg-support-to-bcm2835-dm.patch
@@ -1,8 +1,7 @@
-From 7cd84b455f4681e4db6cd9e3cd628bcd06df0978 Mon Sep 17 00:00:00 2001
+From 9026efd53eae4b320941e581f141ddc87f2adc20 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Wed, 16 Mar 2016 12:25:01 -0700
-Subject: [PATCH 399/423] dmaengine: bcm2835: add slave_sg support to
- bcm2835-dma
+Subject: [PATCH] dmaengine: bcm2835: add slave_sg support to bcm2835-dma
 
 Add slave_sg support to bcm2835-dma using shared allocation
 code for bcm2835_desc and DMA-control blocks already used by
diff --git a/target/linux/brcm2708/patches-4.4/0400-dmaengine-bcm2835-add-dma_memcopy-support-to-bcm2835.patch b/target/linux/brcm2708/patches-4.4/0399-dmaengine-bcm2835-add-dma_memcopy-support-to-bcm2835.patch
similarity index 95%
rename from target/linux/brcm2708/patches-4.4/0400-dmaengine-bcm2835-add-dma_memcopy-support-to-bcm2835.patch
rename to target/linux/brcm2708/patches-4.4/0399-dmaengine-bcm2835-add-dma_memcopy-support-to-bcm2835.patch
index 829f9c2..a7b50a5 100644
--- a/target/linux/brcm2708/patches-4.4/0400-dmaengine-bcm2835-add-dma_memcopy-support-to-bcm2835.patch
+++ b/target/linux/brcm2708/patches-4.4/0399-dmaengine-bcm2835-add-dma_memcopy-support-to-bcm2835.patch
@@ -1,8 +1,7 @@
-From ce27d8ba202467a2b811de711ed95d17b2bb27e5 Mon Sep 17 00:00:00 2001
+From 24392a5f014f3106442cef99e9956d0f826337e3 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Wed, 16 Mar 2016 12:25:02 -0700
-Subject: [PATCH 400/423] dmaengine: bcm2835: add dma_memcopy support to
- bcm2835-dma
+Subject: [PATCH] dmaengine: bcm2835: add dma_memcopy support to bcm2835-dma
 
 Also added check for an error condition in bcm2835_dma_create_cb_chain
 that showed up during development of this patch.
diff --git a/target/linux/brcm2708/patches-4.4/0401-dmaengine-bcm2835-use-platform_get_irq_byname.patch b/target/linux/brcm2708/patches-4.4/0400-dmaengine-bcm2835-use-platform_get_irq_byname.patch
similarity index 97%
rename from target/linux/brcm2708/patches-4.4/0401-dmaengine-bcm2835-use-platform_get_irq_byname.patch
rename to target/linux/brcm2708/patches-4.4/0400-dmaengine-bcm2835-use-platform_get_irq_byname.patch
index 4ac145d..b8eecaf 100644
--- a/target/linux/brcm2708/patches-4.4/0401-dmaengine-bcm2835-use-platform_get_irq_byname.patch
+++ b/target/linux/brcm2708/patches-4.4/0400-dmaengine-bcm2835-use-platform_get_irq_byname.patch
@@ -1,7 +1,7 @@
-From 1e4008ef44653e552ce20969322fc271a2b52fe4 Mon Sep 17 00:00:00 2001
+From 27a895c19212e695f70bd4860d4420f70f915fe1 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Mon, 11 Apr 2016 13:29:08 +0000
-Subject: [PATCH 401/423] dmaengine: bcm2835: use platform_get_irq_byname
+Subject: [PATCH] dmaengine: bcm2835: use platform_get_irq_byname
 
 Use platform_get_irq_byname to allow for correct mapping of
 interrupts to dma channels.
diff --git a/target/linux/brcm2708/patches-4.4/0402-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch b/target/linux/brcm2708/patches-4.4/0401-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
similarity index 94%
rename from target/linux/brcm2708/patches-4.4/0402-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
rename to target/linux/brcm2708/patches-4.4/0401-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
index 5d21ffd..f8ad8f3 100644
--- a/target/linux/brcm2708/patches-4.4/0402-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
+++ b/target/linux/brcm2708/patches-4.4/0401-dmaengine-bcm2835-Load-driver-early-and-support-lega.patch
@@ -1,8 +1,7 @@
-From b0ad872cdb56e3dfd36ec2fbd0aad0375609bb0f Mon Sep 17 00:00:00 2001
+From 479b918cb9511d5044cc660f0c74d42952a87910 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf at tronnes.org>
 Date: Sat, 3 Oct 2015 22:22:55 +0200
-Subject: [PATCH 402/423] dmaengine: bcm2835: Load driver early and support
- legacy API
+Subject: [PATCH] dmaengine: bcm2835: Load driver early and support legacy API
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
diff --git a/target/linux/brcm2708/patches-4.4/0403-ARM-bcm270x-changed-bcrm-dma-channel-mask-to-mask-ou.patch b/target/linux/brcm2708/patches-4.4/0402-ARM-bcm270x-changed-bcrm-dma-channel-mask-to-mask-ou.patch
similarity index 80%
rename from target/linux/brcm2708/patches-4.4/0403-ARM-bcm270x-changed-bcrm-dma-channel-mask-to-mask-ou.patch
rename to target/linux/brcm2708/patches-4.4/0402-ARM-bcm270x-changed-bcrm-dma-channel-mask-to-mask-ou.patch
index 84d24c0..1bcdd93 100644
--- a/target/linux/brcm2708/patches-4.4/0403-ARM-bcm270x-changed-bcrm-dma-channel-mask-to-mask-ou.patch
+++ b/target/linux/brcm2708/patches-4.4/0402-ARM-bcm270x-changed-bcrm-dma-channel-mask-to-mask-ou.patch
@@ -1,8 +1,8 @@
-From 397377a39914146b6c7ac085436fbc948c39b0ff Mon Sep 17 00:00:00 2001
+From fa1852176e0d03be5650aa88a6e051541fa3da7a Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Fri, 22 Apr 2016 16:13:59 +0000
-Subject: [PATCH 403/423] ARM: bcm270x: changed bcrm,dma-channel-mask to mask
- out the used channel
+Subject: [PATCH] ARM: bcm270x: changed bcrm,dma-channel-mask to mask out the
+ used channel
 
 Dma channel0 is used by the legacy api - to avoid confilcts this
 needs to get masked out in the device-tree instead of hardcoding it
diff --git a/target/linux/brcm2708/patches-4.4/0404-ARM-bcm2835-add-interrupt-names-and-apply-correct-ma.patch b/target/linux/brcm2708/patches-4.4/0403-ARM-bcm2835-add-interrupt-names-and-apply-correct-ma.patch
similarity index 88%
rename from target/linux/brcm2708/patches-4.4/0404-ARM-bcm2835-add-interrupt-names-and-apply-correct-ma.patch
rename to target/linux/brcm2708/patches-4.4/0403-ARM-bcm2835-add-interrupt-names-and-apply-correct-ma.patch
index 0710286..eb5a6cd 100644
--- a/target/linux/brcm2708/patches-4.4/0404-ARM-bcm2835-add-interrupt-names-and-apply-correct-ma.patch
+++ b/target/linux/brcm2708/patches-4.4/0403-ARM-bcm2835-add-interrupt-names-and-apply-correct-ma.patch
@@ -1,8 +1,7 @@
-From b11585bc1bd969c750b3f02fd15a584b463602f8 Mon Sep 17 00:00:00 2001
+From c4eb741282cc9300119adaa4d6d3a278b9cd5f15 Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Sat, 23 Apr 2016 14:07:03 +0000
-Subject: [PATCH 404/423] ARM: bcm2835: add interrupt-names and apply correct
- mapping
+Subject: [PATCH] ARM: bcm2835: add interrupt-names and apply correct mapping
 
 Add interrupt-names properties to dt and apply the correct
 mapping between irq and dma channels.
diff --git a/target/linux/brcm2708/patches-4.4/0405-ARM-bcm2835-make-dma-channel-0-available-for-kms-set.patch b/target/linux/brcm2708/patches-4.4/0404-ARM-bcm2835-make-dma-channel-0-available-for-kms-set.patch
similarity index 81%
rename from target/linux/brcm2708/patches-4.4/0405-ARM-bcm2835-make-dma-channel-0-available-for-kms-set.patch
rename to target/linux/brcm2708/patches-4.4/0404-ARM-bcm2835-make-dma-channel-0-available-for-kms-set.patch
index 94d559c..d00a19b 100644
--- a/target/linux/brcm2708/patches-4.4/0405-ARM-bcm2835-make-dma-channel-0-available-for-kms-set.patch
+++ b/target/linux/brcm2708/patches-4.4/0404-ARM-bcm2835-make-dma-channel-0-available-for-kms-set.patch
@@ -1,8 +1,7 @@
-From 2ebd83e6f79690289068f691c2ad67db4e40deca Mon Sep 17 00:00:00 2001
+From 0cbf2a548657ddbeb0b7b7d144cc4f46f477b2fc Mon Sep 17 00:00:00 2001
 From: Martin Sperl <kernel at martin.sperl.org>
 Date: Sat, 23 Apr 2016 14:20:41 +0000
-Subject: [PATCH 405/423] ARM: bcm2835: make dma-channel-0 available for kms
- setups
+Subject: [PATCH] ARM: bcm2835: make dma-channel-0 available for kms setups
 
 Enable the use of dma-channel 0 when using the vc4-kms-v3d overlay.
 
diff --git a/target/linux/brcm2708/patches-4.4/0406-dmaengine-bcm2835-Fix-cyclic-DMA-period-splitting.patch b/target/linux/brcm2708/patches-4.4/0405-dmaengine-bcm2835-Fix-cyclic-DMA-period-splitting.patch
similarity index 90%
rename from target/linux/brcm2708/patches-4.4/0406-dmaengine-bcm2835-Fix-cyclic-DMA-period-splitting.patch
rename to target/linux/brcm2708/patches-4.4/0405-dmaengine-bcm2835-Fix-cyclic-DMA-period-splitting.patch
index 56cceb0..e76c99b 100644
--- a/target/linux/brcm2708/patches-4.4/0406-dmaengine-bcm2835-Fix-cyclic-DMA-period-splitting.patch
+++ b/target/linux/brcm2708/patches-4.4/0405-dmaengine-bcm2835-Fix-cyclic-DMA-period-splitting.patch
@@ -1,7 +1,7 @@
-From 74d0d3161d711b51be692cf1750b6eb60719f782 Mon Sep 17 00:00:00 2001
+From aaf4cb4fda9ed5c19f0db02023c5c11f51a23aaf Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Tue, 7 Jun 2016 19:37:10 +0200
-Subject: [PATCH 406/423] dmaengine: bcm2835: Fix cyclic DMA period splitting
+Subject: [PATCH] dmaengine: bcm2835: Fix cyclic DMA period splitting
 
 The code responsible for splitting periods into chunks that
 can be handled by the DMA controller missed to update total_len,
diff --git a/target/linux/brcm2708/patches-4.4/0407-dmaengine-bcm2835-Avoid-splitting-periods-into-very-.patch b/target/linux/brcm2708/patches-4.4/0406-dmaengine-bcm2835-Avoid-splitting-periods-into-very-.patch
similarity index 93%
rename from target/linux/brcm2708/patches-4.4/0407-dmaengine-bcm2835-Avoid-splitting-periods-into-very-.patch
rename to target/linux/brcm2708/patches-4.4/0406-dmaengine-bcm2835-Avoid-splitting-periods-into-very-.patch
index 2e827e2..265ee10 100644
--- a/target/linux/brcm2708/patches-4.4/0407-dmaengine-bcm2835-Avoid-splitting-periods-into-very-.patch
+++ b/target/linux/brcm2708/patches-4.4/0406-dmaengine-bcm2835-Avoid-splitting-periods-into-very-.patch
@@ -1,8 +1,8 @@
-From 6bcfb541bbf5398f91d426c9e6c0e3817d18bb8e Mon Sep 17 00:00:00 2001
+From 47b93cc5b706cb592f924199f00d5adbb66bd3ca Mon Sep 17 00:00:00 2001
 From: Matthias Reichl <hias at horus.com>
 Date: Wed, 8 Jun 2016 13:09:56 +0200
-Subject: [PATCH 407/423] dmaengine: bcm2835: Avoid splitting periods into very
- small chunks
+Subject: [PATCH] dmaengine: bcm2835: Avoid splitting periods into very small
+ chunks
 
 The current cyclic DMA period splitting implementation can generate
 very small chunks at the end of each period. For example a 65536 byte
diff --git a/target/linux/brcm2708/patches-4.4/0408-dmaengine-bcm2835-Fix-polling-for-completion-of-DMA-.patch b/target/linux/brcm2708/patches-4.4/0407-dmaengine-bcm2835-Fix-polling-for-completion-of-DMA-.patch
similarity index 92%
rename from target/linux/brcm2708/patches-4.4/0408-dmaengine-bcm2835-Fix-polling-for-completion-of-DMA-.patch
rename to target/linux/brcm2708/patches-4.4/0407-dmaengine-bcm2835-Fix-polling-for-completion-of-DMA-.patch
index 7229a5c..7ff0ab1 100644
--- a/target/linux/brcm2708/patches-4.4/0408-dmaengine-bcm2835-Fix-polling-for-completion-of-DMA-.patch
+++ b/target/linux/brcm2708/patches-4.4/0407-dmaengine-bcm2835-Fix-polling-for-completion-of-DMA-.patch
@@ -1,8 +1,8 @@
-From 467c8219ee56e75ab53f29b569f9fb5d033f57d4 Mon Sep 17 00:00:00 2001
+From 3288dc56cae869c8c49202f36669ea64d568407f Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
 Date: Fri, 3 Jun 2016 19:29:11 -0700
-Subject: [PATCH 408/423] dmaengine: bcm2835: Fix polling for completion of DMA
- with interrupts masked.
+Subject: [PATCH] dmaengine: bcm2835: Fix polling for completion of DMA with
+ interrupts masked.
 
 The tx_status hook is supposed to be safe to call from interrupt
 context, but it wouldn't ever return completion for the last transfer,
diff --git a/target/linux/brcm2708/patches-4.4/0410-BCM270X_DT-Add-spi-rtc-overlay-on-SPI0.0.patch b/target/linux/brcm2708/patches-4.4/0409-BCM270X_DT-Add-spi-rtc-overlay-on-SPI0.0.patch
similarity index 93%
rename from target/linux/brcm2708/patches-4.4/0410-BCM270X_DT-Add-spi-rtc-overlay-on-SPI0.0.patch
rename to target/linux/brcm2708/patches-4.4/0409-BCM270X_DT-Add-spi-rtc-overlay-on-SPI0.0.patch
index 2358797..b4ca047 100644
--- a/target/linux/brcm2708/patches-4.4/0410-BCM270X_DT-Add-spi-rtc-overlay-on-SPI0.0.patch
+++ b/target/linux/brcm2708/patches-4.4/0409-BCM270X_DT-Add-spi-rtc-overlay-on-SPI0.0.patch
@@ -1,7 +1,7 @@
-From ae24592f7b8e0af654a25d18a8d26cd0e5799fdb Mon Sep 17 00:00:00 2001
+From a008938ed54a702e72a8421776c1d3f97b79a97b Mon Sep 17 00:00:00 2001
 From: Thomas Kriechbaumer <thomas at kriechbaumer.name>
 Date: Fri, 3 Jun 2016 09:40:44 +0200
-Subject: [PATCH 410/423] BCM270X_DT: Add spi-rtc overlay on SPI0.0
+Subject: [PATCH] BCM270X_DT: Add spi-rtc overlay on SPI0.0
 
 Initial version only supports PCF2123 RTC.
 
diff --git a/target/linux/brcm2708/patches-4.4/0411-rtc-Add-SPI-alias-for-pcf2123-driver.patch b/target/linux/brcm2708/patches-4.4/0410-rtc-Add-SPI-alias-for-pcf2123-driver.patch
similarity index 80%
rename from target/linux/brcm2708/patches-4.4/0411-rtc-Add-SPI-alias-for-pcf2123-driver.patch
rename to target/linux/brcm2708/patches-4.4/0410-rtc-Add-SPI-alias-for-pcf2123-driver.patch
index c5dda32..574f3de 100644
--- a/target/linux/brcm2708/patches-4.4/0411-rtc-Add-SPI-alias-for-pcf2123-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0410-rtc-Add-SPI-alias-for-pcf2123-driver.patch
@@ -1,7 +1,7 @@
-From 2306db770d37cfaa8fe2805febe84a504709fac8 Mon Sep 17 00:00:00 2001
+From 2fbf5d24ff1f88d0aa977089549056cf4863f0de Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 15 Jun 2016 16:48:41 +0100
-Subject: [PATCH 411/423] rtc: Add SPI alias for pcf2123 driver
+Subject: [PATCH] rtc: Add SPI alias for pcf2123 driver
 
 Without this alias, Device Tree won't cause the driver
 to be loaded.
diff --git a/target/linux/brcm2708/patches-4.4/0412-Added-support-for-headphones-microphone-and-bclk_rat.patch b/target/linux/brcm2708/patches-4.4/0411-Added-support-for-headphones-microphone-and-bclk_rat.patch
similarity index 96%
rename from target/linux/brcm2708/patches-4.4/0412-Added-support-for-headphones-microphone-and-bclk_rat.patch
rename to target/linux/brcm2708/patches-4.4/0411-Added-support-for-headphones-microphone-and-bclk_rat.patch
index 8f4e61e..fb6661c 100644
--- a/target/linux/brcm2708/patches-4.4/0412-Added-support-for-headphones-microphone-and-bclk_rat.patch
+++ b/target/linux/brcm2708/patches-4.4/0411-Added-support-for-headphones-microphone-and-bclk_rat.patch
@@ -1,8 +1,8 @@
-From 5f16fa4548512193704eb5480bf93f6badc803bd Mon Sep 17 00:00:00 2001
+From 84b2845509748519f239b8212bdc672b84755cd0 Mon Sep 17 00:00:00 2001
 From: Matt Flax <flatmax at flatmax.org>
 Date: Fri, 17 Jun 2016 12:03:39 +1000
-Subject: [PATCH 412/423] Added support for headphones, microphone and
- bclk_ratio settings.
+Subject: [PATCH] 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.
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0413-IQaudIO-auto-mute-for-AMP-and-DigiAMP.patch b/target/linux/brcm2708/patches-4.4/0412-IQaudIO-auto-mute-for-AMP-and-DigiAMP.patch
similarity index 98%
rename from target/linux/brcm2708/patches-4.4/0413-IQaudIO-auto-mute-for-AMP-and-DigiAMP.patch
rename to target/linux/brcm2708/patches-4.4/0412-IQaudIO-auto-mute-for-AMP-and-DigiAMP.patch
index 1e6f65a..7636883 100644
--- a/target/linux/brcm2708/patches-4.4/0413-IQaudIO-auto-mute-for-AMP-and-DigiAMP.patch
+++ b/target/linux/brcm2708/patches-4.4/0412-IQaudIO-auto-mute-for-AMP-and-DigiAMP.patch
@@ -1,7 +1,7 @@
-From c5368041bdadf28f7081deb6e11c9aaafe05377f Mon Sep 17 00:00:00 2001
+From 98f0214603229df4038cc0d318111a37b10078a1 Mon Sep 17 00:00:00 2001
 From: DigitalDreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Mon, 9 May 2016 20:38:08 +0100
-Subject: [PATCH 413/423] IQaudIO: auto-mute for AMP+ and DigiAMP+
+Subject: [PATCH] IQaudIO: auto-mute for AMP+ and DigiAMP+
 
 IQAudIO amplifier mute via GPIO22. Add dt params for "one-shot" unmute
 and auto mute.
diff --git a/target/linux/brcm2708/patches-4.4/0414-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch b/target/linux/brcm2708/patches-4.4/0413-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch
similarity index 87%
rename from target/linux/brcm2708/patches-4.4/0414-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch
rename to target/linux/brcm2708/patches-4.4/0413-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch
index 97f9589..c644066 100644
--- a/target/linux/brcm2708/patches-4.4/0414-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch
+++ b/target/linux/brcm2708/patches-4.4/0413-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch
@@ -1,7 +1,7 @@
-From 62f0d8320a176602d37c51fad03cafc736441ad4 Mon Sep 17 00:00:00 2001
+From 3aa91ff84515641bdc7a3b2ddf4638af0942bc56 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Thu, 23 Jun 2016 16:37:46 +0100
-Subject: [PATCH 414/423] mmc: Apply ERASE_BROKEN quirks correctly
+Subject: [PATCH] mmc: Apply ERASE_BROKEN quirks correctly
 
 Signed-off-by: Phil Elwell <phil at raspberrypi.org>
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0415-enable-led-support-for-xpad-driver-fixes-flashing-le.patch b/target/linux/brcm2708/patches-4.4/0414-enable-led-support-for-xpad-driver-fixes-flashing-le.patch
similarity index 84%
rename from target/linux/brcm2708/patches-4.4/0415-enable-led-support-for-xpad-driver-fixes-flashing-le.patch
rename to target/linux/brcm2708/patches-4.4/0414-enable-led-support-for-xpad-driver-fixes-flashing-le.patch
index 6d280b0..45ffaee 100644
--- a/target/linux/brcm2708/patches-4.4/0415-enable-led-support-for-xpad-driver-fixes-flashing-le.patch
+++ b/target/linux/brcm2708/patches-4.4/0414-enable-led-support-for-xpad-driver-fixes-flashing-le.patch
@@ -1,8 +1,8 @@
-From 7c9908c6f70b0c8c7213d663f8e517b5321ebfbe Mon Sep 17 00:00:00 2001
+From 37d18c9d142632b625e03586657631099217dd5d Mon Sep 17 00:00:00 2001
 From: Jools Wills <buzz at exotica.org.uk>
 Date: Sun, 26 Jun 2016 16:28:48 +0000
-Subject: [PATCH 415/423] enable led support for xpad driver - fixes flashing
- leds on controller
+Subject: [PATCH] enable led support for xpad driver - fixes flashing leds on
+ controller
 
 ---
  arch/arm/configs/bcm2709_defconfig | 1 +
diff --git a/target/linux/brcm2708/patches-4.4/0416-Add-critical-information-for-getting-pi3-miniuart-bt.patch b/target/linux/brcm2708/patches-4.4/0415-Add-critical-information-for-getting-pi3-miniuart-bt.patch
similarity index 86%
rename from target/linux/brcm2708/patches-4.4/0416-Add-critical-information-for-getting-pi3-miniuart-bt.patch
rename to target/linux/brcm2708/patches-4.4/0415-Add-critical-information-for-getting-pi3-miniuart-bt.patch
index 3c1a463..dc3871d 100644
--- a/target/linux/brcm2708/patches-4.4/0416-Add-critical-information-for-getting-pi3-miniuart-bt.patch
+++ b/target/linux/brcm2708/patches-4.4/0415-Add-critical-information-for-getting-pi3-miniuart-bt.patch
@@ -1,8 +1,8 @@
-From 97230b9a008e1c6707ad1bafa4ebd4d6b11a022f Mon Sep 17 00:00:00 2001
+From 740fa92fd41e2c4dd5798d462fe4646d0cc6cc48 Mon Sep 17 00:00:00 2001
 From: David Lechner <david at lechnology.com>
 Date: Mon, 27 Jun 2016 22:52:22 -0500
-Subject: [PATCH 416/423] Add critical information for getting pi3-miniuart-bt
- overlay to work
+Subject: [PATCH] Add critical information for getting pi3-miniuart-bt overlay
+ to work
 
 Bluetooth on RPi 3 using uart1 will not work without setting core_freq=250 in config.txt. This is not
 documented anywhere, so this seems like a good place to start.
diff --git a/target/linux/brcm2708/patches-4.4/0417-bcm2835-sdhost-Improvements-to-error-recovery.patch b/target/linux/brcm2708/patches-4.4/0416-bcm2835-sdhost-Improvements-to-error-recovery.patch
similarity index 98%
rename from target/linux/brcm2708/patches-4.4/0417-bcm2835-sdhost-Improvements-to-error-recovery.patch
rename to target/linux/brcm2708/patches-4.4/0416-bcm2835-sdhost-Improvements-to-error-recovery.patch
index 7f77065..0437931 100644
--- a/target/linux/brcm2708/patches-4.4/0417-bcm2835-sdhost-Improvements-to-error-recovery.patch
+++ b/target/linux/brcm2708/patches-4.4/0416-bcm2835-sdhost-Improvements-to-error-recovery.patch
@@ -1,7 +1,7 @@
-From 336a4fae0a026365e58842b5df9e275858938f79 Mon Sep 17 00:00:00 2001
+From d90c379ffd993c72371252fe7840c14e4428410b Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Wed, 15 Jun 2016 17:13:55 +0100
-Subject: [PATCH 417/423] bcm2835-sdhost: Improvements to error recovery
+Subject: [PATCH] bcm2835-sdhost: Improvements to error recovery
 
 1) Try to avoid reducing overclock when a card is removed.
 
diff --git a/target/linux/brcm2708/patches-4.4/0418-pinctrl-bcm2835-Fix-return-type-of-bcm2835_pmx_free.patch b/target/linux/brcm2708/patches-4.4/0417-pinctrl-bcm2835-Fix-return-type-of-bcm2835_pmx_free.patch
similarity index 84%
rename from target/linux/brcm2708/patches-4.4/0418-pinctrl-bcm2835-Fix-return-type-of-bcm2835_pmx_free.patch
rename to target/linux/brcm2708/patches-4.4/0417-pinctrl-bcm2835-Fix-return-type-of-bcm2835_pmx_free.patch
index 0cb395d..57e5785 100644
--- a/target/linux/brcm2708/patches-4.4/0418-pinctrl-bcm2835-Fix-return-type-of-bcm2835_pmx_free.patch
+++ b/target/linux/brcm2708/patches-4.4/0417-pinctrl-bcm2835-Fix-return-type-of-bcm2835_pmx_free.patch
@@ -1,7 +1,7 @@
-From cf4bd841e1b8b74c77601b90dff106331740af62 Mon Sep 17 00:00:00 2001
+From a1c9b6e2482ecc3dd3191b494d6cb717fa700ce4 Mon Sep 17 00:00:00 2001
 From: popcornmix <popcornmix at gmail.com>
 Date: Tue, 28 Jun 2016 22:13:15 +0100
-Subject: [PATCH 418/423] pinctrl-bcm2835: Fix return type of bcm2835_pmx_free
+Subject: [PATCH] pinctrl-bcm2835: Fix return type of bcm2835_pmx_free
 
 ---
  drivers/pinctrl/bcm/pinctrl-bcm2835.c | 3 ++-
diff --git a/target/linux/brcm2708/patches-4.4/0419-Add-IQAudIO-Digi-WM8804-board-support.patch b/target/linux/brcm2708/patches-4.4/0418-Add-IQAudIO-Digi-WM8804-board-support.patch
similarity index 98%
rename from target/linux/brcm2708/patches-4.4/0419-Add-IQAudIO-Digi-WM8804-board-support.patch
rename to target/linux/brcm2708/patches-4.4/0418-Add-IQAudIO-Digi-WM8804-board-support.patch
index 0cc610c..1c57ceb 100644
--- a/target/linux/brcm2708/patches-4.4/0419-Add-IQAudIO-Digi-WM8804-board-support.patch
+++ b/target/linux/brcm2708/patches-4.4/0418-Add-IQAudIO-Digi-WM8804-board-support.patch
@@ -1,7 +1,7 @@
-From c0b9e2c502269ef126969709f54e4489b87e3923 Mon Sep 17 00:00:00 2001
+From a5bf4ef8a41a52453b9505ffef39b7635feef4b2 Mon Sep 17 00:00:00 2001
 From: DigitalDreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Thu, 30 Jun 2016 18:38:42 +0100
-Subject: [PATCH 419/423] Add IQAudIO Digi WM8804 board support
+Subject: [PATCH] Add IQAudIO Digi WM8804 board support
 
 Support IQAudIO Digi board with iqaudio_digi machine driver and
  iqaudio-digi-wm8804-audio overlay.
diff --git a/target/linux/brcm2708/patches-4.4/0420-dts-Add-overlay-for-NXP-SC16IS752-Dual-UART-with-SPI.patch b/target/linux/brcm2708/patches-4.4/0419-dts-Add-overlay-for-NXP-SC16IS752-Dual-UART-with-SPI.patch
similarity index 95%
rename from target/linux/brcm2708/patches-4.4/0420-dts-Add-overlay-for-NXP-SC16IS752-Dual-UART-with-SPI.patch
rename to target/linux/brcm2708/patches-4.4/0419-dts-Add-overlay-for-NXP-SC16IS752-Dual-UART-with-SPI.patch
index 595c0ee..f47efb7 100644
--- a/target/linux/brcm2708/patches-4.4/0420-dts-Add-overlay-for-NXP-SC16IS752-Dual-UART-with-SPI.patch
+++ b/target/linux/brcm2708/patches-4.4/0419-dts-Add-overlay-for-NXP-SC16IS752-Dual-UART-with-SPI.patch
@@ -1,7 +1,7 @@
-From 27fac2f6623e8a3cddeaaf9851b719469b8df22e Mon Sep 17 00:00:00 2001
+From fbbafbb2b4739eb6980f18c78c276ffbee2602db Mon Sep 17 00:00:00 2001
 From: Erdem MEYDANLI <erdem.meydanli at punica.com.tr>
 Date: Thu, 30 Jun 2016 21:05:08 +0300
-Subject: [PATCH 420/423] dts: Add overlay for NXP SC16IS752 Dual UART with SPI
+Subject: [PATCH] dts: Add overlay for NXP SC16IS752 Dual UART with SPI
  Interface
 
 ---
diff --git a/target/linux/brcm2708/patches-4.4/0421-spi-bcm2835-Disable-forced-software-CS.patch b/target/linux/brcm2708/patches-4.4/0420-spi-bcm2835-Disable-forced-software-CS.patch
similarity index 90%
rename from target/linux/brcm2708/patches-4.4/0421-spi-bcm2835-Disable-forced-software-CS.patch
rename to target/linux/brcm2708/patches-4.4/0420-spi-bcm2835-Disable-forced-software-CS.patch
index 1e40763..ad922ae 100644
--- a/target/linux/brcm2708/patches-4.4/0421-spi-bcm2835-Disable-forced-software-CS.patch
+++ b/target/linux/brcm2708/patches-4.4/0420-spi-bcm2835-Disable-forced-software-CS.patch
@@ -1,7 +1,7 @@
-From e95bf039347d97f57e7045d7cd2d1f7e4daed1c6 Mon Sep 17 00:00:00 2001
+From f3ca1e96b47181a009fd99fbb8e22f9afa5b1972 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 1 Jul 2016 22:09:24 +0100
-Subject: [PATCH 421/423] spi-bcm2835: Disable forced software CS
+Subject: [PATCH] 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
diff --git a/target/linux/brcm2708/patches-4.4/0422-BCM270X_DT-Overlay-to-re-enable-HW-CS-on-SPI0.patch b/target/linux/brcm2708/patches-4.4/0421-BCM270X_DT-Overlay-to-re-enable-HW-CS-on-SPI0.patch
similarity index 93%
rename from target/linux/brcm2708/patches-4.4/0422-BCM270X_DT-Overlay-to-re-enable-HW-CS-on-SPI0.patch
rename to target/linux/brcm2708/patches-4.4/0421-BCM270X_DT-Overlay-to-re-enable-HW-CS-on-SPI0.patch
index 81319b2..4300c54 100644
--- a/target/linux/brcm2708/patches-4.4/0422-BCM270X_DT-Overlay-to-re-enable-HW-CS-on-SPI0.patch
+++ b/target/linux/brcm2708/patches-4.4/0421-BCM270X_DT-Overlay-to-re-enable-HW-CS-on-SPI0.patch
@@ -1,7 +1,7 @@
-From b8fdcf0f9af482e7dfa6fc5bb470318696789a52 Mon Sep 17 00:00:00 2001
+From 538f85c20d4209dbae6851f9733e3e3f0450ff32 Mon Sep 17 00:00:00 2001
 From: Phil Elwell <phil at raspberrypi.org>
 Date: Fri, 1 Jul 2016 22:34:52 +0100
-Subject: [PATCH 422/423] BCM270X_DT: Overlay to re-enable HW CS on SPI0
+Subject: [PATCH] BCM270X_DT: Overlay to re-enable HW CS on SPI0
 
 See: https://github.com/raspberrypi/linux/issues/1547
 
diff --git a/target/linux/brcm2708/patches-4.4/0423-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch b/target/linux/brcm2708/patches-4.4/0422-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch
similarity index 98%
rename from target/linux/brcm2708/patches-4.4/0423-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch
rename to target/linux/brcm2708/patches-4.4/0422-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch
index fd411d8..d51d4f9 100644
--- a/target/linux/brcm2708/patches-4.4/0423-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch
+++ b/target/linux/brcm2708/patches-4.4/0422-Add-support-for-Dion-Audio-LOCO-DAC-AMP-HAT.patch
@@ -1,7 +1,7 @@
-From 6fa4c2110478a814a9dd44d64522e7a81a1a2793 Mon Sep 17 00:00:00 2001
+From 91bb6ae349039ab6c1336a463d3c3d26e4df9fb0 Mon Sep 17 00:00:00 2001
 From: DigitalDreamtime <clive.messer at digitaldreamtime.co.uk>
 Date: Sat, 2 Jul 2016 16:26:19 +0100
-Subject: [PATCH 423/423] Add support for Dion Audio LOCO DAC-AMP HAT
+Subject: [PATCH] Add support for Dion Audio LOCO DAC-AMP HAT
 
 Using dedicated machine driver and pcm5102a codec driver.
 
diff --git a/target/linux/brcm2708/patches-4.4/0423-ASoc-wm8731-add-32bit-mode.patch b/target/linux/brcm2708/patches-4.4/0423-ASoc-wm8731-add-32bit-mode.patch
new file mode 100644
index 0000000..b9f3f39
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0423-ASoc-wm8731-add-32bit-mode.patch
@@ -0,0 +1,39 @@
+From 4dd7b6b8c1354ab21b4e3f85dcd513252fe8afea Mon Sep 17 00:00:00 2001
+From: Matt Flax <flatmax at flatmax.org>
+Date: Fri, 17 Jun 2016 14:48:16 +1000
+Subject: [PATCH] ASoc: wm8731: add 32bit mode.
+
+commit cf5ef3a299ba32f6ac24c3c6ba18c1b7f1b5475f upstream.
+
+This patch adds 32 bit word capability to the wm8731 driver. The wm8731
+codec is capable of handling 32 bit word sizes, however that has not
+previously been activated in the codec driver.
+
+Signed-off-by: Matt Flax <flatmax at flatmax.org>
+Acked-by: Charles Keepax <ckeepax at opensource.wolfsonmicro.com>
+Signed-off-by: Mark Brown <broonie at kernel.org>
+---
+ sound/soc/codecs/wm8731.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/sound/soc/codecs/wm8731.c
++++ b/sound/soc/codecs/wm8731.c
+@@ -358,6 +358,9 @@ static int wm8731_hw_params(struct snd_p
+ 	case 24:
+ 		iface |= 0x0008;
+ 		break;
++	case 32:
++		iface |= 0x000c;
++		break;
+ 	}
+ 
+ 	wm8731_set_deemph(codec);
+@@ -541,7 +544,7 @@ static int wm8731_startup(struct snd_pcm
+ #define WM8731_RATES SNDRV_PCM_RATE_8000_96000
+ 
+ #define WM8731_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
+-	SNDRV_PCM_FMTBIT_S24_LE)
++	SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+ 
+ static const struct snd_soc_dai_ops wm8731_dai_ops = {
+ 	.startup	= wm8731_startup,
diff --git a/target/linux/brcm2708/patches-4.4/0424-BCM270X_DT-Declare-the-audio-PWM-pins-explicitly.patch b/target/linux/brcm2708/patches-4.4/0424-BCM270X_DT-Declare-the-audio-PWM-pins-explicitly.patch
new file mode 100644
index 0000000..c0f2c39
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0424-BCM270X_DT-Declare-the-audio-PWM-pins-explicitly.patch
@@ -0,0 +1,122 @@
+From 4a1655a918b26f5d24d04b1bb798feb39982ac78 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Mon, 20 Jun 2016 13:21:26 +0100
+Subject: [PATCH] BCM270X_DT: Declare the audio PWM pins explicitly
+
+Make the audio driver's use of the PWM functions explicit. Overlays
+that want to use the PWM functionality for other purposes must
+disable the audio node.
+
+See: https://github.com/raspberrypi/linux/issues/1473
+
+Signed-off-by: Phil Elwell <phil at raspberrypi.org>
+---
+ arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 10 ++++++++++
+ arch/arm/boot/dts/bcm2708-rpi-b.dts      |  9 +++++++++
+ arch/arm/boot/dts/bcm2709-rpi-2-b.dts    | 10 ++++++++++
+ arch/arm/boot/dts/bcm2710-rpi-3-b.dts    | 10 ++++++++++
+ 4 files changed, 39 insertions(+)
+
+--- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
++++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
+@@ -37,6 +37,11 @@
+ 		brcm,pins = <18 19 20 21>;
+ 		brcm,function = <4>; /* alt0 */
+ 	};
++
++	audio_pins: audio_pins {
++		brcm,pins = <40 45>;
++		brcm,function = <4>;
++	};
+ };
+ 
+ &sdhost {
+@@ -120,6 +125,11 @@
+ 	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+ };
+ 
++&audio {
++	pinctrl-names = "default";
++	pinctrl-0 = <&audio_pins>;
++};
++
+ / {
+ 	__overrides__ {
+ 		uart0 = <&uart0>,"status";
+--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
++++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
+@@ -36,6 +36,10 @@
+ 	i2s_pins: i2s {
+ 		brcm,pins = <28 29 30 31>;
+ 		brcm,function = <6>; /* alt2 */
++
++	audio_pins: audio_pins {
++		brcm,pins = <40 45>;
++		brcm,function = <4>;
+ 	};
+ };
+ 
+@@ -114,6 +118,11 @@
+ 	hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
+ };
+ 
++&audio {
++	pinctrl-names = "default";
++	pinctrl-0 = <&audio_pins>;
++};
++
+ / {
+ 	__overrides__ {
+ 		uart0 = <&uart0>,"status";
+--- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
++++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
+@@ -37,6 +37,11 @@
+ 		brcm,pins = <18 19 20 21>;
+ 		brcm,function = <4>; /* alt0 */
+ 	};
++
++	audio_pins: audio_pins {
++		brcm,pins = <40 45>;
++		brcm,function = <4>;
++	};
+ };
+ 
+ &sdhost {
+@@ -120,6 +125,11 @@
+ 	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+ };
+ 
++&audio {
++	pinctrl-names = "default";
++	pinctrl-0 = <&audio_pins>;
++};
++
+ / {
+ 	__overrides__ {
+ 		uart0 = <&uart0>,"status";
+--- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
++++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
+@@ -61,6 +61,11 @@
+ 		brcm,function;
+ 		brcm,pull;
+ 	};
++
++	audio_pins: audio_pins {
++		brcm,pins = <40 41>;
++		brcm,function = <4>;
++	};
+ };
+ 
+ &sdhost {
+@@ -165,6 +170,11 @@
+ 	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+ };
+ 
++&audio {
++	pinctrl-names = "default";
++	pinctrl-0 = <&audio_pins>;
++};
++
+ / {
+ 	chosen {
+ 		bootargs = "8250.nr_uarts=1";
diff --git a/target/linux/brcm2708/patches-4.4/0425-BCM270X_DT-Restore-lost-closing-brace.patch b/target/linux/brcm2708/patches-4.4/0425-BCM270X_DT-Restore-lost-closing-brace.patch
new file mode 100644
index 0000000..38e04aa
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0425-BCM270X_DT-Restore-lost-closing-brace.patch
@@ -0,0 +1,20 @@
+From a9b472033e4d34df447f1bdf87d520137559bb66 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Tue, 12 Jul 2016 10:35:01 +0100
+Subject: [PATCH] BCM270X_DT: Restore lost closing brace.
+
+Signed-off-by: Phil Elwell <phil at raspberrypi.org>
+---
+ arch/arm/boot/dts/bcm2708-rpi-b.dts | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
++++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
+@@ -36,6 +36,7 @@
+ 	i2s_pins: i2s {
+ 		brcm,pins = <28 29 30 31>;
+ 		brcm,function = <6>; /* alt2 */
++	};
+ 
+ 	audio_pins: audio_pins {
+ 		brcm,pins = <40 45>;
diff --git a/target/linux/brcm2708/patches-4.4/0426-config-Add-driver-for-mcp23017-I2C-GPIO-expander.patch b/target/linux/brcm2708/patches-4.4/0426-config-Add-driver-for-mcp23017-I2C-GPIO-expander.patch
new file mode 100644
index 0000000..46a030c
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0426-config-Add-driver-for-mcp23017-I2C-GPIO-expander.patch
@@ -0,0 +1,56 @@
+From 42700ba3ac2664f121b29892762b5c7eb2292fe1 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Thu, 14 Jul 2016 10:40:20 +0100
+Subject: [PATCH] config: Add driver for mcp23017 I2C GPIO expander
+
+There is already an overlay for the mcp23017 I2C GPIO expander,
+but it does nothing without the required driver module.
+
+Signed-off-by: Phil Elwell <phil at raspberrypi.org>
+---
+ arch/arm/configs/bcm2709_defconfig | 3 ++-
+ arch/arm/configs/bcmrpi_defconfig  | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -619,6 +619,7 @@ CONFIG_GPIO_SYSFS=y
+ CONFIG_GPIO_BCM_VIRT=y
+ CONFIG_GPIO_ARIZONA=m
+ CONFIG_GPIO_STMPE=y
++CONFIG_GPIO_MCP23S08=m
+ CONFIG_W1=m
+ CONFIG_W1_MASTER_DS2490=m
+ CONFIG_W1_MASTER_DS2482=m
+@@ -867,9 +868,9 @@ CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m
+ CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m
+ CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m
+ CONFIG_SND_DIGIDAC1_SOUNDCARD=m
+-CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m
+ CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m
+ CONFIG_SND_SOC_ADAU1701=m
+ CONFIG_SND_SOC_WM8804_I2C=m
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -611,6 +611,7 @@ CONFIG_PPS_CLIENT_GPIO=m
+ CONFIG_GPIO_SYSFS=y
+ CONFIG_GPIO_ARIZONA=m
+ CONFIG_GPIO_STMPE=y
++CONFIG_GPIO_MCP23S08=m
+ CONFIG_W1=m
+ CONFIG_W1_MASTER_DS2490=m
+ CONFIG_W1_MASTER_DS2482=m
+@@ -859,9 +860,9 @@ CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
+ CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m
+ CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m
+ CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m
+ CONFIG_SND_DIGIDAC1_SOUNDCARD=m
+-CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m
+ CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m
+ CONFIG_SND_SOC_ADAU1701=m
+ CONFIG_SND_SOC_WM8804_I2C=m
diff --git a/target/linux/brcm2708/patches-4.4/0427-vchiq_arm-Avoid-use-of-mutex-in-add_completion.patch b/target/linux/brcm2708/patches-4.4/0427-vchiq_arm-Avoid-use-of-mutex-in-add_completion.patch
new file mode 100644
index 0000000..6dfecc0
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0427-vchiq_arm-Avoid-use-of-mutex-in-add_completion.patch
@@ -0,0 +1,192 @@
+From 00d6172964200c5d72cef2264ff09d38f764bd69 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Mon, 20 Jun 2016 13:51:44 +0100
+Subject: [PATCH] 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 at raspberrypi.org>
+---
+ .../vc04_services/interface/vchiq_arm/vchiq_arm.c  | 55 +++++++++++-----------
+ .../vc04_services/interface/vchiq_arm/vchiq_core.c | 14 ++++--
+ 2 files changed, 37 insertions(+), 32 deletions(-)
+
+--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
++++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
+@@ -64,10 +64,10 @@
+ #define VCHIQ_MINOR 0
+ 
+ /* Some per-instance constants */
+-#define MAX_COMPLETIONS 16
++#define MAX_COMPLETIONS 128
+ #define MAX_SERVICES 64
+ #define MAX_ELEMENTS 8
+-#define MSG_QUEUE_SIZE 64
++#define MSG_QUEUE_SIZE 128
+ 
+ #define KEEPALIVE_VER 1
+ #define KEEPALIVE_VER_MIN KEEPALIVE_VER
+@@ -208,28 +208,24 @@ add_completion(VCHIQ_INSTANCE_T instance
+ 	void *bulk_userdata)
+ {
+ 	VCHIQ_COMPLETION_DATA_T *completion;
++	int insert;
+ 	DEBUG_INITIALISE(g_state.local)
+ 
+-	mutex_lock(&instance->completion_mutex);
+-
+-	while (instance->completion_insert ==
+-		(instance->completion_remove + MAX_COMPLETIONS)) {
++	insert = instance->completion_insert;
++	while ((insert - instance->completion_remove) >= MAX_COMPLETIONS) {
+ 		/* Out of space - wait for the client */
+ 		DEBUG_TRACE(SERVICE_CALLBACK_LINE);
+ 		vchiq_log_trace(vchiq_arm_log_level,
+ 			"add_completion - completion queue full");
+ 		DEBUG_COUNT(COMPLETION_QUEUE_FULL_COUNT);
+ 
+-		mutex_unlock(&instance->completion_mutex);
+ 		if (down_interruptible(&instance->remove_event) != 0) {
+ 			vchiq_log_info(vchiq_arm_log_level,
+ 				"service_callback interrupted");
+ 			return VCHIQ_RETRY;
+ 		}
+ 
+-		mutex_lock(&instance->completion_mutex);
+ 		if (instance->closing) {
+-			mutex_unlock(&instance->completion_mutex);
+ 			vchiq_log_info(vchiq_arm_log_level,
+ 				"service_callback closing");
+ 			return VCHIQ_SUCCESS;
+@@ -237,9 +233,7 @@ add_completion(VCHIQ_INSTANCE_T instance
+ 		DEBUG_TRACE(SERVICE_CALLBACK_LINE);
+ 	}
+ 
+-	completion =
+-		 &instance->completions[instance->completion_insert &
+-		 (MAX_COMPLETIONS - 1)];
++	completion = &instance->completions[insert & (MAX_COMPLETIONS - 1)];
+ 
+ 	completion->header = header;
+ 	completion->reason = reason;
+@@ -260,12 +254,9 @@ add_completion(VCHIQ_INSTANCE_T instance
+ 	wmb();
+ 
+ 	if (reason == VCHIQ_MESSAGE_AVAILABLE)
+-		user_service->message_available_pos =
+-			instance->completion_insert;
+-
+-	instance->completion_insert++;
++		user_service->message_available_pos = insert;
+ 
+-	mutex_unlock(&instance->completion_mutex);
++	instance->completion_insert = ++insert;
+ 
+ 	up(&instance->insert_event);
+ 
+@@ -795,6 +786,7 @@ vchiq_ioctl(struct file *file, unsigned
+ 			instance->completion_insert)
+ 			&& !instance->closing) {
+ 			int rc;
++
+ 			DEBUG_TRACE(AWAIT_COMPLETION_LINE);
+ 			mutex_unlock(&instance->completion_mutex);
+ 			rc = down_interruptible(&instance->insert_event);
+@@ -809,24 +801,29 @@ vchiq_ioctl(struct file *file, unsigned
+ 		}
+ 		DEBUG_TRACE(AWAIT_COMPLETION_LINE);
+ 
+-		/* A read memory barrier is needed to stop prefetch of a stale
+-		** completion record
+-		*/
+-		rmb();
+-
+ 		if (ret == 0) {
+ 			int msgbufcount = args.msgbufcount;
++			int remove;
++
++			remove = instance->completion_remove;
++
+ 			for (ret = 0; ret < args.count; ret++) {
+ 				VCHIQ_COMPLETION_DATA_T *completion;
+ 				VCHIQ_SERVICE_T *service;
+ 				USER_SERVICE_T *user_service;
+ 				VCHIQ_HEADER_T *header;
+-				if (instance->completion_remove ==
+-					instance->completion_insert)
++
++				if (remove == instance->completion_insert)
+ 					break;
++
+ 				completion = &instance->completions[
+-					instance->completion_remove &
+-					(MAX_COMPLETIONS - 1)];
++					remove & (MAX_COMPLETIONS - 1)];
++
++
++				/* A read memory barrier is needed to prevent
++				** the prefetch of a stale completion record
++				*/
++				rmb();
+ 
+ 				service = completion->service_userdata;
+ 				user_service = service->base.userdata;
+@@ -903,7 +900,11 @@ vchiq_ioctl(struct file *file, unsigned
+ 					break;
+ 				}
+ 
+-				instance->completion_remove++;
++				/* Ensure that the above copy has completed
++				** before advancing the remove pointer. */
++				mb();
++
++				instance->completion_remove = ++remove;
+ 			}
+ 
+ 			if (msgbufcount != args.msgbufcount) {
+--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
++++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
+@@ -610,15 +610,15 @@ process_free_queue(VCHIQ_STATE_T *state)
+ 	BITSET_T service_found[BITSET_SIZE(VCHIQ_MAX_SERVICES)];
+ 	int slot_queue_available;
+ 
+-	/* Use a read memory barrier to ensure that any state that may have
+-	** been modified by another thread is not masked by stale prefetched
+-	** values. */
+-	rmb();
+-
+ 	/* Find slots which have been freed by the other side, and return them
+ 	** to the available queue. */
+ 	slot_queue_available = state->slot_queue_available;
+ 
++	/* Use a memory barrier to ensure that any state that may have been
++	** modified by another thread is not masked by stale prefetched
++	** values. */
++	mb();
++
+ 	while (slot_queue_available != local->slot_queue_recycle) {
+ 		unsigned int pos;
+ 		int slot_index = local->slot_queue[slot_queue_available++ &
+@@ -626,6 +626,8 @@ process_free_queue(VCHIQ_STATE_T *state)
+ 		char *data = (char *)SLOT_DATA_FROM_INDEX(state, slot_index);
+ 		int data_found = 0;
+ 
++		rmb();
++
+ 		vchiq_log_trace(vchiq_core_log_level, "%d: pfq %d=%x %x %x",
+ 			state->id, slot_index, (unsigned int)data,
+ 			local->slot_queue_recycle, slot_queue_available);
+@@ -741,6 +743,8 @@ process_free_queue(VCHIQ_STATE_T *state)
+ 				up(&state->data_quota_event);
+ 		}
+ 
++		mb();
++
+ 		state->slot_queue_available = slot_queue_available;
+ 		up(&state->slot_available_event);
+ 	}
diff --git a/target/linux/brcm2708/patches-4.4/0428-bcm2708_fb-Default-framebuffer-to-32-bit.patch b/target/linux/brcm2708/patches-4.4/0428-bcm2708_fb-Default-framebuffer-to-32-bit.patch
new file mode 100644
index 0000000..9f3ec1f
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0428-bcm2708_fb-Default-framebuffer-to-32-bit.patch
@@ -0,0 +1,21 @@
+From bf38f441ef6cbc85f8232f4a43e19557c89ad21c Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix at gmail.com>
+Date: Thu, 28 Jul 2016 12:15:47 +0100
+Subject: [PATCH] bcm2708_fb: Default framebuffer to 32-bit
+
+Can be overridden with framebuffer_depth=16 in config.txt for old behaviour
+---
+ drivers/video/fbdev/bcm2708_fb.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/video/fbdev/bcm2708_fb.c
++++ b/drivers/video/fbdev/bcm2708_fb.c
+@@ -51,7 +51,7 @@ static const char *bcm2708_name = "BCM27
+ 
+ static int fbwidth = 800;  /* module parameter */
+ static int fbheight = 480; /* module parameter */
+-static int fbdepth = 16;   /* module parameter */
++static int fbdepth = 32;   /* module parameter */
+ static int fbswap = 0;     /* module parameter */
+ 
+ static u32 dma_busy_wait_threshold = 1<<15;
diff --git a/target/linux/brcm2708/patches-4.4/0429-fix-auto-sense-in-lirc_rpi-driver.patch b/target/linux/brcm2708/patches-4.4/0429-fix-auto-sense-in-lirc_rpi-driver.patch
new file mode 100644
index 0000000..4857620
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0429-fix-auto-sense-in-lirc_rpi-driver.patch
@@ -0,0 +1,45 @@
+From 7e5bbf1a74ec6bbaa25fe6cadf715946e3e4d692 Mon Sep 17 00:00:00 2001
+From: Ingo Kresse <ingo.kresse at gmail.com>
+Date: Fri, 29 Jul 2016 22:50:21 +0000
+Subject: [PATCH] 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.
+---
+ drivers/staging/media/lirc/lirc_rpi.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/drivers/staging/media/lirc/lirc_rpi.c
++++ b/drivers/staging/media/lirc/lirc_rpi.c
+@@ -79,6 +79,7 @@ static bool invert = 0;
+ 
+ struct gpio_chip *gpiochip;
+ static int irq_num;
++static int auto_sense = 1;
+ 
+ /* forward declarations */
+ static long send_pulse(unsigned long length);
+@@ -279,7 +280,9 @@ static irqreturn_t irq_handler(int i, vo
+ 				 * detecting pulse while this
+ 				 * MUST be a space!
+ 				 */
+-				sense = sense ? 0 : 1;
++				if (auto_sense) {
++					sense = sense ? 0 : 1;
++				}
+ 			}
+ 		} else {
+ 			data = (int) (deltv*1000000 +
+@@ -417,6 +420,7 @@ static int init_port(void)
+ 		printk(KERN_INFO LIRC_DRIVER_NAME
+ 		       ": manually using active %s receiver on GPIO pin %d\n",
+ 		       sense ? "low" : "high", gpio_in_pin);
++		auto_sense = 0;
+ 	}
+ 
+ 	return 0;
diff --git a/target/linux/brcm2708/patches-4.4/0430-enable-gembird-joypad-support.patch b/target/linux/brcm2708/patches-4.4/0430-enable-gembird-joypad-support.patch
new file mode 100644
index 0000000..2216661
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0430-enable-gembird-joypad-support.patch
@@ -0,0 +1,30 @@
+From 71a05d081ab744650deae9bc9008739ad16581f5 Mon Sep 17 00:00:00 2001
+From: Jools Wills <buzz at exotica.org.uk>
+Date: Mon, 8 Aug 2016 11:04:29 +0100
+Subject: [PATCH] enable gembird joypad support
+
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig  | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -891,6 +891,7 @@ CONFIG_HID_EMS_FF=m
+ CONFIG_HID_ELECOM=m
+ CONFIG_HID_ELO=m
+ CONFIG_HID_EZKEY=m
++CONFIG_HID_GEMBIRD=m
+ CONFIG_HID_HOLTEK=m
+ CONFIG_HID_KEYTOUCH=m
+ CONFIG_HID_KYE=m
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -883,6 +883,7 @@ CONFIG_HID_EMS_FF=m
+ CONFIG_HID_ELECOM=m
+ CONFIG_HID_ELO=m
+ CONFIG_HID_EZKEY=m
++CONFIG_HID_GEMBIRD=m
+ CONFIG_HID_HOLTEK=m
+ CONFIG_HID_KEYTOUCH=m
+ CONFIG_HID_KYE=m
diff --git a/target/linux/brcm2708/patches-4.4/0431-Added-HiFiBerry-Digi-Pro-driver.patch b/target/linux/brcm2708/patches-4.4/0431-Added-HiFiBerry-Digi-Pro-driver.patch
new file mode 100644
index 0000000..c718209
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0431-Added-HiFiBerry-Digi-Pro-driver.patch
@@ -0,0 +1,187 @@
+From e528c5d3f8cffca37abf9c69f7178f0221974225 Mon Sep 17 00:00:00 2001
+From: "Daniel Matuschek (HiFiBerry)" <daniel at hifiberry.com>
+Date: Tue, 26 Jul 2016 19:16:25 +0200
+Subject: [PATCH] Added HiFiBerry Digi+ Pro driver
+
+Signed-off-by: Daniel Matuschek <daniel at hifiberry.com>
+---
+ arch/arm/boot/dts/overlays/Makefile                |  1 +
+ arch/arm/boot/dts/overlays/README                  |  8 +++-
+ .../dts/overlays/hifiberry-digi-pro-overlay.dts    | 41 +++++++++++++++++
+ sound/soc/bcm/hifiberry_digi.c                     | 51 ++++++++++++++++++++++
+ 4 files changed, 100 insertions(+), 1 deletion(-)
+ create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
+
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -31,6 +31,7 @@ dtbo-$(RPI_DT_OVERLAYS) += hifiberry-amp
+ dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dac.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dacplus.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi.dtbo
++dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi-pro.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += hy28a.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += hy28b.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += i2c-gpio.dtbo
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -377,11 +377,17 @@ Params: 24db_digital_gain       Allow ga
+ 
+ 
+ Name:   hifiberry-digi
+-Info:   Configures the HifiBerry Digi audio card
++Info:   Configures the HifiBerry Digi and Digi+ audio card
+ Load:   dtoverlay=hifiberry-digi
+ Params: <None>
+ 
+ 
++Name:   hifiberry-digi-pro
++Info:   Configures the HifiBerry Digi+ Pro audio card
++Load:   dtoverlay=hifiberry-digi-pro
++Params: <None>
++
++
+ Name:   hy28a
+ Info:   HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics
+         Default values match Texy's display shield
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
+@@ -0,0 +1,41 @@
++// Definitions for HiFiBerry Digi Pro
++/dts-v1/;
++/plugin/;
++
++/ {
++	compatible = "brcm,bcm2708";
++
++	fragment at 0 {
++		target = <&i2s>;
++		__overlay__ {
++			status = "okay";
++		};
++	};
++
++	fragment at 1 {
++		target = <&i2c1>;
++		__overlay__ {
++			#address-cells = <1>;
++			#size-cells = <0>;
++			status = "okay";
++
++			wm8804 at 3b {
++				#sound-dai-cells = <0>;
++				compatible = "wlf,wm8804";
++				reg = <0x3b>;
++				status = "okay";
++			};
++		};
++	};
++
++	fragment at 2 {
++		target = <&sound>;
++		__overlay__ {
++			compatible = "hifiberry,hifiberry-digi";
++			i2s-controller = <&i2s>;
++			status = "okay";
++			clock44-gpio = <&gpio 5 0>;
++			clock48-gpio = <&gpio 6 0>;
++		};
++	};
++};
+--- a/sound/soc/bcm/hifiberry_digi.c
++++ b/sound/soc/bcm/hifiberry_digi.c
+@@ -23,6 +23,7 @@
+ #include <sound/pcm_params.h>
+ #include <sound/soc.h>
+ #include <sound/jack.h>
++#include <linux/gpio/consumer.h>
+ 
+ #include "../codecs/wm8804.h"
+ 
+@@ -30,9 +31,34 @@ static short int auto_shutdown_output =
+ module_param(auto_shutdown_output, short, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+ MODULE_PARM_DESC(auto_shutdown_output, "Shutdown SP/DIF output if playback is stopped");
+ 
++#define CLK_44EN_RATE 22579200UL
++#define CLK_48EN_RATE 24576000UL
++
++static bool snd_rpi_hifiberry_is_digipro;
++static struct gpio_desc *snd_rpi_hifiberry_clk44gpio;
++static struct gpio_desc *snd_rpi_hifiberry_clk48gpio;
+ 
+ static int samplerate=44100;
+ 
++static uint32_t snd_rpi_hifiberry_digi_enable_clock(int sample_rate)
++{
++	switch (sample_rate) {
++	case 11025:
++	case 22050:
++	case 44100:
++	case 88200:
++	case 176400:
++		gpiod_set_value_cansleep(snd_rpi_hifiberry_clk44gpio, 1);
++		gpiod_set_value_cansleep(snd_rpi_hifiberry_clk48gpio, 0);
++		return CLK_44EN_RATE;
++	default:
++		gpiod_set_value_cansleep(snd_rpi_hifiberry_clk48gpio, 1);
++		gpiod_set_value_cansleep(snd_rpi_hifiberry_clk44gpio, 0);
++		return CLK_48EN_RATE;
++	}
++}
++
++
+ static int snd_rpi_hifiberry_digi_init(struct snd_soc_pcm_runtime *rtd)
+ {
+ 	struct snd_soc_codec *codec = rtd->codec;
+@@ -40,6 +66,14 @@ static int snd_rpi_hifiberry_digi_init(s
+ 	/* enable TX output */
+ 	snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0);
+ 
++	/* Initialize Digi+ Pro hardware */
++	if (snd_rpi_hifiberry_is_digipro) {
++		struct snd_soc_dai_link *dai = rtd->dai_link;
++
++		dai->name = "HiFiBerry Digi+ Pro";
++		dai->stream_name = "HiFiBerry Digi+ Pro HiFi";
++	}
++
+ 	return 0;
+ }
+ 
+@@ -87,6 +121,9 @@ static int snd_rpi_hifiberry_digi_hw_par
+ 		mclk_freq=samplerate*128;
+ 		mclk_div=WM8804_MCLKDIV_128FS;
+ 	}
++
++	if (snd_rpi_hifiberry_is_digipro)
++		sysclk = snd_rpi_hifiberry_digi_enable_clock(samplerate);
+ 	
+ 	switch (samplerate) {
+ 		case 32000:
+@@ -121,6 +158,7 @@ static int snd_rpi_hifiberry_digi_hw_par
+ 
+ 	ret = snd_soc_dai_set_sysclk(codec_dai, WM8804_TX_CLKSRC_PLL,
+ 					sysclk, SND_SOC_CLOCK_OUT);
++
+ 	if (ret < 0) {
+ 		dev_err(codec->dev,
+ 		"Failed to set WM8804 SYSCLK: %d\n", ret);
+@@ -187,6 +225,19 @@ static int snd_rpi_hifiberry_digi_probe(
+ 		dai->platform_name = NULL;
+ 		dai->platform_of_node = i2s_node;
+ 	    }
++
++	    snd_rpi_hifiberry_is_digipro = 1;
++
++	    snd_rpi_hifiberry_clk44gpio =
++		devm_gpiod_get(&pdev->dev, "clock44", GPIOD_OUT_LOW);
++	    if (IS_ERR(snd_rpi_hifiberry_clk44gpio))
++		snd_rpi_hifiberry_is_digipro = 0;
++
++	    snd_rpi_hifiberry_clk48gpio =
++		devm_gpiod_get(&pdev->dev, "clock48", GPIOD_OUT_LOW);
++	    if (IS_ERR(snd_rpi_hifiberry_clk48gpio))
++		snd_rpi_hifiberry_is_digipro = 0;
++
+ 	}
+ 
+ 	ret = snd_soc_register_card(&snd_rpi_hifiberry_digi);
diff --git a/target/linux/brcm2708/patches-4.4/0432-clk-bcm2835-Mark-the-CM-SDRAM-clock-s-parent-as-crit.patch b/target/linux/brcm2708/patches-4.4/0432-clk-bcm2835-Mark-the-CM-SDRAM-clock-s-parent-as-crit.patch
new file mode 100644
index 0000000..a24afc8
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0432-clk-bcm2835-Mark-the-CM-SDRAM-clock-s-parent-as-crit.patch
@@ -0,0 +1,73 @@
+From a916fdb4aef02300a69cb49fb20f36ab4dc91673 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Wed, 1 Jun 2016 12:05:35 -0700
+Subject: [PATCH] clk: bcm2835: Mark the CM SDRAM clock's parent as critical
+
+While the SDRAM is being driven by its dedicated PLL most of the time,
+there is a little loop running in the firmware that periodically turns
+on the CM SDRAM clock (using its pre-initialized parent) and switches
+SDRAM to using the CM clock to do PVT recalibration.
+
+This avoids system hangs if we choose SDRAM's parent for some other
+clock, then disable that clock.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/clk/bcm/clk-bcm2835.c | 25 +++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -36,6 +36,7 @@
+ 
+ #include <linux/clk-provider.h>
+ #include <linux/clkdev.h>
++#include <linux/clk.h>
+ #include <linux/clk/bcm2835.h>
+ #include <linux/debugfs.h>
+ #include <linux/module.h>
+@@ -1839,6 +1840,25 @@ static const struct bcm2835_clk_desc clk
+ 		.ctl_reg = CM_PERIICTL),
+ };
+ 
++/*
++ * Permanently take a reference on the parent of the SDRAM clock.
++ *
++ * While the SDRAM is being driven by its dedicated PLL most of the
++ * time, there is a little loop running in the firmware that
++ * periodically switches the SDRAM to using our CM clock to do PVT
++ * recalibration, with the assumption that the previously configured
++ * SDRAM parent is still enabled and running.
++ */
++static int bcm2835_mark_sdc_parent_critical(struct clk *sdc)
++{
++	struct clk *parent = clk_get_parent(sdc);
++
++	if (IS_ERR(parent))
++		return PTR_ERR(parent);
++
++	return clk_prepare_enable(parent);
++}
++
+ static int bcm2835_clk_probe(struct platform_device *pdev)
+ {
+ 	struct device *dev = &pdev->dev;
+@@ -1848,6 +1868,7 @@ static int bcm2835_clk_probe(struct plat
+ 	const struct bcm2835_clk_desc *desc;
+ 	const size_t asize = ARRAY_SIZE(clk_desc_array);
+ 	size_t i;
++	int ret;
+ 
+ 	cprman = devm_kzalloc(dev,
+ 			      sizeof(*cprman) + asize * sizeof(*clks),
+@@ -1878,6 +1899,10 @@ static int bcm2835_clk_probe(struct plat
+ 			clks[i] = desc->clk_register(cprman, desc->data);
+ 	}
+ 
++	ret = bcm2835_mark_sdc_parent_critical(clks[BCM2835_CLOCK_SDRAM]);
++	if (ret)
++		return ret;
++
+ 	return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get,
+ 				   &cprman->onecell);
+ }
diff --git a/target/linux/brcm2708/patches-4.4/0433-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-divi.patch b/target/linux/brcm2708/patches-4.4/0433-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-divi.patch
new file mode 100644
index 0000000..717c95b
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0433-clk-bcm2835-Don-t-rate-change-PLLs-on-behalf-of-divi.patch
@@ -0,0 +1,27 @@
+From 523bd5057f674fec3006af36a1aaca2480cb09c6 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Thu, 31 Mar 2016 12:51:04 -0700
+Subject: [PATCH] clk: bcm2835: Don't rate change PLLs on behalf of dividers.
+
+Our core PLLs are intended to be configured once and left alone.  With
+the flag set, 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.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/clk/bcm/clk-bcm2835.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -1209,7 +1209,7 @@ bcm2835_register_pll_divider(struct bcm2
+ 	init.num_parents = 1;
+ 	init.name = divider_name;
+ 	init.ops = &bcm2835_pll_divider_clk_ops;
+-	init.flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED;
++	init.flags = CLK_IGNORE_UNUSED;
+ 
+ 	divider = devm_kzalloc(cprman->dev, sizeof(*divider), GFP_KERNEL);
+ 	if (!divider)
diff --git a/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch b/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch
new file mode 100644
index 0000000..ab7eff3
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0434-clk-bcm2835-Do-appropriate-name-lookups-for-DSI1-s-p.patch
@@ -0,0 +1,125 @@
+From b0fde8ea889e47505e4112d89da4be9469a37775 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Thu, 14 Apr 2016 15:13:53 -0700
+Subject: [PATCH] clk: bcm2835: Do appropriate name lookups for DSI1's parents
+ as well.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ .../bindings/clock/brcm,bcm2835-cprman.txt         | 12 ++++-
+ drivers/clk/bcm/clk-bcm2835.c                      | 54 +++++++++++++++++-----
+ 2 files changed, 54 insertions(+), 12 deletions(-)
+
+--- a/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt
++++ b/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt
+@@ -16,7 +16,17 @@ Required properties:
+ - #clock-cells:	Should be <1>. The permitted clock-specifier values can be
+ 		  found in include/dt-bindings/clock/bcm2835.h
+ - reg:		Specifies base physical address and size of the registers
+-- clocks:	The external oscillator clock phandle
++- clocks:	phandles to the parent clocks used as input to the module, in
++		  the following order:
++
++		  - External oscillator
++		  - DSI1 byte clock
++		  - DSI1 DDR2 clock
++		  - DSI1 DDR clock
++
++		  Only external oscillator is required.  The DSI clocks may
++		  not be present, in which case their children will be
++		  unusable.
+ 
+ Example:
+ 
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -297,11 +297,29 @@
+ #define LOCK_TIMEOUT_NS		100000000
+ #define BCM2835_MAX_FB_RATE	1750000000u
+ 
++/*
++ * Names of clocks used within the driver that need to be replaced
++ * with an external parent's name.  This array is in the order that
++ * the clocks node in the DT references external clocks.
++ */
++static const char *cprman_parent_names[] = {
++	"xosc",
++	"dsi1_byte",
++	"dsi1_ddr2",
++	"dsi1_ddr",
++};
++
+ struct bcm2835_cprman {
+ 	struct device *dev;
+ 	void __iomem *regs;
+ 	spinlock_t regs_lock; /* spinlock for all clocks */
+-	const char *osc_name;
++
++	/*
++	 * Real names of cprman clock parents looked up through
++	 * of_clk_get_parent_name(), which will be used in the
++	 * parent_names[] arrays for clock registration.
++	 */
++	const char *real_parent_names[ARRAY_SIZE(cprman_parent_names)];
+ 
+ 	struct clk_onecell_data onecell;
+ 	struct clk *clks[];
+@@ -1168,7 +1186,7 @@ static struct clk *bcm2835_register_pll(
+ 	memset(&init, 0, sizeof(init));
+ 
+ 	/* All of the PLLs derive from the external oscillator. */
+-	init.parent_names = &cprman->osc_name;
++	init.parent_names = &cprman->real_parent_names[0];
+ 	init.num_parents = 1;
+ 	init.name = data->name;
+ 	init.ops = &bcm2835_pll_clk_ops;
+@@ -1251,17 +1269,21 @@ static struct clk *bcm2835_register_cloc
+ 	struct bcm2835_clock *clock;
+ 	struct clk_init_data init;
+ 	const char *parents[1 << CM_SRC_BITS];
+-	size_t i;
++	size_t i, j;
+ 
+ 	/*
+-	 * Replace our "xosc" references with the oscillator's
+-	 * actual name.
++	 * Replace our strings referencing parent clocks with the
++	 * actual clock-output-name of the parent.
+ 	 */
+ 	for (i = 0; i < data->num_mux_parents; i++) {
+-		if (strcmp(data->parents[i], "xosc") == 0)
+-			parents[i] = cprman->osc_name;
+-		else
+-			parents[i] = data->parents[i];
++		parents[i] = data->parents[i];
++
++		for (j = 0; j < ARRAY_SIZE(cprman_parent_names); j++) {
++			if (strcmp(parents[i], cprman_parent_names[j]) == 0) {
++				parents[i] = cprman->real_parent_names[j];
++				break;
++			}
++		}
+ 	}
+ 
+ 	memset(&init, 0, sizeof(init));
+@@ -1883,8 +1905,18 @@ static int bcm2835_clk_probe(struct plat
+ 	if (IS_ERR(cprman->regs))
+ 		return PTR_ERR(cprman->regs);
+ 
+-	cprman->osc_name = of_clk_get_parent_name(dev->of_node, 0);
+-	if (!cprman->osc_name)
++	for (i = 0; i < ARRAY_SIZE(cprman_parent_names); i++) {
++		cprman->real_parent_names[i] =
++			of_clk_get_parent_name(dev->of_node, i);
++	}
++	/*
++	 * Make sure the external oscillator has been registered.
++	 *
++	 * The other (DSI) clocks are not present on older device
++	 * trees, which we still need to support for backwards
++	 * compatibility.
++	 */
++	if (!cprman->real_parent_names[0])
+ 		return -ENODEV;
+ 
+ 	platform_set_drvdata(pdev, cprman);
diff --git a/target/linux/brcm2708/patches-4.4/0435-clk-bcm2835-Add-an-enum-for-the-DSI1-pixel-clock.patch b/target/linux/brcm2708/patches-4.4/0435-clk-bcm2835-Add-an-enum-for-the-DSI1-pixel-clock.patch
new file mode 100644
index 0000000..db3201e
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0435-clk-bcm2835-Add-an-enum-for-the-DSI1-pixel-clock.patch
@@ -0,0 +1,87 @@
+From 719dcb9b9bc907dafeb20fbbf4895f928dafa353 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Thu, 14 Apr 2016 19:00:33 -0700
+Subject: [PATCH] clk: bcm2835: Add an enum for the DSI1 pixel clock.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/clk/bcm/clk-bcm2835.c       | 39 +++++++++++++++++++++++++++++++++++--
+ include/dt-bindings/clock/bcm2835.h |  1 +
+ 2 files changed, 38 insertions(+), 2 deletions(-)
+
+--- a/drivers/clk/bcm/clk-bcm2835.c
++++ b/drivers/clk/bcm/clk-bcm2835.c
+@@ -934,6 +934,9 @@ static long bcm2835_clock_rate_from_divi
+ 	const struct bcm2835_clock_data *data = clock->data;
+ 	u64 temp;
+ 
++	if (data->int_bits == 0 && data->frac_bits == 0)
++		return parent_rate;
++
+ 	/*
+ 	 * The divisor is a 12.12 fixed point field, but only some of
+ 	 * the bits are populated in any given clock.
+@@ -957,7 +960,12 @@ static unsigned long bcm2835_clock_get_r
+ 	struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
+ 	struct bcm2835_cprman *cprman = clock->cprman;
+ 	const struct bcm2835_clock_data *data = clock->data;
+-	u32 div = cprman_read(cprman, data->div_reg);
++	u32 div;
++
++	if (data->int_bits == 0 && data->frac_bits == 0)
++		return parent_rate;
++
++	div = cprman_read(cprman, data->div_reg);
+ 
+ 	return bcm2835_clock_rate_from_divisor(clock, parent_rate, div);
+ }
+@@ -1403,6 +1411,28 @@ static const char *const bcm2835_clock_v
+ 	__VA_ARGS__)
+ 
+ /*
++ * DSI1 parent clocks.  The DSI1 byte clock comes from the DSI1 PHY,
++ * which in turn sources from plld_dsi1.
++ */
++static const char *const bcm2835_clock_dsi1_parents[] = {
++	"gnd",
++	"xosc",
++	"testdebug0",
++	"testdebug1",
++	"dsi1_ddr",
++	"dsi1_ddr_inv",
++	"dsi1_ddr2",
++	"dsi1_ddr2_inv",
++	"dsi1_byte",
++	"dsi1_byte_inv",
++};
++
++#define REGISTER_DSI1_CLK(...)	REGISTER_CLK(				\
++	.num_mux_parents = ARRAY_SIZE(bcm2835_clock_dsi1_parents),	\
++	.parents = bcm2835_clock_dsi1_parents,				\
++	__VA_ARGS__)
++
++/*
+  * the real definition of all the pll, pll_dividers and clocks
+  * these make use of the above REGISTER_* macros
+  */
+@@ -1847,7 +1877,12 @@ static const struct bcm2835_clk_desc clk
+ 		.div_reg = CM_DSI1EDIV,
+ 		.int_bits = 4,
+ 		.frac_bits = 8),
+-
++	[BCM2835_CLOCK_DSI1P]	= REGISTER_DSI1_CLK(
++		.name = "dsi1p",
++		.ctl_reg = CM_DSI1PCTL,
++		.div_reg = CM_DSI1PDIV,
++		.int_bits = 0,
++		.frac_bits = 0),
+ 	/* the gates */
+ 
+ 	/*
+--- a/include/dt-bindings/clock/bcm2835.h
++++ b/include/dt-bindings/clock/bcm2835.h
+@@ -64,3 +64,4 @@
+ #define BCM2835_CLOCK_CAM1		46
+ #define BCM2835_CLOCK_DSI0E		47
+ #define BCM2835_CLOCK_DSI1E		48
++#define BCM2835_CLOCK_DSI1P		49
diff --git a/target/linux/brcm2708/patches-4.4/0436-drm-fb_cma_helper-Remove-implicit-call-to-disable_un.patch b/target/linux/brcm2708/patches-4.4/0436-drm-fb_cma_helper-Remove-implicit-call-to-disable_un.patch
new file mode 100644
index 0000000..431e0d9
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0436-drm-fb_cma_helper-Remove-implicit-call-to-disable_un.patch
@@ -0,0 +1,79 @@
+From 64eb54a20a8624412ba45bf453b8588e7e6a2c53 Mon Sep 17 00:00:00 2001
+From: Maxime Ripard <maxime.ripard at free-electrons.com>
+Date: Thu, 14 Jan 2016 16:24:56 +0100
+Subject: [PATCH] drm/fb_cma_helper: Remove implicit call to
+ disable_unused_functions
+
+The drm_fbdev_cma_init function always calls the
+drm_helper_disable_unused_functions. Since it's part of the usual probe
+process, all the drivers using that helper will end up having their encoder
+and CRTC disable functions called at probe if their device has not been
+reported as enabled.
+
+This could be fixed by reading out from the registers the current state of
+the device if it is enabled, but even that will not handle the case where
+the device is actually disabled.
+
+Moreover, the drivers using the atomic modesetting expect that their enable
+and disable callback to be called when the device is already enabled or
+disabled (respectively).
+
+We can however fix this issue by moving the call to
+drm_helper_disable_unused_functions out of drm_fbdev_cma_init and make the
+drivers needing it (all the drivers calling drm_fbdev_cma_init and not
+using the atomic modesetting) explicitly call it.
+
+Signed-off-by: Maxime Ripard <maxime.ripard at free-electrons.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1452785109-6172-14-git-send-email-maxime.ripard@free-electrons.com
+Acked-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
+Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
+(cherry picked from commit 4314e19ef4ae0ba8872bd8610f6fef5e8743e236)
+---
+ drivers/gpu/drm/drm_fb_cma_helper.c | 3 ---
+ drivers/gpu/drm/imx/imx-drm-core.c  | 1 +
+ drivers/gpu/drm/sti/sti_drv.c       | 1 +
+ drivers/gpu/drm/tilcdc/tilcdc_drv.c | 1 +
+ 4 files changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/drm_fb_cma_helper.c
++++ b/drivers/gpu/drm/drm_fb_cma_helper.c
+@@ -348,9 +348,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init
+ 
+ 	}
+ 
+-	/* disable all the possible outputs/crtcs before entering KMS mode */
+-	drm_helper_disable_unused_functions(dev);
+-
+ 	ret = drm_fb_helper_initial_config(helper, preferred_bpp);
+ 	if (ret < 0) {
+ 		dev_err(dev->dev, "Failed to set initial hw configuration.\n");
+--- a/drivers/gpu/drm/imx/imx-drm-core.c
++++ b/drivers/gpu/drm/imx/imx-drm-core.c
+@@ -313,6 +313,7 @@ static int imx_drm_driver_load(struct dr
+ 		dev_warn(drm->dev, "Invalid legacyfb_depth.  Defaulting to 16bpp\n");
+ 		legacyfb_depth = 16;
+ 	}
++	drm_helper_disable_unused_functions(drm);
+ 	imxdrm->fbhelper = drm_fbdev_cma_init(drm, legacyfb_depth,
+ 				drm->mode_config.num_crtc, MAX_CRTC);
+ 	if (IS_ERR(imxdrm->fbhelper)) {
+--- a/drivers/gpu/drm/sti/sti_drv.c
++++ b/drivers/gpu/drm/sti/sti_drv.c
+@@ -160,6 +160,7 @@ static int sti_load(struct drm_device *d
+ 
+ 	drm_mode_config_reset(dev);
+ 
++	drm_helper_disable_unused_functions(dev);
+ 	drm_fbdev_cma_init(dev, 32,
+ 			   dev->mode_config.num_crtc,
+ 			   dev->mode_config.num_connector);
+--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
++++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+@@ -294,6 +294,7 @@ static int tilcdc_load(struct drm_device
+ 			break;
+ 	}
+ 
++	drm_helper_disable_unused_functions(dev);
+ 	priv->fbdev = drm_fbdev_cma_init(dev, bpp,
+ 			dev->mode_config.num_crtc,
+ 			dev->mode_config.num_connector);
diff --git a/target/linux/brcm2708/patches-4.4/0437-overlays-Add-assert_falling_edge-to-pps-gpio-overlay.patch b/target/linux/brcm2708/patches-4.4/0437-overlays-Add-assert_falling_edge-to-pps-gpio-overlay.patch
new file mode 100644
index 0000000..496539e
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0437-overlays-Add-assert_falling_edge-to-pps-gpio-overlay.patch
@@ -0,0 +1,31 @@
+From b90a1393b3bdffa88c8e8dfbdc2bec650a5f885e Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Tue, 9 Aug 2016 21:51:41 +0100
+Subject: [PATCH] overlays: Add assert_falling_edge to pps-gpio overlay
+
+See: https://github.com/raspberrypi/linux/issues/1590
+---
+ arch/arm/boot/dts/overlays/README               | 2 ++
+ arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 1 +
+ 2 files changed, 3 insertions(+)
+
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -797,6 +797,8 @@ Name:   pps-gpio
+ Info:   Configures the pps-gpio (pulse-per-second time signal via GPIO).
+ Load:   dtoverlay=pps-gpio,<param>=<val>
+ Params: gpiopin                 Input GPIO (default "18")
++        assert_falling_edge     When present, assert is indicated by a falling
++                                edge, rather than by a rising edge
+ 
+ 
+ Name:   pwm
+--- a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
++++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
+@@ -30,5 +30,6 @@
+ 	__overrides__ {
+ 		gpiopin = <&pps>,"gpios:4",
+ 			  <&pps_pins>,"brcm,pins:0";
++		assert_falling_edge = <&pps>,"assert-falling-edge?";
+ 	};
+ };
diff --git a/target/linux/brcm2708/patches-4.4/0438-drm-mipi-dsi-Unregister-bus-at-exit.patch b/target/linux/brcm2708/patches-4.4/0438-drm-mipi-dsi-Unregister-bus-at-exit.patch
new file mode 100644
index 0000000..a5ed02c
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0438-drm-mipi-dsi-Unregister-bus-at-exit.patch
@@ -0,0 +1,30 @@
+From 229ed4a50a90820a5288c7f839db1f089bed71c4 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai at suse.de>
+Date: Tue, 2 Aug 2016 14:16:42 +0200
+Subject: [PATCH] drm/mipi-dsi: Unregister bus at exit
+
+This is a preliminary patch for building drm-mipi-dsi as a module.
+Add the module exit callback to unregister the bus properly.
+
+Suggested-by: Thierry Reding <treding at nvidia.com>
+Signed-off-by: Takashi Iwai <tiwai at suse.de>
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/drm_mipi_dsi.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/gpu/drm/drm_mipi_dsi.c
++++ b/drivers/gpu/drm/drm_mipi_dsi.c
+@@ -928,6 +928,12 @@ static int __init mipi_dsi_bus_init(void
+ }
+ postcore_initcall(mipi_dsi_bus_init);
+ 
++static void __exit mipi_dsi_bus_exit(void)
++{
++	bus_unregister(&mipi_dsi_bus_type);
++}
++module_exit(mipi_dsi_bus_exit);
++
+ MODULE_AUTHOR("Andrzej Hajda <a.hajda at samsung.com>");
+ MODULE_DESCRIPTION("MIPI DSI Bus");
+ MODULE_LICENSE("GPL and additional rights");
diff --git a/target/linux/brcm2708/patches-4.4/0439-drm-mipi-dsi-Allow-to-build-drm-mipi-dsi-as-a-module.patch b/target/linux/brcm2708/patches-4.4/0439-drm-mipi-dsi-Allow-to-build-drm-mipi-dsi-as-a-module.patch
new file mode 100644
index 0000000..7d21e2a
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0439-drm-mipi-dsi-Allow-to-build-drm-mipi-dsi-as-a-module.patch
@@ -0,0 +1,32 @@
+From cee1a8a6610e7184a9df7975c67d7e64bb80ee27 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai at suse.de>
+Date: Tue, 2 Aug 2016 14:16:43 +0200
+Subject: [PATCH] drm/mipi-dsi: Allow to build drm-mipi-dsi as a module
+
+The drm-mipi-dsi driver has been only built-in although this isn't
+strictly required to be so.  Since it's referred by lots of DRM
+drivers nowadays, most of distro kernels include the driver as
+built-in as a result, even though many systems don't need it at all.
+
+This patch fixes Kconfig to allow drm-mipi-dsi driver built as a
+module, so that we can save footprint on systems without such DRM
+drivers.  The probe order is managed by the module dependency, and
+postcore_initcall() works just fine as a module init call.
+
+Signed-off-by: Takashi Iwai <tiwai at suse.de>
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/Kconfig
++++ b/drivers/gpu/drm/Kconfig
+@@ -22,7 +22,7 @@ menuconfig DRM
+ 	  (/dev/agpgart) support if it is available for your platform.
+ 
+ config DRM_MIPI_DSI
+-	bool
++	tristate
+ 	depends on DRM
+ 
+ config DRM_KMS_HELPER
diff --git a/target/linux/brcm2708/patches-4.4/0440-drm-vc4-Fix-flipped-HVS-channels-for-DSI0-1.patch b/target/linux/brcm2708/patches-4.4/0440-drm-vc4-Fix-flipped-HVS-channels-for-DSI0-1.patch
new file mode 100644
index 0000000..116ae0c
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0440-drm-vc4-Fix-flipped-HVS-channels-for-DSI0-1.patch
@@ -0,0 +1,30 @@
+From 3ecee79bedf0a2dbca94281674b7a86f3b82f522 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Thu, 11 Feb 2016 12:29:45 -0800
+Subject: [PATCH] drm/vc4: Fix flipped HVS channels for DSI0/1.
+
+Empirically, DSI1 appears to be using HVS channel 0 on my Pi2.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/vc4/vc4_crtc.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_crtc.c
++++ b/drivers/gpu/drm/vc4/vc4_crtc.c
+@@ -699,13 +699,13 @@ void vc4_cancel_page_flip(struct drm_crt
+ }
+ 
+ static const struct vc4_crtc_data pv0_data = {
+-	.hvs_channel = 0,
++	.hvs_channel = 2,
+ 	.encoder0_type = VC4_ENCODER_TYPE_DSI0,
+ 	.encoder1_type = VC4_ENCODER_TYPE_DPI,
+ };
+ 
+ static const struct vc4_crtc_data pv1_data = {
+-	.hvs_channel = 2,
++	.hvs_channel = 0,
+ 	.encoder0_type = VC4_ENCODER_TYPE_DSI1,
+ 	.encoder1_type = VC4_ENCODER_TYPE_SMI,
+ };
diff --git a/target/linux/brcm2708/patches-4.4/0441-drm-vc4-Add-support-for-feeding-DSI-encoders-from-th.patch b/target/linux/brcm2708/patches-4.4/0441-drm-vc4-Add-support-for-feeding-DSI-encoders-from-th.patch
new file mode 100644
index 0000000..7b36ff9
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0441-drm-vc4-Add-support-for-feeding-DSI-encoders-from-th.patch
@@ -0,0 +1,96 @@
+From c50d2b2fc772468306a8b30159924f19edab4901 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Wed, 10 Feb 2016 16:17:29 -0800
+Subject: [PATCH] drm/vc4: Add support for feeding DSI encoders from the pixel
+ valve.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/vc4/vc4_crtc.c | 30 +++++++++++++++++-------------
+ drivers/gpu/drm/vc4/vc4_regs.h |  2 ++
+ 2 files changed, 19 insertions(+), 13 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_crtc.c
++++ b/drivers/gpu/drm/vc4/vc4_crtc.c
+@@ -210,38 +210,40 @@ static u32 vc4_get_fifo_full_level(u32 f
+ }
+ 
+ /*
+- * Returns the clock select bit for the connector attached to the
+- * CRTC.
++ * Returns the encoder attached to the CRTC.
++ *
++ * VC4 can only scan out to one encoder at a type, while the DRM core
++ * allows drivers to push pixels to more than one encoder from the
++ * same CRTC.
+  */
+-static int vc4_get_clock_select(struct drm_crtc *crtc)
++static struct drm_encoder *vc4_get_crtc_encoder(struct drm_crtc *crtc)
+ {
+ 	struct drm_connector *connector;
+ 
+ 	drm_for_each_connector(connector, crtc->dev) {
+ 		if (connector->state->crtc == crtc) {
+-			struct drm_encoder *encoder = connector->encoder;
+-			struct vc4_encoder *vc4_encoder =
+-				to_vc4_encoder(encoder);
+-
+-			return vc4_encoder->clock_select;
++			return connector->encoder;
+ 		}
+ 	}
+ 
+-	return -1;
++	return NULL;
+ }
+ 
+ static void vc4_crtc_mode_set_nofb(struct drm_crtc *crtc)
+ {
+ 	struct drm_device *dev = crtc->dev;
+ 	struct vc4_dev *vc4 = to_vc4_dev(dev);
++	struct drm_encoder *encoder = vc4_get_crtc_encoder(crtc);
++	struct vc4_encoder *vc4_encoder = to_vc4_encoder(encoder);
+ 	struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
+ 	struct drm_crtc_state *state = crtc->state;
+ 	struct drm_display_mode *mode = &state->adjusted_mode;
+ 	bool interlace = mode->flags & DRM_MODE_FLAG_INTERLACE;
+ 	u32 vactive = (mode->vdisplay >> (interlace ? 1 : 0));
+-	u32 format = PV_CONTROL_FORMAT_24;
+-	bool debug_dump_regs = false;
+-	int clock_select = vc4_get_clock_select(crtc);
++	bool is_dsi = (vc4_encoder->type == VC4_ENCODER_TYPE_DSI0 ||
++		       vc4_encoder->type == VC4_ENCODER_TYPE_DSI1);
++	u32 format = is_dsi ? PV_CONTROL_FORMAT_DSIV_24 : PV_CONTROL_FORMAT_24;
++	bool debug_dump_regs = true;
+ 
+ 	if (debug_dump_regs) {
+ 		DRM_INFO("CRTC %d regs before:\n", drm_crtc_index(crtc));
+@@ -289,6 +291,7 @@ static void vc4_crtc_mode_set_nofb(struc
+ 
+ 	CRTC_WRITE(PV_V_CONTROL,
+ 		   PV_VCONTROL_CONTINUOUS |
++		   (is_dsi ? PV_VCONTROL_DSI : 0) |
+ 		   (interlace ? PV_VCONTROL_INTERLACE : 0));
+ 
+ 	CRTC_WRITE(PV_CONTROL,
+@@ -298,7 +301,8 @@ static void vc4_crtc_mode_set_nofb(struc
+ 		   PV_CONTROL_CLR_AT_START |
+ 		   PV_CONTROL_TRIGGER_UNDERFLOW |
+ 		   PV_CONTROL_WAIT_HSTART |
+-		   VC4_SET_FIELD(clock_select, PV_CONTROL_CLK_SELECT) |
++		   VC4_SET_FIELD(vc4_encoder->clock_select,
++				 PV_CONTROL_CLK_SELECT) |
+ 		   PV_CONTROL_FIFO_CLR |
+ 		   PV_CONTROL_EN);
+ 
+--- a/drivers/gpu/drm/vc4/vc4_regs.h
++++ b/drivers/gpu/drm/vc4/vc4_regs.h
+@@ -184,6 +184,8 @@
+ 
+ #define PV_V_CONTROL				0x04
+ # define PV_VCONTROL_INTERLACE			BIT(4)
++# define PV_VCONTROL_DSI			BIT(3)
++# define PV_VCONTROL_COMMAND			BIT(2)
+ # define PV_VCONTROL_CONTINUOUS			BIT(1)
+ # define PV_VCONTROL_VIDEN			BIT(0)
+ 
diff --git a/target/linux/brcm2708/patches-4.4/0442-drm-vc4-Start-switching-to-using-debugfs_reg32-helpe.patch b/target/linux/brcm2708/patches-4.4/0442-drm-vc4-Start-switching-to-using-debugfs_reg32-helpe.patch
new file mode 100644
index 0000000..3733c32
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0442-drm-vc4-Start-switching-to-using-debugfs_reg32-helpe.patch
@@ -0,0 +1,156 @@
+From e2934c6a46a8bfadced1866adea668cebbc698da Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Fri, 20 May 2016 16:24:47 -0700
+Subject: [PATCH] drm/vc4: Start switching to using debugfs_reg32 helpers for
+ debugfs.
+
+Every file was defining its own little struct and dumping for the
+regs, when there's a helper in debugfs for doing just this.  However,
+instead of printing:
+
+PV_HORZA (0x000c): 0x00000000
+
+we now print:
+
+PV_HORZA = 0x00000000
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/vc4/vc4_crtc.c | 48 ++++++++++++++++--------------------------
+ drivers/gpu/drm/vc4/vc4_drv.c  | 13 ++++++++++++
+ drivers/gpu/drm/vc4/vc4_drv.h  |  6 ++++++
+ 3 files changed, 37 insertions(+), 30 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_crtc.c
++++ b/drivers/gpu/drm/vc4/vc4_crtc.c
+@@ -35,6 +35,7 @@
+ #include "drm_atomic_helper.h"
+ #include "drm_crtc_helper.h"
+ #include "linux/clk.h"
++#include "linux/debugfs.h"
+ #include "drm_fb_cma_helper.h"
+ #include "linux/component.h"
+ #include "linux/of_device.h"
+@@ -85,35 +86,25 @@ struct vc4_crtc_data {
+ #define CRTC_WRITE(offset, val) writel(val, vc4_crtc->regs + (offset))
+ #define CRTC_READ(offset) readl(vc4_crtc->regs + (offset))
+ 
+-#define CRTC_REG(reg) { reg, #reg }
+-static const struct {
+-	u32 reg;
+-	const char *name;
+-} crtc_regs[] = {
+-	CRTC_REG(PV_CONTROL),
+-	CRTC_REG(PV_V_CONTROL),
+-	CRTC_REG(PV_VSYNCD_EVEN),
+-	CRTC_REG(PV_HORZA),
+-	CRTC_REG(PV_HORZB),
+-	CRTC_REG(PV_VERTA),
+-	CRTC_REG(PV_VERTB),
+-	CRTC_REG(PV_VERTA_EVEN),
+-	CRTC_REG(PV_VERTB_EVEN),
+-	CRTC_REG(PV_INTEN),
+-	CRTC_REG(PV_INTSTAT),
+-	CRTC_REG(PV_STAT),
+-	CRTC_REG(PV_HACT_ACT),
++static const struct debugfs_reg32 crtc_regs[] = {
++	VC4_DEBUG_REG(PV_CONTROL),
++	VC4_DEBUG_REG(PV_V_CONTROL),
++	VC4_DEBUG_REG(PV_VSYNCD_EVEN),
++	VC4_DEBUG_REG(PV_HORZA),
++	VC4_DEBUG_REG(PV_HORZB),
++	VC4_DEBUG_REG(PV_VERTA),
++	VC4_DEBUG_REG(PV_VERTB),
++	VC4_DEBUG_REG(PV_VERTA_EVEN),
++	VC4_DEBUG_REG(PV_VERTB_EVEN),
++	VC4_DEBUG_REG(PV_INTEN),
++	VC4_DEBUG_REG(PV_INTSTAT),
++	VC4_DEBUG_REG(PV_STAT),
++	VC4_DEBUG_REG(PV_HACT_ACT),
+ };
+ 
+ static void vc4_crtc_dump_regs(struct vc4_crtc *vc4_crtc)
+ {
+-	int i;
+-
+-	for (i = 0; i < ARRAY_SIZE(crtc_regs); i++) {
+-		DRM_INFO("0x%04x (%s): 0x%08x\n",
+-			 crtc_regs[i].reg, crtc_regs[i].name,
+-			 CRTC_READ(crtc_regs[i].reg));
+-	}
++	vc4_dump_regs32(crtc_regs, ARRAY_SIZE(crtc_regs), vc4_crtc->regs, "");
+ }
+ 
+ #ifdef CONFIG_DEBUG_FS
+@@ -136,11 +127,8 @@ int vc4_crtc_debugfs_regs(struct seq_fil
+ 		return 0;
+ 	vc4_crtc = to_vc4_crtc(crtc);
+ 
+-	for (i = 0; i < ARRAY_SIZE(crtc_regs); i++) {
+-		seq_printf(m, "%s (0x%04x): 0x%08x\n",
+-			   crtc_regs[i].name, crtc_regs[i].reg,
+-			   CRTC_READ(crtc_regs[i].reg));
+-	}
++	debugfs_print_regs32(m, crtc_regs, ARRAY_SIZE(crtc_regs),
++			     vc4_crtc->regs, "");
+ 
+ 	return 0;
+ }
+--- a/drivers/gpu/drm/vc4/vc4_drv.c
++++ b/drivers/gpu/drm/vc4/vc4_drv.c
+@@ -9,6 +9,7 @@
+ 
+ #include <linux/clk.h>
+ #include <linux/component.h>
++#include <linux/debugfs.h>
+ #include <linux/device.h>
+ #include <linux/io.h>
+ #include <linux/module.h>
+@@ -52,6 +53,18 @@ static void vc4_drm_preclose(struct drm_
+ 		vc4_cancel_page_flip(crtc, file);
+ }
+ 
++void vc4_dump_regs32(const struct debugfs_reg32 *regs, unsigned int num_regs,
++		     void __iomem *base, const char *prefix)
++{
++	unsigned int i;
++
++	for (i = 0; i < num_regs; i++) {
++		DRM_INFO("%s0x%04lx (%s): 0x%08x\n",
++			 prefix, regs[i].offset, regs[i].name,
++			 readl(base + regs[i].offset));
++	}
++}
++
+ static void vc4_lastclose(struct drm_device *dev)
+ {
+ 	struct vc4_dev *vc4 = to_vc4_dev(dev);
+--- a/drivers/gpu/drm/vc4/vc4_drv.h
++++ b/drivers/gpu/drm/vc4/vc4_drv.h
+@@ -9,6 +9,8 @@
+ #include "drmP.h"
+ #include "drm_gem_cma_helper.h"
+ 
++struct debugfs_reg32;
++
+ struct vc4_dev {
+ 	struct drm_device *dev;
+ 
+@@ -207,6 +209,8 @@ to_vc4_encoder(struct drm_encoder *encod
+ #define HVS_READ(offset) readl(vc4->hvs->regs + offset)
+ #define HVS_WRITE(offset, val) writel(val, vc4->hvs->regs + offset)
+ 
++#define VC4_DEBUG_REG(reg) { .name = #reg, .offset = reg }
++
+ struct vc4_exec_info {
+ 	/* Sequence number for this bin/render job. */
+ 	uint64_t seqno;
+@@ -418,6 +422,8 @@ void vc4_debugfs_cleanup(struct drm_mino
+ 
+ /* vc4_drv.c */
+ void __iomem *vc4_ioremap_regs(struct platform_device *dev, int index);
++void vc4_dump_regs32(const struct debugfs_reg32 *reg, unsigned int num_regs,
++		     void __iomem *base, const char *prefix);
+ 
+ /* vc4_dpi.c */
+ extern struct platform_driver vc4_dpi_driver;
diff --git a/target/linux/brcm2708/patches-4.4/0443-drm-vc4-Add-DSI1-driver.patch b/target/linux/brcm2708/patches-4.4/0443-drm-vc4-Add-DSI1-driver.patch
new file mode 100644
index 0000000..a59dd3d
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0443-drm-vc4-Add-DSI1-driver.patch
@@ -0,0 +1,1914 @@
+From 7e409fcf8006642edc6f817b6832f27b66debc44 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Wed, 10 Feb 2016 11:42:32 -0800
+Subject: [PATCH] drm/vc4: Add DSI1 driver
+
+The DSI0 and DSI1 blocks on the 2835 are different but very similar
+hardware blocks.  Some registers move around, and the featureset is
+slightly different, but they're clearly related.  This doesn't enable
+DSI0, but some of the infrastructure is present.
+
+Also, this driver doesn't initialize the DSI successfully from
+poweron, so we currently require that the Raspberry Pi firmware enable
+it at boot time.  From there, we just keep the same settings forever,
+and when poweroff is requested we just scan out black instead.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/vc4/Kconfig       |    2 +
+ drivers/gpu/drm/vc4/Makefile      |    1 +
+ drivers/gpu/drm/vc4/vc4_crtc.c    |   41 +-
+ drivers/gpu/drm/vc4/vc4_debugfs.c |    2 +
+ drivers/gpu/drm/vc4/vc4_drv.c     |    1 +
+ drivers/gpu/drm/vc4/vc4_drv.h     |    8 +
+ drivers/gpu/drm/vc4/vc4_dsi.c     | 1737 +++++++++++++++++++++++++++++++++++++
+ 7 files changed, 1780 insertions(+), 12 deletions(-)
+ create mode 100644 drivers/gpu/drm/vc4/vc4_dsi.c
+
+--- a/drivers/gpu/drm/vc4/Kconfig
++++ b/drivers/gpu/drm/vc4/Kconfig
+@@ -6,6 +6,8 @@ config DRM_VC4
+ 	select DRM_KMS_CMA_HELPER
+ 	select DRM_GEM_CMA_HELPER
+ 	select DRM_PANEL
++	select DRM_MIPI_DSI
++	select CLKSRC_OF
+ 	help
+ 	  Choose this option if you have a system that has a Broadcom
+ 	  VC4 GPU, such as the Raspberry Pi or other BCM2708/BCM2835.
+--- a/drivers/gpu/drm/vc4/Makefile
++++ b/drivers/gpu/drm/vc4/Makefile
+@@ -8,6 +8,7 @@ vc4-y := \
+ 	vc4_crtc.o \
+ 	vc4_drv.o \
+ 	vc4_dpi.o \
++	vc4_dsi.o \
+ 	vc4_kms.o \
+ 	vc4_gem.o \
+ 	vc4_hdmi.o \
+--- a/drivers/gpu/drm/vc4/vc4_crtc.c
++++ b/drivers/gpu/drm/vc4/vc4_crtc.c
+@@ -231,7 +231,7 @@ static void vc4_crtc_mode_set_nofb(struc
+ 	bool is_dsi = (vc4_encoder->type == VC4_ENCODER_TYPE_DSI0 ||
+ 		       vc4_encoder->type == VC4_ENCODER_TYPE_DSI1);
+ 	u32 format = is_dsi ? PV_CONTROL_FORMAT_DSIV_24 : PV_CONTROL_FORMAT_24;
+-	bool debug_dump_regs = true;
++	bool debug_dump_regs = false;
+ 
+ 	if (debug_dump_regs) {
+ 		DRM_INFO("CRTC %d regs before:\n", drm_crtc_index(crtc));
+@@ -327,6 +327,19 @@ static void vc4_crtc_disable(struct drm_
+ 	int ret;
+ 	require_hvs_enabled(dev);
+ 
++	if (VC4_DSI_USE_FIRMWARE_SETUP &&
++	    (CRTC_READ(PV_V_CONTROL) & PV_VCONTROL_DSI)) {
++		/* Skip disabling the PV/HVS for the channel if it was
++		 * connected to the DSI panel and we're using the
++		 * firmware setup.  Instead, just set it to stuff
++		 * black in the composite output buffer.
++		 */
++		HVS_WRITE(SCALER_DISPBKGNDX(vc4_crtc->channel),
++			  HVS_READ(SCALER_DISPBKGNDX(vc4_crtc->channel)) |
++			  SCALER_DISPBKGND_FILL);
++		return;
++	}
++
+ 	CRTC_WRITE(PV_V_CONTROL,
+ 		   CRTC_READ(PV_V_CONTROL) & ~PV_VCONTROL_VIDEN);
+ 	ret = wait_for(!(CRTC_READ(PV_V_CONTROL) & PV_VCONTROL_VIDEN), 1);
+@@ -396,17 +409,19 @@ static int vc4_crtc_atomic_check(struct
+ 	if (drm_atomic_connectors_for_crtc(state->state, crtc) > 1)
+ 		return -EINVAL;
+ 
+-	drm_atomic_crtc_state_for_each_plane(plane, state) {
+-		struct drm_plane_state *plane_state =
+-			state->state->plane_states[drm_plane_index(plane)];
+-
+-		/* plane might not have changed, in which case take
+-		 * current state:
+-		 */
+-		if (!plane_state)
+-			plane_state = plane->state;
++	if (state->active) {
++		drm_atomic_crtc_state_for_each_plane(plane, state) {
++			struct drm_plane_state *plane_state =
++				state->state->plane_states[drm_plane_index(plane)];
++
++			/* plane might not have changed, in which case take
++			 * current state:
++			 */
++			if (!plane_state)
++				plane_state = plane->state;
+ 
+-		dlist_count += vc4_plane_dlist_size(plane_state);
++			dlist_count += vc4_plane_dlist_size(plane_state);
++		}
+ 	}
+ 
+ 	dlist_count++; /* Account for SCALER_CTL0_END. */
+@@ -439,8 +454,10 @@ static void vc4_crtc_atomic_flush(struct
+ 	}
+ 
+ 	/* Copy all the active planes' dlist contents to the hardware dlist. */
+-	drm_atomic_crtc_for_each_plane(plane, crtc) {
+-		dlist_next += vc4_plane_write_dlist(plane, dlist_next);
++	if (crtc->state->active) {
++		drm_atomic_crtc_for_each_plane(plane, crtc) {
++			dlist_next += vc4_plane_write_dlist(plane, dlist_next);
++		}
+ 	}
+ 
+ 	writel(SCALER_CTL0_END, dlist_next);
+--- a/drivers/gpu/drm/vc4/vc4_debugfs.c
++++ b/drivers/gpu/drm/vc4/vc4_debugfs.c
+@@ -19,6 +19,8 @@ static const struct drm_info_list vc4_de
+ 	{"bo_stats", vc4_bo_stats_debugfs, 0},
+ 	{"dpi_regs", vc4_dpi_debugfs_regs, 0},
+ 	{"gem_exec", vc4_gem_exec_debugfs, 0},
++	{"dsi0_regs", vc4_dsi_debugfs_regs, 0, (void *)(uintptr_t)0},
++	{"dsi1_regs", vc4_dsi_debugfs_regs, 0, (void *)(uintptr_t)1},
+ 	{"hdmi_regs", vc4_hdmi_debugfs_regs, 0},
+ 	{"hvs_regs", vc4_hvs_debugfs_regs, 0},
+ 	{"crtc0_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)0},
+--- a/drivers/gpu/drm/vc4/vc4_drv.c
++++ b/drivers/gpu/drm/vc4/vc4_drv.c
+@@ -294,6 +294,7 @@ static const struct component_master_ops
+ static struct platform_driver *const component_drivers[] = {
+ 	&vc4_hdmi_driver,
+ 	&vc4_dpi_driver,
++	&vc4_dsi_driver,
+ 	&vc4_crtc_driver,
+ 	&vc4_hvs_driver,
+ 	&vc4_v3d_driver,
+--- a/drivers/gpu/drm/vc4/vc4_drv.h
++++ b/drivers/gpu/drm/vc4/vc4_drv.h
+@@ -19,6 +19,8 @@ struct vc4_dev {
+ 	struct vc4_crtc *crtc[3];
+ 	struct vc4_v3d *v3d;
+ 	struct vc4_dpi *dpi;
++	struct vc4_dsi *dsi0;
++	struct vc4_dsi *dsi1;
+ 
+ 	struct drm_fbdev_cma *fbdev;
+ 	struct rpi_firmware *firmware;
+@@ -192,6 +194,8 @@ enum vc4_encoder_type {
+ 	VC4_ENCODER_TYPE_DPI,
+ };
+ 
++#define VC4_DSI_USE_FIRMWARE_SETUP true
++
+ struct vc4_encoder {
+ 	struct drm_encoder base;
+ 	enum vc4_encoder_type type;
+@@ -429,6 +433,10 @@ void vc4_dump_regs32(const struct debugf
+ extern struct platform_driver vc4_dpi_driver;
+ int vc4_dpi_debugfs_regs(struct seq_file *m, void *unused);
+ 
++/* vc4_dsi.c */
++extern struct platform_driver vc4_dsi_driver;
++int vc4_dsi_debugfs_regs(struct seq_file *m, void *unused);
++
+ /* vc4_gem.c */
+ void vc4_gem_init(struct drm_device *dev);
+ void vc4_gem_destroy(struct drm_device *dev);
+--- /dev/null
++++ b/drivers/gpu/drm/vc4/vc4_dsi.c
+@@ -0,0 +1,1737 @@
++ /*
++ * Copyright (C) 2016 Broadcom Limited
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 as published by
++ * the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
++ * more details.
++ *
++ * You should have received a copy of the GNU General Public License along with
++ * this program.  If not, see <http://www.gnu.org/licenses/>.
++ */
++
++/**
++ * DOC: VC4 DSI0 module
++ */
++
++#include "drm_atomic_helper.h"
++#include "drm_crtc_helper.h"
++#include "drm_edid.h"
++#include "drm_mipi_dsi.h"
++#include "drm_panel.h"
++#include "linux/clk.h"
++#include "linux/clk-provider.h"
++#include "linux/completion.h"
++#include "linux/component.h"
++#include "linux/debugfs.h"
++#include "linux/dmaengine.h"
++#include "linux/i2c.h"
++#include "linux/of_address.h"
++#include "linux/of_gpio.h"
++#include "linux/of_platform.h"
++#include "vc4_drv.h"
++#include "vc4_regs.h"
++
++#define DSI_CMD_FIFO_DEPTH  16
++#define DSI_PIX_FIFO_DEPTH 256
++#define DSI_PIX_FIFO_WIDTH   4
++
++#define DSI0_CTRL		0x00
++
++/* Command packet control. */
++#define DSI0_TXPKT1C		0x04 /* AKA PKTC */
++#define DSI1_TXPKT1C		0x04
++# define DSI_TXPKT1C_TRIG_CMD_MASK	VC4_MASK(31, 24)
++# define DSI_TXPKT1C_TRIG_CMD_SHIFT	24
++# define DSI_TXPKT1C_CMD_REPEAT_MASK	VC4_MASK(23, 10)
++# define DSI_TXPKT1C_CMD_REPEAT_SHIFT	10
++
++# define DSI_TXPKT1C_DISPLAY_NO_MASK	VC4_MASK(9, 8)
++# define DSI_TXPKT1C_DISPLAY_NO_SHIFT	8
++/* Short, trigger, BTA, or a long packet that fits all in CMDFIFO. */
++# define DSI_TXPKT1C_DISPLAY_NO_SHORT		0
++/* Primary display where cmdfifo provides part of the payload and
++ * pixelvalve the rest.
++ */
++# define DSI_TXPKT1C_DISPLAY_NO_PRIMARY		1
++/* Secondary display where cmdfifo provides part of the payload and
++ * pixfifo the rest.
++ */
++# define DSI_TXPKT1C_DISPLAY_NO_SECONDARY	2
++
++# define DSI_TXPKT1C_CMD_TX_TIME_MASK	VC4_MASK(7, 6)
++# define DSI_TXPKT1C_CMD_TX_TIME_SHIFT	6
++# define DSI_TXPKT1C_CMD_CTRL_MASK	VC4_MASK(5, 4)
++# define DSI_TXPKT1C_CMD_CTRL_SHIFT	4
++/* Command only.  Uses TXPKT1H and DISPLAY_NO */
++# define DSI_TXPKT1C_CMD_CTRL_TX	0
++/* Command with BTA for either ack or read data. */
++# define DSI_TXPKT1C_CMD_CTRL_RX	1
++/* Trigger according to TRIG_CMD */
++# define DSI_TXPKT1C_CMD_CTRL_TRIG	2
++/* BTA alone for getting error status after a command, or a TE trigger
++ * without a previous command.
++ */
++# define DSI_TXPKT1C_CMD_CTRL_BTA	3
++
++# define DSI_TXPKT1C_CMD_MODE_LP	BIT(3)
++# define DSI_TXPKT1C_CMD_TYPE_LONG	BIT(2)
++# define DSI_TXPKT1C_CMD_TE_EN		BIT(1)
++# define DSI_TXPKT1C_CMD_EN		BIT(0)
++
++/* Command packet header. */
++#define DSI0_TXPKT1H		0x08 /* AKA PKTH */
++#define DSI1_TXPKT1H		0x08
++# define DSI_TXPKT1H_BC_CMDFIFO_MASK	VC4_MASK(31, 24)
++# define DSI_TXPKT1H_BC_CMDFIFO_SHIFT	24
++# define DSI_TXPKT1H_BC_PARAM_MASK	VC4_MASK(23, 8)
++# define DSI_TXPKT1H_BC_PARAM_SHIFT	8
++# define DSI_TXPKT1H_BC_DT_MASK		VC4_MASK(7, 0)
++# define DSI_TXPKT1H_BC_DT_SHIFT	0
++
++#define DSI0_RXPKT1H		0x0c /* AKA RX1_PKTH */
++#define DSI1_RXPKT1H		0x14
++# define DSI_RXPKT1H_CRC_ERR		BIT(31)
++# define DSI_RXPKT1H_DET_ERR		BIT(30)
++# define DSI_RXPKT1H_ECC_ERR		BIT(29)
++# define DSI_RXPKT1H_COR_ERR		BIT(28)
++# define DSI_RXPKT1H_INCOMP_PKT		BIT(25)
++# define DSI_RXPKT1H_PKT_TYPE_LONG	BIT(24)
++/* Byte count if DSI_RXPKT1H_PKT_TYPE_LONG */
++# define DSI_RXPKT1H_BC_PARAM_MASK	VC4_MASK(23, 8)
++# define DSI_RXPKT1H_BC_PARAM_SHIFT	8
++/* Short return bytes if !DSI_RXPKT1H_PKT_TYPE_LONG */
++# define DSI_RXPKT1H_SHORT_1_MASK	VC4_MASK(23, 16)
++# define DSI_RXPKT1H_SHORT_1_SHIFT	16
++# define DSI_RXPKT1H_SHORT_0_MASK	VC4_MASK(15, 8)
++# define DSI_RXPKT1H_SHORT_0_SHIFT	8
++# define DSI_RXPKT1H_DT_LP_CMD_MASK	VC4_MASK(7, 0)
++# define DSI_RXPKT1H_DT_LP_CMD_SHIFT	0
++
++#define DSI0_RXPKT2H		0x10 /* AKA RX2_PKTH */
++#define DSI1_RXPKT2H		0x18
++# define DSI_RXPKT1H_DET_ERR		BIT(30)
++# define DSI_RXPKT1H_ECC_ERR		BIT(29)
++# define DSI_RXPKT1H_COR_ERR		BIT(28)
++# define DSI_RXPKT1H_INCOMP_PKT		BIT(25)
++# define DSI_RXPKT1H_BC_PARAM_MASK	VC4_MASK(23, 8)
++# define DSI_RXPKT1H_BC_PARAM_SHIFT	8
++# define DSI_RXPKT1H_DT_MASK		VC4_MASK(7, 0)
++# define DSI_RXPKT1H_DT_SHIFT		0
++
++#define DSI0_TXPKT_CMD_FIFO	0x14 /* AKA CMD_DATAF */
++#define DSI1_TXPKT_CMD_FIFO	0x1c
++
++#define DSI0_DISP0_CTRL		0x18
++# define DSI_DISP0_PIX_CLK_DIV_MASK	VC4_MASK(21, 13)
++# define DSI_DISP0_PIX_CLK_DIV_SHIFT	13
++# define DSI_DISP0_LP_STOP_CTRL_MASK	VC4_MASK(12, 11)
++# define DSI_DISP0_LP_STOP_CTRL_SHIFT	11
++# define DSI_DISP0_LP_STOP_DISABLE	0
++# define DSI_DISP0_LP_STOP_PERLINE	1
++# define DSI_DISP0_LP_STOP_PERFRAME	2
++
++/* Transmit RGB pixels and null packets only during HACTIVE, instead
++ * of going to LP-STOP.
++ */
++# define DSI_DISP_HACTIVE_NULL		BIT(10)
++/* Transmit blanking packet only during vblank, instead of allowing LP-STOP. */
++# define DSI_DISP_VBLP_CTRL		BIT(9)
++/* Transmit blanking packet only during HFP, instead of allowing LP-STOP. */
++# define DSI_DISP_HFP_CTRL		BIT(8)
++/* Transmit blanking packet only during HBP, instead of allowing LP-STOP. */
++# define DSI_DISP_HBP_CTRL		BIT(7)
++# define DSI_DISP0_CHANNEL_MASK		VC4_MASK(6, 5)
++# define DSI_DISP0_CHANNEL_SHIFT	5
++/* Enables and end events for HSYNC/VSYNC, not just start events. */
++# define DSI_DISP0_ST_END		BIT(4)
++# define DSI_DISP0_PFORMAT_MASK		VC4_MASK(3, 2)
++# define DSI_DISP0_PFORMAT_SHIFT	2
++# define DSI_PFORMAT_RGB565		0
++# define DSI_PFORMAT_RGB666_PACKED	1
++# define DSI_PFORMAT_RGB666		2
++# define DSI_PFORMAT_RGB888		3
++/* Default is VIDEO mode. */
++# define DSI_DISP0_COMMAND_MODE		BIT(1)
++# define DSI_DISP0_ENABLE		BIT(0)
++
++#define DSI0_DISP1_CTRL		0x1c
++#define DSI1_DISP1_CTRL		0x2c
++/* Format of the data written to TXPKT_PIX_FIFO. */
++# define DSI_DISP1_PFORMAT_MASK		VC4_MASK(2, 1)
++# define DSI_DISP1_PFORMAT_SHIFT	1
++# define DSI_DISP1_PFORMAT_16BIT	0
++# define DSI_DISP1_PFORMAT_24BIT	1
++# define DSI_DISP1_PFORMAT_32BIT_LE	2
++# define DSI_DISP1_PFORMAT_32BIT_BE	3
++
++/* DISP1 is always command mode. */
++# define DSI_DISP1_ENABLE		BIT(0)
++
++#define DSI0_TXPKT_PIX_FIFO		0x20 /* AKA PIX_FIFO */
++
++#define DSI0_INT_STAT		0x24
++#define DSI0_INT_EN		0x28
++# define DSI1_INT_PHY_D3_ULPS		BIT(30)
++# define DSI1_INT_PHY_D3_STOP		BIT(29)
++# define DSI1_INT_PHY_D2_ULPS		BIT(28)
++# define DSI1_INT_PHY_D2_STOP		BIT(27)
++# define DSI1_INT_PHY_D1_ULPS		BIT(26)
++# define DSI1_INT_PHY_D1_STOP		BIT(25)
++# define DSI1_INT_PHY_D0_ULPS		BIT(24)
++# define DSI1_INT_PHY_D0_STOP		BIT(23)
++# define DSI1_INT_FIFO_ERR		BIT(22)
++# define DSI1_INT_PHY_DIR_RTF		BIT(21)
++# define DSI1_INT_PHY_RXLPDT		BIT(20)
++# define DSI1_INT_PHY_RXTRIG		BIT(19)
++# define DSI1_INT_PHY_D0_LPDT		BIT(18)
++# define DSI1_INT_PHY_DIR_FTR		BIT(17)
++
++/* Signaled when the clock lane enters the given state. */
++# define DSI1_INT_PHY_CLOCK_ULPS	BIT(16)
++# define DSI1_INT_PHY_CLOCK_HS		BIT(15)
++# define DSI1_INT_PHY_CLOCK_STOP	BIT(14)
++
++/* Signaled on timeouts */
++# define DSI1_INT_PR_TO			BIT(13)
++# define DSI1_INT_TA_TO			BIT(12)
++# define DSI1_INT_LPRX_TO		BIT(11)
++# define DSI1_INT_HSTX_TO		BIT(10)
++
++/* Contention on a line when trying to drive the line low */
++# define DSI1_INT_ERR_CONT_LP1		BIT(9)
++# define DSI1_INT_ERR_CONT_LP0		BIT(8)
++
++/* Control error: incorrect line state sequence on data lane 0. */
++# define DSI1_INT_ERR_CONTROL		BIT(7)
++/* LPDT synchronization error (bits received not a multiple of 8. */
++
++# define DSI1_INT_ERR_SYNC_ESC		BIT(6)
++/* Signaled after receiving an error packet from the display in
++ * response to a read.
++ */
++# define DSI1_INT_RXPKT2		BIT(5)
++/* Signaled after receiving a packet.  The header and optional short
++ * response will be in RXPKT1H, and a long response will be in the
++ * RXPKT_FIFO.
++ */
++# define DSI1_INT_RXPKT1		BIT(4)
++# define DSI1_INT_TXPKT2_DONE		BIT(3)
++# define DSI1_INT_TXPKT2_END		BIT(2)
++/* Signaled after all repeats of TXPKT1 are transferred. */
++# define DSI1_INT_TXPKT1_DONE		BIT(1)
++/* Signaled after each TXPKT1 repeat is scheduled. */
++# define DSI1_INT_TXPKT1_END		BIT(0)
++
++#define DSI1_INTERRUPTS_ALWAYS_ENABLED	(DSI1_INT_ERR_SYNC_ESC | \
++					 DSI1_INT_ERR_CONTROL |	 \
++					 DSI1_INT_ERR_CONT_LP0 | \
++					 DSI1_INT_ERR_CONT_LP1 | \
++					 DSI1_INT_HSTX_TO |	 \
++					 DSI1_INT_LPRX_TO |	 \
++					 DSI1_INT_TA_TO |	 \
++					 DSI1_INT_PR_TO)
++
++#define DSI0_STAT		0x2c
++#define DSI0_HSTX_TO_CNT	0x30
++#define DSI0_LPRX_TO_CNT	0x34
++#define DSI0_TA_TO_CNT		0x38
++#define DSI0_PR_TO_CNT		0x3c
++#define DSI0_PHYC		0x40
++# define DSI1_PHYC_ESC_CLK_LPDT_MASK	VC4_MASK(25, 20)
++# define DSI1_PHYC_ESC_CLK_LPDT_SHIFT	20
++# define DSI1_PHYC_HS_CLK_CONTINUOUS	BIT(18)
++# define DSI1_PHYC_CLANE_ULPS		BIT(17)
++# define DSI0_PHYC_ESC_CLK_LPDT_MASK	VC4_MASK(17, 12)
++# define DSI0_PHYC_ESC_CLK_LPDT_SHIFT	12
++# define DSI1_PHYC_CLANE_ENABLE		BIT(16)
++# define DSI_PHYC_DLANE3_ULPS		BIT(13)
++# define DSI_PHYC_DLANE3_ENABLE		BIT(12)
++# define DSI0_PHYC_HS_CLK_CONTINUOUS	BIT(10)
++# define DSI0_PHYC_CLANE_ULPS		BIT(9)
++# define DSI_PHYC_DLANE2_ULPS		BIT(9)
++# define DSI0_PHYC_CLANE_ENABLE		BIT(8)
++# define DSI_PHYC_DLANE2_ENABLE		BIT(8)
++# define DSI_PHYC_DLANE1_ULPS		BIT(5)
++# define DSI_PHYC_DLANE1_ENABLE		BIT(4)
++# define DSI_PHYC_DLANE0_FORCE_STOP	BIT(2)
++# define DSI_PHYC_DLANE0_ULPS		BIT(1)
++# define DSI_PHYC_DLANE0_ENABLE		BIT(0)
++
++#define DSI0_HS_CLT0		0x44
++#define DSI0_HS_CLT1		0x48
++#define DSI0_HS_CLT2		0x4c
++#define DSI0_HS_DLT3		0x50
++#define DSI0_HS_DLT4		0x54
++#define DSI0_HS_DLT5		0x58
++#define DSI0_HS_DLT6		0x5c
++#define DSI0_HS_DLT7		0x60
++
++#define DSI0_PHY_AFEC0		0x64
++# define DSI0_PHY_AFEC0_DDR2CLK_EN		BIT(26)
++# define DSI0_PHY_AFEC0_DDRCLK_EN		BIT(25)
++# define DSI0_PHY_AFEC0_LATCH_ULPS		BIT(24)
++# define DSI1_PHY_AFEC0_IDR_DLANE3_MASK		VC4_MASK(31, 29)
++# define DSI1_PHY_AFEC0_IDR_DLANE3_SHIFT	29
++# define DSI1_PHY_AFEC0_IDR_DLANE2_MASK		VC4_MASK(28, 26)
++# define DSI1_PHY_AFEC0_IDR_DLANE2_SHIFT	26
++# define DSI1_PHY_AFEC0_IDR_DLANE1_MASK		VC4_MASK(27, 23)
++# define DSI1_PHY_AFEC0_IDR_DLANE1_SHIFT	23
++# define DSI1_PHY_AFEC0_IDR_DLANE0_MASK		VC4_MASK(22, 20)
++# define DSI1_PHY_AFEC0_IDR_DLANE0_SHIFT	20
++# define DSI1_PHY_AFEC0_IDR_CLANE_MASK		VC4_MASK(19, 17)
++# define DSI1_PHY_AFEC0_IDR_CLANE_SHIFT		17
++# define DSI0_PHY_AFEC0_ACTRL_DLANE1_MASK	VC4_MASK(23, 20)
++# define DSI0_PHY_AFEC0_ACTRL_DLANE1_SHIFT	20
++# define DSI0_PHY_AFEC0_ACTRL_DLANE0_MASK	VC4_MASK(19, 16)
++# define DSI0_PHY_AFEC0_ACTRL_DLANE0_SHIFT	16
++# define DSI0_PHY_AFEC0_ACTRL_CLANE_MASK	VC4_MASK(15, 12)
++# define DSI0_PHY_AFEC0_ACTRL_CLANE_SHIFT	12
++# define DSI1_PHY_AFEC0_DDR2CLK_EN		BIT(16)
++# define DSI1_PHY_AFEC0_DDRCLK_EN		BIT(15)
++# define DSI1_PHY_AFEC0_LATCH_ULPS		BIT(14)
++# define DSI1_PHY_AFEC0_RESET			BIT(13)
++# define DSI1_PHY_AFEC0_PD			BIT(12)
++# define DSI0_PHY_AFEC0_RESET			BIT(11)
++# define DSI1_PHY_AFEC0_PD_BG			BIT(11)
++# define DSI0_PHY_AFEC0_PD			BIT(10)
++# define DSI1_PHY_AFEC0_PD_DLANE3		BIT(10)
++# define DSI0_PHY_AFEC0_PD_BG			BIT(9)
++# define DSI1_PHY_AFEC0_PD_DLANE2		BIT(9)
++# define DSI0_PHY_AFEC0_PD_DLANE1		BIT(8)
++# define DSI1_PHY_AFEC0_PD_DLANE1		BIT(8)
++# define DSI_PHY_AFEC0_PTATADJ_MASK		VC4_MASK(7, 4)
++# define DSI_PHY_AFEC0_PTATADJ_SHIFT		4
++# define DSI_PHY_AFEC0_CTATADJ_MASK		VC4_MASK(3, 0)
++# define DSI_PHY_AFEC0_CTATADJ_SHIFT		0
++
++#define DSI0_PHY_AFEC1		0x68
++# define DSI0_PHY_AFEC1_IDR_DLANE1_MASK		VC4_MASK(10, 8)
++# define DSI0_PHY_AFEC1_IDR_DLANE1_SHIFT	8
++# define DSI0_PHY_AFEC1_IDR_DLANE0_MASK		VC4_MASK(6, 4)
++# define DSI0_PHY_AFEC1_IDR_DLANE0_SHIFT	4
++# define DSI0_PHY_AFEC1_IDR_CLANE_MASK		VC4_MASK(2, 0)
++# define DSI0_PHY_AFEC1_IDR_CLANE_SHIFT		0
++
++#define DSI0_TST_SEL		0x6c
++#define DSI0_TST_MON		0x70
++#define DSI0_ID			0x74
++# define DSI_ID_VALUE		0x00647369
++
++
++#define DSI1_CTRL		0x00
++# define DSI_CTRL_HS_CLKC_MASK		VC4_MASK(15, 14)
++# define DSI_CTRL_HS_CLKC_SHIFT		14
++# define DSI_CTRL_HS_CLKC_BYTE		0
++# define DSI_CTRL_HS_CLKC_DDR2		1
++# define DSI_CTRL_HS_CLKC_DDR		2
++
++# define DSI_CTRL_RX_LPDT_EOT_DISABLE	BIT(13)
++# define DSI_CTRL_LPDT_EOT_DISABLE	BIT(12)
++# define DSI_CTRL_HSDT_EOT_DISABLE	BIT(11)
++# define DSI_CTRL_SOFT_RESET_CFG	BIT(10)
++# define DSI_CTRL_CAL_BYTE		BIT(9)
++# define DSI_CTRL_INV_BYTE		BIT(8)
++# define DSI_CTRL_CLR_LDF		BIT(7)
++# define DSI0_CTRL_CLR_PBCF		BIT(6)
++# define DSI1_CTRL_CLR_RXF		BIT(6)
++# define DSI0_CTRL_CLR_CPBCF		BIT(5)
++# define DSI1_CTRL_CLR_PDF		BIT(5)
++# define DSI0_CTRL_CLR_PDF		BIT(4)
++# define DSI1_CTRL_CLR_CDF		BIT(4)
++# define DSI0_CTRL_CLR_CDF		BIT(3)
++# define DSI0_CTRL_CTRL2		BIT(2)
++# define DSI1_CTRL_DISABLE_DISP_CRCC	BIT(2)
++# define DSI0_CTRL_CTRL1		BIT(1)
++# define DSI1_CTRL_DISABLE_DISP_ECCC	BIT(1)
++# define DSI0_CTRL_CTRL0		BIT(0)
++# define DSI1_CTRL_EN			BIT(0)
++# define DSI0_CTRL_RESET_FIFOS		(DSI_CTRL_CLR_LDF | \
++					 DSI0_CTRL_CLR_PBCF | \
++					 DSI0_CTRL_CLR_CPBCF |	\
++					 DSI0_CTRL_CLR_PDF | \
++					 DSI0_CTRL_CLR_CDF)
++# define DSI1_CTRL_RESET_FIFOS		(DSI_CTRL_CLR_LDF | \
++					 DSI1_CTRL_CLR_RXF | \
++					 DSI1_CTRL_CLR_PDF | \
++					 DSI1_CTRL_CLR_CDF)
++
++#define DSI1_TXPKT2C		0x0c
++#define DSI1_TXPKT2H		0x10
++#define DSI1_TXPKT_PIX_FIFO	0x20
++#define DSI1_RXPKT_FIFO		0x24
++#define DSI1_DISP0_CTRL		0x28
++#define DSI1_INT_STAT		0x30
++#define DSI1_INT_EN		0x34
++
++/* State reporting bits.  These mostly behave like INT_STAT, where
++ * writing a 1 clears the bit.
++ */
++#define DSI1_STAT		0x38
++# define DSI1_STAT_PHY_D3_ULPS		BIT(31)
++# define DSI1_STAT_PHY_D3_STOP		BIT(30)
++# define DSI1_STAT_PHY_D2_ULPS		BIT(29)
++# define DSI1_STAT_PHY_D2_STOP		BIT(28)
++# define DSI1_STAT_PHY_D1_ULPS		BIT(27)
++# define DSI1_STAT_PHY_D1_STOP		BIT(26)
++# define DSI1_STAT_PHY_D0_ULPS		BIT(25)
++# define DSI1_STAT_PHY_D0_STOP		BIT(24)
++# define DSI1_STAT_FIFO_ERR		BIT(23)
++# define DSI1_STAT_PHY_RXLPDT		BIT(22)
++# define DSI1_STAT_PHY_RXTRIG		BIT(21)
++# define DSI1_STAT_PHY_D0_LPDT		BIT(20)
++/* Set when in forward direction */
++# define DSI1_STAT_PHY_DIR		BIT(19)
++# define DSI1_STAT_PHY_CLOCK_ULPS	BIT(18)
++# define DSI1_STAT_PHY_CLOCK_HS		BIT(17)
++# define DSI1_STAT_PHY_CLOCK_STOP	BIT(16)
++# define DSI1_STAT_PR_TO		BIT(15)
++# define DSI1_STAT_TA_TO		BIT(14)
++# define DSI1_STAT_LPRX_TO		BIT(13)
++# define DSI1_STAT_HSTX_TO		BIT(12)
++# define DSI1_STAT_ERR_CONT_LP1		BIT(11)
++# define DSI1_STAT_ERR_CONT_LP0		BIT(10)
++# define DSI1_STAT_ERR_CONTROL		BIT(9)
++# define DSI1_STAT_ERR_SYNC_ESC		BIT(8)
++# define DSI1_STAT_RXPKT2		BIT(7)
++# define DSI1_STAT_RXPKT1		BIT(6)
++# define DSI1_STAT_TXPKT2_BUSY		BIT(5)
++# define DSI1_STAT_TXPKT2_DONE		BIT(4)
++# define DSI1_STAT_TXPKT2_END		BIT(3)
++# define DSI1_STAT_TXPKT1_BUSY		BIT(2)
++# define DSI1_STAT_TXPKT1_DONE		BIT(1)
++# define DSI1_STAT_TXPKT1_END		BIT(0)
++
++#define DSI1_HSTX_TO_CNT	0x3c
++#define DSI1_LPRX_TO_CNT	0x40
++#define DSI1_TA_TO_CNT		0x44
++#define DSI1_PR_TO_CNT		0x48
++#define DSI1_PHYC		0x4c
++
++#define DSI1_HS_CLT0		0x50
++# define DSI_HS_CLT0_CZERO_MASK		VC4_MASK(26, 18)
++# define DSI_HS_CLT0_CZERO_SHIFT	18
++# define DSI_HS_CLT0_CPRE_MASK		VC4_MASK(17, 9)
++# define DSI_HS_CLT0_CPRE_SHIFT		9
++# define DSI_HS_CLT0_CPREP_MASK		VC4_MASK(8, 0)
++# define DSI_HS_CLT0_CPREP_SHIFT	0
++
++#define DSI1_HS_CLT1		0x54
++# define DSI_HS_CLT1_CTRAIL_MASK	VC4_MASK(17, 9)
++# define DSI_HS_CLT1_CTRAIL_SHIFT	9
++# define DSI_HS_CLT1_CPOST_MASK		VC4_MASK(8, 0)
++# define DSI_HS_CLT1_CPOST_SHIFT	0
++
++#define DSI1_HS_CLT2		0x58
++# define DSI_HS_CLT2_WUP_MASK		VC4_MASK(23, 0)
++# define DSI_HS_CLT2_WUP_SHIFT		0
++
++#define DSI1_HS_DLT3		0x5c
++# define DSI_HS_DLT3_EXIT_MASK		VC4_MASK(26, 18)
++# define DSI_HS_DLT3_EXIT_SHIFT		18
++# define DSI_HS_DLT3_ZERO_MASK		VC4_MASK(17, 9)
++# define DSI_HS_DLT3_ZERO_SHIFT		9
++# define DSI_HS_DLT3_PRE_MASK		VC4_MASK(8, 0)
++# define DSI_HS_DLT3_PRE_SHIFT		0
++
++#define DSI1_HS_DLT4		0x60
++# define DSI_HS_DLT4_ANLAT_MASK		VC4_MASK(22, 18)
++# define DSI_HS_DLT4_ANLAT_SHIFT	18
++# define DSI_HS_DLT4_TRAIL_MASK		VC4_MASK(17, 9)
++# define DSI_HS_DLT4_TRAIL_SHIFT	9
++# define DSI_HS_DLT4_LPX_MASK		VC4_MASK(8, 0)
++# define DSI_HS_DLT4_LPX_SHIFT		0
++
++#define DSI1_HS_DLT5		0x64
++# define DSI_HS_DLT5_INIT_MASK		VC4_MASK(23, 0)
++# define DSI_HS_DLT5_INIT_SHIFT		0
++
++#define DSI1_HS_DLT6		0x68
++# define DSI_HS_DLT6_TA_GET_MASK	VC4_MASK(31, 24)
++# define DSI_HS_DLT6_TA_GET_SHIFT	24
++# define DSI_HS_DLT6_TA_SURE_MASK	VC4_MASK(23, 16)
++# define DSI_HS_DLT6_TA_SURE_SHIFT	16
++# define DSI_HS_DLT6_TA_GO_MASK		VC4_MASK(15, 8)
++# define DSI_HS_DLT6_TA_GO_SHIFT	8
++# define DSI_HS_DLT6_LP_LPX_MASK	VC4_MASK(7, 0)
++# define DSI_HS_DLT6_LP_LPX_SHIFT	0
++
++#define DSI1_HS_DLT7		0x6c
++# define DSI_HS_DLT7_LP_WUP_MASK	VC4_MASK(23, 0)
++# define DSI_HS_DLT7_LP_WUP_SHIFT	0
++
++#define DSI1_PHY_AFEC0		0x70
++
++#define DSI1_PHY_AFEC1		0x74
++# define DSI1_PHY_AFEC1_ACTRL_DLANE3_MASK	VC4_MASK(19, 16)
++# define DSI1_PHY_AFEC1_ACTRL_DLANE3_SHIFT	16
++# define DSI1_PHY_AFEC1_ACTRL_DLANE2_MASK	VC4_MASK(15, 12)
++# define DSI1_PHY_AFEC1_ACTRL_DLANE2_SHIFT	12
++# define DSI1_PHY_AFEC1_ACTRL_DLANE1_MASK	VC4_MASK(11, 8)
++# define DSI1_PHY_AFEC1_ACTRL_DLANE1_SHIFT	8
++# define DSI1_PHY_AFEC1_ACTRL_DLANE0_MASK	VC4_MASK(7, 4)
++# define DSI1_PHY_AFEC1_ACTRL_DLANE0_SHIFT	4
++# define DSI1_PHY_AFEC1_ACTRL_CLANE_MASK	VC4_MASK(3, 0)
++# define DSI1_PHY_AFEC1_ACTRL_CLANE_SHIFT	0
++
++#define DSI1_TST_SEL		0x78
++#define DSI1_TST_MON		0x7c
++#define DSI1_PHY_TST1		0x80
++#define DSI1_PHY_TST2		0x84
++#define DSI1_PHY_FIFO_STAT	0x88
++/* Actually, all registers in the range that aren't otherwise claimed
++ * will return the ID.
++ */
++#define DSI1_ID			0x8c
++
++/* General DSI hardware state. */
++struct vc4_dsi {
++	struct platform_device *pdev;
++
++	struct mipi_dsi_host dsi_host;
++	struct drm_encoder *encoder;
++	struct drm_connector *connector;
++	struct drm_panel *panel;
++
++	void __iomem *regs;
++
++	struct dma_chan *reg_dma_chan;
++	dma_addr_t reg_dma_paddr;
++	u32 *reg_dma_mem;
++	dma_addr_t reg_paddr;
++
++	/* Whether we're on bcm2835's DSI0 or DSI1. */
++	int port;
++
++	/* DSI channel for the panel we're connected to. */
++	u32 channel;
++	u32 lanes;
++	enum mipi_dsi_pixel_format format;
++	u32 mode_flags;
++
++	/* Input clock to the PHY, for the DSI escape clock. */
++	struct clk *escape_clock;
++
++	/* Input clock to the PHY, used to generate the DSI bit
++	 * clock.
++	 */
++	struct clk *pll_phy_clock;
++
++	/* Byte clock generated within the DSI PHY. */
++	struct clk_hw phy_byte_clock;
++
++	struct clk_onecell_data clk_onecell;
++
++	/* Pixel clock output to the pixelvalve, generated from the
++	 * byte clock.
++	 */
++	struct clk *pixel_clock;
++
++	struct completion xfer_completion;
++	int xfer_result;
++
++	bool use_firmware_setup;
++};
++
++static inline void
++dsi_write(struct vc4_dsi *dsi, u32 offset, u32 val)
++{
++	struct dma_chan *chan = dsi->reg_dma_chan;
++	struct dma_async_tx_descriptor *tx;
++	dma_cookie_t cookie;
++	int ret;
++
++#if 0 /* XXX */
++	dev_info(&dsi->pdev->dev, "WRITE 0x%04x -> 0x%08x\n", offset, val);
++#endif
++
++	if (!chan) {
++		writel(val, dsi->regs + offset);
++		return;
++	}
++
++	*dsi->reg_dma_mem = val;
++
++	tx = chan->device->device_prep_dma_memcpy(chan,
++						  dsi->reg_paddr + offset,
++						  dsi->reg_dma_paddr,
++						  4, 0);
++	if (!tx) {
++		DRM_ERROR("Failed to set up DMA register write\n");
++		return;
++	}
++
++	cookie = tx->tx_submit(tx);
++	ret = dma_submit_error(cookie);
++	if (ret) {
++		DRM_ERROR("Failed to submit DMA: %d\n", ret);
++		return;
++	}
++	ret = dma_sync_wait(chan, cookie);
++	if (ret)
++		DRM_ERROR("Failed to wait for DMA: %d\n", ret);
++
++#if 0 /* XXX */
++	if (offset != DSI1_TXPKT_CMD_FIFO &&
++	    offset != DSI1_TXPKT_PIX_FIFO) {
++		dev_info(&dsi->pdev->dev,
++			 "             -> 0x%08x\n",
++			 readl(dsi->regs + (offset)));
++	}
++#endif
++}
++
++#define DSI_READ(offset) readl(dsi->regs + (offset))
++#define DSI_WRITE(offset, val) dsi_write(dsi, offset, val)
++#define DSI_PORT_READ(offset) \
++	DSI_READ(dsi->port ? DSI1_##offset : DSI0_##offset)
++#define DSI_PORT_WRITE(offset, val) \
++	DSI_WRITE(dsi->port ? DSI1_##offset : DSI0_##offset, val)
++#define DSI_PORT_BIT(bit) (dsi->port ? DSI1_##bit : DSI0_##bit)
++
++/* VC4 DSI encoder KMS struct */
++struct vc4_dsi_encoder {
++	struct vc4_encoder base;
++	struct vc4_dsi *dsi;
++};
++
++static inline struct vc4_dsi_encoder *
++to_vc4_dsi_encoder(struct drm_encoder *encoder)
++{
++	return container_of(encoder, struct vc4_dsi_encoder, base.base);
++}
++#define host_to_dsi(host) container_of(host, struct vc4_dsi, dsi_host)
++
++/* VC4 DSI connector KMS struct */
++struct vc4_dsi_connector {
++	struct drm_connector base;
++	struct vc4_dsi *dsi;
++
++	/* Since the connector is attached to just the one encoder,
++	 * this is the reference to it so we can do the best_encoder()
++	 * hook.
++	 */
++	struct drm_encoder *encoder;
++};
++
++static inline struct vc4_dsi_connector *
++to_vc4_dsi_connector(struct drm_connector *connector)
++{
++	return container_of(connector, struct vc4_dsi_connector, base);
++}
++
++static const struct debugfs_reg32 dsi0_regs[] = {
++	VC4_DEBUG_REG(DSI0_CTRL),
++	VC4_DEBUG_REG(DSI0_STAT),
++	VC4_DEBUG_REG(DSI0_DISP0_CTRL),
++	VC4_DEBUG_REG(DSI0_DISP1_CTRL),
++	VC4_DEBUG_REG(DSI0_PHYC),
++	VC4_DEBUG_REG(DSI0_STAT),
++	VC4_DEBUG_REG(DSI0_HS_CLT0),
++	VC4_DEBUG_REG(DSI0_HS_CLT1),
++	VC4_DEBUG_REG(DSI0_HS_CLT2),
++	VC4_DEBUG_REG(DSI0_HS_DLT3),
++	VC4_DEBUG_REG(DSI0_HS_DLT4),
++	VC4_DEBUG_REG(DSI0_HS_DLT5),
++	VC4_DEBUG_REG(DSI0_HS_DLT6),
++	VC4_DEBUG_REG(DSI0_HS_DLT7),
++	VC4_DEBUG_REG(DSI0_PHY_AFEC0),
++	VC4_DEBUG_REG(DSI0_PHY_AFEC1),
++	VC4_DEBUG_REG(DSI0_ID),
++};
++
++static const struct debugfs_reg32 dsi1_regs[] = {
++	VC4_DEBUG_REG(DSI1_CTRL),
++	VC4_DEBUG_REG(DSI1_STAT),
++	VC4_DEBUG_REG(DSI1_DISP0_CTRL),
++	VC4_DEBUG_REG(DSI1_DISP1_CTRL),
++	VC4_DEBUG_REG(DSI1_PHYC),
++	VC4_DEBUG_REG(DSI1_STAT),
++	VC4_DEBUG_REG(DSI1_HS_CLT0),
++	VC4_DEBUG_REG(DSI1_HS_CLT1),
++	VC4_DEBUG_REG(DSI1_HS_CLT2),
++	VC4_DEBUG_REG(DSI1_HS_DLT3),
++	VC4_DEBUG_REG(DSI1_HS_DLT4),
++	VC4_DEBUG_REG(DSI1_HS_DLT5),
++	VC4_DEBUG_REG(DSI1_HS_DLT6),
++	VC4_DEBUG_REG(DSI1_HS_DLT7),
++	VC4_DEBUG_REG(DSI1_PHY_AFEC0),
++	VC4_DEBUG_REG(DSI1_PHY_AFEC1),
++	VC4_DEBUG_REG(DSI1_ID),
++};
++
++static void vc4_dsi_dump_regs(struct vc4_dsi *dsi, const char *prefix)
++{
++	if (dsi->port == 0) {
++		vc4_dump_regs32(dsi0_regs, ARRAY_SIZE(dsi0_regs), dsi->regs,
++				prefix);
++	} else {
++		vc4_dump_regs32(dsi1_regs, ARRAY_SIZE(dsi1_regs), dsi->regs,
++				prefix);
++	}
++}
++
++#ifdef CONFIG_DEBUG_FS
++int vc4_dsi_debugfs_regs(struct seq_file *m, void *number)
++{
++	struct drm_info_node *node = (struct drm_info_node *)m->private;
++	struct drm_device *dev = node->minor->dev;
++	struct vc4_dev *vc4 = to_vc4_dev(dev);
++	struct vc4_dsi *dsi;
++	int port = (uintptr_t)number;
++
++	if (port == 0) {
++		dsi = vc4->dsi0;
++		debugfs_print_regs32(m, dsi0_regs, ARRAY_SIZE(dsi0_regs),
++				     dsi->regs, "");
++	} else {
++		dsi = vc4->dsi1;
++		debugfs_print_regs32(m, dsi1_regs, ARRAY_SIZE(dsi1_regs),
++				     dsi->regs, "");
++	}
++
++	return 0;
++}
++#endif
++
++static enum drm_connector_status
++vc4_dsi_connector_detect(struct drm_connector *connector, bool force)
++{
++	struct vc4_dsi_connector *vc4_connector =
++		to_vc4_dsi_connector(connector);
++	struct vc4_dsi *dsi = vc4_connector->dsi;
++
++	if (dsi->panel)
++		return connector_status_connected;
++	else
++		return connector_status_disconnected;
++}
++
++static void vc4_dsi_connector_destroy(struct drm_connector *connector)
++{
++	drm_connector_unregister(connector);
++	drm_connector_cleanup(connector);
++}
++
++static int vc4_dsi_connector_get_modes(struct drm_connector *connector)
++{
++	struct vc4_dsi_connector *vc4_connector =
++		to_vc4_dsi_connector(connector);
++	struct vc4_dsi *dsi = vc4_connector->dsi;
++
++	if (dsi->panel)
++		return drm_panel_get_modes(dsi->panel);
++
++	return 0;
++}
++
++static struct drm_encoder *
++vc4_dsi_connector_best_encoder(struct drm_connector *connector)
++{
++	struct vc4_dsi_connector *dsi_connector =
++		to_vc4_dsi_connector(connector);
++	return dsi_connector->encoder;
++}
++
++static const struct drm_connector_funcs vc4_dsi_connector_funcs = {
++	.dpms = drm_atomic_helper_connector_dpms,
++	.detect = vc4_dsi_connector_detect,
++	.fill_modes = drm_helper_probe_single_connector_modes,
++	.destroy = vc4_dsi_connector_destroy,
++	.reset = drm_atomic_helper_connector_reset,
++	.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
++	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
++};
++
++static const struct drm_connector_helper_funcs vc4_dsi_connector_helper_funcs = {
++	.get_modes = vc4_dsi_connector_get_modes,
++	.best_encoder = vc4_dsi_connector_best_encoder,
++};
++
++static struct drm_connector *vc4_dsi_connector_init(struct drm_device *dev,
++						    struct vc4_dsi *dsi)
++{
++	struct drm_connector *connector = NULL;
++	struct vc4_dsi_connector *dsi_connector;
++	int ret = 0;
++
++	dsi_connector = devm_kzalloc(dev->dev, sizeof(*dsi_connector),
++				      GFP_KERNEL);
++	if (!dsi_connector) {
++		ret = -ENOMEM;
++		goto fail;
++	}
++	connector = &dsi_connector->base;
++
++	dsi_connector->encoder = dsi->encoder;
++	dsi_connector->dsi = dsi;
++
++	drm_connector_init(dev, connector, &vc4_dsi_connector_funcs,
++			   DRM_MODE_CONNECTOR_DSI);
++	drm_connector_helper_add(connector, &vc4_dsi_connector_helper_funcs);
++
++	connector->polled = 0;
++	connector->interlace_allowed = 0;
++	connector->doublescan_allowed = 0;
++
++	drm_mode_connector_attach_encoder(connector, dsi->encoder);
++
++	return connector;
++
++ fail:
++	if (connector)
++		vc4_dsi_connector_destroy(connector);
++
++	return ERR_PTR(ret);
++}
++
++static void vc4_dsi_encoder_destroy(struct drm_encoder *encoder)
++{
++	drm_encoder_cleanup(encoder);
++}
++
++static const struct drm_encoder_funcs vc4_dsi_encoder_funcs = {
++	.destroy = vc4_dsi_encoder_destroy,
++};
++
++static void vc4_dsi_latch_ulps(struct vc4_dsi *dsi, bool latch)
++{
++	u32 afec0 = DSI_PORT_READ(PHY_AFEC0);
++
++	if (latch)
++		afec0 |= DSI_PORT_BIT(PHY_AFEC0_LATCH_ULPS);
++	else
++		afec0 &= ~DSI_PORT_BIT(PHY_AFEC0_LATCH_ULPS);
++
++	DSI_PORT_WRITE(PHY_AFEC0, afec0);
++}
++
++/* Enters or exits Ultra Low Power State. */
++static void vc4_dsi_ulps(struct vc4_dsi *dsi, bool ulps)
++{
++	u32 phyc_ulps = (DSI_PORT_BIT(PHYC_CLANE_ULPS) |
++			 DSI_PHYC_DLANE0_ULPS |
++			 (dsi->lanes > 1 ? DSI_PHYC_DLANE1_ULPS : 0) |
++			 (dsi->lanes > 2 ? DSI_PHYC_DLANE2_ULPS : 0) |
++			 (dsi->lanes > 3 ? DSI_PHYC_DLANE3_ULPS : 0));
++	u32 stat_ulps = (DSI1_STAT_PHY_CLOCK_ULPS |
++			 DSI1_STAT_PHY_D0_ULPS |
++			 (dsi->lanes > 1 ? DSI1_STAT_PHY_D1_ULPS : 0) |
++			 (dsi->lanes > 2 ? DSI1_STAT_PHY_D2_ULPS : 0) |
++			 (dsi->lanes > 3 ? DSI1_STAT_PHY_D3_ULPS : 0));
++	u32 stat_stop = (DSI1_STAT_PHY_CLOCK_STOP |
++			 DSI1_STAT_PHY_D0_STOP |
++			 (dsi->lanes > 1 ? DSI1_STAT_PHY_D1_STOP : 0) |
++			 (dsi->lanes > 2 ? DSI1_STAT_PHY_D2_STOP : 0) |
++			 (dsi->lanes > 3 ? DSI1_STAT_PHY_D3_STOP : 0));
++	int ret;
++
++	DSI_PORT_WRITE(STAT, stat_ulps);
++	DSI_PORT_WRITE(PHYC, DSI_PORT_READ(PHYC) | phyc_ulps);
++	ret = wait_for((DSI_PORT_READ(STAT) & stat_ulps) == stat_ulps, 20);
++	if (ret) {
++		dev_warn(&dsi->pdev->dev,
++			 "Timeout waiting for DSI ULPS entry: STAT 0x%08x",
++			 DSI_PORT_READ(STAT));
++		DSI_PORT_WRITE(PHYC, DSI_PORT_READ(PHYC) & ~phyc_ulps);
++		vc4_dsi_latch_ulps(dsi, false);
++		return;
++	}
++
++	/* The DSI module can't be disabled while the module is
++	 * generating ULPS state.  So, to be able to disable the
++	 * module, we have the AFE latch the ULPS state and continue
++	 * on to having the module enter STOP.
++	 */
++	vc4_dsi_latch_ulps(dsi, ulps);
++
++	DSI_PORT_WRITE(STAT, stat_stop);
++	DSI_PORT_WRITE(PHYC, DSI_PORT_READ(PHYC) & ~phyc_ulps);
++	ret = wait_for((DSI_PORT_READ(STAT) & stat_stop) == stat_stop, 20);
++	if (ret) {
++		dev_warn(&dsi->pdev->dev,
++			 "Timeout waiting for DSI STOP entry: STAT 0x%08x",
++			 DSI_PORT_READ(STAT));
++		DSI_PORT_WRITE(PHYC, DSI_PORT_READ(PHYC) & ~phyc_ulps);
++		return;
++	}
++}
++
++static uint32_t
++dsi_hs_timing(u32 ui_ns, u32 ns, u32 ui)
++{
++	/* The HS timings have to be rounded up to a multiple of 8
++	 * because we're using the byte clock.
++	 */
++	return roundup(ui + DIV_ROUND_UP(ns, ui_ns), 8);
++}
++
++/* ESC always runs at 100Mhz. */
++#define ESC_TIME_NS 10
++
++static uint32_t
++dsi_esc_timing(u32 ns)
++{
++	return DIV_ROUND_UP(ns, ESC_TIME_NS);
++}
++
++static void vc4_dsi_encoder_disable(struct drm_encoder *encoder)
++{
++	struct vc4_dsi_encoder *vc4_encoder = to_vc4_dsi_encoder(encoder);
++	struct vc4_dsi *dsi = vc4_encoder->dsi;
++
++	drm_panel_disable(dsi->panel);
++
++	if (!dsi->use_firmware_setup)
++		vc4_dsi_ulps(dsi, true);
++
++	drm_panel_unprepare(dsi->panel);
++
++	if (dsi->use_firmware_setup) {
++		/* Since we're using the firmware setup and aren't
++		 * communicating with the panel to bring the link
++		 * down, we need to just keep the clocks and DSI
++		 * module running.
++		 */
++	} else {
++		clk_disable_unprepare(dsi->pll_phy_clock);
++		clk_disable_unprepare(dsi->escape_clock);
++		clk_disable_unprepare(dsi->pixel_clock);
++	}
++}
++
++static void vc4_dsi_encoder_enable(struct drm_encoder *encoder)
++{
++	struct drm_display_mode *mode = &encoder->crtc->mode;
++	struct vc4_dsi_encoder *vc4_encoder = to_vc4_dsi_encoder(encoder);
++	struct vc4_dsi *dsi = vc4_encoder->dsi;
++	struct device *dev = &dsi->pdev->dev;
++	uint32_t format = 0, divider = 0;
++	bool debug_dump_regs = false;
++	unsigned long hs_clock;
++	uint32_t ui_ns;
++	/* Minimum LP state duration in escape clock cycles. */
++	uint32_t lpx = dsi_esc_timing(60);
++	uint32_t phyc;
++	int ret;
++
++	ret = drm_panel_prepare(dsi->panel);
++	if (ret) {
++		DRM_ERROR("Panel failed to prepare\n");
++		return;
++	}
++
++	if (debug_dump_regs)
++		vc4_dsi_dump_regs(dsi, "DSI before: ");
++
++	/* XXX */
++	if (!dsi->use_firmware_setup) {
++		ret = clk_set_rate(dsi->pll_phy_clock, 2020000000 / 3);
++		if (ret)
++			dev_err(&dsi->pdev->dev, "Failed to set phy clock: %d\n", ret);
++		dev_info(&dsi->pdev->dev, "Tried to set clock to: %d\n", 2000000000 / 3);
++
++		ret = clk_prepare_enable(dsi->escape_clock);
++		if (ret) {
++			DRM_ERROR("Failed to turn on DSI escape clock: %d\n", ret);
++			return;
++		}
++
++		ret = clk_prepare_enable(dsi->pll_phy_clock);
++		if (ret) {
++			DRM_ERROR("Failed to turn on DSI PLL: %d\n", ret);
++			return;
++		}
++
++		ret = clk_set_rate(dsi->pixel_clock, mode->clock * 1000);
++		if (ret)
++			dev_err(dev, "Failed to set pixel clock: %d\n", ret);
++		dev_info(&dsi->pdev->dev, "Tried to set pixel clock to: %d\n", mode->clock * 1000);
++
++		ret = clk_prepare_enable(dsi->pixel_clock);
++		if (ret) {
++			DRM_ERROR("Failed to turn on DSI pixel clock: %d\n", ret);
++			return;
++		}
++	}
++
++	hs_clock = clk_get_rate(dsi->pll_phy_clock);
++
++	/* Reset the DSI and all its fifos. */
++	if (dsi->port == 0) {
++		DSI_PORT_WRITE(CTRL,
++			       DSI_CTRL_SOFT_RESET_CFG |
++			       DSI0_CTRL_RESET_FIFOS);
++	} else {
++		DSI_PORT_WRITE(CTRL,
++			       DSI_CTRL_SOFT_RESET_CFG |
++			       DSI1_CTRL_RESET_FIFOS);
++	}
++
++	DSI_PORT_WRITE(CTRL,
++		       DSI_CTRL_HSDT_EOT_DISABLE |
++		       DSI_CTRL_RX_LPDT_EOT_DISABLE);
++
++	switch (dsi->format) {
++	case MIPI_DSI_FMT_RGB888:
++		format = DSI_PFORMAT_RGB888;
++		divider = 24 / dsi->lanes;
++		break;
++	case MIPI_DSI_FMT_RGB666:
++		format = DSI_PFORMAT_RGB666;
++		divider = 24 / dsi->lanes;
++		break;
++	case MIPI_DSI_FMT_RGB666_PACKED:
++		format = DSI_PFORMAT_RGB666_PACKED;
++		divider = 18 / dsi->lanes;
++		break;
++	case MIPI_DSI_FMT_RGB565:
++		format = DSI_PFORMAT_RGB565;
++		divider = 16 / dsi->lanes;
++		break;
++	}
++
++	/* Set AFE CTR00/CTR1 to release powerdown of analog. */
++	if (dsi->port == 0) {
++		u32 afec0 = (VC4_SET_FIELD(7, DSI_PHY_AFEC0_PTATADJ) |
++			     VC4_SET_FIELD(7, DSI_PHY_AFEC0_CTATADJ));
++
++		if (dsi->lanes < 2)
++			afec0 |= DSI0_PHY_AFEC0_PD_DLANE1;
++
++		if (!(dsi->mode_flags & MIPI_DSI_MODE_VIDEO))
++			afec0 |= DSI0_PHY_AFEC0_RESET;
++
++		DSI_PORT_WRITE(PHY_AFEC0, afec0);
++
++		DSI_PORT_WRITE(PHY_AFEC1,
++			  VC4_SET_FIELD(6,  DSI0_PHY_AFEC1_IDR_DLANE1) |
++			  VC4_SET_FIELD(6,  DSI0_PHY_AFEC1_IDR_DLANE0) |
++			  VC4_SET_FIELD(6,  DSI0_PHY_AFEC1_IDR_CLANE));
++	} else {
++		u32 afec0 = (VC4_SET_FIELD(7, DSI_PHY_AFEC0_PTATADJ) |
++			     VC4_SET_FIELD(7, DSI_PHY_AFEC0_CTATADJ) |
++			     VC4_SET_FIELD(6, DSI1_PHY_AFEC0_IDR_CLANE) |
++			     VC4_SET_FIELD(6, DSI1_PHY_AFEC0_IDR_DLANE0) |
++			     VC4_SET_FIELD(6, DSI1_PHY_AFEC0_IDR_DLANE1) |
++			     VC4_SET_FIELD(6, DSI1_PHY_AFEC0_IDR_DLANE2) |
++			     VC4_SET_FIELD(6, DSI1_PHY_AFEC0_IDR_DLANE3));
++
++		if (dsi->lanes < 4)
++			afec0 |= DSI1_PHY_AFEC0_PD_DLANE3;
++		if (dsi->lanes < 3)
++			afec0 |= DSI1_PHY_AFEC0_PD_DLANE2;
++		if (dsi->lanes < 2)
++			afec0 |= DSI1_PHY_AFEC0_PD_DLANE1;
++
++		if (!(dsi->mode_flags & MIPI_DSI_MODE_VIDEO))
++			afec0 |= DSI1_PHY_AFEC0_RESET;
++
++		DSI_PORT_WRITE(PHY_AFEC0, afec0);
++
++		DSI_PORT_WRITE(PHY_AFEC1, 0);
++	}
++
++	/* How many ns one DSI unit interval is.  Note that the clock
++	 * is DDR, so there's an extra divide by 2.
++	 */
++	ui_ns = DIV_ROUND_UP(500000000, hs_clock);
++
++	DSI_PORT_WRITE(HS_CLT0,
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, 262, 0),
++				     DSI_HS_CLT0_CZERO) |
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, 0, 8),
++				     DSI_HS_CLT0_CPRE) |
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, 38, 0),
++				     DSI_HS_CLT0_CPREP));
++
++	DSI_PORT_WRITE(HS_CLT1,
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, 60, 0),
++				     DSI_HS_CLT1_CTRAIL) |
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, 60, 52),
++				     DSI_HS_CLT1_CPOST));
++
++	DSI_PORT_WRITE(HS_CLT2,
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, 1000000, 0),
++				     DSI_HS_CLT2_WUP));
++
++	DSI_PORT_WRITE(HS_DLT3,
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, 100, 0),
++				     DSI_HS_DLT3_EXIT) |
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, 105, 6),
++				     DSI_HS_DLT3_ZERO) |
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, 40, 4),
++				     DSI_HS_DLT3_PRE));
++
++	DSI_PORT_WRITE(HS_DLT4,
++		       VC4_SET_FIELD(dsi_hs_timing(ui_ns, lpx * ESC_TIME_NS, 0),
++				     DSI_HS_DLT4_LPX) |
++		       VC4_SET_FIELD(max(dsi_hs_timing(ui_ns, 0, 8),
++					 dsi_hs_timing(ui_ns, 60, 4)),
++				     DSI_HS_DLT4_TRAIL) |
++		       VC4_SET_FIELD(0, DSI_HS_DLT4_ANLAT));
++
++	DSI_PORT_WRITE(HS_DLT5, VC4_SET_FIELD(dsi_hs_timing(ui_ns, 1000, 5000),
++					      DSI_HS_DLT5_INIT));
++
++	DSI_PORT_WRITE(HS_DLT6,
++		       VC4_SET_FIELD(lpx * 5, DSI_HS_DLT6_TA_GET) |
++		       VC4_SET_FIELD(lpx, DSI_HS_DLT6_TA_SURE) |
++		       VC4_SET_FIELD(lpx * 4, DSI_HS_DLT6_TA_GO) |
++		       VC4_SET_FIELD(lpx, DSI_HS_DLT6_LP_LPX));
++
++	DSI_PORT_WRITE(HS_DLT7,
++		       VC4_SET_FIELD(dsi_esc_timing(1000000),
++				     DSI_HS_DLT7_LP_WUP));
++
++	/* Define EOT PKT in EOT reg. */
++
++	phyc = (DSI_PHYC_DLANE0_ENABLE |
++		(dsi->lanes >= 2 ? DSI_PHYC_DLANE1_ENABLE : 0) |
++		(dsi->lanes >= 3 ? DSI_PHYC_DLANE2_ENABLE : 0) |
++		(dsi->lanes >= 4 ? DSI_PHYC_DLANE3_ENABLE : 0) |
++		(dsi->port == 0 ?
++		 VC4_SET_FIELD(lpx - 1, DSI0_PHYC_ESC_CLK_LPDT) :
++		 VC4_SET_FIELD(lpx - 1, DSI1_PHYC_ESC_CLK_LPDT)) |
++		DSI_PORT_BIT(PHYC_CLANE_ENABLE));
++
++	DSI_PORT_WRITE(CTRL,
++		       DSI_PORT_READ(CTRL) |
++		       DSI_CTRL_CAL_BYTE);
++
++	/* HS timeout in HS clock cycles: disabled. */
++	DSI_PORT_WRITE(HSTX_TO_CNT, 0);
++	/* LP receive timeout in HS clocks. */
++	DSI_PORT_WRITE(LPRX_TO_CNT, 0xffffff);
++	/* Bus turnaround timeout */
++	DSI_PORT_WRITE(TA_TO_CNT, 100000);
++	/* Display reset sequence timeout */
++	DSI_PORT_WRITE(TA_TO_CNT, 100000);
++
++	if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO) {
++		DSI_PORT_WRITE(DISP0_CTRL,
++			       VC4_SET_FIELD(divider, DSI_DISP0_PIX_CLK_DIV) |
++			       VC4_SET_FIELD(format, DSI_DISP0_PFORMAT) |
++			       VC4_SET_FIELD(DSI_DISP0_LP_STOP_PERFRAME,
++					     DSI_DISP0_LP_STOP_CTRL) |
++			       DSI_DISP0_ST_END |
++			       DSI_DISP0_ENABLE);
++	} else {
++		DSI_PORT_WRITE(DISP0_CTRL,
++			       DSI_DISP0_COMMAND_MODE |
++			       DSI_DISP0_ENABLE);
++	}
++
++	/* Set up DISP1 for transferring long command payloads through
++	 * the pixfifo.
++	 */
++	DSI_PORT_WRITE(DISP1_CTRL,
++		       VC4_SET_FIELD(DSI_DISP1_PFORMAT_32BIT_LE,
++				     DSI_DISP1_PFORMAT) |
++		       DSI_DISP1_ENABLE);
++
++	if (!(dsi->mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS))
++		phyc |= DSI_PORT_BIT(PHYC_HS_CLK_CONTINUOUS);
++
++	DSI_PORT_WRITE(PHYC, phyc);
++
++	/* Ungate the block. */
++	if (dsi->port == 0)
++		DSI_PORT_WRITE(CTRL, DSI_PORT_READ(CTRL) | DSI0_CTRL_CTRL0);
++	else {
++		DSI_PORT_WRITE(CTRL, DSI_PORT_READ(CTRL) | DSI1_CTRL_EN);
++	}
++
++	if (!dsi->use_firmware_setup)
++		vc4_dsi_ulps(dsi, false);
++
++	if (debug_dump_regs)
++		vc4_dsi_dump_regs(dsi, "DSI after: ");
++
++	ret = drm_panel_enable(dsi->panel);
++	if (ret) {
++		DRM_ERROR("Panel failed to enable\n");
++		drm_panel_unprepare(dsi->panel);
++		return;
++	}
++}
++
++static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host,
++				     const struct mipi_dsi_msg *msg)
++{
++	struct vc4_dsi *dsi = host_to_dsi(host);
++	struct mipi_dsi_packet packet;
++	u32 pkth = 0, pktc = 0;
++	int i, ret;
++	bool is_long = mipi_dsi_packet_format_is_long(msg->type);
++	u32 cmd_fifo_len = 0, pix_fifo_len = 0;
++
++	mipi_dsi_create_packet(&packet, msg);
++	pr_err("DSI host xfer %db, %s\n",
++	       packet.payload_length,
++	       is_long ? "long" : "short");
++
++	pkth |= VC4_SET_FIELD(packet.header[0], DSI_TXPKT1H_BC_DT);
++	pkth |= VC4_SET_FIELD(packet.header[1] |
++			      (packet.header[2] << 8),
++			      DSI_TXPKT1H_BC_PARAM);
++	if (is_long) {
++		/* Divide data across the various FIFOs we have available.
++		 * The command FIFO takes byte-oriented data, but is of
++		 * limited size. The pixel FIFO (never actually used for
++		 * pixel data in reality) is word oriented, and substantially
++		 * larger. So, we use the pixel FIFO for most of the data,
++		 * sending the residual bytes in the command FIFO at the start.
++		 *
++		 * With this arrangement, the command FIFO will never get full.
++		 */
++		cmd_fifo_len = packet.payload_length % DSI_PIX_FIFO_WIDTH;
++		pix_fifo_len = ((packet.payload_length - cmd_fifo_len) /
++				DSI_PIX_FIFO_WIDTH);
++
++		WARN_ON_ONCE(pix_fifo_len >= DSI_PIX_FIFO_DEPTH);
++
++		pkth |= VC4_SET_FIELD(cmd_fifo_len, DSI_TXPKT1H_BC_CMDFIFO);
++	}
++
++	if (msg->rx_len) {
++		pktc |= VC4_SET_FIELD(DSI_TXPKT1C_CMD_CTRL_RX,
++				      DSI_TXPKT1C_CMD_CTRL);
++	} else {
++		pktc |= VC4_SET_FIELD(DSI_TXPKT1C_CMD_CTRL_TX,
++				      DSI_TXPKT1C_CMD_CTRL);
++	}
++
++	dev_info(&dsi->pdev->dev, "FIFO setup: %d, %d\n",
++		 cmd_fifo_len, pix_fifo_len);
++
++	for (i = 0; i < cmd_fifo_len; i++)
++		DSI_PORT_WRITE(TXPKT_CMD_FIFO, packet.payload[i]);
++	for (i = 0; i < pix_fifo_len; i++) {
++		const uint8_t *pix = packet.payload + cmd_fifo_len + i * 4;
++		DSI_PORT_WRITE(TXPKT_PIX_FIFO,
++			       pix[0] |
++			       pix[1] << 8 |
++			       pix[2] << 16 |
++			       pix[3] << 24);
++	}
++
++	if (msg->flags & MIPI_DSI_MSG_USE_LPM)
++		pktc |= DSI_TXPKT1C_CMD_MODE_LP;
++	if (is_long)
++		pktc |= DSI_TXPKT1C_CMD_TYPE_LONG;
++
++	/* Send one copy of the packet.  Larger repeats are used for pixel
++	 * data in command mode.
++	 */
++	pktc |= VC4_SET_FIELD(1, DSI_TXPKT1C_CMD_REPEAT);
++
++	pktc |= DSI_TXPKT1C_CMD_EN;
++	if (pix_fifo_len) {
++		pktc |= VC4_SET_FIELD(DSI_TXPKT1C_DISPLAY_NO_SECONDARY,
++				      DSI_TXPKT1C_DISPLAY_NO);
++	} else {
++		pktc |= VC4_SET_FIELD(DSI_TXPKT1C_DISPLAY_NO_SHORT,
++				      DSI_TXPKT1C_DISPLAY_NO);
++	}
++
++	/* Enable the appropriate interrupt for the transfer completion. */
++	dsi->xfer_result = 0;
++	reinit_completion(&dsi->xfer_completion);
++	DSI_PORT_WRITE(INT_STAT, DSI1_INT_TXPKT1_DONE | DSI1_INT_PHY_DIR_RTF);
++	if (msg->rx_len) {
++		DSI_PORT_WRITE(INT_EN, (DSI1_INTERRUPTS_ALWAYS_ENABLED |
++					DSI1_INT_PHY_DIR_RTF));
++	} else {
++		DSI_PORT_WRITE(INT_EN, (DSI1_INTERRUPTS_ALWAYS_ENABLED |
++					DSI1_INT_TXPKT1_DONE));
++	}
++
++	/* Send the packet. */
++	DSI_PORT_WRITE(TXPKT1H, pkth);
++	DSI_PORT_WRITE(TXPKT1C, pktc);
++
++	if (!wait_for_completion_timeout(&dsi->xfer_completion,
++					 msecs_to_jiffies(100))) {
++		u32 stat = DSI_PORT_READ(STAT);
++
++		dev_err(&dsi->pdev->dev, "transfer interrupt wait timeout");
++		dev_err(&dsi->pdev->dev, "INT_STAT: 0x%08x, STAT: 0x%08x\n",
++			DSI_PORT_READ(INT_STAT), stat);
++
++		if (stat & DSI1_STAT_TXPKT1_DONE) {
++			dev_info(&dsi->pdev->dev,
++				 "STAT reports DONE, though.\n");
++			ret = 0;
++		} else {
++			ret = -ETIMEDOUT;
++		}
++	} else {
++		ret = dsi->xfer_result;
++	}
++
++	DSI_PORT_WRITE(INT_EN, DSI1_INTERRUPTS_ALWAYS_ENABLED);
++	if (ret)
++		goto reset_fifo_and_return;
++
++	if (ret == 0 && msg->rx_len) {
++		u32 rxpkt1h = DSI_PORT_READ(RXPKT1H);
++		u8 *msg_rx = msg->rx_buf;
++
++		if (rxpkt1h & DSI_RXPKT1H_PKT_TYPE_LONG) {
++			u32 rxlen = VC4_GET_FIELD(rxpkt1h, DSI_RXPKT1H_BC_PARAM);
++
++			if (rxlen != msg->rx_len) {
++				DRM_ERROR("DSI returned %db, expecting %db\n",
++					  rxlen, msg->rx_len);
++				ret = -ENXIO;
++				goto reset_fifo_and_return;
++			}
++
++			for (i = 0; i < msg->rx_len; i++)
++				msg_rx[i] = DSI_READ(DSI1_RXPKT_FIFO);
++		} else {
++			/* XXX: AWER */
++
++			msg_rx[0] = VC4_GET_FIELD(rxpkt1h,
++						  DSI_RXPKT1H_SHORT_0);
++			if (msg->rx_len > 1) {
++				msg_rx[1] = VC4_GET_FIELD(rxpkt1h,
++							  DSI_RXPKT1H_SHORT_1);
++			}
++		}
++	}
++
++	return ret;
++
++reset_fifo_and_return:
++	DRM_ERROR("DSI TRANSFER failed, resetting: %d\n", ret);
++
++	DSI_PORT_WRITE(TXPKT1C, DSI_PORT_READ(TXPKT1C) & ~DSI_TXPKT1C_CMD_EN);
++	udelay(1);
++	if (dsi->port == 0) {
++		DSI_PORT_WRITE(CTRL,
++			       DSI_PORT_READ(CTRL) | DSI0_CTRL_RESET_FIFOS);
++	} else {
++		DSI_PORT_WRITE(CTRL,
++			       DSI_PORT_READ(CTRL) | DSI1_CTRL_RESET_FIFOS);
++	}
++
++	DSI_PORT_WRITE(TXPKT1C, 0);
++	DSI_PORT_WRITE(INT_EN, DSI1_INTERRUPTS_ALWAYS_ENABLED);
++
++
++	return ret;
++}
++
++static int vc4_dsi_host_attach(struct mipi_dsi_host *host,
++			       struct mipi_dsi_device *device)
++{
++	struct vc4_dsi *dsi = host_to_dsi(host);
++
++	dsi->lanes = device->lanes;
++	dsi->channel = device->channel;
++	dsi->format = device->format;
++	dsi->mode_flags = device->mode_flags;
++
++	if (!(dsi->mode_flags & MIPI_DSI_MODE_VIDEO)) {
++		dev_err(&dsi->pdev->dev,
++			"Only VIDEO mode panels supported currently.\n");
++		return 0;
++	}
++
++	dsi->panel = of_drm_find_panel(device->dev.of_node);
++	if (dsi->panel)
++		return drm_panel_attach(dsi->panel, dsi->connector);
++
++	drm_helper_hpd_irq_event(dsi->connector->dev);
++
++	return 0;
++}
++
++static int vc4_dsi_host_detach(struct mipi_dsi_host *host,
++			       struct mipi_dsi_device *device)
++{
++	struct vc4_dsi *dsi = host_to_dsi(host);
++
++	if (dsi->panel) {
++		int ret = drm_panel_detach(dsi->panel);
++		if (ret)
++			return ret;
++
++		dsi->panel = NULL;
++	}
++
++	drm_helper_hpd_irq_event(dsi->connector->dev);
++
++	return 0;
++}
++
++static const struct mipi_dsi_host_ops vc4_dsi_host_ops = {
++	.attach = vc4_dsi_host_attach,
++	.detach = vc4_dsi_host_detach,
++	.transfer = vc4_dsi_host_transfer,
++};
++
++static const struct drm_encoder_helper_funcs vc4_dsi_encoder_helper_funcs = {
++	.disable = vc4_dsi_encoder_disable,
++	.enable = vc4_dsi_encoder_enable,
++};
++
++static const struct of_device_id vc4_dsi_dt_match[] = {
++	{ .compatible = "brcm,bcm2835-dsi0", (void *)(uintptr_t)0 },
++	{ .compatible = "brcm,bcm2835-dsi1", (void *)(uintptr_t)1 },
++	{}
++};
++
++static long vc4_dsi_byte_clock_round_rate(struct clk_hw *hw, unsigned long rate,
++					  unsigned long *parent_rate)
++{
++	return *parent_rate / 8;
++}
++
++static unsigned long vc4_dsi_byte_clock_get_rate(struct clk_hw *hw,
++					  unsigned long parent_rate)
++{
++	return parent_rate / 8;
++}
++
++static int vc4_dsi_byte_clock_set_rate(struct clk_hw *hw,
++				       unsigned long rate,
++				       unsigned long parent_rate)
++{
++	return 0;
++}
++
++/* The byte clock has *no* ops filled.  It's always running when the
++ * PHY is.
++ */
++static const struct clk_ops vc4_dsi_byte_clock_ops = {
++	.recalc_rate = vc4_dsi_byte_clock_get_rate,
++	.set_rate = vc4_dsi_byte_clock_set_rate,
++	.round_rate = vc4_dsi_byte_clock_round_rate,
++};
++
++static void dsi_handle_error(struct vc4_dsi *dsi,
++			     irqreturn_t *ret, u32 stat, u32 bit,
++			     const char *type)
++{
++	if (!(stat & bit))
++		return;
++
++	DRM_ERROR("DSI%d: %s error\n", dsi->port, type);
++	*ret = IRQ_HANDLED;
++}
++
++static irqreturn_t vc4_dsi_irq_handler(int irq, void *data)
++{
++	struct vc4_dsi *dsi = data;
++	u32 stat = DSI_PORT_READ(INT_STAT);
++	irqreturn_t ret = IRQ_NONE;
++
++	DSI_PORT_WRITE(INT_STAT, stat);
++
++	dsi_handle_error(dsi, &ret, stat,
++			 DSI1_INT_ERR_SYNC_ESC, "LPDT sync");
++	dsi_handle_error(dsi, &ret, stat,
++			 DSI1_INT_ERR_CONTROL, "data lane 0 sequence");
++	dsi_handle_error(dsi, &ret, stat,
++			 DSI1_INT_ERR_CONT_LP0, "LP0 contention");
++	dsi_handle_error(dsi, &ret, stat,
++			 DSI1_INT_ERR_CONT_LP1, "LP1 contention");
++	dsi_handle_error(dsi, &ret, stat,
++			 DSI1_INT_HSTX_TO, "HSTX timeout");
++	dsi_handle_error(dsi, &ret, stat,
++			 DSI1_INT_LPRX_TO, "LPRX timeout");
++	dsi_handle_error(dsi, &ret, stat,
++			 DSI1_INT_TA_TO, "turnaround timeout");
++	dsi_handle_error(dsi, &ret, stat,
++			 DSI1_INT_PR_TO, "peripheral reset timeout");
++
++	if (stat & (DSI1_INT_TXPKT1_DONE | DSI1_INT_PHY_DIR_RTF)) {
++		complete(&dsi->xfer_completion);
++		ret = IRQ_HANDLED;
++	} else if (stat & DSI1_INT_HSTX_TO) {
++		complete(&dsi->xfer_completion);
++		dsi->xfer_result = -ETIMEDOUT;
++		ret = IRQ_HANDLED;
++	}
++
++	return ret;
++}
++
++static int
++vc4_dsi_init_phy_byte_clock(struct vc4_dsi *dsi)
++{
++	struct device *dev = &dsi->pdev->dev;
++	const char *parent_name = __clk_get_name(dsi->pll_phy_clock);
++	struct clk_init_data init;
++	struct clk *clk;
++
++	memset(&init, 0, sizeof(init));
++	init.parent_names = &parent_name;
++	init.num_parents = 1;
++	if (dsi->port == 1)
++		init.name = "dsi1_byte";
++	else
++		init.name = "dsi0_byte";
++	init.ops = &vc4_dsi_byte_clock_ops;
++	init.flags = 0;
++
++	dsi->phy_byte_clock.init = &init;
++	clk = devm_clk_register(dev, &dsi->phy_byte_clock);
++	if (IS_ERR(clk))
++		return PTR_ERR(clk);
++
++	/* Use the onecell provider because we may need to expose the
++	 * DDR and DDR2 clocks at some point, which we'd want to put
++	 * in slots 1 and 2.
++	 */
++	dsi->clk_onecell.clk_num = 1;
++	dsi->clk_onecell.clks = devm_kcalloc(dev,
++					     dsi->clk_onecell.clk_num,
++					     sizeof(*dsi->clk_onecell.clks),
++					     GFP_KERNEL);
++	if (!dsi->clk_onecell.clks)
++		return -ENOMEM;
++
++	dsi->clk_onecell.clks[0] = clk;
++
++	return of_clk_add_provider(dev->of_node,
++				   of_clk_src_onecell_get,
++				   &dsi->clk_onecell);
++}
++
++static int vc4_dsi_bind(struct device *dev, struct device *master, void *data)
++{
++	struct platform_device *pdev = to_platform_device(dev);
++	struct drm_device *drm = dev_get_drvdata(master);
++	struct vc4_dev *vc4 = to_vc4_dev(drm);
++	struct vc4_dsi *dsi;
++	struct vc4_dsi_encoder *vc4_dsi_encoder;
++	const struct of_device_id *match;
++	dma_cap_mask_t dma_mask;
++	int ret;
++
++	dsi = devm_kzalloc(dev, sizeof(*dsi), GFP_KERNEL);
++	if (!dsi)
++		return -ENOMEM;
++
++	match = of_match_device(vc4_dsi_dt_match, dev);
++	if (!match)
++		return -ENODEV;
++
++	dsi->port = (uintptr_t)match->data;
++
++	vc4_dsi_encoder = devm_kzalloc(dev, sizeof(*vc4_dsi_encoder),
++				       GFP_KERNEL);
++	if (!vc4_dsi_encoder)
++		return -ENOMEM;
++	vc4_dsi_encoder->base.type = VC4_ENCODER_TYPE_DSI1;
++	vc4_dsi_encoder->dsi = dsi;
++	dsi->encoder = &vc4_dsi_encoder->base.base;
++
++	dsi->pdev = pdev;
++	dsi->regs = vc4_ioremap_regs(pdev, 0);
++	if (IS_ERR(dsi->regs))
++		return PTR_ERR(dsi->regs);
++
++	if (DSI_PORT_READ(ID) != DSI_ID_VALUE) {
++		dev_err(dev, "Port returned 0x%08x for ID instead of 0x%08x\n",
++			DSI_PORT_READ(ID), DSI_ID_VALUE);
++		return -ENODEV;
++	}
++
++	if (DSI_PORT_READ(CTRL) == 0) {
++		dev_info(dev, "DSI not set up by firmware.\n");
++		return 0;
++	}
++
++	/* Set this flag to indicate that we're relying on boot-time
++	 * DSI state and can't successfully reconfigure DSI yet.
++	 */
++	dsi->use_firmware_setup = VC4_DSI_USE_FIRMWARE_SETUP;
++
++	if (dsi->use_firmware_setup) {
++		/* Increment references to the various clocks so that
++		 * they stay always enabled and the clock framework
++		 * doesn't disable their parents.
++		 */
++		ret = clk_prepare_enable(dsi->escape_clock);
++		if (ret) {
++			DRM_ERROR("Failed to refcount DSI escape clock: %d\n", ret);
++			return ret;
++		}
++
++		ret = clk_prepare_enable(dsi->pll_phy_clock);
++		if (ret) {
++			DRM_ERROR("Failed to refcount DSI PLL: %d\n", ret);
++			return ret;
++		}
++
++		ret = clk_prepare_enable(dsi->pixel_clock);
++		if (ret) {
++			DRM_ERROR("Failed to refcount pixel clock: %d\n", ret);
++			return ret;
++		}
++	}
++
++	/* DSI1 has a broken AXI slave that doesn't respond to writes
++	 * from the ARM.  It does handle writes from the DMA engine,
++	 * so set up a channel for talking to it.
++	 */
++	if (dsi->port == 1) {
++		dsi->reg_dma_mem = dma_alloc_coherent(dev, 4,
++						      &dsi->reg_dma_paddr,
++						      GFP_KERNEL);
++		if (!dsi->reg_dma_mem) {
++			DRM_ERROR("Failed to get DMA memory\n");
++			return -ENOMEM;
++		}
++
++		dma_cap_zero(dma_mask);
++		dma_cap_set(DMA_MEMCPY, dma_mask);
++		dsi->reg_dma_chan = dma_request_channel(dma_mask, NULL, NULL);
++		if (IS_ERR(dsi->reg_dma_chan)) {
++			ret = PTR_ERR(dsi->reg_dma_chan);
++			if (ret != -EPROBE_DEFER)
++				DRM_ERROR("Failed to get DMA channel: %d\n",
++					  ret);
++			return ret;
++		}
++
++		/* Get the physical address of the device's registers.  The
++		 * struct resource for the regs gives us the bus address
++		 * instead.
++		 */
++		dsi->reg_paddr = be32_to_cpup(of_get_address(dev->of_node,
++							     0, NULL, NULL));
++	}
++
++	init_completion(&dsi->xfer_completion);
++	/* At startup enable error-reporting interrupts and nothing else. */
++	DSI_PORT_WRITE(INT_EN, DSI1_INTERRUPTS_ALWAYS_ENABLED);
++	/* Clear any existing interrupt state. */
++	DSI_PORT_WRITE(INT_STAT, DSI_PORT_READ(INT_STAT));
++
++	ret = devm_request_irq(dev, platform_get_irq(pdev, 0),
++			       vc4_dsi_irq_handler, 0, "vc4 dsi", dsi);
++	if (ret) {
++		if (ret != -EPROBE_DEFER)
++			dev_err(dev, "Failed to get interrupt: %d\n", ret);
++		return ret;
++	}
++
++	dsi->escape_clock = devm_clk_get(dev, "escape");
++	if (IS_ERR(dsi->escape_clock)) {
++		ret = PTR_ERR(dsi->escape_clock);
++		if (ret != -EPROBE_DEFER)
++			dev_err(dev, "Failed to get escape clock: %d\n", ret);
++		return ret;
++	}
++
++	dsi->pll_phy_clock = devm_clk_get(dev, "phy");
++	if (IS_ERR(dsi->pll_phy_clock)) {
++		ret = PTR_ERR(dsi->pll_phy_clock);
++		if (ret != -EPROBE_DEFER)
++			dev_err(dev, "Failed to get phy clock: %d\n", ret);
++		return ret;
++	}
++
++	dsi->pixel_clock = devm_clk_get(dev, "pixel");
++	if (IS_ERR(dsi->pixel_clock)) {
++		ret = PTR_ERR(dsi->pixel_clock);
++		if (ret != -EPROBE_DEFER)
++			dev_err(dev, "Failed to get pixel clock: %d\n", ret);
++		return ret;
++	}
++
++	/* The esc clock rate is supposed to always be 100Mhz. */
++	ret = clk_set_rate(dsi->escape_clock, 100 * 1000000);
++	if (ret) {
++		dev_err(dev, "Failed to set esc clock: %d\n", ret);
++		return ret;
++	}
++
++	ret = vc4_dsi_init_phy_byte_clock(dsi);
++	if (ret)
++		return ret;
++
++	if (dsi->port == 1)
++		vc4->dsi1 = dsi;
++
++	drm_encoder_init(drm, dsi->encoder, &vc4_dsi_encoder_funcs,
++			 DRM_MODE_ENCODER_DSI);
++	drm_encoder_helper_add(dsi->encoder, &vc4_dsi_encoder_helper_funcs);
++
++	dsi->connector = vc4_dsi_connector_init(drm, dsi);
++	if (IS_ERR(dsi->connector)) {
++		ret = PTR_ERR(dsi->connector);
++		goto err_destroy_encoder;
++	}
++
++	dsi->dsi_host.ops = &vc4_dsi_host_ops;
++	dsi->dsi_host.dev = dev;
++
++	mipi_dsi_host_register(&dsi->dsi_host);
++
++	dev_set_drvdata(dev, dsi);
++
++	return 0;
++
++err_destroy_encoder:
++	vc4_dsi_encoder_destroy(dsi->encoder);
++
++	return ret;
++}
++
++static void vc4_dsi_unbind(struct device *dev, struct device *master,
++			   void *data)
++{
++	struct drm_device *drm = dev_get_drvdata(master);
++	struct vc4_dev *vc4 = to_vc4_dev(drm);
++	struct vc4_dsi *dsi = dev_get_drvdata(dev);
++
++	vc4_dsi_connector_destroy(dsi->connector);
++	vc4_dsi_encoder_destroy(dsi->encoder);
++
++	mipi_dsi_host_unregister(&dsi->dsi_host);
++
++	if (!dsi->use_firmware_setup) {
++		clk_disable_unprepare(dsi->pll_phy_clock);
++		clk_disable_unprepare(dsi->escape_clock);
++		clk_disable_unprepare(dsi->pixel_clock);
++	}
++
++	if (dsi->port == 1)
++		vc4->dsi1 = NULL;
++}
++
++static const struct component_ops vc4_dsi_ops = {
++	.bind   = vc4_dsi_bind,
++	.unbind = vc4_dsi_unbind,
++};
++
++static int vc4_dsi_dev_probe(struct platform_device *pdev)
++{
++	return component_add(&pdev->dev, &vc4_dsi_ops);
++}
++
++static int vc4_dsi_dev_remove(struct platform_device *pdev)
++{
++	component_del(&pdev->dev, &vc4_dsi_ops);
++	return 0;
++}
++
++struct platform_driver vc4_dsi_driver = {
++	.probe = vc4_dsi_dev_probe,
++	.remove = vc4_dsi_dev_remove,
++	.driver = {
++		.name = "vc4_dsi",
++		.of_match_table = vc4_dsi_dt_match,
++	},
++};
diff --git a/target/linux/brcm2708/patches-4.4/0444-drm-panel-Add-support-for-the-Raspberry-Pi-7-Touchsc.patch b/target/linux/brcm2708/patches-4.4/0444-drm-panel-Add-support-for-the-Raspberry-Pi-7-Touchsc.patch
new file mode 100644
index 0000000..0291ce2
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0444-drm-panel-Add-support-for-the-Raspberry-Pi-7-Touchsc.patch
@@ -0,0 +1,390 @@
+From 4557de6d23737cf44fa5ddf1379be59d4bca2df7 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Tue, 26 Apr 2016 13:46:13 -0700
+Subject: [PATCH] drm/panel: Add support for the Raspberry Pi 7" Touchscreen.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/panel/Kconfig                      |   9 +
+ drivers/gpu/drm/panel/Makefile                     |   1 +
+ .../gpu/drm/panel/panel-raspberrypi-touchscreen.c  | 347 +++++++++++++++++++++
+ 3 files changed, 357 insertions(+)
+ create mode 100644 drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
+
+--- a/drivers/gpu/drm/panel/Kconfig
++++ b/drivers/gpu/drm/panel/Kconfig
+@@ -31,6 +31,15 @@ config DRM_PANEL_LG_LG4573
+ 	  Say Y here if you want to enable support for LG4573 RGB panel.
+ 	  To compile this driver as a module, choose M here.
+ 
++config DRM_PANEL_RASPBERRYPI_TOUCHSCREEN
++	tristate "Raspberry Pi 7-inch touchscreen panel"
++	depends on DRM_MIPI_DSI
++	depends on BACKLIGHT_CLASS_DEVICE
++	help
++	  Say Y here if you want to enable support for the Raspberry
++	  Pi 7" Touchscreen.  To compile this driver as a module,
++	  choose M here.
++
+ config DRM_PANEL_SAMSUNG_S6E8AA0
+ 	tristate "Samsung S6E8AA0 DSI video mode panel"
+ 	depends on OF
+--- a/drivers/gpu/drm/panel/Makefile
++++ b/drivers/gpu/drm/panel/Makefile
+@@ -1,5 +1,6 @@
+ obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o
+ obj-$(CONFIG_DRM_PANEL_LG_LG4573) += panel-lg-lg4573.o
++obj-$(CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN) += panel-raspberrypi-touchscreen.o
+ obj-$(CONFIG_DRM_PANEL_SAMSUNG_LD9040) += panel-samsung-ld9040.o
+ obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0) += panel-samsung-s6e8aa0.o
+ obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o
+--- /dev/null
++++ b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
+@@ -0,0 +1,347 @@
++/*
++ * Copyright © 2016 Broadcom Limited
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * Portions of this file (derived from panel-simple.c) are:
++ *
++ * Copyright (C) 2013, NVIDIA Corporation.  All rights reserved.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Software"),
++ * to deal in the Software without restriction, including without limitation
++ * the rights to use, copy, modify, merge, publish, distribute, sub license,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice (including the
++ * next paragraph) shall be included in all copies or substantial portions
++ * of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++ * DEALINGS IN THE SOFTWARE.
++ */
++
++/**
++ * DOC: Raspberry Pi 7" touchscreen panel driver.
++ *
++ * The 7" touchscreen consists of a DPI LCD panel, a Toshiba
++ * TC358762XBG DSI-DPI bridge, and an I2C-connected Atmel ATTINY88-MUR
++ * controlling power management, the LCD PWM, and the touchscreen.
++ *
++ * This driver presents this device as a MIPI DSI panel to the DRM
++ * driver, and should expose the touchscreen as a HID device.
++ */
++
++#include <linux/backlight.h>
++#include <linux/delay.h>
++#include <linux/err.h>
++#include <linux/fb.h>
++#include <linux/gpio.h>
++#include <linux/gpio/consumer.h>
++#include <linux/i2c.h>
++#include <linux/module.h>
++#include <linux/of.h>
++#include <linux/of_device.h>
++#include <linux/of_graph.h>
++#include <linux/pm.h>
++
++#include <drm/drm_panel.h>
++#include <drm/drmP.h>
++#include <drm/drm_crtc.h>
++#include <drm/drm_mipi_dsi.h>
++#include <drm/drm_panel.h>
++
++struct rpi_touchscreen {
++	struct drm_panel base;
++	struct mipi_dsi_device *dsi;
++	struct i2c_client *bridge_i2c;
++	struct backlight_device *backlight;
++
++	bool prepared;
++	bool enabled;
++
++	/* Version of the firmware on the bridge chip */
++	int atmel_ver;
++};
++
++static const struct drm_display_mode rpi_touchscreen_modes[] = {
++	{
++		/* This is assuming that we'll be running the DSI PLL
++		 * at 2Ghz / 3 (since we only get integer dividers),
++		 * so a pixel clock of 2Ghz / 3 / 8.
++		 */
++		.clock = 83333,
++		.hdisplay = 800,
++		.hsync_start = 800 + 61,
++		.hsync_end = 800 + 61 + 2,
++		.htotal = 800 + 61 + 2 + 44,
++		.vdisplay = 480,
++		.vsync_start = 480 + 7,
++		.vsync_end = 480 + 7 + 2,
++		.vtotal = 480 + 7 + 2 + 21,
++		.vrefresh = 60,
++	},
++};
++
++static struct rpi_touchscreen *panel_to_ts(struct drm_panel *panel)
++{
++	return container_of(panel, struct rpi_touchscreen, base);
++}
++
++struct regdump {
++	const char *reg;
++	u32 offset;
++};
++
++#define REGDUMP(reg) { #reg, reg }
++
++static int rpi_touchscreen_disable(struct drm_panel *panel)
++{
++	struct rpi_touchscreen *ts = panel_to_ts(panel);
++	pr_err("disable\n");
++
++	if (!ts->enabled)
++		return 0;
++
++	if (ts->backlight) {
++		ts->backlight->props.power = FB_BLANK_POWERDOWN;
++		backlight_update_status(ts->backlight);
++	}
++
++	ts->enabled = false;
++
++	return 0;
++}
++
++static int rpi_touchscreen_unprepare(struct drm_panel *panel)
++{
++	struct rpi_touchscreen *ts = panel_to_ts(panel);
++
++	if (!ts->prepared)
++		return 0;
++
++	ts->prepared = false;
++
++	return 0;
++}
++
++static int rpi_touchscreen_prepare(struct drm_panel *panel)
++{
++	struct rpi_touchscreen *ts = panel_to_ts(panel);
++
++	if (ts->prepared)
++		return 0;
++
++	ts->prepared = true;
++
++	return 0;
++}
++
++/*
++ * Powers on the panel once the DSI link is up.
++ *
++ * The TC358762 is run in PLLOFF mode, where it usees the MIPI DSI
++ * byte clock instead of an external reference clock.  This means that
++ * we need the DSI host to be on and transmitting before we start
++ * talking to it.
++ */
++static int rpi_touchscreen_enable(struct drm_panel *panel)
++{
++	struct rpi_touchscreen *ts = panel_to_ts(panel);
++
++	if (ts->enabled)
++		return 0;
++
++	if (ts->backlight) {
++		ts->backlight->props.power = FB_BLANK_UNBLANK;
++		backlight_update_status(ts->backlight);
++	}
++
++	ts->enabled = true;
++
++	return 0;
++}
++
++static int rpi_touchscreen_get_modes(struct drm_panel *panel)
++{
++	struct drm_connector *connector = panel->connector;
++	struct drm_device *drm = panel->drm;
++	unsigned int i, num = 0;
++
++	for (i = 0; i < ARRAY_SIZE(rpi_touchscreen_modes); i++) {
++		const struct drm_display_mode *m = &rpi_touchscreen_modes[i];
++		struct drm_display_mode *mode;
++
++		mode = drm_mode_duplicate(drm, m);
++		if (!mode) {
++			dev_err(drm->dev, "failed to add mode %ux%u@%u\n",
++				m->hdisplay, m->vdisplay, m->vrefresh);
++			continue;
++		}
++
++		mode->type |= DRM_MODE_TYPE_DRIVER;
++
++		if (i == 0)
++			mode->type |= DRM_MODE_TYPE_PREFERRED;
++
++		drm_mode_set_name(mode);
++
++		drm_mode_probed_add(connector, mode);
++		num++;
++	}
++
++	connector->display_info.bpc = 8;
++	connector->display_info.width_mm = 217; /* XXX */
++	connector->display_info.height_mm = 136; /* XXX */
++
++	return num;
++}
++
++static int rpi_touchscreen_backlight_update(struct backlight_device *bl)
++{
++	int brightness = bl->props.brightness;
++
++	if (bl->props.power != FB_BLANK_UNBLANK ||
++	    bl->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK))
++		brightness = 0;
++
++	return 0;
++}
++
++static const struct backlight_ops rpi_touchscreen_backlight_ops = {
++	.update_status	= rpi_touchscreen_backlight_update,
++};
++
++static const struct drm_panel_funcs rpi_touchscreen_funcs = {
++	.disable = rpi_touchscreen_disable,
++	.unprepare = rpi_touchscreen_unprepare,
++	.prepare = rpi_touchscreen_prepare,
++	.enable = rpi_touchscreen_enable,
++	.get_modes = rpi_touchscreen_get_modes,
++};
++
++static struct i2c_client *rpi_touchscreen_get_i2c(struct device *dev,
++						  const char *name)
++{
++	struct device_node *node;
++	struct i2c_client *client;
++
++	node = of_parse_phandle(dev->of_node, name, 0);
++	if (!node)
++		return ERR_PTR(-ENODEV);
++
++	client = of_find_i2c_device_by_node(node);
++
++	of_node_put(node);
++
++	return client;
++}
++
++static int rpi_touchscreen_dsi_probe(struct mipi_dsi_device *dsi)
++{
++	struct device *dev = &dsi->dev;
++	struct rpi_touchscreen *ts;
++	int ret;
++
++	ts = devm_kzalloc(dev, sizeof(*ts), GFP_KERNEL);
++	if (!ts)
++		return -ENOMEM;
++
++	dev_set_drvdata(dev, ts);
++
++	ts->dsi = dsi;
++	dsi->mode_flags = (MIPI_DSI_MODE_VIDEO |
++			   MIPI_DSI_MODE_VIDEO_SYNC_PULSE);
++	dsi->format = MIPI_DSI_FMT_RGB888;
++	dsi->lanes = 1;
++
++	ts->bridge_i2c =
++		rpi_touchscreen_get_i2c(dev, "raspberrypi,touchscreen-bridge");
++	if (!ts->bridge_i2c) {
++		ret = -EPROBE_DEFER;
++		return ret;
++	}
++
++#if 0
++	ts->backlight =
++		devm_backlight_device_register(dev,
++					       "raspberrypi-touchscreen-backlight",
++					       dev, ts,
++					       &rpi_touchscreen_backlight_ops,
++					       NULL);
++	if (IS_ERR(ts->backlight)) {
++		DRM_ERROR("failed to register backlight\n");
++		return PTR_ERR(ts->backlight);
++	}
++	ts->backlight->props.max_brightness = RPI_TOUCHSCREEN_MAX_BRIGHTNESS;
++	ts->backlight->props.brightness = RPI_TOUCHSCREEN_MAX_BRIGHTNESS;
++#endif
++
++	drm_panel_init(&ts->base);
++	ts->base.dev = dev;
++	ts->base.funcs = &rpi_touchscreen_funcs;
++
++	ret = drm_panel_add(&ts->base);
++	if (ret < 0)
++		goto err_release_bridge;
++
++	return mipi_dsi_attach(dsi);
++
++err_release_bridge:
++	put_device(&ts->bridge_i2c->dev);
++	return ret;
++}
++
++static int rpi_touchscreen_dsi_remove(struct mipi_dsi_device *dsi)
++{
++	struct device *dev = &dsi->dev;
++	struct rpi_touchscreen *ts = dev_get_drvdata(dev);
++	int ret;
++
++	ret = mipi_dsi_detach(dsi);
++	if (ret < 0) {
++		dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret);
++		return ret;
++	}
++
++	drm_panel_detach(&ts->base);
++	drm_panel_remove(&ts->base);
++
++	put_device(&ts->bridge_i2c->dev);
++
++	return 0;
++}
++
++static void rpi_touchscreen_dsi_shutdown(struct mipi_dsi_device *dsi)
++{
++	/* XXX: poweroff */
++}
++
++static const struct of_device_id rpi_touchscreen_of_match[] = {
++	{ .compatible = "raspberrypi,touchscreen" },
++	{ } /* sentinel */
++};
++MODULE_DEVICE_TABLE(of, rpi_touchscreen_of_match);
++
++static struct mipi_dsi_driver rpi_touchscreen_driver = {
++	.driver = {
++		.name = "raspberrypi-touchscreen",
++		.of_match_table = rpi_touchscreen_of_match,
++	},
++	.probe = rpi_touchscreen_dsi_probe,
++	.remove = rpi_touchscreen_dsi_remove,
++	.shutdown = rpi_touchscreen_dsi_shutdown,
++};
++module_mipi_dsi_driver(rpi_touchscreen_driver);
++
++MODULE_AUTHOR("Eric Anholt <eric at anholt.net>");
++MODULE_DESCRIPTION("Raspberry Pi 7-inch touchscreen driver");
++MODULE_LICENSE("GPL v2");
diff --git a/target/linux/brcm2708/patches-4.4/0329-BCM270X-Include-DRM_PANEL_SIMPLE-in-the-defconfigs.patch b/target/linux/brcm2708/patches-4.4/0445-BCM270X-Add-the-DSI-panel-to-the-defconfig.patch
similarity index 58%
rename from target/linux/brcm2708/patches-4.4/0329-BCM270X-Include-DRM_PANEL_SIMPLE-in-the-defconfigs.patch
rename to target/linux/brcm2708/patches-4.4/0445-BCM270X-Add-the-DSI-panel-to-the-defconfig.patch
index cedb9b9..5e813f9 100644
--- a/target/linux/brcm2708/patches-4.4/0329-BCM270X-Include-DRM_PANEL_SIMPLE-in-the-defconfigs.patch
+++ b/target/linux/brcm2708/patches-4.4/0445-BCM270X-Add-the-DSI-panel-to-the-defconfig.patch
@@ -1,9 +1,7 @@
-From 9768eff7323ea9e3b663be5e2850fdf87ddfe13f Mon Sep 17 00:00:00 2001
+From 42c5b9d02e0076ce2b198a6364215ca46bec6e29 Mon Sep 17 00:00:00 2001
 From: Eric Anholt <eric at anholt.net>
-Date: Fri, 6 May 2016 12:59:27 -0700
-Subject: [PATCH 329/423] BCM270X: Include DRM_PANEL_SIMPLE in the defconfigs.
-
-This is going to be required for the Adafruit DPI panel support.
+Date: Thu, 2 Jun 2016 12:29:45 -0700
+Subject: [PATCH] BCM270X: Add the DSI panel to the defconfig.
 
 Signed-off-by: Eric Anholt <eric at anholt.net>
 ---
@@ -13,21 +11,21 @@ Signed-off-by: Eric Anholt <eric at anholt.net>
 
 --- a/arch/arm/configs/bcm2709_defconfig
 +++ b/arch/arm/configs/bcm2709_defconfig
-@@ -817,6 +817,7 @@ CONFIG_VIDEO_MT9V011=m
- CONFIG_DRM=m
+@@ -822,6 +822,7 @@ CONFIG_DRM=m
  CONFIG_DRM_LOAD_EDID_FIRMWARE=y
  CONFIG_DRM_UDL=m
-+CONFIG_DRM_PANEL_SIMPLE=m
+ CONFIG_DRM_PANEL_SIMPLE=m
++CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m
  CONFIG_DRM_VC4=m
  CONFIG_FB=y
  CONFIG_FB_BCM2708=y
 --- a/arch/arm/configs/bcmrpi_defconfig
 +++ b/arch/arm/configs/bcmrpi_defconfig
-@@ -809,6 +809,7 @@ CONFIG_VIDEO_MT9V011=m
- CONFIG_DRM=m
+@@ -814,6 +814,7 @@ CONFIG_DRM=m
  CONFIG_DRM_LOAD_EDID_FIRMWARE=y
  CONFIG_DRM_UDL=m
-+CONFIG_DRM_PANEL_SIMPLE=m
+ CONFIG_DRM_PANEL_SIMPLE=m
++CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m
  CONFIG_DRM_VC4=m
  CONFIG_FB=y
  CONFIG_FB_BCM2708=y
diff --git a/target/linux/brcm2708/patches-4.4/0446-BCM270X-Add-the-DSI-and-DSI-panel-nodes-to-the-VC4-o.patch b/target/linux/brcm2708/patches-4.4/0446-BCM270X-Add-the-DSI-and-DSI-panel-nodes-to-the-VC4-o.patch
new file mode 100644
index 0000000..44f29dd
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0446-BCM270X-Add-the-DSI-and-DSI-panel-nodes-to-the-VC4-o.patch
@@ -0,0 +1,84 @@
+From 64871d96e1d387437fa52d8398f2212722890bcd Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Thu, 2 Jun 2016 15:09:35 -0700
+Subject: [PATCH] BCM270X: Add the DSI and DSI panel nodes to the VC4 overlay.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ arch/arm/boot/dts/bcm2708_common.dtsi              | 24 ++++++++++++++++++++--
+ arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 16 +++++++++++++++
+ 2 files changed, 38 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/boot/dts/bcm2708_common.dtsi
++++ b/arch/arm/boot/dts/bcm2708_common.dtsi
+@@ -2,6 +2,7 @@
+ #include <dt-bindings/clock/bcm2835-aux.h>
+ #include "dt-bindings/power/raspberrypi-power.h"
+ #include "dt-bindings/gpio/gpio.h"
++#include "dt-bindings/pinctrl/bcm2835.h"
+ #include "skeleton.dtsi"
+ 
+ / {
+@@ -110,9 +111,10 @@
+ 			reg = <0x7e101000 0x2000>;
+ 
+ 			/* CPRMAN derives everything from the platform's
+-			 * oscillator.
++			 * oscillator except for a few clocks that may
++			 * derive from something else derived from CPRMAN..
+ 			 */
+-			clocks = <&clk_osc>;
++			clocks = <&clk_osc>, <&dsi1 0>, <&dsi1 1>, <&dsi1 2>;
+ 			status = "disabled";
+ 		};
+ 
+@@ -282,6 +284,24 @@
+ 			status = "disabled";
+ 		};
+ 
++		dsi1: dsi at 7e700000 {
++			#address-cells = <1>;
++			#size-cells = <0>;
++			#clock-cells = <1>;
++
++			compatible = "brcm,bcm2835-dsi1";
++			reg = <0x7e700000 0x8c>;
++			interrupts = <2 12>;
++
++			clocks = <&cprman BCM2835_PLLD_DSI1>,
++				 <&cprman BCM2835_CLOCK_DSI1E>,
++				 <&cprman BCM2835_CLOCK_DSI1P>;
++			clock-names = "phy", "escape", "pixel";
++			clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
++			status = "disabled";
++			power-domains = <&power RPI_POWER_DOMAIN_DSI1>;
++		};
++
+ 		i2c1: i2c at 7e804000 {
+ 			compatible = "brcm,bcm2708-i2c";
+ 			reg = <0x7e804000 0x1000>;
+--- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
++++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
+@@ -126,6 +126,22 @@
+ 		};
+ 	};
+ 
++	fragment at 16 {
++		target = <&dsi1>;
++		__overlay__  {
++			#address-cells = <1>;
++			#size-cells = <0>;
++			status = "okay";
++
++			brcm,panel = <&pitouchscreen>;
++
++			pitouchscreen: panel {
++				compatible = "raspberrypi,touchscreen";
++				reg = <0>;
++			};
++		};
++	};
++
+ 	__overrides__ {
+ 		cma-256 = <0>,"+0-1-2-3-4";
+ 		cma-192 = <0>,"-0+1-2-3-4";
diff --git a/target/linux/brcm2708/patches-4.4/0447-of-Export-of_device_uevent_modalias-for-DRM_MIPI_DSI.patch b/target/linux/brcm2708/patches-4.4/0447-of-Export-of_device_uevent_modalias-for-DRM_MIPI_DSI.patch
new file mode 100644
index 0000000..a9ae593
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0447-of-Export-of_device_uevent_modalias-for-DRM_MIPI_DSI.patch
@@ -0,0 +1,21 @@
+From e294a4775d033ed4d0850f841786ec9358facf69 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Tue, 9 Aug 2016 15:12:06 -0700
+Subject: [PATCH] of: Export of_device_uevent_modalias for DRM_MIPI_DSI.
+
+In order to make DSI panel modules able to load automatically, we need
+to emit the OF modalias uevent so that their MODULE_DEVICE_TABLE(of,
+...) can match against it.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/of/device.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/of/device.c
++++ b/drivers/of/device.c
+@@ -287,3 +287,4 @@ int of_device_uevent_modalias(struct dev
+ 
+ 	return 0;
+ }
++EXPORT_SYMBOL(of_device_uevent_modalias);
diff --git a/target/linux/brcm2708/patches-4.4/0448-drm-Emit-modalias-uevents-for-the-DSI-devices-we-cre.patch b/target/linux/brcm2708/patches-4.4/0448-drm-Emit-modalias-uevents-for-the-DSI-devices-we-cre.patch
new file mode 100644
index 0000000..77b0eca
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0448-drm-Emit-modalias-uevents-for-the-DSI-devices-we-cre.patch
@@ -0,0 +1,48 @@
+From e46450e232a96665344b825557bacf1d37842174 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Tue, 9 Aug 2016 15:13:33 -0700
+Subject: [PATCH] drm: Emit modalias uevents for the DSI devices we create.
+
+This gets the Raspberry Pi panel module to automatically load at boot
+time.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/drm_mipi_dsi.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+--- a/drivers/gpu/drm/drm_mipi_dsi.c
++++ b/drivers/gpu/drm/drm_mipi_dsi.c
+@@ -50,6 +50,24 @@ static int mipi_dsi_device_match(struct
+ 	return of_driver_match_device(dev, drv);
+ }
+ 
++/**
++ * Send modalias events when devices are created on the bus, so that
++ * modules can load automatically.
++ */
++static int mipi_dsi_uevent(struct device *dev, struct kobj_uevent_env *env)
++{
++	int rc;
++
++	/* Just do the OF uevent, which emits the compatible string so
++	 * that a MODULE_DEVICE_TABLE(of, ...) works.
++	 */
++	rc = of_device_uevent_modalias(dev, env);
++	if (rc != -ENODEV)
++		return rc;
++
++	return 0;
++}
++
+ static const struct dev_pm_ops mipi_dsi_device_pm_ops = {
+ 	.runtime_suspend = pm_generic_runtime_suspend,
+ 	.runtime_resume = pm_generic_runtime_resume,
+@@ -65,6 +83,7 @@ static struct bus_type mipi_dsi_bus_type
+ 	.name = "mipi-dsi",
+ 	.match = mipi_dsi_device_match,
+ 	.pm = &mipi_dsi_device_pm_ops,
++	.uevent = mipi_dsi_uevent,
+ };
+ 
+ static int of_device_match(struct device *dev, void *data)
diff --git a/target/linux/brcm2708/patches-4.4/0449-gpu-drm-vc4_hdmi-add-missing-of_node_put-after-calli.patch b/target/linux/brcm2708/patches-4.4/0449-gpu-drm-vc4_hdmi-add-missing-of_node_put-after-calli.patch
new file mode 100644
index 0000000..75bc32d
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0449-gpu-drm-vc4_hdmi-add-missing-of_node_put-after-calli.patch
@@ -0,0 +1,46 @@
+From cededb2870ab15fcf79f063a83f5f37421e5bdfc Mon Sep 17 00:00:00 2001
+From: Peter Chen <peter.chen at nxp.com>
+Date: Tue, 5 Jul 2016 10:04:54 +0800
+Subject: [PATCH] gpu: drm: vc4_hdmi: add missing of_node_put after calling
+ of_parse_phandle
+
+of_node_put needs to be called when the device node which is got
+from of_parse_phandle has finished using.
+
+Signed-off-by: Peter Chen <peter.chen at nxp.com>
+Reviewed-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit 027a697677b0d5ff211773596d96f84078ceda80)
+---
+ drivers/gpu/drm/vc4/vc4_hdmi.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
+@@ -467,12 +467,6 @@ static int vc4_hdmi_bind(struct device *
+ 	if (IS_ERR(hdmi->hd_regs))
+ 		return PTR_ERR(hdmi->hd_regs);
+ 
+-	ddc_node = of_parse_phandle(dev->of_node, "ddc", 0);
+-	if (!ddc_node) {
+-		DRM_ERROR("Failed to find ddc node in device tree\n");
+-		return -ENODEV;
+-	}
+-
+ 	hdmi->pixel_clock = devm_clk_get(dev, "pixel");
+ 	if (IS_ERR(hdmi->pixel_clock)) {
+ 		DRM_ERROR("Failed to get pixel clock\n");
+@@ -484,7 +478,14 @@ static int vc4_hdmi_bind(struct device *
+ 		return PTR_ERR(hdmi->hsm_clock);
+ 	}
+ 
++	ddc_node = of_parse_phandle(dev->of_node, "ddc", 0);
++	if (!ddc_node) {
++		DRM_ERROR("Failed to find ddc node in device tree\n");
++		return -ENODEV;
++	}
++
+ 	hdmi->ddc = of_find_i2c_adapter_by_node(ddc_node);
++	of_node_put(ddc_node);
+ 	if (!hdmi->ddc) {
+ 		DRM_DEBUG("Failed to get ddc i2c adapter by node\n");
+ 		return -EPROBE_DEFER;
diff --git a/target/linux/brcm2708/patches-4.4/0450-drm-vc4-Use-for_each_plane_in_state.patch b/target/linux/brcm2708/patches-4.4/0450-drm-vc4-Use-for_each_plane_in_state.patch
new file mode 100644
index 0000000..8b0d0b6
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0450-drm-vc4-Use-for_each_plane_in_state.patch
@@ -0,0 +1,42 @@
+From fa8b827fb90719d981a8fa292064958219c8ed10 Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter at ffwll.ch>
+Date: Thu, 2 Jun 2016 00:06:28 +0200
+Subject: [PATCH] drm/vc4: Use for_each_plane_in_state
+
+We want to hide drm_atomic_stat internals a bit better.
+
+Cc: Eric Anholt <eric at anholt.net>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
+Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1464818821-5736-6-git-send-email-daniel.vetter@ffwll.ch
+(cherry picked from commit 833cd78adbc236db684f19e93121d4bf6659a8af)
+---
+ drivers/gpu/drm/vc4/vc4_kms.c | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_kms.c
++++ b/drivers/gpu/drm/vc4/vc4_kms.c
+@@ -111,6 +111,8 @@ static int vc4_atomic_commit(struct drm_
+ 	int i;
+ 	uint64_t wait_seqno = 0;
+ 	struct vc4_commit *c;
++	struct drm_plane *plane;
++	struct drm_plane_state *new_state;
+ 
+ 	c = commit_init(state);
+ 	if (!c)
+@@ -130,13 +132,7 @@ static int vc4_atomic_commit(struct drm_
+ 		return ret;
+ 	}
+ 
+-	for (i = 0; i < dev->mode_config.num_total_plane; i++) {
+-		struct drm_plane *plane = state->planes[i];
+-		struct drm_plane_state *new_state = state->plane_states[i];
+-
+-		if (!plane)
+-			continue;
+-
++	for_each_plane_in_state(state, plane, new_state, i) {
+ 		if ((plane->state->fb != new_state->fb) && new_state->fb) {
+ 			struct drm_gem_cma_object *cma_bo =
+ 				drm_fb_cma_get_gem_obj(new_state->fb, 0);
diff --git a/target/linux/brcm2708/patches-4.4/0451-drm-vc4-Fix-ioctl-permissions-for-render-nodes.patch b/target/linux/brcm2708/patches-4.4/0451-drm-vc4-Fix-ioctl-permissions-for-render-nodes.patch
new file mode 100644
index 0000000..40afd95
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0451-drm-vc4-Fix-ioctl-permissions-for-render-nodes.patch
@@ -0,0 +1,39 @@
+From cd24c4594b21f3a9dec5780d06dacbaf59415225 Mon Sep 17 00:00:00 2001
+From: Herve Jourdain <herve.jourdain at neuf.fr>
+Date: Wed, 1 Jun 2016 02:24:46 +0800
+Subject: [PATCH] drm/vc4: Fix ioctl permissions for render nodes.
+
+Contrary to other flags to DRM_IOCTL_DEF_DRV(), which restrict usage,
+the flag for render node is an enabler (the IOCTL can't be used from
+render node if it's not present).  So DRM_RENDER_ALLOW needs to be
+added to all the flags that were previously 0.
+
+Signed-off-by: Herve Jourdain <herve.jourdain at neuf.fr>
+Reviewed-by: Eric Anholt <eric at anholt.net>
+Fixes: 0cd3e2747662 ("drm/vc4: Add missing render node support")
+(cherry picked from commit b10c22e5f9902a329450c2027e9291b71e9f1602)
+---
+ drivers/gpu/drm/vc4/vc4_drv.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.c
++++ b/drivers/gpu/drm/vc4/vc4_drv.c
+@@ -88,12 +88,12 @@ static const struct file_operations vc4_
+ };
+ 
+ static const struct drm_ioctl_desc vc4_drm_ioctls[] = {
+-	DRM_IOCTL_DEF_DRV(VC4_SUBMIT_CL, vc4_submit_cl_ioctl, 0),
+-	DRM_IOCTL_DEF_DRV(VC4_WAIT_SEQNO, vc4_wait_seqno_ioctl, 0),
+-	DRM_IOCTL_DEF_DRV(VC4_WAIT_BO, vc4_wait_bo_ioctl, 0),
+-	DRM_IOCTL_DEF_DRV(VC4_CREATE_BO, vc4_create_bo_ioctl, 0),
+-	DRM_IOCTL_DEF_DRV(VC4_MMAP_BO, vc4_mmap_bo_ioctl, 0),
+-	DRM_IOCTL_DEF_DRV(VC4_CREATE_SHADER_BO, vc4_create_shader_bo_ioctl, 0),
++	DRM_IOCTL_DEF_DRV(VC4_SUBMIT_CL, vc4_submit_cl_ioctl, DRM_RENDER_ALLOW),
++	DRM_IOCTL_DEF_DRV(VC4_WAIT_SEQNO, vc4_wait_seqno_ioctl, DRM_RENDER_ALLOW),
++	DRM_IOCTL_DEF_DRV(VC4_WAIT_BO, vc4_wait_bo_ioctl, DRM_RENDER_ALLOW),
++	DRM_IOCTL_DEF_DRV(VC4_CREATE_BO, vc4_create_bo_ioctl, DRM_RENDER_ALLOW),
++	DRM_IOCTL_DEF_DRV(VC4_MMAP_BO, vc4_mmap_bo_ioctl, DRM_RENDER_ALLOW),
++	DRM_IOCTL_DEF_DRV(VC4_CREATE_SHADER_BO, vc4_create_shader_bo_ioctl, DRM_RENDER_ALLOW),
+ 	DRM_IOCTL_DEF_DRV(VC4_GET_HANG_STATE, vc4_get_hang_state_ioctl,
+ 			  DRM_ROOT_ONLY),
+ };
diff --git a/target/linux/brcm2708/patches-4.4/0452-drm-vc4-Make-pageflip-completion-handling-more-robus.patch b/target/linux/brcm2708/patches-4.4/0452-drm-vc4-Make-pageflip-completion-handling-more-robus.patch
new file mode 100644
index 0000000..00701f8
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0452-drm-vc4-Make-pageflip-completion-handling-more-robus.patch
@@ -0,0 +1,126 @@
+From cb182bb6180c57b28636669a613861023fd8f03d Mon Sep 17 00:00:00 2001
+From: Mario Kleiner <mario.kleiner.de at gmail.com>
+Date: Wed, 18 May 2016 14:02:46 +0200
+Subject: [PATCH] drm/vc4: Make pageflip completion handling more robust.
+
+Protect both the setup of the pageflip event and the
+latching of the new requested displaylist head pointer
+by the event lock, so we can't get into a situation
+where vc4_atomic_flush latches the new display list via
+HVS_WRITE, then immediately gets preempted before queueing
+the pageflip event, then the page-flip completes in hw and
+the vc4_crtc_handle_page_flip() runs and no-ops due to
+lack of a pending pageflip event, then vc4_atomic_flush
+continues and only then queues the pageflip event - after
+the page flip handling already no-oped. This would cause
+flip completion handling only at the next vblank - one
+frame too late.
+
+In vc4_crtc_handle_page_flip() check the actual DL head
+pointer in SCALER_DISPLACTX against the requested pointer
+for page flip to make sure that the flip actually really
+completed in the current vblank and doesn't get deferred
+to the next one because the DL head pointer was written
+a bit too late into SCALER_DISPLISTX, after start of
+vblank, and missed the boat. This avoids handling a
+pageflip completion too early - one frame too early.
+
+According to Eric, DL head pointer updates which were
+written into the HVS DISPLISTX reg get committed to hardware
+at the last pixel of active scanout. Our vblank interrupt
+handler, as triggered by PV_INT_VFP_START irq, gets to run
+earliest at the first pixel of HBLANK at the end of the
+last scanline of active scanout, ie. vblank irq handling
+runs at least 1 pixel duration after a potential pageflip
+completion happened in hardware.
+
+This ordering of events in the hardware, together with the
+lock protection and SCALER_DISPLACTX sampling of this patch,
+guarantees that pageflip completion handling only runs at
+exactly the vblank irq of actual pageflip completion in all
+cases.
+
+Background info from Eric about the relative timing of
+HVS, PV's and trigger points for interrupts, DL updates:
+
+https://lists.freedesktop.org/archives/dri-devel/2016-May/107510.html
+
+Tested on RPi 2B with hardware timing measurement equipment
+and shown to no longer complete flips too early or too late.
+
+Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com>
+Reviewed-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit 56d1fe0979dc9b73c1c12ee07722ac380d42a0c4)
+---
+ drivers/gpu/drm/vc4/vc4_crtc.c | 28 ++++++++++++++++++----------
+ drivers/gpu/drm/vc4/vc4_regs.h |  4 ++++
+ 2 files changed, 22 insertions(+), 10 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_crtc.c
++++ b/drivers/gpu/drm/vc4/vc4_crtc.c
+@@ -465,14 +465,6 @@ static void vc4_crtc_atomic_flush(struct
+ 
+ 	WARN_ON_ONCE(dlist_next - dlist_start != vc4_state->mm.size);
+ 
+-	HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
+-		  vc4_state->mm.start);
+-
+-	if (debug_dump_regs) {
+-		DRM_INFO("CRTC %d HVS after:\n", drm_crtc_index(crtc));
+-		vc4_hvs_dump_state(dev);
+-	}
+-
+ 	if (crtc->state->event) {
+ 		unsigned long flags;
+ 
+@@ -482,8 +474,20 @@ static void vc4_crtc_atomic_flush(struct
+ 
+ 		spin_lock_irqsave(&dev->event_lock, flags);
+ 		vc4_crtc->event = crtc->state->event;
+-		spin_unlock_irqrestore(&dev->event_lock, flags);
+ 		crtc->state->event = NULL;
++
++		HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
++			  vc4_state->mm.start);
++
++		spin_unlock_irqrestore(&dev->event_lock, flags);
++	} else {
++		HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
++			  vc4_state->mm.start);
++	}
++
++	if (debug_dump_regs) {
++		DRM_INFO("CRTC %d HVS after:\n", drm_crtc_index(crtc));
++		vc4_hvs_dump_state(dev);
+ 	}
+ }
+ 
+@@ -509,10 +513,14 @@ static void vc4_crtc_handle_page_flip(st
+ {
+ 	struct drm_crtc *crtc = &vc4_crtc->base;
+ 	struct drm_device *dev = crtc->dev;
++	struct vc4_dev *vc4 = to_vc4_dev(dev);
++	struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state);
++	u32 chan = vc4_crtc->channel;
+ 	unsigned long flags;
+ 
+ 	spin_lock_irqsave(&dev->event_lock, flags);
+-	if (vc4_crtc->event) {
++	if (vc4_crtc->event &&
++	    (vc4_state->mm.start == HVS_READ(SCALER_DISPLACTX(chan)))) {
+ 		drm_crtc_send_vblank_event(crtc, vc4_crtc->event);
+ 		vc4_crtc->event = NULL;
+ 		drm_crtc_vblank_put(crtc);
+--- a/drivers/gpu/drm/vc4/vc4_regs.h
++++ b/drivers/gpu/drm/vc4/vc4_regs.h
+@@ -343,6 +343,10 @@
+ #define SCALER_DISPLACT0                        0x00000030
+ #define SCALER_DISPLACT1                        0x00000034
+ #define SCALER_DISPLACT2                        0x00000038
++#define SCALER_DISPLACTX(x)			(SCALER_DISPLACT0 +	\
++						 (x) * (SCALER_DISPLACT1 - \
++							SCALER_DISPLACT0))
++
+ #define SCALER_DISPCTRL0                        0x00000040
+ # define SCALER_DISPCTRLX_ENABLE		BIT(31)
+ # define SCALER_DISPCTRLX_RESET			BIT(30)
diff --git a/target/linux/brcm2708/patches-4.4/0453-drm-vc4-clean-up-error-exit-path-on-failed-dpi_conne.patch b/target/linux/brcm2708/patches-4.4/0453-drm-vc4-clean-up-error-exit-path-on-failed-dpi_conne.patch
new file mode 100644
index 0000000..4407c4a
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0453-drm-vc4-clean-up-error-exit-path-on-failed-dpi_conne.patch
@@ -0,0 +1,53 @@
+From 2092b669dd8d4c87cbbf107fd63fe2050ec5b4aa Mon Sep 17 00:00:00 2001
+From: Colin Ian King <colin.king at canonical.com>
+Date: Thu, 2 Jun 2016 10:38:29 +0100
+Subject: [PATCH] drm/vc4: clean up error exit path on failed dpi_connector
+ allocation
+
+There is redundant code in the clean up exit path when dpi_connector
+fails to be allocated.  The current code checks if connector is NULL
+before destroying it, in fact, connector is NULL at this point so
+the check is redundant and can be removed. The final clean up is
+that we can remove the goto fail with a simple return and the unused
+variable ret.
+
+Signed-off-by: Colin Ian King <colin.king at canonical.com>
+Reviewed-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit a9402dfe17bddeee5c72943385eaa13c39f106f7)
+---
+ drivers/gpu/drm/vc4/vc4_dpi.c | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_dpi.c
++++ b/drivers/gpu/drm/vc4/vc4_dpi.c
+@@ -236,14 +236,12 @@ static struct drm_connector *vc4_dpi_con
+ {
+ 	struct drm_connector *connector = NULL;
+ 	struct vc4_dpi_connector *dpi_connector;
+-	int ret = 0;
+ 
+ 	dpi_connector = devm_kzalloc(dev->dev, sizeof(*dpi_connector),
+ 				     GFP_KERNEL);
+-	if (!dpi_connector) {
+-		ret = -ENOMEM;
+-		goto fail;
+-	}
++	if (!dpi_connector)
++		return ERR_PTR(-ENOMEM);
++
+ 	connector = &dpi_connector->base;
+ 
+ 	dpi_connector->encoder = dpi->encoder;
+@@ -260,12 +258,6 @@ static struct drm_connector *vc4_dpi_con
+ 	drm_mode_connector_attach_encoder(connector, dpi->encoder);
+ 
+ 	return connector;
+-
+- fail:
+-	if (connector)
+-		vc4_dpi_connector_destroy(connector);
+-
+-	return ERR_PTR(ret);
+ }
+ 
+ static const struct drm_encoder_funcs vc4_dpi_encoder_funcs = {
diff --git a/target/linux/brcm2708/patches-4.4/0454-drm-vc4-enable-XBGR8888-and-ABGR8888-pixel-formats.patch b/target/linux/brcm2708/patches-4.4/0454-drm-vc4-enable-XBGR8888-and-ABGR8888-pixel-formats.patch
new file mode 100644
index 0000000..f68531e
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0454-drm-vc4-enable-XBGR8888-and-ABGR8888-pixel-formats.patch
@@ -0,0 +1,34 @@
+From 1a5b389a95cc5e468477b183d3e7312caf2ea2f4 Mon Sep 17 00:00:00 2001
+From: Rob Herring <robh at kernel.org>
+Date: Thu, 9 Jun 2016 16:19:25 -0500
+Subject: [PATCH] drm: vc4: enable XBGR8888 and ABGR8888 pixel formats
+
+DRM_FORMAT_XBGR8888 and DRM_FORMAT_ABGR8888 are 2 of the native formats
+used in Android, so enable them for VC4. There seems to be no logic behind
+HVS_PIXEL_ORDER_xxxx naming, but HVS_PIXEL_ORDER_ARGB seems to work
+correctly.
+
+Signed-off-by: Rob Herring <robh at kernel.org>
+Reviewed-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit 93977767f092fbf0787e5d2a0bf2e0a3fc6f6ced)
+---
+ drivers/gpu/drm/vc4/vc4_plane.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/gpu/drm/vc4/vc4_plane.c
++++ b/drivers/gpu/drm/vc4/vc4_plane.c
+@@ -94,6 +94,14 @@ static const struct hvs_format {
+ 		.pixel_order = HVS_PIXEL_ORDER_ABGR, .has_alpha = true,
+ 	},
+ 	{
++		.drm = DRM_FORMAT_ABGR8888, .hvs = HVS_PIXEL_FORMAT_RGBA8888,
++		.pixel_order = HVS_PIXEL_ORDER_ARGB, .has_alpha = true,
++	},
++	{
++		.drm = DRM_FORMAT_XBGR8888, .hvs = HVS_PIXEL_FORMAT_RGBA8888,
++		.pixel_order = HVS_PIXEL_ORDER_ARGB, .has_alpha = false,
++	},
++	{
+ 		.drm = DRM_FORMAT_RGB565, .hvs = HVS_PIXEL_FORMAT_RGB565,
+ 		.pixel_order = HVS_PIXEL_ORDER_XRGB, .has_alpha = false,
+ 	},
diff --git a/target/linux/brcm2708/patches-4.4/0455-drm-vc4-Bind-the-HVS-before-we-bind-the-individual-C.patch b/target/linux/brcm2708/patches-4.4/0455-drm-vc4-Bind-the-HVS-before-we-bind-the-individual-C.patch
new file mode 100644
index 0000000..351220b
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0455-drm-vc4-Bind-the-HVS-before-we-bind-the-individual-C.patch
@@ -0,0 +1,28 @@
+From 4bdd6172dbf4ea9d9ae85b6a3214bdb787f16778 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Fri, 8 Jul 2016 11:25:09 -0700
+Subject: [PATCH] drm/vc4: Bind the HVS before we bind the individual CRTCs.
+
+We need to be able to look at the CRTC's registers in the HVS as part
+of initialization, while the HVS doesn't need to look at the PV
+registers.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Reviewed-and-tested-by: Mario Kleiner <mario.kleiner.de at gmail.com>
+(cherry picked from commit 7a100969f30b77761901c05a5c810bcaea65df44)
+---
+ drivers/gpu/drm/vc4/vc4_drv.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.c
++++ b/drivers/gpu/drm/vc4/vc4_drv.c
+@@ -295,8 +295,8 @@ static struct platform_driver *const com
+ 	&vc4_hdmi_driver,
+ 	&vc4_dpi_driver,
+ 	&vc4_dsi_driver,
+-	&vc4_crtc_driver,
+ 	&vc4_hvs_driver,
++	&vc4_crtc_driver,
+ 	&vc4_v3d_driver,
+ };
+ 
diff --git a/target/linux/brcm2708/patches-4.4/0456-drm-vc4-Implement-precise-vblank-timestamping.patch b/target/linux/brcm2708/patches-4.4/0456-drm-vc4-Implement-precise-vblank-timestamping.patch
new file mode 100644
index 0000000..8ae2819
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0456-drm-vc4-Implement-precise-vblank-timestamping.patch
@@ -0,0 +1,358 @@
+From d1a9a03cbe1110756a63d4a3747e22eb8417f75e Mon Sep 17 00:00:00 2001
+From: Mario Kleiner <mario.kleiner.de at gmail.com>
+Date: Thu, 23 Jun 2016 08:17:50 +0200
+Subject: [PATCH] drm/vc4: Implement precise vblank timestamping.
+
+Precise vblank timestamping is implemented via the
+usual scanout position based method. On VC4 the
+pixelvalves PV do not have a scanout position
+register. Only the hardware video scaler HVS has a
+similar register which describes which scanline for
+the output is currently composited and stored in the
+HVS fifo for later consumption by the PV.
+
+This causes a problem in that the HVS runs at a much
+faster clock (system clock / audio gate) than the PV
+which runs at video mode dot clock, so the unless the
+fifo between HVS and PV is full, the HVS will progress
+faster in its observable read line position than video
+scan rate, so the HVS position reading can't be directly
+translated into a scanout position for timestamp correction.
+
+Additionally when the PV is in vblank, it doesn't consume
+from the fifo, so the fifo gets full very quickly and then
+the HVS stops compositing until the PV enters active scanout
+and starts consuming scanlines from the fifo again, making
+new space for the HVS to composite.
+
+Therefore a simple translation of HVS read position into
+elapsed time since (or to) start of active scanout does
+not work, but for the most interesting cases we can still
+get useful and sufficiently accurate results:
+
+1. The PV enters active scanout of a new frame with the
+   fifo of the HVS completely full, and the HVS can refill
+   any fifo line which gets consumed and thereby freed up by
+   the PV during active scanout very quickly. Therefore the
+   PV and HVS work effectively in lock-step during active
+   scanout with the fifo never having more than 1 scanline
+   freed up by the PV before it gets refilled. The PV's
+   real scanout position is therefore trailing the HVS
+   compositing position as scanoutpos = hvspos - fifosize
+   and we can get the true scanoutpos as HVS readpos minus
+   fifo size, so precise timestamping works while in active
+   scanout, except for the last few scanlines of the frame,
+   when the HVS reaches end of frame, stops compositing and
+   the PV catches up and drains the fifo. This special case
+   would only introduce minor errors though.
+
+2. If we are in vblank, then we can only guess something
+   reasonable. If called from vblank irq, we assume the irq is
+   usually dispatched with minimum delay, so we can take a
+   timestamp taken at entry into the vblank irq handler as a
+   baseline and then add a full vblank duration until the
+   guessed start of active scanout. As irq dispatch is usually
+   pretty low latency this works with relatively low jitter and
+   good results.
+
+   If we aren't called from vblank then we could be anywhere
+   within the vblank interval, so we return a neutral result,
+   simply the current system timestamp, and hope for the best.
+
+Measurement shows the generated timestamps to be rather precise,
+and at least never off more than 1 vblank duration worst-case.
+
+Limitations: Doesn't work well yet for interlaced video modes,
+             therefore disabled in interlaced mode for now.
+
+v2: Use the DISPBASE registers to determine the FIFO size (changes
+    by anholt)
+
+Signed-off-by: Mario Kleiner <mario.kleiner.de at gmail.com>
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Reviewed-and-tested-by: Mario Kleiner <mario.kleiner.de at gmail.com> (v2)
+(cherry picked from commit 1bf59f1dcbe25272f6b5d870054647e58a8a9c55)
+---
+ drivers/gpu/drm/vc4/vc4_crtc.c | 162 +++++++++++++++++++++++++++++++++++++++++
+ drivers/gpu/drm/vc4/vc4_drv.c  |   2 +
+ drivers/gpu/drm/vc4/vc4_drv.h  |   7 ++
+ drivers/gpu/drm/vc4/vc4_regs.h |  22 +++++-
+ 4 files changed, 192 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_crtc.c
++++ b/drivers/gpu/drm/vc4/vc4_crtc.c
+@@ -47,12 +47,17 @@ struct vc4_crtc {
+ 	const struct vc4_crtc_data *data;
+ 	void __iomem *regs;
+ 
++	/* Timestamp at start of vblank irq - unaffected by lock delays. */
++	ktime_t t_vblank;
++
+ 	/* Which HVS channel we're using for our CRTC. */
+ 	int channel;
+ 
+ 	u8 lut_r[256];
+ 	u8 lut_g[256];
+ 	u8 lut_b[256];
++	/* Size in pixels of the COB memory allocated to this CRTC. */
++	u32 cob_size;
+ 
+ 	struct drm_pending_vblank_event *event;
+ };
+@@ -134,6 +139,144 @@ int vc4_crtc_debugfs_regs(struct seq_fil
+ }
+ #endif
+ 
++int vc4_crtc_get_scanoutpos(struct drm_device *dev, unsigned int crtc_id,
++			    unsigned int flags, int *vpos, int *hpos,
++			    ktime_t *stime, ktime_t *etime,
++			    const struct drm_display_mode *mode)
++{
++	struct vc4_dev *vc4 = to_vc4_dev(dev);
++	struct vc4_crtc *vc4_crtc = vc4->crtc[crtc_id];
++	u32 val;
++	int fifo_lines;
++	int vblank_lines;
++	int ret = 0;
++
++	/*
++	 * XXX Doesn't work well in interlaced mode yet, partially due
++	 * to problems in vc4 kms or drm core interlaced mode handling,
++	 * so disable for now in interlaced mode.
++	 */
++	if (mode->flags & DRM_MODE_FLAG_INTERLACE)
++		return ret;
++
++	/* preempt_disable_rt() should go right here in PREEMPT_RT patchset. */
++
++	/* Get optional system timestamp before query. */
++	if (stime)
++		*stime = ktime_get();
++
++	/*
++	 * Read vertical scanline which is currently composed for our
++	 * pixelvalve by the HVS, and also the scaler status.
++	 */
++	val = HVS_READ(SCALER_DISPSTATX(vc4_crtc->channel));
++
++	/* Get optional system timestamp after query. */
++	if (etime)
++		*etime = ktime_get();
++
++	/* preempt_enable_rt() should go right here in PREEMPT_RT patchset. */
++
++	/* Vertical position of hvs composed scanline. */
++	*vpos = VC4_GET_FIELD(val, SCALER_DISPSTATX_LINE);
++
++	/* No hpos info available. */
++	if (hpos)
++		*hpos = 0;
++
++	/* This is the offset we need for translating hvs -> pv scanout pos. */
++	fifo_lines = vc4_crtc->cob_size / mode->crtc_hdisplay;
++
++	if (fifo_lines > 0)
++		ret |= DRM_SCANOUTPOS_VALID;
++
++	/* HVS more than fifo_lines into frame for compositing? */
++	if (*vpos > fifo_lines) {
++		/*
++		 * We are in active scanout and can get some meaningful results
++		 * from HVS. The actual PV scanout can not trail behind more
++		 * than fifo_lines as that is the fifo's capacity. Assume that
++		 * in active scanout the HVS and PV work in lockstep wrt. HVS
++		 * refilling the fifo and PV consuming from the fifo, ie.
++		 * whenever the PV consumes and frees up a scanline in the
++		 * fifo, the HVS will immediately refill it, therefore
++		 * incrementing vpos. Therefore we choose HVS read position -
++		 * fifo size in scanlines as a estimate of the real scanout
++		 * position of the PV.
++		 */
++		*vpos -= fifo_lines + 1;
++		if (mode->flags & DRM_MODE_FLAG_INTERLACE)
++			*vpos /= 2;
++
++		ret |= DRM_SCANOUTPOS_ACCURATE;
++		return ret;
++	}
++
++	/*
++	 * Less: This happens when we are in vblank and the HVS, after getting
++	 * the VSTART restart signal from the PV, just started refilling its
++	 * fifo with new lines from the top-most lines of the new framebuffers.
++	 * The PV does not scan out in vblank, so does not remove lines from
++	 * the fifo, so the fifo will be full quickly and the HVS has to pause.
++	 * We can't get meaningful readings wrt. scanline position of the PV
++	 * and need to make things up in a approximative but consistent way.
++	 */
++	ret |= DRM_SCANOUTPOS_IN_VBLANK;
++	vblank_lines = mode->crtc_vtotal - mode->crtc_vdisplay;
++
++	if (flags & DRM_CALLED_FROM_VBLIRQ) {
++		/*
++		 * Assume the irq handler got called close to first
++		 * line of vblank, so PV has about a full vblank
++		 * scanlines to go, and as a base timestamp use the
++		 * one taken at entry into vblank irq handler, so it
++		 * is not affected by random delays due to lock
++		 * contention on event_lock or vblank_time lock in
++		 * the core.
++		 */
++		*vpos = -vblank_lines;
++
++		if (stime)
++			*stime = vc4_crtc->t_vblank;
++		if (etime)
++			*etime = vc4_crtc->t_vblank;
++
++		/*
++		 * If the HVS fifo is not yet full then we know for certain
++		 * we are at the very beginning of vblank, as the hvs just
++		 * started refilling, and the stime and etime timestamps
++		 * truly correspond to start of vblank.
++		 */
++		if ((val & SCALER_DISPSTATX_FULL) != SCALER_DISPSTATX_FULL)
++			ret |= DRM_SCANOUTPOS_ACCURATE;
++	} else {
++		/*
++		 * No clue where we are inside vblank. Return a vpos of zero,
++		 * which will cause calling code to just return the etime
++		 * timestamp uncorrected. At least this is no worse than the
++		 * standard fallback.
++		 */
++		*vpos = 0;
++	}
++
++	return ret;
++}
++
++int vc4_crtc_get_vblank_timestamp(struct drm_device *dev, unsigned int crtc_id,
++				  int *max_error, struct timeval *vblank_time,
++				  unsigned flags)
++{
++	struct vc4_dev *vc4 = to_vc4_dev(dev);
++	struct vc4_crtc *vc4_crtc = vc4->crtc[crtc_id];
++	struct drm_crtc *crtc = &vc4_crtc->base;
++	struct drm_crtc_state *state = crtc->state;
++
++	/* Helper routine in DRM core does all the work: */
++	return drm_calc_vbltimestamp_from_scanoutpos(dev, crtc_id, max_error,
++						     vblank_time, flags,
++						     &state->adjusted_mode);
++}
++
+ static void vc4_crtc_destroy(struct drm_crtc *crtc)
+ {
+ 	drm_crtc_cleanup(crtc);
+@@ -535,6 +678,7 @@ static irqreturn_t vc4_crtc_irq_handler(
+ 	irqreturn_t ret = IRQ_NONE;
+ 
+ 	if (stat & PV_INT_VFP_START) {
++		vc4_crtc->t_vblank = ktime_get();
+ 		CRTC_WRITE(PV_INTSTAT, PV_INT_VFP_START);
+ 		drm_crtc_handle_vblank(&vc4_crtc->base);
+ 		vc4_crtc_handle_page_flip(vc4_crtc);
+@@ -759,6 +903,22 @@ static void vc4_set_crtc_possible_masks(
+ 	}
+ }
+ 
++static void
++vc4_crtc_get_cob_allocation(struct vc4_crtc *vc4_crtc)
++{
++	struct drm_device *drm = vc4_crtc->base.dev;
++	struct vc4_dev *vc4 = to_vc4_dev(drm);
++	u32 dispbase = HVS_READ(SCALER_DISPBASEX(vc4_crtc->channel));
++	/* Top/base are supposed to be 4-pixel aligned, but the
++	 * Raspberry Pi firmware fills the low bits (which are
++	 * presumably ignored).
++	 */
++	u32 top = VC4_GET_FIELD(dispbase, SCALER_DISPBASEX_TOP) & ~3;
++	u32 base = VC4_GET_FIELD(dispbase, SCALER_DISPBASEX_BASE) & ~3;
++
++	vc4_crtc->cob_size = top - base + 4;
++}
++
+ static int vc4_crtc_bind(struct device *dev, struct device *master, void *data)
+ {
+ 	struct platform_device *pdev = to_platform_device(dev);
+@@ -835,6 +995,8 @@ static int vc4_crtc_bind(struct device *
+ 		crtc->cursor = cursor_plane;
+ 	}
+ 
++	vc4_crtc_get_cob_allocation(vc4_crtc);
++
+ 	CRTC_WRITE(PV_INTEN, 0);
+ 	CRTC_WRITE(PV_INTSTAT, PV_INT_VFP_START);
+ 	ret = devm_request_irq(dev, platform_get_irq(pdev, 0),
+--- a/drivers/gpu/drm/vc4/vc4_drv.c
++++ b/drivers/gpu/drm/vc4/vc4_drv.c
+@@ -116,6 +116,8 @@ static struct drm_driver vc4_drm_driver
+ 	.enable_vblank = vc4_enable_vblank,
+ 	.disable_vblank = vc4_disable_vblank,
+ 	.get_vblank_counter = drm_vblank_no_hw_counter,
++	.get_scanout_position = vc4_crtc_get_scanoutpos,
++	.get_vblank_timestamp = vc4_crtc_get_vblank_timestamp,
+ 
+ #if defined(CONFIG_DEBUG_FS)
+ 	.debugfs_init = vc4_debugfs_init,
+--- a/drivers/gpu/drm/vc4/vc4_drv.h
++++ b/drivers/gpu/drm/vc4/vc4_drv.h
+@@ -419,6 +419,13 @@ int vc4_enable_vblank(struct drm_device
+ void vc4_disable_vblank(struct drm_device *dev, unsigned int crtc_id);
+ void vc4_cancel_page_flip(struct drm_crtc *crtc, struct drm_file *file);
+ int vc4_crtc_debugfs_regs(struct seq_file *m, void *arg);
++int vc4_crtc_get_scanoutpos(struct drm_device *dev, unsigned int crtc_id,
++			    unsigned int flags, int *vpos, int *hpos,
++			    ktime_t *stime, ktime_t *etime,
++			    const struct drm_display_mode *mode);
++int vc4_crtc_get_vblank_timestamp(struct drm_device *dev, unsigned int crtc_id,
++				  int *max_error, struct timeval *vblank_time,
++				  unsigned flags);
+ 
+ /* vc4_debugfs.c */
+ int vc4_debugfs_init(struct drm_minor *minor);
+--- a/drivers/gpu/drm/vc4/vc4_regs.h
++++ b/drivers/gpu/drm/vc4/vc4_regs.h
+@@ -368,7 +368,6 @@
+ # define SCALER_DISPBKGND_FILL			BIT(24)
+ 
+ #define SCALER_DISPSTAT0                        0x00000048
+-#define SCALER_DISPBASE0                        0x0000004c
+ # define SCALER_DISPSTATX_MODE_MASK		VC4_MASK(31, 30)
+ # define SCALER_DISPSTATX_MODE_SHIFT		30
+ # define SCALER_DISPSTATX_MODE_DISABLED		0
+@@ -377,6 +376,24 @@
+ # define SCALER_DISPSTATX_MODE_EOF		3
+ # define SCALER_DISPSTATX_FULL			BIT(29)
+ # define SCALER_DISPSTATX_EMPTY			BIT(28)
++# define SCALER_DISPSTATX_FRAME_COUNT_MASK	VC4_MASK(17, 12)
++# define SCALER_DISPSTATX_FRAME_COUNT_SHIFT	12
++# define SCALER_DISPSTATX_LINE_MASK		VC4_MASK(11, 0)
++# define SCALER_DISPSTATX_LINE_SHIFT		0
++
++#define SCALER_DISPBASE0                        0x0000004c
++/* Last pixel in the COB (display FIFO memory) allocated to this HVS
++ * channel.  Must be 4-pixel aligned (and thus 4 pixels less than the
++ * next COB base).
++ */
++# define SCALER_DISPBASEX_TOP_MASK		VC4_MASK(31, 16)
++# define SCALER_DISPBASEX_TOP_SHIFT		16
++/* First pixel in the COB (display FIFO memory) allocated to this HVS
++ * channel.  Must be 4-pixel aligned.
++ */
++# define SCALER_DISPBASEX_BASE_MASK		VC4_MASK(15, 0)
++# define SCALER_DISPBASEX_BASE_SHIFT		0
++
+ #define SCALER_DISPCTRL1                        0x00000050
+ #define SCALER_DISPBKGND1                       0x00000054
+ #define SCALER_DISPBKGNDX(x)			(SCALER_DISPBKGND0 +        \
+@@ -387,6 +404,9 @@
+ 						 (x) * (SCALER_DISPSTAT1 - \
+ 							SCALER_DISPSTAT0))
+ #define SCALER_DISPBASE1                        0x0000005c
++#define SCALER_DISPBASEX(x)			(SCALER_DISPBASE0 +        \
++						 (x) * (SCALER_DISPBASE1 - \
++							SCALER_DISPBASE0))
+ #define SCALER_DISPCTRL2                        0x00000060
+ #define SCALER_DISPCTRLX(x)			(SCALER_DISPCTRL0 +        \
+ 						 (x) * (SCALER_DISPCTRL1 - \
diff --git a/target/linux/brcm2708/patches-4.4/0457-drm-vc4-remove-redundant-ret-status-check.patch b/target/linux/brcm2708/patches-4.4/0457-drm-vc4-remove-redundant-ret-status-check.patch
new file mode 100644
index 0000000..7887f60
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0457-drm-vc4-remove-redundant-ret-status-check.patch
@@ -0,0 +1,35 @@
+From 2b643111b81df8724f317507471499660f4fc6f6 Mon Sep 17 00:00:00 2001
+From: Colin Ian King <colin.king at canonical.com>
+Date: Sat, 9 Jul 2016 23:26:03 +0100
+Subject: [PATCH] drm/vc4: remove redundant ret status check
+
+At the current point where ret is being checked for non-zero it has
+not changed since it was initialized to zero, hence the check and the
+label unref are redundant and can be removed.
+
+Signed-off-by: Colin Ian King <colin.king at canonical.com>
+Reviewed-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit deb4765db386db67626ffd075d8b5eb5fdf9c4f6)
+---
+ drivers/gpu/drm/vc4/vc4_drv.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.c
++++ b/drivers/gpu/drm/vc4/vc4_drv.c
+@@ -233,8 +233,6 @@ static int vc4_drm_bind(struct device *d
+ 	vc4_bo_cache_init(drm);
+ 
+ 	drm_mode_config_init(drm);
+-	if (ret)
+-		goto unref;
+ 
+ 	vc4_gem_init(drm);
+ 
+@@ -268,7 +266,6 @@ unbind_all:
+ 	component_unbind_all(dev, drm);
+ gem_destroy:
+ 	vc4_gem_destroy(drm);
+-unref:
+ 	drm_dev_unref(drm);
+ 	vc4_bo_cache_destroy(drm);
+ 	return ret;
diff --git a/target/linux/brcm2708/patches-4.4/0458-drm-vc4-add-extern-C-guard-for-the-UAPI-header.patch b/target/linux/brcm2708/patches-4.4/0458-drm-vc4-add-extern-C-guard-for-the-UAPI-header.patch
new file mode 100644
index 0000000..3b32bf8
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0458-drm-vc4-add-extern-C-guard-for-the-UAPI-header.patch
@@ -0,0 +1,34 @@
+From 2f037770b9fedc29f75847a8323ffca49244e140 Mon Sep 17 00:00:00 2001
+From: Emil Velikov <emil.l.velikov at gmail.com>
+Date: Thu, 7 Apr 2016 19:36:57 +0100
+Subject: [PATCH] drm/vc4: add extern C guard for the UAPI header
+
+Cc: Eric Anholt <eric at anholt.net>
+Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
+(cherry picked from commit 6a982350f892c286c645a6fe0e1da1f869a0c43f)
+---
+ include/uapi/drm/vc4_drm.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/include/uapi/drm/vc4_drm.h
++++ b/include/uapi/drm/vc4_drm.h
+@@ -26,6 +26,10 @@
+ 
+ #include "drm.h"
+ 
++#if defined(__cplusplus)
++extern "C" {
++#endif
++
+ #define DRM_VC4_SUBMIT_CL                         0x00
+ #define DRM_VC4_WAIT_SEQNO                        0x01
+ #define DRM_VC4_WAIT_BO                           0x02
+@@ -276,4 +280,8 @@ struct drm_vc4_get_hang_state {
+ 	__u32 pad[16];
+ };
+ 
++#if defined(__cplusplus)
++}
++#endif
++
+ #endif /* _UAPI_VC4_DRM_H_ */
diff --git a/target/linux/brcm2708/patches-4.4/0459-drm-vc4-Fix-definition-of-QPU_R_MS_REV_FLAGS.patch b/target/linux/brcm2708/patches-4.4/0459-drm-vc4-Fix-definition-of-QPU_R_MS_REV_FLAGS.patch
new file mode 100644
index 0000000..15dfd76
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0459-drm-vc4-Fix-definition-of-QPU_R_MS_REV_FLAGS.patch
@@ -0,0 +1,25 @@
+From ad6f4991e27d60b8939b8a1421166342355db503 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Mon, 4 Jul 2016 12:59:18 -0700
+Subject: [PATCH] drm/vc4: Fix definition of QPU_R_MS_REV_FLAGS
+
+We don't use it in shader validation currently, so it had no effect,
+but best to fix it anyway in case we do some day.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit 20e48fd6a9252e21528c7e39b874c8fdca97f25a)
+---
+ drivers/gpu/drm/vc4/vc4_qpu_defines.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_qpu_defines.h
++++ b/drivers/gpu/drm/vc4/vc4_qpu_defines.h
+@@ -70,7 +70,7 @@ enum qpu_raddr {
+ 	QPU_R_ELEM_QPU = 38,
+ 	QPU_R_NOP,
+ 	QPU_R_XY_PIXEL_COORD = 41,
+-	QPU_R_MS_REV_FLAGS = 41,
++	QPU_R_MS_REV_FLAGS = 42,
+ 	QPU_R_VPM = 48,
+ 	QPU_R_VPM_LD_BUSY,
+ 	QPU_R_VPM_LD_WAIT,
diff --git a/target/linux/brcm2708/patches-4.4/0460-drm-vc4-Fix-a-the-the-typo-in-a-comment.patch b/target/linux/brcm2708/patches-4.4/0460-drm-vc4-Fix-a-the-the-typo-in-a-comment.patch
new file mode 100644
index 0000000..ca504cf
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0460-drm-vc4-Fix-a-the-the-typo-in-a-comment.patch
@@ -0,0 +1,22 @@
+From 18b45d780c43af635c4ed343ef99738bbfd07e26 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Sat, 2 Jul 2016 09:58:41 -0700
+Subject: [PATCH] drm/vc4: Fix a "the the" typo in a comment.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit a20d5fa61c32a0c94d237da642326db2ef3c7433)
+---
+ drivers/gpu/drm/vc4/vc4_validate_shaders.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c
++++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c
+@@ -162,7 +162,7 @@ check_tmu_write(uint64_t inst,
+ 			return false;
+ 		}
+ 
+-		/* We assert that the the clamped address is the first
++		/* We assert that the clamped address is the first
+ 		 * argument, and the UBO base address is the second argument.
+ 		 * This is arbitrary, but simpler than supporting flipping the
+ 		 * two either way.
diff --git a/target/linux/brcm2708/patches-4.4/0461-drm-vc4-Return-EBUSY-if-there-s-already-a-pending-fl.patch b/target/linux/brcm2708/patches-4.4/0461-drm-vc4-Return-EBUSY-if-there-s-already-a-pending-fl.patch
new file mode 100644
index 0000000..39f74e9
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0461-drm-vc4-Return-EBUSY-if-there-s-already-a-pending-fl.patch
@@ -0,0 +1,44 @@
+From bc27882bfefac9a1596aaed387ac01a844765e6c Mon Sep 17 00:00:00 2001
+From: Robert Foss <robert.foss at collabora.com>
+Date: Tue, 3 May 2016 13:48:20 -0400
+Subject: [PATCH] drm/vc4: Return -EBUSY if there's already a pending flip
+ event.
+
+As per the documentation in drm_crtc.h, atomic_commit should return
+-EBUSY if an asynchronous update is requested and there is an earlier
+update pending.
+
+v2: Rebase on the s/async/nonblock/ change.
+
+Signed-off-by: Robert Foss <robert.foss at collabora.com>
+Reviewed-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit e7c31f6f25b84fed961dc0dce6248878527693ae)
+---
+ drivers/gpu/drm/vc4/vc4_kms.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_kms.c
++++ b/drivers/gpu/drm/vc4/vc4_kms.c
+@@ -119,10 +119,18 @@ static int vc4_atomic_commit(struct drm_
+ 		return -ENOMEM;
+ 
+ 	/* Make sure that any outstanding modesets have finished. */
+-	ret = down_interruptible(&vc4->async_modeset);
+-	if (ret) {
+-		kfree(c);
+-		return ret;
++	if (nonblock) {
++		ret = down_trylock(&vc4->async_modeset);
++		if (ret) {
++			kfree(c);
++			return -EBUSY;
++		}
++	} else {
++		ret = down_interruptible(&vc4->async_modeset);
++		if (ret) {
++			kfree(c);
++			return ret;
++		}
+ 	}
+ 
+ 	ret = drm_atomic_helper_prepare_planes(dev, state);
diff --git a/target/linux/brcm2708/patches-4.4/0462-config-Enable-SENSORS_LM75.patch b/target/linux/brcm2708/patches-4.4/0462-config-Enable-SENSORS_LM75.patch
new file mode 100644
index 0000000..4a2259f
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0462-config-Enable-SENSORS_LM75.patch
@@ -0,0 +1,30 @@
+From a770137c882b00d89888e007cd1f0a44475c2b60 Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix at gmail.com>
+Date: Fri, 12 Aug 2016 17:12:32 +0100
+Subject: [PATCH] config: Enable SENSORS_LM75
+
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig  | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -642,6 +642,7 @@ CONFIG_BATTERY_DS2760=m
+ CONFIG_POWER_RESET=y
+ CONFIG_POWER_RESET_GPIO=y
+ CONFIG_HWMON=m
++CONFIG_SENSORS_LM75=m
+ CONFIG_SENSORS_SHT21=m
+ CONFIG_SENSORS_SHTC1=m
+ CONFIG_THERMAL=y
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -634,6 +634,7 @@ CONFIG_BATTERY_DS2760=m
+ CONFIG_POWER_RESET=y
+ CONFIG_POWER_RESET_GPIO=y
+ CONFIG_HWMON=m
++CONFIG_SENSORS_LM75=m
+ CONFIG_SENSORS_SHT21=m
+ CONFIG_SENSORS_SHTC1=m
+ CONFIG_THERMAL=y
diff --git a/target/linux/brcm2708/patches-4.4/0463-config-Enable-SERIAL_SC16IS7XX.patch b/target/linux/brcm2708/patches-4.4/0463-config-Enable-SERIAL_SC16IS7XX.patch
new file mode 100644
index 0000000..5fec3d7
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0463-config-Enable-SERIAL_SC16IS7XX.patch
@@ -0,0 +1,30 @@
+From d64a1deaa6da4663cbd148e9a047f069d99c14f5 Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix at gmail.com>
+Date: Fri, 12 Aug 2016 17:00:18 +0100
+Subject: [PATCH] config: Enable SERIAL_SC16IS7XX
+
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig  | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -600,6 +600,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=0
+ CONFIG_SERIAL_AMBA_PL011=y
+ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+ CONFIG_SERIAL_OF_PLATFORM=y
++CONFIG_SERIAL_SC16IS7XX=m
+ CONFIG_TTY_PRINTK=y
+ CONFIG_HW_RANDOM=y
+ CONFIG_RAW_DRIVER=y
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -593,6 +593,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=0
+ CONFIG_SERIAL_AMBA_PL011=y
+ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+ CONFIG_SERIAL_OF_PLATFORM=y
++CONFIG_SERIAL_SC16IS7XX=m
+ CONFIG_TTY_PRINTK=y
+ CONFIG_HW_RANDOM=y
+ CONFIG_RAW_DRIVER=y
diff --git a/target/linux/brcm2708/patches-4.4/0464-snd-bcm2835-Don-t-allow-responses-from-VC-to-be-inte.patch b/target/linux/brcm2708/patches-4.4/0464-snd-bcm2835-Don-t-allow-responses-from-VC-to-be-inte.patch
new file mode 100644
index 0000000..ef5d0a3
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0464-snd-bcm2835-Don-t-allow-responses-from-VC-to-be-inte.patch
@@ -0,0 +1,63 @@
+From 385eb363335dfe4120643ea72f3060fce745b5b7 Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix at gmail.com>
+Date: Fri, 12 Aug 2016 15:46:21 +0100
+Subject: [PATCH] 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: https://github.com/raspberrypi/linux/issues/1560
+---
+ sound/arm/bcm2835-vchiq.c | 25 ++++++-------------------
+ 1 file changed, 6 insertions(+), 19 deletions(-)
+
+--- a/sound/arm/bcm2835-vchiq.c
++++ b/sound/arm/bcm2835-vchiq.c
+@@ -511,12 +511,7 @@ static int bcm2835_audio_set_ctls_chan(b
+ 	}
+ 
+ 	/* We are expecting a reply from the videocore */
+-	ret = wait_for_completion_interruptible(&instance->msg_avail_comp);
+-	if (ret) {
+-		LOG_DBG("%s: failed on waiting for event (status=%d)\n",
+-			__func__, success);
+-		goto unlock;
+-	}
++	wait_for_completion(&instance->msg_avail_comp);
+ 
+ 	if (instance->result != 0) {
+ 		LOG_ERR("%s: result=%d\n", __func__, instance->result);
+@@ -615,12 +610,7 @@ int bcm2835_audio_set_params(bcm2835_als
+ 	}
+ 
+ 	/* We are expecting a reply from the videocore */
+-	ret = wait_for_completion_interruptible(&instance->msg_avail_comp);
+-	if (ret) {
+-		LOG_DBG("%s: failed on waiting for event (status=%d)\n",
+-			__func__, success);
+-		goto unlock;
+-	}
++	wait_for_completion(&instance->msg_avail_comp);
+ 
+ 	if (instance->result != 0) {
+ 		LOG_ERR("%s: result=%d", __func__, instance->result);
+@@ -761,14 +751,11 @@ int bcm2835_audio_close(bcm2835_alsa_str
+ 		goto unlock;
+ 	}
+ 
+-	ret = wait_for_completion_interruptible(&instance->msg_avail_comp);
+-	if (ret) {
+-		LOG_DBG("%s: failed on waiting for event (status=%d)\n",
+-			__func__, success);
+-		goto unlock;
+-	}
++	/* We are expecting a reply from the videocore */
++	wait_for_completion(&instance->msg_avail_comp);
++
+ 	if (instance->result != 0) {
+-		LOG_ERR("%s: failed result (status=%d)\n",
++		LOG_ERR("%s: failed result (result=%d)\n",
+ 			__func__, instance->result);
+ 
+ 		ret = -1;
diff --git a/target/linux/brcm2708/patches-4.4/0465-BCM270X-Connect-V3D-to-its-power-domain.patch b/target/linux/brcm2708/patches-4.4/0465-BCM270X-Connect-V3D-to-its-power-domain.patch
new file mode 100644
index 0000000..c305216
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0465-BCM270X-Connect-V3D-to-its-power-domain.patch
@@ -0,0 +1,23 @@
+From 1337324cc06c008a9d65b15328a96b21ab675113 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Fri, 12 Aug 2016 10:15:34 -0700
+Subject: [PATCH] BCM270X: Connect V3D to its power domain.
+
+We were doing this with manual firmware calls before, but to backport
+runtime PM we want to be using a proper power domain.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ arch/arm/boot/dts/bcm2708_common.dtsi | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/arm/boot/dts/bcm2708_common.dtsi
++++ b/arch/arm/boot/dts/bcm2708_common.dtsi
+@@ -366,6 +366,7 @@
+ 		v3d: v3d at 7ec00000 {
+ 			compatible = "brcm,vc4-v3d";
+ 			reg = <0x7ec00000 0x1000>;
++			power-domains = <&power RPI_POWER_DOMAIN_V3D>;
+ 			status = "disabled";
+ 		};
+ 
diff --git a/target/linux/brcm2708/patches-4.4/0466-drm-vc4-Enable-runtime-PM.patch b/target/linux/brcm2708/patches-4.4/0466-drm-vc4-Enable-runtime-PM.patch
new file mode 100644
index 0000000..fc00a1a
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0466-drm-vc4-Enable-runtime-PM.patch
@@ -0,0 +1,205 @@
+From 02a0346c7f8159cb0930ff153bf2cb3b1f1a7a79 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Fri, 5 Feb 2016 17:41:49 -0800
+Subject: [PATCH] drm/vc4: Enable runtime PM.
+
+This may actually get us a feature that the closed driver didn't have:
+turning off the GPU in between rendering jobs, while the V3D device is
+still opened by the client.
+
+There may be some tuning to be applied here to use autosuspend so that
+we don't bounce the device's power so much, but in steady-state
+GPU-bound rendering we keep the power on (since we keep multiple jobs
+outstanding) and even if we power cycle on every job we can still
+manage at least 680 fps.
+
+More importantly, though, runtime PM will allow us to power off the
+device to do a GPU reset.
+
+v2: Switch #ifdef to CONFIG_PM not CONFIG_PM_SLEEP (caught by kbuild
+    test robot)
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit 001bdb55d9eb72a9e2d5b623bacfc52da74ae03e)
+---
+ drivers/gpu/drm/vc4/vc4_drv.h |  1 +
+ drivers/gpu/drm/vc4/vc4_gem.c | 10 ++++++++
+ drivers/gpu/drm/vc4/vc4_v3d.c | 59 ++++++++++++++++++++++++++-----------------
+ 3 files changed, 47 insertions(+), 23 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.h
++++ b/drivers/gpu/drm/vc4/vc4_drv.h
+@@ -155,6 +155,7 @@ struct vc4_seqno_cb {
+ };
+ 
+ struct vc4_v3d {
++	struct vc4_dev *vc4;
+ 	struct platform_device *pdev;
+ 	void __iomem *regs;
+ };
+--- a/drivers/gpu/drm/vc4/vc4_gem.c
++++ b/drivers/gpu/drm/vc4/vc4_gem.c
+@@ -23,6 +23,7 @@
+ 
+ #include <linux/module.h>
+ #include <linux/platform_device.h>
++#include <linux/pm_runtime.h>
+ #include <linux/device.h>
+ #include <linux/io.h>
+ 
+@@ -689,6 +690,7 @@ fail:
+ static void
+ vc4_complete_exec(struct drm_device *dev, struct vc4_exec_info *exec)
+ {
++	struct vc4_dev *vc4 = to_vc4_dev(dev);
+ 	unsigned i;
+ 
+ 	/* Need the struct lock for drm_gem_object_unreference(). */
+@@ -707,6 +709,8 @@ vc4_complete_exec(struct drm_device *dev
+ 	}
+ 	mutex_unlock(&dev->struct_mutex);
+ 
++	pm_runtime_put(&vc4->v3d->pdev->dev);
++
+ 	kfree(exec);
+ }
+ 
+@@ -860,6 +864,12 @@ vc4_submit_cl_ioctl(struct drm_device *d
+ 		return -ENOMEM;
+ 	}
+ 
++	ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
++	if (ret < 0) {
++		kfree(exec);
++		return ret;
++	}
++
+ 	exec->args = args;
+ 	INIT_LIST_HEAD(&exec->unref_list);
+ 
+--- a/drivers/gpu/drm/vc4/vc4_v3d.c
++++ b/drivers/gpu/drm/vc4/vc4_v3d.c
+@@ -17,7 +17,7 @@
+  */
+ 
+ #include "linux/component.h"
+-#include "soc/bcm2835/raspberrypi-firmware.h"
++#include "linux/pm_runtime.h"
+ #include "vc4_drv.h"
+ #include "vc4_regs.h"
+ 
+@@ -145,22 +145,6 @@ int vc4_v3d_debugfs_ident(struct seq_fil
+ }
+ #endif /* CONFIG_DEBUG_FS */
+ 
+-/*
+- * Asks the firmware to turn on power to the V3D engine.
+- *
+- * This may be doable with just the clocks interface, though this
+- * packet does some other register setup from the firmware, too.
+- */
+-int
+-vc4_v3d_set_power(struct vc4_dev *vc4, bool on)
+-{
+-	u32 packet = on;
+-
+-	return rpi_firmware_property(vc4->firmware,
+-				     RPI_FIRMWARE_SET_ENABLE_QPU,
+-				     &packet, sizeof(packet));
+-}
+-
+ static void vc4_v3d_init_hw(struct drm_device *dev)
+ {
+ 	struct vc4_dev *vc4 = to_vc4_dev(dev);
+@@ -172,6 +156,29 @@ static void vc4_v3d_init_hw(struct drm_d
+ 	V3D_WRITE(V3D_VPMBASE, 0);
+ }
+ 
++#ifdef CONFIG_PM
++static int vc4_v3d_runtime_suspend(struct device *dev)
++{
++	struct vc4_v3d *v3d = dev_get_drvdata(dev);
++	struct vc4_dev *vc4 = v3d->vc4;
++
++	vc4_irq_uninstall(vc4->dev);
++
++	return 0;
++}
++
++static int vc4_v3d_runtime_resume(struct device *dev)
++{
++	struct vc4_v3d *v3d = dev_get_drvdata(dev);
++	struct vc4_dev *vc4 = v3d->vc4;
++
++	vc4_v3d_init_hw(vc4->dev);
++	vc4_irq_postinstall(vc4->dev);
++
++	return 0;
++}
++#endif
++
+ static int vc4_v3d_bind(struct device *dev, struct device *master, void *data)
+ {
+ 	struct platform_device *pdev = to_platform_device(dev);
+@@ -184,6 +191,8 @@ static int vc4_v3d_bind(struct device *d
+ 	if (!v3d)
+ 		return -ENOMEM;
+ 
++	dev_set_drvdata(dev, v3d);
++
+ 	v3d->pdev = pdev;
+ 
+ 	v3d->regs = vc4_ioremap_regs(pdev, 0);
+@@ -191,10 +200,7 @@ static int vc4_v3d_bind(struct device *d
+ 		return PTR_ERR(v3d->regs);
+ 
+ 	vc4->v3d = v3d;
+-
+-	ret = vc4_v3d_set_power(vc4, true);
+-	if (ret)
+-		return ret;
++	v3d->vc4 = vc4;
+ 
+ 	if (V3D_READ(V3D_IDENT0) != V3D_EXPECTED_IDENT0) {
+ 		DRM_ERROR("V3D_IDENT0 read 0x%08x instead of 0x%08x\n",
+@@ -216,6 +222,8 @@ static int vc4_v3d_bind(struct device *d
+ 		return ret;
+ 	}
+ 
++	pm_runtime_enable(dev);
++
+ 	return 0;
+ }
+ 
+@@ -225,6 +233,8 @@ static void vc4_v3d_unbind(struct device
+ 	struct drm_device *drm = dev_get_drvdata(master);
+ 	struct vc4_dev *vc4 = to_vc4_dev(drm);
+ 
++	pm_runtime_disable(dev);
++
+ 	drm_irq_uninstall(drm);
+ 
+ 	/* Disable the binner's overflow memory address, so the next
+@@ -234,11 +244,13 @@ static void vc4_v3d_unbind(struct device
+ 	V3D_WRITE(V3D_BPOA, 0);
+ 	V3D_WRITE(V3D_BPOS, 0);
+ 
+-	vc4_v3d_set_power(vc4, false);
+-
+ 	vc4->v3d = NULL;
+ }
+ 
++static const struct dev_pm_ops vc4_v3d_pm_ops = {
++	SET_RUNTIME_PM_OPS(vc4_v3d_runtime_suspend, vc4_v3d_runtime_resume, NULL)
++};
++
+ static const struct component_ops vc4_v3d_ops = {
+ 	.bind   = vc4_v3d_bind,
+ 	.unbind = vc4_v3d_unbind,
+@@ -267,5 +279,6 @@ struct platform_driver vc4_v3d_driver =
+ 	.driver = {
+ 		.name = "vc4_v3d",
+ 		.of_match_table = vc4_v3d_dt_match,
++		.pm = &vc4_v3d_pm_ops,
+ 	},
+ };
diff --git a/target/linux/brcm2708/patches-4.4/0467-drm-vc4-Drop-firmware-node-getting-now-that-we-use-t.patch b/target/linux/brcm2708/patches-4.4/0467-drm-vc4-Drop-firmware-node-getting-now-that-we-use-t.patch
new file mode 100644
index 0000000..353eb43
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0467-drm-vc4-Drop-firmware-node-getting-now-that-we-use-t.patch
@@ -0,0 +1,54 @@
+From f83b96d75cab6d19376dcb9f49ebd870a8f73b69 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Fri, 12 Aug 2016 10:45:04 -0700
+Subject: [PATCH] drm/vc4: Drop firmware node getting now that we use the power
+ domain.
+
+---
+ drivers/gpu/drm/vc4/vc4_drv.c | 10 ----------
+ drivers/gpu/drm/vc4/vc4_drv.h |  1 -
+ 2 files changed, 11 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.c
++++ b/drivers/gpu/drm/vc4/vc4_drv.c
+@@ -15,7 +15,6 @@
+ #include <linux/module.h>
+ #include <linux/of_platform.h>
+ #include <linux/platform_device.h>
+-#include <soc/bcm2835/raspberrypi-firmware.h>
+ #include "drm_fb_cma_helper.h"
+ 
+ #include "uapi/drm/vc4_drm.h"
+@@ -204,7 +203,6 @@ static int vc4_drm_bind(struct device *d
+ 	struct drm_device *drm;
+ 	struct drm_connector *connector;
+ 	struct vc4_dev *vc4;
+-	struct device_node *firmware_node;
+ 	int ret = 0;
+ 
+ 	dev->coherent_dma_mask = DMA_BIT_MASK(32);
+@@ -213,14 +211,6 @@ static int vc4_drm_bind(struct device *d
+ 	if (!vc4)
+ 		return -ENOMEM;
+ 
+-	firmware_node = of_parse_phandle(dev->of_node, "firmware", 0);
+-	vc4->firmware = rpi_firmware_get(firmware_node);
+-	if (!vc4->firmware) {
+-		DRM_DEBUG("Failed to get Raspberry Pi firmware reference.\n");
+-		return -EPROBE_DEFER;
+-	}
+-	of_node_put(firmware_node);
+-
+ 	drm = drm_dev_alloc(&vc4_drm_driver, dev);
+ 	if (!drm)
+ 		return -ENOMEM;
+--- a/drivers/gpu/drm/vc4/vc4_drv.h
++++ b/drivers/gpu/drm/vc4/vc4_drv.h
+@@ -23,7 +23,6 @@ struct vc4_dev {
+ 	struct vc4_dsi *dsi1;
+ 
+ 	struct drm_fbdev_cma *fbdev;
+-	struct rpi_firmware *firmware;
+ 
+ 	struct vc4_hang_state *hang_state;
+ 
diff --git a/target/linux/brcm2708/patches-4.4/0468-drm-vc4-Use-runtime-PM-to-power-cycle-the-device-whe.patch b/target/linux/brcm2708/patches-4.4/0468-drm-vc4-Use-runtime-PM-to-power-cycle-the-device-whe.patch
new file mode 100644
index 0000000..d771261
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0468-drm-vc4-Use-runtime-PM-to-power-cycle-the-device-whe.patch
@@ -0,0 +1,102 @@
+From e70d1a5fdbb7277490c273533ce535977326c6a5 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Mon, 8 Feb 2016 12:59:02 -0800
+Subject: [PATCH] drm/vc4: Use runtime PM to power cycle the device when the
+ GPU hangs.
+
+This gets us functional GPU reset again, like we had until a refactor
+at merge time.  Tested with a little patch to stuff in a broken binner
+job every 100 frames.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit 36cb6253f9383fd9a59ee7b8458c6232ef48577c)
+---
+ drivers/gpu/drm/vc4/vc4_drv.h |  6 +++++-
+ drivers/gpu/drm/vc4/vc4_gem.c | 26 +++++++++++++++++++++-----
+ 2 files changed, 26 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.h
++++ b/drivers/gpu/drm/vc4/vc4_drv.h
+@@ -104,6 +104,11 @@ struct vc4_dev {
+ 	struct vc4_bo *overflow_mem;
+ 	struct work_struct overflow_mem_work;
+ 
++	int power_refcount;
++
++	/* Mutex controlling the power refcount. */
++	struct mutex power_lock;
++
+ 	struct {
+ 		struct timer_list timer;
+ 		struct work_struct reset_work;
+@@ -495,7 +500,6 @@ void vc4_plane_async_set_fb(struct drm_p
+ extern struct platform_driver vc4_v3d_driver;
+ int vc4_v3d_debugfs_ident(struct seq_file *m, void *unused);
+ int vc4_v3d_debugfs_regs(struct seq_file *m, void *unused);
+-int vc4_v3d_set_power(struct vc4_dev *vc4, bool on);
+ 
+ /* vc4_validate.c */
+ int
+--- a/drivers/gpu/drm/vc4/vc4_gem.c
++++ b/drivers/gpu/drm/vc4/vc4_gem.c
+@@ -261,8 +261,16 @@ vc4_reset(struct drm_device *dev)
+ 	struct vc4_dev *vc4 = to_vc4_dev(dev);
+ 
+ 	DRM_INFO("Resetting GPU.\n");
+-	vc4_v3d_set_power(vc4, false);
+-	vc4_v3d_set_power(vc4, true);
++
++	mutex_lock(&vc4->power_lock);
++	if (vc4->power_refcount) {
++		/* Power the device off and back on the by dropping the
++		 * reference on runtime PM.
++		 */
++		pm_runtime_put_sync_suspend(&vc4->v3d->pdev->dev);
++		pm_runtime_get_sync(&vc4->v3d->pdev->dev);
++	}
++	mutex_unlock(&vc4->power_lock);
+ 
+ 	vc4_irq_reset(dev);
+ 
+@@ -709,7 +717,10 @@ vc4_complete_exec(struct drm_device *dev
+ 	}
+ 	mutex_unlock(&dev->struct_mutex);
+ 
+-	pm_runtime_put(&vc4->v3d->pdev->dev);
++	mutex_lock(&vc4->power_lock);
++	if (--vc4->power_refcount == 0)
++		pm_runtime_put(&vc4->v3d->pdev->dev);
++	mutex_unlock(&vc4->power_lock);
+ 
+ 	kfree(exec);
+ }
+@@ -851,7 +862,7 @@ vc4_submit_cl_ioctl(struct drm_device *d
+ 	struct vc4_dev *vc4 = to_vc4_dev(dev);
+ 	struct drm_vc4_submit_cl *args = data;
+ 	struct vc4_exec_info *exec;
+-	int ret;
++	int ret = 0;
+ 
+ 	if ((args->flags & ~VC4_SUBMIT_CL_USE_CLEAR_COLOR) != 0) {
+ 		DRM_ERROR("Unknown flags: 0x%02x\n", args->flags);
+@@ -864,7 +875,10 @@ vc4_submit_cl_ioctl(struct drm_device *d
+ 		return -ENOMEM;
+ 	}
+ 
+-	ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
++	mutex_lock(&vc4->power_lock);
++	if (vc4->power_refcount++ == 0)
++		ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
++	mutex_unlock(&vc4->power_lock);
+ 	if (ret < 0) {
+ 		kfree(exec);
+ 		return ret;
+@@ -925,6 +939,8 @@ vc4_gem_init(struct drm_device *dev)
+ 		    (unsigned long)dev);
+ 
+ 	INIT_WORK(&vc4->job_done_work, vc4_job_done_work);
++
++	mutex_init(&vc4->power_lock);
+ }
+ 
+ void
diff --git a/target/linux/brcm2708/patches-4.4/0469-drm-panel-Drop-debug-printf-from-the-Raspberry-Pi-to.patch b/target/linux/brcm2708/patches-4.4/0469-drm-panel-Drop-debug-printf-from-the-Raspberry-Pi-to.patch
new file mode 100644
index 0000000..56ccf2e
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0469-drm-panel-Drop-debug-printf-from-the-Raspberry-Pi-to.patch
@@ -0,0 +1,21 @@
+From 7cac96392a51584d864291e08aeda97f9ee3e384 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Fri, 12 Aug 2016 10:55:53 -0700
+Subject: [PATCH] drm/panel: Drop debug printf from the Raspberry Pi
+ touchscreen.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
++++ b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
+@@ -106,7 +106,6 @@ struct regdump {
+ static int rpi_touchscreen_disable(struct drm_panel *panel)
+ {
+ 	struct rpi_touchscreen *ts = panel_to_ts(panel);
+-	pr_err("disable\n");
+ 
+ 	if (!ts->enabled)
+ 		return 0;
diff --git a/target/linux/brcm2708/patches-4.4/0470-drm-vc4-Replace-HDMI-force-connected-with-an-EDID-pr.patch b/target/linux/brcm2708/patches-4.4/0470-drm-vc4-Replace-HDMI-force-connected-with-an-EDID-pr.patch
new file mode 100644
index 0000000..3c23794
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0470-drm-vc4-Replace-HDMI-force-connected-with-an-EDID-pr.patch
@@ -0,0 +1,42 @@
+From 05352a2959d8924a6333726cd15144245d7c98fa Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Fri, 12 Aug 2016 10:57:41 -0700
+Subject: [PATCH] drm/vc4: Replace HDMI force-connected with an EDID probe.
+
+The force-connected started out because I didn't know how to read the
+HPD pin successfully, which required the hpd_active_low check and
+getting the correct active level into the DTs.  It stayed because we
+don't have the Pi3's HPD line exposed to Linux, so this was the only
+way to bring up graphics on it.
+
+However, with the DSI panel support now present, users want to be able
+to run DSI-only systems, and forcing HDMI on is interfering with
+default screen configurations.  Work around the Pi3's missing HPD by
+probing the DDC on I2C and see if it's present at all.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/vc4/vc4_hdmi.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
+@@ -166,8 +166,6 @@ vc4_hdmi_connector_detect(struct drm_con
+ 	struct drm_device *dev = connector->dev;
+ 	struct vc4_dev *vc4 = to_vc4_dev(dev);
+ 
+-	return connector_status_connected;
+-
+ 	if (vc4->hdmi->hpd_gpio) {
+ 		if (gpio_get_value_cansleep(vc4->hdmi->hpd_gpio) ^
+ 		    vc4->hdmi->hpd_active_low)
+@@ -176,6 +174,9 @@ vc4_hdmi_connector_detect(struct drm_con
+ 			return connector_status_disconnected;
+ 	}
+ 
++	if (drm_probe_ddc(vc4->hdmi->ddc))
++		return connector_status_connected;
++
+ 	if (HDMI_READ(VC4_HDMI_HOTPLUG) & VC4_HDMI_HOTPLUG_CONNECTED)
+ 		return connector_status_connected;
+ 	else
diff --git a/target/linux/brcm2708/patches-4.4/0471-net-ethernet-enc28j60-add-device-tree-support.patch b/target/linux/brcm2708/patches-4.4/0471-net-ethernet-enc28j60-add-device-tree-support.patch
new file mode 100644
index 0000000..eab1286
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0471-net-ethernet-enc28j60-add-device-tree-support.patch
@@ -0,0 +1,143 @@
+From 55d0ce46f962a768dd358ca26158c8c195988645 Mon Sep 17 00:00:00 2001
+From: Michael Heimpold <mhei at heimpold.de>
+Date: Thu, 28 Apr 2016 22:06:15 +0200
+Subject: [PATCH] net: ethernet: enc28j60: add device tree support
+
+(Upstream commit 2dd355a007e44960ec049c75920ddb6778fec9ee)
+
+The following patch adds the required match table for device tree support
+(and while at, fix the indent). It's also possible to specify the
+MAC address in the DT blob.
+
+Also add the corresponding binding documentation file.
+
+Signed-off-by: Michael Heimpold <mhei at heimpold.de>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ .../devicetree/bindings/net/microchip,enc28j60.txt | 59 ++++++++++++++++++++++
+ drivers/net/ethernet/microchip/enc28j60.c          | 21 +++++---
+ 2 files changed, 73 insertions(+), 7 deletions(-)
+ create mode 100644 Documentation/devicetree/bindings/net/microchip,enc28j60.txt
+
+--- /dev/null
++++ b/Documentation/devicetree/bindings/net/microchip,enc28j60.txt
+@@ -0,0 +1,59 @@
++* Microchip ENC28J60
++
++This is a standalone 10 MBit ethernet controller with SPI interface.
++
++For each device connected to a SPI bus, define a child node within
++the SPI master node.
++
++Required properties:
++- compatible: Should be "microchip,enc28j60"
++- reg: Specify the SPI chip select the ENC28J60 is wired to
++- interrupt-parent: Specify the phandle of the source interrupt, see interrupt
++                    binding documentation for details. Usually this is the GPIO bank
++                    the interrupt line is wired to.
++- interrupts: Specify the interrupt index within the interrupt controller (referred
++              to above in interrupt-parent) and interrupt type. The ENC28J60 natively
++              generates falling edge interrupts, however, additional board logic
++              might invert the signal.
++- pinctrl-names: List of assigned state names, see pinctrl binding documentation.
++- pinctrl-0: List of phandles to configure the GPIO pin used as interrupt line,
++             see also generic and your platform specific pinctrl binding
++             documentation.
++
++Optional properties:
++- spi-max-frequency: Maximum frequency of the SPI bus when accessing the ENC28J60.
++  According to the ENC28J80 datasheet, the chip allows a maximum of 20 MHz, however,
++  board designs may need to limit this value.
++- local-mac-address: See ethernet.txt in the same directory.
++
++
++Example (for NXP i.MX28 with pin control stuff for GPIO irq):
++
++        ssp2: ssp at 80014000 {
++                compatible = "fsl,imx28-spi";
++                pinctrl-names = "default";
++                pinctrl-0 = <&spi2_pins_b &spi2_sck_cfg>;
++                status = "okay";
++
++                enc28j60: ethernet at 0 {
++                        compatible = "microchip,enc28j60";
++                        pinctrl-names = "default";
++                        pinctrl-0 = <&enc28j60_pins>;
++                        reg = <0>;
++                        interrupt-parent = <&gpio3>;
++                        interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
++                        spi-max-frequency = <12000000>;
++                };
++        };
++
++        pinctrl at 80018000 {
++                enc28j60_pins: enc28j60_pins at 0 {
++                        reg = <0>;
++                        fsl,pinmux-ids = <
++                                MX28_PAD_AUART0_RTS__GPIO_3_3    /* Interrupt */
++                        >;
++                        fsl,drive-strength = <MXS_DRIVE_4mA>;
++                        fsl,voltage = <MXS_VOLTAGE_HIGH>;
++                        fsl,pull-up = <MXS_PULL_DISABLE>;
++                };
++        };
+--- a/drivers/net/ethernet/microchip/enc28j60.c
++++ b/drivers/net/ethernet/microchip/enc28j60.c
+@@ -28,11 +28,12 @@
+ #include <linux/skbuff.h>
+ #include <linux/delay.h>
+ #include <linux/spi/spi.h>
++#include <linux/of_net.h>
+ 
+ #include "enc28j60_hw.h"
+ 
+ #define DRV_NAME	"enc28j60"
+-#define DRV_VERSION	"1.01"
++#define DRV_VERSION	"1.02"
+ 
+ #define SPI_OPLEN	1
+ 
+@@ -1544,6 +1545,7 @@ static int enc28j60_probe(struct spi_dev
+ {
+ 	struct net_device *dev;
+ 	struct enc28j60_net *priv;
++	const void *macaddr;
+ 	int ret = 0;
+ 
+ 	if (netif_msg_drv(&debug))
+@@ -1575,7 +1577,12 @@ static int enc28j60_probe(struct spi_dev
+ 		ret = -EIO;
+ 		goto error_irq;
+ 	}
+-	eth_hw_addr_random(dev);
++
++	macaddr = of_get_mac_address(spi->dev.of_node);
++	if (macaddr)
++		ether_addr_copy(dev->dev_addr, macaddr);
++	else
++		eth_hw_addr_random(dev);
+ 	enc28j60_set_hw_macaddr(dev);
+ 
+ 	/* Board setup must set the relevant edge trigger type;
+@@ -1630,16 +1637,16 @@ static int enc28j60_remove(struct spi_de
+ 	return 0;
+ }
+ 
+-static const struct of_device_id enc28j60_of_match[] = {
+-	{ .compatible = "microchip,enc28j60", },
++static const struct of_device_id enc28j60_dt_ids[] = {
++	{ .compatible = "microchip,enc28j60" },
+ 	{ /* sentinel */ }
+ };
+-MODULE_DEVICE_TABLE(of, enc28j60_of_match);
++MODULE_DEVICE_TABLE(of, enc28j60_dt_ids);
+ 
+ static struct spi_driver enc28j60_driver = {
+ 	.driver = {
+-		   .name = DRV_NAME,
+-		   .of_match_table = enc28j60_of_match,
++		.name = DRV_NAME,
++		.of_match_table = enc28j60_dt_ids,
+ 	 },
+ 	.probe = enc28j60_probe,
+ 	.remove = enc28j60_remove,
diff --git a/target/linux/brcm2708/patches-4.4/0472-enc28j60-Fix-race-condition-in-enc28j60-driver.patch b/target/linux/brcm2708/patches-4.4/0472-enc28j60-Fix-race-condition-in-enc28j60-driver.patch
new file mode 100644
index 0000000..1447beb
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0472-enc28j60-Fix-race-condition-in-enc28j60-driver.patch
@@ -0,0 +1,64 @@
+From 2f1038fb16442e7285c6a4da47c56d1967ab05da Mon Sep 17 00:00:00 2001
+From: Sergio Valverde <sergio.valverde at hpe.com>
+Date: Fri, 1 Jul 2016 11:44:30 -0600
+Subject: [PATCH] enc28j60: Fix race condition in enc28j60 driver
+
+(Upstream commit 373819ec391de0d11f63b10b2fb69ef2854236ca)
+
+The interrupt worker code for the enc28j60 relies only on the TXIF flag to
+determinate if the packet transmission was completed. However the datasheet
+specifies in section 12.1.3 that TXERIF will clear the TXRTS after a
+transmit abort. Also in section 12.1.4 that TXIF will be set
+when TXRTS transitions from '1' to '0'. Therefore the TXIF flag is enabled
+during transmission errors.
+
+This causes a race condition, since the worker code will invoke
+enc28j60_tx_clear() -> netif_wake_queue(), potentially invoking the
+ndo_start_xmit function to send a new packet. The enc28j60_send_packet function
+uses a workqueue that invokes enc28j60_hw_tx(). In between this function is
+called, the worker from the interrupt handler will enter the path for error
+handler because of the TXERIF flag, causing to invoke enc28j60_tx_clear() again
+and releasing the packet scheduled for transmission, causing a kernel crash with
+due a NULL pointer.
+
+These crashes due a NULL pointer were observed under stress conditions of the
+device. A BUG_ON() sequence was used to validate the issue was fixed, and has
+been running without problems for 2 years now.
+
+Signed-off-by: Diego Dompe <dompe at hpe.com>
+Acked-by: Sergio Valverde <sergio.valverde at hpe.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ drivers/net/ethernet/microchip/enc28j60.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/ethernet/microchip/enc28j60.c
++++ b/drivers/net/ethernet/microchip/enc28j60.c
+@@ -1147,7 +1147,8 @@ static void enc28j60_irq_work_handler(st
+ 			enc28j60_phy_read(priv, PHIR);
+ 		}
+ 		/* TX complete handler */
+-		if ((intflags & EIR_TXIF) != 0) {
++		if (((intflags & EIR_TXIF) != 0) &&
++		    ((intflags & EIR_TXERIF) == 0)) {
+ 			bool err = false;
+ 			loop++;
+ 			if (netif_msg_intr(priv))
+@@ -1199,7 +1200,7 @@ static void enc28j60_irq_work_handler(st
+ 					enc28j60_tx_clear(ndev, true);
+ 			} else
+ 				enc28j60_tx_clear(ndev, true);
+-			locked_reg_bfclr(priv, EIR, EIR_TXERIF);
++			locked_reg_bfclr(priv, EIR, EIR_TXERIF | EIR_TXIF);
+ 		}
+ 		/* RX Error handler */
+ 		if ((intflags & EIR_RXERIF) != 0) {
+@@ -1234,6 +1235,8 @@ static void enc28j60_irq_work_handler(st
+  */
+ static void enc28j60_hw_tx(struct enc28j60_net *priv)
+ {
++	BUG_ON(!priv->tx_skb);
++
+ 	if (netif_msg_tx_queued(priv))
+ 		printk(KERN_DEBUG DRV_NAME
+ 			": Tx Packet Len:%d\n", priv->tx_skb->len);
diff --git a/target/linux/brcm2708/patches-4.4/0473-Add-cm3-dts-file.patch b/target/linux/brcm2708/patches-4.4/0473-Add-cm3-dts-file.patch
new file mode 100644
index 0000000..4f322bb
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0473-Add-cm3-dts-file.patch
@@ -0,0 +1,200 @@
+From 22af0da1539b63a5dc49cc03d28a726027e2d688 Mon Sep 17 00:00:00 2001
+From: James Adams <james at raspberrypi.org>
+Date: Fri, 12 Aug 2016 14:35:00 +0100
+Subject: [PATCH] Add cm3 dts file
+
+---
+ arch/arm/boot/dts/Makefile            |   1 +
+ arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 176 ++++++++++++++++++++++++++++++++++
+ 2 files changed, 177 insertions(+)
+ create mode 100644 arch/arm/boot/dts/bcm2710-rpi-cm3.dts
+
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -6,6 +6,7 @@ dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rp
+ dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-cm.dtb
+ dtb-$(CONFIG_ARCH_BCM2709) += bcm2709-rpi-2-b.dtb
+ dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb
++dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-cm3.dtb
+ 
+ # Raspberry Pi
+ ifeq ($(CONFIG_ARCH_BCM2708),y)
+--- /dev/null
++++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
+@@ -0,0 +1,176 @@
++/dts-v1/;
++
++#include "bcm2710.dtsi"
++
++/ {
++	compatible = "brcm,bcm2710","brcm,bcm2709";
++	model = "Raspberry Pi Compute Module 3";
++};
++
++&gpio {
++
++	mmc_pins: mmc_pins {
++		brcm,pins = <48 49 50 51 52 53>;
++		brcm,function = <7>; /* alt3 */
++		brcm,pull = <0 2 2 2 2 2>;
++	};
++
++	spi0_pins: spi0_pins {
++		brcm,pins = <9 10 11>;
++		brcm,function = <4>; /* alt0 */
++	};
++
++	spi0_cs_pins: spi0_cs_pins {
++		brcm,pins = <8 7>;
++		brcm,function = <1>; /* output */
++	};
++
++	i2c0_pins: i2c0 {
++		brcm,pins = <0 1>;
++		brcm,function = <4>;
++	};
++
++	i2c1_pins: i2c1 {
++		brcm,pins = <2 3>;
++		brcm,function = <4>;
++	};
++
++	i2s_pins: i2s {
++		brcm,pins = <18 19 20 21>;
++		brcm,function = <4>; /* alt0 */
++	};
++
++	uart0_pins: uart0_pins {
++		brcm,pins;
++		brcm,function;
++		brcm,pull = <0 2>;
++	};
++
++	audio_pins: audio_pins {
++		brcm,pins;
++		brcm,function;
++	};
++};
++
++&mmc {
++	pinctrl-names = "default";
++	pinctrl-0 = <&mmc_pins>;
++	non-removable;
++	bus-width = <4>;
++	status = "okay";
++	brcm,overclock-50 = <0>;
++};
++
++&soc {
++	virtgpio: virtgpio {
++		compatible = "brcm,bcm2835-virtgpio";
++		gpio-controller;
++		#gpio-cells = <2>;
++		firmware = <&firmware>;
++		status = "okay";
++	};
++};
++
++&fb {
++	status = "okay";
++};
++
++&uart0 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&uart0_pins>;
++	status = "okay";
++};
++
++&spi0 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
++	cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
++
++	spidev0: spidev at 0{
++		compatible = "spidev";
++		reg = <0>;	/* CE0 */
++		#address-cells = <1>;
++		#size-cells = <0>;
++		spi-max-frequency = <500000>;
++	};
++
++	spidev1: spidev at 1{
++		compatible = "spidev";
++		reg = <1>;	/* CE1 */
++		#address-cells = <1>;
++		#size-cells = <0>;
++		spi-max-frequency = <500000>;
++	};
++};
++
++&i2c0 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&i2c0_pins>;
++	clock-frequency = <100000>;
++};
++
++&i2c1 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&i2c1_pins>;
++	clock-frequency = <100000>;
++};
++
++&i2c2 {
++	clock-frequency = <100000>;
++};
++
++&i2s {
++	#sound-dai-cells = <0>;
++	pinctrl-names = "default";
++	pinctrl-0 = <&i2s_pins>;
++};
++
++&random {
++	status = "okay";
++};
++
++&leds {
++	act_led: act {
++		label = "led0";
++		linux,default-trigger = "mmc0";
++		gpios = <&virtgpio 0 0>;
++	};
++};
++
++&hdmi {
++	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
++};
++
++&audio {
++	pinctrl-names = "default";
++	pinctrl-0 = <&audio_pins>;
++};
++
++/ {
++	__overrides__ {
++		uart0 = <&uart0>,"status";
++		uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
++		uart1 = <&uart1>,"status";
++		i2s = <&i2s>,"status";
++		spi = <&spi0>,"status";
++		i2c0 = <&i2c0>,"status";
++		i2c1 = <&i2c1>,"status";
++		i2c2_iknowwhatimdoing = <&i2c2>,"status";
++		i2c0_baudrate = <&i2c0>,"clock-frequency:0";
++		i2c1_baudrate = <&i2c1>,"clock-frequency:0";
++		i2c2_baudrate = <&i2c2>,"clock-frequency:0";
++		core_freq = <&clk_core>,"clock-frequency:0";
++
++		act_led_gpio = <&act_led>,"gpios:4";
++		act_led_activelow = <&act_led>,"gpios:8";
++		act_led_trigger = <&act_led>,"linux,default-trigger";
++
++		audio = <&audio>,"status";
++		watchdog = <&watchdog>,"status";
++		random = <&random>,"status";
++		sd_overclock = <&sdhost>,"brcm,overclock-50:0";
++		sd_force_pio = <&sdhost>,"brcm,force-pio?";
++		sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
++		sd_debug     = <&sdhost>,"brcm,debug";
++	};
++};
diff --git a/target/linux/brcm2708/patches-4.4/0474-BCM270X-Drop-HPD-setting-from-the-common-dtsi.patch b/target/linux/brcm2708/patches-4.4/0474-BCM270X-Drop-HPD-setting-from-the-common-dtsi.patch
new file mode 100644
index 0000000..61b1985
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0474-BCM270X-Drop-HPD-setting-from-the-common-dtsi.patch
@@ -0,0 +1,21 @@
+From 8f7b6b3db2ffcec68137e671c158c705241e1009 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Mon, 15 Aug 2016 10:08:58 -0700
+Subject: [PATCH] BCM270X: Drop HPD setting from the common dtsi.
+
+The HPD is quite board-specific, so we need to set it in the per-board
+DT.
+---
+ arch/arm/boot/dts/bcm2708_common.dtsi | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/arch/arm/boot/dts/bcm2708_common.dtsi
++++ b/arch/arm/boot/dts/bcm2708_common.dtsi
+@@ -347,7 +347,6 @@
+ 			reg = <0x7e902000 0x600>,
+ 			      <0x7e808000 0x100>;
+ 			ddc = <&i2c2>;
+-			hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
+ 			clocks = <&cprman BCM2835_PLLH_PIX>,
+ 				 <&cprman BCM2835_CLOCK_HSM>;
+ 			clock-names = "pixel", "hdmi";
diff --git a/target/linux/brcm2708/patches-4.4/0475-BCM2710-Drop-incorrect-HDMI-HPD-line-from-the-DT.patch b/target/linux/brcm2708/patches-4.4/0475-BCM2710-Drop-incorrect-HDMI-HPD-line-from-the-DT.patch
new file mode 100644
index 0000000..4ae0e30
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0475-BCM2710-Drop-incorrect-HDMI-HPD-line-from-the-DT.patch
@@ -0,0 +1,26 @@
+From 5bdac7f7f6e6d9938da0d6bd0d58a136cf29515b Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Fri, 12 Aug 2016 11:02:14 -0700
+Subject: [PATCH] BCM2710: Drop incorrect HDMI HPD line from the DT.
+
+It's actually off on the GPIO expander, which I don't think we have
+access to.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 4 ----
+ 1 file changed, 4 deletions(-)
+
+--- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
++++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
+@@ -166,10 +166,6 @@
+ 	};
+ };
+ 
+-&hdmi {
+-	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+-};
+-
+ &audio {
+ 	pinctrl-names = "default";
+ 	pinctrl-0 = <&audio_pins>;
diff --git a/target/linux/brcm2708/patches-4.4/0476-drm-vc4-Add-a-getparam-ioctl-for-getting-the-V3D-ide.patch b/target/linux/brcm2708/patches-4.4/0476-drm-vc4-Add-a-getparam-ioctl-for-getting-the-V3D-ide.patch
new file mode 100644
index 0000000..a51347e
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0476-drm-vc4-Add-a-getparam-ioctl-for-getting-the-V3D-ide.patch
@@ -0,0 +1,124 @@
+From 35d17fc64d8612bfc019a9a6078647886fae783f Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Fri, 1 Jul 2016 13:10:38 -0700
+Subject: [PATCH] drm/vc4: Add a getparam ioctl for getting the V3D identity
+ regs.
+
+As I extend the driver to support different V3D revisions, userspace
+needs to know what version it's targeting.  This is most easily
+detected using the V3D identity registers.
+
+v2: Make sure V3D is runtime PM on when reading the registers.
+v3: Switch to a 64-bit param value (suggested by Rob Clark in review)
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Acked-by: Daniel Vetter <daniel.vetter at ffwll.ch> (v2)
+Reviewed-by: Rob Clark <robdclark at gmail.com> (v3, over irc)
+(cherry picked from commit af713795c59fea36161a7debf97dbc10bf652cf7)
+
+v4: Squashed in "drm/vc4: Fix handling of a pm_runtime_get_sync() success case."
+---
+ drivers/gpu/drm/vc4/vc4_drv.c | 42 ++++++++++++++++++++++++++++++++++++++++++
+ include/uapi/drm/vc4_drm.h    | 12 ++++++++++++
+ 2 files changed, 54 insertions(+)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.c
++++ b/drivers/gpu/drm/vc4/vc4_drv.c
+@@ -15,6 +15,7 @@
+ #include <linux/module.h>
+ #include <linux/of_platform.h>
+ #include <linux/platform_device.h>
++#include <linux/pm_runtime.h>
+ #include "drm_fb_cma_helper.h"
+ 
+ #include "uapi/drm/vc4_drm.h"
+@@ -64,6 +65,46 @@ void vc4_dump_regs32(const struct debugf
+ 	}
+ }
+ 
++static int vc4_get_param_ioctl(struct drm_device *dev, void *data,
++			       struct drm_file *file_priv)
++{
++	struct vc4_dev *vc4 = to_vc4_dev(dev);
++	struct drm_vc4_get_param *args = data;
++	int ret;
++
++	if (args->pad != 0)
++		return -EINVAL;
++
++	switch (args->param) {
++	case DRM_VC4_PARAM_V3D_IDENT0:
++		ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
++		if (ret < 0)
++			return ret;
++		args->value = V3D_READ(V3D_IDENT0);
++		pm_runtime_put(&vc4->v3d->pdev->dev);
++		break;
++	case DRM_VC4_PARAM_V3D_IDENT1:
++		ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
++		if (ret < 0)
++			return ret;
++		args->value = V3D_READ(V3D_IDENT1);
++		pm_runtime_put(&vc4->v3d->pdev->dev);
++		break;
++	case DRM_VC4_PARAM_V3D_IDENT2:
++		ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
++		if (ret < 0)
++			return ret;
++		args->value = V3D_READ(V3D_IDENT2);
++		pm_runtime_put(&vc4->v3d->pdev->dev);
++		break;
++	default:
++		DRM_DEBUG("Unknown parameter %d\n", args->param);
++		return -EINVAL;
++	}
++
++	return 0;
++}
++
+ static void vc4_lastclose(struct drm_device *dev)
+ {
+ 	struct vc4_dev *vc4 = to_vc4_dev(dev);
+@@ -95,6 +136,7 @@ static const struct drm_ioctl_desc vc4_d
+ 	DRM_IOCTL_DEF_DRV(VC4_CREATE_SHADER_BO, vc4_create_shader_bo_ioctl, DRM_RENDER_ALLOW),
+ 	DRM_IOCTL_DEF_DRV(VC4_GET_HANG_STATE, vc4_get_hang_state_ioctl,
+ 			  DRM_ROOT_ONLY),
++	DRM_IOCTL_DEF_DRV(VC4_GET_PARAM, vc4_get_param_ioctl, DRM_RENDER_ALLOW),
+ };
+ 
+ static struct drm_driver vc4_drm_driver = {
+--- a/include/uapi/drm/vc4_drm.h
++++ b/include/uapi/drm/vc4_drm.h
+@@ -37,6 +37,7 @@ extern "C" {
+ #define DRM_VC4_MMAP_BO                           0x04
+ #define DRM_VC4_CREATE_SHADER_BO                  0x05
+ #define DRM_VC4_GET_HANG_STATE                    0x06
++#define DRM_VC4_GET_PARAM                         0x07
+ 
+ #define DRM_IOCTL_VC4_SUBMIT_CL           DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_SUBMIT_CL, struct drm_vc4_submit_cl)
+ #define DRM_IOCTL_VC4_WAIT_SEQNO          DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_WAIT_SEQNO, struct drm_vc4_wait_seqno)
+@@ -45,6 +46,7 @@ extern "C" {
+ #define DRM_IOCTL_VC4_MMAP_BO             DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_MMAP_BO, struct drm_vc4_mmap_bo)
+ #define DRM_IOCTL_VC4_CREATE_SHADER_BO    DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_CREATE_SHADER_BO, struct drm_vc4_create_shader_bo)
+ #define DRM_IOCTL_VC4_GET_HANG_STATE      DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_HANG_STATE, struct drm_vc4_get_hang_state)
++#define DRM_IOCTL_VC4_GET_PARAM           DRM_IOWR(DRM_COMMAND_BASE + DRM_VC4_GET_PARAM, struct drm_vc4_get_param)
+ 
+ struct drm_vc4_submit_rcl_surface {
+ 	__u32 hindex; /* Handle index, or ~0 if not present. */
+@@ -280,6 +282,16 @@ struct drm_vc4_get_hang_state {
+ 	__u32 pad[16];
+ };
+ 
++#define DRM_VC4_PARAM_V3D_IDENT0		0
++#define DRM_VC4_PARAM_V3D_IDENT1		1
++#define DRM_VC4_PARAM_V3D_IDENT2		2
++
++struct drm_vc4_get_param {
++	__u32 param;
++	__u32 pad;
++	__u64 value;
++};
++
+ #if defined(__cplusplus)
+ }
+ #endif
diff --git a/target/linux/brcm2708/patches-4.4/0477-drm-vc4-Move-validation-s-current-max-ip-into-the-va.patch b/target/linux/brcm2708/patches-4.4/0477-drm-vc4-Move-validation-s-current-max-ip-into-the-va.patch
new file mode 100644
index 0000000..53b8fb0
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0477-drm-vc4-Move-validation-s-current-max-ip-into-the-va.patch
@@ -0,0 +1,176 @@
+From 71f1e833c8f76504921b3913d5a8da310318934f Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Sat, 2 Jul 2016 09:57:07 -0700
+Subject: [PATCH] drm/vc4: Move validation's current/max ip into the validation
+ struct.
+
+Reduces the argument count for some of the functions, and will be used
+more with the upcoming looping support.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit d0566c2a2f2baacefe1eb75be8a001fdd6fe84a3)
+---
+ drivers/gpu/drm/vc4/vc4_validate_shaders.c | 54 +++++++++++++++++-------------
+ 1 file changed, 30 insertions(+), 24 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c
++++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c
+@@ -40,6 +40,14 @@
+ #include "vc4_qpu_defines.h"
+ 
+ struct vc4_shader_validation_state {
++	/* Current IP being validated. */
++	uint32_t ip;
++
++	/* IP at the end of the BO, do not read shader[max_ip] */
++	uint32_t max_ip;
++
++	uint64_t *shader;
++
+ 	struct vc4_texture_sample_info tmu_setup[2];
+ 	int tmu_write_count[2];
+ 
+@@ -129,11 +137,11 @@ record_texture_sample(struct vc4_validat
+ }
+ 
+ static bool
+-check_tmu_write(uint64_t inst,
+-		struct vc4_validated_shader_info *validated_shader,
++check_tmu_write(struct vc4_validated_shader_info *validated_shader,
+ 		struct vc4_shader_validation_state *validation_state,
+ 		bool is_mul)
+ {
++	uint64_t inst = validation_state->shader[validation_state->ip];
+ 	uint32_t waddr = (is_mul ?
+ 			  QPU_GET_FIELD(inst, QPU_WADDR_MUL) :
+ 			  QPU_GET_FIELD(inst, QPU_WADDR_ADD));
+@@ -228,11 +236,11 @@ check_tmu_write(uint64_t inst,
+ }
+ 
+ static bool
+-check_reg_write(uint64_t inst,
+-		struct vc4_validated_shader_info *validated_shader,
++check_reg_write(struct vc4_validated_shader_info *validated_shader,
+ 		struct vc4_shader_validation_state *validation_state,
+ 		bool is_mul)
+ {
++	uint64_t inst = validation_state->shader[validation_state->ip];
+ 	uint32_t waddr = (is_mul ?
+ 			  QPU_GET_FIELD(inst, QPU_WADDR_MUL) :
+ 			  QPU_GET_FIELD(inst, QPU_WADDR_ADD));
+@@ -261,7 +269,7 @@ check_reg_write(uint64_t inst,
+ 	case QPU_W_TMU1_T:
+ 	case QPU_W_TMU1_R:
+ 	case QPU_W_TMU1_B:
+-		return check_tmu_write(inst, validated_shader, validation_state,
++		return check_tmu_write(validated_shader, validation_state,
+ 				       is_mul);
+ 
+ 	case QPU_W_HOST_INT:
+@@ -294,10 +302,10 @@ check_reg_write(uint64_t inst,
+ }
+ 
+ static void
+-track_live_clamps(uint64_t inst,
+-		  struct vc4_validated_shader_info *validated_shader,
++track_live_clamps(struct vc4_validated_shader_info *validated_shader,
+ 		  struct vc4_shader_validation_state *validation_state)
+ {
++	uint64_t inst = validation_state->shader[validation_state->ip];
+ 	uint32_t op_add = QPU_GET_FIELD(inst, QPU_OP_ADD);
+ 	uint32_t waddr_add = QPU_GET_FIELD(inst, QPU_WADDR_ADD);
+ 	uint32_t waddr_mul = QPU_GET_FIELD(inst, QPU_WADDR_MUL);
+@@ -369,10 +377,10 @@ track_live_clamps(uint64_t inst,
+ }
+ 
+ static bool
+-check_instruction_writes(uint64_t inst,
+-			 struct vc4_validated_shader_info *validated_shader,
++check_instruction_writes(struct vc4_validated_shader_info *validated_shader,
+ 			 struct vc4_shader_validation_state *validation_state)
+ {
++	uint64_t inst = validation_state->shader[validation_state->ip];
+ 	uint32_t waddr_add = QPU_GET_FIELD(inst, QPU_WADDR_ADD);
+ 	uint32_t waddr_mul = QPU_GET_FIELD(inst, QPU_WADDR_MUL);
+ 	bool ok;
+@@ -382,12 +390,10 @@ check_instruction_writes(uint64_t inst,
+ 		return false;
+ 	}
+ 
+-	ok = (check_reg_write(inst, validated_shader, validation_state,
+-			      false) &&
+-	      check_reg_write(inst, validated_shader, validation_state,
+-			      true));
++	ok = (check_reg_write(validated_shader, validation_state, false) &&
++	      check_reg_write(validated_shader, validation_state, true));
+ 
+-	track_live_clamps(inst, validated_shader, validation_state);
++	track_live_clamps(validated_shader, validation_state);
+ 
+ 	return ok;
+ }
+@@ -417,30 +423,30 @@ vc4_validate_shader(struct drm_gem_cma_o
+ {
+ 	bool found_shader_end = false;
+ 	int shader_end_ip = 0;
+-	uint32_t ip, max_ip;
+-	uint64_t *shader;
++	uint32_t ip;
+ 	struct vc4_validated_shader_info *validated_shader;
+ 	struct vc4_shader_validation_state validation_state;
+ 	int i;
+ 
+ 	memset(&validation_state, 0, sizeof(validation_state));
++	validation_state.shader = shader_obj->vaddr;
++	validation_state.max_ip = shader_obj->base.size / sizeof(uint64_t);
+ 
+ 	for (i = 0; i < 8; i++)
+ 		validation_state.tmu_setup[i / 4].p_offset[i % 4] = ~0;
+ 	for (i = 0; i < ARRAY_SIZE(validation_state.live_min_clamp_offsets); i++)
+ 		validation_state.live_min_clamp_offsets[i] = ~0;
+ 
+-	shader = shader_obj->vaddr;
+-	max_ip = shader_obj->base.size / sizeof(uint64_t);
+-
+ 	validated_shader = kcalloc(1, sizeof(*validated_shader), GFP_KERNEL);
+ 	if (!validated_shader)
+ 		return NULL;
+ 
+-	for (ip = 0; ip < max_ip; ip++) {
+-		uint64_t inst = shader[ip];
++	for (ip = 0; ip < validation_state.max_ip; ip++) {
++		uint64_t inst = validation_state.shader[ip];
+ 		uint32_t sig = QPU_GET_FIELD(inst, QPU_SIG);
+ 
++		validation_state.ip = ip;
++
+ 		switch (sig) {
+ 		case QPU_SIG_NONE:
+ 		case QPU_SIG_WAIT_FOR_SCOREBOARD:
+@@ -450,7 +456,7 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 		case QPU_SIG_LOAD_TMU1:
+ 		case QPU_SIG_PROG_END:
+ 		case QPU_SIG_SMALL_IMM:
+-			if (!check_instruction_writes(inst, validated_shader,
++			if (!check_instruction_writes(validated_shader,
+ 						      &validation_state)) {
+ 				DRM_ERROR("Bad write at ip %d\n", ip);
+ 				goto fail;
+@@ -467,7 +473,7 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 			break;
+ 
+ 		case QPU_SIG_LOAD_IMM:
+-			if (!check_instruction_writes(inst, validated_shader,
++			if (!check_instruction_writes(validated_shader,
+ 						      &validation_state)) {
+ 				DRM_ERROR("Bad LOAD_IMM write at ip %d\n", ip);
+ 				goto fail;
+@@ -487,7 +493,7 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 			break;
+ 	}
+ 
+-	if (ip == max_ip) {
++	if (ip == validation_state.max_ip) {
+ 		DRM_ERROR("shader failed to terminate before "
+ 			  "shader BO end at %zd\n",
+ 			  shader_obj->base.size);
diff --git a/target/linux/brcm2708/patches-4.4/0478-drm-vc4-Add-a-bitmap-of-branch-targets-during-shader.patch b/target/linux/brcm2708/patches-4.4/0478-drm-vc4-Add-a-bitmap-of-branch-targets-during-shader.patch
new file mode 100644
index 0000000..a8787ac
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0478-drm-vc4-Add-a-bitmap-of-branch-targets-during-shader.patch
@@ -0,0 +1,200 @@
+From ba3aa9ce57cb933203cb0ebaa7c00ef756e5f84e Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Sat, 2 Jul 2016 10:10:24 -0700
+Subject: [PATCH] drm/vc4: Add a bitmap of branch targets during shader
+ validation.
+
+This isn't used yet, it's just a first step toward loop validation.
+During the main parsing of instructions, we need to know when we hit a
+new basic block so that we can reset validated state.
+
+v2: Fix a stray semicolon after an if block.  (caught by kbuild test).
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit 93aa9ae3e5523e49e4e5abacd4dbee0e4ab2d931)
+---
+ drivers/gpu/drm/vc4/vc4_qpu_defines.h      |  12 +++
+ drivers/gpu/drm/vc4/vc4_validate_shaders.c | 114 ++++++++++++++++++++++++++++-
+ 2 files changed, 124 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_qpu_defines.h
++++ b/drivers/gpu/drm/vc4/vc4_qpu_defines.h
+@@ -230,6 +230,15 @@ enum qpu_unpack_r4 {
+ #define QPU_COND_MUL_SHIFT              46
+ #define QPU_COND_MUL_MASK               QPU_MASK(48, 46)
+ 
++#define QPU_BRANCH_COND_SHIFT           52
++#define QPU_BRANCH_COND_MASK            QPU_MASK(55, 52)
++
++#define QPU_BRANCH_REL                  ((uint64_t)1 << 51)
++#define QPU_BRANCH_REG                  ((uint64_t)1 << 50)
++
++#define QPU_BRANCH_RADDR_A_SHIFT        45
++#define QPU_BRANCH_RADDR_A_MASK         QPU_MASK(49, 45)
++
+ #define QPU_SF                          ((uint64_t)1 << 45)
+ 
+ #define QPU_WADDR_ADD_SHIFT             38
+@@ -261,4 +270,7 @@ enum qpu_unpack_r4 {
+ #define QPU_OP_ADD_SHIFT                24
+ #define QPU_OP_ADD_MASK                 QPU_MASK(28, 24)
+ 
++#define QPU_BRANCH_TARGET_SHIFT         0
++#define QPU_BRANCH_TARGET_MASK          QPU_MASK(31, 0)
++
+ #endif /* VC4_QPU_DEFINES_H */
+--- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c
++++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c
+@@ -59,6 +59,13 @@ struct vc4_shader_validation_state {
+ 	 */
+ 	uint32_t live_min_clamp_offsets[32 + 32 + 4];
+ 	bool live_max_clamp_regs[32 + 32 + 4];
++
++	/* Bitfield of which IPs are used as branch targets.
++	 *
++	 * Used for validation that the uniform stream is updated at the right
++	 * points and clearing the texturing/clamping state.
++	 */
++	unsigned long *branch_targets;
+ };
+ 
+ static uint32_t
+@@ -418,13 +425,104 @@ check_instruction_reads(uint64_t inst,
+ 	return true;
+ }
+ 
++/* Make sure that all branches are absolute and point within the shader, and
++ * note their targets for later.
++ */
++static bool
++vc4_validate_branches(struct vc4_shader_validation_state *validation_state)
++{
++	uint32_t max_branch_target = 0;
++	bool found_shader_end = false;
++	int ip;
++	int shader_end_ip = 0;
++	int last_branch = -2;
++
++	for (ip = 0; ip < validation_state->max_ip; ip++) {
++		uint64_t inst = validation_state->shader[ip];
++		int32_t branch_imm = QPU_GET_FIELD(inst, QPU_BRANCH_TARGET);
++		uint32_t sig = QPU_GET_FIELD(inst, QPU_SIG);
++		uint32_t after_delay_ip = ip + 4;
++		uint32_t branch_target_ip;
++
++		if (sig == QPU_SIG_PROG_END) {
++			shader_end_ip = ip;
++			found_shader_end = true;
++			continue;
++		}
++
++		if (sig != QPU_SIG_BRANCH)
++			continue;
++
++		if (ip - last_branch < 4) {
++			DRM_ERROR("Branch at %d during delay slots\n", ip);
++			return false;
++		}
++		last_branch = ip;
++
++		if (inst & QPU_BRANCH_REG) {
++			DRM_ERROR("branching from register relative "
++				  "not supported\n");
++			return false;
++		}
++
++		if (!(inst & QPU_BRANCH_REL)) {
++			DRM_ERROR("relative branching required\n");
++			return false;
++		}
++
++		/* The actual branch target is the instruction after the delay
++		 * slots, plus whatever byte offset is in the low 32 bits of
++		 * the instruction.  Make sure we're not branching beyond the
++		 * end of the shader object.
++		 */
++		if (branch_imm % sizeof(inst) != 0) {
++			DRM_ERROR("branch target not aligned\n");
++			return false;
++		}
++
++		branch_target_ip = after_delay_ip + (branch_imm >> 3);
++		if (branch_target_ip >= validation_state->max_ip) {
++			DRM_ERROR("Branch at %d outside of shader (ip %d/%d)\n",
++				  ip, branch_target_ip,
++				  validation_state->max_ip);
++			return false;
++		}
++		set_bit(branch_target_ip, validation_state->branch_targets);
++
++		/* Make sure that the non-branching path is also not outside
++		 * the shader.
++		 */
++		if (after_delay_ip >= validation_state->max_ip) {
++			DRM_ERROR("Branch at %d continues past shader end "
++				  "(%d/%d)\n",
++				  ip, after_delay_ip, validation_state->max_ip);
++			return false;
++		}
++		set_bit(after_delay_ip, validation_state->branch_targets);
++		max_branch_target = max(max_branch_target, after_delay_ip);
++
++		/* There are two delay slots after program end is signaled
++		 * that are still executed, then we're finished.
++		 */
++		if (found_shader_end && ip == shader_end_ip + 2)
++			break;
++	}
++
++	if (max_branch_target > shader_end_ip) {
++		DRM_ERROR("Branch landed after QPU_SIG_PROG_END");
++		return false;
++	}
++
++	return true;
++}
++
+ struct vc4_validated_shader_info *
+ vc4_validate_shader(struct drm_gem_cma_object *shader_obj)
+ {
+ 	bool found_shader_end = false;
+ 	int shader_end_ip = 0;
+ 	uint32_t ip;
+-	struct vc4_validated_shader_info *validated_shader;
++	struct vc4_validated_shader_info *validated_shader = NULL;
+ 	struct vc4_shader_validation_state validation_state;
+ 	int i;
+ 
+@@ -437,9 +535,18 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 	for (i = 0; i < ARRAY_SIZE(validation_state.live_min_clamp_offsets); i++)
+ 		validation_state.live_min_clamp_offsets[i] = ~0;
+ 
++	validation_state.branch_targets =
++		kcalloc(BITS_TO_LONGS(validation_state.max_ip),
++			sizeof(unsigned long), GFP_KERNEL);
++	if (!validation_state.branch_targets)
++		goto fail;
++
+ 	validated_shader = kcalloc(1, sizeof(*validated_shader), GFP_KERNEL);
+ 	if (!validated_shader)
+-		return NULL;
++		goto fail;
++
++	if (!vc4_validate_branches(&validation_state))
++		goto fail;
+ 
+ 	for (ip = 0; ip < validation_state.max_ip; ip++) {
+ 		uint64_t inst = validation_state.shader[ip];
+@@ -508,9 +615,12 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 		(validated_shader->uniforms_size +
+ 		 4 * validated_shader->num_texture_samples);
+ 
++	kfree(validation_state.branch_targets);
++
+ 	return validated_shader;
+ 
+ fail:
++	kfree(validation_state.branch_targets);
+ 	if (validated_shader) {
+ 		kfree(validated_shader->texture_samples);
+ 		kfree(validated_shader);
diff --git a/target/linux/brcm2708/patches-4.4/0479-drm-vc4-Add-support-for-branching-in-shader-validati.patch b/target/linux/brcm2708/patches-4.4/0479-drm-vc4-Add-support-for-branching-in-shader-validati.patch
new file mode 100644
index 0000000..eb78dba
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0479-drm-vc4-Add-support-for-branching-in-shader-validati.patch
@@ -0,0 +1,475 @@
+From f9cd25fae900b1251e14ec894849846e0a2a7cb3 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Sat, 2 Jul 2016 12:17:10 -0700
+Subject: [PATCH] drm/vc4: Add support for branching in shader validation.
+
+We're already checking that branch instructions are between the start
+of the shader and the proper PROG_END sequence.  The other thing we
+need to make branching safe is to verify that the shader doesn't read
+past the end of the uniforms stream.
+
+To do that, we require that at any basic block reading uniforms have
+the following instructions:
+
+load_imm temp, <next offset within uniform stream>
+add unif_addr, temp, unif
+
+The instructions are generated by userspace, and the kernel verifies
+that the load_imm is of the expected offset, and that the add adds it
+to a uniform.  We track which uniform in the stream that is, and at
+draw call time fix up the uniform stream to have the address of the
+start of the shader's uniforms at that location.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit 6d45c81d229d71da54d374143e7d6abad4c0cf31)
+---
+ drivers/gpu/drm/vc4/vc4_drv.h              |   3 +
+ drivers/gpu/drm/vc4/vc4_qpu_defines.h      |   3 +
+ drivers/gpu/drm/vc4/vc4_validate.c         |  13 +-
+ drivers/gpu/drm/vc4/vc4_validate_shaders.c | 281 +++++++++++++++++++++++++++--
+ 4 files changed, 283 insertions(+), 17 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.h
++++ b/drivers/gpu/drm/vc4/vc4_drv.h
+@@ -363,6 +363,9 @@ struct vc4_validated_shader_info {
+ 	uint32_t uniforms_src_size;
+ 	uint32_t num_texture_samples;
+ 	struct vc4_texture_sample_info *texture_samples;
++
++	uint32_t num_uniform_addr_offsets;
++	uint32_t *uniform_addr_offsets;
+ };
+ 
+ /**
+--- a/drivers/gpu/drm/vc4/vc4_qpu_defines.h
++++ b/drivers/gpu/drm/vc4/vc4_qpu_defines.h
+@@ -270,6 +270,9 @@ enum qpu_unpack_r4 {
+ #define QPU_OP_ADD_SHIFT                24
+ #define QPU_OP_ADD_MASK                 QPU_MASK(28, 24)
+ 
++#define QPU_LOAD_IMM_SHIFT              0
++#define QPU_LOAD_IMM_MASK               QPU_MASK(31, 0)
++
+ #define QPU_BRANCH_TARGET_SHIFT         0
+ #define QPU_BRANCH_TARGET_MASK          QPU_MASK(31, 0)
+ 
+--- a/drivers/gpu/drm/vc4/vc4_validate.c
++++ b/drivers/gpu/drm/vc4/vc4_validate.c
+@@ -802,7 +802,7 @@ validate_gl_shader_rec(struct drm_device
+ 		uint32_t src_offset = *(uint32_t *)(pkt_u + o);
+ 		uint32_t *texture_handles_u;
+ 		void *uniform_data_u;
+-		uint32_t tex;
++		uint32_t tex, uni;
+ 
+ 		*(uint32_t *)(pkt_v + o) = bo[i]->paddr + src_offset;
+ 
+@@ -840,6 +840,17 @@ validate_gl_shader_rec(struct drm_device
+ 			}
+ 		}
+ 
++		/* Fill in the uniform slots that need this shader's
++		 * start-of-uniforms address (used for resetting the uniform
++		 * stream in the presence of control flow).
++		 */
++		for (uni = 0;
++		     uni < validated_shader->num_uniform_addr_offsets;
++		     uni++) {
++			uint32_t o = validated_shader->uniform_addr_offsets[uni];
++			((uint32_t *)exec->uniforms_v)[o] = exec->uniforms_p;
++		}
++
+ 		*(uint32_t *)(pkt_v + o + 4) = exec->uniforms_p;
+ 
+ 		exec->uniforms_u += validated_shader->uniforms_src_size;
+--- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c
++++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c
+@@ -39,6 +39,8 @@
+ #include "vc4_drv.h"
+ #include "vc4_qpu_defines.h"
+ 
++#define LIVE_REG_COUNT (32 + 32 + 4)
++
+ struct vc4_shader_validation_state {
+ 	/* Current IP being validated. */
+ 	uint32_t ip;
+@@ -57,8 +59,9 @@ struct vc4_shader_validation_state {
+ 	 *
+ 	 * This is used for the validation of direct address memory reads.
+ 	 */
+-	uint32_t live_min_clamp_offsets[32 + 32 + 4];
+-	bool live_max_clamp_regs[32 + 32 + 4];
++	uint32_t live_min_clamp_offsets[LIVE_REG_COUNT];
++	bool live_max_clamp_regs[LIVE_REG_COUNT];
++	uint32_t live_immediates[LIVE_REG_COUNT];
+ 
+ 	/* Bitfield of which IPs are used as branch targets.
+ 	 *
+@@ -66,6 +69,20 @@ struct vc4_shader_validation_state {
+ 	 * points and clearing the texturing/clamping state.
+ 	 */
+ 	unsigned long *branch_targets;
++
++	/* Set when entering a basic block, and cleared when the uniform
++	 * address update is found.  This is used to make sure that we don't
++	 * read uniforms when the address is undefined.
++	 */
++	bool needs_uniform_address_update;
++
++	/* Set when we find a backwards branch.  If the branch is backwards,
++	 * the taraget is probably doing an address reset to read uniforms,
++	 * and so we need to be sure that a uniforms address is present in the
++	 * stream, even if the shader didn't need to read uniforms in later
++	 * basic blocks.
++	 */
++	bool needs_uniform_address_for_loop;
+ };
+ 
+ static uint32_t
+@@ -227,8 +244,14 @@ check_tmu_write(struct vc4_validated_sha
+ 	/* Since direct uses a RADDR uniform reference, it will get counted in
+ 	 * check_instruction_reads()
+ 	 */
+-	if (!is_direct)
++	if (!is_direct) {
++		if (validation_state->needs_uniform_address_update) {
++			DRM_ERROR("Texturing with undefined uniform address\n");
++			return false;
++		}
++
+ 		validated_shader->uniforms_size += 4;
++	}
+ 
+ 	if (submit) {
+ 		if (!record_texture_sample(validated_shader,
+@@ -242,6 +265,98 @@ check_tmu_write(struct vc4_validated_sha
+ 	return true;
+ }
+ 
++static bool require_uniform_address_uniform(struct vc4_validated_shader_info *validated_shader)
++{
++	uint32_t o = validated_shader->num_uniform_addr_offsets;
++	uint32_t num_uniforms = validated_shader->uniforms_size / 4;
++
++	validated_shader->uniform_addr_offsets =
++		krealloc(validated_shader->uniform_addr_offsets,
++			 (o + 1) *
++			 sizeof(*validated_shader->uniform_addr_offsets),
++			 GFP_KERNEL);
++	if (!validated_shader->uniform_addr_offsets)
++		return false;
++
++	validated_shader->uniform_addr_offsets[o] = num_uniforms;
++	validated_shader->num_uniform_addr_offsets++;
++
++	return true;
++}
++
++static bool
++validate_uniform_address_write(struct vc4_validated_shader_info *validated_shader,
++			       struct vc4_shader_validation_state *validation_state,
++			       bool is_mul)
++{
++	uint64_t inst = validation_state->shader[validation_state->ip];
++	u32 add_b = QPU_GET_FIELD(inst, QPU_ADD_B);
++	u32 raddr_a = QPU_GET_FIELD(inst, QPU_RADDR_A);
++	u32 raddr_b = QPU_GET_FIELD(inst, QPU_RADDR_B);
++	u32 add_lri = raddr_add_a_to_live_reg_index(inst);
++	/* We want our reset to be pointing at whatever uniform follows the
++	 * uniforms base address.
++	 */
++	u32 expected_offset = validated_shader->uniforms_size + 4;
++
++	/* We only support absolute uniform address changes, and we
++	 * require that they be in the current basic block before any
++	 * of its uniform reads.
++	 *
++	 * One could potentially emit more efficient QPU code, by
++	 * noticing that (say) an if statement does uniform control
++	 * flow for all threads and that the if reads the same number
++	 * of uniforms on each side.  However, this scheme is easy to
++	 * validate so it's all we allow for now.
++	 */
++
++	if (QPU_GET_FIELD(inst, QPU_SIG) != QPU_SIG_NONE) {
++		DRM_ERROR("uniforms address change must be "
++			  "normal math\n");
++		return false;
++	}
++
++	if (is_mul || QPU_GET_FIELD(inst, QPU_OP_ADD) != QPU_A_ADD) {
++		DRM_ERROR("Uniform address reset must be an ADD.\n");
++		return false;
++	}
++
++	if (QPU_GET_FIELD(inst, QPU_COND_ADD) != QPU_COND_ALWAYS) {
++		DRM_ERROR("Uniform address reset must be unconditional.\n");
++		return false;
++	}
++
++	if (QPU_GET_FIELD(inst, QPU_PACK) != QPU_PACK_A_NOP &&
++	    !(inst & QPU_PM)) {
++		DRM_ERROR("No packing allowed on uniforms reset\n");
++		return false;
++	}
++
++	if (add_lri == -1) {
++		DRM_ERROR("First argument of uniform address write must be "
++			  "an immediate value.\n");
++		return false;
++	}
++
++	if (validation_state->live_immediates[add_lri] != expected_offset) {
++		DRM_ERROR("Resetting uniforms with offset %db instead of %db\n",
++			  validation_state->live_immediates[add_lri],
++			  expected_offset);
++		return false;
++	}
++
++	if (!(add_b == QPU_MUX_A && raddr_a == QPU_R_UNIF) &&
++	    !(add_b == QPU_MUX_B && raddr_b == QPU_R_UNIF)) {
++		DRM_ERROR("Second argument of uniform address write must be "
++			  "a uniform.\n");
++		return false;
++	}
++
++	validation_state->needs_uniform_address_update = false;
++	validation_state->needs_uniform_address_for_loop = false;
++	return require_uniform_address_uniform(validated_shader);
++}
++
+ static bool
+ check_reg_write(struct vc4_validated_shader_info *validated_shader,
+ 		struct vc4_shader_validation_state *validation_state,
+@@ -251,14 +366,37 @@ check_reg_write(struct vc4_validated_sha
+ 	uint32_t waddr = (is_mul ?
+ 			  QPU_GET_FIELD(inst, QPU_WADDR_MUL) :
+ 			  QPU_GET_FIELD(inst, QPU_WADDR_ADD));
++	uint32_t sig = QPU_GET_FIELD(inst, QPU_SIG);
++	bool ws = inst & QPU_WS;
++	bool is_b = is_mul ^ ws;
++	u32 lri = waddr_to_live_reg_index(waddr, is_b);
++
++	if (lri != -1) {
++		uint32_t cond_add = QPU_GET_FIELD(inst, QPU_COND_ADD);
++		uint32_t cond_mul = QPU_GET_FIELD(inst, QPU_COND_MUL);
++
++		if (sig == QPU_SIG_LOAD_IMM &&
++		    QPU_GET_FIELD(inst, QPU_PACK) == QPU_PACK_A_NOP &&
++		    ((is_mul && cond_mul == QPU_COND_ALWAYS) ||
++		     (!is_mul && cond_add == QPU_COND_ALWAYS))) {
++			validation_state->live_immediates[lri] =
++				QPU_GET_FIELD(inst, QPU_LOAD_IMM);
++		} else {
++			validation_state->live_immediates[lri] = ~0;
++		}
++	}
+ 
+ 	switch (waddr) {
+ 	case QPU_W_UNIFORMS_ADDRESS:
+-		/* XXX: We'll probably need to support this for reladdr, but
+-		 * it's definitely a security-related one.
+-		 */
+-		DRM_ERROR("uniforms address load unsupported\n");
+-		return false;
++		if (is_b) {
++			DRM_ERROR("relative uniforms address change "
++				  "unsupported\n");
++			return false;
++		}
++
++		return validate_uniform_address_write(validated_shader,
++						      validation_state,
++						      is_mul);
+ 
+ 	case QPU_W_TLB_COLOR_MS:
+ 	case QPU_W_TLB_COLOR_ALL:
+@@ -406,9 +544,35 @@ check_instruction_writes(struct vc4_vali
+ }
+ 
+ static bool
+-check_instruction_reads(uint64_t inst,
+-			struct vc4_validated_shader_info *validated_shader)
++check_branch(uint64_t inst,
++	     struct vc4_validated_shader_info *validated_shader,
++	     struct vc4_shader_validation_state *validation_state,
++	     int ip)
+ {
++	int32_t branch_imm = QPU_GET_FIELD(inst, QPU_BRANCH_TARGET);
++	uint32_t waddr_add = QPU_GET_FIELD(inst, QPU_WADDR_ADD);
++	uint32_t waddr_mul = QPU_GET_FIELD(inst, QPU_WADDR_MUL);
++
++	if ((int)branch_imm < 0)
++		validation_state->needs_uniform_address_for_loop = true;
++
++	/* We don't want to have to worry about validation of this, and
++	 * there's no need for it.
++	 */
++	if (waddr_add != QPU_W_NOP || waddr_mul != QPU_W_NOP) {
++		DRM_ERROR("branch instruction at %d wrote a register.\n",
++			  validation_state->ip);
++		return false;
++	}
++
++	return true;
++}
++
++static bool
++check_instruction_reads(struct vc4_validated_shader_info *validated_shader,
++			struct vc4_shader_validation_state *validation_state)
++{
++	uint64_t inst = validation_state->shader[validation_state->ip];
+ 	uint32_t raddr_a = QPU_GET_FIELD(inst, QPU_RADDR_A);
+ 	uint32_t raddr_b = QPU_GET_FIELD(inst, QPU_RADDR_B);
+ 	uint32_t sig = QPU_GET_FIELD(inst, QPU_SIG);
+@@ -420,6 +584,12 @@ check_instruction_reads(uint64_t inst,
+ 		 * already be OOM.
+ 		 */
+ 		validated_shader->uniforms_size += 4;
++
++		if (validation_state->needs_uniform_address_update) {
++			DRM_ERROR("Uniform read with undefined uniform "
++				  "address\n");
++			return false;
++		}
+ 	}
+ 
+ 	return true;
+@@ -516,6 +686,65 @@ vc4_validate_branches(struct vc4_shader_
+ 	return true;
+ }
+ 
++/* Resets any known state for the shader, used when we may be branched to from
++ * multiple locations in the program (or at shader start).
++ */
++static void
++reset_validation_state(struct vc4_shader_validation_state *validation_state)
++{
++	int i;
++
++	for (i = 0; i < 8; i++)
++		validation_state->tmu_setup[i / 4].p_offset[i % 4] = ~0;
++
++	for (i = 0; i < LIVE_REG_COUNT; i++) {
++		validation_state->live_min_clamp_offsets[i] = ~0;
++		validation_state->live_max_clamp_regs[i] = false;
++		validation_state->live_immediates[i] = ~0;
++	}
++}
++
++static bool
++texturing_in_progress(struct vc4_shader_validation_state *validation_state)
++{
++	return (validation_state->tmu_write_count[0] != 0 ||
++		validation_state->tmu_write_count[1] != 0);
++}
++
++static bool
++vc4_handle_branch_target(struct vc4_shader_validation_state *validation_state)
++{
++	uint32_t ip = validation_state->ip;
++
++	if (!test_bit(ip, validation_state->branch_targets))
++		return true;
++
++	if (texturing_in_progress(validation_state)) {
++		DRM_ERROR("Branch target landed during TMU setup\n");
++		return false;
++	}
++
++	/* Reset our live values tracking, since this instruction may have
++	 * multiple predecessors.
++	 *
++	 * One could potentially do analysis to determine that, for
++	 * example, all predecessors have a live max clamp in the same
++	 * register, but we don't bother with that.
++	 */
++	reset_validation_state(validation_state);
++
++	/* Since we've entered a basic block from potentially multiple
++	 * predecessors, we need the uniforms address to be updated before any
++	 * unforms are read.  We require that after any branch point, the next
++	 * uniform to be loaded is a uniform address offset.  That uniform's
++	 * offset will be marked by the uniform address register write
++	 * validation, or a one-off the end-of-program check.
++	 */
++	validation_state->needs_uniform_address_update = true;
++
++	return true;
++}
++
+ struct vc4_validated_shader_info *
+ vc4_validate_shader(struct drm_gem_cma_object *shader_obj)
+ {
+@@ -524,16 +753,12 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 	uint32_t ip;
+ 	struct vc4_validated_shader_info *validated_shader = NULL;
+ 	struct vc4_shader_validation_state validation_state;
+-	int i;
+ 
+ 	memset(&validation_state, 0, sizeof(validation_state));
+ 	validation_state.shader = shader_obj->vaddr;
+ 	validation_state.max_ip = shader_obj->base.size / sizeof(uint64_t);
+ 
+-	for (i = 0; i < 8; i++)
+-		validation_state.tmu_setup[i / 4].p_offset[i % 4] = ~0;
+-	for (i = 0; i < ARRAY_SIZE(validation_state.live_min_clamp_offsets); i++)
+-		validation_state.live_min_clamp_offsets[i] = ~0;
++	reset_validation_state(&validation_state);
+ 
+ 	validation_state.branch_targets =
+ 		kcalloc(BITS_TO_LONGS(validation_state.max_ip),
+@@ -554,6 +779,9 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 
+ 		validation_state.ip = ip;
+ 
++		if (!vc4_handle_branch_target(&validation_state))
++			goto fail;
++
+ 		switch (sig) {
+ 		case QPU_SIG_NONE:
+ 		case QPU_SIG_WAIT_FOR_SCOREBOARD:
+@@ -569,7 +797,8 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 				goto fail;
+ 			}
+ 
+-			if (!check_instruction_reads(inst, validated_shader))
++			if (!check_instruction_reads(validated_shader,
++						     &validation_state))
+ 				goto fail;
+ 
+ 			if (sig == QPU_SIG_PROG_END) {
+@@ -587,6 +816,11 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 			}
+ 			break;
+ 
++		case QPU_SIG_BRANCH:
++			if (!check_branch(inst, validated_shader,
++					  &validation_state, ip))
++				goto fail;
++			break;
+ 		default:
+ 			DRM_ERROR("Unsupported QPU signal %d at "
+ 				  "instruction %d\n", sig, ip);
+@@ -607,6 +841,21 @@ vc4_validate_shader(struct drm_gem_cma_o
+ 		goto fail;
+ 	}
+ 
++	/* If we did a backwards branch and we haven't emitted a uniforms
++	 * reset since then, we still need the uniforms stream to have the
++	 * uniforms address available so that the backwards branch can do its
++	 * uniforms reset.
++	 *
++	 * We could potentially prove that the backwards branch doesn't
++	 * contain any uses of uniforms until program exit, but that doesn't
++	 * seem to be worth the trouble.
++	 */
++	if (validation_state.needs_uniform_address_for_loop) {
++		if (!require_uniform_address_uniform(validated_shader))
++			goto fail;
++		validated_shader->uniforms_size += 4;
++	}
++
+ 	/* Again, no chance of integer overflow here because the worst case
+ 	 * scenario is 8 bytes of uniforms plus handles per 8-byte
+ 	 * instruction.
diff --git a/target/linux/brcm2708/patches-4.4/0480-drm-vc4-Add-a-getparam-to-signal-support-for-branche.patch b/target/linux/brcm2708/patches-4.4/0480-drm-vc4-Add-a-getparam-to-signal-support-for-branche.patch
new file mode 100644
index 0000000..63c0445
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0480-drm-vc4-Add-a-getparam-to-signal-support-for-branche.patch
@@ -0,0 +1,38 @@
+From f6b1410aedc0c8d04363a930fd70509e30e23eeb Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Sat, 2 Jul 2016 14:14:27 -0700
+Subject: [PATCH] drm/vc4: Add a getparam to signal support for branches.
+
+Userspace needs to know if it can create shaders that do branching.
+Otherwise, for backwards compatibility with old kernels it needs to
+lower if statements to conditional assignments.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit 7363cee5b467c31dc3af2ac98df0634bb8bbc668)
+---
+ drivers/gpu/drm/vc4/vc4_drv.c | 3 +++
+ include/uapi/drm/vc4_drm.h    | 1 +
+ 2 files changed, 4 insertions(+)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.c
++++ b/drivers/gpu/drm/vc4/vc4_drv.c
+@@ -97,6 +97,9 @@ static int vc4_get_param_ioctl(struct dr
+ 		args->value = V3D_READ(V3D_IDENT2);
+ 		pm_runtime_put(&vc4->v3d->pdev->dev);
+ 		break;
++	case DRM_VC4_PARAM_SUPPORTS_BRANCHES:
++		args->value = true;
++		break;
+ 	default:
+ 		DRM_DEBUG("Unknown parameter %d\n", args->param);
+ 		return -EINVAL;
+--- a/include/uapi/drm/vc4_drm.h
++++ b/include/uapi/drm/vc4_drm.h
+@@ -285,6 +285,7 @@ struct drm_vc4_get_hang_state {
+ #define DRM_VC4_PARAM_V3D_IDENT0		0
+ #define DRM_VC4_PARAM_V3D_IDENT1		1
+ #define DRM_VC4_PARAM_V3D_IDENT2		2
++#define DRM_VC4_PARAM_SUPPORTS_BRANCHES		3
+ 
+ struct drm_vc4_get_param {
+ 	__u32 param;
diff --git a/target/linux/brcm2708/patches-4.4/0481-drm-vc4-Don-t-force-new-binner-overflow-allocation-p.patch b/target/linux/brcm2708/patches-4.4/0481-drm-vc4-Don-t-force-new-binner-overflow-allocation-p.patch
new file mode 100644
index 0000000..716961e
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0481-drm-vc4-Don-t-force-new-binner-overflow-allocation-p.patch
@@ -0,0 +1,28 @@
+From 033049599046df7c51b605b24224bbce6d60c762 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Tue, 2 Aug 2016 17:17:52 -0700
+Subject: [PATCH] drm/vc4: Don't force new binner overflow allocation per draw.
+
+This came from the initial bringup code, which always idled the GPU
+and always reset the overflow.  That massively increases the size of
+the working set when you're doing lots of small draws, though, as is
+common on X desktops or piglit.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+---
+ drivers/gpu/drm/vc4/vc4_gem.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_gem.c
++++ b/drivers/gpu/drm/vc4/vc4_gem.c
+@@ -435,10 +435,6 @@ again:
+ 
+ 	vc4_flush_caches(dev);
+ 
+-	/* Disable the binner's pre-loaded overflow memory address */
+-	V3D_WRITE(V3D_BPOA, 0);
+-	V3D_WRITE(V3D_BPOS, 0);
+-
+ 	/* Either put the job in the binner if it uses the binner, or
+ 	 * immediately move it to the to-be-rendered queue.
+ 	 */
diff --git a/target/linux/brcm2708/patches-4.4/0482-drm-vc4-Use-drm_free_large-on-handles-to-match-its-a.patch b/target/linux/brcm2708/patches-4.4/0482-drm-vc4-Use-drm_free_large-on-handles-to-match-its-a.patch
new file mode 100644
index 0000000..2975c9b
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0482-drm-vc4-Use-drm_free_large-on-handles-to-match-its-a.patch
@@ -0,0 +1,27 @@
+From 60db7ffd6d4ace445eb56659c6e700ee9494b846 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Tue, 19 Jul 2016 11:31:19 -0700
+Subject: [PATCH] drm/vc4: Use drm_free_large() on handles to match its
+ allocation.
+
+If you managed to exceed the limit to switch to vmalloc, we'd use the
+wrong free.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
+Cc: stable at vger.kernel.org
+---
+ drivers/gpu/drm/vc4/vc4_gem.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_gem.c
++++ b/drivers/gpu/drm/vc4/vc4_gem.c
+@@ -584,7 +584,7 @@ vc4_cl_lookup_bos(struct drm_device *dev
+ 	spin_unlock(&file_priv->table_lock);
+ 
+ fail:
+-	kfree(handles);
++	drm_free_large(handles);
+ 	return 0;
+ }
+ 
diff --git a/target/linux/brcm2708/patches-4.4/0483-drm-vc4-Fix-oops-when-userspace-hands-in-a-bad-BO.patch b/target/linux/brcm2708/patches-4.4/0483-drm-vc4-Fix-oops-when-userspace-hands-in-a-bad-BO.patch
new file mode 100644
index 0000000..00b1511
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0483-drm-vc4-Fix-oops-when-userspace-hands-in-a-bad-BO.patch
@@ -0,0 +1,26 @@
+From 6d3d23c57b33d76f0b4f01221593182c0de34ef4 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Mon, 25 Jul 2016 16:10:04 -0700
+Subject: [PATCH] drm/vc4: Fix oops when userspace hands in a bad BO.
+
+We'd end up NULL pointer dereferencing because we didn't take the
+error path out in the parent.  Fixes igt vc4_lookup_fail test.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
+Cc: stable at vger.kernel.org
+---
+ drivers/gpu/drm/vc4/vc4_gem.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_gem.c
++++ b/drivers/gpu/drm/vc4/vc4_gem.c
+@@ -585,7 +585,7 @@ vc4_cl_lookup_bos(struct drm_device *dev
+ 
+ fail:
+ 	drm_free_large(handles);
+-	return 0;
++	return ret;
+ }
+ 
+ static int
diff --git a/target/linux/brcm2708/patches-4.4/0484-drm-vc4-Fix-overflow-mem-unreferencing-when-the-binn.patch b/target/linux/brcm2708/patches-4.4/0484-drm-vc4-Fix-overflow-mem-unreferencing-when-the-binn.patch
new file mode 100644
index 0000000..c136742
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0484-drm-vc4-Fix-overflow-mem-unreferencing-when-the-binn.patch
@@ -0,0 +1,57 @@
+From 379b5d818939dc58742278f744b60241a577568d Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric at anholt.net>
+Date: Thu, 21 Jul 2016 13:39:11 -0700
+Subject: [PATCH] drm/vc4: Fix overflow mem unreferencing when the binner runs
+ dry.
+
+Overflow memory handling is tricky: While it's still referenced by the
+BPO registers, we want to keep it from being freed.  When we are
+putting a new set of overflow memory in the registers, we need to
+assign the old one to the last rendering job using it.
+
+We were looking at "what's currently running in the binner", but since
+the bin/render submission split, we may end up with the binner
+completing and having no new job while the renderer is still
+processing.  So, if we don't find a bin job at all, look at the
+highest-seqno (last) render job to attach our overflow to.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Fixes: ca26d28bbaa3 ("drm/vc4: improve throughput by pipelining binning and rendering jobs")
+Cc: stable at vger.kernel.org
+---
+ drivers/gpu/drm/vc4/vc4_drv.h | 9 +++++++++
+ drivers/gpu/drm/vc4/vc4_irq.c | 4 +++-
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_drv.h
++++ b/drivers/gpu/drm/vc4/vc4_drv.h
+@@ -329,6 +329,15 @@ vc4_first_render_job(struct vc4_dev *vc4
+ 				struct vc4_exec_info, head);
+ }
+ 
++static inline struct vc4_exec_info *
++vc4_last_render_job(struct vc4_dev *vc4)
++{
++	if (list_empty(&vc4->render_job_list))
++		return NULL;
++	return list_last_entry(&vc4->render_job_list,
++			       struct vc4_exec_info, head);
++}
++
+ /**
+  * struct vc4_texture_sample_info - saves the offsets into the UBO for texture
+  * setup parameters.
+--- a/drivers/gpu/drm/vc4/vc4_irq.c
++++ b/drivers/gpu/drm/vc4/vc4_irq.c
+@@ -83,8 +83,10 @@ vc4_overflow_mem_work(struct work_struct
+ 
+ 		spin_lock_irqsave(&vc4->job_lock, irqflags);
+ 		current_exec = vc4_first_bin_job(vc4);
++		if (!current_exec)
++			current_exec = vc4_last_render_job(vc4);
+ 		if (current_exec) {
+-			vc4->overflow_mem->seqno = vc4->finished_seqno + 1;
++			vc4->overflow_mem->seqno = current_exec->seqno;
+ 			list_add_tail(&vc4->overflow_mem->unref_head,
+ 				      &current_exec->unref_list);
+ 			vc4->overflow_mem = NULL;
diff --git a/target/linux/brcm2708/patches-4.4/0485-config-Enable-SERIAL_SC16IS7XX_SPI.patch b/target/linux/brcm2708/patches-4.4/0485-config-Enable-SERIAL_SC16IS7XX_SPI.patch
new file mode 100644
index 0000000..c780c9a
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0485-config-Enable-SERIAL_SC16IS7XX_SPI.patch
@@ -0,0 +1,33 @@
+From 6032b4e7060993a3a32b2e2a26c62ce0dd79a7fb Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Thu, 18 Aug 2016 17:36:39 +0100
+Subject: [PATCH] config: Enable SERIAL_SC16IS7XX_SPI
+
+Previously only the I2C mode was supported.
+
+See: https://github.com/raspberrypi/linux/issues/1594
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig  | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -601,6 +601,7 @@ CONFIG_SERIAL_AMBA_PL011=y
+ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+ CONFIG_SERIAL_OF_PLATFORM=y
+ CONFIG_SERIAL_SC16IS7XX=m
++CONFIG_SERIAL_SC16IS7XX_SPI=y
+ CONFIG_TTY_PRINTK=y
+ CONFIG_HW_RANDOM=y
+ CONFIG_RAW_DRIVER=y
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -594,6 +594,7 @@ CONFIG_SERIAL_AMBA_PL011=y
+ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+ CONFIG_SERIAL_OF_PLATFORM=y
+ CONFIG_SERIAL_SC16IS7XX=m
++CONFIG_SERIAL_SC16IS7XX_SPI=y
+ CONFIG_TTY_PRINTK=y
+ CONFIG_HW_RANDOM=y
+ CONFIG_RAW_DRIVER=y
diff --git a/target/linux/brcm2708/patches-4.4/0486-Overlay-for-Microchip-MCP23S08-17-SPI-gpio-expanders.patch b/target/linux/brcm2708/patches-4.4/0486-Overlay-for-Microchip-MCP23S08-17-SPI-gpio-expanders.patch
new file mode 100644
index 0000000..cd54783
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0486-Overlay-for-Microchip-MCP23S08-17-SPI-gpio-expanders.patch
@@ -0,0 +1,791 @@
+From bd7c2eac2ada8f60058768b00935cdfe010720a5 Mon Sep 17 00:00:00 2001
+From: wavelet2 <a3d35232 at btinternet.com>
+Date: Fri, 19 Aug 2016 09:32:53 +0100
+Subject: [PATCH] Overlay for Microchip MCP23S08/17 SPI gpio expanders  (#1566)
+
+Added Overlay for Microchip MCP23S08/17 SPI gpio expanders
+---
+ arch/arm/boot/dts/overlays/Makefile             |   1 +
+ arch/arm/boot/dts/overlays/README               |  24 +
+ arch/arm/boot/dts/overlays/mcp23s17-overlay.dts | 732 ++++++++++++++++++++++++
+ 3 files changed, 757 insertions(+)
+ create mode 100644 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
+
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -49,6 +49,7 @@ dtbo-$(RPI_DT_OVERLAYS) += justboom-dac.
+ dtbo-$(RPI_DT_OVERLAYS) += justboom-digi.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += lirc-rpi.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += mcp23017.dtbo
++dtbo-$(RPI_DT_OVERLAYS) += mcp23s17.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can0.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can1.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += mmc.dtbo
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -628,6 +628,30 @@ Params: gpiopin                 Gpio pin
+         addr                    I2C address of the MCP23017 (default: 0x20)
+ 
+ 
++Name:   mcp23s17
++Info:   Configures the MCP23S08/17 SPI GPIO expanders.
++        If devices are present on SPI1 or SPI2, those interfaces must be enabled
++        with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
++        If interrupts are enabled for a device on a given CS# on a SPI bus, that
++        device must be the only one present on that SPI bus/CS#.
++Load:   dtoverlay=mcp23s17,<param>=<val>
++Params: s08-spi<n>-<m>-present  4-bit integer, bitmap indicating MCP23S08
++                                devices present on SPI<n>, CS#<m>
++
++        s17-spi<n>-<m>-present  8-bit integer, bitmap indicating MCP23S17
++                                devices present on SPI<n>, CS#<m>
++
++        s08-spi<n>-<m>-int-gpio integer, enables interrupts on a single
++                                MCP23S08 device on SPI<n>, CS#<m>, specifies
++                                the GPIO pin to which INT output of MCP23S08
++                                is connected.
++
++        s17-spi<n>-<m>-int-gpio integer, enables mirrored interrupts on a
++                                single MCP23S17 device on SPI<n>, CS#<m>,
++                                specifies the GPIO pin to which either INTA
++                                or INTB output of MCP23S17 is connected.
++
++
+ Name:   mcp2515-can0
+ Info:   Configures the MCP2515 CAN controller on spi0.0
+ Load:   dtoverlay=mcp2515-can0,<param>=<val>
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
+@@ -0,0 +1,732 @@
++// Overlay for MCP23S08/17 GPIO Extenders from Microchip Semiconductor
++
++// dtparams:
++//     s08-spi<n>-<m>-present  - 4-bit integer, bitmap indicating MCP23S08 devices present on SPI<n>, CS#<m>.
++//     s17-spi<n>-<m>-present  - 8-bit integer, bitmap indicating MCP23S17 devices present on SPI<n>, CS#<m>.
++//     s08-spi<n>-<m>-int-gpio - integer, enables interrupts on a single MCP23S08 device on SPI<n>, CS#<m>, specifies the GPIO pin to which INT output is connected.
++//     s17-spi<n>-<m>-int-gpio - integer, enables mirrored interrupts on a single MCP23S17 device on SPI<n>, CS#<m>, specifies the GPIO pin to which either INTA or INTB output is connected.
++//
++// If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
++// If interrupts are enabled for a device on a given CS# on a SPI bus, that device must be the only one present on that SPI bus/CS#.
++//
++// Example 1: A single MCP23S17 device on SPI0, CS#0 with its SPI addr set to 0 and INTA output connected to GPIO25:
++// dtoverlay=mcp23s17:s17-spi0-0-present=1,s17-spi0-0-int-gpio=25
++//
++// Example 2: Two MCP23S08 devices on SPI1, CS#0 with their addrs set to 2 and 3. Three MCP23S17 devices on SPI1, CS#1 with their addrs set to 0, 1 and 7:
++// dtoverlay=spi1-2cs
++// dtoverlay=mcp23s17:s08-spi1-0-present=12,s17-spi1-1-present=131
++
++/dts-v1/;
++/plugin/;
++
++/ {
++	compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
++
++	// disable spi-dev on spi0.0
++	fragment at 0 {
++		target = <&spidev0>;
++		__dormant__ {
++			status = "disabled";
++		};
++	};
++
++	// disable spi-dev on spi0.1
++	fragment at 1 {
++		target = <&spidev1>;
++		__dormant__ {
++			status = "disabled";
++		};
++	};
++
++	// disable spi-dev on spi1.0
++	fragment at 2 {
++		target-path = "spi1/spidev at 0";
++		__dormant__ {
++			status = "disabled";
++		};
++	};
++
++	// disable spi-dev on spi1.1
++	fragment at 3 {
++		target-path = "spi1/spidev at 1";
++		__dormant__ {
++			status = "disabled";
++		};
++	};
++
++	// disable spi-dev on spi1.2
++	fragment at 4 {
++		target-path = "spi1/spidev at 2";
++		__dormant__ {
++			status = "disabled";
++		};
++	};
++
++	// disable spi-dev on spi2.0
++	fragment at 5 {
++		target-path = "spi2/spidev at 0";
++		__dormant__ {
++			status = "disabled";
++		};
++	};
++
++	// disable spi-dev on spi2.1
++	fragment at 6 {
++		target-path = "spi2/spidev at 1";
++		__dormant__ {
++			status = "disabled";
++		};
++	};
++
++	// disable spi-dev on spi2.2
++	fragment at 7 {
++		target-path = "spi2/spidev at 2";
++		__dormant__ {
++			status = "disabled";
++		};
++	};
++
++	// enable one or more mcp23s08s on spi0.0
++	fragment at 8 {
++		target = <&spi0>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s08_00: mcp23s08 at 0 {
++				compatible = "microchip,mcp23s08";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s08-spi0-0-present parameter */
++     				reg = <0>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s08-spi0-0-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s08s on spi0.1
++	fragment at 9 {
++		target = <&spi0>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s08_01: mcp23s08 at 1 {
++				compatible = "microchip,mcp23s08";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s08-spi0-1-present parameter */
++     				reg = <1>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s08-spi0-1-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s08s on spi1.0
++	fragment at 10 {
++		target = <&spi1>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s08_10: mcp23s08 at 0 {
++				compatible = "microchip,mcp23s08";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s08-spi1-0-present parameter */
++     				reg = <0>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s08-spi1-0-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s08s on spi1.1
++	fragment at 11 {
++		target = <&spi1>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s08_11: mcp23s08 at 1 {
++				compatible = "microchip,mcp23s08";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s08-spi1-1-present parameter */
++     				reg = <1>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s08-spi1-1-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s08s on spi1.2
++	fragment at 12 {
++		target = <&spi1>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s08_12: mcp23s08 at 2 {
++				compatible = "microchip,mcp23s08";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s08-spi1-2-present parameter */
++     				reg = <2>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s08-spi1-2-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s08s on spi2.0
++	fragment at 13 {
++		target = <&spi2>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s08_20: mcp23s08 at 0 {
++				compatible = "microchip,mcp23s08";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s08-spi2-0-present parameter */
++     				reg = <0>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s08-spi2-0-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s08s on spi2.1
++	fragment at 14 {
++		target = <&spi2>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s08_21: mcp23s08 at 1 {
++				compatible = "microchip,mcp23s08";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s08-spi2-1-present parameter */
++     				reg = <1>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s08-spi2-1-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s08s on spi2.2
++	fragment at 15 {
++		target = <&spi2>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s08_22: mcp23s08 at 2 {
++				compatible = "microchip,mcp23s08";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s08-spi2-2-present parameter */
++     				reg = <2>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s08-spi2-2-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s17s on spi0.0
++	fragment at 16 {
++		target = <&spi0>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s17_00: mcp23s17 at 0 {
++				compatible = "microchip,mcp23s17";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s17-spi0-0-present parameter */
++     				reg = <0>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s17-spi0-0-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s17s on spi0.1
++	fragment at 17 {
++		target = <&spi0>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s17_01: mcp23s17 at 1 {
++				compatible = "microchip,mcp23s17";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s17-spi0-1-present parameter */
++     				reg = <1>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s17-spi0-1-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s17s on spi1.0
++	fragment at 18 {
++		target = <&spi1>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s17_10: mcp23s17 at 0 {
++				compatible = "microchip,mcp23s17";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s17-spi1-0-present parameter */
++     				reg = <0>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s17-spi1-0-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s17s on spi1.1
++	fragment at 19 {
++		target = <&spi1>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s17_11: mcp23s17 at 1 {
++				compatible = "microchip,mcp23s17";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s17-spi1-1-present parameter */
++     				reg = <1>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s17-spi1-1-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s17s on spi1.2
++	fragment at 20 {
++		target = <&spi1>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s17_12: mcp23s17 at 2 {
++				compatible = "microchip,mcp23s17";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s17-spi1-2-present parameter */
++     				reg = <2>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s17-spi1-2-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s17s on spi2.0
++	fragment at 21 {
++		target = <&spi2>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s17_20: mcp23s17 at 0 {
++				compatible = "microchip,mcp23s17";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s17-spi2-0-present parameter */
++     				reg = <0>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s17-spi2-0-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s17s on spi2.1
++	fragment at 22 {
++		target = <&spi2>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s17_21: mcp23s17 at 1 {
++				compatible = "microchip,mcp23s17";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s17-spi2-1-present parameter */
++     				reg = <1>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s17-spi2-1-int-gpio parameter */
++			};
++		};
++	};
++
++	// enable one or more mcp23s17s on spi2.2
++	fragment at 23 {
++		target = <&spi2>;
++		__dormant__ {
++			status = "okay";
++                        #address-cells = <1>;
++                        #size-cells = <0>;
++			mcp23s17_22: mcp23s17 at 2 {
++				compatible = "microchip,mcp23s17";
++  				gpio-controller;
++  				#gpio-cells = <2>;
++    				microchip,spi-present-mask = <0x00>;  /* overwritten by mcp23s17-spi2-2-present parameter */
++     				reg = <2>;
++    				spi-max-frequency = <500000>;
++				status = "okay";
++				#interrupt-cells=<2>;
++				interrupts = <0 2>;  /* 1st word overwritten by mcp23s17-spi2-2-int-gpio parameter */
++			};
++		};
++	};
++
++	// Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.0 as a input with no pull-up/down
++	fragment at 24 {
++		target = <&gpio>;
++		__dormant__ {
++			spi0_0_int_pins: spi0_0_int_pins {
++				brcm,pins = <0>;  /* overwritten by mcp23s08/17-spi0-0-int-gpio parameter */
++				brcm,function = <0>;
++				brcm,pull = <0>;
++			};
++		};
++	};
++
++	// Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.1 as a input with no pull-up/down
++	fragment at 25 {
++		target = <&gpio>;
++		__dormant__ {
++			spi0_1_int_pins: spi0_1_int_pins {
++				brcm,pins = <0>;  /* overwritten by mcp23s08/17-spi0-1-int-gpio parameter */
++				brcm,function = <0>;
++				brcm,pull = <0>;
++			};
++		};
++	};
++
++	// Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.0 as a input with no pull-up/down
++	fragment at 26 {
++		target = <&gpio>;
++		__dormant__ {
++			spi1_0_int_pins: spi1_0_int_pins {
++				brcm,pins = <0>;  /* overwritten by mcp23s08/17-spi1-0-int-gpio parameter */
++				brcm,function = <0>;
++				brcm,pull = <0>;
++			};
++		};
++	};
++
++	// Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.1 as a input with no pull-up/down
++	fragment at 27 {
++		target = <&gpio>;
++		__dormant__ {
++			spi1_1_int_pins: spi1_1_int_pins {
++				brcm,pins = <0>;  /* overwritten by mcp23s08/17-spi1-1-int-gpio parameter */
++				brcm,function = <0>;
++				brcm,pull = <0>;
++			};
++		};
++	};
++
++	// Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.2 as a input with no pull-up/down
++	fragment at 28 {
++		target = <&gpio>;
++		__dormant__ {
++			spi1_2_int_pins: spi1_2_int_pins {
++				brcm,pins = <0>;  /* overwritten by mcp23s08/17-spi1-2-int-gpio parameter */
++				brcm,function = <0>;
++				brcm,pull = <0>;
++			};
++		};
++	};
++
++	// Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.0 as a input with no pull-up/down
++	fragment at 29 {
++		target = <&gpio>;
++		__dormant__ {
++			spi2_0_int_pins: spi2_0_int_pins {
++				brcm,pins = <0>;  /* overwritten by mcp23s08/17-spi2-0-int-gpio parameter */
++				brcm,function = <0>;
++				brcm,pull = <0>;
++			};
++		};
++	};
++
++	// Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.1 as a input with no pull-up/down
++	fragment at 30 {
++		target = <&gpio>;
++		__dormant__ {
++			spi2_1_int_pins: spi2_1_int_pins {
++				brcm,pins = <0>;  /* overwritten by mcp23s08/17-spi2-1-int-gpio parameter */
++				brcm,function = <0>;
++				brcm,pull = <0>;
++			};
++		};
++	};
++
++	// Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.2 as a input with no pull-up/down
++	fragment at 31 {
++		target = <&gpio>;
++		__dormant__ {
++			spi2_2_int_pins: spi2_2_int_pins {
++				brcm,pins = <0>;  /* overwritten by mcp23s08/17-spi2-2-int-gpio parameter */
++				brcm,function = <0>;
++				brcm,pull = <0>;
++			};
++		};
++	};
++
++	// Enable interrupts for a mcp23s08 on spi0.0.
++	// Use default active low interrupt signalling.
++	fragment at 32 {
++		target = <&mcp23s08_00>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++		};
++	};
++
++	// Enable interrupts for a mcp23s08 on spi0.1.
++	// Use default active low interrupt signalling.
++	fragment at 33 {
++		target = <&mcp23s08_01>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++		};
++	};
++
++	// Enable interrupts for a mcp23s08 on spi1.0.
++	// Use default active low interrupt signalling.
++	fragment at 34 {
++		target = <&mcp23s08_10>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++		};
++	};
++
++	// Enable interrupts for a mcp23s08 on spi1.1.
++	// Use default active low interrupt signalling.
++	fragment at 35 {
++		target = <&mcp23s08_11>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++		};
++	};
++
++	// Enable interrupts for a mcp23s08 on spi1.2.
++	// Use default active low interrupt signalling.
++	fragment at 36 {
++		target = <&mcp23s08_12>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++		};
++	};
++
++	// Enable interrupts for a mcp23s08 on spi2.0.
++	// Use default active low interrupt signalling.
++	fragment at 37 {
++		target = <&mcp23s08_20>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++		};
++	};
++
++	// Enable interrupts for a mcp23s08 on spi2.1.
++	// Use default active low interrupt signalling.
++	fragment at 38 {
++		target = <&mcp23s08_21>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++		};
++	};
++
++	// Enable interrupts for a mcp23s08 on spi2.2.
++	// Use default active low interrupt signalling.
++	fragment at 39 {
++		target = <&mcp23s08_22>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++		};
++	};
++
++	// Enable interrupts for a mcp23s17 on spi0.0.
++	// Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
++	// Use default active low interrupt signalling.
++	fragment at 40 {
++		target = <&mcp23s17_00>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++			microchip,irq-mirror;
++		};
++	};
++
++	// Enable interrupts for a mcp23s17 on spi0.1.
++	// Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
++	// Configure INTA/B outputs of mcp23s08/17 as active low.
++	fragment at 41 {
++		target = <&mcp23s17_01>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++			microchip,irq-mirror;
++		};
++	};
++
++	// Enable interrupts for a mcp23s17 on spi1.0.
++	// Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
++	// Configure INTA/B outputs of mcp23s08/17 as active low.
++	fragment at 42 {
++		target = <&mcp23s17_10>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++			microchip,irq-mirror;
++		};
++	};
++
++	// Enable interrupts for a mcp23s17 on spi1.1.
++	// Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
++	// Configure INTA/B outputs of mcp23s08/17 as active low.
++	fragment at 43 {
++		target = <&mcp23s17_11>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++			microchip,irq-mirror;
++		};
++	};
++
++	// Enable interrupts for a mcp23s17 on spi1.2.
++	// Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
++	// Configure INTA/B outputs of mcp23s08/17 as active low.
++	fragment at 44 {
++		target = <&mcp23s17_12>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++			microchip,irq-mirror;
++		};
++	};
++
++	// Enable interrupts for a mcp23s17 on spi2.0.
++	// Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
++	// Configure INTA/B outputs of mcp23s08/17 as active low.
++	fragment at 45 {
++		target = <&mcp23s17_20>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++			microchip,irq-mirror;
++		};
++	};
++
++	// Enable interrupts for a mcp23s17 on spi2.1.
++	// Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
++	// Configure INTA/B outputs of mcp23s08/17 as active low.
++	fragment at 46 {
++		target = <&mcp23s17_21>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++			microchip,irq-mirror;
++		};
++	};
++
++	// Enable interrupts for a mcp23s17 on spi2.2.
++	// Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin.
++	// Configure INTA/B outputs of mcp23s08/17 as active low.
++	fragment at 47 {
++		target = <&mcp23s17_22>;
++		__dormant__ {
++			interrupt-parent = <&gpio>;
++			interrupt-controller;
++			microchip,irq-mirror;
++		};
++	};
++
++	__overrides__ {
++		s08-spi0-0-present = <0>,"+0+8",  <&mcp23s08_00>,"microchip,spi-present-mask:0";
++		s08-spi0-1-present = <0>,"+1+9",  <&mcp23s08_01>,"microchip,spi-present-mask:0";
++		s08-spi1-0-present = <0>,"+2+10", <&mcp23s08_10>,"microchip,spi-present-mask:0";
++		s08-spi1-1-present = <0>,"+3+11", <&mcp23s08_11>,"microchip,spi-present-mask:0";
++		s08-spi1-2-present = <0>,"+4+12", <&mcp23s08_12>,"microchip,spi-present-mask:0";
++		s08-spi2-0-present = <0>,"+5+13", <&mcp23s08_20>,"microchip,spi-present-mask:0";
++		s08-spi2-1-present = <0>,"+6+14", <&mcp23s08_21>,"microchip,spi-present-mask:0";
++		s08-spi2-2-present = <0>,"+7+15", <&mcp23s08_22>,"microchip,spi-present-mask:0";
++		s17-spi0-0-present = <0>,"+0+16", <&mcp23s17_00>,"microchip,spi-present-mask:0";
++		s17-spi0-1-present = <0>,"+1+17", <&mcp23s17_01>,"microchip,spi-present-mask:0";
++		s17-spi1-0-present = <0>,"+2+18", <&mcp23s17_10>,"microchip,spi-present-mask:0";
++		s17-spi1-1-present = <0>,"+3+19", <&mcp23s17_11>,"microchip,spi-present-mask:0";
++		s17-spi1-2-present = <0>,"+4+20", <&mcp23s17_12>,"microchip,spi-present-mask:0";
++		s17-spi2-0-present = <0>,"+5+21", <&mcp23s17_20>,"microchip,spi-present-mask:0";
++		s17-spi2-1-present = <0>,"+6+22", <&mcp23s17_21>,"microchip,spi-present-mask:0";
++		s17-spi2-2-present = <0>,"+7+23", <&mcp23s17_22>,"microchip,spi-present-mask:0";
++		s08-spi0-0-int-gpio = <0>,"+24+32", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s08_00>,"interrupts:0";
++		s08-spi0-1-int-gpio = <0>,"+25+33", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s08_01>,"interrupts:0";
++		s08-spi1-0-int-gpio = <0>,"+26+34", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s08_10>,"interrupts:0";
++		s08-spi1-1-int-gpio = <0>,"+27+35", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s08_11>,"interrupts:0";
++		s08-spi1-2-int-gpio = <0>,"+28+36", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s08_12>,"interrupts:0";
++		s08-spi2-0-int-gpio = <0>,"+29+37", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s08_20>,"interrupts:0";
++		s08-spi2-1-int-gpio = <0>,"+30+38", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s08_21>,"interrupts:0";
++		s08-spi2-2-int-gpio = <0>,"+31+39", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s08_22>,"interrupts:0";
++		s17-spi0-0-int-gpio = <0>,"+24+40", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s17_00>,"interrupts:0";
++		s17-spi0-1-int-gpio = <0>,"+25+41", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s17_01>,"interrupts:0";
++		s17-spi1-0-int-gpio = <0>,"+26+42", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s17_10>,"interrupts:0";
++		s17-spi1-1-int-gpio = <0>,"+27+43", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s17_11>,"interrupts:0";
++		s17-spi1-2-int-gpio = <0>,"+28+44", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s17_12>,"interrupts:0";
++		s17-spi2-0-int-gpio = <0>,"+29+45", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s17_20>,"interrupts:0";
++		s17-spi2-1-int-gpio = <0>,"+30+46", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s17_21>,"interrupts:0";
++		s17-spi2-2-int-gpio = <0>,"+31+47", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s17_22>,"interrupts:0";
++	};
++};
++
diff --git a/target/linux/brcm2708/patches-4.4/0487-BCM270X_DT-Add-audio_pins-to-CM-dtb.patch b/target/linux/brcm2708/patches-4.4/0487-BCM270X_DT-Add-audio_pins-to-CM-dtb.patch
new file mode 100644
index 0000000..1f73e52
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0487-BCM270X_DT-Add-audio_pins-to-CM-dtb.patch
@@ -0,0 +1,24 @@
+From e34eb065a125fae5814256d77c03226a46083f87 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Fri, 19 Aug 2016 11:12:28 +0100
+Subject: [PATCH] BCM270X_DT: Add audio_pins to CM dtb
+
+Bring the CM .dtb in line with other others.
+---
+ arch/arm/boot/dts/bcm2708-rpi-cm.dts | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts
++++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
+@@ -35,6 +35,11 @@
+ 		brcm,pins = <18 19 20 21>;
+ 		brcm,function = <4>; /* alt0 */
+ 	};
++
++	audio_pins: audio_pins {
++		brcm,pins;
++		brcm,function;
++	};
+ };
+ 
+ &spi0 {
diff --git a/target/linux/brcm2708/patches-4.4/0488-BCM270X_DT-Don-t-enable-UART0-in-CM3-dtb.patch b/target/linux/brcm2708/patches-4.4/0488-BCM270X_DT-Don-t-enable-UART0-in-CM3-dtb.patch
new file mode 100644
index 0000000..f8a2be9
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0488-BCM270X_DT-Don-t-enable-UART0-in-CM3-dtb.patch
@@ -0,0 +1,37 @@
+From ec662a26071a7aa2d7617ac366ce91beebaf2ad1 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Fri, 19 Aug 2016 11:19:02 +0100
+Subject: [PATCH] BCM270X_DT: Don't enable UART0 in CM3 dtb
+
+---
+ arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+--- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
++++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
+@@ -40,12 +40,6 @@
+ 		brcm,function = <4>; /* alt0 */
+ 	};
+ 
+-	uart0_pins: uart0_pins {
+-		brcm,pins;
+-		brcm,function;
+-		brcm,pull = <0 2>;
+-	};
+-
+ 	audio_pins: audio_pins {
+ 		brcm,pins;
+ 		brcm,function;
+@@ -75,12 +69,6 @@
+ 	status = "okay";
+ };
+ 
+-&uart0 {
+-	pinctrl-names = "default";
+-	pinctrl-0 = <&uart0_pins>;
+-	status = "okay";
+-};
+-
+ &spi0 {
+ 	pinctrl-names = "default";
+ 	pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
diff --git a/target/linux/brcm2708/patches-4.4/0489-overlays-Add-audremap-overlay.patch b/target/linux/brcm2708/patches-4.4/0489-overlays-Add-audremap-overlay.patch
new file mode 100644
index 0000000..e8d3976
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0489-overlays-Add-audremap-overlay.patch
@@ -0,0 +1,56 @@
+From 612d9be3d6aa73b018005a182bd55a551abfc271 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Fri, 19 Aug 2016 11:26:57 +0100
+Subject: [PATCH] overlays: Add audremap overlay
+
+The audremap overlay switches the PWM audio outputs to GPIO pins
+12 (L) and 13 (R).
+---
+ arch/arm/boot/dts/overlays/Makefile             |  1 +
+ arch/arm/boot/dts/overlays/README               |  6 ++++++
+ arch/arm/boot/dts/overlays/audremap-overlay.dts | 14 ++++++++++++++
+ 3 files changed, 21 insertions(+)
+ create mode 100644 arch/arm/boot/dts/overlays/audremap-overlay.dts
+
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -18,6 +18,7 @@ dtbo-$(RPI_DT_OVERLAYS) += ads7846.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += akkordion-iqdacplus.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += at86rf233.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += audioinjector-wm8731-audio.dtbo
++dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += dht11.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += dionaudio-loco.dtbo
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -253,6 +253,12 @@ Load:   dtoverlay=audioinjector-wm8731-a
+ Params: <None>
+ 
+ 
++Name:   audremap
++Info:   Switches PWM sound output to pins 12 & 13
++Load:   dtoverlay=audremap
++Params: <None>
++
++
+ Name:   bmp085_i2c-sensor
+ Info:   Configures the BMP085/BMP180 digital barometric pressure and temperature
+         sensors from Bosch Sensortec
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts
+@@ -0,0 +1,14 @@
++/dts-v1/;
++/plugin/;
++
++/ {
++        compatible = "brcm,bcm2708";
++
++        fragment at 0 {
++                target = <&audio_pins>;
++                __overlay__ {
++                        brcm,pins = < 12 13 >;
++                        brcm,function = < 4 >; /* alt0 alt0 */
++                };
++        };
++};
diff --git a/target/linux/brcm2708/patches-4.4/0490-overlays-Add-swap_lr-and-enable_jack-to-audremap.patch b/target/linux/brcm2708/patches-4.4/0490-overlays-Add-swap_lr-and-enable_jack-to-audremap.patch
new file mode 100644
index 0000000..7261163
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0490-overlays-Add-swap_lr-and-enable_jack-to-audremap.patch
@@ -0,0 +1,50 @@
+From f8e026145de28acf5e36183f5c8b489bf172e9c8 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Fri, 19 Aug 2016 15:39:01 +0100
+Subject: [PATCH] overlays: Add swap_lr and enable_jack to audremap
+
+swap_lr causes the channels to be reversed, and enable_jack prevents the
+headphone output from being disabled.
+
+See: https://github.com/raspberrypi/linux/issues/1473
+---
+ arch/arm/boot/dts/overlays/README               | 9 ++++++---
+ arch/arm/boot/dts/overlays/audremap-overlay.dts | 7 ++++++-
+ 2 files changed, 12 insertions(+), 4 deletions(-)
+
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -254,9 +254,12 @@ Params: <None>
+ 
+ 
+ Name:   audremap
+-Info:   Switches PWM sound output to pins 12 & 13
+-Load:   dtoverlay=audremap
+-Params: <None>
++Info:   Switches PWM sound output to pins 12 (Right) & 13 (Left)
++Load:   dtoverlay=audremap,<param>=<val>
++Params: swap_lr                 Reverse the channel allocation, which will also
++                                swap the audio jack outputs (default off)
++        enable_jack             Don't switch off the audio jack output
++                                (default off)
+ 
+ 
+ Name:   bmp085_i2c-sensor
+--- a/arch/arm/boot/dts/overlays/audremap-overlay.dts
++++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts
+@@ -6,9 +6,14 @@
+ 
+         fragment at 0 {
+                 target = <&audio_pins>;
+-                __overlay__ {
++                frag0: __overlay__ {
+                         brcm,pins = < 12 13 >;
+                         brcm,function = < 4 >; /* alt0 alt0 */
+                 };
+         };
++
++	__overrides__ {
++		swap_lr = <&frag0>, "swap_lr?";
++		enable_jack = <&frag0>, "enable_jack?";
++	};
+ };
diff --git a/target/linux/brcm2708/patches-4.4/0491-overlays-Clarify-gpio-poweroff-semantics-in-README.patch b/target/linux/brcm2708/patches-4.4/0491-overlays-Clarify-gpio-poweroff-semantics-in-README.patch
new file mode 100644
index 0000000..915c998
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0491-overlays-Clarify-gpio-poweroff-semantics-in-README.patch
@@ -0,0 +1,24 @@
+From 5b3a11f39bb1b0f9b43044c8109bd6a19b92cebe Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Mon, 22 Aug 2016 11:56:04 +0100
+Subject: [PATCH] overlays: Clarify gpio-poweroff semantics in README
+
+1) GPIO pin is signalled on poweroff, not reboot.
+2) In RPi kernels, halt is equivalent to poweroff.
+
+See: https://github.com/raspberrypi/linux/issues/1600
+---
+ arch/arm/boot/dts/overlays/README | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -340,7 +340,7 @@ Params: gpio_pin                Input pi
+ 
+ 
+ Name:   gpio-poweroff
+-Info:   Drives a GPIO high or low on reboot
++Info:   Drives a GPIO high or low on poweroff (including halt)
+ Load:   dtoverlay=gpio-poweroff,<param>=<val>
+ Params: gpiopin                 GPIO for signalling (default 26)
+ 
diff --git a/target/linux/brcm2708/patches-4.4/0492-overlays-added-sc16is750-UART-over-I2C-1617.patch b/target/linux/brcm2708/patches-4.4/0492-overlays-added-sc16is750-UART-over-I2C-1617.patch
new file mode 100644
index 0000000..db88579
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0492-overlays-added-sc16is750-UART-over-I2C-1617.patch
@@ -0,0 +1,81 @@
+From 2de4b29019b167f079ea48e30d641f7d0370bf08 Mon Sep 17 00:00:00 2001
+From: Georgii Staroselskii <gosha371 at gmail.com>
+Date: Tue, 23 Aug 2016 17:40:05 +0400
+Subject: [PATCH] overlays: added sc16is750 UART over I2C (#1617)
+
+---
+ arch/arm/boot/dts/overlays/Makefile                |  1 +
+ arch/arm/boot/dts/overlays/README                  | 10 ++++++
+ .../boot/dts/overlays/sc16is750-i2c-overlay.dts    | 37 ++++++++++++++++++++++
+ 3 files changed, 48 insertions(+)
+ create mode 100644 arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
+
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -75,6 +75,7 @@ dtbo-$(RPI_DT_OVERLAYS) += rpi-ft5406.dt
+ dtbo-$(RPI_DT_OVERLAYS) += rpi-proto.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += rpi-sense.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += rra-digidac1-wm8741-audio.dtbo
++dtbo-$(RPI_DT_OVERLAYS) += sc16is750-i2c.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += sc16is752-spi1.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += sdhost.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += sdio.dtbo
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -935,6 +935,16 @@ Load:   dtoverlay=rra-digidac1-wm8741-au
+ Params: <None>
+ 
+ 
++Name:   sc16is750-i2c
++Info:   Overlay for the NXP SC16IS750 UART with I2C Interface
++        Enables the chip on I2C1 at 0x48. To select another address,
++        please refer to table 10 in reference manual.
++
++Load:   dtoverlay=sc16is750-i2c,<param>=<val>
++Params: int_pin                 GPIO used for IRQ (default 24)
++        addr                    Address (default 0x48)
++
++
+ Name:   sc16is752-spi1
+ Info:   Overlay for the NXP SC16IS752 Dual UART with SPI Interface
+         Enables the chip on SPI1.
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
+@@ -0,0 +1,37 @@
++/dts-v1/;
++/plugin/;
++
++/ {
++	compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
++
++	fragment at 0 {
++		target = <&i2c_arm>;
++		__overlay__ {
++			#address-cells = <1>;
++			#size-cells = <0>;
++			status = "okay";
++
++			sc16is750: sc16is750 at 48 {
++				compatible = "nxp,sc16is750";
++				reg = <0x48>; /* address */
++				clocks = <&sc16is750_clk>;
++				interrupt-parent = <&gpio>;
++				interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */
++				#gpio-cells = <2>;
++
++				sc16is750_clk: sc16is750_clk {
++					compatible = "fixed-clock";
++					#clock-cells = <0>;
++					clock-frequency = <14745600>;
++				};
++			};
++		};
++	};
++
++
++	__overrides__ {
++		int_pin = <&sc16is750>,"interrupts:0";
++		addr = <&sc16is750>,"reg:0";
++	};
++
++};
diff --git a/target/linux/brcm2708/patches-4.4/0493-Bluetooth-Fix-l2cap_sock_setsockopt-with-optname-BT_.patch b/target/linux/brcm2708/patches-4.4/0493-Bluetooth-Fix-l2cap_sock_setsockopt-with-optname-BT_.patch
new file mode 100644
index 0000000..a506297
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0493-Bluetooth-Fix-l2cap_sock_setsockopt-with-optname-BT_.patch
@@ -0,0 +1,33 @@
+From 2b3cf031dfcef6f4fc803ae451364c70482404a8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?=
+ <amadeusz.slawinski at tieto.com>
+Date: Thu, 14 Jul 2016 10:50:23 +0200
+Subject: [PATCH] Bluetooth: Fix l2cap_sock_setsockopt() with optname BT_RCVMTU
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+commit 23bc6ab0a0912146fd674a0becc758c3162baabc upstream.
+
+When we retrieve imtu value from userspace we should use 16 bit pointer
+cast instead of 32 as it's defined that way in headers. Fixes setsockopt
+calls on big-endian platforms.
+
+Signed-off-by: Amadeusz Sławiński <amadeusz.slawinski at tieto.com>
+Signed-off-by: Marcel Holtmann <marcel at holtmann.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ net/bluetooth/l2cap_sock.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/bluetooth/l2cap_sock.c
++++ b/net/bluetooth/l2cap_sock.c
+@@ -817,7 +817,7 @@ static int l2cap_sock_setsockopt(struct
+ 			break;
+ 		}
+ 
+-		if (get_user(opt, (u32 __user *) optval)) {
++		if (get_user(opt, (u16 __user *) optval)) {
+ 			err = -EFAULT;
+ 			break;
+ 		}
diff --git a/target/linux/brcm2708/patches-4.4/0494-config-Add-CONFIG_IPVLAN-module.patch b/target/linux/brcm2708/patches-4.4/0494-config-Add-CONFIG_IPVLAN-module.patch
new file mode 100644
index 0000000..a585a58
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0494-config-Add-CONFIG_IPVLAN-module.patch
@@ -0,0 +1,30 @@
+From 0ae26a9c13742759f83f94678e23a4b1ff87c92e Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix at gmail.com>
+Date: Tue, 23 Aug 2016 14:07:29 +0100
+Subject: [PATCH] config: Add CONFIG_IPVLAN module
+
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig  | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -448,6 +448,7 @@ CONFIG_BONDING=m
+ CONFIG_DUMMY=m
+ CONFIG_IFB=m
+ CONFIG_MACVLAN=m
++CONFIG_IPVLAN=m
+ CONFIG_NETCONSOLE=m
+ CONFIG_TUN=m
+ CONFIG_VETH=m
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -441,6 +441,7 @@ CONFIG_BONDING=m
+ CONFIG_DUMMY=m
+ CONFIG_IFB=m
+ CONFIG_MACVLAN=m
++CONFIG_IPVLAN=m
+ CONFIG_NETCONSOLE=m
+ CONFIG_TUN=m
+ CONFIG_VETH=m
diff --git a/target/linux/brcm2708/patches-4.4/0495-config-Add-CONFIG_VXLAN-module.patch b/target/linux/brcm2708/patches-4.4/0495-config-Add-CONFIG_VXLAN-module.patch
new file mode 100644
index 0000000..7993c92
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0495-config-Add-CONFIG_VXLAN-module.patch
@@ -0,0 +1,30 @@
+From 77861bfabc7b84513c6ccbbd2efbeaaca8e7e022 Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix at gmail.com>
+Date: Tue, 23 Aug 2016 14:08:55 +0100
+Subject: [PATCH] config: Add CONFIG_VXLAN module
+
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig  | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -449,6 +449,7 @@ CONFIG_DUMMY=m
+ CONFIG_IFB=m
+ CONFIG_MACVLAN=m
+ CONFIG_IPVLAN=m
++CONFIG_VXLAN=m
+ CONFIG_NETCONSOLE=m
+ CONFIG_TUN=m
+ CONFIG_VETH=m
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -442,6 +442,7 @@ CONFIG_DUMMY=m
+ CONFIG_IFB=m
+ CONFIG_MACVLAN=m
+ CONFIG_IPVLAN=m
++CONFIG_VXLAN=m
+ CONFIG_NETCONSOLE=m
+ CONFIG_TUN=m
+ CONFIG_VETH=m
diff --git a/target/linux/brcm2708/patches-4.4/0496-Fixes-i2c_bcm2708-Write-to-FIFO-correctly-v2-1574.patch b/target/linux/brcm2708/patches-4.4/0496-Fixes-i2c_bcm2708-Write-to-FIFO-correctly-v2-1574.patch
new file mode 100644
index 0000000..da46d86
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0496-Fixes-i2c_bcm2708-Write-to-FIFO-correctly-v2-1574.patch
@@ -0,0 +1,48 @@
+From 1b6ee2ac8f1d55cb7ceeaa606e3d4868cfde363d Mon Sep 17 00:00:00 2001
+From: Simon Maes <simonn.maes at gmail.com>
+Date: Mon, 29 Aug 2016 21:11:01 +0200
+Subject: [PATCH] Fixes i2c_bcm2708: Write to FIFO correctly - v2 (#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.
+---
+ drivers/i2c/busses/i2c-bcm2708.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/drivers/i2c/busses/i2c-bcm2708.c
++++ b/drivers/i2c/busses/i2c-bcm2708.c
+@@ -115,13 +115,13 @@ static inline void bcm2708_bsc_reset(str
+ 
+ static inline void bcm2708_bsc_fifo_drain(struct bcm2708_i2c *bi)
+ {
+-	while ((bcm2708_rd(bi, BSC_S) & BSC_S_RXD) && (bi->pos < bi->msg->len))
++	while ((bi->pos < bi->msg->len) && (bcm2708_rd(bi, BSC_S) & BSC_S_RXD))
+ 		bi->msg->buf[bi->pos++] = bcm2708_rd(bi, BSC_FIFO);
+ }
+ 
+ static inline void bcm2708_bsc_fifo_fill(struct bcm2708_i2c *bi)
+ {
+-	while ((bcm2708_rd(bi, BSC_S) & BSC_S_TXD) && (bi->pos < bi->msg->len))
++	while ((bi->pos < bi->msg->len) && (bcm2708_rd(bi, BSC_S) & BSC_S_TXD))
+ 		bcm2708_wr(bi, BSC_FIFO, bi->msg->buf[bi->pos++]);
+ }
+ 
+@@ -155,6 +155,10 @@ static inline int bcm2708_bsc_setup(stru
+ 		if ( (bi->nmsgs > 1) &&
+ 			!(bi->msg[0].flags & I2C_M_RD) && (bi->msg[1].flags & I2C_M_RD) &&
+ 			 (bi->msg[0].addr == bi->msg[1].addr) && (bi->msg[0].len <= 16)) {
++
++			/* Clear FIFO */
++			bcm2708_wr(bi, BSC_C, BSC_C_CLEAR_1);
++
+ 			/* Fill FIFO with entire write message (16 byte FIFO) */
+ 			while (bi->pos < bi->msg->len) {
+ 				bcm2708_wr(bi, BSC_FIFO, bi->msg->buf[bi->pos++]);
diff --git a/target/linux/brcm2708/patches-4.4/0497-bcm2835-sdhost-Don-t-exit-cmd-wait-loop-on-error.patch b/target/linux/brcm2708/patches-4.4/0497-bcm2835-sdhost-Don-t-exit-cmd-wait-loop-on-error.patch
new file mode 100644
index 0000000..564b65d
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0497-bcm2835-sdhost-Don-t-exit-cmd-wait-loop-on-error.patch
@@ -0,0 +1,63 @@
+From 0ca1a9040cff3ace3d7fce5cdd83f1cbaa8da50c Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Fri, 2 Sep 2016 17:21:42 +0100
+Subject: [PATCH] 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: https://github.com/raspberrypi/linux/pull/1492
+
+Signed-off-by: Phil Elwell <phil at raspberrypi.org>
+---
+ drivers/mmc/host/bcm2835-sdhost.c | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+--- a/drivers/mmc/host/bcm2835-sdhost.c
++++ b/drivers/mmc/host/bcm2835-sdhost.c
+@@ -373,7 +373,7 @@ static void bcm2835_sdhost_dumpregs(stru
+ 	pr_info("%s: SDRSP2 0x%08x\n",
+ 		mmc_hostname(host->mmc),
+ 		bcm2835_sdhost_read(host, SDRSP2));
+-	pr_err("%s: SDRSP3 0x%08x\n",
++	pr_info("%s: SDRSP3 0x%08x\n",
+ 		mmc_hostname(host->mmc),
+ 		bcm2835_sdhost_read(host, SDRSP3));
+ 	pr_info("%s: SDHSTS 0x%08x\n",
+@@ -1183,9 +1183,8 @@ static void bcm2835_sdhost_finish_comman
+ 		retries = 1; // We've already waited long enough this time
+ 	}
+ 
+-	retries = host->cmd_quick_poll_retries;
+ 	for (sdcmd = bcm2835_sdhost_read(host, SDCMD);
+-	     (sdcmd & SDCMD_NEW_FLAG) && !(sdcmd & SDCMD_FAIL_FLAG) && retries;
++	     (sdcmd & SDCMD_NEW_FLAG) && retries;
+ 	     retries--) {
+ 		cpu_relax();
+ 		sdcmd = bcm2835_sdhost_read(host, SDCMD);
+@@ -1208,8 +1207,7 @@ static void bcm2835_sdhost_finish_comman
+ 			usleep_range(1, 10);
+ 			spin_lock_irqsave(&host->lock, *irq_flags);
+ 			sdcmd = bcm2835_sdhost_read(host, SDCMD);
+-			if (!(sdcmd & SDCMD_NEW_FLAG) ||
+-			    (sdcmd & SDCMD_FAIL_FLAG))
++			if (!(sdcmd & SDCMD_NEW_FLAG))
+ 				break;
+ 		}
+ 	}
+@@ -1892,8 +1890,6 @@ int bcm2835_sdhost_add_host(struct bcm28
+ 
+ 	mmc = host->mmc;
+ 
+-	bcm2835_sdhost_reset_internal(host);
+-
+ 	mmc->f_max = host->max_clk;
+ 	mmc->f_min = host->max_clk / SDCDIV_MAX_CDIV;
+ 
diff --git a/target/linux/brcm2708/patches-4.4/0498-BCM270X_DT-Use-bcm2835-sdhost-on-Compute-Module.patch b/target/linux/brcm2708/patches-4.4/0498-BCM270X_DT-Use-bcm2835-sdhost-on-Compute-Module.patch
new file mode 100644
index 0000000..bb2895c
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0498-BCM270X_DT-Use-bcm2835-sdhost-on-Compute-Module.patch
@@ -0,0 +1,30 @@
+From 6288d4a7b700cbb8c1c72210c9b2017cf8bc7dd2 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil at raspberrypi.org>
+Date: Fri, 2 Sep 2016 14:35:37 +0100
+Subject: [PATCH] BCM270X_DT: Use bcm2835-sdhost on Compute Module
+
+With the preceding commit:
+
+  bcm2835-sdhost: Don't exit cmd wait loop on error
+
+it is safe to use the bcm2835-sdhost driver on the Compute Module.
+
+Signed-off-by: Phil Elwell <phil at raspberrypi.org>
+---
+ arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
++++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
+@@ -23,9 +23,9 @@
+ };
+ 
+ 
+-&mmc {
++&sdhost {
+ 	pinctrl-names = "default";
+-	pinctrl-0 = <&mmc_pins>;
++	pinctrl-0 = <&sdhost_pins>;
+ 	non-removable;
+ 	bus-width = <4>;
+ 	status = "okay";
diff --git a/target/linux/brcm2708/patches-4.4/0499-fbmem-Ensure-that-parameters-are-properly-checked-wi.patch b/target/linux/brcm2708/patches-4.4/0499-fbmem-Ensure-that-parameters-are-properly-checked-wi.patch
new file mode 100644
index 0000000..186f29b
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0499-fbmem-Ensure-that-parameters-are-properly-checked-wi.patch
@@ -0,0 +1,27 @@
+From 7c8c6f113e1169690dbfbfc486360d10452e5a85 Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix at gmail.com>
+Date: Wed, 7 Sep 2016 16:57:59 +0100
+Subject: [PATCH] fbmem: Ensure that parameters are properly checked within
+ fb_copyarea_user
+
+---
+ drivers/video/fbdev/core/fbmem.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/video/fbdev/core/fbmem.c
++++ b/drivers/video/fbdev/core/fbmem.c
+@@ -1090,7 +1090,13 @@ static int fb_copyarea_user(struct fb_in
+ 	int ret = 0;
+ 	if (!lock_fb_info(info))
+ 		return -ENODEV;
+-	if (copy->dx + copy->width > info->var.xres ||
++	if (copy->dx >= info->var.xres ||
++	    copy->sx >= info->var.xres ||
++	    copy->width > info->var.xres ||
++	    copy->dy >= info->var.yres ||
++	    copy->sy >= info->var.yres ||
++	    copy->height > info->var.yres ||
++	    copy->dx + copy->width > info->var.xres ||
+ 	    copy->sx + copy->width > info->var.xres ||
+ 	    copy->dy + copy->height > info->var.yres ||
+ 	    copy->sy + copy->height > info->var.yres) {
diff --git a/target/linux/brcm2708/patches-4.4/0500-config-Enabled-SENSORS_INA2XX-module.patch b/target/linux/brcm2708/patches-4.4/0500-config-Enabled-SENSORS_INA2XX-module.patch
new file mode 100644
index 0000000..49e637e
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0500-config-Enabled-SENSORS_INA2XX-module.patch
@@ -0,0 +1,30 @@
+From a2aac70ca118d0a4cc7321cfcc4bf7884dd4208c Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix at gmail.com>
+Date: Fri, 9 Sep 2016 19:35:13 +0100
+Subject: [PATCH] config: Enabled SENSORS_INA2XX module
+
+---
+ arch/arm/configs/bcm2709_defconfig | 1 +
+ arch/arm/configs/bcmrpi_defconfig  | 1 +
+ 2 files changed, 2 insertions(+)
+
+--- a/arch/arm/configs/bcm2709_defconfig
++++ b/arch/arm/configs/bcm2709_defconfig
+@@ -649,6 +649,7 @@ CONFIG_HWMON=m
+ CONFIG_SENSORS_LM75=m
+ CONFIG_SENSORS_SHT21=m
+ CONFIG_SENSORS_SHTC1=m
++CONFIG_SENSORS_INA2XX=m
+ CONFIG_THERMAL=y
+ CONFIG_THERMAL_BCM2835=y
+ CONFIG_WATCHDOG=y
+--- a/arch/arm/configs/bcmrpi_defconfig
++++ b/arch/arm/configs/bcmrpi_defconfig
+@@ -641,6 +641,7 @@ CONFIG_HWMON=m
+ CONFIG_SENSORS_LM75=m
+ CONFIG_SENSORS_SHT21=m
+ CONFIG_SENSORS_SHTC1=m
++CONFIG_SENSORS_INA2XX=m
+ CONFIG_THERMAL=y
+ CONFIG_THERMAL_BCM2835=y
+ CONFIG_WATCHDOG=y



More information about the lede-commits mailing list