diff options
author | Michael Olbrich <m.olbrich@pengutronix.de> | 2013-01-06 20:43:35 +0100 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2013-04-06 15:02:56 +0200 |
commit | e30485e73cae77c4234ac7c3ee9c2ac9d007fe5b (patch) | |
tree | 1e5a61a33c0a25545887ec8d4eef860218aee5b5 | |
parent | 2a29a7c94fec016dd2e9301a783d6cae1f7bbce1 (diff) | |
download | platform-pengutronix-raspberrypi-e30485e73cae77c4234ac7c3ee9c2ac9d007fe5b.tar.gz platform-pengutronix-raspberrypi-e30485e73cae77c4234ac7c3ee9c2ac9d007fe5b.tar.xz |
kernel: update to 3.6.11 and latest patches
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
-rw-r--r-- | kernelconfig-3.6.11 (renamed from kernelconfig-3.6.10) | 3 | ||||
-rw-r--r-- | patches/linux-3.6.11/0001-Add-dwc_otg-driver.patch (renamed from patches/linux-3.6.10/0001-Add-dwc_otg-driver.patch) | 6 | ||||
-rw-r--r-- | patches/linux-3.6.11/0002-Main-bcm2708-linux-port.patch (renamed from patches/linux-3.6.10/0002-Main-bcm2708-linux-port.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0003-bcm2708-watchdog-driver.patch (renamed from patches/linux-3.6.10/0003-bcm2708-watchdog-driver.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0004-bcm2708-framebuffer-driver.patch (renamed from patches/linux-3.6.10/0004-bcm2708-framebuffer-driver.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0005-bcm2708-vchiq-driver.patch (renamed from patches/linux-3.6.10/0005-bcm2708-vchiq-driver.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0006-Allow-mac-address-to-be-set-in-smsc95xx.patch (renamed from patches/linux-3.6.10/0006-Allow-mac-address-to-be-set-in-smsc95xx.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0007-Fix-headers-for-vchiq-vcos-to-be-GPLv2.patch (renamed from patches/linux-3.6.10/0007-Fix-headers-for-vchiq-vcos-to-be-GPLv2.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0008-Fix-some-issues-reported.-Lower-case-module-paramete.patch (renamed from patches/linux-3.6.10/0008-Fix-some-issues-reported.-Lower-case-module-paramete.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0009-Build-anything-reasonable-as-a-module.-Thanks-to-asb.patch (renamed from patches/linux-3.6.10/0009-Build-anything-reasonable-as-a-module.-Thanks-to-asb.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0010-Add-config-option-to-enable-L2-cache.patch (renamed from patches/linux-3.6.10/0010-Add-config-option-to-enable-L2-cache.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0011-Fix-bug-where-vchiq-fails-when-L2-enabled.patch (renamed from patches/linux-3.6.10/0011-Fix-bug-where-vchiq-fails-when-L2-enabled.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0012-Add-devtmpfs-for-archlinux-and-emergency-and-debug-c.patch (renamed from patches/linux-3.6.10/0012-Add-devtmpfs-for-archlinux-and-emergency-and-debug-c.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0013-Fix-32bpp-framebuffer-by-adding-alpha-bits.patch (renamed from patches/linux-3.6.10/0013-Fix-32bpp-framebuffer-by-adding-alpha-bits.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0014-Enable-L2-cache-is-now-the-default.-Invert-sense-of-.patch (renamed from patches/linux-3.6.10/0014-Enable-L2-cache-is-now-the-default.-Invert-sense-of-.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0015-Allow-24bpp-for-framebuffer.patch (renamed from patches/linux-3.6.10/0015-Allow-24bpp-for-framebuffer.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0016-Disable-debug-code-in-dwc_otg-driver-unless-CONFIG_U.patch (renamed from patches/linux-3.6.10/0016-Disable-debug-code-in-dwc_otg-driver-unless-CONFIG_U.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0017-Enable-high-resolution-timers.patch (renamed from patches/linux-3.6.10/0017-Enable-high-resolution-timers.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0018-Fix-for-mmc-timeouts-when-erasing-multiple-blocks.patch (renamed from patches/linux-3.6.10/0018-Fix-for-mmc-timeouts-when-erasing-multiple-blocks.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0019-Fix-problem-with-dma-that-could-corrupt-sdcard-espec.patch (renamed from patches/linux-3.6.10/0019-Fix-problem-with-dma-that-could-corrupt-sdcard-espec.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0020-Update-to-match-latest-vc-side-vchiq.-Allows-vchiq-c.patch (renamed from patches/linux-3.6.10/0020-Update-to-match-latest-vc-side-vchiq.-Allows-vchiq-c.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0021-First-pass-at-alsa-sound-driver.-Some-functionality-.patch (renamed from patches/linux-3.6.10/0021-First-pass-at-alsa-sound-driver.-Some-functionality-.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0022-Cast-to-avoid-warning.patch (renamed from patches/linux-3.6.10/0022-Cast-to-avoid-warning.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0023-Add-new-ioctl-to-match-latest-vc-side-code.patch (renamed from patches/linux-3.6.10/0023-Add-new-ioctl-to-match-latest-vc-side-code.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0024-Enable-sound-kernel-modules.-Tidy-formatting.-Fix-ct.patch (renamed from patches/linux-3.6.10/0024-Enable-sound-kernel-modules.-Tidy-formatting.-Fix-ct.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0025-Add-missing-header-file-update-for-vc_mem-iocts.patch (renamed from patches/linux-3.6.10/0025-Add-missing-header-file-update-for-vc_mem-iocts.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0026-Remove-most-of-the-alsa-debug-messages.patch (renamed from patches/linux-3.6.10/0026-Remove-most-of-the-alsa-debug-messages.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0027-add-temporary-workaround-for-fbset-crashes.patch (renamed from patches/linux-3.6.10/0027-add-temporary-workaround-for-fbset-crashes.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0028-Fix-harmless-base-size-typo.patch (renamed from patches/linux-3.6.10/0028-Fix-harmless-base-size-typo.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0029-Replace-if-1-sections-by-local-configuration-defines.patch (renamed from patches/linux-3.6.10/0029-Replace-if-1-sections-by-local-configuration-defines.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0030-Don-t-send-data-block-when-emitting-silence.patch (renamed from patches/linux-3.6.10/0030-Don-t-send-data-block-when-emitting-silence.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0031-Fix-hopefully-for-DWC_MEMCPY-kernel-panics.-Thanks-t.patch (renamed from patches/linux-3.6.10/0031-Fix-hopefully-for-DWC_MEMCPY-kernel-panics.-Thanks-t.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0032-Build-modules-needed-for-USB-booting-into-kernel.patch (renamed from patches/linux-3.6.10/0032-Build-modules-needed-for-USB-booting-into-kernel.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0033-Whitespace-tidy.-Thanks-Roger.patch (renamed from patches/linux-3.6.10/0033-Whitespace-tidy.-Thanks-Roger.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0034-Update-vchiq-to-match-GPU-version.-Should-still-be-c.patch (renamed from patches/linux-3.6.10/0034-Update-vchiq-to-match-GPU-version.-Should-still-be-c.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0035-added-support-for-TT-in-the-USB-driver.-Thanks-Naren.patch (renamed from patches/linux-3.6.10/0035-added-support-for-TT-in-the-USB-driver.-Thanks-Naren.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0036-Swap-Red-and-Blue-over-in-32bpp-framebuffer-mode.patch (renamed from patches/linux-3.6.10/0036-Swap-Red-and-Blue-over-in-32bpp-framebuffer-mode.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0037-Update-emergency-config-to-match-latest-debug-one.patch (renamed from patches/linux-3.6.10/0037-Update-emergency-config-to-match-latest-debug-one.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0038-Use-dwc_alloc_atomic.-Thanks-bootc.patch (renamed from patches/linux-3.6.10/0038-Use-dwc_alloc_atomic.-Thanks-bootc.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0039-possible-fix-for-sdcard-missing-status.-Thank-naren.patch (renamed from patches/linux-3.6.10/0039-possible-fix-for-sdcard-missing-status.-Thank-naren.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0040-Fix-BUG-in-bcm2708_fb_set_par-doesn-t-work-if-the-co.patch (renamed from patches/linux-3.6.10/0040-Fix-BUG-in-bcm2708_fb_set_par-doesn-t-work-if-the-co.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0041-Fix-for-DWC-OTG-HCD-URB-Dequeue-has-NULL-URB-panic.-.patch (renamed from patches/linux-3.6.10/0041-Fix-for-DWC-OTG-HCD-URB-Dequeue-has-NULL-URB-panic.-.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0042-Fix-for-bug-in-mbox_read.-Thanks-lp0.patch (renamed from patches/linux-3.6.10/0042-Fix-for-bug-in-mbox_read.-Thanks-lp0.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0043-Add-__VCCOREVER__-to-makefile.patch (renamed from patches/linux-3.6.10/0043-Add-__VCCOREVER__-to-makefile.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0044-Change-PHYS_OFFSET-to-PLAT_PHYS_OFFSET.patch (renamed from patches/linux-3.6.10/0044-Change-PHYS_OFFSET-to-PLAT_PHYS_OFFSET.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0045-sdcard-patch-improvements-from-naren.patch (renamed from patches/linux-3.6.10/0045-sdcard-patch-improvements-from-naren.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0046-Invert-sense-of-sdcard-access-trigger-OK-LED-so-it-i.patch (renamed from patches/linux-3.6.10/0046-Invert-sense-of-sdcard-access-trigger-OK-LED-so-it-i.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0047-Added-power-off-message-to-allow-kexec-to-work.-Than.patch (renamed from patches/linux-3.6.10/0047-Added-power-off-message-to-allow-kexec-to-work.-Than.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0048-remove-unwanted-file.patch (renamed from patches/linux-3.6.10/0048-remove-unwanted-file.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0049-Enable-PREEMPT-and-SCHED_AUTOGROUP.patch (renamed from patches/linux-3.6.10/0049-Enable-PREEMPT-and-SCHED_AUTOGROUP.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0050-Added-support-for-USB-webcams.patch (renamed from patches/linux-3.6.10/0050-Added-support-for-USB-webcams.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0051-Enable-ipv6-due-to-popular-demand.patch (renamed from patches/linux-3.6.10/0051-Enable-ipv6-due-to-popular-demand.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0052-Fix-regression-in-debug-kernel-config-options.patch (renamed from patches/linux-3.6.10/0052-Fix-regression-in-debug-kernel-config-options.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0053-bcm2835-ctl-fix-alsamixer-control.patch (renamed from patches/linux-3.6.10/0053-bcm2835-ctl-fix-alsamixer-control.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0054-bcm2835-ctl-limit-maximal-volume-to-4db.patch (renamed from patches/linux-3.6.10/0054-bcm2835-ctl-limit-maximal-volume-to-4db.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0055-Add-iptables-and-devtmpfs_mount-to-non-cutdown-confi.patch (renamed from patches/linux-3.6.10/0055-Add-iptables-and-devtmpfs_mount-to-non-cutdown-confi.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0056-sdhci-bcm2708-speed-up-DMA-sync.patch (renamed from patches/linux-3.6.10/0056-sdhci-bcm2708-speed-up-DMA-sync.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0057-sdhci-bcm2708-remove-custom-clock-handling.patch (renamed from patches/linux-3.6.10/0057-sdhci-bcm2708-remove-custom-clock-handling.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0058-sdhci-bcm2708-add-additional-quirks.patch (renamed from patches/linux-3.6.10/0058-sdhci-bcm2708-add-additional-quirks.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0059-sdhci-bcm2708-add-allow_highspeed-parameter.patch (renamed from patches/linux-3.6.10/0059-sdhci-bcm2708-add-allow_highspeed-parameter.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0060-sdhci-bcm2708-assume-50-MHz-eMMC-clock.patch (renamed from patches/linux-3.6.10/0060-sdhci-bcm2708-assume-50-MHz-eMMC-clock.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0061-Allow-emmc-clock-to-be-specified-as-command-line-par.patch (renamed from patches/linux-3.6.10/0061-Allow-emmc-clock-to-be-specified-as-command-line-par.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0062-sdhci-bcm2708-raise-DMA-sync-timeout.patch (renamed from patches/linux-3.6.10/0062-sdhci-bcm2708-raise-DMA-sync-timeout.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0063-Fix-bool-int-error.patch (renamed from patches/linux-3.6.10/0063-Fix-bool-int-error.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0064-Fix-bool-int-error-part-2.patch (renamed from patches/linux-3.6.10/0064-Fix-bool-int-error-part-2.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0065-More-config-options-for-iptables-device-mapper-PPP_M.patch (renamed from patches/linux-3.6.10/0065-More-config-options-for-iptables-device-mapper-PPP_M.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0066-Explicitly-set-usb-host-channels-to-8-as-in-the-spec.patch (renamed from patches/linux-3.6.10/0066-Explicitly-set-usb-host-channels-to-8-as-in-the-spec.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0067-Add-hfs-hfsplus-modules.patch (renamed from patches/linux-3.6.10/0067-Add-hfs-hfsplus-modules.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0068-Remove-silence-method-and-use-atomic-flags-for-kmall.patch (renamed from patches/linux-3.6.10/0068-Remove-silence-method-and-use-atomic-flags-for-kmall.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0069-Fix-unintended-line-swap-that-cause-cause-memory-lea.patch (renamed from patches/linux-3.6.10/0069-Fix-unintended-line-swap-that-cause-cause-memory-lea.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0070-Use-ndelay-rather-than-udelay.-Thanks-lb.patch (renamed from patches/linux-3.6.10/0070-Use-ndelay-rather-than-udelay.-Thanks-lb.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0071-Add-NFSD.-Add-some-dvb-options.-Add-CONFIG_LOCALVERS.patch (renamed from patches/linux-3.6.10/0071-Add-NFSD.-Add-some-dvb-options.-Add-CONFIG_LOCALVERS.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0072-Fixed-issue-with-some-keyboards-giving-too-much-data.patch (renamed from patches/linux-3.6.10/0072-Fixed-issue-with-some-keyboards-giving-too-much-data.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0073-Add-802.1q-vlan-module.patch (renamed from patches/linux-3.6.10/0073-Add-802.1q-vlan-module.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0074-Add-interrupt-support-to-gpio-driver.-Thanks-Mrkva.patch (renamed from patches/linux-3.6.10/0074-Add-interrupt-support-to-gpio-driver.-Thanks-Mrkva.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0075-Add-a-pm_power_off-function-that-resets-us-and-indic.patch (renamed from patches/linux-3.6.10/0075-Add-a-pm_power_off-function-that-resets-us-and-indic.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0076-Store-palette-info-where-GPU-can-see-it-so-8bpp-mode.patch (renamed from patches/linux-3.6.10/0076-Store-palette-info-where-GPU-can-see-it-so-8bpp-mode.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0077-Avoid-blanking-console-when-not-in-palettised-mode.patch (renamed from patches/linux-3.6.10/0077-Avoid-blanking-console-when-not-in-palettised-mode.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0078-Add-mechanism-to-reduce-the-number-of-SOF-interrupts.patch (renamed from patches/linux-3.6.10/0078-Add-mechanism-to-reduce-the-number-of-SOF-interrupts.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0079-Updating-dwc_otg-driver-to-fix-issue-releasing-pcm-s.patch (renamed from patches/linux-3.6.10/0079-Updating-dwc_otg-driver-to-fix-issue-releasing-pcm-s.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0080-Backport-of-Chris-Boot-s-i2c-and-spi-drivers.patch (renamed from patches/linux-3.6.10/0080-Backport-of-Chris-Boot-s-i2c-and-spi-drivers.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0081-forgotten-files.patch (renamed from patches/linux-3.6.10/0081-forgotten-files.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0082-Enable-I2C-and-SPI-modules-in-full-config.patch (renamed from patches/linux-3.6.10/0082-Enable-I2C-and-SPI-modules-in-full-config.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0083-Possible-fix-for-failure-to-boot-with-compressed-ker.patch (renamed from patches/linux-3.6.10/0083-Possible-fix-for-failure-to-boot-with-compressed-ker.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0084-Another-try-at-fixing-compressed-kernel-booting.patch (renamed from patches/linux-3.6.10/0084-Another-try-at-fixing-compressed-kernel-booting.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0085-Add-missing-UART0_CLOCK-from-last-commit.patch (renamed from patches/linux-3.6.10/0085-Add-missing-UART0_CLOCK-from-last-commit.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0086-Change-to-add-SCSI-tape-support-as-loadable-modules-.patch (renamed from patches/linux-3.6.10/0086-Change-to-add-SCSI-tape-support-as-loadable-modules-.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0087-Add-temporary-fix-for-hang-when-quitting-X.patch (renamed from patches/linux-3.6.10/0087-Add-temporary-fix-for-hang-when-quitting-X.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0088-Better-fix-for-quitting-X-hang.-Interrupted-mailbox-.patch (renamed from patches/linux-3.6.10/0088-Better-fix-for-quitting-X-hang.-Interrupted-mailbox-.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0089-Add-sync_after_dma-module-parameter.patch (renamed from patches/linux-3.6.10/0089-Add-sync_after_dma-module-parameter.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0090-Add-SPI_SPI_DEV-module.patch (renamed from patches/linux-3.6.10/0090-Add-SPI_SPI_DEV-module.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0091-Fix-var.width-var.height.-They-actually-mean-display.patch (renamed from patches/linux-3.6.10/0091-Fix-var.width-var.height.-They-actually-mean-display.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0092-The-TIMER_PERIOD-should-be-calculated-using-the-time.patch (renamed from patches/linux-3.6.10/0092-The-TIMER_PERIOD-should-be-calculated-using-the-time.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0093-update-bcmrpi_defconfig-with-various-user-requests.patch (renamed from patches/linux-3.6.10/0093-update-bcmrpi_defconfig-with-various-user-requests.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0094-Possible-fix-for-USB-packets-going-missing.-Thank-gs.patch (renamed from patches/linux-3.6.10/0094-Possible-fix-for-USB-packets-going-missing.-Thank-gs.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0095-Revert-Possible-fix-for-USB-packets-going-missing.-T.patch (renamed from patches/linux-3.6.10/0095-Revert-Possible-fix-for-USB-packets-going-missing.-T.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0096-dwc_common_port-remove-unused-cruft-with-onerous-dep.patch (renamed from patches/linux-3.6.10/0096-dwc_common_port-remove-unused-cruft-with-onerous-dep.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0097-arm-remove-divdi3-it-s-not-necessary-at-all.patch (renamed from patches/linux-3.6.10/0097-arm-remove-divdi3-it-s-not-necessary-at-all.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0098-Remove-some-patch-backup-files.patch (renamed from patches/linux-3.6.10/0098-Remove-some-patch-backup-files.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0099-mach-bcm2708-fix-mach-debug-macro.S-so-that-early-pr.patch (renamed from patches/linux-3.6.10/0099-mach-bcm2708-fix-mach-debug-macro.S-so-that-early-pr.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0100-sound-arm-bcm2835.c-add-linux-module.h-include.patch (renamed from patches/linux-3.6.10/0100-sound-arm-bcm2835.c-add-linux-module.h-include.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0101-vcos-add-linux-kernel.h-include.patch (renamed from patches/linux-3.6.10/0101-vcos-add-linux-kernel.h-include.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0102-bcm2708-update-for-3.2-kernel.patch (renamed from patches/linux-3.6.10/0102-bcm2708-update-for-3.2-kernel.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0103-bcm2708-use-a-constant-SC_MULT-SC_SHIFT.patch (renamed from patches/linux-3.6.10/0103-bcm2708-use-a-constant-SC_MULT-SC_SHIFT.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0104-Sync-with-bootc-s-file.patch (renamed from patches/linux-3.6.10/0104-Sync-with-bootc-s-file.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0105-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch (renamed from patches/linux-3.6.10/0105-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0106-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch (renamed from patches/linux-3.6.10/0106-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0107-Add-module-parameter-for-missing_status-quirk.-sdhci.patch (renamed from patches/linux-3.6.10/0107-Add-module-parameter-for-missing_status-quirk.-sdhci.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0108-Some-fixed-for-ALSA.-Mute-and-volume-changing-should.patch (renamed from patches/linux-3.6.10/0108-Some-fixed-for-ALSA.-Mute-and-volume-changing-should.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0109-Fix-spinlock-recursion-in-sdhci-bcm2708.c.patch (renamed from patches/linux-3.6.10/0109-Fix-spinlock-recursion-in-sdhci-bcm2708.c.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0110-Revert-Add-mechanism-to-reduce-the-number-of-SOF-int.patch (renamed from patches/linux-3.6.10/0110-Revert-Add-mechanism-to-reduce-the-number-of-SOF-int.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0111-Enable-CONFIG_CRYPTO_XTS.patch (renamed from patches/linux-3.6.10/0111-Enable-CONFIG_CRYPTO_XTS.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0112-Update-Synopsys-USB-OTG-driver-to-v2.94a-and-disable.patch (renamed from patches/linux-3.6.10/0112-Update-Synopsys-USB-OTG-driver-to-v2.94a-and-disable.patch) | 2 | ||||
-rw-r--r-- | patches/linux-3.6.11/0113-Merged-in-microframe-scheduler-currently-disabled.-E.patch (renamed from patches/linux-3.6.10/0113-Merged-in-microframe-scheduler-currently-disabled.-E.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0114-Make-microframe-schedule-patch-a-little-closer-to-de.patch (renamed from patches/linux-3.6.10/0114-Make-microframe-schedule-patch-a-little-closer-to-de.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0115-Remove-remove-documentation-from-the-source-tree.patch (renamed from patches/linux-3.6.10/0115-Remove-remove-documentation-from-the-source-tree.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0116-Fix-for-broken-GPIO-with-3.2-kernel.patch (renamed from patches/linux-3.6.10/0116-Fix-for-broken-GPIO-with-3.2-kernel.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0117-Revert-Disable-IRQs-in-dwc_otg_hcd_qh_free-because-D.patch (renamed from patches/linux-3.6.10/0117-Revert-Disable-IRQs-in-dwc_otg_hcd_qh_free-because-D.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0118-Regenerate-defconfigs-for-udpated-kernel-verision.patch (renamed from patches/linux-3.6.10/0118-Regenerate-defconfigs-for-udpated-kernel-verision.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0119-Another-fix-for-10-second-hang-on-closing-sound-driv.patch (renamed from patches/linux-3.6.10/0119-Another-fix-for-10-second-hang-on-closing-sound-driv.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0120-amba-pl011-Don-t-send-a-character-during-startup.patch (renamed from patches/linux-3.6.10/0120-amba-pl011-Don-t-send-a-character-during-startup.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0121-Revert-Regenerate-defconfigs-for-udpated-kernel-veri.patch (renamed from patches/linux-3.6.10/0121-Revert-Regenerate-defconfigs-for-udpated-kernel-veri.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0122-Regenerate-defconfigs-for-updated-kernel-verision-tr.patch (renamed from patches/linux-3.6.10/0122-Regenerate-defconfigs-for-updated-kernel-verision-tr.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0123-Read-memory-size-for-vc_mem-through-mailbox-property.patch (renamed from patches/linux-3.6.10/0123-Read-memory-size-for-vc_mem-through-mailbox-property.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0124-Revert-amba-pl011-Don-t-send-a-character-during-star.patch (renamed from patches/linux-3.6.10/0124-Revert-amba-pl011-Don-t-send-a-character-during-star.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0125-Update-to-dwc_otg-3.00.-Seems-to-be-a-very-minor-upd.patch (renamed from patches/linux-3.6.10/0125-Update-to-dwc_otg-3.00.-Seems-to-be-a-very-minor-upd.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0126-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch (renamed from patches/linux-3.6.10/0126-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0127-Switch-of-tracing-options-in-kernel.-Costs-20-in-ipe.patch (renamed from patches/linux-3.6.10/0127-Switch-of-tracing-options-in-kernel.-Costs-20-in-ipe.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0128-Turn-on-microframe_schedule-by-default.-Can-still-be.patch (renamed from patches/linux-3.6.10/0128-Turn-on-microframe_schedule-by-default.-Can-still-be.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0129-Add-low-latency-mode-to-sdcard-driver.-Enable-with-s.patch (renamed from patches/linux-3.6.10/0129-Add-low-latency-mode-to-sdcard-driver.-Enable-with-s.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0130-Fix-build-for-non-preempt-case.-Fix-warning.patch (renamed from patches/linux-3.6.10/0130-Fix-build-for-non-preempt-case.-Fix-warning.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0131-Add-config-options-to-allow-iotop-to-run.patch (renamed from patches/linux-3.6.10/0131-Add-config-options-to-allow-iotop-to-run.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0132-Fix-for-vmalloc-failure-with-modprobe-and-cutdown-ke.patch (renamed from patches/linux-3.6.10/0132-Fix-for-vmalloc-failure-with-modprobe-and-cutdown-ke.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0133-Enable-low-latency-mode-by-default-in-sdcard-driver..patch (renamed from patches/linux-3.6.10/0133-Enable-low-latency-mode-by-default-in-sdcard-driver..patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0134-Add-FIQ-patch-to-dwc_otg-driver.-Enable-with-dwc_otg.patch (renamed from patches/linux-3.6.10/0134-Add-FIQ-patch-to-dwc_otg-driver.-Enable-with-dwc_otg.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0135-Fix-typo.patch (renamed from patches/linux-3.6.10/0135-Fix-typo.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0136-Add-non-mainline-source-for-rtl8188cu-wireless-drive.patch (renamed from patches/linux-3.6.10/0136-Add-non-mainline-source-for-rtl8188cu-wireless-drive.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0137-Add-verious-user-config-requests.patch (renamed from patches/linux-3.6.10/0137-Add-verious-user-config-requests.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0138-Don-t-believe-KDIR-is-required-when-building-as-part.patch (renamed from patches/linux-3.6.10/0138-Don-t-believe-KDIR-is-required-when-building-as-part.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0139-Avoid-dynamic-memory-allocation-for-channel-lock-in-.patch (renamed from patches/linux-3.6.10/0139-Avoid-dynamic-memory-allocation-for-channel-lock-in-.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0140-Add-cpufreq-driver.patch (renamed from patches/linux-3.6.10/0140-Add-cpufreq-driver.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0141-Tidy-up-debug-messages.patch (renamed from patches/linux-3.6.10/0141-Tidy-up-debug-messages.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0142-Enable-fiq-fix-by-default.-Add-NAK-holdoff-scheme.-E.patch (renamed from patches/linux-3.6.10/0142-Enable-fiq-fix-by-default.-Add-NAK-holdoff-scheme.-E.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0143-Added-hwmon-thermal-driver-for-reporting-core-temper.patch (renamed from patches/linux-3.6.10/0143-Added-hwmon-thermal-driver-for-reporting-core-temper.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0144-Add-config-options-for-thermal-sensor-L2TP-RT2800USB.patch (renamed from patches/linux-3.6.10/0144-Add-config-options-for-thermal-sensor-L2TP-RT2800USB.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0145-Remove-some-unnecessary-dmesg-output.patch (renamed from patches/linux-3.6.10/0145-Remove-some-unnecessary-dmesg-output.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0146-Switch-to-powersave-governor.-We-ll-enable-ondemand-.patch (renamed from patches/linux-3.6.10/0146-Switch-to-powersave-governor.-We-ll-enable-ondemand-.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0147-Enable-multiple-ALSA-channels.patch (renamed from patches/linux-3.6.10/0147-Enable-multiple-ALSA-channels.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0148-Remove-vcos-abstraction-layer-from-ALSA-driver.-Than.patch (renamed from patches/linux-3.6.10/0148-Remove-vcos-abstraction-layer-from-ALSA-driver.-Than.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0149-Fix-Kernel-OOPS-in-SDHCI-on-boot-with-the-llm-patch..patch (renamed from patches/linux-3.6.10/0149-Fix-Kernel-OOPS-in-SDHCI-on-boot-with-the-llm-patch..patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0150-Use-system-timer-for-udelay-so-unaffected-by-cpufreq.patch (renamed from patches/linux-3.6.10/0150-Use-system-timer-for-udelay-so-unaffected-by-cpufreq.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0151-Move-__delay-function-into-assembly-to-get-accurate-.patch (renamed from patches/linux-3.6.10/0151-Move-__delay-function-into-assembly-to-get-accurate-.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0152-set-i2c-speed-via-module-parameter-or-menuconfig.-Th.patch (renamed from patches/linux-3.6.10/0152-set-i2c-speed-via-module-parameter-or-menuconfig.-Th.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0153-Allow-the-number-of-cycles-delay-between-sdcard-peri.patch (renamed from patches/linux-3.6.10/0153-Allow-the-number-of-cycles-delay-between-sdcard-peri.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0154-Fix-vc-mem-by-using-module-parameters.patch (renamed from patches/linux-3.6.10/0154-Fix-vc-mem-by-using-module-parameters.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0155-Move-to-version-5-of-VCHIQ.-Note-this-requires-a-cor.patch (renamed from patches/linux-3.6.10/0155-Move-to-version-5-of-VCHIQ.-Note-this-requires-a-cor.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0156-Add-in-missed-vchiq-files.patch (renamed from patches/linux-3.6.10/0156-Add-in-missed-vchiq-files.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0157-Make-vchiq-enabled-by-default.-Tidy-Kconfig-file.patch (renamed from patches/linux-3.6.10/0157-Make-vchiq-enabled-by-default.-Tidy-Kconfig-file.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0158-Support-dummy-vc-mem-ioctl-used-by-vcdbg.patch (renamed from patches/linux-3.6.10/0158-Support-dummy-vc-mem-ioctl-used-by-vcdbg.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0159-Remove-BUG-call-from-vchiq-that-is-trigger-when-alsa.patch (renamed from patches/linux-3.6.10/0159-Remove-BUG-call-from-vchiq-that-is-trigger-when-alsa.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0160-Fix-up-issues-with-rebase.patch (renamed from patches/linux-3.6.10/0160-Fix-up-issues-with-rebase.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0161-Add-vc_cma-driver-to-enable-use-of-CMA.patch (renamed from patches/linux-3.6.10/0161-Add-vc_cma-driver-to-enable-use-of-CMA.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0162-Add-missing-CMA-files.patch (renamed from patches/linux-3.6.10/0162-Add-missing-CMA-files.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0163-Fix-reboot-with-new-restart-method-of-machine-driver.patch (renamed from patches/linux-3.6.10/0163-Fix-reboot-with-new-restart-method-of-machine-driver.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0164-smsc95xx-sleep-before-read-for-lengthy-operations.patch (renamed from patches/linux-3.6.10/0164-smsc95xx-sleep-before-read-for-lengthy-operations.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0165-smsc95xx-remove-unnecessary-variables.patch (renamed from patches/linux-3.6.10/0165-smsc95xx-remove-unnecessary-variables.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0166-smsc95xx-check-return-code-from-control-messages.patch (renamed from patches/linux-3.6.10/0166-smsc95xx-check-return-code-from-control-messages.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0167-smsc95xx-fix-resume-when-usb-device-is-reset.patch (renamed from patches/linux-3.6.10/0167-smsc95xx-fix-resume-when-usb-device-is-reset.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0168-smsc95xx-enable-power-saving-mode-during-system-susp.patch (renamed from patches/linux-3.6.10/0168-smsc95xx-enable-power-saving-mode-during-system-susp.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0169-smsc95xx-add-wol-magic-packet-support.patch (renamed from patches/linux-3.6.10/0169-smsc95xx-add-wol-magic-packet-support.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0170-smsc95xx-fix-tx-checksum-offload-for-big-endian.patch (renamed from patches/linux-3.6.10/0170-smsc95xx-fix-tx-checksum-offload-for-big-endian.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0171-Update-to-latest-vchiq.patch (renamed from patches/linux-3.6.10/0171-Update-to-latest-vchiq.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0172-Make-sure-we-wait-for-the-reset-to-finish.patch (renamed from patches/linux-3.6.10/0172-Make-sure-we-wait-for-the-reset-to-finish.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0173-Add-missing-pctv452e-DVB-module.patch (renamed from patches/linux-3.6.10/0173-Add-missing-pctv452e-DVB-module.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0174-Add-Simon-Hall-s-dma-helper-module-useful-in-future-.patch (renamed from patches/linux-3.6.10/0174-Add-Simon-Hall-s-dma-helper-module-useful-in-future-.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0175-Add-missing-options-from-more-recent-3.2.27-kernel-c.patch (renamed from patches/linux-3.6.10/0175-Add-missing-options-from-more-recent-3.2.27-kernel-c.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0176-lirc-added-support-for-RaspberryPi-GPIO.patch (renamed from patches/linux-3.6.10/0176-lirc-added-support-for-RaspberryPi-GPIO.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0177-Enable-building-of-lirc-rpi.patch (renamed from patches/linux-3.6.10/0177-Enable-building-of-lirc-rpi.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0178-Update-list-of-modules-build-with-next-kernel.-Fixes.patch (renamed from patches/linux-3.6.10/0178-Update-list-of-modules-build-with-next-kernel.-Fixes.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0179-Avoid-the-high-load-and-block-task-messages-by-start.patch (renamed from patches/linux-3.6.10/0179-Avoid-the-high-load-and-block-task-messages-by-start.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0180-Enable-CMA-in-defconfig.patch (renamed from patches/linux-3.6.10/0180-Enable-CMA-in-defconfig.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0181-Avoid-undefined-symbol-in-radio-shark.ko.patch (renamed from patches/linux-3.6.10/0181-Avoid-undefined-symbol-in-radio-shark.ko.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0182-Allow-mailbox-driver-to-be-called-from-user-code-tho.patch (renamed from patches/linux-3.6.10/0182-Allow-mailbox-driver-to-be-called-from-user-code-tho.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0183-usbnet-ratelimit-kevent-may-have-been-dropped-warnin.patch (renamed from patches/linux-3.6.10/0183-usbnet-ratelimit-kevent-may-have-been-dropped-warnin.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0184-Lazy-CRC-quirk-Implemented-retrying-mechanisms-for-S.patch (renamed from patches/linux-3.6.10/0184-Lazy-CRC-quirk-Implemented-retrying-mechanisms-for-S.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0185-Leave-missing_status-enabled-for-now.patch (renamed from patches/linux-3.6.10/0185-Leave-missing_status-enabled-for-now.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0186-Update-to-latest-cma-and-vchiq.patch (renamed from patches/linux-3.6.10/0186-Update-to-latest-cma-and-vchiq.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0187-Allow-CMA-pool-to-be-shared-with-other-drivers.patch (renamed from patches/linux-3.6.10/0187-Allow-CMA-pool-to-be-shared-with-other-drivers.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0188-Add-CoDel-network-scheduling.-Add-HIDRAW.-Remove-CMA.patch (renamed from patches/linux-3.6.10/0188-Add-CoDel-network-scheduling.-Add-HIDRAW.-Remove-CMA.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0189-Default-to-dwc_otp.lpm_enable-0.patch (renamed from patches/linux-3.6.10/0189-Default-to-dwc_otp.lpm_enable-0.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0190-Add-CONFIG_CFG80211_WEXT-and-CONFIG_MMC_SPI.patch (renamed from patches/linux-3.6.10/0190-Add-CONFIG_CFG80211_WEXT-and-CONFIG_MMC_SPI.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0191-Increase-default-coherent-pool-so-vchiq-starts-up.patch (renamed from patches/linux-3.6.10/0191-Increase-default-coherent-pool-so-vchiq-starts-up.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0192-net-use-bigger-pages-in-__netdev_alloc_frag.patch (renamed from patches/linux-3.6.10/0192-net-use-bigger-pages-in-__netdev_alloc_frag.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0193-Bluetooth-Increase-HCI-command-tx-timeout.patch (renamed from patches/linux-3.6.10/0193-Bluetooth-Increase-HCI-command-tx-timeout.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0194-Dual-licence-Broadcom-code-under-BSD-and-GPL.patch (renamed from patches/linux-3.6.10/0194-Dual-licence-Broadcom-code-under-BSD-and-GPL.patch) | 0 | ||||
-rw-r--r-- | patches/linux-3.6.11/0195-Update-to-Simon-s-latest-dmaer-module.patch | 1201 | ||||
-rw-r--r-- | patches/linux-3.6.11/0196-Add-retry-for-vchiq-init.-Needed-in-some-cases-when-.patch | 47 | ||||
-rw-r--r-- | patches/linux-3.6.11/0197-Silence-bootup-errors-from-timer-and-gpio.patch | 46 | ||||
-rw-r--r-- | patches/linux-3.6.11/0198-Remove-RTC_HCTOSYS-as-it-produces-a-kernel-boot-erro.patch | 29 | ||||
-rw-r--r-- | patches/linux-3.6.11/0199-Make-CMA-kernel-messages-quieter-when-not-fatal.patch | 44 | ||||
-rw-r--r-- | patches/linux-3.6.11/0200-Add-missing-USB_NET-modules.patch | 32 | ||||
-rw-r--r-- | patches/linux-3.6.11/0201-Add-mutex-around-bcm_mailbox_property-function.patch | 38 | ||||
-rw-r--r-- | patches/linux-3.6.11/0202-Enable-ZRAM-and-RFKILL-config-options.patch | 39 | ||||
-rw-r--r-- | patches/linux-3.6.11/0203-dwc_otg-fix-bug-in-dwc_otg_hcd.c-resulting-in-silent.patch | 35 | ||||
-rw-r--r-- | patches/linux-3.6.11/0204-Add-config-options-for-netfilter-log-and-more-dvb-mo.patch | 43 | ||||
-rw-r--r-- | patches/linux-3.6.11/0205-Add-more-dvb-modules.patch | 152 | ||||
-rw-r--r-- | patches/linux-3.6.11/0206-Return-error-value-from-bcm2708_setup_state.-Thanks-.patch | 20 | ||||
-rw-r--r-- | patches/linux-3.6.11/0207-spi-spi-bcm2708-respect-per-transfer-SPI-clock-speed.patch | 43 | ||||
-rw-r--r-- | patches/linux-3.6.11/0208-spi-bcm2708-add-9-bit-support-using-LoSSI-mode.patch | 68 | ||||
-rw-r--r-- | patches/linux-3.6.11/0209-Add-hwrng-hardware-random-number-generator-driver.patch | 176 | ||||
-rw-r--r-- | patches/linux-3.6.11/0210-Add-HW_RANDOM-BATMAN_ADV-and-CONFIG_NET_IPGRE.patch | 38 | ||||
-rw-r--r-- | patches/linux-3.6.11/0211-Add-raid0-module.patch | 20 | ||||
-rw-r--r-- | patches/linux-3.6.11/0212-Update-vchiq-to-version-supporting-querying-peer-ver.patch | 295 | ||||
-rw-r--r-- | patches/linux-3.6.11/0213-Use-control-messages-for-audio-data-to-fix-scratch-h.patch | 487 | ||||
-rw-r--r-- | patches/linux-3.6.11/0214-Default-force_bulk-to-false.patch | 21 | ||||
-rw-r--r-- | patches/linux-3.6.11/0215-Add-missing-newlines-to-log-messages.patch | 97 | ||||
-rw-r--r-- | patches/linux-3.6.11/0216-Changed-wording-on-logging.-Previously-we-received-e.patch | 32 | ||||
-rw-r--r-- | patches/linux-3.6.11/0217-Fix-for-low-bogomips-value-reported.patch | 68 | ||||
-rw-r--r-- | patches/linux-3.6.11/0218-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch | 85 | ||||
-rw-r--r-- | patches/linux-3.6.11/0219-dwc_otg-Fix-incorrect-URB-allocation-error-handling.patch | 39 | ||||
-rw-r--r-- | patches/linux-3.6.11/0220-Added-inverted-transmitter-support.patch | 79 | ||||
-rw-r--r-- | patches/linux-3.6.11/0221-fbcon-clear-the-logo-bitmap-from-the-margin-area.patch | 38 | ||||
-rw-r--r-- | patches/linux-3.6.11/0222-Add-config-request-CONFIG_IP_SCTP.patch | 37 | ||||
-rw-r--r-- | patches/linux-3.6.11/0223-Add-retry-on-error-and-tidy-of-temperature-driver.patch | 125 | ||||
-rw-r--r-- | patches/linux-3.6.11/0224-Add-SPEAKUP-and-SPEAKUP_SYNTH_SOFT-kernel-modules.patch | 21 | ||||
-rw-r--r-- | patches/linux-3.6.11/0225-ARM-VFP-fix-emulation-of-second-VFP-instruction.patch | 49 | ||||
-rw-r--r-- | patches/linux-3.6.11/0226-ARM-7492-1-add-strstr-declaration-for-decompressors.patch | 30 | ||||
-rw-r--r-- | patches/linux-3.6.11/0227-dwc_otg-fix-potential-use-after-free-case-in-interru.patch | 30 | ||||
-rw-r--r-- | patches/linux-3.6.11/0228-fix-missing-modulo-for-bit-in-bank-computation-in-bc.patch | 22 | ||||
-rw-r--r-- | patches/linux-3.6.11/0229-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch | 52 | ||||
-rw-r--r-- | patches/linux-3.6.11/0230-USB-option-add-Telekom-Speedstick-LTE-II.patch | 46 | ||||
-rw-r--r-- | patches/linux-3.6.11/0231-Increase-the-minimum-alsa-buffer-size-as-we-get-unde.patch | 22 | ||||
-rw-r--r-- | patches/linux-3.6.11/0232-USB-usb-storage-unusual_devs-update-for-Super-TOP-SA.patch | 38 | ||||
-rw-r--r-- | patches/linux-3.6.11/0233-Add-bitbanging-pullups-use-them-for-w1-gpio.patch | 145 | ||||
-rw-r--r-- | patches/linux-3.6.11/0234-Run-Lindent-to-fix-whitespace-fix-braces.patch | 757 | ||||
-rw-r--r-- | patches/linux-3.6.11/0235-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch | 251 | ||||
-rw-r--r-- | patches/linux-3.6.11/0236-USB-add-OWL-CM-160-support-to-cp210x-driver.patch | 25 | ||||
-rw-r--r-- | patches/linux-3.6.11/0237-Add-device-ID-330d.patch | 34 | ||||
-rw-r--r-- | patches/linux-3.6.11/0238-dwc_otg-implement-tasklet-for-returning-URBs-to-usbc.patch | 240 | ||||
-rw-r--r-- | patches/linux-3.6.11/0239-Added-Device-IDs-for-August-DVB-T-205.patch | 64 | ||||
-rw-r--r-- | patches/linux-3.6.11/0240-Revert-ARM-7668-1-fix-memset-related-crashes-caused-.patch | 166 | ||||
-rw-r--r-- | patches/linux-3.6.11/0241-Move-definition-of-fiq_fix_enable-to-bcm2708.c-to-al.patch | 38 | ||||
-rw-r--r-- | patches/linux-3.6.11/0242-Revert-back-to-smaller-alsa-buffer.patch | 28 | ||||
-rw-r--r-- | patches/linux-3.6.11/0301-Release-raspberrypi-20130406.patch (renamed from patches/linux-3.6.10/0201-Release-raspberrypi-20121217.patch) | 10 | ||||
-rw-r--r-- | patches/linux-3.6.11/series (renamed from patches/linux-3.6.10/series) | 62 | ||||
-rw-r--r-- | platformconfig | 4 |
246 files changed, 5599 insertions, 20 deletions
diff --git a/kernelconfig-3.6.10 b/kernelconfig-3.6.11 index 75e7758..5e6fd91 100644 --- a/kernelconfig-3.6.10 +++ b/kernelconfig-3.6.11 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 3.6.10-20121217 Kernel Configuration +# Linux/arm 3.6.11-20130406 Kernel Configuration # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -2059,7 +2059,6 @@ CONFIG_USB_STORAGE_ONETOUCH=m CONFIG_USB_STORAGE_KARMA=m CONFIG_USB_STORAGE_CYPRESS_ATACB=m CONFIG_USB_STORAGE_ENE_UB6250=m -CONFIG_USB_UAS=y CONFIG_USB_LIBUSUAL=y # diff --git a/patches/linux-3.6.10/0001-Add-dwc_otg-driver.patch b/patches/linux-3.6.11/0001-Add-dwc_otg-driver.patch index 5bd8795..b6c7dbb 100644 --- a/patches/linux-3.6.10/0001-Add-dwc_otg-driver.patch +++ b/patches/linux-3.6.11/0001-Add-dwc_otg-driver.patch @@ -704,7 +704,7 @@ index 69ecd3c..0431b4e 100644 return i; } diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index fe7faf0..a3d4646 100644 +index fe7faf0..a3d4646d 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -25,7 +25,6 @@ @@ -1438,7 +1438,7 @@ index 0000000..a553a9d + diff --git a/drivers/usb/host/dwc_common_port/doc/doxygen.cfg b/drivers/usb/host/dwc_common_port/doc/doxygen.cfg new file mode 100644 -index 0000000..605b9da +index 0000000..605b9dab --- /dev/null +++ b/drivers/usb/host/dwc_common_port/doc/doxygen.cfg @@ -0,0 +1,270 @@ @@ -10758,7 +10758,7 @@ index 0000000..3a7dd71 +} diff --git a/drivers/usb/host/dwc_common_port/dwc_cc.h b/drivers/usb/host/dwc_common_port/dwc_cc.h new file mode 100644 -index 0000000..6b46419 +index 0000000..6b464191 --- /dev/null +++ b/drivers/usb/host/dwc_common_port/dwc_cc.h @@ -0,0 +1,209 @@ diff --git a/patches/linux-3.6.10/0002-Main-bcm2708-linux-port.patch b/patches/linux-3.6.11/0002-Main-bcm2708-linux-port.patch index dae8b43..dae8b43 100644 --- a/patches/linux-3.6.10/0002-Main-bcm2708-linux-port.patch +++ b/patches/linux-3.6.11/0002-Main-bcm2708-linux-port.patch diff --git a/patches/linux-3.6.10/0003-bcm2708-watchdog-driver.patch b/patches/linux-3.6.11/0003-bcm2708-watchdog-driver.patch index b537702..b537702 100644 --- a/patches/linux-3.6.10/0003-bcm2708-watchdog-driver.patch +++ b/patches/linux-3.6.11/0003-bcm2708-watchdog-driver.patch diff --git a/patches/linux-3.6.10/0004-bcm2708-framebuffer-driver.patch b/patches/linux-3.6.11/0004-bcm2708-framebuffer-driver.patch index f3ebda7..f3ebda7 100644 --- a/patches/linux-3.6.10/0004-bcm2708-framebuffer-driver.patch +++ b/patches/linux-3.6.11/0004-bcm2708-framebuffer-driver.patch diff --git a/patches/linux-3.6.10/0005-bcm2708-vchiq-driver.patch b/patches/linux-3.6.11/0005-bcm2708-vchiq-driver.patch index 08016e9..08016e9 100644 --- a/patches/linux-3.6.10/0005-bcm2708-vchiq-driver.patch +++ b/patches/linux-3.6.11/0005-bcm2708-vchiq-driver.patch diff --git a/patches/linux-3.6.10/0006-Allow-mac-address-to-be-set-in-smsc95xx.patch b/patches/linux-3.6.11/0006-Allow-mac-address-to-be-set-in-smsc95xx.patch index 2db0750..2db0750 100644 --- a/patches/linux-3.6.10/0006-Allow-mac-address-to-be-set-in-smsc95xx.patch +++ b/patches/linux-3.6.11/0006-Allow-mac-address-to-be-set-in-smsc95xx.patch diff --git a/patches/linux-3.6.10/0007-Fix-headers-for-vchiq-vcos-to-be-GPLv2.patch b/patches/linux-3.6.11/0007-Fix-headers-for-vchiq-vcos-to-be-GPLv2.patch index f38c111..f38c111 100644 --- a/patches/linux-3.6.10/0007-Fix-headers-for-vchiq-vcos-to-be-GPLv2.patch +++ b/patches/linux-3.6.11/0007-Fix-headers-for-vchiq-vcos-to-be-GPLv2.patch diff --git a/patches/linux-3.6.10/0008-Fix-some-issues-reported.-Lower-case-module-paramete.patch b/patches/linux-3.6.11/0008-Fix-some-issues-reported.-Lower-case-module-paramete.patch index 62a9aa4..62a9aa4 100644 --- a/patches/linux-3.6.10/0008-Fix-some-issues-reported.-Lower-case-module-paramete.patch +++ b/patches/linux-3.6.11/0008-Fix-some-issues-reported.-Lower-case-module-paramete.patch diff --git a/patches/linux-3.6.10/0009-Build-anything-reasonable-as-a-module.-Thanks-to-asb.patch b/patches/linux-3.6.11/0009-Build-anything-reasonable-as-a-module.-Thanks-to-asb.patch index 9c338c6..9c338c6 100644 --- a/patches/linux-3.6.10/0009-Build-anything-reasonable-as-a-module.-Thanks-to-asb.patch +++ b/patches/linux-3.6.11/0009-Build-anything-reasonable-as-a-module.-Thanks-to-asb.patch diff --git a/patches/linux-3.6.10/0010-Add-config-option-to-enable-L2-cache.patch b/patches/linux-3.6.11/0010-Add-config-option-to-enable-L2-cache.patch index 256685d..256685d 100644 --- a/patches/linux-3.6.10/0010-Add-config-option-to-enable-L2-cache.patch +++ b/patches/linux-3.6.11/0010-Add-config-option-to-enable-L2-cache.patch diff --git a/patches/linux-3.6.10/0011-Fix-bug-where-vchiq-fails-when-L2-enabled.patch b/patches/linux-3.6.11/0011-Fix-bug-where-vchiq-fails-when-L2-enabled.patch index cb2633d..cb2633d 100644 --- a/patches/linux-3.6.10/0011-Fix-bug-where-vchiq-fails-when-L2-enabled.patch +++ b/patches/linux-3.6.11/0011-Fix-bug-where-vchiq-fails-when-L2-enabled.patch diff --git a/patches/linux-3.6.10/0012-Add-devtmpfs-for-archlinux-and-emergency-and-debug-c.patch b/patches/linux-3.6.11/0012-Add-devtmpfs-for-archlinux-and-emergency-and-debug-c.patch index f20f0f5..f20f0f5 100644 --- a/patches/linux-3.6.10/0012-Add-devtmpfs-for-archlinux-and-emergency-and-debug-c.patch +++ b/patches/linux-3.6.11/0012-Add-devtmpfs-for-archlinux-and-emergency-and-debug-c.patch diff --git a/patches/linux-3.6.10/0013-Fix-32bpp-framebuffer-by-adding-alpha-bits.patch b/patches/linux-3.6.11/0013-Fix-32bpp-framebuffer-by-adding-alpha-bits.patch index a8a0dee..a8a0dee 100644 --- a/patches/linux-3.6.10/0013-Fix-32bpp-framebuffer-by-adding-alpha-bits.patch +++ b/patches/linux-3.6.11/0013-Fix-32bpp-framebuffer-by-adding-alpha-bits.patch diff --git a/patches/linux-3.6.10/0014-Enable-L2-cache-is-now-the-default.-Invert-sense-of-.patch b/patches/linux-3.6.11/0014-Enable-L2-cache-is-now-the-default.-Invert-sense-of-.patch index 597feb1..597feb1 100644 --- a/patches/linux-3.6.10/0014-Enable-L2-cache-is-now-the-default.-Invert-sense-of-.patch +++ b/patches/linux-3.6.11/0014-Enable-L2-cache-is-now-the-default.-Invert-sense-of-.patch diff --git a/patches/linux-3.6.10/0015-Allow-24bpp-for-framebuffer.patch b/patches/linux-3.6.11/0015-Allow-24bpp-for-framebuffer.patch index ed3cdb3..ed3cdb3 100644 --- a/patches/linux-3.6.10/0015-Allow-24bpp-for-framebuffer.patch +++ b/patches/linux-3.6.11/0015-Allow-24bpp-for-framebuffer.patch diff --git a/patches/linux-3.6.10/0016-Disable-debug-code-in-dwc_otg-driver-unless-CONFIG_U.patch b/patches/linux-3.6.11/0016-Disable-debug-code-in-dwc_otg-driver-unless-CONFIG_U.patch index 072f2e6..072f2e6 100644 --- a/patches/linux-3.6.10/0016-Disable-debug-code-in-dwc_otg-driver-unless-CONFIG_U.patch +++ b/patches/linux-3.6.11/0016-Disable-debug-code-in-dwc_otg-driver-unless-CONFIG_U.patch diff --git a/patches/linux-3.6.10/0017-Enable-high-resolution-timers.patch b/patches/linux-3.6.11/0017-Enable-high-resolution-timers.patch index 087cd48..087cd48 100644 --- a/patches/linux-3.6.10/0017-Enable-high-resolution-timers.patch +++ b/patches/linux-3.6.11/0017-Enable-high-resolution-timers.patch diff --git a/patches/linux-3.6.10/0018-Fix-for-mmc-timeouts-when-erasing-multiple-blocks.patch b/patches/linux-3.6.11/0018-Fix-for-mmc-timeouts-when-erasing-multiple-blocks.patch index c87441b..c87441b 100644 --- a/patches/linux-3.6.10/0018-Fix-for-mmc-timeouts-when-erasing-multiple-blocks.patch +++ b/patches/linux-3.6.11/0018-Fix-for-mmc-timeouts-when-erasing-multiple-blocks.patch diff --git a/patches/linux-3.6.10/0019-Fix-problem-with-dma-that-could-corrupt-sdcard-espec.patch b/patches/linux-3.6.11/0019-Fix-problem-with-dma-that-could-corrupt-sdcard-espec.patch index 46b5149..46b5149 100644 --- a/patches/linux-3.6.10/0019-Fix-problem-with-dma-that-could-corrupt-sdcard-espec.patch +++ b/patches/linux-3.6.11/0019-Fix-problem-with-dma-that-could-corrupt-sdcard-espec.patch diff --git a/patches/linux-3.6.10/0020-Update-to-match-latest-vc-side-vchiq.-Allows-vchiq-c.patch b/patches/linux-3.6.11/0020-Update-to-match-latest-vc-side-vchiq.-Allows-vchiq-c.patch index ca43e6d..ca43e6d 100644 --- a/patches/linux-3.6.10/0020-Update-to-match-latest-vc-side-vchiq.-Allows-vchiq-c.patch +++ b/patches/linux-3.6.11/0020-Update-to-match-latest-vc-side-vchiq.-Allows-vchiq-c.patch diff --git a/patches/linux-3.6.10/0021-First-pass-at-alsa-sound-driver.-Some-functionality-.patch b/patches/linux-3.6.11/0021-First-pass-at-alsa-sound-driver.-Some-functionality-.patch index f4efad2..f4efad2 100644 --- a/patches/linux-3.6.10/0021-First-pass-at-alsa-sound-driver.-Some-functionality-.patch +++ b/patches/linux-3.6.11/0021-First-pass-at-alsa-sound-driver.-Some-functionality-.patch diff --git a/patches/linux-3.6.10/0022-Cast-to-avoid-warning.patch b/patches/linux-3.6.11/0022-Cast-to-avoid-warning.patch index 0aca4f5..0aca4f5 100644 --- a/patches/linux-3.6.10/0022-Cast-to-avoid-warning.patch +++ b/patches/linux-3.6.11/0022-Cast-to-avoid-warning.patch diff --git a/patches/linux-3.6.10/0023-Add-new-ioctl-to-match-latest-vc-side-code.patch b/patches/linux-3.6.11/0023-Add-new-ioctl-to-match-latest-vc-side-code.patch index 4f29eb2..4f29eb2 100644 --- a/patches/linux-3.6.10/0023-Add-new-ioctl-to-match-latest-vc-side-code.patch +++ b/patches/linux-3.6.11/0023-Add-new-ioctl-to-match-latest-vc-side-code.patch diff --git a/patches/linux-3.6.10/0024-Enable-sound-kernel-modules.-Tidy-formatting.-Fix-ct.patch b/patches/linux-3.6.11/0024-Enable-sound-kernel-modules.-Tidy-formatting.-Fix-ct.patch index b4ae6fe..b4ae6fe 100644 --- a/patches/linux-3.6.10/0024-Enable-sound-kernel-modules.-Tidy-formatting.-Fix-ct.patch +++ b/patches/linux-3.6.11/0024-Enable-sound-kernel-modules.-Tidy-formatting.-Fix-ct.patch diff --git a/patches/linux-3.6.10/0025-Add-missing-header-file-update-for-vc_mem-iocts.patch b/patches/linux-3.6.11/0025-Add-missing-header-file-update-for-vc_mem-iocts.patch index 0533e73..0533e73 100644 --- a/patches/linux-3.6.10/0025-Add-missing-header-file-update-for-vc_mem-iocts.patch +++ b/patches/linux-3.6.11/0025-Add-missing-header-file-update-for-vc_mem-iocts.patch diff --git a/patches/linux-3.6.10/0026-Remove-most-of-the-alsa-debug-messages.patch b/patches/linux-3.6.11/0026-Remove-most-of-the-alsa-debug-messages.patch index 8553229..8553229 100644 --- a/patches/linux-3.6.10/0026-Remove-most-of-the-alsa-debug-messages.patch +++ b/patches/linux-3.6.11/0026-Remove-most-of-the-alsa-debug-messages.patch diff --git a/patches/linux-3.6.10/0027-add-temporary-workaround-for-fbset-crashes.patch b/patches/linux-3.6.11/0027-add-temporary-workaround-for-fbset-crashes.patch index 66a028b..66a028b 100644 --- a/patches/linux-3.6.10/0027-add-temporary-workaround-for-fbset-crashes.patch +++ b/patches/linux-3.6.11/0027-add-temporary-workaround-for-fbset-crashes.patch diff --git a/patches/linux-3.6.10/0028-Fix-harmless-base-size-typo.patch b/patches/linux-3.6.11/0028-Fix-harmless-base-size-typo.patch index f4c7bc8..f4c7bc8 100644 --- a/patches/linux-3.6.10/0028-Fix-harmless-base-size-typo.patch +++ b/patches/linux-3.6.11/0028-Fix-harmless-base-size-typo.patch diff --git a/patches/linux-3.6.10/0029-Replace-if-1-sections-by-local-configuration-defines.patch b/patches/linux-3.6.11/0029-Replace-if-1-sections-by-local-configuration-defines.patch index 1e885d0..1e885d0 100644 --- a/patches/linux-3.6.10/0029-Replace-if-1-sections-by-local-configuration-defines.patch +++ b/patches/linux-3.6.11/0029-Replace-if-1-sections-by-local-configuration-defines.patch diff --git a/patches/linux-3.6.10/0030-Don-t-send-data-block-when-emitting-silence.patch b/patches/linux-3.6.11/0030-Don-t-send-data-block-when-emitting-silence.patch index 614831e..614831e 100644 --- a/patches/linux-3.6.10/0030-Don-t-send-data-block-when-emitting-silence.patch +++ b/patches/linux-3.6.11/0030-Don-t-send-data-block-when-emitting-silence.patch diff --git a/patches/linux-3.6.10/0031-Fix-hopefully-for-DWC_MEMCPY-kernel-panics.-Thanks-t.patch b/patches/linux-3.6.11/0031-Fix-hopefully-for-DWC_MEMCPY-kernel-panics.-Thanks-t.patch index 80887ee..80887ee 100644 --- a/patches/linux-3.6.10/0031-Fix-hopefully-for-DWC_MEMCPY-kernel-panics.-Thanks-t.patch +++ b/patches/linux-3.6.11/0031-Fix-hopefully-for-DWC_MEMCPY-kernel-panics.-Thanks-t.patch diff --git a/patches/linux-3.6.10/0032-Build-modules-needed-for-USB-booting-into-kernel.patch b/patches/linux-3.6.11/0032-Build-modules-needed-for-USB-booting-into-kernel.patch index 7b57066..7b57066 100644 --- a/patches/linux-3.6.10/0032-Build-modules-needed-for-USB-booting-into-kernel.patch +++ b/patches/linux-3.6.11/0032-Build-modules-needed-for-USB-booting-into-kernel.patch diff --git a/patches/linux-3.6.10/0033-Whitespace-tidy.-Thanks-Roger.patch b/patches/linux-3.6.11/0033-Whitespace-tidy.-Thanks-Roger.patch index db8329c..db8329c 100644 --- a/patches/linux-3.6.10/0033-Whitespace-tidy.-Thanks-Roger.patch +++ b/patches/linux-3.6.11/0033-Whitespace-tidy.-Thanks-Roger.patch diff --git a/patches/linux-3.6.10/0034-Update-vchiq-to-match-GPU-version.-Should-still-be-c.patch b/patches/linux-3.6.11/0034-Update-vchiq-to-match-GPU-version.-Should-still-be-c.patch index 11de021..11de021 100644 --- a/patches/linux-3.6.10/0034-Update-vchiq-to-match-GPU-version.-Should-still-be-c.patch +++ b/patches/linux-3.6.11/0034-Update-vchiq-to-match-GPU-version.-Should-still-be-c.patch diff --git a/patches/linux-3.6.10/0035-added-support-for-TT-in-the-USB-driver.-Thanks-Naren.patch b/patches/linux-3.6.11/0035-added-support-for-TT-in-the-USB-driver.-Thanks-Naren.patch index da119ea..da119ea 100644 --- a/patches/linux-3.6.10/0035-added-support-for-TT-in-the-USB-driver.-Thanks-Naren.patch +++ b/patches/linux-3.6.11/0035-added-support-for-TT-in-the-USB-driver.-Thanks-Naren.patch diff --git a/patches/linux-3.6.10/0036-Swap-Red-and-Blue-over-in-32bpp-framebuffer-mode.patch b/patches/linux-3.6.11/0036-Swap-Red-and-Blue-over-in-32bpp-framebuffer-mode.patch index a3a891a..a3a891a 100644 --- a/patches/linux-3.6.10/0036-Swap-Red-and-Blue-over-in-32bpp-framebuffer-mode.patch +++ b/patches/linux-3.6.11/0036-Swap-Red-and-Blue-over-in-32bpp-framebuffer-mode.patch diff --git a/patches/linux-3.6.10/0037-Update-emergency-config-to-match-latest-debug-one.patch b/patches/linux-3.6.11/0037-Update-emergency-config-to-match-latest-debug-one.patch index 93bf5aa..93bf5aa 100644 --- a/patches/linux-3.6.10/0037-Update-emergency-config-to-match-latest-debug-one.patch +++ b/patches/linux-3.6.11/0037-Update-emergency-config-to-match-latest-debug-one.patch diff --git a/patches/linux-3.6.10/0038-Use-dwc_alloc_atomic.-Thanks-bootc.patch b/patches/linux-3.6.11/0038-Use-dwc_alloc_atomic.-Thanks-bootc.patch index 6fce20b..6fce20b 100644 --- a/patches/linux-3.6.10/0038-Use-dwc_alloc_atomic.-Thanks-bootc.patch +++ b/patches/linux-3.6.11/0038-Use-dwc_alloc_atomic.-Thanks-bootc.patch diff --git a/patches/linux-3.6.10/0039-possible-fix-for-sdcard-missing-status.-Thank-naren.patch b/patches/linux-3.6.11/0039-possible-fix-for-sdcard-missing-status.-Thank-naren.patch index 80ed865..80ed865 100644 --- a/patches/linux-3.6.10/0039-possible-fix-for-sdcard-missing-status.-Thank-naren.patch +++ b/patches/linux-3.6.11/0039-possible-fix-for-sdcard-missing-status.-Thank-naren.patch diff --git a/patches/linux-3.6.10/0040-Fix-BUG-in-bcm2708_fb_set_par-doesn-t-work-if-the-co.patch b/patches/linux-3.6.11/0040-Fix-BUG-in-bcm2708_fb_set_par-doesn-t-work-if-the-co.patch index 09460a4..09460a4 100644 --- a/patches/linux-3.6.10/0040-Fix-BUG-in-bcm2708_fb_set_par-doesn-t-work-if-the-co.patch +++ b/patches/linux-3.6.11/0040-Fix-BUG-in-bcm2708_fb_set_par-doesn-t-work-if-the-co.patch diff --git a/patches/linux-3.6.10/0041-Fix-for-DWC-OTG-HCD-URB-Dequeue-has-NULL-URB-panic.-.patch b/patches/linux-3.6.11/0041-Fix-for-DWC-OTG-HCD-URB-Dequeue-has-NULL-URB-panic.-.patch index f48afc8..f48afc8 100644 --- a/patches/linux-3.6.10/0041-Fix-for-DWC-OTG-HCD-URB-Dequeue-has-NULL-URB-panic.-.patch +++ b/patches/linux-3.6.11/0041-Fix-for-DWC-OTG-HCD-URB-Dequeue-has-NULL-URB-panic.-.patch diff --git a/patches/linux-3.6.10/0042-Fix-for-bug-in-mbox_read.-Thanks-lp0.patch b/patches/linux-3.6.11/0042-Fix-for-bug-in-mbox_read.-Thanks-lp0.patch index 4a7e3c3..4a7e3c3 100644 --- a/patches/linux-3.6.10/0042-Fix-for-bug-in-mbox_read.-Thanks-lp0.patch +++ b/patches/linux-3.6.11/0042-Fix-for-bug-in-mbox_read.-Thanks-lp0.patch diff --git a/patches/linux-3.6.10/0043-Add-__VCCOREVER__-to-makefile.patch b/patches/linux-3.6.11/0043-Add-__VCCOREVER__-to-makefile.patch index b5aafda..b5aafda 100644 --- a/patches/linux-3.6.10/0043-Add-__VCCOREVER__-to-makefile.patch +++ b/patches/linux-3.6.11/0043-Add-__VCCOREVER__-to-makefile.patch diff --git a/patches/linux-3.6.10/0044-Change-PHYS_OFFSET-to-PLAT_PHYS_OFFSET.patch b/patches/linux-3.6.11/0044-Change-PHYS_OFFSET-to-PLAT_PHYS_OFFSET.patch index e16eac4..e16eac4 100644 --- a/patches/linux-3.6.10/0044-Change-PHYS_OFFSET-to-PLAT_PHYS_OFFSET.patch +++ b/patches/linux-3.6.11/0044-Change-PHYS_OFFSET-to-PLAT_PHYS_OFFSET.patch diff --git a/patches/linux-3.6.10/0045-sdcard-patch-improvements-from-naren.patch b/patches/linux-3.6.11/0045-sdcard-patch-improvements-from-naren.patch index 52ece3b..52ece3b 100644 --- a/patches/linux-3.6.10/0045-sdcard-patch-improvements-from-naren.patch +++ b/patches/linux-3.6.11/0045-sdcard-patch-improvements-from-naren.patch diff --git a/patches/linux-3.6.10/0046-Invert-sense-of-sdcard-access-trigger-OK-LED-so-it-i.patch b/patches/linux-3.6.11/0046-Invert-sense-of-sdcard-access-trigger-OK-LED-so-it-i.patch index 6cc0664..6cc0664 100644 --- a/patches/linux-3.6.10/0046-Invert-sense-of-sdcard-access-trigger-OK-LED-so-it-i.patch +++ b/patches/linux-3.6.11/0046-Invert-sense-of-sdcard-access-trigger-OK-LED-so-it-i.patch diff --git a/patches/linux-3.6.10/0047-Added-power-off-message-to-allow-kexec-to-work.-Than.patch b/patches/linux-3.6.11/0047-Added-power-off-message-to-allow-kexec-to-work.-Than.patch index 4277a9b..4277a9b 100644 --- a/patches/linux-3.6.10/0047-Added-power-off-message-to-allow-kexec-to-work.-Than.patch +++ b/patches/linux-3.6.11/0047-Added-power-off-message-to-allow-kexec-to-work.-Than.patch diff --git a/patches/linux-3.6.10/0048-remove-unwanted-file.patch b/patches/linux-3.6.11/0048-remove-unwanted-file.patch index b2fc796..b2fc796 100644 --- a/patches/linux-3.6.10/0048-remove-unwanted-file.patch +++ b/patches/linux-3.6.11/0048-remove-unwanted-file.patch diff --git a/patches/linux-3.6.10/0049-Enable-PREEMPT-and-SCHED_AUTOGROUP.patch b/patches/linux-3.6.11/0049-Enable-PREEMPT-and-SCHED_AUTOGROUP.patch index 02c5dd7..02c5dd7 100644 --- a/patches/linux-3.6.10/0049-Enable-PREEMPT-and-SCHED_AUTOGROUP.patch +++ b/patches/linux-3.6.11/0049-Enable-PREEMPT-and-SCHED_AUTOGROUP.patch diff --git a/patches/linux-3.6.10/0050-Added-support-for-USB-webcams.patch b/patches/linux-3.6.11/0050-Added-support-for-USB-webcams.patch index 0e39e19..0e39e19 100644 --- a/patches/linux-3.6.10/0050-Added-support-for-USB-webcams.patch +++ b/patches/linux-3.6.11/0050-Added-support-for-USB-webcams.patch diff --git a/patches/linux-3.6.10/0051-Enable-ipv6-due-to-popular-demand.patch b/patches/linux-3.6.11/0051-Enable-ipv6-due-to-popular-demand.patch index 223f3d7..223f3d7 100644 --- a/patches/linux-3.6.10/0051-Enable-ipv6-due-to-popular-demand.patch +++ b/patches/linux-3.6.11/0051-Enable-ipv6-due-to-popular-demand.patch diff --git a/patches/linux-3.6.10/0052-Fix-regression-in-debug-kernel-config-options.patch b/patches/linux-3.6.11/0052-Fix-regression-in-debug-kernel-config-options.patch index 027e98c..027e98c 100644 --- a/patches/linux-3.6.10/0052-Fix-regression-in-debug-kernel-config-options.patch +++ b/patches/linux-3.6.11/0052-Fix-regression-in-debug-kernel-config-options.patch diff --git a/patches/linux-3.6.10/0053-bcm2835-ctl-fix-alsamixer-control.patch b/patches/linux-3.6.11/0053-bcm2835-ctl-fix-alsamixer-control.patch index 726a5da..726a5da 100644 --- a/patches/linux-3.6.10/0053-bcm2835-ctl-fix-alsamixer-control.patch +++ b/patches/linux-3.6.11/0053-bcm2835-ctl-fix-alsamixer-control.patch diff --git a/patches/linux-3.6.10/0054-bcm2835-ctl-limit-maximal-volume-to-4db.patch b/patches/linux-3.6.11/0054-bcm2835-ctl-limit-maximal-volume-to-4db.patch index 87d7d17..87d7d17 100644 --- a/patches/linux-3.6.10/0054-bcm2835-ctl-limit-maximal-volume-to-4db.patch +++ b/patches/linux-3.6.11/0054-bcm2835-ctl-limit-maximal-volume-to-4db.patch diff --git a/patches/linux-3.6.10/0055-Add-iptables-and-devtmpfs_mount-to-non-cutdown-confi.patch b/patches/linux-3.6.11/0055-Add-iptables-and-devtmpfs_mount-to-non-cutdown-confi.patch index 2f3dd68..2f3dd68 100644 --- a/patches/linux-3.6.10/0055-Add-iptables-and-devtmpfs_mount-to-non-cutdown-confi.patch +++ b/patches/linux-3.6.11/0055-Add-iptables-and-devtmpfs_mount-to-non-cutdown-confi.patch diff --git a/patches/linux-3.6.10/0056-sdhci-bcm2708-speed-up-DMA-sync.patch b/patches/linux-3.6.11/0056-sdhci-bcm2708-speed-up-DMA-sync.patch index a529cd4..a529cd4 100644 --- a/patches/linux-3.6.10/0056-sdhci-bcm2708-speed-up-DMA-sync.patch +++ b/patches/linux-3.6.11/0056-sdhci-bcm2708-speed-up-DMA-sync.patch diff --git a/patches/linux-3.6.10/0057-sdhci-bcm2708-remove-custom-clock-handling.patch b/patches/linux-3.6.11/0057-sdhci-bcm2708-remove-custom-clock-handling.patch index efe862f..efe862f 100644 --- a/patches/linux-3.6.10/0057-sdhci-bcm2708-remove-custom-clock-handling.patch +++ b/patches/linux-3.6.11/0057-sdhci-bcm2708-remove-custom-clock-handling.patch diff --git a/patches/linux-3.6.10/0058-sdhci-bcm2708-add-additional-quirks.patch b/patches/linux-3.6.11/0058-sdhci-bcm2708-add-additional-quirks.patch index 54e1ef8..54e1ef8 100644 --- a/patches/linux-3.6.10/0058-sdhci-bcm2708-add-additional-quirks.patch +++ b/patches/linux-3.6.11/0058-sdhci-bcm2708-add-additional-quirks.patch diff --git a/patches/linux-3.6.10/0059-sdhci-bcm2708-add-allow_highspeed-parameter.patch b/patches/linux-3.6.11/0059-sdhci-bcm2708-add-allow_highspeed-parameter.patch index f101260..f101260 100644 --- a/patches/linux-3.6.10/0059-sdhci-bcm2708-add-allow_highspeed-parameter.patch +++ b/patches/linux-3.6.11/0059-sdhci-bcm2708-add-allow_highspeed-parameter.patch diff --git a/patches/linux-3.6.10/0060-sdhci-bcm2708-assume-50-MHz-eMMC-clock.patch b/patches/linux-3.6.11/0060-sdhci-bcm2708-assume-50-MHz-eMMC-clock.patch index f19e29f..f19e29f 100644 --- a/patches/linux-3.6.10/0060-sdhci-bcm2708-assume-50-MHz-eMMC-clock.patch +++ b/patches/linux-3.6.11/0060-sdhci-bcm2708-assume-50-MHz-eMMC-clock.patch diff --git a/patches/linux-3.6.10/0061-Allow-emmc-clock-to-be-specified-as-command-line-par.patch b/patches/linux-3.6.11/0061-Allow-emmc-clock-to-be-specified-as-command-line-par.patch index 16ff96b..16ff96b 100644 --- a/patches/linux-3.6.10/0061-Allow-emmc-clock-to-be-specified-as-command-line-par.patch +++ b/patches/linux-3.6.11/0061-Allow-emmc-clock-to-be-specified-as-command-line-par.patch diff --git a/patches/linux-3.6.10/0062-sdhci-bcm2708-raise-DMA-sync-timeout.patch b/patches/linux-3.6.11/0062-sdhci-bcm2708-raise-DMA-sync-timeout.patch index f5cfca6..f5cfca6 100644 --- a/patches/linux-3.6.10/0062-sdhci-bcm2708-raise-DMA-sync-timeout.patch +++ b/patches/linux-3.6.11/0062-sdhci-bcm2708-raise-DMA-sync-timeout.patch diff --git a/patches/linux-3.6.10/0063-Fix-bool-int-error.patch b/patches/linux-3.6.11/0063-Fix-bool-int-error.patch index 1bbeaba..1bbeaba 100644 --- a/patches/linux-3.6.10/0063-Fix-bool-int-error.patch +++ b/patches/linux-3.6.11/0063-Fix-bool-int-error.patch diff --git a/patches/linux-3.6.10/0064-Fix-bool-int-error-part-2.patch b/patches/linux-3.6.11/0064-Fix-bool-int-error-part-2.patch index d56c1b2..d56c1b2 100644 --- a/patches/linux-3.6.10/0064-Fix-bool-int-error-part-2.patch +++ b/patches/linux-3.6.11/0064-Fix-bool-int-error-part-2.patch diff --git a/patches/linux-3.6.10/0065-More-config-options-for-iptables-device-mapper-PPP_M.patch b/patches/linux-3.6.11/0065-More-config-options-for-iptables-device-mapper-PPP_M.patch index 4b8f871..4b8f871 100644 --- a/patches/linux-3.6.10/0065-More-config-options-for-iptables-device-mapper-PPP_M.patch +++ b/patches/linux-3.6.11/0065-More-config-options-for-iptables-device-mapper-PPP_M.patch diff --git a/patches/linux-3.6.10/0066-Explicitly-set-usb-host-channels-to-8-as-in-the-spec.patch b/patches/linux-3.6.11/0066-Explicitly-set-usb-host-channels-to-8-as-in-the-spec.patch index d9317dc..d9317dc 100644 --- a/patches/linux-3.6.10/0066-Explicitly-set-usb-host-channels-to-8-as-in-the-spec.patch +++ b/patches/linux-3.6.11/0066-Explicitly-set-usb-host-channels-to-8-as-in-the-spec.patch diff --git a/patches/linux-3.6.10/0067-Add-hfs-hfsplus-modules.patch b/patches/linux-3.6.11/0067-Add-hfs-hfsplus-modules.patch index a12d2c6..a12d2c6 100644 --- a/patches/linux-3.6.10/0067-Add-hfs-hfsplus-modules.patch +++ b/patches/linux-3.6.11/0067-Add-hfs-hfsplus-modules.patch diff --git a/patches/linux-3.6.10/0068-Remove-silence-method-and-use-atomic-flags-for-kmall.patch b/patches/linux-3.6.11/0068-Remove-silence-method-and-use-atomic-flags-for-kmall.patch index 4eccfaf..4eccfaf 100644 --- a/patches/linux-3.6.10/0068-Remove-silence-method-and-use-atomic-flags-for-kmall.patch +++ b/patches/linux-3.6.11/0068-Remove-silence-method-and-use-atomic-flags-for-kmall.patch diff --git a/patches/linux-3.6.10/0069-Fix-unintended-line-swap-that-cause-cause-memory-lea.patch b/patches/linux-3.6.11/0069-Fix-unintended-line-swap-that-cause-cause-memory-lea.patch index 36411a7..36411a7 100644 --- a/patches/linux-3.6.10/0069-Fix-unintended-line-swap-that-cause-cause-memory-lea.patch +++ b/patches/linux-3.6.11/0069-Fix-unintended-line-swap-that-cause-cause-memory-lea.patch diff --git a/patches/linux-3.6.10/0070-Use-ndelay-rather-than-udelay.-Thanks-lb.patch b/patches/linux-3.6.11/0070-Use-ndelay-rather-than-udelay.-Thanks-lb.patch index 6d70880..6d70880 100644 --- a/patches/linux-3.6.10/0070-Use-ndelay-rather-than-udelay.-Thanks-lb.patch +++ b/patches/linux-3.6.11/0070-Use-ndelay-rather-than-udelay.-Thanks-lb.patch diff --git a/patches/linux-3.6.10/0071-Add-NFSD.-Add-some-dvb-options.-Add-CONFIG_LOCALVERS.patch b/patches/linux-3.6.11/0071-Add-NFSD.-Add-some-dvb-options.-Add-CONFIG_LOCALVERS.patch index 18123c3..18123c3 100644 --- a/patches/linux-3.6.10/0071-Add-NFSD.-Add-some-dvb-options.-Add-CONFIG_LOCALVERS.patch +++ b/patches/linux-3.6.11/0071-Add-NFSD.-Add-some-dvb-options.-Add-CONFIG_LOCALVERS.patch diff --git a/patches/linux-3.6.10/0072-Fixed-issue-with-some-keyboards-giving-too-much-data.patch b/patches/linux-3.6.11/0072-Fixed-issue-with-some-keyboards-giving-too-much-data.patch index 1fd1eb7..1fd1eb7 100644 --- a/patches/linux-3.6.10/0072-Fixed-issue-with-some-keyboards-giving-too-much-data.patch +++ b/patches/linux-3.6.11/0072-Fixed-issue-with-some-keyboards-giving-too-much-data.patch diff --git a/patches/linux-3.6.10/0073-Add-802.1q-vlan-module.patch b/patches/linux-3.6.11/0073-Add-802.1q-vlan-module.patch index 375a778..375a778 100644 --- a/patches/linux-3.6.10/0073-Add-802.1q-vlan-module.patch +++ b/patches/linux-3.6.11/0073-Add-802.1q-vlan-module.patch diff --git a/patches/linux-3.6.10/0074-Add-interrupt-support-to-gpio-driver.-Thanks-Mrkva.patch b/patches/linux-3.6.11/0074-Add-interrupt-support-to-gpio-driver.-Thanks-Mrkva.patch index 8ea98b3..8ea98b3 100644 --- a/patches/linux-3.6.10/0074-Add-interrupt-support-to-gpio-driver.-Thanks-Mrkva.patch +++ b/patches/linux-3.6.11/0074-Add-interrupt-support-to-gpio-driver.-Thanks-Mrkva.patch diff --git a/patches/linux-3.6.10/0075-Add-a-pm_power_off-function-that-resets-us-and-indic.patch b/patches/linux-3.6.11/0075-Add-a-pm_power_off-function-that-resets-us-and-indic.patch index f305bf7..f305bf7 100644 --- a/patches/linux-3.6.10/0075-Add-a-pm_power_off-function-that-resets-us-and-indic.patch +++ b/patches/linux-3.6.11/0075-Add-a-pm_power_off-function-that-resets-us-and-indic.patch diff --git a/patches/linux-3.6.10/0076-Store-palette-info-where-GPU-can-see-it-so-8bpp-mode.patch b/patches/linux-3.6.11/0076-Store-palette-info-where-GPU-can-see-it-so-8bpp-mode.patch index 53679b9..53679b9 100644 --- a/patches/linux-3.6.10/0076-Store-palette-info-where-GPU-can-see-it-so-8bpp-mode.patch +++ b/patches/linux-3.6.11/0076-Store-palette-info-where-GPU-can-see-it-so-8bpp-mode.patch diff --git a/patches/linux-3.6.10/0077-Avoid-blanking-console-when-not-in-palettised-mode.patch b/patches/linux-3.6.11/0077-Avoid-blanking-console-when-not-in-palettised-mode.patch index dbf2312..dbf2312 100644 --- a/patches/linux-3.6.10/0077-Avoid-blanking-console-when-not-in-palettised-mode.patch +++ b/patches/linux-3.6.11/0077-Avoid-blanking-console-when-not-in-palettised-mode.patch diff --git a/patches/linux-3.6.10/0078-Add-mechanism-to-reduce-the-number-of-SOF-interrupts.patch b/patches/linux-3.6.11/0078-Add-mechanism-to-reduce-the-number-of-SOF-interrupts.patch index 4269c15..4269c15 100644 --- a/patches/linux-3.6.10/0078-Add-mechanism-to-reduce-the-number-of-SOF-interrupts.patch +++ b/patches/linux-3.6.11/0078-Add-mechanism-to-reduce-the-number-of-SOF-interrupts.patch diff --git a/patches/linux-3.6.10/0079-Updating-dwc_otg-driver-to-fix-issue-releasing-pcm-s.patch b/patches/linux-3.6.11/0079-Updating-dwc_otg-driver-to-fix-issue-releasing-pcm-s.patch index f1cc6d7..f1cc6d7 100644 --- a/patches/linux-3.6.10/0079-Updating-dwc_otg-driver-to-fix-issue-releasing-pcm-s.patch +++ b/patches/linux-3.6.11/0079-Updating-dwc_otg-driver-to-fix-issue-releasing-pcm-s.patch diff --git a/patches/linux-3.6.10/0080-Backport-of-Chris-Boot-s-i2c-and-spi-drivers.patch b/patches/linux-3.6.11/0080-Backport-of-Chris-Boot-s-i2c-and-spi-drivers.patch index 88419ce..88419ce 100644 --- a/patches/linux-3.6.10/0080-Backport-of-Chris-Boot-s-i2c-and-spi-drivers.patch +++ b/patches/linux-3.6.11/0080-Backport-of-Chris-Boot-s-i2c-and-spi-drivers.patch diff --git a/patches/linux-3.6.10/0081-forgotten-files.patch b/patches/linux-3.6.11/0081-forgotten-files.patch index 80a8699..80a8699 100644 --- a/patches/linux-3.6.10/0081-forgotten-files.patch +++ b/patches/linux-3.6.11/0081-forgotten-files.patch diff --git a/patches/linux-3.6.10/0082-Enable-I2C-and-SPI-modules-in-full-config.patch b/patches/linux-3.6.11/0082-Enable-I2C-and-SPI-modules-in-full-config.patch index ce4c3ff..ce4c3ff 100644 --- a/patches/linux-3.6.10/0082-Enable-I2C-and-SPI-modules-in-full-config.patch +++ b/patches/linux-3.6.11/0082-Enable-I2C-and-SPI-modules-in-full-config.patch diff --git a/patches/linux-3.6.10/0083-Possible-fix-for-failure-to-boot-with-compressed-ker.patch b/patches/linux-3.6.11/0083-Possible-fix-for-failure-to-boot-with-compressed-ker.patch index 9a10c35..9a10c35 100644 --- a/patches/linux-3.6.10/0083-Possible-fix-for-failure-to-boot-with-compressed-ker.patch +++ b/patches/linux-3.6.11/0083-Possible-fix-for-failure-to-boot-with-compressed-ker.patch diff --git a/patches/linux-3.6.10/0084-Another-try-at-fixing-compressed-kernel-booting.patch b/patches/linux-3.6.11/0084-Another-try-at-fixing-compressed-kernel-booting.patch index 1ab0414..1ab0414 100644 --- a/patches/linux-3.6.10/0084-Another-try-at-fixing-compressed-kernel-booting.patch +++ b/patches/linux-3.6.11/0084-Another-try-at-fixing-compressed-kernel-booting.patch diff --git a/patches/linux-3.6.10/0085-Add-missing-UART0_CLOCK-from-last-commit.patch b/patches/linux-3.6.11/0085-Add-missing-UART0_CLOCK-from-last-commit.patch index 6f824fa..6f824fa 100644 --- a/patches/linux-3.6.10/0085-Add-missing-UART0_CLOCK-from-last-commit.patch +++ b/patches/linux-3.6.11/0085-Add-missing-UART0_CLOCK-from-last-commit.patch diff --git a/patches/linux-3.6.10/0086-Change-to-add-SCSI-tape-support-as-loadable-modules-.patch b/patches/linux-3.6.11/0086-Change-to-add-SCSI-tape-support-as-loadable-modules-.patch index d483def..d483def 100644 --- a/patches/linux-3.6.10/0086-Change-to-add-SCSI-tape-support-as-loadable-modules-.patch +++ b/patches/linux-3.6.11/0086-Change-to-add-SCSI-tape-support-as-loadable-modules-.patch diff --git a/patches/linux-3.6.10/0087-Add-temporary-fix-for-hang-when-quitting-X.patch b/patches/linux-3.6.11/0087-Add-temporary-fix-for-hang-when-quitting-X.patch index 773e91d..773e91d 100644 --- a/patches/linux-3.6.10/0087-Add-temporary-fix-for-hang-when-quitting-X.patch +++ b/patches/linux-3.6.11/0087-Add-temporary-fix-for-hang-when-quitting-X.patch diff --git a/patches/linux-3.6.10/0088-Better-fix-for-quitting-X-hang.-Interrupted-mailbox-.patch b/patches/linux-3.6.11/0088-Better-fix-for-quitting-X-hang.-Interrupted-mailbox-.patch index 8eb76a3..8eb76a3 100644 --- a/patches/linux-3.6.10/0088-Better-fix-for-quitting-X-hang.-Interrupted-mailbox-.patch +++ b/patches/linux-3.6.11/0088-Better-fix-for-quitting-X-hang.-Interrupted-mailbox-.patch diff --git a/patches/linux-3.6.10/0089-Add-sync_after_dma-module-parameter.patch b/patches/linux-3.6.11/0089-Add-sync_after_dma-module-parameter.patch index 28e3730..28e3730 100644 --- a/patches/linux-3.6.10/0089-Add-sync_after_dma-module-parameter.patch +++ b/patches/linux-3.6.11/0089-Add-sync_after_dma-module-parameter.patch diff --git a/patches/linux-3.6.10/0090-Add-SPI_SPI_DEV-module.patch b/patches/linux-3.6.11/0090-Add-SPI_SPI_DEV-module.patch index c60f63a..c60f63a 100644 --- a/patches/linux-3.6.10/0090-Add-SPI_SPI_DEV-module.patch +++ b/patches/linux-3.6.11/0090-Add-SPI_SPI_DEV-module.patch diff --git a/patches/linux-3.6.10/0091-Fix-var.width-var.height.-They-actually-mean-display.patch b/patches/linux-3.6.11/0091-Fix-var.width-var.height.-They-actually-mean-display.patch index 66d10ae..66d10ae 100644 --- a/patches/linux-3.6.10/0091-Fix-var.width-var.height.-They-actually-mean-display.patch +++ b/patches/linux-3.6.11/0091-Fix-var.width-var.height.-They-actually-mean-display.patch diff --git a/patches/linux-3.6.10/0092-The-TIMER_PERIOD-should-be-calculated-using-the-time.patch b/patches/linux-3.6.11/0092-The-TIMER_PERIOD-should-be-calculated-using-the-time.patch index 835ecec..835ecec 100644 --- a/patches/linux-3.6.10/0092-The-TIMER_PERIOD-should-be-calculated-using-the-time.patch +++ b/patches/linux-3.6.11/0092-The-TIMER_PERIOD-should-be-calculated-using-the-time.patch diff --git a/patches/linux-3.6.10/0093-update-bcmrpi_defconfig-with-various-user-requests.patch b/patches/linux-3.6.11/0093-update-bcmrpi_defconfig-with-various-user-requests.patch index 0fec7de..0fec7de 100644 --- a/patches/linux-3.6.10/0093-update-bcmrpi_defconfig-with-various-user-requests.patch +++ b/patches/linux-3.6.11/0093-update-bcmrpi_defconfig-with-various-user-requests.patch diff --git a/patches/linux-3.6.10/0094-Possible-fix-for-USB-packets-going-missing.-Thank-gs.patch b/patches/linux-3.6.11/0094-Possible-fix-for-USB-packets-going-missing.-Thank-gs.patch index b474871..b474871 100644 --- a/patches/linux-3.6.10/0094-Possible-fix-for-USB-packets-going-missing.-Thank-gs.patch +++ b/patches/linux-3.6.11/0094-Possible-fix-for-USB-packets-going-missing.-Thank-gs.patch diff --git a/patches/linux-3.6.10/0095-Revert-Possible-fix-for-USB-packets-going-missing.-T.patch b/patches/linux-3.6.11/0095-Revert-Possible-fix-for-USB-packets-going-missing.-T.patch index 39fea4d..39fea4d 100644 --- a/patches/linux-3.6.10/0095-Revert-Possible-fix-for-USB-packets-going-missing.-T.patch +++ b/patches/linux-3.6.11/0095-Revert-Possible-fix-for-USB-packets-going-missing.-T.patch diff --git a/patches/linux-3.6.10/0096-dwc_common_port-remove-unused-cruft-with-onerous-dep.patch b/patches/linux-3.6.11/0096-dwc_common_port-remove-unused-cruft-with-onerous-dep.patch index 9d167fe..9d167fe 100644 --- a/patches/linux-3.6.10/0096-dwc_common_port-remove-unused-cruft-with-onerous-dep.patch +++ b/patches/linux-3.6.11/0096-dwc_common_port-remove-unused-cruft-with-onerous-dep.patch diff --git a/patches/linux-3.6.10/0097-arm-remove-divdi3-it-s-not-necessary-at-all.patch b/patches/linux-3.6.11/0097-arm-remove-divdi3-it-s-not-necessary-at-all.patch index c8c6830..c8c6830 100644 --- a/patches/linux-3.6.10/0097-arm-remove-divdi3-it-s-not-necessary-at-all.patch +++ b/patches/linux-3.6.11/0097-arm-remove-divdi3-it-s-not-necessary-at-all.patch diff --git a/patches/linux-3.6.10/0098-Remove-some-patch-backup-files.patch b/patches/linux-3.6.11/0098-Remove-some-patch-backup-files.patch index 85f5c2d..85f5c2d 100644 --- a/patches/linux-3.6.10/0098-Remove-some-patch-backup-files.patch +++ b/patches/linux-3.6.11/0098-Remove-some-patch-backup-files.patch diff --git a/patches/linux-3.6.10/0099-mach-bcm2708-fix-mach-debug-macro.S-so-that-early-pr.patch b/patches/linux-3.6.11/0099-mach-bcm2708-fix-mach-debug-macro.S-so-that-early-pr.patch index 54a14bd..54a14bd 100644 --- a/patches/linux-3.6.10/0099-mach-bcm2708-fix-mach-debug-macro.S-so-that-early-pr.patch +++ b/patches/linux-3.6.11/0099-mach-bcm2708-fix-mach-debug-macro.S-so-that-early-pr.patch diff --git a/patches/linux-3.6.10/0100-sound-arm-bcm2835.c-add-linux-module.h-include.patch b/patches/linux-3.6.11/0100-sound-arm-bcm2835.c-add-linux-module.h-include.patch index 648cd96..648cd96 100644 --- a/patches/linux-3.6.10/0100-sound-arm-bcm2835.c-add-linux-module.h-include.patch +++ b/patches/linux-3.6.11/0100-sound-arm-bcm2835.c-add-linux-module.h-include.patch diff --git a/patches/linux-3.6.10/0101-vcos-add-linux-kernel.h-include.patch b/patches/linux-3.6.11/0101-vcos-add-linux-kernel.h-include.patch index 722adb3..722adb3 100644 --- a/patches/linux-3.6.10/0101-vcos-add-linux-kernel.h-include.patch +++ b/patches/linux-3.6.11/0101-vcos-add-linux-kernel.h-include.patch diff --git a/patches/linux-3.6.10/0102-bcm2708-update-for-3.2-kernel.patch b/patches/linux-3.6.11/0102-bcm2708-update-for-3.2-kernel.patch index e5ca868..e5ca868 100644 --- a/patches/linux-3.6.10/0102-bcm2708-update-for-3.2-kernel.patch +++ b/patches/linux-3.6.11/0102-bcm2708-update-for-3.2-kernel.patch diff --git a/patches/linux-3.6.10/0103-bcm2708-use-a-constant-SC_MULT-SC_SHIFT.patch b/patches/linux-3.6.11/0103-bcm2708-use-a-constant-SC_MULT-SC_SHIFT.patch index e6fb65f..e6fb65f 100644 --- a/patches/linux-3.6.10/0103-bcm2708-use-a-constant-SC_MULT-SC_SHIFT.patch +++ b/patches/linux-3.6.11/0103-bcm2708-use-a-constant-SC_MULT-SC_SHIFT.patch diff --git a/patches/linux-3.6.10/0104-Sync-with-bootc-s-file.patch b/patches/linux-3.6.11/0104-Sync-with-bootc-s-file.patch index 8d6b243..8d6b243 100644 --- a/patches/linux-3.6.10/0104-Sync-with-bootc-s-file.patch +++ b/patches/linux-3.6.11/0104-Sync-with-bootc-s-file.patch diff --git a/patches/linux-3.6.10/0105-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch b/patches/linux-3.6.11/0105-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch index 4ae61d8..4ae61d8 100644 --- a/patches/linux-3.6.10/0105-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch +++ b/patches/linux-3.6.11/0105-sdhci-bcm2708-use-extension-FIFO-to-buffer-DMA-trans.patch diff --git a/patches/linux-3.6.10/0106-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch b/patches/linux-3.6.11/0106-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch index ea16c1e..ea16c1e 100644 --- a/patches/linux-3.6.10/0106-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch +++ b/patches/linux-3.6.11/0106-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch diff --git a/patches/linux-3.6.10/0107-Add-module-parameter-for-missing_status-quirk.-sdhci.patch b/patches/linux-3.6.11/0107-Add-module-parameter-for-missing_status-quirk.-sdhci.patch index 74c83e5..74c83e5 100644 --- a/patches/linux-3.6.10/0107-Add-module-parameter-for-missing_status-quirk.-sdhci.patch +++ b/patches/linux-3.6.11/0107-Add-module-parameter-for-missing_status-quirk.-sdhci.patch diff --git a/patches/linux-3.6.10/0108-Some-fixed-for-ALSA.-Mute-and-volume-changing-should.patch b/patches/linux-3.6.11/0108-Some-fixed-for-ALSA.-Mute-and-volume-changing-should.patch index a8a6419..a8a6419 100644 --- a/patches/linux-3.6.10/0108-Some-fixed-for-ALSA.-Mute-and-volume-changing-should.patch +++ b/patches/linux-3.6.11/0108-Some-fixed-for-ALSA.-Mute-and-volume-changing-should.patch diff --git a/patches/linux-3.6.10/0109-Fix-spinlock-recursion-in-sdhci-bcm2708.c.patch b/patches/linux-3.6.11/0109-Fix-spinlock-recursion-in-sdhci-bcm2708.c.patch index 5bf0927..5bf0927 100644 --- a/patches/linux-3.6.10/0109-Fix-spinlock-recursion-in-sdhci-bcm2708.c.patch +++ b/patches/linux-3.6.11/0109-Fix-spinlock-recursion-in-sdhci-bcm2708.c.patch diff --git a/patches/linux-3.6.10/0110-Revert-Add-mechanism-to-reduce-the-number-of-SOF-int.patch b/patches/linux-3.6.11/0110-Revert-Add-mechanism-to-reduce-the-number-of-SOF-int.patch index 9c9b9a9..9c9b9a9 100644 --- a/patches/linux-3.6.10/0110-Revert-Add-mechanism-to-reduce-the-number-of-SOF-int.patch +++ b/patches/linux-3.6.11/0110-Revert-Add-mechanism-to-reduce-the-number-of-SOF-int.patch diff --git a/patches/linux-3.6.10/0111-Enable-CONFIG_CRYPTO_XTS.patch b/patches/linux-3.6.11/0111-Enable-CONFIG_CRYPTO_XTS.patch index 2566d3b..2566d3b 100644 --- a/patches/linux-3.6.10/0111-Enable-CONFIG_CRYPTO_XTS.patch +++ b/patches/linux-3.6.11/0111-Enable-CONFIG_CRYPTO_XTS.patch diff --git a/patches/linux-3.6.10/0112-Update-Synopsys-USB-OTG-driver-to-v2.94a-and-disable.patch b/patches/linux-3.6.11/0112-Update-Synopsys-USB-OTG-driver-to-v2.94a-and-disable.patch index 505902b..c5020e2 100644 --- a/patches/linux-3.6.10/0112-Update-Synopsys-USB-OTG-driver-to-v2.94a-and-disable.patch +++ b/patches/linux-3.6.11/0112-Update-Synopsys-USB-OTG-driver-to-v2.94a-and-disable.patch @@ -9929,7 +9929,7 @@ index 3a7dd71..613c901 diff --git a/drivers/usb/host/dwc_common_port/dwc_cc.h b/drivers/usb/host/dwc_common_port/dwc_cc.h old mode 100644 new mode 100755 -index 6b46419..6b2bbaf +index 6b464191..6b2bbaf --- a/drivers/usb/host/dwc_common_port/dwc_cc.h +++ b/drivers/usb/host/dwc_common_port/dwc_cc.h @@ -1,8 +1,8 @@ diff --git a/patches/linux-3.6.10/0113-Merged-in-microframe-scheduler-currently-disabled.-E.patch b/patches/linux-3.6.11/0113-Merged-in-microframe-scheduler-currently-disabled.-E.patch index 921b30a..921b30a 100644 --- a/patches/linux-3.6.10/0113-Merged-in-microframe-scheduler-currently-disabled.-E.patch +++ b/patches/linux-3.6.11/0113-Merged-in-microframe-scheduler-currently-disabled.-E.patch diff --git a/patches/linux-3.6.10/0114-Make-microframe-schedule-patch-a-little-closer-to-de.patch b/patches/linux-3.6.11/0114-Make-microframe-schedule-patch-a-little-closer-to-de.patch index c206501..c206501 100644 --- a/patches/linux-3.6.10/0114-Make-microframe-schedule-patch-a-little-closer-to-de.patch +++ b/patches/linux-3.6.11/0114-Make-microframe-schedule-patch-a-little-closer-to-de.patch diff --git a/patches/linux-3.6.10/0115-Remove-remove-documentation-from-the-source-tree.patch b/patches/linux-3.6.11/0115-Remove-remove-documentation-from-the-source-tree.patch index 3f214b0..3f214b0 100644 --- a/patches/linux-3.6.10/0115-Remove-remove-documentation-from-the-source-tree.patch +++ b/patches/linux-3.6.11/0115-Remove-remove-documentation-from-the-source-tree.patch diff --git a/patches/linux-3.6.10/0116-Fix-for-broken-GPIO-with-3.2-kernel.patch b/patches/linux-3.6.11/0116-Fix-for-broken-GPIO-with-3.2-kernel.patch index c6271db..c6271db 100644 --- a/patches/linux-3.6.10/0116-Fix-for-broken-GPIO-with-3.2-kernel.patch +++ b/patches/linux-3.6.11/0116-Fix-for-broken-GPIO-with-3.2-kernel.patch diff --git a/patches/linux-3.6.10/0117-Revert-Disable-IRQs-in-dwc_otg_hcd_qh_free-because-D.patch b/patches/linux-3.6.11/0117-Revert-Disable-IRQs-in-dwc_otg_hcd_qh_free-because-D.patch index ce9c7db..ce9c7db 100644 --- a/patches/linux-3.6.10/0117-Revert-Disable-IRQs-in-dwc_otg_hcd_qh_free-because-D.patch +++ b/patches/linux-3.6.11/0117-Revert-Disable-IRQs-in-dwc_otg_hcd_qh_free-because-D.patch diff --git a/patches/linux-3.6.10/0118-Regenerate-defconfigs-for-udpated-kernel-verision.patch b/patches/linux-3.6.11/0118-Regenerate-defconfigs-for-udpated-kernel-verision.patch index ce3957d..ce3957d 100644 --- a/patches/linux-3.6.10/0118-Regenerate-defconfigs-for-udpated-kernel-verision.patch +++ b/patches/linux-3.6.11/0118-Regenerate-defconfigs-for-udpated-kernel-verision.patch diff --git a/patches/linux-3.6.10/0119-Another-fix-for-10-second-hang-on-closing-sound-driv.patch b/patches/linux-3.6.11/0119-Another-fix-for-10-second-hang-on-closing-sound-driv.patch index d7790e6..d7790e6 100644 --- a/patches/linux-3.6.10/0119-Another-fix-for-10-second-hang-on-closing-sound-driv.patch +++ b/patches/linux-3.6.11/0119-Another-fix-for-10-second-hang-on-closing-sound-driv.patch diff --git a/patches/linux-3.6.10/0120-amba-pl011-Don-t-send-a-character-during-startup.patch b/patches/linux-3.6.11/0120-amba-pl011-Don-t-send-a-character-during-startup.patch index d8e922a..d8e922a 100644 --- a/patches/linux-3.6.10/0120-amba-pl011-Don-t-send-a-character-during-startup.patch +++ b/patches/linux-3.6.11/0120-amba-pl011-Don-t-send-a-character-during-startup.patch diff --git a/patches/linux-3.6.10/0121-Revert-Regenerate-defconfigs-for-udpated-kernel-veri.patch b/patches/linux-3.6.11/0121-Revert-Regenerate-defconfigs-for-udpated-kernel-veri.patch index 1b54d67..1b54d67 100644 --- a/patches/linux-3.6.10/0121-Revert-Regenerate-defconfigs-for-udpated-kernel-veri.patch +++ b/patches/linux-3.6.11/0121-Revert-Regenerate-defconfigs-for-udpated-kernel-veri.patch diff --git a/patches/linux-3.6.10/0122-Regenerate-defconfigs-for-updated-kernel-verision-tr.patch b/patches/linux-3.6.11/0122-Regenerate-defconfigs-for-updated-kernel-verision-tr.patch index 9b34995..9b34995 100644 --- a/patches/linux-3.6.10/0122-Regenerate-defconfigs-for-updated-kernel-verision-tr.patch +++ b/patches/linux-3.6.11/0122-Regenerate-defconfigs-for-updated-kernel-verision-tr.patch diff --git a/patches/linux-3.6.10/0123-Read-memory-size-for-vc_mem-through-mailbox-property.patch b/patches/linux-3.6.11/0123-Read-memory-size-for-vc_mem-through-mailbox-property.patch index a012c3b..a012c3b 100644 --- a/patches/linux-3.6.10/0123-Read-memory-size-for-vc_mem-through-mailbox-property.patch +++ b/patches/linux-3.6.11/0123-Read-memory-size-for-vc_mem-through-mailbox-property.patch diff --git a/patches/linux-3.6.10/0124-Revert-amba-pl011-Don-t-send-a-character-during-star.patch b/patches/linux-3.6.11/0124-Revert-amba-pl011-Don-t-send-a-character-during-star.patch index b53d461..b53d461 100644 --- a/patches/linux-3.6.10/0124-Revert-amba-pl011-Don-t-send-a-character-during-star.patch +++ b/patches/linux-3.6.11/0124-Revert-amba-pl011-Don-t-send-a-character-during-star.patch diff --git a/patches/linux-3.6.10/0125-Update-to-dwc_otg-3.00.-Seems-to-be-a-very-minor-upd.patch b/patches/linux-3.6.11/0125-Update-to-dwc_otg-3.00.-Seems-to-be-a-very-minor-upd.patch index 40c1aca..40c1aca 100644 --- a/patches/linux-3.6.10/0125-Update-to-dwc_otg-3.00.-Seems-to-be-a-very-minor-upd.patch +++ b/patches/linux-3.6.11/0125-Update-to-dwc_otg-3.00.-Seems-to-be-a-very-minor-upd.patch diff --git a/patches/linux-3.6.10/0126-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch b/patches/linux-3.6.11/0126-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch index 6fbd0d0..6fbd0d0 100644 --- a/patches/linux-3.6.10/0126-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch +++ b/patches/linux-3.6.11/0126-enabling-the-realtime-clock-1-wire-chip-DS1307-and-1.patch diff --git a/patches/linux-3.6.10/0127-Switch-of-tracing-options-in-kernel.-Costs-20-in-ipe.patch b/patches/linux-3.6.11/0127-Switch-of-tracing-options-in-kernel.-Costs-20-in-ipe.patch index 59546e0..59546e0 100644 --- a/patches/linux-3.6.10/0127-Switch-of-tracing-options-in-kernel.-Costs-20-in-ipe.patch +++ b/patches/linux-3.6.11/0127-Switch-of-tracing-options-in-kernel.-Costs-20-in-ipe.patch diff --git a/patches/linux-3.6.10/0128-Turn-on-microframe_schedule-by-default.-Can-still-be.patch b/patches/linux-3.6.11/0128-Turn-on-microframe_schedule-by-default.-Can-still-be.patch index 8743b26..8743b26 100644 --- a/patches/linux-3.6.10/0128-Turn-on-microframe_schedule-by-default.-Can-still-be.patch +++ b/patches/linux-3.6.11/0128-Turn-on-microframe_schedule-by-default.-Can-still-be.patch diff --git a/patches/linux-3.6.10/0129-Add-low-latency-mode-to-sdcard-driver.-Enable-with-s.patch b/patches/linux-3.6.11/0129-Add-low-latency-mode-to-sdcard-driver.-Enable-with-s.patch index 0d348b0..0d348b0 100644 --- a/patches/linux-3.6.10/0129-Add-low-latency-mode-to-sdcard-driver.-Enable-with-s.patch +++ b/patches/linux-3.6.11/0129-Add-low-latency-mode-to-sdcard-driver.-Enable-with-s.patch diff --git a/patches/linux-3.6.10/0130-Fix-build-for-non-preempt-case.-Fix-warning.patch b/patches/linux-3.6.11/0130-Fix-build-for-non-preempt-case.-Fix-warning.patch index 55e5dd7..55e5dd7 100644 --- a/patches/linux-3.6.10/0130-Fix-build-for-non-preempt-case.-Fix-warning.patch +++ b/patches/linux-3.6.11/0130-Fix-build-for-non-preempt-case.-Fix-warning.patch diff --git a/patches/linux-3.6.10/0131-Add-config-options-to-allow-iotop-to-run.patch b/patches/linux-3.6.11/0131-Add-config-options-to-allow-iotop-to-run.patch index 7d814fc..7d814fc 100644 --- a/patches/linux-3.6.10/0131-Add-config-options-to-allow-iotop-to-run.patch +++ b/patches/linux-3.6.11/0131-Add-config-options-to-allow-iotop-to-run.patch diff --git a/patches/linux-3.6.10/0132-Fix-for-vmalloc-failure-with-modprobe-and-cutdown-ke.patch b/patches/linux-3.6.11/0132-Fix-for-vmalloc-failure-with-modprobe-and-cutdown-ke.patch index 121ca5e..121ca5e 100644 --- a/patches/linux-3.6.10/0132-Fix-for-vmalloc-failure-with-modprobe-and-cutdown-ke.patch +++ b/patches/linux-3.6.11/0132-Fix-for-vmalloc-failure-with-modprobe-and-cutdown-ke.patch diff --git a/patches/linux-3.6.10/0133-Enable-low-latency-mode-by-default-in-sdcard-driver..patch b/patches/linux-3.6.11/0133-Enable-low-latency-mode-by-default-in-sdcard-driver..patch index d69ecec..d69ecec 100644 --- a/patches/linux-3.6.10/0133-Enable-low-latency-mode-by-default-in-sdcard-driver..patch +++ b/patches/linux-3.6.11/0133-Enable-low-latency-mode-by-default-in-sdcard-driver..patch diff --git a/patches/linux-3.6.10/0134-Add-FIQ-patch-to-dwc_otg-driver.-Enable-with-dwc_otg.patch b/patches/linux-3.6.11/0134-Add-FIQ-patch-to-dwc_otg-driver.-Enable-with-dwc_otg.patch index b0a85c2..b0a85c2 100644 --- a/patches/linux-3.6.10/0134-Add-FIQ-patch-to-dwc_otg-driver.-Enable-with-dwc_otg.patch +++ b/patches/linux-3.6.11/0134-Add-FIQ-patch-to-dwc_otg-driver.-Enable-with-dwc_otg.patch diff --git a/patches/linux-3.6.10/0135-Fix-typo.patch b/patches/linux-3.6.11/0135-Fix-typo.patch index c33a89b..c33a89b 100644 --- a/patches/linux-3.6.10/0135-Fix-typo.patch +++ b/patches/linux-3.6.11/0135-Fix-typo.patch diff --git a/patches/linux-3.6.10/0136-Add-non-mainline-source-for-rtl8188cu-wireless-drive.patch b/patches/linux-3.6.11/0136-Add-non-mainline-source-for-rtl8188cu-wireless-drive.patch index 4ca82f2..4ca82f2 100644 --- a/patches/linux-3.6.10/0136-Add-non-mainline-source-for-rtl8188cu-wireless-drive.patch +++ b/patches/linux-3.6.11/0136-Add-non-mainline-source-for-rtl8188cu-wireless-drive.patch diff --git a/patches/linux-3.6.10/0137-Add-verious-user-config-requests.patch b/patches/linux-3.6.11/0137-Add-verious-user-config-requests.patch index daa698c..daa698c 100644 --- a/patches/linux-3.6.10/0137-Add-verious-user-config-requests.patch +++ b/patches/linux-3.6.11/0137-Add-verious-user-config-requests.patch diff --git a/patches/linux-3.6.10/0138-Don-t-believe-KDIR-is-required-when-building-as-part.patch b/patches/linux-3.6.11/0138-Don-t-believe-KDIR-is-required-when-building-as-part.patch index a20e558..a20e558 100644 --- a/patches/linux-3.6.10/0138-Don-t-believe-KDIR-is-required-when-building-as-part.patch +++ b/patches/linux-3.6.11/0138-Don-t-believe-KDIR-is-required-when-building-as-part.patch diff --git a/patches/linux-3.6.10/0139-Avoid-dynamic-memory-allocation-for-channel-lock-in-.patch b/patches/linux-3.6.11/0139-Avoid-dynamic-memory-allocation-for-channel-lock-in-.patch index 8dbf226..8dbf226 100644 --- a/patches/linux-3.6.10/0139-Avoid-dynamic-memory-allocation-for-channel-lock-in-.patch +++ b/patches/linux-3.6.11/0139-Avoid-dynamic-memory-allocation-for-channel-lock-in-.patch diff --git a/patches/linux-3.6.10/0140-Add-cpufreq-driver.patch b/patches/linux-3.6.11/0140-Add-cpufreq-driver.patch index 9d65631..9d65631 100644 --- a/patches/linux-3.6.10/0140-Add-cpufreq-driver.patch +++ b/patches/linux-3.6.11/0140-Add-cpufreq-driver.patch diff --git a/patches/linux-3.6.10/0141-Tidy-up-debug-messages.patch b/patches/linux-3.6.11/0141-Tidy-up-debug-messages.patch index aab7536..aab7536 100644 --- a/patches/linux-3.6.10/0141-Tidy-up-debug-messages.patch +++ b/patches/linux-3.6.11/0141-Tidy-up-debug-messages.patch diff --git a/patches/linux-3.6.10/0142-Enable-fiq-fix-by-default.-Add-NAK-holdoff-scheme.-E.patch b/patches/linux-3.6.11/0142-Enable-fiq-fix-by-default.-Add-NAK-holdoff-scheme.-E.patch index 6b88b23..6b88b23 100644 --- a/patches/linux-3.6.10/0142-Enable-fiq-fix-by-default.-Add-NAK-holdoff-scheme.-E.patch +++ b/patches/linux-3.6.11/0142-Enable-fiq-fix-by-default.-Add-NAK-holdoff-scheme.-E.patch diff --git a/patches/linux-3.6.10/0143-Added-hwmon-thermal-driver-for-reporting-core-temper.patch b/patches/linux-3.6.11/0143-Added-hwmon-thermal-driver-for-reporting-core-temper.patch index b4de9e9..b4de9e9 100644 --- a/patches/linux-3.6.10/0143-Added-hwmon-thermal-driver-for-reporting-core-temper.patch +++ b/patches/linux-3.6.11/0143-Added-hwmon-thermal-driver-for-reporting-core-temper.patch diff --git a/patches/linux-3.6.10/0144-Add-config-options-for-thermal-sensor-L2TP-RT2800USB.patch b/patches/linux-3.6.11/0144-Add-config-options-for-thermal-sensor-L2TP-RT2800USB.patch index 575264d..575264d 100644 --- a/patches/linux-3.6.10/0144-Add-config-options-for-thermal-sensor-L2TP-RT2800USB.patch +++ b/patches/linux-3.6.11/0144-Add-config-options-for-thermal-sensor-L2TP-RT2800USB.patch diff --git a/patches/linux-3.6.10/0145-Remove-some-unnecessary-dmesg-output.patch b/patches/linux-3.6.11/0145-Remove-some-unnecessary-dmesg-output.patch index abac942..abac942 100644 --- a/patches/linux-3.6.10/0145-Remove-some-unnecessary-dmesg-output.patch +++ b/patches/linux-3.6.11/0145-Remove-some-unnecessary-dmesg-output.patch diff --git a/patches/linux-3.6.10/0146-Switch-to-powersave-governor.-We-ll-enable-ondemand-.patch b/patches/linux-3.6.11/0146-Switch-to-powersave-governor.-We-ll-enable-ondemand-.patch index 19aebba..19aebba 100644 --- a/patches/linux-3.6.10/0146-Switch-to-powersave-governor.-We-ll-enable-ondemand-.patch +++ b/patches/linux-3.6.11/0146-Switch-to-powersave-governor.-We-ll-enable-ondemand-.patch diff --git a/patches/linux-3.6.10/0147-Enable-multiple-ALSA-channels.patch b/patches/linux-3.6.11/0147-Enable-multiple-ALSA-channels.patch index 145c1ea..145c1ea 100644 --- a/patches/linux-3.6.10/0147-Enable-multiple-ALSA-channels.patch +++ b/patches/linux-3.6.11/0147-Enable-multiple-ALSA-channels.patch diff --git a/patches/linux-3.6.10/0148-Remove-vcos-abstraction-layer-from-ALSA-driver.-Than.patch b/patches/linux-3.6.11/0148-Remove-vcos-abstraction-layer-from-ALSA-driver.-Than.patch index 48a0dee..48a0dee 100644 --- a/patches/linux-3.6.10/0148-Remove-vcos-abstraction-layer-from-ALSA-driver.-Than.patch +++ b/patches/linux-3.6.11/0148-Remove-vcos-abstraction-layer-from-ALSA-driver.-Than.patch diff --git a/patches/linux-3.6.10/0149-Fix-Kernel-OOPS-in-SDHCI-on-boot-with-the-llm-patch..patch b/patches/linux-3.6.11/0149-Fix-Kernel-OOPS-in-SDHCI-on-boot-with-the-llm-patch..patch index d7e8f07..d7e8f07 100644 --- a/patches/linux-3.6.10/0149-Fix-Kernel-OOPS-in-SDHCI-on-boot-with-the-llm-patch..patch +++ b/patches/linux-3.6.11/0149-Fix-Kernel-OOPS-in-SDHCI-on-boot-with-the-llm-patch..patch diff --git a/patches/linux-3.6.10/0150-Use-system-timer-for-udelay-so-unaffected-by-cpufreq.patch b/patches/linux-3.6.11/0150-Use-system-timer-for-udelay-so-unaffected-by-cpufreq.patch index 0afef5d..0afef5d 100644 --- a/patches/linux-3.6.10/0150-Use-system-timer-for-udelay-so-unaffected-by-cpufreq.patch +++ b/patches/linux-3.6.11/0150-Use-system-timer-for-udelay-so-unaffected-by-cpufreq.patch diff --git a/patches/linux-3.6.10/0151-Move-__delay-function-into-assembly-to-get-accurate-.patch b/patches/linux-3.6.11/0151-Move-__delay-function-into-assembly-to-get-accurate-.patch index 1b8a9b1..1b8a9b1 100644 --- a/patches/linux-3.6.10/0151-Move-__delay-function-into-assembly-to-get-accurate-.patch +++ b/patches/linux-3.6.11/0151-Move-__delay-function-into-assembly-to-get-accurate-.patch diff --git a/patches/linux-3.6.10/0152-set-i2c-speed-via-module-parameter-or-menuconfig.-Th.patch b/patches/linux-3.6.11/0152-set-i2c-speed-via-module-parameter-or-menuconfig.-Th.patch index 61ede15..61ede15 100644 --- a/patches/linux-3.6.10/0152-set-i2c-speed-via-module-parameter-or-menuconfig.-Th.patch +++ b/patches/linux-3.6.11/0152-set-i2c-speed-via-module-parameter-or-menuconfig.-Th.patch diff --git a/patches/linux-3.6.10/0153-Allow-the-number-of-cycles-delay-between-sdcard-peri.patch b/patches/linux-3.6.11/0153-Allow-the-number-of-cycles-delay-between-sdcard-peri.patch index e0df1d8..e0df1d8 100644 --- a/patches/linux-3.6.10/0153-Allow-the-number-of-cycles-delay-between-sdcard-peri.patch +++ b/patches/linux-3.6.11/0153-Allow-the-number-of-cycles-delay-between-sdcard-peri.patch diff --git a/patches/linux-3.6.10/0154-Fix-vc-mem-by-using-module-parameters.patch b/patches/linux-3.6.11/0154-Fix-vc-mem-by-using-module-parameters.patch index f7038d8..f7038d8 100644 --- a/patches/linux-3.6.10/0154-Fix-vc-mem-by-using-module-parameters.patch +++ b/patches/linux-3.6.11/0154-Fix-vc-mem-by-using-module-parameters.patch diff --git a/patches/linux-3.6.10/0155-Move-to-version-5-of-VCHIQ.-Note-this-requires-a-cor.patch b/patches/linux-3.6.11/0155-Move-to-version-5-of-VCHIQ.-Note-this-requires-a-cor.patch index 59bcdd3..59bcdd3 100644 --- a/patches/linux-3.6.10/0155-Move-to-version-5-of-VCHIQ.-Note-this-requires-a-cor.patch +++ b/patches/linux-3.6.11/0155-Move-to-version-5-of-VCHIQ.-Note-this-requires-a-cor.patch diff --git a/patches/linux-3.6.10/0156-Add-in-missed-vchiq-files.patch b/patches/linux-3.6.11/0156-Add-in-missed-vchiq-files.patch index 2f9e1a4..2f9e1a4 100644 --- a/patches/linux-3.6.10/0156-Add-in-missed-vchiq-files.patch +++ b/patches/linux-3.6.11/0156-Add-in-missed-vchiq-files.patch diff --git a/patches/linux-3.6.10/0157-Make-vchiq-enabled-by-default.-Tidy-Kconfig-file.patch b/patches/linux-3.6.11/0157-Make-vchiq-enabled-by-default.-Tidy-Kconfig-file.patch index 2993506..2993506 100644 --- a/patches/linux-3.6.10/0157-Make-vchiq-enabled-by-default.-Tidy-Kconfig-file.patch +++ b/patches/linux-3.6.11/0157-Make-vchiq-enabled-by-default.-Tidy-Kconfig-file.patch diff --git a/patches/linux-3.6.10/0158-Support-dummy-vc-mem-ioctl-used-by-vcdbg.patch b/patches/linux-3.6.11/0158-Support-dummy-vc-mem-ioctl-used-by-vcdbg.patch index 7549236..7549236 100644 --- a/patches/linux-3.6.10/0158-Support-dummy-vc-mem-ioctl-used-by-vcdbg.patch +++ b/patches/linux-3.6.11/0158-Support-dummy-vc-mem-ioctl-used-by-vcdbg.patch diff --git a/patches/linux-3.6.10/0159-Remove-BUG-call-from-vchiq-that-is-trigger-when-alsa.patch b/patches/linux-3.6.11/0159-Remove-BUG-call-from-vchiq-that-is-trigger-when-alsa.patch index d6794cd..d6794cd 100644 --- a/patches/linux-3.6.10/0159-Remove-BUG-call-from-vchiq-that-is-trigger-when-alsa.patch +++ b/patches/linux-3.6.11/0159-Remove-BUG-call-from-vchiq-that-is-trigger-when-alsa.patch diff --git a/patches/linux-3.6.10/0160-Fix-up-issues-with-rebase.patch b/patches/linux-3.6.11/0160-Fix-up-issues-with-rebase.patch index a689c59..a689c59 100644 --- a/patches/linux-3.6.10/0160-Fix-up-issues-with-rebase.patch +++ b/patches/linux-3.6.11/0160-Fix-up-issues-with-rebase.patch diff --git a/patches/linux-3.6.10/0161-Add-vc_cma-driver-to-enable-use-of-CMA.patch b/patches/linux-3.6.11/0161-Add-vc_cma-driver-to-enable-use-of-CMA.patch index afc7d79..afc7d79 100644 --- a/patches/linux-3.6.10/0161-Add-vc_cma-driver-to-enable-use-of-CMA.patch +++ b/patches/linux-3.6.11/0161-Add-vc_cma-driver-to-enable-use-of-CMA.patch diff --git a/patches/linux-3.6.10/0162-Add-missing-CMA-files.patch b/patches/linux-3.6.11/0162-Add-missing-CMA-files.patch index 72fc13c..72fc13c 100644 --- a/patches/linux-3.6.10/0162-Add-missing-CMA-files.patch +++ b/patches/linux-3.6.11/0162-Add-missing-CMA-files.patch diff --git a/patches/linux-3.6.10/0163-Fix-reboot-with-new-restart-method-of-machine-driver.patch b/patches/linux-3.6.11/0163-Fix-reboot-with-new-restart-method-of-machine-driver.patch index f864d60..f864d60 100644 --- a/patches/linux-3.6.10/0163-Fix-reboot-with-new-restart-method-of-machine-driver.patch +++ b/patches/linux-3.6.11/0163-Fix-reboot-with-new-restart-method-of-machine-driver.patch diff --git a/patches/linux-3.6.10/0164-smsc95xx-sleep-before-read-for-lengthy-operations.patch b/patches/linux-3.6.11/0164-smsc95xx-sleep-before-read-for-lengthy-operations.patch index eb7b4d8..eb7b4d8 100644 --- a/patches/linux-3.6.10/0164-smsc95xx-sleep-before-read-for-lengthy-operations.patch +++ b/patches/linux-3.6.11/0164-smsc95xx-sleep-before-read-for-lengthy-operations.patch diff --git a/patches/linux-3.6.10/0165-smsc95xx-remove-unnecessary-variables.patch b/patches/linux-3.6.11/0165-smsc95xx-remove-unnecessary-variables.patch index d45ee58..d45ee58 100644 --- a/patches/linux-3.6.10/0165-smsc95xx-remove-unnecessary-variables.patch +++ b/patches/linux-3.6.11/0165-smsc95xx-remove-unnecessary-variables.patch diff --git a/patches/linux-3.6.10/0166-smsc95xx-check-return-code-from-control-messages.patch b/patches/linux-3.6.11/0166-smsc95xx-check-return-code-from-control-messages.patch index d194d98..d194d98 100644 --- a/patches/linux-3.6.10/0166-smsc95xx-check-return-code-from-control-messages.patch +++ b/patches/linux-3.6.11/0166-smsc95xx-check-return-code-from-control-messages.patch diff --git a/patches/linux-3.6.10/0167-smsc95xx-fix-resume-when-usb-device-is-reset.patch b/patches/linux-3.6.11/0167-smsc95xx-fix-resume-when-usb-device-is-reset.patch index 9284a08..9284a08 100644 --- a/patches/linux-3.6.10/0167-smsc95xx-fix-resume-when-usb-device-is-reset.patch +++ b/patches/linux-3.6.11/0167-smsc95xx-fix-resume-when-usb-device-is-reset.patch diff --git a/patches/linux-3.6.10/0168-smsc95xx-enable-power-saving-mode-during-system-susp.patch b/patches/linux-3.6.11/0168-smsc95xx-enable-power-saving-mode-during-system-susp.patch index c4c17df..c4c17df 100644 --- a/patches/linux-3.6.10/0168-smsc95xx-enable-power-saving-mode-during-system-susp.patch +++ b/patches/linux-3.6.11/0168-smsc95xx-enable-power-saving-mode-during-system-susp.patch diff --git a/patches/linux-3.6.10/0169-smsc95xx-add-wol-magic-packet-support.patch b/patches/linux-3.6.11/0169-smsc95xx-add-wol-magic-packet-support.patch index 6fc371a..6fc371a 100644 --- a/patches/linux-3.6.10/0169-smsc95xx-add-wol-magic-packet-support.patch +++ b/patches/linux-3.6.11/0169-smsc95xx-add-wol-magic-packet-support.patch diff --git a/patches/linux-3.6.10/0170-smsc95xx-fix-tx-checksum-offload-for-big-endian.patch b/patches/linux-3.6.11/0170-smsc95xx-fix-tx-checksum-offload-for-big-endian.patch index bf2ffa9..bf2ffa9 100644 --- a/patches/linux-3.6.10/0170-smsc95xx-fix-tx-checksum-offload-for-big-endian.patch +++ b/patches/linux-3.6.11/0170-smsc95xx-fix-tx-checksum-offload-for-big-endian.patch diff --git a/patches/linux-3.6.10/0171-Update-to-latest-vchiq.patch b/patches/linux-3.6.11/0171-Update-to-latest-vchiq.patch index d1365b9..d1365b9 100644 --- a/patches/linux-3.6.10/0171-Update-to-latest-vchiq.patch +++ b/patches/linux-3.6.11/0171-Update-to-latest-vchiq.patch diff --git a/patches/linux-3.6.10/0172-Make-sure-we-wait-for-the-reset-to-finish.patch b/patches/linux-3.6.11/0172-Make-sure-we-wait-for-the-reset-to-finish.patch index 0fce113..0fce113 100644 --- a/patches/linux-3.6.10/0172-Make-sure-we-wait-for-the-reset-to-finish.patch +++ b/patches/linux-3.6.11/0172-Make-sure-we-wait-for-the-reset-to-finish.patch diff --git a/patches/linux-3.6.10/0173-Add-missing-pctv452e-DVB-module.patch b/patches/linux-3.6.11/0173-Add-missing-pctv452e-DVB-module.patch index 01f2cbb..01f2cbb 100644 --- a/patches/linux-3.6.10/0173-Add-missing-pctv452e-DVB-module.patch +++ b/patches/linux-3.6.11/0173-Add-missing-pctv452e-DVB-module.patch diff --git a/patches/linux-3.6.10/0174-Add-Simon-Hall-s-dma-helper-module-useful-in-future-.patch b/patches/linux-3.6.11/0174-Add-Simon-Hall-s-dma-helper-module-useful-in-future-.patch index 5bdb234..5bdb234 100644 --- a/patches/linux-3.6.10/0174-Add-Simon-Hall-s-dma-helper-module-useful-in-future-.patch +++ b/patches/linux-3.6.11/0174-Add-Simon-Hall-s-dma-helper-module-useful-in-future-.patch diff --git a/patches/linux-3.6.10/0175-Add-missing-options-from-more-recent-3.2.27-kernel-c.patch b/patches/linux-3.6.11/0175-Add-missing-options-from-more-recent-3.2.27-kernel-c.patch index 05aa8f1..05aa8f1 100644 --- a/patches/linux-3.6.10/0175-Add-missing-options-from-more-recent-3.2.27-kernel-c.patch +++ b/patches/linux-3.6.11/0175-Add-missing-options-from-more-recent-3.2.27-kernel-c.patch diff --git a/patches/linux-3.6.10/0176-lirc-added-support-for-RaspberryPi-GPIO.patch b/patches/linux-3.6.11/0176-lirc-added-support-for-RaspberryPi-GPIO.patch index decd167..decd167 100644 --- a/patches/linux-3.6.10/0176-lirc-added-support-for-RaspberryPi-GPIO.patch +++ b/patches/linux-3.6.11/0176-lirc-added-support-for-RaspberryPi-GPIO.patch diff --git a/patches/linux-3.6.10/0177-Enable-building-of-lirc-rpi.patch b/patches/linux-3.6.11/0177-Enable-building-of-lirc-rpi.patch index 9c0f6f5..9c0f6f5 100644 --- a/patches/linux-3.6.10/0177-Enable-building-of-lirc-rpi.patch +++ b/patches/linux-3.6.11/0177-Enable-building-of-lirc-rpi.patch diff --git a/patches/linux-3.6.10/0178-Update-list-of-modules-build-with-next-kernel.-Fixes.patch b/patches/linux-3.6.11/0178-Update-list-of-modules-build-with-next-kernel.-Fixes.patch index e898f3f..e898f3f 100644 --- a/patches/linux-3.6.10/0178-Update-list-of-modules-build-with-next-kernel.-Fixes.patch +++ b/patches/linux-3.6.11/0178-Update-list-of-modules-build-with-next-kernel.-Fixes.patch diff --git a/patches/linux-3.6.10/0179-Avoid-the-high-load-and-block-task-messages-by-start.patch b/patches/linux-3.6.11/0179-Avoid-the-high-load-and-block-task-messages-by-start.patch index 7957eaf..7957eaf 100644 --- a/patches/linux-3.6.10/0179-Avoid-the-high-load-and-block-task-messages-by-start.patch +++ b/patches/linux-3.6.11/0179-Avoid-the-high-load-and-block-task-messages-by-start.patch diff --git a/patches/linux-3.6.10/0180-Enable-CMA-in-defconfig.patch b/patches/linux-3.6.11/0180-Enable-CMA-in-defconfig.patch index 38ad511..38ad511 100644 --- a/patches/linux-3.6.10/0180-Enable-CMA-in-defconfig.patch +++ b/patches/linux-3.6.11/0180-Enable-CMA-in-defconfig.patch diff --git a/patches/linux-3.6.10/0181-Avoid-undefined-symbol-in-radio-shark.ko.patch b/patches/linux-3.6.11/0181-Avoid-undefined-symbol-in-radio-shark.ko.patch index fbd3aa5..fbd3aa5 100644 --- a/patches/linux-3.6.10/0181-Avoid-undefined-symbol-in-radio-shark.ko.patch +++ b/patches/linux-3.6.11/0181-Avoid-undefined-symbol-in-radio-shark.ko.patch diff --git a/patches/linux-3.6.10/0182-Allow-mailbox-driver-to-be-called-from-user-code-tho.patch b/patches/linux-3.6.11/0182-Allow-mailbox-driver-to-be-called-from-user-code-tho.patch index 701203e..701203e 100644 --- a/patches/linux-3.6.10/0182-Allow-mailbox-driver-to-be-called-from-user-code-tho.patch +++ b/patches/linux-3.6.11/0182-Allow-mailbox-driver-to-be-called-from-user-code-tho.patch diff --git a/patches/linux-3.6.10/0183-usbnet-ratelimit-kevent-may-have-been-dropped-warnin.patch b/patches/linux-3.6.11/0183-usbnet-ratelimit-kevent-may-have-been-dropped-warnin.patch index 0d4e622..0d4e622 100644 --- a/patches/linux-3.6.10/0183-usbnet-ratelimit-kevent-may-have-been-dropped-warnin.patch +++ b/patches/linux-3.6.11/0183-usbnet-ratelimit-kevent-may-have-been-dropped-warnin.patch diff --git a/patches/linux-3.6.10/0184-Lazy-CRC-quirk-Implemented-retrying-mechanisms-for-S.patch b/patches/linux-3.6.11/0184-Lazy-CRC-quirk-Implemented-retrying-mechanisms-for-S.patch index ff3b024..ff3b024 100644 --- a/patches/linux-3.6.10/0184-Lazy-CRC-quirk-Implemented-retrying-mechanisms-for-S.patch +++ b/patches/linux-3.6.11/0184-Lazy-CRC-quirk-Implemented-retrying-mechanisms-for-S.patch diff --git a/patches/linux-3.6.10/0185-Leave-missing_status-enabled-for-now.patch b/patches/linux-3.6.11/0185-Leave-missing_status-enabled-for-now.patch index edd28da..edd28da 100644 --- a/patches/linux-3.6.10/0185-Leave-missing_status-enabled-for-now.patch +++ b/patches/linux-3.6.11/0185-Leave-missing_status-enabled-for-now.patch diff --git a/patches/linux-3.6.10/0186-Update-to-latest-cma-and-vchiq.patch b/patches/linux-3.6.11/0186-Update-to-latest-cma-and-vchiq.patch index d44ef04..d44ef04 100644 --- a/patches/linux-3.6.10/0186-Update-to-latest-cma-and-vchiq.patch +++ b/patches/linux-3.6.11/0186-Update-to-latest-cma-and-vchiq.patch diff --git a/patches/linux-3.6.10/0187-Allow-CMA-pool-to-be-shared-with-other-drivers.patch b/patches/linux-3.6.11/0187-Allow-CMA-pool-to-be-shared-with-other-drivers.patch index 6cf8839..6cf8839 100644 --- a/patches/linux-3.6.10/0187-Allow-CMA-pool-to-be-shared-with-other-drivers.patch +++ b/patches/linux-3.6.11/0187-Allow-CMA-pool-to-be-shared-with-other-drivers.patch diff --git a/patches/linux-3.6.10/0188-Add-CoDel-network-scheduling.-Add-HIDRAW.-Remove-CMA.patch b/patches/linux-3.6.11/0188-Add-CoDel-network-scheduling.-Add-HIDRAW.-Remove-CMA.patch index 2c9ecde..2c9ecde 100644 --- a/patches/linux-3.6.10/0188-Add-CoDel-network-scheduling.-Add-HIDRAW.-Remove-CMA.patch +++ b/patches/linux-3.6.11/0188-Add-CoDel-network-scheduling.-Add-HIDRAW.-Remove-CMA.patch diff --git a/patches/linux-3.6.10/0189-Default-to-dwc_otp.lpm_enable-0.patch b/patches/linux-3.6.11/0189-Default-to-dwc_otp.lpm_enable-0.patch index 01cd3b3..01cd3b3 100644 --- a/patches/linux-3.6.10/0189-Default-to-dwc_otp.lpm_enable-0.patch +++ b/patches/linux-3.6.11/0189-Default-to-dwc_otp.lpm_enable-0.patch diff --git a/patches/linux-3.6.10/0190-Add-CONFIG_CFG80211_WEXT-and-CONFIG_MMC_SPI.patch b/patches/linux-3.6.11/0190-Add-CONFIG_CFG80211_WEXT-and-CONFIG_MMC_SPI.patch index d0aa8a5..d0aa8a5 100644 --- a/patches/linux-3.6.10/0190-Add-CONFIG_CFG80211_WEXT-and-CONFIG_MMC_SPI.patch +++ b/patches/linux-3.6.11/0190-Add-CONFIG_CFG80211_WEXT-and-CONFIG_MMC_SPI.patch diff --git a/patches/linux-3.6.10/0191-Increase-default-coherent-pool-so-vchiq-starts-up.patch b/patches/linux-3.6.11/0191-Increase-default-coherent-pool-so-vchiq-starts-up.patch index 0adaa73..0adaa73 100644 --- a/patches/linux-3.6.10/0191-Increase-default-coherent-pool-so-vchiq-starts-up.patch +++ b/patches/linux-3.6.11/0191-Increase-default-coherent-pool-so-vchiq-starts-up.patch diff --git a/patches/linux-3.6.10/0192-net-use-bigger-pages-in-__netdev_alloc_frag.patch b/patches/linux-3.6.11/0192-net-use-bigger-pages-in-__netdev_alloc_frag.patch index 29a4f9a..29a4f9a 100644 --- a/patches/linux-3.6.10/0192-net-use-bigger-pages-in-__netdev_alloc_frag.patch +++ b/patches/linux-3.6.11/0192-net-use-bigger-pages-in-__netdev_alloc_frag.patch diff --git a/patches/linux-3.6.10/0193-Bluetooth-Increase-HCI-command-tx-timeout.patch b/patches/linux-3.6.11/0193-Bluetooth-Increase-HCI-command-tx-timeout.patch index 2feed76..2feed76 100644 --- a/patches/linux-3.6.10/0193-Bluetooth-Increase-HCI-command-tx-timeout.patch +++ b/patches/linux-3.6.11/0193-Bluetooth-Increase-HCI-command-tx-timeout.patch diff --git a/patches/linux-3.6.10/0194-Dual-licence-Broadcom-code-under-BSD-and-GPL.patch b/patches/linux-3.6.11/0194-Dual-licence-Broadcom-code-under-BSD-and-GPL.patch index 67bee16..67bee16 100644 --- a/patches/linux-3.6.10/0194-Dual-licence-Broadcom-code-under-BSD-and-GPL.patch +++ b/patches/linux-3.6.11/0194-Dual-licence-Broadcom-code-under-BSD-and-GPL.patch diff --git a/patches/linux-3.6.11/0195-Update-to-Simon-s-latest-dmaer-module.patch b/patches/linux-3.6.11/0195-Update-to-Simon-s-latest-dmaer-module.patch new file mode 100644 index 0000000..e0d9dca --- /dev/null +++ b/patches/linux-3.6.11/0195-Update-to-Simon-s-latest-dmaer-module.patch @@ -0,0 +1,1201 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Wed, 19 Dec 2012 22:38:45 +0000 +Subject: [PATCH] Update to Simon's latest dmaer module + +--- + arch/arm/mach-bcm2708/Makefile | 4 +- + arch/arm/mach-bcm2708/dmaer.c | 376 ++++++++++++++++-------- + arch/arm/mach-bcm2708/include/mach/vc_support.h | 69 +++++ + arch/arm/mach-bcm2708/vc_support.c | 319 ++++++++++++++++++++ + 4 files changed, 645 insertions(+), 123 deletions(-) + create mode 100755 arch/arm/mach-bcm2708/include/mach/vc_support.h + create mode 100755 arch/arm/mach-bcm2708/vc_support.c + +diff --git a/arch/arm/mach-bcm2708/Makefile b/arch/arm/mach-bcm2708/Makefile +index af4a6ee..b180e06 100644 +--- a/arch/arm/mach-bcm2708/Makefile ++++ b/arch/arm/mach-bcm2708/Makefile +@@ -5,5 +5,7 @@ + obj-$(CONFIG_MACH_BCM2708) += clock.o bcm2708.o armctrl.o vcio.o power.o dma.o delay.o + obj-$(CONFIG_BCM2708_GPIO) += bcm2708_gpio.o + obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o +-obj-$(CONFIG_BCM2708_DMAER) += dmaer.o ++ ++obj-$(CONFIG_BCM2708_DMAER) += dmaer_master.o ++dmaer_master-objs := dmaer.o vc_support.o + +diff --git a/arch/arm/mach-bcm2708/dmaer.c b/arch/arm/mach-bcm2708/dmaer.c +index 1b53ff2..9063874 100755 +--- a/arch/arm/mach-bcm2708/dmaer.c ++++ b/arch/arm/mach-bcm2708/dmaer.c +@@ -11,6 +11,7 @@ + #include <linux/device.h> + #include <linux/jiffies.h> + #include <linux/timex.h> ++#include <linux/dma-mapping.h> + + #include <asm/uaccess.h> + #include <asm/atomic.h> +@@ -18,10 +19,30 @@ + #include <asm/io.h> + + #include <mach/dma.h> ++#include <mach/vc_support.h> + +-MODULE_LICENSE("Dual BSD/GPL"); ++#ifdef ECLIPSE_IGNORE ++ ++#define __user ++#define __init ++#define __exit ++#define __iomem ++#define KERN_DEBUG ++#define KERN_ERR ++#define KERN_WARNING ++#define KERN_INFO ++#define _IOWR(a, b, c) b ++#define _IOW(a, b, c) b ++#define _IO(a, b) b ++ ++#endif + +-//#define inline ++//#define inline ++ ++#define PRINTK(args...) printk(args) ++//#define PRINTK_VERBOSE(args...) printk(args) ++//#define PRINTK(args...) ++#define PRINTK_VERBOSE(args...) + + /***** TYPES ****/ + #define PAGES_PER_LIST 500 +@@ -39,6 +60,7 @@ struct VmaPageList + struct PageList *m_pPageTail; + unsigned int m_refCount; + }; ++ + struct DmaControlBlock + { + unsigned int m_transferInfo; +@@ -78,6 +100,15 @@ struct DmaControlBlock + //set the address range through which the user address is assumed to already by a physical address + #define DMA_SET_MIN_PHYS _IOW(DMA_MAGIC, 7, unsigned long) + #define DMA_SET_MAX_PHYS _IOW(DMA_MAGIC, 8, unsigned long) ++#define DMA_SET_PHYS_OFFSET _IOW(DMA_MAGIC, 9, unsigned long) ++ ++//used to define the size for the CMA-based allocation *in pages*, can only be done once once the file is opened ++#define DMA_CMA_SET_SIZE _IOW(DMA_MAGIC, 10, unsigned long) ++ ++//used to get the version of the module, to test for a capability ++#define DMA_GET_VERSION _IO(DMA_MAGIC, 99) ++ ++#define VERSION_NUMBER 1 + + #define VIRT_TO_BUS_CACHE_SIZE 8 + +@@ -89,19 +120,24 @@ static ssize_t Read(struct file *pFile, char __user *pUser, size_t count, loff_t + static int Mmap(struct file *pFile, struct vm_area_struct *pVma); + + /***** VMA OPS ****/ +-static void VmaOpen(struct vm_area_struct *pVma); +-static void VmaClose(struct vm_area_struct *pVma); +-static int VmaFault(struct vm_area_struct *pVma, struct vm_fault *pVmf); ++static void VmaOpen4k(struct vm_area_struct *pVma); ++static void VmaClose4k(struct vm_area_struct *pVma); ++static int VmaFault4k(struct vm_area_struct *pVma, struct vm_fault *pVmf); ++ ++/**** DMA PROTOTYPES */ ++static struct DmaControlBlock __user *DmaPrepare(struct DmaControlBlock __user *pUserCB, int *pError); ++static int DmaKick(struct DmaControlBlock __user *pUserCB); ++static void DmaWaitAll(void); + + /**** GENERIC ****/ + static int __init dmaer_init(void); + static void __exit dmaer_exit(void); + + /*** OPS ***/ +-static struct vm_operations_struct g_vmOps = { +- .open = VmaOpen, +- .close = VmaClose, +- .fault = VmaFault, ++static struct vm_operations_struct g_vmOps4k = { ++ .open = VmaOpen4k, ++ .close = VmaClose4k, ++ .fault = VmaFault4k, + }; + + static struct file_operations g_fOps = { +@@ -117,13 +153,23 @@ static struct file_operations g_fOps = { + + /***** GLOBALS ******/ + static dev_t g_majorMinor; +-static atomic_t g_oneLock = ATOMIC_INIT(1); ++ ++//tracking usage of the two files ++static atomic_t g_oneLock4k = ATOMIC_INIT(1); ++ ++//device operations + static struct cdev g_cDev; + static int g_trackedPages = 0; ++ ++//dma control + static unsigned int *g_pDmaChanBase; + static int g_dmaIrq; + static int g_dmaChan; + ++//cma allocation ++static int g_cmaHandle; ++ ++//user virtual to bus address translation acceleration + static unsigned long g_virtAddr[VIRT_TO_BUS_CACHE_SIZE]; + static unsigned long g_busAddr[VIRT_TO_BUS_CACHE_SIZE]; + static unsigned long g_cbVirtAddr; +@@ -132,8 +178,9 @@ static int g_cacheInsertAt; + static int g_cacheHit, g_cacheMiss; + + //off by default +-static void __user *g_pMinPhys = (void __user *)-1; +-static void __user *g_pMaxPhys = (void __user *)0; ++static void __user *g_pMinPhys; ++static void __user *g_pMaxPhys; ++static unsigned long g_physOffset; + + /****** CACHE OPERATIONS ********/ + static inline void FlushAddrCache(void) +@@ -165,6 +212,9 @@ static inline void __iomem *UserVirtualToBus(void __user *pUser) + if (mapped <= 0) //error + return 0; + ++ PRINTK_VERBOSE(KERN_DEBUG "user virtual %p arm phys %p bus %p\n", ++ pUser, page_address(pPage), (void __iomem *)__virt_to_bus(page_address(pPage))); ++ + //get the arm physical address + phys = page_address(pPage) + offset_in_page(pUser); + page_cache_release(pPage); +@@ -211,8 +261,8 @@ static inline void __iomem *UserVirtualToBusViaCache(void __user *pUser) + + if (pUser >= g_pMinPhys && pUser < g_pMaxPhys) + { +-// printk(KERN_DEBUG "user->phys passthrough on %p\n", pUser); +- return (void __iomem *)__virt_to_bus(pUser); ++ PRINTK_VERBOSE(KERN_DEBUG "user->phys passthrough on %p\n", pUser); ++ return (void __iomem *)((unsigned long)pUser + g_physOffset); + } + + //check the cache for our entry +@@ -246,25 +296,57 @@ static inline void __iomem *UserVirtualToBusViaCache(void __user *pUser) + /***** FILE OPERATIONS ****/ + static int Open(struct inode *pInode, struct file *pFile) + { +- printk(KERN_DEBUG "file opening\n"); ++ PRINTK(KERN_DEBUG "file opening: %d/%d\n", imajor(pInode), iminor(pInode)); + +- //only one at a time +- if (!atomic_dec_and_test(&g_oneLock)) ++ //check which device we are ++ if (iminor(pInode) == 0) //4k + { +- atomic_inc(&g_oneLock); +- return -EBUSY; ++ //only one at a time ++ if (!atomic_dec_and_test(&g_oneLock4k)) ++ { ++ atomic_inc(&g_oneLock4k); ++ return -EBUSY; ++ } + } ++ else ++ return -EINVAL; + ++ //todo there will be trouble if two different processes open the files ++ ++ //reset after any file is opened ++ g_pMinPhys = (void __user *)-1; ++ g_pMaxPhys = (void __user *)0; ++ g_physOffset = 0; ++ g_cmaHandle = 0; ++ + return 0; + } + + static int Release(struct inode *pInode, struct file *pFile) + { +- printk(KERN_DEBUG "file closing, %d pages tracked\n", g_trackedPages); ++ PRINTK(KERN_DEBUG "file closing, %d pages tracked\n", g_trackedPages); + if (g_trackedPages) +- printk(KERN_ERR "we\'re leaking memory!\n"); ++ PRINTK(KERN_ERR "we\'re leaking memory!\n"); + +- atomic_inc(&g_oneLock); ++ //wait for any dmas to finish ++ DmaWaitAll(); ++ ++ //free this memory on the application closing the file or it crashing (implicitly closing the file) ++ if (g_cmaHandle) ++ { ++ PRINTK(KERN_DEBUG "unlocking vc memory\n"); ++ if (UnlockVcMemory(g_cmaHandle)) ++ PRINTK(KERN_ERR "uh-oh, unable to unlock vc memory!\n"); ++ PRINTK(KERN_DEBUG "releasing vc memory\n"); ++ if (ReleaseVcMemory(g_cmaHandle)) ++ PRINTK(KERN_ERR "uh-oh, unable to release vc memory!\n"); ++ } ++ ++ if (iminor(pInode) == 0) ++ atomic_inc(&g_oneLock4k); ++ else ++ return -EINVAL; ++ + return 0; + } + +@@ -274,18 +356,17 @@ static struct DmaControlBlock __user *DmaPrepare(struct DmaControlBlock __user * + struct DmaControlBlock __user *pUNext; + void __iomem *pSourceBus, __iomem *pDestBus; + +- + //get the control block into kernel memory so we can work on it + if (copy_from_user(&kernCB, pUserCB, sizeof(struct DmaControlBlock)) != 0) + { +- printk(KERN_ERR "copy_from_user failed for user cb %p\n", pUserCB); ++ PRINTK(KERN_ERR "copy_from_user failed for user cb %p\n", pUserCB); + *pError = 1; + return 0; + } + + if (kernCB.m_pSourceAddr == 0 || kernCB.m_pDestAddr == 0) + { +- printk(KERN_ERR "faulty source (%p) dest (%p) addresses for user cb %p\n", ++ PRINTK(KERN_ERR "faulty source (%p) dest (%p) addresses for user cb %p\n", + kernCB.m_pSourceAddr, kernCB.m_pDestAddr, pUserCB); + *pError = 1; + return 0; +@@ -296,7 +377,9 @@ static struct DmaControlBlock __user *DmaPrepare(struct DmaControlBlock __user * + + if (!pSourceBus || !pDestBus) + { +- printk(KERN_ERR "virtual to bus translation failure for source/dest\n"); ++ PRINTK(KERN_ERR "virtual to bus translation failure for source/dest %p/%p->%p/%p\n", ++ kernCB.m_pSourceAddr, kernCB.m_pDestAddr, ++ pSourceBus, pDestBus); + *pError = 1; + return 0; + } +@@ -304,6 +387,8 @@ static struct DmaControlBlock __user *DmaPrepare(struct DmaControlBlock __user * + //update the user structure with the new bus addresses + kernCB.m_pSourceAddr = pSourceBus; + kernCB.m_pDestAddr = pDestBus; ++ ++ PRINTK_VERBOSE(KERN_DEBUG "final source %p dest %p\n", kernCB.m_pSourceAddr, kernCB.m_pDestAddr); + + //sort out the bus address for the next block + pUNext = kernCB.m_pNext; +@@ -315,7 +400,7 @@ static struct DmaControlBlock __user *DmaPrepare(struct DmaControlBlock __user * + + if (!pNextBus) + { +- printk(KERN_ERR "virtual to bus translation failure for m_pNext\n"); ++ PRINTK(KERN_ERR "virtual to bus translation failure for m_pNext\n"); + *pError = 1; + return 0; + } +@@ -327,7 +412,7 @@ static struct DmaControlBlock __user *DmaPrepare(struct DmaControlBlock __user * + //write it back to user space + if (copy_to_user(pUserCB, &kernCB, sizeof(struct DmaControlBlock)) != 0) + { +- printk(KERN_ERR "copy_to_user failed for cb %p\n", pUserCB); ++ PRINTK(KERN_ERR "copy_to_user failed for cb %p\n", pUserCB); + *pError = 1; + return 0; + } +@@ -345,7 +430,7 @@ static int DmaKick(struct DmaControlBlock __user *pUserCB) + pBusCB = UserVirtualToBusViaCbCache(pUserCB); + if (!pBusCB) + { +- printk(KERN_ERR "virtual to bus translation failure for cb\n"); ++ PRINTK(KERN_ERR "virtual to bus translation failure for cb\n"); + return 1; + } + +@@ -361,9 +446,9 @@ static void DmaWaitAll(void) + int counter = 0; + volatile int inner_count; + volatile unsigned int cs; +- //unsigned long time_before, time_after; ++ unsigned long time_before, time_after; + +- //time_before = jiffies; ++ time_before = jiffies; + //bcm_dma_wait_idle(g_pDmaChanBase); + dsb(); + +@@ -380,19 +465,19 @@ static void DmaWaitAll(void) + //cpu_do_idle(); + if (counter >= 1000000) + { +- printk(KERN_WARNING "DMA failed to finish in a timely fashion\n"); ++ PRINTK(KERN_WARNING "DMA failed to finish in a timely fashion\n"); + break; + } + } +- //time_after = jiffies; +- //printk(KERN_DEBUG "done, counter %d, cs %08x", counter, cs); +- //printk(KERN_DEBUG "took %ld jiffies, %d HZ\n", time_after - time_before, HZ); ++ time_after = jiffies; ++ PRINTK_VERBOSE(KERN_DEBUG "done, counter %d, cs %08x", counter, cs); ++ PRINTK_VERBOSE(KERN_DEBUG "took %ld jiffies, %d HZ\n", time_after - time_before, HZ); + } + + static long Ioctl(struct file *pFile, unsigned int cmd, unsigned long arg) + { + int error = 0; +- //printk(KERN_DEBUG "ioctl cmd %x arg %lx\n", cmd, arg); ++ PRINTK_VERBOSE(KERN_DEBUG "ioctl cmd %x arg %lx\n", cmd, arg); + + switch (cmd) + { +@@ -402,29 +487,30 @@ static long Ioctl(struct file *pFile, unsigned int cmd, unsigned long arg) + { + struct DmaControlBlock __user *pUCB = (struct DmaControlBlock *)arg; + int steps = 0; +- //unsigned long start_time = jiffies; ++ unsigned long start_time = jiffies; ++ (void)start_time; + + //flush our address cache + FlushAddrCache(); + +-// printk(KERN_DEBUG "dma prepare\n"); +- ++ PRINTK_VERBOSE(KERN_DEBUG "dma prepare\n"); ++ + //do virtual to bus translation for each entry + do + { + pUCB = DmaPrepare(pUCB, &error); + } while (error == 0 && ++steps && pUCB); +- //printk(KERN_DEBUG "prepare done in %d steps, %ld\n", steps, jiffies - start_time); ++ PRINTK_VERBOSE(KERN_DEBUG "prepare done in %d steps, %ld\n", steps, jiffies - start_time); + + //carry straight on if we want to kick too + if (cmd == DMA_PREPARE || error) + { +-// printk(KERN_DEBUG "falling out\n"); +- break; ++ PRINTK_VERBOSE(KERN_DEBUG "falling out\n"); ++ return error ? -EINVAL : 0; + } +- }; ++ } + case DMA_KICK: +-// printk(KERN_DEBUG "dma begin\n"); ++ PRINTK_VERBOSE(KERN_DEBUG "dma begin\n"); + + if (cmd == DMA_KICK) + FlushAddrCache(); +@@ -434,10 +520,10 @@ static long Ioctl(struct file *pFile, unsigned int cmd, unsigned long arg) + if (cmd != DMA_PREPARE_KICK_WAIT) + break; + /* case DMA_WAIT_ONE: +- //printk(KERN_DEBUG "dma wait one\n"); ++ //PRINTK(KERN_DEBUG "dma wait one\n"); + break;*/ + case DMA_WAIT_ALL: +- //printk(KERN_DEBUG "dma wait all\n"); ++ //PRINTK(KERN_DEBUG "dma wait all\n"); + DmaWaitAll(); + break; + case DMA_MAX_BURST: +@@ -447,14 +533,54 @@ static long Ioctl(struct file *pFile, unsigned int cmd, unsigned long arg) + return 5; + case DMA_SET_MIN_PHYS: + g_pMinPhys = (void __user *)arg; +- printk("min/max user/phys bypass set to %p %p\n", g_pMinPhys, g_pMaxPhys); ++ PRINTK(KERN_DEBUG "min/max user/phys bypass set to %p %p\n", g_pMinPhys, g_pMaxPhys); + break; + case DMA_SET_MAX_PHYS: + g_pMaxPhys = (void __user *)arg; +- printk("min/max user/phys bypass set to %p %p\n", g_pMinPhys, g_pMaxPhys); ++ PRINTK(KERN_DEBUG "min/max user/phys bypass set to %p %p\n", g_pMinPhys, g_pMaxPhys); + break; ++ case DMA_SET_PHYS_OFFSET: ++ g_physOffset = arg; ++ PRINTK(KERN_DEBUG "user/phys bypass offset set to %ld\n", g_physOffset); ++ break; ++ case DMA_CMA_SET_SIZE: ++ { ++ unsigned int pBusAddr; ++ ++ if (g_cmaHandle) ++ { ++ PRINTK(KERN_ERR "memory has already been allocated (handle %d)\n", g_cmaHandle); ++ return -EINVAL; ++ } ++ ++ PRINTK(KERN_INFO "allocating %ld bytes of VC memory\n", arg * 4096); ++ ++ //get the memory ++ if (AllocateVcMemory(&g_cmaHandle, arg * 4096, 4096, MEM_FLAG_L1_NONALLOCATING | MEM_FLAG_NO_INIT | MEM_FLAG_HINT_PERMALOCK)) ++ { ++ PRINTK(KERN_ERR "failed to allocate %ld bytes of VC memory\n", arg * 4096); ++ g_cmaHandle = 0; ++ return -EINVAL; ++ } ++ ++ //get an address for it ++ PRINTK(KERN_INFO "trying to map VC memory\n"); ++ ++ if (LockVcMemory(&pBusAddr, g_cmaHandle)) ++ { ++ PRINTK(KERN_ERR "failed to map CMA handle %d, releasing memory\n", g_cmaHandle); ++ ReleaseVcMemory(g_cmaHandle); ++ g_cmaHandle = 0; ++ } ++ ++ PRINTK(KERN_INFO "bus address for CMA memory is %x\n", pBusAddr); ++ return pBusAddr; ++ } ++ case DMA_GET_VERSION: ++ PRINTK(KERN_DEBUG "returning version number, %d\n", VERSION_NUMBER); ++ return VERSION_NUMBER; + default: +- printk(KERN_DEBUG "unknown ioctl: %d\n", cmd); ++ PRINTK(KERN_DEBUG "unknown ioctl: %d\n", cmd); + return -EINVAL; + } + +@@ -463,12 +589,6 @@ static long Ioctl(struct file *pFile, unsigned int cmd, unsigned long arg) + + static ssize_t Read(struct file *pFile, char __user *pUser, size_t count, loff_t *offp) + { +- /*printk(KERN_DEBUG "file read pFile %p pUser %p count %ld offp %p\n", +- pFile, pUser, count, offp); +- printk(KERN_DEBUG "phys pFile %lx pUser %lx offp %lx\n", +- __pa(pFile), __pa(pUser), __pa(offp)); +- printk(KERN_DEBUG "bus pFile %lx pUser %lx offp %lx\n", +- virt_to_bus(pFile), virt_to_bus(pUser), virt_to_bus(offp));*/ + return -EIO; + } + +@@ -477,20 +597,20 @@ static int Mmap(struct file *pFile, struct vm_area_struct *pVma) + struct PageList *pPages; + struct VmaPageList *pVmaList; + +-// printk(KERN_DEBUG "MMAP vma %p, length %ld (%s %d)\n", +-// pVma, pVma->vm_end - pVma->vm_start, +-// current->comm, current->pid); +-// printk(KERN_DEBUG "MMAP %p %d (tracked %d)\n", pVma, current->pid, g_trackedPages); +- ++ PRINTK_VERBOSE(KERN_DEBUG "MMAP vma %p, length %ld (%s %d)\n", ++ pVma, pVma->vm_end - pVma->vm_start, ++ current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "MMAP %p %d (tracked %d)\n", pVma, current->pid, g_trackedPages); ++ + //make a new page list + pPages = (struct PageList *)kmalloc(sizeof(struct PageList), GFP_KERNEL); + if (!pPages) + { +- printk(KERN_ERR "couldn\'t allocate a new page list (%s %d)\n", ++ PRINTK(KERN_ERR "couldn\'t allocate a new page list (%s %d)\n", + current->comm, current->pid); + return -ENOMEM; + } +- ++ + //clear the page list + pPages->m_used = 0; + pPages->m_pNext = 0; +@@ -500,67 +620,72 @@ static int Mmap(struct file *pFile, struct vm_area_struct *pVma) + { + struct VmaPageList *pList; + +-// printk(KERN_DEBUG "new vma list, making new one (%s %d)\n", +-// current->comm, current->pid); +- ++ PRINTK_VERBOSE(KERN_DEBUG "new vma list, making new one (%s %d)\n", ++ current->comm, current->pid); ++ + //make a new vma list + pList = (struct VmaPageList *)kmalloc(sizeof(struct VmaPageList), GFP_KERNEL); + if (!pList) + { +- printk(KERN_ERR "couldn\'t allocate vma page list (%s %d)\n", ++ PRINTK(KERN_ERR "couldn\'t allocate vma page list (%s %d)\n", + current->comm, current->pid); + kfree(pPages); + return -ENOMEM; + } +- ++ + //clear this list + pVma->vm_private_data = (void *)pList; + pList->m_refCount = 0; + } +- ++ + pVmaList = (struct VmaPageList *)pVma->vm_private_data; +- ++ + //add it to the vma list + pVmaList->m_pPageHead = pPages; + pVmaList->m_pPageTail = pPages; +- +- pVma->vm_ops = &g_vmOps; ++ ++ pVma->vm_ops = &g_vmOps4k; + pVma->vm_flags |= VM_RESERVED; +- +- VmaOpen(pVma); +- ++ ++ VmaOpen4k(pVma); ++ + return 0; + } + + /****** VMA OPERATIONS ******/ + +-static void VmaOpen(struct vm_area_struct *pVma) ++static void VmaOpen4k(struct vm_area_struct *pVma) + { + struct VmaPageList *pVmaList; + +-// printk(KERN_DEBUG "vma open %p private %p (%s %d), %d live pages\n", pVma, pVma->vm_private_data, current->comm, current->pid, g_trackedPages); +-// printk(KERN_DEBUG "OPEN %p %d %ld pages (tracked pages %d)\n", +-// pVma, current->pid, (pVma->vm_end - pVma->vm_start) >> 12, +-// g_trackedPages); ++ PRINTK_VERBOSE(KERN_DEBUG "vma open %p private %p (%s %d), %d live pages\n", pVma, pVma->vm_private_data, current->comm, current->pid, g_trackedPages); ++ PRINTK_VERBOSE(KERN_DEBUG "OPEN %p %d %ld pages (tracked pages %d)\n", ++ pVma, current->pid, (pVma->vm_end - pVma->vm_start) >> 12, ++ g_trackedPages); + + pVmaList = (struct VmaPageList *)pVma->vm_private_data; + + if (pVmaList) + { + pVmaList->m_refCount++; +-// printk(KERN_DEBUG "ref count is now %d\n", pVmaList->m_refCount); ++ PRINTK_VERBOSE(KERN_DEBUG "ref count is now %d\n", pVmaList->m_refCount); ++ } ++ else ++ { ++ PRINTK_VERBOSE(KERN_DEBUG "err, open but no vma page list\n"); + } +-// else +-// printk(KERN_DEBUG "err, open but no vma page list\n"); + } + +-static void VmaClose(struct vm_area_struct *pVma) ++static void VmaClose4k(struct vm_area_struct *pVma) + { + struct VmaPageList *pVmaList; + int freed = 0; + +-// printk(KERN_DEBUG "vma close %p private %p (%s %d)\n", pVma, pVma->vm_private_data, current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "vma close %p private %p (%s %d)\n", pVma, pVma->vm_private_data, current->comm, current->pid); + ++ //wait for any dmas to finish ++ DmaWaitAll(); ++ + //find our vma in the list + pVmaList = (struct VmaPageList *)pVma->vm_private_data; + +@@ -573,14 +698,14 @@ static void VmaClose(struct vm_area_struct *pVma) + + if (pVmaList->m_refCount == 0) + { +-// printk(KERN_DEBUG "found vma, freeing pages (%s %d)\n", +-// current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "found vma, freeing pages (%s %d)\n", ++ current->comm, current->pid); + + pPages = pVmaList->m_pPageHead; + + if (!pPages) + { +- printk(KERN_ERR "no page list (%s %d)!\n", ++ PRINTK(KERN_ERR "no page list (%s %d)!\n", + current->comm, current->pid); + return; + } +@@ -590,22 +715,22 @@ static void VmaClose(struct vm_area_struct *pVma) + struct PageList *next; + int count; + +-// printk(KERN_DEBUG "page list (%s %d)\n", +-// current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "page list (%s %d)\n", ++ current->comm, current->pid); + + next = pPages->m_pNext; + for (count = 0; count < pPages->m_used; count++) + { +-// printk(KERN_DEBUG "freeing page %p (%s %d)\n", +-// pPages->m_pPages[count], +-// current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "freeing page %p (%s %d)\n", ++ pPages->m_pPages[count], ++ current->comm, current->pid); + __free_pages(pPages->m_pPages[count], 0); + g_trackedPages--; + freed++; + } + +-// printk(KERN_DEBUG "freeing page list (%s %d)\n", +-// current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "freeing page list (%s %d)\n", ++ current->comm, current->pid); + kfree(pPages); + pPages = next; + } +@@ -614,33 +739,38 @@ static void VmaClose(struct vm_area_struct *pVma) + kfree(pVmaList); + pVma->vm_private_data = 0; + } +-// else +-// printk(KERN_DEBUG "ref count is %d, not closing\n", pVmaList->m_refCount); ++ else ++ { ++ PRINTK_VERBOSE(KERN_DEBUG "ref count is %d, not closing\n", pVmaList->m_refCount); ++ } + } + else + { +-// printk(KERN_ERR "uh-oh, vma %p not found (%s %d)!\n", pVma, current->comm, current->pid); +-// printk(KERN_ERR "CLOSE ERR\n"); ++ PRINTK_VERBOSE(KERN_ERR "uh-oh, vma %p not found (%s %d)!\n", pVma, current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_ERR "CLOSE ERR\n"); + } + +-// printk(KERN_DEBUG "CLOSE %p %d %d pages (tracked pages %d)", +-// pVma, current->pid, freed, g_trackedPages); ++ PRINTK_VERBOSE(KERN_DEBUG "CLOSE %p %d %d pages (tracked pages %d)", ++ pVma, current->pid, freed, g_trackedPages); + +-// printk(KERN_DEBUG "%d pages open\n", g_trackedPages); ++ PRINTK_VERBOSE(KERN_DEBUG "%d pages open\n", g_trackedPages); + } + +-static int VmaFault(struct vm_area_struct *pVma, struct vm_fault *pVmf) ++static int VmaFault4k(struct vm_area_struct *pVma, struct vm_fault *pVmf) + { +-// printk(KERN_DEBUG "vma fault for vma %p private %p at offset %ld (%s %d)\n", pVma, pVma->vm_private_data, pVmf->pgoff, +-// current->comm, current->pid); +- //printk(KERN_DEBUG "FAULT\n"); ++ PRINTK_VERBOSE(KERN_DEBUG "vma fault for vma %p private %p at offset %ld (%s %d)\n", pVma, pVma->vm_private_data, pVmf->pgoff, ++ current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "FAULT\n"); + pVmf->page = alloc_page(GFP_KERNEL); +- /*if (pVmf->page) +- printk(KERN_DEBUG "alloc page virtual %p\n", page_address(pVmf->page));*/ + ++ if (pVmf->page) ++ { ++ PRINTK_VERBOSE(KERN_DEBUG "alloc page virtual %p\n", page_address(pVmf->page)); ++ } ++ + if (!pVmf->page) + { +- printk(KERN_ERR "vma fault oom (%s %d)\n", current->comm, current->pid); ++ PRINTK(KERN_ERR "vma fault oom (%s %d)\n", current->comm, current->pid); + return VM_FAULT_OOM; + } + else +@@ -655,11 +785,11 @@ static int VmaFault(struct vm_area_struct *pVma, struct vm_fault *pVmf) + + if (pVmaList) + { +-// printk(KERN_DEBUG "vma found (%s %d)\n", current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "vma found (%s %d)\n", current->comm, current->pid); + + if (pVmaList->m_pPageTail->m_used == PAGES_PER_LIST) + { +-// printk(KERN_DEBUG "making new page list (%s %d)\n", current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "making new page list (%s %d)\n", current->comm, current->pid); + //making a new page list + pVmaList->m_pPageTail->m_pNext = (struct PageList *)kmalloc(sizeof(struct PageList), GFP_KERNEL); + if (!pVmaList->m_pPageTail->m_pNext) +@@ -671,13 +801,13 @@ static int VmaFault(struct vm_area_struct *pVma, struct vm_fault *pVmf) + pVmaList->m_pPageTail->m_pNext = 0; + } + +-// printk(KERN_DEBUG "adding page to list (%s %d)\n", current->comm, current->pid); ++ PRINTK_VERBOSE(KERN_DEBUG "adding page to list (%s %d)\n", current->comm, current->pid); + + pVmaList->m_pPageTail->m_pPages[pVmaList->m_pPageTail->m_used] = pVmf->page; + pVmaList->m_pPageTail->m_used++; + } + else +- printk(KERN_ERR "returned page for vma we don\'t know %p (%s %d)\n", pVma, current->comm, current->pid); ++ PRINTK(KERN_ERR "returned page for vma we don\'t know %p (%s %d)\n", pVma, current->comm, current->pid); + + return 0; + } +@@ -689,32 +819,33 @@ static int __init dmaer_init(void) + int result = alloc_chrdev_region(&g_majorMinor, 0, 1, "dmaer"); + if (result < 0) + { +- printk(KERN_ERR "unable to get major device number\n"); ++ PRINTK(KERN_ERR "unable to get major device number\n"); + return result; + } + else +- printk(KERN_DEBUG "major device number %d\n", MAJOR(g_majorMinor)); ++ PRINTK(KERN_DEBUG "major device number %d\n", MAJOR(g_majorMinor)); + +- printk(KERN_DEBUG "vma list size %d, page list size %d, page size %ld\n", ++ PRINTK(KERN_DEBUG "vma list size %d, page list size %d, page size %ld\n", + sizeof(struct VmaPageList), sizeof(struct PageList), PAGE_SIZE); +- +- ++ + //get a dma channel to work with + result = bcm_dma_chan_alloc(BCM_DMA_FEATURE_FAST, (void **)&g_pDmaChanBase, &g_dmaIrq); ++ ++ //uncomment to force to channel 0 + //result = 0; + //g_pDmaChanBase = 0xce808000; + + if (result < 0) + { +- printk(KERN_ERR "failed to allocate dma channel\n"); ++ PRINTK(KERN_ERR "failed to allocate dma channel\n"); + cdev_del(&g_cDev); + unregister_chrdev_region(g_majorMinor, 1); + } + + //reset the channel +- printk(KERN_DEBUG "allocated dma channel %d (%p), initial state %08x\n", result, g_pDmaChanBase, *g_pDmaChanBase); ++ PRINTK(KERN_DEBUG "allocated dma channel %d (%p), initial state %08x\n", result, g_pDmaChanBase, *g_pDmaChanBase); + *g_pDmaChanBase = 1 << 31; +- printk(KERN_DEBUG "post-reset %08x\n", *g_pDmaChanBase); ++ PRINTK(KERN_DEBUG "post-reset %08x\n", *g_pDmaChanBase); + + g_dmaChan = result; + +@@ -730,7 +861,7 @@ static int __init dmaer_init(void) + result = cdev_add(&g_cDev, g_majorMinor, 1); + if (result < 0) + { +- printk(KERN_ERR "failed to add character device\n"); ++ PRINTK(KERN_ERR "failed to add character device\n"); + unregister_chrdev_region(g_majorMinor, 1); + bcm_dma_chan_free(g_dmaChan); + return result; +@@ -741,7 +872,7 @@ static int __init dmaer_init(void) + + static void __exit dmaer_exit(void) + { +- printk(KERN_INFO "closing dmaer device, cache stats: %d hits %d misses\n", g_cacheHit, g_cacheMiss); ++ PRINTK(KERN_INFO "closing dmaer device, cache stats: %d hits %d misses\n", g_cacheHit, g_cacheMiss); + //unregister the device + cdev_del(&g_cDev); + unregister_chrdev_region(g_majorMinor, 1); +@@ -749,6 +880,7 @@ static void __exit dmaer_exit(void) + bcm_dma_chan_free(g_dmaChan); + } + ++MODULE_LICENSE("Dual BSD/GPL"); + MODULE_AUTHOR("Simon Hall"); + module_init(dmaer_init); + module_exit(dmaer_exit); +diff --git a/arch/arm/mach-bcm2708/include/mach/vc_support.h b/arch/arm/mach-bcm2708/include/mach/vc_support.h +new file mode 100755 +index 0000000..70e809f +--- /dev/null ++++ b/arch/arm/mach-bcm2708/include/mach/vc_support.h +@@ -0,0 +1,69 @@ ++#ifndef _VC_SUPPORT_H_ ++#define _VC_SUPPORT_H_ ++ ++/* ++ * vc_support.h ++ * ++ * Created on: 25 Nov 2012 ++ * Author: Simon ++ */ ++ ++enum { ++/* ++ If a MEM_HANDLE_T is discardable, the memory manager may resize it to size ++ 0 at any time when it is not locked or retained. ++ */ ++ MEM_FLAG_DISCARDABLE = 1 << 0, ++ ++ /* ++ If a MEM_HANDLE_T is allocating (or normal), its block of memory will be ++ accessed in an allocating fashion through the cache. ++ */ ++ MEM_FLAG_NORMAL = 0 << 2, ++ MEM_FLAG_ALLOCATING = MEM_FLAG_NORMAL, ++ ++ /* ++ If a MEM_HANDLE_T is direct, its block of memory will be accessed ++ directly, bypassing the cache. ++ */ ++ MEM_FLAG_DIRECT = 1 << 2, ++ ++ /* ++ If a MEM_HANDLE_T is coherent, its block of memory will be accessed in a ++ non-allocating fashion through the cache. ++ */ ++ MEM_FLAG_COHERENT = 2 << 2, ++ ++ /* ++ If a MEM_HANDLE_T is L1-nonallocating, its block of memory will be accessed by ++ the VPU in a fashion which is allocating in L2, but only coherent in L1. ++ */ ++ MEM_FLAG_L1_NONALLOCATING = (MEM_FLAG_DIRECT | MEM_FLAG_COHERENT), ++ ++ /* ++ If a MEM_HANDLE_T is zero'd, its contents are set to 0 rather than ++ MEM_HANDLE_INVALID on allocation and resize up. ++ */ ++ MEM_FLAG_ZERO = 1 << 4, ++ ++ /* ++ If a MEM_HANDLE_T is uninitialised, it will not be reset to a defined value ++ (either zero, or all 1's) on allocation. ++ */ ++ MEM_FLAG_NO_INIT = 1 << 5, ++ ++ /* ++ Hints. ++ */ ++ MEM_FLAG_HINT_PERMALOCK = 1 << 6, /* Likely to be locked for long periods of time. */ ++}; ++ ++unsigned int AllocateVcMemory(unsigned int *pHandle, unsigned int size, unsigned int alignment, unsigned int flags); ++unsigned int ReleaseVcMemory(unsigned int handle); ++unsigned int LockVcMemory(unsigned int *pBusAddress, unsigned int handle); ++unsigned int UnlockVcMemory(unsigned int handle); ++ ++unsigned int ExecuteVcCode(unsigned int code, ++ unsigned int r0, unsigned int r1, unsigned int r2, unsigned int r3, unsigned int r4, unsigned int r5); ++ ++#endif +diff --git a/arch/arm/mach-bcm2708/vc_support.c b/arch/arm/mach-bcm2708/vc_support.c +new file mode 100755 +index 0000000..5cb1335 +--- /dev/null ++++ b/arch/arm/mach-bcm2708/vc_support.c +@@ -0,0 +1,319 @@ ++/* ++ * vc_support.c ++ * ++ * Created on: 25 Nov 2012 ++ * Author: Simon ++ */ ++ ++#include <linux/module.h> ++#include <mach/vcio.h> ++ ++#ifdef ECLIPSE_IGNORE ++ ++#define __user ++#define __init ++#define __exit ++#define __iomem ++#define KERN_DEBUG ++#define KERN_ERR ++#define KERN_WARNING ++#define KERN_INFO ++#define _IOWR(a, b, c) b ++#define _IOW(a, b, c) b ++#define _IO(a, b) b ++ ++#endif ++ ++/****** VC MAILBOX FUNCTIONALITY ******/ ++unsigned int AllocateVcMemory(unsigned int *pHandle, unsigned int size, unsigned int alignment, unsigned int flags) ++{ ++ struct vc_msg ++ { ++ unsigned int m_msgSize; ++ unsigned int m_response; ++ ++ struct vc_tag ++ { ++ unsigned int m_tagId; ++ unsigned int m_sendBufferSize; ++ union { ++ unsigned int m_sendDataSize; ++ unsigned int m_recvDataSize; ++ }; ++ ++ struct args ++ { ++ union { ++ unsigned int m_size; ++ unsigned int m_handle; ++ }; ++ unsigned int m_alignment; ++ unsigned int m_flags; ++ } m_args; ++ } m_tag; ++ ++ unsigned int m_endTag; ++ } msg; ++ int s; ++ ++ msg.m_msgSize = sizeof(msg); ++ msg.m_response = 0; ++ msg.m_endTag = 0; ++ ++ //fill in the tag for the allocation command ++ msg.m_tag.m_tagId = 0x3000c; ++ msg.m_tag.m_sendBufferSize = 12; ++ msg.m_tag.m_sendDataSize = 12; ++ ++ //fill in our args ++ msg.m_tag.m_args.m_size = size; ++ msg.m_tag.m_args.m_alignment = alignment; ++ msg.m_tag.m_args.m_flags = flags; ++ ++ //run the command ++ s = bcm_mailbox_property(&msg, sizeof(msg)); ++ ++ if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004) ++ { ++ *pHandle = msg.m_tag.m_args.m_handle; ++ return 0; ++ } ++ else ++ { ++ printk(KERN_ERR "failed to allocate vc memory: s=%d response=%08x recv data size=%08x\n", ++ s, msg.m_response, msg.m_tag.m_recvDataSize); ++ return 1; ++ } ++} ++ ++unsigned int ReleaseVcMemory(unsigned int handle) ++{ ++ struct vc_msg ++ { ++ unsigned int m_msgSize; ++ unsigned int m_response; ++ ++ struct vc_tag ++ { ++ unsigned int m_tagId; ++ unsigned int m_sendBufferSize; ++ union { ++ unsigned int m_sendDataSize; ++ unsigned int m_recvDataSize; ++ }; ++ ++ struct args ++ { ++ union { ++ unsigned int m_handle; ++ unsigned int m_error; ++ }; ++ } m_args; ++ } m_tag; ++ ++ unsigned int m_endTag; ++ } msg; ++ int s; ++ ++ msg.m_msgSize = sizeof(msg); ++ msg.m_response = 0; ++ msg.m_endTag = 0; ++ ++ //fill in the tag for the release command ++ msg.m_tag.m_tagId = 0x3000f; ++ msg.m_tag.m_sendBufferSize = 4; ++ msg.m_tag.m_sendDataSize = 4; ++ ++ //pass across the handle ++ msg.m_tag.m_args.m_handle = handle; ++ ++ s = bcm_mailbox_property(&msg, sizeof(msg)); ++ ++ if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004 && msg.m_tag.m_args.m_error == 0) ++ return 0; ++ else ++ { ++ printk(KERN_ERR "failed to release vc memory: s=%d response=%08x recv data size=%08x error=%08x\n", ++ s, msg.m_response, msg.m_tag.m_recvDataSize, msg.m_tag.m_args.m_error); ++ return 1; ++ } ++} ++ ++unsigned int LockVcMemory(unsigned int *pBusAddress, unsigned int handle) ++{ ++ struct vc_msg ++ { ++ unsigned int m_msgSize; ++ unsigned int m_response; ++ ++ struct vc_tag ++ { ++ unsigned int m_tagId; ++ unsigned int m_sendBufferSize; ++ union { ++ unsigned int m_sendDataSize; ++ unsigned int m_recvDataSize; ++ }; ++ ++ struct args ++ { ++ union { ++ unsigned int m_handle; ++ unsigned int m_busAddress; ++ }; ++ } m_args; ++ } m_tag; ++ ++ unsigned int m_endTag; ++ } msg; ++ int s; ++ ++ msg.m_msgSize = sizeof(msg); ++ msg.m_response = 0; ++ msg.m_endTag = 0; ++ ++ //fill in the tag for the lock command ++ msg.m_tag.m_tagId = 0x3000d; ++ msg.m_tag.m_sendBufferSize = 4; ++ msg.m_tag.m_sendDataSize = 4; ++ ++ //pass across the handle ++ msg.m_tag.m_args.m_handle = handle; ++ ++ s = bcm_mailbox_property(&msg, sizeof(msg)); ++ ++ if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004) ++ { ++ //pick out the bus address ++ *pBusAddress = msg.m_tag.m_args.m_busAddress; ++ return 0; ++ } ++ else ++ { ++ printk(KERN_ERR "failed to lock vc memory: s=%d response=%08x recv data size=%08x\n", ++ s, msg.m_response, msg.m_tag.m_recvDataSize); ++ return 1; ++ } ++} ++ ++unsigned int UnlockVcMemory(unsigned int handle) ++{ ++ struct vc_msg ++ { ++ unsigned int m_msgSize; ++ unsigned int m_response; ++ ++ struct vc_tag ++ { ++ unsigned int m_tagId; ++ unsigned int m_sendBufferSize; ++ union { ++ unsigned int m_sendDataSize; ++ unsigned int m_recvDataSize; ++ }; ++ ++ struct args ++ { ++ union { ++ unsigned int m_handle; ++ unsigned int m_error; ++ }; ++ } m_args; ++ } m_tag; ++ ++ unsigned int m_endTag; ++ } msg; ++ int s; ++ ++ msg.m_msgSize = sizeof(msg); ++ msg.m_response = 0; ++ msg.m_endTag = 0; ++ ++ //fill in the tag for the unlock command ++ msg.m_tag.m_tagId = 0x3000e; ++ msg.m_tag.m_sendBufferSize = 4; ++ msg.m_tag.m_sendDataSize = 4; ++ ++ //pass across the handle ++ msg.m_tag.m_args.m_handle = handle; ++ ++ s = bcm_mailbox_property(&msg, sizeof(msg)); ++ ++ //check the error code too ++ if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004 && msg.m_tag.m_args.m_error == 0) ++ return 0; ++ else ++ { ++ printk(KERN_ERR "failed to unlock vc memory: s=%d response=%08x recv data size=%08x error%08x\n", ++ s, msg.m_response, msg.m_tag.m_recvDataSize, msg.m_tag.m_args.m_error); ++ return 1; ++ } ++} ++ ++unsigned int ExecuteVcCode(unsigned int code, ++ unsigned int r0, unsigned int r1, unsigned int r2, unsigned int r3, unsigned int r4, unsigned int r5) ++{ ++ struct vc_msg ++ { ++ unsigned int m_msgSize; ++ unsigned int m_response; ++ ++ struct vc_tag ++ { ++ unsigned int m_tagId; ++ unsigned int m_sendBufferSize; ++ union { ++ unsigned int m_sendDataSize; ++ unsigned int m_recvDataSize; ++ }; ++ ++ struct args ++ { ++ union { ++ unsigned int m_pCode; ++ unsigned int m_return; ++ }; ++ unsigned int m_r0; ++ unsigned int m_r1; ++ unsigned int m_r2; ++ unsigned int m_r3; ++ unsigned int m_r4; ++ unsigned int m_r5; ++ } m_args; ++ } m_tag; ++ ++ unsigned int m_endTag; ++ } msg; ++ int s; ++ ++ msg.m_msgSize = sizeof(msg); ++ msg.m_response = 0; ++ msg.m_endTag = 0; ++ ++ //fill in the tag for the unlock command ++ msg.m_tag.m_tagId = 0x30010; ++ msg.m_tag.m_sendBufferSize = 28; ++ msg.m_tag.m_sendDataSize = 28; ++ ++ //pass across the handle ++ msg.m_tag.m_args.m_pCode = code; ++ msg.m_tag.m_args.m_r0 = r0; ++ msg.m_tag.m_args.m_r1 = r1; ++ msg.m_tag.m_args.m_r2 = r2; ++ msg.m_tag.m_args.m_r3 = r3; ++ msg.m_tag.m_args.m_r4 = r4; ++ msg.m_tag.m_args.m_r5 = r5; ++ ++ s = bcm_mailbox_property(&msg, sizeof(msg)); ++ ++ //check the error code too ++ if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004) ++ return msg.m_tag.m_args.m_return; ++ else ++ { ++ printk(KERN_ERR "failed to execute: s=%d response=%08x recv data size=%08x\n", ++ s, msg.m_response, msg.m_tag.m_recvDataSize); ++ return 1; ++ } ++} ++ diff --git a/patches/linux-3.6.11/0196-Add-retry-for-vchiq-init.-Needed-in-some-cases-when-.patch b/patches/linux-3.6.11/0196-Add-retry-for-vchiq-init.-Needed-in-some-cases-when-.patch new file mode 100644 index 0000000..6e21200 --- /dev/null +++ b/patches/linux-3.6.11/0196-Add-retry-for-vchiq-init.-Needed-in-some-cases-when-.patch @@ -0,0 +1,47 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Thu, 27 Dec 2012 14:13:02 +0000 +Subject: [PATCH] Add retry for vchiq init. Needed in some cases when using CMA + +--- + .../vc04_services/interface/vchiq_arm/vchiq_kern_lib.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c +index 87474a2..36b3d34 100644 +--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c ++++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c +@@ -68,20 +68,31 @@ vchiq_blocking_bulk_transfer(VCHIQ_SERVICE_HANDLE_T handle, void *data, + * vchiq_initialise + * + ***************************************************************************/ +- ++#define VCHIQ_INIT_RETRIES 10 + VCHIQ_STATUS_T vchiq_initialise(VCHIQ_INSTANCE_T *instanceOut) + { + VCHIQ_STATUS_T status = VCHIQ_ERROR; + VCHIQ_STATE_T *state; + VCHIQ_INSTANCE_T instance = NULL; ++ int i; + + vchiq_log_trace(vchiq_core_log_level, "%s called", __func__); + +- state = vchiq_get_state(); +- if (!state) { ++ /* VideoCore may not be ready due to boot up timing. ++ It may never be ready if kernel and firmware are mismatched, so don't block forever. */ ++ for (i=0; i<VCHIQ_INIT_RETRIES; i++) { ++ state = vchiq_get_state(); ++ if (state) ++ break; ++ udelay(500); ++ } ++ if (i==VCHIQ_INIT_RETRIES) { + vchiq_log_error(vchiq_core_log_level, + "%s: videocore not initialized\n", __func__); + goto failed; ++ } else if (i>0) { ++ vchiq_log_warning(vchiq_core_log_level, ++ "%s: videocore initialized after %d retries\n", __func__, i); + } + + instance = kzalloc(sizeof(*instance), GFP_KERNEL); diff --git a/patches/linux-3.6.11/0197-Silence-bootup-errors-from-timer-and-gpio.patch b/patches/linux-3.6.11/0197-Silence-bootup-errors-from-timer-and-gpio.patch new file mode 100644 index 0000000..87de481 --- /dev/null +++ b/patches/linux-3.6.11/0197-Silence-bootup-errors-from-timer-and-gpio.patch @@ -0,0 +1,46 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Thu, 27 Dec 2012 16:08:50 +0000 +Subject: [PATCH] Silence bootup errors from timer and gpio + +--- + arch/arm/mach-bcm2708/bcm2708.c | 11 ++++++----- + arch/arm/mach-bcm2708/bcm2708_gpio.c | 2 +- + 2 files changed, 7 insertions(+), 6 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index f41cbc0..7fe7283 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -762,13 +762,14 @@ static void timer_set_mode(enum clock_event_mode mode, + unsigned long stc; + + switch (mode) { +- case CLOCK_EVT_MODE_PERIODIC: +- stc = readl(__io_address(ST_BASE + 0x04)); +- writel(stc + TIMER_PERIOD, __io_address(ST_BASE + 0x18)); /* stc3 */ ++ case CLOCK_EVT_MODE_ONESHOT: /* Leave the timer disabled, .set_next_event will enable it */ ++ case CLOCK_EVT_MODE_SHUTDOWN: + break; +- case CLOCK_EVT_MODE_ONESHOT: ++ case CLOCK_EVT_MODE_PERIODIC: ++ + case CLOCK_EVT_MODE_UNUSED: +- case CLOCK_EVT_MODE_SHUTDOWN: ++ case CLOCK_EVT_MODE_RESUME: ++ + default: + printk(KERN_ERR "timer_set_mode: unhandled mode:%d\n", + (int)mode); +diff --git a/arch/arm/mach-bcm2708/bcm2708_gpio.c b/arch/arm/mach-bcm2708/bcm2708_gpio.c +index 6c81d9d..c8161e1 100644 +--- a/arch/arm/mach-bcm2708/bcm2708_gpio.c ++++ b/arch/arm/mach-bcm2708/bcm2708_gpio.c +@@ -263,7 +263,7 @@ static int bcm2708_gpio_probe(struct platform_device *dev) + struct resource *res; + int err = 0; + +- printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_probe %p\n", dev); ++ printk(KERN_INFO DRIVER_NAME ": bcm2708_gpio_probe %p\n", dev); + + ucb = kzalloc(sizeof(*ucb), GFP_KERNEL); + if (NULL == ucb) { diff --git a/patches/linux-3.6.11/0198-Remove-RTC_HCTOSYS-as-it-produces-a-kernel-boot-erro.patch b/patches/linux-3.6.11/0198-Remove-RTC_HCTOSYS-as-it-produces-a-kernel-boot-erro.patch new file mode 100644 index 0000000..9a223af --- /dev/null +++ b/patches/linux-3.6.11/0198-Remove-RTC_HCTOSYS-as-it-produces-a-kernel-boot-erro.patch @@ -0,0 +1,29 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Thu, 27 Dec 2012 17:09:39 +0000 +Subject: [PATCH] Remove RTC_HCTOSYS as it produces a kernel boot error, and + doesn't do anything with RTC kernel modules + +--- + arch/arm/configs/bcmrpi_defconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 14d6ebf..92e98e6 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -793,7 +793,6 @@ CONFIG_USB_STORAGE_ONETOUCH=m + CONFIG_USB_STORAGE_KARMA=m + CONFIG_USB_STORAGE_CYPRESS_ATACB=m + CONFIG_USB_STORAGE_ENE_UB6250=m +-CONFIG_USB_UAS=y + CONFIG_USB_LIBUSUAL=y + CONFIG_USB_MDC800=m + CONFIG_USB_MICROTEK=m +@@ -880,6 +879,7 @@ CONFIG_LEDS_TRIGGER_TIMER=m + CONFIG_LEDS_TRIGGER_HEARTBEAT=m + CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + CONFIG_RTC_CLASS=y ++# CONFIG_RTC_HCTOSYS is not set + CONFIG_RTC_DRV_DS1307=m + CONFIG_RTC_DRV_DS1374=m + CONFIG_RTC_DRV_DS1672=m diff --git a/patches/linux-3.6.11/0199-Make-CMA-kernel-messages-quieter-when-not-fatal.patch b/patches/linux-3.6.11/0199-Make-CMA-kernel-messages-quieter-when-not-fatal.patch new file mode 100644 index 0000000..ce1c2f3 --- /dev/null +++ b/patches/linux-3.6.11/0199-Make-CMA-kernel-messages-quieter-when-not-fatal.patch @@ -0,0 +1,44 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Thu, 27 Dec 2012 23:38:27 +0000 +Subject: [PATCH] Make CMA kernel messages quieter when not fatal + +--- + drivers/char/broadcom/vc_cma/vc_cma.c | 4 ++-- + drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/char/broadcom/vc_cma/vc_cma.c b/drivers/char/broadcom/vc_cma/vc_cma.c +index 32dc832..926b609 100644 +--- a/drivers/char/broadcom/vc_cma/vc_cma.c ++++ b/drivers/char/broadcom/vc_cma/vc_cma.c +@@ -156,7 +156,7 @@ static bool send_worker_msg(VCHIQ_HEADER_T * msg); + static int __init early_vc_cma_mem(char *p) + { + unsigned int new_size; +- printk(KERN_ERR "early_vc_cma_mem(%s)", p); ++ printk(KERN_NOTICE "early_vc_cma_mem(%s)", p); + vc_cma_size = memparse(p, &p); + vc_cma_initial = vc_cma_size; + if (*p == '/') +@@ -175,7 +175,7 @@ static int __init early_vc_cma_mem(char *p) + vc_cma_base = (vc_cma_base + VC_CMA_CHUNK_SIZE - 1) + & ~(VC_CMA_CHUNK_SIZE - 1); + +- printk(KERN_ERR " -> initial %x, size %x, base %x", vc_cma_initial, ++ printk(KERN_NOTICE " -> initial %x, size %x, base %x", vc_cma_initial, + vc_cma_size, (unsigned int)vc_cma_base); + + return 0; +diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c +index 2a46d29..7298d85 100644 +--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c ++++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c +@@ -1445,7 +1445,7 @@ vchiq_get_state(void) + if (g_state.remote == NULL) + printk(KERN_ERR "%s: g_state.remote == NULL\n", __func__); + else if (g_state.remote->initialised != 1) +- printk(KERN_ERR "%s: g_state.remote->initialised != 1 (%d)\n", ++ printk(KERN_NOTICE "%s: g_state.remote->initialised != 1 (%d)\n", + __func__, g_state.remote->initialised); + + return ((g_state.remote != NULL) && diff --git a/patches/linux-3.6.11/0200-Add-missing-USB_NET-modules.patch b/patches/linux-3.6.11/0200-Add-missing-USB_NET-modules.patch new file mode 100644 index 0000000..0edf299 --- /dev/null +++ b/patches/linux-3.6.11/0200-Add-missing-USB_NET-modules.patch @@ -0,0 +1,32 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Tue, 1 Jan 2013 16:17:43 +0000 +Subject: [PATCH] Add missing USB_NET modules + +--- + arch/arm/configs/bcmrpi_defconfig | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 92e98e6..4eb9edb 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -386,6 +386,7 @@ CONFIG_USB_USBNET=y + CONFIG_USB_NET_AX8817X=m + CONFIG_USB_NET_CDCETHER=m + CONFIG_USB_NET_CDC_EEM=m ++CONFIG_USB_NET_CDC_NCM=m + CONFIG_USB_NET_DM9601=m + CONFIG_USB_NET_SMSC75XX=m + CONFIG_USB_NET_SMSC95XX=y +@@ -397,9 +398,10 @@ CONFIG_USB_NET_CDC_SUBSET=m + CONFIG_USB_ALI_M5632=y + CONFIG_USB_AN2720=y + CONFIG_USB_KC2190=y +-# CONFIG_USB_NET_ZAURUS is not set ++CONFIG_USB_NET_ZAURUS=m + CONFIG_USB_NET_CX82310_ETH=m + CONFIG_USB_NET_KALMIA=m ++CONFIG_USB_NET_QMI_WWAN=m + CONFIG_USB_NET_INT51X1=m + CONFIG_USB_IPHETH=m + CONFIG_USB_SIERRA_NET=m diff --git a/patches/linux-3.6.11/0201-Add-mutex-around-bcm_mailbox_property-function.patch b/patches/linux-3.6.11/0201-Add-mutex-around-bcm_mailbox_property-function.patch new file mode 100644 index 0000000..5f5e687 --- /dev/null +++ b/patches/linux-3.6.11/0201-Add-mutex-around-bcm_mailbox_property-function.patch @@ -0,0 +1,38 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Mon, 7 Jan 2013 21:34:59 +0000 +Subject: [PATCH] Add mutex around bcm_mailbox_property function + +--- + arch/arm/mach-bcm2708/vcio.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/mach-bcm2708/vcio.c b/arch/arm/mach-bcm2708/vcio.c +index 09b78b5..599eb63 100644 +--- a/arch/arm/mach-bcm2708/vcio.c ++++ b/arch/arm/mach-bcm2708/vcio.c +@@ -245,7 +245,7 @@ static int mbox_copy_to_user(void *dst, const void *src, int size) + } + } + +- ++static DEFINE_MUTEX(mailbox_lock); + extern int bcm_mailbox_property(void *data, int size) + { + uint32_t success; +@@ -253,6 +253,7 @@ extern int bcm_mailbox_property(void *data, int size) + void *mem_kern; /* the memory address accessed from driver */ + int s = 0; + ++ mutex_lock(&mailbox_lock); + /* allocate some memory for the messages communicating with GPU */ + mem_kern = dma_alloc_coherent(NULL, PAGE_ALIGN(size), &mem_bus, GFP_ATOMIC); + if (mem_kern) { +@@ -276,6 +277,8 @@ extern int bcm_mailbox_property(void *data, int size) + } + if (s != 0) + printk(KERN_ERR DRIVER_NAME ": %s failed (%d)\n", __func__, s); ++ ++ mutex_unlock(&mailbox_lock); + return s; + } + EXPORT_SYMBOL_GPL(bcm_mailbox_property); diff --git a/patches/linux-3.6.11/0202-Enable-ZRAM-and-RFKILL-config-options.patch b/patches/linux-3.6.11/0202-Enable-ZRAM-and-RFKILL-config-options.patch new file mode 100644 index 0000000..ddd2d5c --- /dev/null +++ b/patches/linux-3.6.11/0202-Enable-ZRAM-and-RFKILL-config-options.patch @@ -0,0 +1,39 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Mon, 7 Jan 2013 21:36:19 +0000 +Subject: [PATCH] Enable ZRAM and RFKILL config options + +--- + arch/arm/configs/bcmrpi_defconfig | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 4eb9edb..477b78b 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -42,6 +42,8 @@ CONFIG_ARCH_BCM2708=y + CONFIG_BCM2708_DMAER=m + CONFIG_PREEMPT=y + CONFIG_AEABI=y ++CONFIG_CLEANCACHE=y ++CONFIG_FRONTSWAP=y + CONFIG_UACCESS_WITH_MEMCPY=y + CONFIG_SECCOMP=y + CONFIG_CC_STACKPROTECTOR=y +@@ -330,6 +332,8 @@ CONFIG_MAC80211=m + CONFIG_MAC80211_RC_PID=y + CONFIG_MAC80211_MESH=y + CONFIG_WIMAX=m ++CONFIG_RFKILL=m ++CONFIG_RFKILL_INPUT=y + CONFIG_NET_9P=m + CONFIG_NFC=m + CONFIG_NFC_PN533=m +@@ -917,6 +921,8 @@ CONFIG_STAGING=y + CONFIG_W35UND=m + CONFIG_PRISM2_USB=m + CONFIG_R8712U=m ++CONFIG_ZRAM=m ++CONFIG_ZSMALLOC=m + CONFIG_STAGING_MEDIA=y + CONFIG_LIRC_STAGING=y + CONFIG_LIRC_IGORPLUGUSB=m diff --git a/patches/linux-3.6.11/0203-dwc_otg-fix-bug-in-dwc_otg_hcd.c-resulting-in-silent.patch b/patches/linux-3.6.11/0203-dwc_otg-fix-bug-in-dwc_otg_hcd.c-resulting-in-silent.patch new file mode 100644 index 0000000..53a7fc0 --- /dev/null +++ b/patches/linux-3.6.11/0203-dwc_otg-fix-bug-in-dwc_otg_hcd.c-resulting-in-silent.patch @@ -0,0 +1,35 @@ +From: P33M <P33M@github.com> +Date: Wed, 9 Jan 2013 16:12:04 +0000 +Subject: [PATCH] dwc_otg: fix bug in dwc_otg_hcd.c resulting in silent kernel + memory corruption, escalating to OOPS under high USB load. + +--- + drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 2 -- + drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c | 1 + + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +index 2b7945a..d5c94f4 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +@@ -500,8 +500,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd, + DWC_ERROR("DWC OTG HCD URB Enqueue failed adding QTD. " + "Error status %d\n", retval); + dwc_otg_hcd_qtd_free(qtd); +- } else { +- qtd->qh = *ep_handle; + } + intr_mask.d32 = DWC_READ_REG32(&hcd->core_if->core_global_regs->gintmsk); + if (!intr_mask.b.sofintr && retval == 0) { +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c +index e6b2a7b..b337e1b 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c +@@ -946,6 +946,7 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd, + if (retval == 0) { + DWC_CIRCLEQ_INSERT_TAIL(&((*qh)->qtd_list), qtd, + qtd_list_entry); ++ qtd->qh = *qh; + } + DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); + diff --git a/patches/linux-3.6.11/0204-Add-config-options-for-netfilter-log-and-more-dvb-mo.patch b/patches/linux-3.6.11/0204-Add-config-options-for-netfilter-log-and-more-dvb-mo.patch new file mode 100644 index 0000000..cc6af18 --- /dev/null +++ b/patches/linux-3.6.11/0204-Add-config-options-for-netfilter-log-and-more-dvb-mo.patch @@ -0,0 +1,43 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Sun, 13 Jan 2013 15:58:09 +0000 +Subject: [PATCH] Add config options for netfilter log and more dvb modules + +--- + arch/arm/configs/bcmrpi_defconfig | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 477b78b..c66ba6b 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -117,8 +117,10 @@ CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m + CONFIG_NETFILTER_XT_TARGET_CONNMARK=m + CONFIG_NETFILTER_XT_TARGET_CT=m + CONFIG_NETFILTER_XT_TARGET_DSCP=m ++CONFIG_NETFILTER_XT_TARGET_HMARK=m + CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m + CONFIG_NETFILTER_XT_TARGET_LED=m ++CONFIG_NETFILTER_XT_TARGET_LOG=m + CONFIG_NETFILTER_XT_TARGET_MARK=m + CONFIG_NETFILTER_XT_TARGET_NFLOG=m + CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +@@ -627,6 +629,8 @@ CONFIG_DVB_USB_IT913X=m + CONFIG_DVB_USB_MXL111SF=m + CONFIG_DVB_USB_RTL28XXU=m + CONFIG_DVB_USB_AF9035=m ++CONFIG_SMS_SIANO_MDTV=m ++CONFIG_SMS_USB_DRV=m + # CONFIG_DVB_STB0899 is not set + # CONFIG_DVB_STB6100 is not set + # CONFIG_DVB_STV090x is not set +@@ -667,10 +671,6 @@ CONFIG_DVB_USB_AF9035=m + # CONFIG_DVB_TDA1004X is not set + # CONFIG_DVB_NXT6000 is not set + # CONFIG_DVB_MT352 is not set +-# CONFIG_DVB_DIB7000M is not set +-# CONFIG_DVB_DIB7000P is not set +-# CONFIG_DVB_DIB9000 is not set +-# CONFIG_DVB_TDA10048 is not set + # CONFIG_DVB_HD29L2 is not set + # CONFIG_DVB_STV0367 is not set + # CONFIG_DVB_CXD2820R is not set diff --git a/patches/linux-3.6.11/0205-Add-more-dvb-modules.patch b/patches/linux-3.6.11/0205-Add-more-dvb-modules.patch new file mode 100644 index 0000000..80082aa --- /dev/null +++ b/patches/linux-3.6.11/0205-Add-more-dvb-modules.patch @@ -0,0 +1,152 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Tue, 15 Jan 2013 00:05:59 +0000 +Subject: [PATCH] Add more dvb modules + +--- + arch/arm/configs/bcmrpi_defconfig | 91 ++++++--------------------------------- + 1 file changed, 12 insertions(+), 79 deletions(-) + +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index c66ba6b..7e9eed2 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -423,9 +423,6 @@ CONFIG_ATH_COMMON=m + CONFIG_ATH9K=m + CONFIG_ATH9K_HTC=m + CONFIG_CARL9170=m +-CONFIG_B43=m +-CONFIG_B43_PHY_N=y +-CONFIG_B43LEGACY=m + CONFIG_HOSTAP=m + CONFIG_LIBERTAS=m + CONFIG_LIBERTAS_USB=m +@@ -519,6 +516,7 @@ CONFIG_IR_IGUANA=m + CONFIG_RC_LOOPBACK=m + CONFIG_IR_GPIO_CIR=m + CONFIG_MEDIA_ATTACH=y ++CONFIG_VIDEO_HELPER_CHIPS_AUTO=y + CONFIG_VIDEO_VIVI=m + CONFIG_USB_VIDEO_CLASS=m + CONFIG_USB_M5602=m +@@ -591,10 +589,15 @@ CONFIG_USB_MR800=m + CONFIG_USB_DSBR=m + CONFIG_RADIO_SHARK=m + CONFIG_RADIO_SHARK2=m ++CONFIG_RADIO_SI4713=m + CONFIG_USB_KEENE=m ++CONFIG_RADIO_TEA5764=m ++CONFIG_RADIO_SAA7706H=m ++CONFIG_RADIO_TEF6862=m + CONFIG_DVB_USB=m + CONFIG_DVB_USB_A800=m + CONFIG_DVB_USB_DIBUSB_MB=m ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y + CONFIG_DVB_USB_DIBUSB_MC=m + CONFIG_DVB_USB_DIB0700=m + CONFIG_DVB_USB_UMT_010=m +@@ -631,82 +634,8 @@ CONFIG_DVB_USB_RTL28XXU=m + CONFIG_DVB_USB_AF9035=m + CONFIG_SMS_SIANO_MDTV=m + CONFIG_SMS_USB_DRV=m +-# CONFIG_DVB_STB0899 is not set +-# CONFIG_DVB_STB6100 is not set +-# CONFIG_DVB_STV090x is not set +-# CONFIG_DVB_STV6110x is not set +-# CONFIG_DVB_DRXK is not set +-# CONFIG_DVB_TDA18271C2DD is not set +-# CONFIG_DVB_CX24110 is not set +-# CONFIG_DVB_CX24123 is not set +-# CONFIG_DVB_MT312 is not set +-# CONFIG_DVB_ZL10036 is not set +-# CONFIG_DVB_ZL10039 is not set +-# CONFIG_DVB_S5H1420 is not set +-# CONFIG_DVB_STV0288 is not set +-# CONFIG_DVB_STB6000 is not set +-# CONFIG_DVB_STV0299 is not set +-# CONFIG_DVB_STV6110 is not set +-# CONFIG_DVB_STV0900 is not set +-# CONFIG_DVB_TDA8083 is not set +-# CONFIG_DVB_TDA10086 is not set +-# CONFIG_DVB_TDA8261 is not set +-# CONFIG_DVB_VES1X93 is not set +-# CONFIG_DVB_TUNER_ITD1000 is not set +-# CONFIG_DVB_TUNER_CX24113 is not set +-# CONFIG_DVB_TDA826X is not set +-# CONFIG_DVB_TUA6100 is not set +-# CONFIG_DVB_CX24116 is not set +-# CONFIG_DVB_SI21XX is not set +-# CONFIG_DVB_DS3000 is not set +-# CONFIG_DVB_MB86A16 is not set +-# CONFIG_DVB_TDA10071 is not set +-# CONFIG_DVB_SP8870 is not set +-# CONFIG_DVB_SP887X is not set +-# CONFIG_DVB_CX22700 is not set +-# CONFIG_DVB_CX22702 is not set +-# CONFIG_DVB_S5H1432 is not set +-# CONFIG_DVB_DRXD is not set +-# CONFIG_DVB_L64781 is not set +-# CONFIG_DVB_TDA1004X is not set +-# CONFIG_DVB_NXT6000 is not set +-# CONFIG_DVB_MT352 is not set +-# CONFIG_DVB_HD29L2 is not set +-# CONFIG_DVB_STV0367 is not set +-# CONFIG_DVB_CXD2820R is not set +-# CONFIG_DVB_VES1820 is not set +-# CONFIG_DVB_TDA10021 is not set +-# CONFIG_DVB_TDA10023 is not set +-# CONFIG_DVB_STV0297 is not set +-# CONFIG_DVB_NXT200X is not set +-# CONFIG_DVB_OR51211 is not set +-# CONFIG_DVB_OR51132 is not set +-# CONFIG_DVB_BCM3510 is not set +-# CONFIG_DVB_LGDT330X is not set +-# CONFIG_DVB_LGDT3305 is not set +-# CONFIG_DVB_LG2160 is not set +-# CONFIG_DVB_S5H1409 is not set +-# CONFIG_DVB_AU8522_DTV is not set +-# CONFIG_DVB_AU8522_V4L is not set +-# CONFIG_DVB_S5H1411 is not set +-# CONFIG_DVB_S921 is not set +-# CONFIG_DVB_DIB8000 is not set +-# CONFIG_DVB_MB86A20S is not set +-# CONFIG_DVB_PLL is not set +-# CONFIG_DVB_TUNER_DIB0070 is not set +-# CONFIG_DVB_TUNER_DIB0090 is not set +-# CONFIG_DVB_LNBP21 is not set +-# CONFIG_DVB_LNBP22 is not set +-# CONFIG_DVB_ISL6405 is not set +-# CONFIG_DVB_ISL6421 is not set +-# CONFIG_DVB_ISL6423 is not set +-# CONFIG_DVB_A8293 is not set +-# CONFIG_DVB_LGS8GL5 is not set +-# CONFIG_DVB_LGS8GXX is not set +-# CONFIG_DVB_ATBM8830 is not set +-# CONFIG_DVB_TDA665x is not set +-# CONFIG_DVB_IX2505V is not set +-# CONFIG_DVB_M88RS2000 is not set ++CONFIG_DVB_B2C2_FLEXCOP=m ++CONFIG_DVB_B2C2_FLEXCOP_USB=m + CONFIG_FB=y + CONFIG_FB_BCM2708=y + # CONFIG_BACKLIGHT_GENERIC is not set +@@ -921,9 +850,12 @@ CONFIG_STAGING=y + CONFIG_W35UND=m + CONFIG_PRISM2_USB=m + CONFIG_R8712U=m ++CONFIG_VT6656=m + CONFIG_ZRAM=m + CONFIG_ZSMALLOC=m + CONFIG_STAGING_MEDIA=y ++CONFIG_DVB_AS102=m ++CONFIG_EASYCAP=m + CONFIG_LIRC_STAGING=y + CONFIG_LIRC_IGORPLUGUSB=m + CONFIG_LIRC_IMON=m +@@ -968,6 +900,7 @@ CONFIG_MSDOS_FS=y + CONFIG_VFAT_FS=y + CONFIG_FAT_DEFAULT_IOCHARSET="ascii" + CONFIG_NTFS_FS=m ++CONFIG_NTFS_RW=y + CONFIG_TMPFS=y + CONFIG_TMPFS_POSIX_ACL=y + CONFIG_CONFIGFS_FS=y diff --git a/patches/linux-3.6.11/0206-Return-error-value-from-bcm2708_setup_state.-Thanks-.patch b/patches/linux-3.6.11/0206-Return-error-value-from-bcm2708_setup_state.-Thanks-.patch new file mode 100644 index 0000000..5a24c7f --- /dev/null +++ b/patches/linux-3.6.11/0206-Return-error-value-from-bcm2708_setup_state.-Thanks-.patch @@ -0,0 +1,20 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Mon, 21 Jan 2013 23:03:53 +0000 +Subject: [PATCH] Return error value from bcm2708_setup_state. Thanks notro + +--- + drivers/spi/spi-bcm2708.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c +index ef8fef0..fb5f17b 100644 +--- a/drivers/spi/spi-bcm2708.c ++++ b/drivers/spi/spi-bcm2708.c +@@ -378,6 +378,7 @@ static int bcm2708_spi_setup(struct spi_device *spi) + if (ret < 0) { + kfree(state); + spi->controller_state = NULL; ++ return ret; + } + + dev_dbg(&spi->dev, diff --git a/patches/linux-3.6.11/0207-spi-spi-bcm2708-respect-per-transfer-SPI-clock-speed.patch b/patches/linux-3.6.11/0207-spi-spi-bcm2708-respect-per-transfer-SPI-clock-speed.patch new file mode 100644 index 0000000..716468a --- /dev/null +++ b/patches/linux-3.6.11/0207-spi-spi-bcm2708-respect-per-transfer-SPI-clock-speed.patch @@ -0,0 +1,43 @@ +From: Kamal Mostafa <kamal@whence.com> +Date: Mon, 22 Oct 2012 15:52:44 -0700 +Subject: [PATCH] spi/spi-bcm2708: respect per-transfer SPI clock speed_hz + value + +The bcm2708 SPI driver's bcm2708_process_transfer() was ignoring the +per-transfer speed_hz value even when it was provided (it always just +used the spi device's max_speed_hz value). Now, per-transfer speed_hz +values are respected. + +Also added debug print to bcm2708_setup_state() to help keep an eye on +the configured SPI parameters. + +Signed-off-by: Kamal Mostafa <kamal@whence.com> +--- + drivers/spi/spi-bcm2708.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c +index fb5f17b..088cbaa 100644 +--- a/drivers/spi/spi-bcm2708.c ++++ b/drivers/spi/spi-bcm2708.c +@@ -259,6 +259,10 @@ static int bcm2708_setup_state(struct spi_master *master, + if (state) { + state->cs = cs; + state->cdiv = cdiv; ++ dev_dbg(dev, "setup: want %d Hz; " ++ "bus_hz=%lu / cdiv=%u == %lu Hz; " ++ "mode %u: cs 0x%08X\n", ++ hz, bus_hz, cdiv, bus_hz/cdiv, mode, cs); + } + + return 0; +@@ -277,7 +281,8 @@ static int bcm2708_process_transfer(struct bcm2708_spi *bs, + + if (xfer->bits_per_word || xfer->speed_hz) { + ret = bcm2708_setup_state(spi->master, &spi->dev, &state, +- spi->max_speed_hz, spi->chip_select, spi->mode, ++ xfer->speed_hz ? xfer->speed_hz : spi->max_speed_hz, ++ spi->chip_select, spi->mode, + spi->bits_per_word); + if (ret) + return ret; diff --git a/patches/linux-3.6.11/0208-spi-bcm2708-add-9-bit-support-using-LoSSI-mode.patch b/patches/linux-3.6.11/0208-spi-bcm2708-add-9-bit-support-using-LoSSI-mode.patch new file mode 100644 index 0000000..3c58133 --- /dev/null +++ b/patches/linux-3.6.11/0208-spi-bcm2708-add-9-bit-support-using-LoSSI-mode.patch @@ -0,0 +1,68 @@ +From: notro <notro@tronnes.org> +Date: Sat, 26 Jan 2013 20:38:03 +0100 +Subject: [PATCH] spi-bcm2708: add 9-bit support using LoSSI mode + +--- + drivers/spi/spi-bcm2708.c | 30 ++++++++++++++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c +index 088cbaa..1744c1e 100644 +--- a/drivers/spi/spi-bcm2708.c ++++ b/drivers/spi/spi-bcm2708.c +@@ -146,10 +146,31 @@ static inline void bcm2708_rd_fifo(struct bcm2708_spi *bs, int len) + static inline void bcm2708_wr_fifo(struct bcm2708_spi *bs, int len) + { + u8 byte; ++ u16 val; + + if (len > bs->len) + len = bs->len; + ++ if (unlikely(bcm2708_rd(bs, SPI_CS) & SPI_CS_LEN)) { ++ /* LoSSI mode */ ++ if (unlikely(len % 2)) { ++ printk(KERN_ERR"bcm2708_wr_fifo: length must be even, skipping.\n"); ++ bs->len = 0; ++ return; ++ } ++ while (len) { ++ if (bs->tx_buf) { ++ val = *(const u16 *)bs->tx_buf; ++ bs->tx_buf += 2; ++ } else ++ val = 0; ++ bcm2708_wr(bs, SPI_FIFO, val); ++ bs->len -= 2; ++ len -= 2; ++ } ++ return; ++ } ++ + while (len--) { + byte = bs->tx_buf ? *bs->tx_buf++ : 0; + bcm2708_wr(bs, SPI_FIFO, byte); +@@ -234,8 +255,12 @@ static int bcm2708_setup_state(struct spi_master *master, + switch (bpw) { + case 8: + break; ++ case 9: ++ /* Reading in LoSSI mode is a special case. See 'BCM2835 ARM Peripherals' datasheet */ ++ cs |= SPI_CS_LEN; ++ break; + default: +- dev_dbg(dev, "setup: invalid bits_per_word %u (must be 8)\n", ++ dev_dbg(dev, "setup: invalid bits_per_word %u (must be 8 or 9)\n", + bpw); + return -EINVAL; + } +@@ -283,7 +308,8 @@ static int bcm2708_process_transfer(struct bcm2708_spi *bs, + ret = bcm2708_setup_state(spi->master, &spi->dev, &state, + xfer->speed_hz ? xfer->speed_hz : spi->max_speed_hz, + spi->chip_select, spi->mode, +- spi->bits_per_word); ++ xfer->bits_per_word ? xfer->bits_per_word : ++ spi->bits_per_word); + if (ret) + return ret; + diff --git a/patches/linux-3.6.11/0209-Add-hwrng-hardware-random-number-generator-driver.patch b/patches/linux-3.6.11/0209-Add-hwrng-hardware-random-number-generator-driver.patch new file mode 100644 index 0000000..7a32e1a --- /dev/null +++ b/patches/linux-3.6.11/0209-Add-hwrng-hardware-random-number-generator-driver.patch @@ -0,0 +1,176 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Wed, 30 Jan 2013 11:44:26 +0000 +Subject: [PATCH] Add hwrng (hardware random number generator) driver + +--- + arch/arm/mach-bcm2708/include/mach/platform.h | 1 + + drivers/char/hw_random/Kconfig | 11 +++ + drivers/char/hw_random/Makefile | 1 + + drivers/char/hw_random/bcm2708-rng.c | 117 ++++++++++++++++++++++++++ + 4 files changed, 130 insertions(+) + create mode 100755 drivers/char/hw_random/bcm2708-rng.c + +diff --git a/arch/arm/mach-bcm2708/include/mach/platform.h b/arch/arm/mach-bcm2708/include/mach/platform.h +index 9c5d334..e063a1e 100644 +--- a/arch/arm/mach-bcm2708/include/mach/platform.h ++++ b/arch/arm/mach-bcm2708/include/mach/platform.h +@@ -62,6 +62,7 @@ + #define DMA_BASE (BCM2708_PERI_BASE + 0x7000) /* DMA controller */ + #define ARM_BASE (BCM2708_PERI_BASE + 0xB000) /* BCM2708 ARM control block */ + #define PM_BASE (BCM2708_PERI_BASE + 0x100000) /* Power Management, Reset controller and Watchdog registers */ ++#define RNG_BASE (BCM2708_PERI_BASE + 0x104000) /* Hardware RNG */ + #define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) /* GPIO */ + #define UART0_BASE (BCM2708_PERI_BASE + 0x201000) /* Uart 0 */ + #define MMCI0_BASE (BCM2708_PERI_BASE + 0x202000) /* MMC interface */ +diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig +index 7c0d391..ced6f01 100644 +--- a/drivers/char/hw_random/Kconfig ++++ b/drivers/char/hw_random/Kconfig +@@ -289,3 +289,14 @@ config HW_RANDOM_EXYNOS + module will be called exynos-rng. + + If unsure, say Y. ++ ++config HW_RANDOM_BCM2708 ++ tristate "BCM2708 generic true random number generator support" ++ depends on HW_RANDOM && ARCH_BCM2708 ++ ---help--- ++ This driver provides the kernel-side support for the BCM2708 hardware. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called bcm2708-rng. ++ ++ If unsure, say N. +\ No newline at end of file +diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile +index 39a757c..c6eb594 100644 +--- a/drivers/char/hw_random/Makefile ++++ b/drivers/char/hw_random/Makefile +@@ -25,3 +25,4 @@ obj-$(CONFIG_HW_RANDOM_PICOXCELL) += picoxcell-rng.o + obj-$(CONFIG_HW_RANDOM_PPC4XX) += ppc4xx-rng.o + obj-$(CONFIG_HW_RANDOM_PSERIES) += pseries-rng.o + obj-$(CONFIG_HW_RANDOM_EXYNOS) += exynos-rng.o ++obj-$(CONFIG_HW_RANDOM_BCM2708) += bcm2708-rng.o +diff --git a/drivers/char/hw_random/bcm2708-rng.c b/drivers/char/hw_random/bcm2708-rng.c +new file mode 100755 +index 0000000..1ffa7d7 +--- /dev/null ++++ b/drivers/char/hw_random/bcm2708-rng.c +@@ -0,0 +1,117 @@ ++/** ++ * Copyright (c) 2010-2012 Broadcom. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions, and the following disclaimer, ++ * without modification. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The names of the above-listed copyright holders may not be used ++ * to endorse or promote products derived from this software without ++ * specific prior written permission. ++ * ++ * ALTERNATIVELY, this software may be distributed under the terms of the ++ * GNU General Public License ("GPL") version 2, as published by the Free ++ * Software Foundation. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS ++ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ++ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR ++ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ++ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ++ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ++ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include <linux/kernel.h> ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/hw_random.h> ++#include <linux/printk.h> ++ ++#include <asm/io.h> ++#include <mach/hardware.h> ++#include <mach/platform.h> ++ ++#define RNG_CTRL (0x0) ++#define RNG_STATUS (0x4) ++#define RNG_DATA (0x8) ++#define RNG_FF_THRESHOLD (0xc) ++ ++/* enable rng */ ++#define RNG_RBGEN 0x1 ++/* double speed, less random mode */ ++#define RNG_RBG2X 0x2 ++ ++/* the initial numbers generated are "less random" so will be discarded */ ++#define RNG_WARMUP_COUNT 0x40000 ++ ++static int bcm2708_rng_data_read(struct hwrng *rng, u32 *buffer) ++{ ++ void __iomem *rng_base = (void __iomem *)rng->priv; ++ unsigned words; ++ /* wait for a random number to be in fifo */ ++ do { ++ words = __raw_readl(rng_base + RNG_STATUS)>>24; ++ } ++ while (words == 0); ++ /* read the random number */ ++ *buffer = __raw_readl(rng_base + RNG_DATA); ++ return 4; ++} ++ ++static struct hwrng bcm2708_rng_ops = { ++ .name = "bcm2708", ++ .data_read = bcm2708_rng_data_read, ++}; ++ ++static int __init bcm2708_rng_init(void) ++{ ++ void __iomem *rng_base; ++ int err; ++ ++ /* map peripheral */ ++ rng_base = ioremap(RNG_BASE, 0x10); ++ pr_info("bcm2708_rng_init=%p\n", rng_base); ++ if (!rng_base) { ++ pr_err("bcm2708_rng_init failed to ioremap\n"); ++ return -ENOMEM; ++ } ++ bcm2708_rng_ops.priv = (unsigned long)rng_base; ++ /* register driver */ ++ err = hwrng_register(&bcm2708_rng_ops); ++ if (err) { ++ pr_err("bcm2708_rng_init hwrng_register()=%d\n", err); ++ iounmap(rng_base); ++ } else { ++ /* set warm-up count & enable */ ++ __raw_writel(RNG_WARMUP_COUNT, rng_base + RNG_STATUS); ++ __raw_writel(RNG_RBGEN, rng_base + RNG_CTRL); ++ } ++ return err; ++} ++ ++static void __exit bcm2708_rng_exit(void) ++{ ++ void __iomem *rng_base = (void __iomem *)bcm2708_rng_ops.priv; ++ pr_info("bcm2708_rng_exit\n"); ++ /* disable rng hardware */ ++ __raw_writel(0, rng_base + RNG_CTRL); ++ /* unregister driver */ ++ hwrng_unregister(&bcm2708_rng_ops); ++ iounmap(rng_base); ++} ++ ++module_init(bcm2708_rng_init); ++module_exit(bcm2708_rng_exit); ++ ++MODULE_DESCRIPTION("BCM2708 H/W Random Number Generator (RNG) driver"); ++MODULE_LICENSE("GPL and additional rights"); diff --git a/patches/linux-3.6.11/0210-Add-HW_RANDOM-BATMAN_ADV-and-CONFIG_NET_IPGRE.patch b/patches/linux-3.6.11/0210-Add-HW_RANDOM-BATMAN_ADV-and-CONFIG_NET_IPGRE.patch new file mode 100644 index 0000000..6233845 --- /dev/null +++ b/patches/linux-3.6.11/0210-Add-HW_RANDOM-BATMAN_ADV-and-CONFIG_NET_IPGRE.patch @@ -0,0 +1,38 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Wed, 30 Jan 2013 12:45:18 +0000 +Subject: [PATCH] Add HW_RANDOM, BATMAN_ADV and CONFIG_NET_IPGRE + +--- + arch/arm/configs/bcmrpi_defconfig | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 7e9eed2..62985f4 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -76,6 +76,8 @@ CONFIG_IP_PNP=y + CONFIG_IP_PNP_DHCP=y + CONFIG_IP_PNP_RARP=y + CONFIG_NET_IPIP=m ++CONFIG_NET_IPGRE_DEMUX=m ++CONFIG_NET_IPGRE=m + CONFIG_SYN_COOKIES=y + CONFIG_INET_AH=m + CONFIG_INET_ESP=m +@@ -288,6 +290,7 @@ CONFIG_NET_ACT_PEDIT=m + CONFIG_NET_ACT_SIMP=m + CONFIG_NET_ACT_SKBEDIT=m + CONFIG_NET_ACT_CSUM=m ++CONFIG_BATMAN_ADV=m + CONFIG_NET_PKTGEN=m + CONFIG_HAMRADIO=y + CONFIG_AX25=m +@@ -468,7 +471,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y + CONFIG_SERIAL_AMBA_PL011=y + CONFIG_SERIAL_AMBA_PL011_CONSOLE=y + CONFIG_TTY_PRINTK=y +-# CONFIG_HW_RANDOM is not set ++CONFIG_HW_RANDOM_BCM2708=m + CONFIG_RAW_DRIVER=y + CONFIG_BRCM_CHAR_DRIVERS=y + CONFIG_BCM_VC_CMA=y diff --git a/patches/linux-3.6.11/0211-Add-raid0-module.patch b/patches/linux-3.6.11/0211-Add-raid0-module.patch new file mode 100644 index 0000000..2d22ad8 --- /dev/null +++ b/patches/linux-3.6.11/0211-Add-raid0-module.patch @@ -0,0 +1,20 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Fri, 1 Feb 2013 19:54:05 +0000 +Subject: [PATCH] Add raid0 module + +--- + arch/arm/configs/bcmrpi_defconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 62985f4..570a312 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -361,6 +361,7 @@ CONFIG_SCSI_MULTI_LUN=y + CONFIG_SCSI_ISCSI_ATTRS=y + CONFIG_ISCSI_TCP=m + CONFIG_MD=y ++CONFIG_MD_RAID0=m + CONFIG_BLK_DEV_DM=m + CONFIG_DM_CRYPT=m + CONFIG_DM_SNAPSHOT=m diff --git a/patches/linux-3.6.11/0212-Update-vchiq-to-version-supporting-querying-peer-ver.patch b/patches/linux-3.6.11/0212-Update-vchiq-to-version-supporting-querying-peer-ver.patch new file mode 100644 index 0000000..03232cb --- /dev/null +++ b/patches/linux-3.6.11/0212-Update-vchiq-to-version-supporting-querying-peer-ver.patch @@ -0,0 +1,295 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Thu, 7 Feb 2013 15:39:30 +0000 +Subject: [PATCH] Update vchiq to version supporting querying peer version of + services. Should be backwards compatible + +--- + drivers/misc/vc04_services/interface/vchi/vchi.h | 3 + + .../vc04_services/interface/vchiq_arm/vchiq_cfg.h | 2 +- + .../vc04_services/interface/vchiq_arm/vchiq_core.c | 111 +++++++++++++++++++-- + .../vc04_services/interface/vchiq_arm/vchiq_core.h | 5 + + .../vc04_services/interface/vchiq_arm/vchiq_if.h | 3 + + .../vc04_services/interface/vchiq_arm/vchiq_shim.c | 13 +++ + 6 files changed, 126 insertions(+), 11 deletions(-) + +diff --git a/drivers/misc/vc04_services/interface/vchi/vchi.h b/drivers/misc/vc04_services/interface/vchi/vchi.h +index ee908e2..cee5291 100644 +--- a/drivers/misc/vc04_services/interface/vchi/vchi.h ++++ b/drivers/misc/vc04_services/interface/vchi/vchi.h +@@ -208,6 +208,9 @@ extern int32_t vchi_service_open( VCHI_INSTANCE_T instance_handle, + SERVICE_CREATION_T *setup, + VCHI_SERVICE_HANDLE_T *handle); + ++extern int32_t vchi_get_peer_version( const VCHI_SERVICE_HANDLE_T handle, ++ short *peer_version ); ++ + // Routine to close a named service + extern int32_t vchi_service_close( const VCHI_SERVICE_HANDLE_T handle ); + +diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h +index 2489d9d..493c86c 100644 +--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h ++++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h +@@ -36,7 +36,7 @@ + + #define VCHIQ_MAGIC VCHIQ_MAKE_FOURCC('V', 'C', 'H', 'I') + /* The version of VCHIQ - change with any non-trivial change */ +-#define VCHIQ_VERSION 5 ++#define VCHIQ_VERSION 6 + /* The minimum compatible version - update to match VCHIQ_VERSION with any + ** incompatible change */ + #define VCHIQ_VERSION_MIN 3 +diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c +index 4b8d7cf..5470470 100644 +--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c ++++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c +@@ -58,6 +58,10 @@ struct vchiq_open_payload { + short version_min; + }; + ++struct vchiq_openack_payload { ++ short version; ++}; ++ + /* we require this for consistency between endpoints */ + vchiq_static_assert(sizeof(VCHIQ_HEADER_T) == 8); + vchiq_static_assert(IS_POW2(sizeof(VCHIQ_HEADER_T))); +@@ -1402,6 +1406,7 @@ pause_bulks(VCHIQ_STATE_T *state) + static void + resume_bulks(VCHIQ_STATE_T *state) + { ++ int i; + if (unlikely(atomic_dec_return(&pause_bulks_count) != 0)) { + WARN_ON_ONCE(1); + atomic_set(&pause_bulks_count, 0); +@@ -1410,6 +1415,34 @@ resume_bulks(VCHIQ_STATE_T *state) + + /* Allow bulk transfers from all services */ + mutex_unlock(&state->bulk_transfer_mutex); ++ ++ if (state->deferred_bulks == 0) ++ return; ++ ++ /* Deal with any bulks which had to be deferred due to being in ++ * paused state. Don't try to match up to number of deferred bulks ++ * in case we've had something come and close the service in the ++ * interim - just process all bulk queues for all services */ ++ vchiq_log_info(vchiq_core_log_level, "%s: processing %d deferred bulks", ++ __func__, state->deferred_bulks); ++ ++ for (i = 0; i < state->unused_service; i++) { ++ VCHIQ_SERVICE_T *service = state->services[i]; ++ int resolved_rx = 0; ++ int resolved_tx = 0; ++ if (!service || (service->srvstate != VCHIQ_SRVSTATE_OPEN)) ++ continue; ++ ++ mutex_lock(&service->bulk_mutex); ++ resolved_rx = resolve_bulks(service, &service->bulk_rx); ++ resolved_tx = resolve_bulks(service, &service->bulk_tx); ++ mutex_unlock(&service->bulk_mutex); ++ if (resolved_rx) ++ notify_bulks(service, &service->bulk_rx, 1); ++ if (resolved_tx) ++ notify_bulks(service, &service->bulk_tx, 1); ++ } ++ state->deferred_bulks = 0; + } + + static int +@@ -1425,7 +1458,7 @@ parse_open(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header) + type = VCHIQ_MSG_TYPE(msgid); + localport = VCHIQ_MSG_DSTPORT(msgid); + remoteport = VCHIQ_MSG_SRCPORT(msgid); +- if (size == sizeof(struct vchiq_open_payload)) { ++ if (size >= sizeof(struct vchiq_open_payload)) { + const struct vchiq_open_payload *payload = + (struct vchiq_open_payload *)header->data; + unsigned int fourcc; +@@ -1458,7 +1491,17 @@ parse_open(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header) + unlock_service(service); + goto fail_open; + } ++ service->peer_version = version; ++ + if (service->srvstate == VCHIQ_SRVSTATE_LISTENING) { ++ struct vchiq_openack_payload ack_payload = { ++ service->version ++ }; ++ VCHIQ_ELEMENT_T body = { ++ &ack_payload, ++ sizeof(ack_payload) ++ }; ++ + /* Acknowledge the OPEN */ + if (service->sync) { + if (queue_message_sync(state, NULL, +@@ -1466,7 +1509,8 @@ parse_open(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header) + VCHIQ_MSG_OPENACK, + service->localport, + remoteport), +- NULL, 0, 0, 0) == VCHIQ_RETRY) ++ &body, 1, sizeof(ack_payload), ++ 0) == VCHIQ_RETRY) + goto bail_not_ready; + } else { + if (queue_message(state, NULL, +@@ -1474,7 +1518,8 @@ parse_open(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header) + VCHIQ_MSG_OPENACK, + service->localport, + remoteport), +- NULL, 0, 0, 0) == VCHIQ_RETRY) ++ &body, 1, sizeof(ack_payload), ++ 0) == VCHIQ_RETRY) + goto bail_not_ready; + } + +@@ -1639,10 +1684,16 @@ parse_rx_slots(VCHIQ_STATE_T *state) + goto bail_not_ready; + break; + case VCHIQ_MSG_OPENACK: ++ if (size >= sizeof(struct vchiq_openack_payload)) { ++ const struct vchiq_openack_payload *payload = ++ (struct vchiq_openack_payload *) ++ header->data; ++ service->peer_version = payload->version; ++ } + vchiq_log_info(vchiq_core_log_level, +- "%d: prs OPENACK@%x (%d->%d)", +- state->id, (unsigned int)header, +- remoteport, localport); ++ "%d: prs OPENACK@%x,%x (%d->%d) v:%d", ++ state->id, (unsigned int)header, size, ++ remoteport, localport, service->peer_version); + if (service->srvstate == + VCHIQ_SRVSTATE_OPENING) { + service->remoteport = remoteport; +@@ -1743,7 +1794,22 @@ parse_rx_slots(VCHIQ_STATE_T *state) + + queue->remote_insert++; + +- if (state->conn_state == ++ if (atomic_read(&pause_bulks_count)) { ++ state->deferred_bulks++; ++ vchiq_log_info(vchiq_core_log_level, ++ "%s: deferring bulk (%d)", ++ __func__, ++ state->deferred_bulks); ++ if (state->conn_state != ++ VCHIQ_CONNSTATE_PAUSE_SENT) ++ vchiq_log_error( ++ vchiq_core_log_level, ++ "%s: bulks paused in " ++ "unexpected state %s", ++ __func__, ++ conn_state_names[ ++ state->conn_state]); ++ } else if (state->conn_state == + VCHIQ_CONNSTATE_CONNECTED) { + DEBUG_TRACE(PARSE_LINE); + resolved = resolve_bulks(service, +@@ -2064,10 +2130,16 @@ sync_func(void *v) + + switch (type) { + case VCHIQ_MSG_OPENACK: ++ if (size >= sizeof(struct vchiq_openack_payload)) { ++ const struct vchiq_openack_payload *payload = ++ (struct vchiq_openack_payload *) ++ header->data; ++ service->peer_version = payload->version; ++ } + vchiq_log_info(vchiq_sync_log_level, +- "%d: sf OPENACK@%x (%d->%d)", +- state->id, (unsigned int)header, +- remoteport, localport); ++ "%d: sf OPENACK@%x,%x (%d->%d) v:%d", ++ state->id, (unsigned int)header, size, ++ remoteport, localport, service->peer_version); + if (service->srvstate == VCHIQ_SRVSTATE_OPENING) { + service->remoteport = remoteport; + vchiq_set_service_state(service, +@@ -3329,6 +3401,25 @@ release_message_sync(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header) + } + + VCHIQ_STATUS_T ++vchiq_get_peer_version(VCHIQ_SERVICE_HANDLE_T handle, short *peer_version) ++{ ++ VCHIQ_STATUS_T status = VCHIQ_ERROR; ++ VCHIQ_SERVICE_T *service = find_service_by_handle(handle); ++ ++ if (!service || ++ (vchiq_check_service(service) != VCHIQ_SUCCESS) || ++ !peer_version) ++ goto exit; ++ *peer_version = service->peer_version; ++ status = VCHIQ_SUCCESS; ++ ++exit: ++ if (service) ++ unlock_service(service); ++ return status; ++} ++ ++VCHIQ_STATUS_T + vchiq_get_config(VCHIQ_INSTANCE_T instance, + int config_size, VCHIQ_CONFIG_T *pconfig) + { +diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h +index 6952819..bddfc6a 100644 +--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h ++++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h +@@ -294,6 +294,7 @@ typedef struct vchiq_service_struct { + atomic_t poll_flags; + short version; + short version_min; ++ short peer_version; + + VCHIQ_STATE_T *state; + VCHIQ_INSTANCE_T instance; +@@ -484,6 +485,10 @@ struct vchiq_state_struct { + /* Signalled when a free data slot becomes available. */ + struct semaphore data_quota_event; + ++ /* Incremented when there are bulk transfers which cannot be processed ++ * whilst paused and must be processed on resume */ ++ int deferred_bulks; ++ + struct state_stats_struct { + int slot_stalls; + int data_stalls; +diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h +index 3ef118f..c2c2d53 100644 +--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h ++++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h +@@ -179,4 +179,7 @@ extern VCHIQ_STATUS_T vchiq_remote_release(VCHIQ_INSTANCE_T instance); + extern VCHIQ_STATUS_T vchiq_dump_phys_mem(VCHIQ_SERVICE_HANDLE_T service, + void *ptr, size_t num_bytes); + ++extern VCHIQ_STATUS_T vchiq_get_peer_version(VCHIQ_SERVICE_HANDLE_T handle, ++ short *peer_version); ++ + #endif /* VCHIQ_IF_H */ +diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c +index e682013..f752f8d 100644 +--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c ++++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c +@@ -712,6 +712,19 @@ int32_t vchi_service_destroy(const VCHI_SERVICE_HANDLE_T handle) + } + EXPORT_SYMBOL(vchi_service_destroy); + ++int32_t vchi_get_peer_version( const VCHI_SERVICE_HANDLE_T handle, short *peer_version ) ++{ ++ int32_t ret = -1; ++ SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; ++ if(service) ++ { ++ VCHIQ_STATUS_T status = vchiq_get_peer_version(service->handle, peer_version); ++ ret = vchiq_status_to_vchi( status ); ++ } ++ return ret; ++} ++EXPORT_SYMBOL(vchi_get_peer_version); ++ + /* ---------------------------------------------------------------------- + * read a uint32_t from buffer. + * network format is defined to be little endian diff --git a/patches/linux-3.6.11/0213-Use-control-messages-for-audio-data-to-fix-scratch-h.patch b/patches/linux-3.6.11/0213-Use-control-messages-for-audio-data-to-fix-scratch-h.patch new file mode 100644 index 0000000..8c1c00c --- /dev/null +++ b/patches/linux-3.6.11/0213-Use-control-messages-for-audio-data-to-fix-scratch-h.patch @@ -0,0 +1,487 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Thu, 7 Feb 2013 15:50:17 +0000 +Subject: [PATCH] Use control messages for audio data to fix scratch hang. Use + vchiq versioning to try to handle mismatches kernel.img/start.elf + +--- + sound/arm/bcm2835-ctl.c | 12 ++-- + sound/arm/bcm2835-pcm.c | 7 +- + sound/arm/bcm2835-vchiq.c | 134 +++++++++++++++++++++---------------- + sound/arm/vc_vchi_audioserv_defs.h | 6 +- + 4 files changed, 90 insertions(+), 69 deletions(-) + +diff --git a/sound/arm/bcm2835-ctl.c b/sound/arm/bcm2835-ctl.c +index 0c1b80a..5e77752 100755 +--- a/sound/arm/bcm2835-ctl.c ++++ b/sound/arm/bcm2835-ctl.c +@@ -41,7 +41,7 @@ + static int snd_bcm2835_ctl_info(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) + { +- audio_info(" ... IN "); ++ audio_info(" ... IN\n"); + if (kcontrol->private_value == PCM_PLAYBACK_VOLUME) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; + uinfo->count = 1; +@@ -58,7 +58,7 @@ static int snd_bcm2835_ctl_info(struct snd_kcontrol *kcontrol, + uinfo->value.integer.min = 0; + uinfo->value.integer.max = AUDIO_DEST_MAX-1; + } +- audio_info(" ... OUT "); ++ audio_info(" ... OUT\n"); + return 0; + } + +@@ -75,13 +75,13 @@ static int toggle_mute(struct bcm2835_chip *chip, int nmute) + if(chip->mute == CTRL_VOL_MUTE) + { + chip->volume = chip->old_volume; /* copy the old volume back */ +- audio_info("Unmuting, old_volume = %d, volume = %d ...", chip->old_volume, chip->volume); ++ audio_info("Unmuting, old_volume = %d, volume = %d ...\n", chip->old_volume, chip->volume); + } + else /* otherwise we mute */ + { + chip->old_volume = chip->volume; + chip->volume = 26214; /* set volume to minimum level AKA mute */ +- audio_info("Muting, old_volume = %d, volume = %d ...", chip->old_volume, chip->volume); ++ audio_info("Muting, old_volume = %d, volume = %d ...\n", chip->old_volume, chip->volume); + } + + chip->mute = nmute; +@@ -112,7 +112,7 @@ static int snd_bcm2835_ctl_put(struct snd_kcontrol *kcontrol, + int changed = 0; + + if (kcontrol->private_value == PCM_PLAYBACK_VOLUME) { +- audio_info("Volume change attempted.. volume = %d new_volume = %d", chip->volume, (int)ucontrol->value.integer.value[0]); ++ audio_info("Volume change attempted.. volume = %d new_volume = %d\n", chip->volume, (int)ucontrol->value.integer.value[0]); + if (chip->mute == CTRL_VOL_MUTE) { + /* changed = toggle_mute(chip, CTRL_VOL_UNMUTE); */ + return 1; /* should return 0 to signify no change but the mixer takes this as the opposite sign (no idea why) */ +@@ -126,7 +126,7 @@ static int snd_bcm2835_ctl_put(struct snd_kcontrol *kcontrol, + + } else if (kcontrol->private_value == PCM_PLAYBACK_MUTE) { + /* Now implemented */ +- audio_info(" Mute attempted"); ++ audio_info(" Mute attempted\n"); + changed = toggle_mute(chip, ucontrol->value.integer.value[0]); + + } else if (kcontrol->private_value == PCM_PLAYBACK_DEVICE) { +diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c +index 2f63ac6..fd8890c 100755 +--- a/sound/arm/bcm2835-pcm.c ++++ b/sound/arm/bcm2835-pcm.c +@@ -281,14 +281,15 @@ static int snd_bcm2835_pcm_trigger(struct snd_pcm_substream *substream, int cmd) + if (err == 0) { + alsa_stream->running = 1; + alsa_stream->draining = 1; ++ } else { ++ audio_error(" Failed to START alsa device (%d)\n", err); + } + } + break; + case SNDRV_PCM_TRIGGER_STOP: + audio_debug + ("bcm2835_AUDIO_TRIGGER_STOP running=%d draining=%d\n", +- runtime->status->state == SNDRV_PCM_STATE_DRAINING, +- alsa_stream->running); ++ alsa_stream->running, runtime->status->state == SNDRV_PCM_STATE_DRAINING); + if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) { + audio_info("DRAINING\n"); + alsa_stream->draining = 1; +@@ -299,7 +300,7 @@ static int snd_bcm2835_pcm_trigger(struct snd_pcm_substream *substream, int cmd) + if (alsa_stream->running) { + err = bcm2835_audio_stop(alsa_stream); + if (err != 0) +- audio_error(" Failed to STOP alsa device\n"); ++ audio_error(" Failed to STOP alsa device (%d)\n", err); + alsa_stream->running = 0; + } + break; +diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c +index 14ca707..33b7481 100755 +--- a/sound/arm/bcm2835-vchiq.c ++++ b/sound/arm/bcm2835-vchiq.c +@@ -26,6 +26,7 @@ + #include <linux/slab.h> + #include <linux/delay.h> + #include <linux/atomic.h> ++#include <linux/module.h> + + #include "bcm2835.h" + +@@ -43,7 +44,7 @@ + #define LOG_INFO( fmt, arg... ) pr_info( "%s:%d " fmt, __func__, __LINE__, ##arg) + #define LOG_DBG( fmt, arg... ) pr_info( "%s:%d " fmt, __func__, __LINE__, ##arg) + #else +- #define LOG_ERR( fmt, arg... ) ++ #define LOG_ERR( fmt, arg... ) pr_err( "%s:%d " fmt, __func__, __LINE__, ##arg) + #define LOG_WARN( fmt, arg... ) + #define LOG_INFO( fmt, arg... ) + #define LOG_DBG( fmt, arg... ) +@@ -55,9 +56,12 @@ typedef struct opaque_AUDIO_INSTANCE_T { + struct semaphore msg_avail_event; + struct mutex vchi_mutex; + bcm2835_alsa_stream_t *alsa_stream; +- int32_t result, got_result; ++ int32_t result; ++ short peer_version; + } AUDIO_INSTANCE_T; + ++bool force_bulk = 1; ++ + /* ---- Private Variables ---------------------------------------------------- */ + + /* ---- Private Function Prototypes ------------------------------------------ */ +@@ -173,9 +177,7 @@ static void audio_vchi_callback(void *param, + LOG_DBG + (" .. instance=%p, m.type=VC_AUDIO_MSG_TYPE_RESULT, success=%d\n", + instance, m.u.result.success); +- BUG_ON(instance->got_result); + instance->result = m.u.result.success; +- instance->got_result = 1; + up(&instance->msg_avail_event); + } else if (m.type == VC_AUDIO_MSG_TYPE_COMPLETE) { + irq_handler_t callback = (irq_handler_t) m.u.complete.callback; +@@ -189,10 +191,10 @@ static void audio_vchi_callback(void *param, + LOG_DBG(" .. unexpected alsa_stream=%p, callback=%p\n", + alsa_stream, callback); + } +- up(&instance->msg_avail_event); + } else { + LOG_DBG(" .. unexpected m.type=%d\n", m.type); + } ++ LOG_DBG(" .. OUT\n"); + } + + static AUDIO_INSTANCE_T *vc_vchi_audio_init(VCHI_INSTANCE_T vchi_instance, +@@ -207,7 +209,7 @@ static AUDIO_INSTANCE_T *vc_vchi_audio_init(VCHI_INSTANCE_T vchi_instance, + LOG_DBG("%s: start", __func__); + + if (num_connections > VCHI_MAX_NUM_CONNECTIONS) { +- LOG_ERR("%s: unsupported number of connections %u (max=%u)", ++ LOG_ERR("%s: unsupported number of connections %u (max=%u)\n", + __func__, num_connections, VCHI_MAX_NUM_CONNECTIONS); + + return NULL; +@@ -216,17 +218,14 @@ static AUDIO_INSTANCE_T *vc_vchi_audio_init(VCHI_INSTANCE_T vchi_instance, + instance = kmalloc(sizeof(*instance), GFP_KERNEL); + + memset(instance, 0, sizeof(*instance)); +- + instance->num_connections = num_connections; +- /* Create the message available event */ +- sema_init(&instance->msg_avail_event,1); + + /* Create a lock for exclusive, serialized VCHI connection access */ + mutex_init(&instance->vchi_mutex); + /* Open the VCHI service connections */ + for (i = 0; i < num_connections; i++) { + SERVICE_CREATION_T params = { +- VCHI_VERSION(VC_AUDIOSERV_VER), // version ++ VCHI_VERSION_EX(VC_AUDIOSERV_VER, VC_AUDIOSERV_MIN_VER), + VC_AUDIO_SERVER_NAME, // 4cc service code + vchi_connections[i], // passed in fn pointers + 0, // rx fifo size (unused) +@@ -242,7 +241,7 @@ static AUDIO_INSTANCE_T *vc_vchi_audio_init(VCHI_INSTANCE_T vchi_instance, + &instance->vchi_handle[i]); + if (status) { + LOG_ERR +- ("%s: failed to open VCHI service connection (status=%d)", ++ ("%s: failed to open VCHI service connection (status=%d)\n", + __func__, status); + + goto err_close_services; +@@ -270,7 +269,7 @@ static int32_t vc_vchi_audio_deinit(AUDIO_INSTANCE_T * instance) + LOG_DBG(" .. IN\n"); + + if (instance == NULL) { +- LOG_ERR("%s: invalid handle %p", __func__, instance); ++ LOG_ERR("%s: invalid handle %p\n", __func__, instance); + + return -1; + } +@@ -291,7 +290,7 @@ static int32_t vc_vchi_audio_deinit(AUDIO_INSTANCE_T * instance) + success = vchi_service_close(instance->vchi_handle[i]); + if (success != 0) { + LOG_ERR +- ("%s: failed to close VCHI service connection (status=%d)", ++ ("%s: failed to close VCHI service connection (status=%d)\n", + __func__, success); + } + } +@@ -316,7 +315,7 @@ static int bcm2835_audio_open_connection(bcm2835_alsa_stream_t * alsa_stream) + LOG_INFO("%s: start", __func__); + //BUG_ON(instance); + if (instance) { +- LOG_ERR("%s: VCHI instance already open (%p)", ++ LOG_ERR("%s: VCHI instance already open (%p)\n", + __func__, instance); + instance->alsa_stream = alsa_stream; + alsa_stream->instance = instance; +@@ -327,7 +326,7 @@ static int bcm2835_audio_open_connection(bcm2835_alsa_stream_t * alsa_stream) + /* Initialize and create a VCHI connection */ + ret = vchi_initialise(&vchi_instance); + if (ret != 0) { +- LOG_ERR("%s: failed to initialise VCHI instance (ret=%d)", ++ LOG_ERR("%s: failed to initialise VCHI instance (ret=%d)\n", + __func__, ret); + + ret = -EIO; +@@ -335,7 +334,7 @@ static int bcm2835_audio_open_connection(bcm2835_alsa_stream_t * alsa_stream) + } + ret = vchi_connect(NULL, 0, vchi_instance); + if (ret != 0) { +- LOG_ERR("%s: failed to connect VCHI instance (ret=%d)", ++ LOG_ERR("%s: failed to connect VCHI instance (ret=%d)\n", + __func__, ret); + + ret = -EIO; +@@ -346,7 +345,7 @@ static int bcm2835_audio_open_connection(bcm2835_alsa_stream_t * alsa_stream) + instance = vc_vchi_audio_init(vchi_instance, &vchi_connection, 1); + + if (instance == NULL /*|| audio_handle != instance */ ) { +- LOG_ERR("%s: failed to initialize audio service", __func__); ++ LOG_ERR("%s: failed to initialize audio service\n", __func__); + + ret = -EPERM; + goto err_free_mem; +@@ -394,7 +393,7 @@ int bcm2835_audio_open(bcm2835_alsa_stream_t * alsa_stream) + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { +- LOG_ERR("%s: failed on vchi_msg_queue (status=%d)", ++ LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + + ret = -1; +@@ -430,20 +429,22 @@ static int bcm2835_audio_set_ctls_chan(bcm2835_alsa_stream_t * alsa_stream, + } + vchi_service_use(instance->vchi_handle[0]); + +- instance->got_result = 0; + instance->result = -1; + + m.type = VC_AUDIO_MSG_TYPE_CONTROL; + m.u.control.dest = chip->dest; + m.u.control.volume = chip->volume; + ++ /* Create the message available event */ ++ sema_init(&instance->msg_avail_event, 0); ++ + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { +- LOG_ERR("%s: failed on vchi_msg_queue (status=%d)", ++ LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + + ret = -1; +@@ -451,18 +452,16 @@ static int bcm2835_audio_set_ctls_chan(bcm2835_alsa_stream_t * alsa_stream, + } + + /* We are expecting a reply from the videocore */ +- while (!instance->got_result) { +- if (down_interruptible(&instance->msg_avail_event)) { +- LOG_ERR("%s: failed on waiting for event (status=%d)", +- __func__, success); ++ if (down_interruptible(&instance->msg_avail_event)) { ++ LOG_ERR("%s: failed on waiting for event (status=%d)\n", ++ __func__, success); + +- ret = -1; +- goto unlock; +- } ++ ret = -1; ++ goto unlock; + } + + if (instance->result != 0) { +- LOG_ERR("%s: result=%d", __func__, instance->result); ++ LOG_ERR("%s: result=%d\n", __func__, instance->result); + + ret = -1; + goto unlock; +@@ -489,16 +488,16 @@ int bcm2835_audio_set_ctls(bcm2835_chip_t * chip) + if (chip->avail_substreams & (1 << i)) { + if (!chip->alsa_stream[i]) + { +- LOG_DBG(" No ALSA stream available?! "); ++ LOG_DBG(" No ALSA stream available?! %i:%p (%x)\n", i, chip->alsa_stream[i], chip->avail_substreams); + ret = 0; + } + else if (bcm2835_audio_set_ctls_chan /* returns 0 on success */ + (chip->alsa_stream[i], chip) != 0) + { +- LOG_DBG("Couldn't set the controls for stream %d", i); ++ LOG_DBG("Couldn't set the controls for stream %d\n", i); + ret = -1; + } +- LOG_DBG(" Controls set for stream %d", i); ++ else LOG_DBG(" Controls set for stream %d\n", i); + } + } + LOG_DBG(" .. OUT ret=%d\n", ret); +@@ -533,7 +532,6 @@ int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream, + } + vchi_service_use(instance->vchi_handle[0]); + +- instance->got_result = 0; + instance->result = -1; + + m.type = VC_AUDIO_MSG_TYPE_CONFIG; +@@ -541,13 +539,16 @@ int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream, + m.u.config.samplerate = samplerate; + m.u.config.bps = bps; + ++ /* Create the message available event */ ++ sema_init(&instance->msg_avail_event, 0); ++ + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { +- LOG_ERR("%s: failed on vchi_msg_queue (status=%d)", ++ LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + + ret = -1; +@@ -555,14 +556,12 @@ int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream, + } + + /* We are expecting a reply from the videocore */ +- while (!instance->got_result) { +- if (down_interruptible(&instance->msg_avail_event)) { +- LOG_ERR("%s: failed on waiting for event (status=%d)", +- __func__, success); ++ if (down_interruptible(&instance->msg_avail_event)) { ++ LOG_ERR("%s: failed on waiting for event (status=%d)\n", ++ __func__, success); + +- ret = -1; +- goto unlock; +- } ++ ret = -1; ++ goto unlock; + } + + if (instance->result != 0) { +@@ -688,7 +687,10 @@ int bcm2835_audio_close(bcm2835_alsa_stream_t * alsa_stream) + vchi_service_use(instance->vchi_handle[0]); + + m.type = VC_AUDIO_MSG_TYPE_CLOSE; +- instance->got_result = 0; ++ ++ /* Create the message available event */ ++ sema_init(&instance->msg_avail_event, 0); ++ + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, +@@ -700,14 +702,12 @@ int bcm2835_audio_close(bcm2835_alsa_stream_t * alsa_stream) + ret = -1; + goto unlock; + } +- while (!instance->got_result) { +- if (down_interruptible(&instance->msg_avail_event)) { +- LOG_ERR("%s: failed on waiting for event (status=%d)", +- __func__, success); ++ if (down_interruptible(&instance->msg_avail_event)) { ++ LOG_ERR("%s: failed on waiting for event (status=%d)", ++ __func__, success); + +- ret = -1; +- goto unlock; +- } ++ ret = -1; ++ goto unlock; + } + if (instance->result != 0) { + LOG_ERR("%s: failed result (status=%d)", +@@ -751,8 +751,13 @@ int bcm2835_audio_write(bcm2835_alsa_stream_t * alsa_stream, uint32_t count, + } + vchi_service_use(instance->vchi_handle[0]); + ++ if ( instance->peer_version==0 && vchi_get_peer_version(instance->vchi_handle[0], &instance->peer_version) == 0 ) { ++ LOG_DBG("%s: client version %d connected\n", __func__, instance->peer_version); ++ } + m.type = VC_AUDIO_MSG_TYPE_WRITE; + m.u.write.count = count; ++ // old version uses bulk, new version uses control ++ m.u.write.max_packet = instance->peer_version < 2 || force_bulk ? 0:4000; + m.u.write.callback = alsa_stream->fifo_irq_handler; + m.u.write.cookie = alsa_stream; + m.u.write.silence = src == NULL; +@@ -769,17 +774,27 @@ int bcm2835_audio_write(bcm2835_alsa_stream_t * alsa_stream, uint32_t count, + ret = -1; + goto unlock; + } +- LOG_DBG(" ... sent header\n"); + if (!m.u.write.silence) { +- /* Send the message to the videocore */ +- success = vchi_bulk_queue_transmit(instance->vchi_handle[0], +- src, count, +- 0 * +- VCHI_FLAGS_BLOCK_UNTIL_QUEUED +- + +- 1 * +- VCHI_FLAGS_BLOCK_UNTIL_DATA_READ, +- NULL); ++ if (m.u.write.max_packet == 0) { ++ /* Send the message to the videocore */ ++ success = vchi_bulk_queue_transmit(instance->vchi_handle[0], ++ src, count, ++ 0 * ++ VCHI_FLAGS_BLOCK_UNTIL_QUEUED ++ + ++ 1 * ++ VCHI_FLAGS_BLOCK_UNTIL_DATA_READ, ++ NULL); ++ } else { ++ while (count > 0) { ++ int bytes = min((int)m.u.write.max_packet, (int)count); ++ success = vchi_msg_queue(instance->vchi_handle[0], ++ src, bytes, ++ VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); ++ src = (char *)src + bytes; ++ count -= bytes; ++ } ++ } + if (success != 0) { + LOG_ERR + ("%s: failed on vchi_bulk_queue_transmit (status=%d)", +@@ -824,3 +839,6 @@ uint32_t bcm2835_audio_retrieve_buffers(bcm2835_alsa_stream_t * alsa_stream) + atomic_sub(count, &alsa_stream->retrieved); + return count; + } ++ ++module_param(force_bulk, bool, 0444); ++MODULE_PARM_DESC(force_bulk, "Force use of vchiq bulk for audio"); +diff --git a/sound/arm/vc_vchi_audioserv_defs.h b/sound/arm/vc_vchi_audioserv_defs.h +index 2020ce4..af3e6eb 100644 +--- a/sound/arm/vc_vchi_audioserv_defs.h ++++ b/sound/arm/vc_vchi_audioserv_defs.h +@@ -15,7 +15,8 @@ + #ifndef _VC_AUDIO_DEFS_H_ + #define _VC_AUDIO_DEFS_H_ + +-#define VC_AUDIOSERV_VER 1 ++#define VC_AUDIOSERV_MIN_VER 1 ++#define VC_AUDIOSERV_VER 2 + + // FourCC code used for VCHI connection + #define VC_AUDIO_SERVER_NAME MAKE_FOURCC("AUDS") +@@ -79,7 +80,8 @@ typedef struct { + uint32_t count; // in bytes + void *callback; + void *cookie; +- uint32_t silence; ++ uint16_t silence; ++ uint16_t max_packet; + } VC_AUDIO_WRITE_T; + + // Generic result for a request (VC->HOST) diff --git a/patches/linux-3.6.11/0214-Default-force_bulk-to-false.patch b/patches/linux-3.6.11/0214-Default-force_bulk-to-false.patch new file mode 100644 index 0000000..6242e45 --- /dev/null +++ b/patches/linux-3.6.11/0214-Default-force_bulk-to-false.patch @@ -0,0 +1,21 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Thu, 7 Feb 2013 16:17:03 +0000 +Subject: [PATCH] Default force_bulk to false + +--- + sound/arm/bcm2835-vchiq.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c +index 33b7481..9ecb2d6 100755 +--- a/sound/arm/bcm2835-vchiq.c ++++ b/sound/arm/bcm2835-vchiq.c +@@ -60,7 +60,7 @@ typedef struct opaque_AUDIO_INSTANCE_T { + short peer_version; + } AUDIO_INSTANCE_T; + +-bool force_bulk = 1; ++bool force_bulk = false; + + /* ---- Private Variables ---------------------------------------------------- */ + diff --git a/patches/linux-3.6.11/0215-Add-missing-newlines-to-log-messages.patch b/patches/linux-3.6.11/0215-Add-missing-newlines-to-log-messages.patch new file mode 100644 index 0000000..a0bcce1 --- /dev/null +++ b/patches/linux-3.6.11/0215-Add-missing-newlines-to-log-messages.patch @@ -0,0 +1,97 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Thu, 7 Feb 2013 17:04:13 +0000 +Subject: [PATCH] Add missing newlines to log messages + +--- + drivers/cpufreq/bcm2835-cpufreq.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/drivers/cpufreq/bcm2835-cpufreq.c b/drivers/cpufreq/bcm2835-cpufreq.c +index 6ff1edb..5a19212 100755 +--- a/drivers/cpufreq/bcm2835-cpufreq.c ++++ b/drivers/cpufreq/bcm2835-cpufreq.c +@@ -91,7 +91,7 @@ static uint32_t bcm2835_cpufreq_set_clock(int cur_rate, int arm_rate) + if (s == 0 && (msg.request_code & 0x80000000))
+ actual_rate = msg.tag.val/1000;
+
+- print_debug("Setting new frequency = %d -> %d (actual %d)", cur_rate, arm_rate, actual_rate);
++ print_debug("Setting new frequency = %d -> %d (actual %d)\n", cur_rate, arm_rate, actual_rate);
+ return actual_rate;
+ }
+
+@@ -117,7 +117,7 @@ static uint32_t bcm2835_cpufreq_get_clock(int tag) + if (s == 0 && (msg.request_code & 0x80000000))
+ arm_rate = msg.tag.val/1000;
+
+- print_debug("%s frequency = %d",
++ print_debug("%s frequency = %d\n",
+ tag == VCMSG_GET_CLOCK_RATE ? "Current":
+ tag == VCMSG_GET_MIN_CLOCK ? "Min":
+ tag == VCMSG_GET_MAX_CLOCK ? "Max":
+@@ -133,7 +133,7 @@ static uint32_t bcm2835_cpufreq_get_clock(int tag) + */
+ static int __init bcm2835_cpufreq_module_init(void)
+ {
+- print_debug("IN");
++ print_debug("IN\n");
+ return cpufreq_register_driver(&bcm2835_cpufreq_driver);
+ }
+
+@@ -144,7 +144,7 @@ static int __init bcm2835_cpufreq_module_init(void) + */
+ static void __exit bcm2835_cpufreq_module_exit(void)
+ {
+- print_debug("IN");
++ print_debug("IN\n");
+ cpufreq_unregister_driver(&bcm2835_cpufreq_driver);
+ return;
+ }
+@@ -164,7 +164,7 @@ static int bcm2835_cpufreq_driver_init(struct cpufreq_policy *policy) + policy->max = policy->cpuinfo.max_freq = bcm2835_cpufreq_get_clock(VCMSG_GET_MAX_CLOCK);
+ policy->cur = bcm2835_cpufreq_get_clock(VCMSG_GET_CLOCK_RATE);
+
+- print_info("min=%d max=%d cur=%d", policy->min, policy->max, policy->cur);
++ print_info("min=%d max=%d cur=%d\n", policy->min, policy->max, policy->cur);
+ return 0;
+ }
+
+@@ -178,7 +178,7 @@ static int bcm2835_cpufreq_driver_target(struct cpufreq_policy *policy, unsigned + {
+ unsigned int target = target_freq;
+ unsigned int cur = policy->cur;
+- print_debug("%s: min=%d max=%d cur=%d target=%d",policy->governor->name,policy->min,policy->max,policy->cur,target_freq);
++ print_debug("%s: min=%d max=%d cur=%d target=%d\n",policy->governor->name,policy->min,policy->max,policy->cur,target_freq);
+
+ /* if we are above min and using ondemand, then just use max */
+ if (strcmp("ondemand", policy->governor->name)==0 && target > policy->min)
+@@ -192,18 +192,18 @@ static int bcm2835_cpufreq_driver_target(struct cpufreq_policy *policy, unsigned +
+ if (!policy->cur)
+ {
+- print_err("Error occurred setting a new frequency (%d)!", target);
++ print_err("Error occurred setting a new frequency (%d)!\n", target);
+ policy->cur = bcm2835_cpufreq_get_clock(VCMSG_GET_CLOCK_RATE);
+ return -EINVAL;
+ }
+- print_debug("Freq %d->%d (min=%d max=%d target=%d request=%d)", cur, policy->cur, policy->min, policy->max, target_freq, target);
++ print_debug("Freq %d->%d (min=%d max=%d target=%d request=%d)\n", cur, policy->cur, policy->min, policy->max, target_freq, target);
+ return 0;
+ }
+
+ static unsigned int bcm2835_cpufreq_driver_get(unsigned int cpu)
+ {
+ unsigned int actual_rate = bcm2835_cpufreq_get_clock(VCMSG_GET_CLOCK_RATE);
+- print_debug("%d", actual_rate);
++ print_debug("cpu=%d\n", actual_rate);
+ return actual_rate;
+ }
+
+@@ -215,7 +215,7 @@ static unsigned int bcm2835_cpufreq_driver_get(unsigned int cpu) +
+ static int bcm2835_cpufreq_driver_verify(struct cpufreq_policy *policy)
+ {
+- print_info("switching to governor %s", policy->governor->name);
++ print_info("switching to governor %s\n", policy->governor->name);
+ return 0;
+ }
+
diff --git a/patches/linux-3.6.11/0216-Changed-wording-on-logging.-Previously-we-received-e.patch b/patches/linux-3.6.11/0216-Changed-wording-on-logging.-Previously-we-received-e.patch new file mode 100644 index 0000000..a626255 --- /dev/null +++ b/patches/linux-3.6.11/0216-Changed-wording-on-logging.-Previously-we-received-e.patch @@ -0,0 +1,32 @@ +From: Technion <Technion> +Date: Mon, 11 Feb 2013 22:08:53 +1100 +Subject: [PATCH] Changed wording on logging. Previously, we received errors + like this: mmc0: could read SD Status register (SSR) at the 3th attempt A + more sensible response is now returned. A typo also fixed in comments. + +--- + drivers/mmc/core/sd.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c +index 3302478..5366b31 100644 +--- a/drivers/mmc/core/sd.c ++++ b/drivers/mmc/core/sd.c +@@ -238,7 +238,7 @@ static int mmc_read_scr(struct mmc_card *card) + + err = mmc_app_send_scr(card, card->raw_scr); + if( !err ) +- break; // sucess!!! ++ break; // success!!! + + touch_nmi_watchdog(); // we are still alive! + +@@ -320,7 +320,7 @@ static int mmc_read_ssr(struct mmc_card *card) + + if( tries > 1 ) + { +- pr_info("%s: could read SD Status register (SSR) at the %dth attempt\n", mmc_hostname(card->host), tries ); ++ pr_info("%s: read SD Status register (SSR) after %d attempts\n", mmc_hostname(card->host), tries ); + } + + for (i = 0; i < 16; i++) diff --git a/patches/linux-3.6.11/0217-Fix-for-low-bogomips-value-reported.patch b/patches/linux-3.6.11/0217-Fix-for-low-bogomips-value-reported.patch new file mode 100644 index 0000000..994e10b --- /dev/null +++ b/patches/linux-3.6.11/0217-Fix-for-low-bogomips-value-reported.patch @@ -0,0 +1,68 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Tue, 12 Feb 2013 01:04:21 +0000 +Subject: [PATCH] Fix for low bogomips value reported. The delay loop was badly + aligned and generated extra stalls + +--- + arch/arm/mach-bcm2708/bcm2708.c | 9 +++------ + arch/arm/mach-bcm2708/delay.S | 1 + + 2 files changed, 4 insertions(+), 6 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 7fe7283..7294aa0 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -160,13 +160,12 @@ static inline uint32_t timer_read(void) + return readl(__io_address(ST_BASE + 0x04)); + } + ++#ifdef ARCH_HAS_READ_CURRENT_TIMER + int read_current_timer(unsigned long *timer_val) + { + *timer_val = timer_read(); + return 0; + } +- +-#ifdef CONFIG_ARM_ARCH_TIMER + EXPORT_SYMBOL(read_current_timer); + #endif + +@@ -759,8 +758,6 @@ void __init bcm2708_init(void) + static void timer_set_mode(enum clock_event_mode mode, + struct clock_event_device *clk) + { +- unsigned long stc; +- + switch (mode) { + case CLOCK_EVT_MODE_ONESHOT: /* Leave the timer disabled, .set_next_event will enable it */ + case CLOCK_EVT_MODE_SHUTDOWN: +@@ -887,7 +884,7 @@ static inline void bcm2708_init_led(void) + + /* The assembly versions in delay.S don't account for core freq changing in cpufreq driver */ + /* Use 1MHz system timer for busy waiting */ +-void bcm2708_udelay(unsigned long usecs) ++static void bcm2708_udelay(unsigned long usecs) + { + unsigned long start = timer_read(); + unsigned long now; +@@ -897,7 +894,7 @@ void bcm2708_udelay(unsigned long usecs) + } + + +-void bcm2708_const_udelay(unsigned long scaled_usecs) ++static void bcm2708_const_udelay(unsigned long scaled_usecs) + { + /* want /107374, this is about 3% bigger. We know usecs is less than 2000, so shouldn't overflow */ + const unsigned long usecs = scaled_usecs * 10 >> 20; +diff --git a/arch/arm/mach-bcm2708/delay.S b/arch/arm/mach-bcm2708/delay.S +index 91754d6..06f4780 100644 +--- a/arch/arm/mach-bcm2708/delay.S ++++ b/arch/arm/mach-bcm2708/delay.S +@@ -12,6 +12,7 @@ + #include <asm/param.h> + + .text ++.align 3 @ 8 byte alignment seems to be needed to avoid fetching stalls + @ Delay routine + ENTRY(bcm2708_delay) + subs r0, r0, #1 diff --git a/patches/linux-3.6.11/0218-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch b/patches/linux-3.6.11/0218-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch new file mode 100644 index 0000000..420d480 --- /dev/null +++ b/patches/linux-3.6.11/0218-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch @@ -0,0 +1,85 @@ +From: P33M <P33M@github.com> +Date: Fri, 15 Feb 2013 22:36:47 +0000 +Subject: [PATCH] dwc_otg: Fix unsafe access of QTD during URB enqueue + +In dwc_otg_hcd_urb_enqueue during qtd creation, it was possible that the +transaction could complete almost immediately after the qtd was assigned +to a host channel during URB enqueue, which meant the qtd pointer was no +longer valid having been completed and removed. Usually, this resulted in +an OOPS during URB submission. By predetermining whether transactions +need to be queued or not, this unsafe pointer access is avoided. + +This bug was only evident on the Pi model A where a device was attached +that had no periodic endpoints (e.g. USB pendrive or some wlan devices). +--- + drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 23 ++++++++++++----------- + drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c | 2 +- + 2 files changed, 13 insertions(+), 12 deletions(-) + +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +index d5c94f4..e653d84 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +@@ -462,6 +462,8 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd, + { + dwc_irqflags_t flags; + int retval = 0; ++ uint8_t needs_scheduling = 0; ++ dwc_otg_transaction_type_e tr_type; + dwc_otg_qtd_t *qtd; + gintmsk_data_t intr_mask = {.d32 = 0 }; + +@@ -493,22 +495,22 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd, + return -DWC_E_NO_MEMORY; + } + #endif +- retval = +- dwc_otg_hcd_qtd_add(qtd, hcd, (dwc_otg_qh_t **) ep_handle, atomic_alloc); ++ intr_mask.d32 = DWC_READ_REG32(&hcd->core_if->core_global_regs->gintmsk); ++ if(!intr_mask.b.sofintr) needs_scheduling = 1; ++ if((((dwc_otg_qh_t *)ep_handle)->ep_type == UE_BULK) && !(qtd->urb->flags & URB_GIVEBACK_ASAP)) ++ /* Do not schedule SG transactions until qtd has URB_GIVEBACK_ASAP set */ ++ needs_scheduling = 0; ++ ++ retval = dwc_otg_hcd_qtd_add(qtd, hcd, (dwc_otg_qh_t **) ep_handle, atomic_alloc); + // creates a new queue in ep_handle if it doesn't exist already + if (retval < 0) { + DWC_ERROR("DWC OTG HCD URB Enqueue failed adding QTD. " + "Error status %d\n", retval); + dwc_otg_hcd_qtd_free(qtd); ++ return retval; + } +- intr_mask.d32 = DWC_READ_REG32(&hcd->core_if->core_global_regs->gintmsk); +- if (!intr_mask.b.sofintr && retval == 0) { +- dwc_otg_transaction_type_e tr_type; +- if ((qtd->qh->ep_type == UE_BULK) +- && !(qtd->urb->flags & URB_GIVEBACK_ASAP)) { +- /* Do not schedule SG transactions until qtd has URB_GIVEBACK_ASAP set */ +- return 0; +- } ++ ++ if(needs_scheduling) { + DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); + tr_type = dwc_otg_hcd_select_transactions(hcd); + if (tr_type != DWC_OTG_TRANSACTION_NONE) { +@@ -516,7 +518,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd, + } + DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); + } +- + return retval; + } + +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c +index b337e1b..b3e6e52 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c +@@ -937,7 +937,7 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd, + if (*qh == NULL) { + *qh = dwc_otg_hcd_qh_create(hcd, urb, atomic_alloc); + if (*qh == NULL) { +- retval = -1; ++ retval = -DWC_E_NO_MEMORY; + goto done; + } + } diff --git a/patches/linux-3.6.11/0219-dwc_otg-Fix-incorrect-URB-allocation-error-handling.patch b/patches/linux-3.6.11/0219-dwc_otg-Fix-incorrect-URB-allocation-error-handling.patch new file mode 100644 index 0000000..4ab3895 --- /dev/null +++ b/patches/linux-3.6.11/0219-dwc_otg-Fix-incorrect-URB-allocation-error-handling.patch @@ -0,0 +1,39 @@ +From: P33M <P33M@github.com> +Date: Fri, 15 Feb 2013 22:38:40 +0000 +Subject: [PATCH] dwc_otg: Fix incorrect URB allocation error handling + +If the memory allocation for a dwc_otg_urb failed, the kernel would OOPS +because for some reason a member of the *unallocated* struct was set to +zero. Error handling changed to fail correctly. +--- + drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 16 ++++++---------- + 1 file changed, 6 insertions(+), 10 deletions(-) + +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +index e653d84..fcec97f 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +@@ -3136,17 +3136,13 @@ dwc_otg_hcd_urb_t *dwc_otg_hcd_urb_alloc(dwc_otg_hcd_t * hcd, + else + dwc_otg_urb = DWC_ALLOC(size); + +- if (NULL != dwc_otg_urb) +- dwc_otg_urb->packet_count = iso_desc_count; ++ if (dwc_otg_urb) ++ dwc_otg_urb->packet_count = iso_desc_count; + else { +- dwc_otg_urb->packet_count = 0; +- if (size != 0) { +- DWC_ERROR("**** DWC OTG HCD URB alloc - " +- "%salloc of %db failed\n", +- atomic_alloc?"atomic ":"", size); +- } +- } +- ++ DWC_ERROR("**** DWC OTG HCD URB alloc - " ++ "%salloc of %db failed\n", ++ atomic_alloc?"atomic ":"", size); ++ } + return dwc_otg_urb; + } + diff --git a/patches/linux-3.6.11/0220-Added-inverted-transmitter-support.patch b/patches/linux-3.6.11/0220-Added-inverted-transmitter-support.patch new file mode 100644 index 0000000..d31ad79 --- /dev/null +++ b/patches/linux-3.6.11/0220-Added-inverted-transmitter-support.patch @@ -0,0 +1,79 @@ +From: pjennings <pjennings-git@pjennings.net> +Date: Wed, 20 Feb 2013 17:51:43 -0600 +Subject: [PATCH] Added inverted transmitter support + +--- + drivers/staging/media/lirc/lirc_rpi.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +diff --git a/drivers/staging/media/lirc/lirc_rpi.c b/drivers/staging/media/lirc/lirc_rpi.c +index 96acab0..5bb0dfe 100644 +--- a/drivers/staging/media/lirc/lirc_rpi.c ++++ b/drivers/staging/media/lirc/lirc_rpi.c +@@ -68,6 +68,8 @@ static int debug; + static int sense = -1; + /* use softcarrier by default */ + static int softcarrier = 1; ++/* 0 = do not invert output, 1 = invert output */ ++static int invert = 0; + + struct gpio_chip *gpiochip; + struct irq_chip *irqchip; +@@ -135,10 +137,10 @@ static long send_pulse_softcarrier(unsigned long length) + actual = 0; target = 0; flag = 0; + while (actual < length) { + if (flag) { +- gpiochip->set(gpiochip, gpio_out_pin, 0); ++ gpiochip->set(gpiochip, gpio_out_pin, invert); + target += space_width; + } else { +- gpiochip->set(gpiochip, gpio_out_pin, 1); ++ gpiochip->set(gpiochip, gpio_out_pin, !invert); + target += pulse_width; + } + d = (target - actual - +@@ -162,7 +164,7 @@ static long send_pulse(unsigned long length) + if (softcarrier) { + return send_pulse_softcarrier(length); + } else { +- gpiochip->set(gpiochip, gpio_out_pin, 1); ++ gpiochip->set(gpiochip, gpio_out_pin, !invert); + safe_udelay(length); + return 0; + } +@@ -170,7 +172,7 @@ static long send_pulse(unsigned long length) + + static void send_space(long length) + { +- gpiochip->set(gpiochip, gpio_out_pin, 0); ++ gpiochip->set(gpiochip, gpio_out_pin, invert); + if (length <= 0) + return; + safe_udelay(length); +@@ -318,7 +320,7 @@ static int init_port(void) + + gpiochip->direction_input(gpiochip, gpio_in_pin); + gpiochip->direction_output(gpiochip, gpio_out_pin, 1); +- gpiochip->set(gpiochip, gpio_out_pin, 0); ++ gpiochip->set(gpiochip, gpio_out_pin, invert); + + irq = gpiochip->to_irq(gpiochip, gpio_in_pin); + dprintk("to_irq %d\n", irq); +@@ -457,7 +459,7 @@ static ssize_t lirc_write(struct file *file, const char *buf, + else + delta = send_pulse(wbuf[i]); + } +- gpiochip->set(gpiochip, gpio_out_pin, 0); ++ gpiochip->set(gpiochip, gpio_out_pin, invert); + + spin_unlock_irqrestore(&lock, flags); + kfree(wbuf); +@@ -683,5 +685,8 @@ MODULE_PARM_DESC(sense, "Override autodetection of IR receiver circuit" + module_param(softcarrier, bool, S_IRUGO); + MODULE_PARM_DESC(softcarrier, "Software carrier (0 = off, 1 = on, default on)"); + ++module_param(invert, bool, S_IRUGO); ++MODULE_PARM_DESC(invert, "Invert output (0 = off, 1 = on, default off"); ++ + module_param(debug, bool, S_IRUGO | S_IWUSR); + MODULE_PARM_DESC(debug, "Enable debugging messages"); diff --git a/patches/linux-3.6.11/0221-fbcon-clear-the-logo-bitmap-from-the-margin-area.patch b/patches/linux-3.6.11/0221-fbcon-clear-the-logo-bitmap-from-the-margin-area.patch new file mode 100644 index 0000000..61b45d5 --- /dev/null +++ b/patches/linux-3.6.11/0221-fbcon-clear-the-logo-bitmap-from-the-margin-area.patch @@ -0,0 +1,38 @@ +From: Kamal Mostafa <kamal@whence.com> +Date: Thu, 21 Feb 2013 16:42:07 -0800 +Subject: [PATCH] fbcon: clear the logo bitmap from the margin area + +Explicitly clear_margins when clearing the logo, in case the font dimensions +are non-integral to the framebuffer dimensions. + +Signed-off-by: Kamal Mostafa <kamal@whence.com> +Cc: Florian Tobias Schandinat <FlorianSchandinat@gmx.de> +Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> +Signed-off-by: Andrew Morton <akpm@linux-foundation.org> +Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> +--- + drivers/video/console/fbcon.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c +index fdefa8f..f8a61e2 100644 +--- a/drivers/video/console/fbcon.c ++++ b/drivers/video/console/fbcon.c +@@ -1242,8 +1242,16 @@ static void fbcon_clear(struct vc_data *vc, int sy, int sx, int height, + if (!height || !width) + return; + +- if (sy < vc->vc_top && vc->vc_top == logo_lines) ++ if (sy < vc->vc_top && vc->vc_top == logo_lines) { + vc->vc_top = 0; ++ /* ++ * If the font dimensions are not an integral of the display ++ * dimensions then the ops->clear below won't end up clearing ++ * the margins. Call clear_margins here in case the logo ++ * bitmap stretched into the margin area. ++ */ ++ fbcon_clear_margins(vc, 0); ++ } + + /* Split blits that cross physical y_wrap boundary */ + diff --git a/patches/linux-3.6.11/0222-Add-config-request-CONFIG_IP_SCTP.patch b/patches/linux-3.6.11/0222-Add-config-request-CONFIG_IP_SCTP.patch new file mode 100644 index 0000000..2f51b0e --- /dev/null +++ b/patches/linux-3.6.11/0222-Add-config-request-CONFIG_IP_SCTP.patch @@ -0,0 +1,37 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Sun, 24 Feb 2013 15:51:31 +0000 +Subject: [PATCH] Add config request CONFIG_IP_SCTP + +--- + arch/arm/configs/bcmrpi_defconfig | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 570a312..5e853f82 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -98,7 +98,6 @@ CONFIG_NF_CONNTRACK_ZONES=y + CONFIG_NF_CONNTRACK_EVENTS=y + CONFIG_NF_CONNTRACK_TIMESTAMP=y + CONFIG_NF_CT_PROTO_DCCP=m +-CONFIG_NF_CT_PROTO_SCTP=m + CONFIG_NF_CT_PROTO_UDPLITE=m + CONFIG_NF_CONNTRACK_AMANDA=m + CONFIG_NF_CONNTRACK_FTP=m +@@ -161,7 +160,6 @@ CONFIG_NETFILTER_XT_MATCH_QUOTA=m + CONFIG_NETFILTER_XT_MATCH_RATEEST=m + CONFIG_NETFILTER_XT_MATCH_REALM=m + CONFIG_NETFILTER_XT_MATCH_RECENT=m +-CONFIG_NETFILTER_XT_MATCH_SCTP=m + CONFIG_NETFILTER_XT_MATCH_SOCKET=m + CONFIG_NETFILTER_XT_MATCH_STATE=m + CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +@@ -237,6 +235,8 @@ CONFIG_BRIDGE_EBT_SNAT=m + CONFIG_BRIDGE_EBT_LOG=m + CONFIG_BRIDGE_EBT_ULOG=m + CONFIG_BRIDGE_EBT_NFLOG=m ++CONFIG_IP_SCTP=m ++CONFIG_SCTP_HMAC_SHA1=y + CONFIG_L2TP=m + CONFIG_BRIDGE=m + CONFIG_VLAN_8021Q=m diff --git a/patches/linux-3.6.11/0223-Add-retry-on-error-and-tidy-of-temperature-driver.patch b/patches/linux-3.6.11/0223-Add-retry-on-error-and-tidy-of-temperature-driver.patch new file mode 100644 index 0000000..7fe5e58 --- /dev/null +++ b/patches/linux-3.6.11/0223-Add-retry-on-error-and-tidy-of-temperature-driver.patch @@ -0,0 +1,125 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Sun, 24 Feb 2013 16:30:57 +0000 +Subject: [PATCH] Add retry on error and tidy of temperature driver + +--- + drivers/thermal/bcm2835-thermal.c | 78 ++++++++++++++------------------------- + 1 file changed, 27 insertions(+), 51 deletions(-) + +diff --git a/drivers/thermal/bcm2835-thermal.c b/drivers/thermal/bcm2835-thermal.c +index 091510b..a669544 100644 +--- a/drivers/thermal/bcm2835-thermal.c ++++ b/drivers/thermal/bcm2835-thermal.c +@@ -33,7 +33,6 @@ + #define print_debug(fmt,...) + #endif + #define print_err(fmt,...) printk(KERN_ERR "%s:%s:%d: "fmt"\n", MODULE_NAME, __func__,__LINE__, ##__VA_ARGS__) +-#define print_info(fmt,...) printk(KERN_INFO "%s: "fmt"\n", MODULE_NAME, ##__VA_ARGS__) + + #define VC_TAG_GET_TEMP 0x00030006 + #define VC_TAG_GET_MAX_TEMP 0x0003000A +@@ -66,12 +65,6 @@ struct bcm2835_thermal_data { + struct vc_msg msg; + }; + +-/* --- PROTOTYPES --- */ +-static int bcm2835_get_temp(struct thermal_zone_device *thermal_dev, unsigned long *); +-static int bcm2835_get_max_temp(struct thermal_zone_device *thermal_dev, int, unsigned long *); +-static int bcm2835_get_trip_type(struct thermal_zone_device *thermal_dev, int trip_num, enum thermal_trip_type *trip_type); +-static int bcm2835_get_mode(struct thermal_zone_device *thermal_dev, enum thermal_device_mode *dev_mode); +- + /* --- GLOBALS --- */ + static struct bcm2835_thermal_data bcm2835_data; + +@@ -79,64 +72,47 @@ static struct bcm2835_thermal_data bcm2835_data; + static struct thermal_zone_device_ops ops; + + /* --- FUNCTIONS --- */ +-static int bcm2835_get_max_temp(struct thermal_zone_device *thermal_dev, int trip_num, unsigned long *temp) +-{ +- int result; + ++static int bcm2835_get_temp_or_max(struct thermal_zone_device *thermal_dev, unsigned long *temp, unsigned tag_id) ++{ ++ int result = -1, retry = 3; + print_debug("IN"); + +- /* wipe all previous message data */ +- memset(&bcm2835_data.msg, 0, sizeof bcm2835_data.msg); +- +- /* prepare message */ +- bcm2835_data.msg.msg_size = sizeof bcm2835_data.msg; +- bcm2835_data.msg.tag.buffer_size = 8; +- bcm2835_data.msg.tag.tag_id = VC_TAG_GET_MAX_TEMP; +- +- /* send the message */ +- result = bcm_mailbox_property(&bcm2835_data.msg, sizeof bcm2835_data.msg); ++ *temp = 0; ++ while (result != 0 && retry-- > 0) { ++ /* wipe all previous message data */ ++ memset(&bcm2835_data.msg, 0, sizeof bcm2835_data.msg); ++ ++ /* prepare message */ ++ bcm2835_data.msg.msg_size = sizeof bcm2835_data.msg; ++ bcm2835_data.msg.tag.buffer_size = 8; ++ bcm2835_data.msg.tag.tag_id = tag_id; ++ ++ /* send the message */ ++ result = bcm_mailbox_property(&bcm2835_data.msg, sizeof bcm2835_data.msg); ++ print_debug("Got %stemperature as %u (%d,%x)\n", tag_id==VC_TAG_GET_MAX_TEMP ? "max ":"", (uint)bcm2835_data.msg.tag.val, result, bcm2835_data.msg.request_code); ++ if (!(bcm2835_data.msg.request_code & 0x80000000)) ++ result = -1; ++ } + + /* check if it was all ok and return the rate in milli degrees C */ +- if (result == 0 && (bcm2835_data.msg.request_code & 0x80000000)) ++ if (result == 0) + *temp = (uint)bcm2835_data.msg.tag.val; +- #ifdef THERMAL_DEBUG_ENABLE + else +- print_debug("Failed to get temperature!"); +- #endif +- print_debug("Got temperature as %u",(uint)*temp); ++ print_err("Failed to get temperature! (%x:%d)\n", tag_id, result); + print_debug("OUT"); +- return 0; ++ return result; + } + + static int bcm2835_get_temp(struct thermal_zone_device *thermal_dev, unsigned long *temp) + { +- int result; +- +- print_debug("IN"); +- +- /* wipe all previous message data */ +- memset(&bcm2835_data.msg, 0, sizeof bcm2835_data.msg); +- +- /* prepare message */ +- bcm2835_data.msg.msg_size = sizeof bcm2835_data.msg; +- bcm2835_data.msg.tag.buffer_size = 8; +- bcm2835_data.msg.tag.tag_id = VC_TAG_GET_TEMP; +- +- /* send the message */ +- result = bcm_mailbox_property(&bcm2835_data.msg, sizeof bcm2835_data.msg); +- +- /* check if it was all ok and return the rate in milli degrees C */ +- if (result == 0 && (bcm2835_data.msg.request_code & 0x80000000)) +- *temp = (uint)bcm2835_data.msg.tag.val; +- #ifdef THERMAL_DEBUG_ENABLE +- else +- print_debug("Failed to get temperature!"); +- #endif +- print_debug("Got temperature as %u",(uint)*temp); +- print_debug("OUT"); +- return 0; ++ return bcm2835_get_temp_or_max(thermal_dev, temp, VC_TAG_GET_TEMP); + } + ++static int bcm2835_get_max_temp(struct thermal_zone_device *thermal_dev, int trip_num, unsigned long *temp) ++{ ++ return bcm2835_get_temp_or_max(thermal_dev, temp, VC_TAG_GET_MAX_TEMP); ++} + + static int bcm2835_get_trip_type(struct thermal_zone_device * thermal_dev, int trip_num, enum thermal_trip_type *trip_type) + { diff --git a/patches/linux-3.6.11/0224-Add-SPEAKUP-and-SPEAKUP_SYNTH_SOFT-kernel-modules.patch b/patches/linux-3.6.11/0224-Add-SPEAKUP-and-SPEAKUP_SYNTH_SOFT-kernel-modules.patch new file mode 100644 index 0000000..387f9a2 --- /dev/null +++ b/patches/linux-3.6.11/0224-Add-SPEAKUP-and-SPEAKUP_SYNTH_SOFT-kernel-modules.patch @@ -0,0 +1,21 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Mon, 25 Feb 2013 11:37:20 +0000 +Subject: [PATCH] Add SPEAKUP and SPEAKUP_SYNTH_SOFT kernel modules + +--- + arch/arm/configs/bcmrpi_defconfig | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 5e853f82..4e52bbb 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -857,6 +857,8 @@ CONFIG_R8712U=m + CONFIG_VT6656=m + CONFIG_ZRAM=m + CONFIG_ZSMALLOC=m ++CONFIG_SPEAKUP=m ++CONFIG_SPEAKUP_SYNTH_SOFT=m + CONFIG_STAGING_MEDIA=y + CONFIG_DVB_AS102=m + CONFIG_EASYCAP=m diff --git a/patches/linux-3.6.11/0225-ARM-VFP-fix-emulation-of-second-VFP-instruction.patch b/patches/linux-3.6.11/0225-ARM-VFP-fix-emulation-of-second-VFP-instruction.patch new file mode 100644 index 0000000..be28212 --- /dev/null +++ b/patches/linux-3.6.11/0225-ARM-VFP-fix-emulation-of-second-VFP-instruction.patch @@ -0,0 +1,49 @@ +From: Russell King - ARM Linux <linux@arm.linux.org.uk> +Date: Mon, 25 Feb 2013 13:04:49 +0000 +Subject: [PATCH] ARM: VFP: fix emulation of second VFP instruction +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Martin Storsjö reports that the sequence: + + ee312ac1 vsub.f32 s4, s3, s2 + ee702ac0 vsub.f32 s5, s1, s0 + e59f0028 ldr r0, [pc, #40] + ee111a90 vmov r1, s3 + +on Raspberry Pi (implementor 41 architecture 1 part 20 variant b rev 5) +where s3 is a denormal and s2 is zero results in incorrect behaviour - +the instruction "vsub.f32 s5, s1, s0" is not executed: + + VFP: bounce: trigger ee111a90 fpexc d0000780 + VFP: emulate: INST=0xee312ac1 SCR=0x00000000 + ... + +As we can see, the instruction triggering the exception is the "vmov" +instruction, and we emulate the "vsub.f32 s4, s3, s2" but fail to +properly take account of the FPEXC_FP2V flag in FPEXC. This is because +the test for the second instruction register being valid is bogus, and +will always skip emulation of the second instruction. + +Cc: <stable@vger.kernel.org> +Reported-by: Martin Storsjö <martin@martin.st> +Tested-by: Martin Storsjö <martin@martin.st> +Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> +--- + arch/arm/vfp/vfpmodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c +index 3b44e0d..5dfbb0b 100644 +--- a/arch/arm/vfp/vfpmodule.c ++++ b/arch/arm/vfp/vfpmodule.c +@@ -413,7 +413,7 @@ void VFP_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs) + * If there isn't a second FP instruction, exit now. Note that + * the FPEXC.FP2V bit is valid only if FPEXC.EX is 1. + */ +- if (fpexc ^ (FPEXC_EX | FPEXC_FP2V)) ++ if ((fpexc & (FPEXC_EX | FPEXC_FP2V)) != (FPEXC_EX | FPEXC_FP2V)) + goto exit; + + /* diff --git a/patches/linux-3.6.11/0226-ARM-7492-1-add-strstr-declaration-for-decompressors.patch b/patches/linux-3.6.11/0226-ARM-7492-1-add-strstr-declaration-for-decompressors.patch new file mode 100644 index 0000000..5e09bbd --- /dev/null +++ b/patches/linux-3.6.11/0226-ARM-7492-1-add-strstr-declaration-for-decompressors.patch @@ -0,0 +1,30 @@ +From: Rob Herring <rob.herring@calxeda.com> +Date: Wed, 15 Aug 2012 16:28:36 +0100 +Subject: [PATCH] ARM: 7492/1: add strstr declaration for decompressors + +With the generic unaligned.h, more kernel headers get pulled in including +dynamic_debug.h which needs strstr. As it is not really used, we only need +a declaration here. + +Signed-off-by: Rob Herring <rob.herring@calxeda.com> +Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +Reviewed-by: Arnd Bergmann <arnd@arndb.de> +Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> +--- + arch/arm/boot/compressed/decompress.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/arm/boot/compressed/decompress.c b/arch/arm/boot/compressed/decompress.c +index f41b38c..9deb56a 100644 +--- a/arch/arm/boot/compressed/decompress.c ++++ b/arch/arm/boot/compressed/decompress.c +@@ -32,6 +32,9 @@ extern void error(char *); + # define Tracecv(c,x) + #endif + ++/* Not needed, but used in some headers pulled in by decompressors */ ++extern char * strstr(const char * s1, const char *s2); ++ + #ifdef CONFIG_KERNEL_GZIP + #include "../../../../lib/decompress_inflate.c" + #endif diff --git a/patches/linux-3.6.11/0227-dwc_otg-fix-potential-use-after-free-case-in-interru.patch b/patches/linux-3.6.11/0227-dwc_otg-fix-potential-use-after-free-case-in-interru.patch new file mode 100644 index 0000000..6bff7c5 --- /dev/null +++ b/patches/linux-3.6.11/0227-dwc_otg-fix-potential-use-after-free-case-in-interru.patch @@ -0,0 +1,30 @@ +From: P33M <P33M@github.com> +Date: Thu, 28 Feb 2013 16:52:51 +0000 +Subject: [PATCH] dwc_otg: fix potential use-after-free case in interrupt + handler + +If a transaction had previously aborted, certain interrupts are +enabled to track error counts and reset where necessary. On IN +endpoints the host generates an ACK interrupt near-simultaneously +with completion of transfer. In the case where this transfer had +previously had an error, this results in a use-after-free on +the QTD memory space with a 1-byte length being overwritten to +0x00. +--- + drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +index e8c91e7..0c81a64 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +@@ -2223,7 +2223,8 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num) + retval |= handle_hc_nak_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.ack) { +- retval |= handle_hc_ack_intr(dwc_otg_hcd, hc, hc_regs, qtd); ++ if(!hcint.b.chhltd) ++ retval |= handle_hc_ack_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.nyet) { + retval |= handle_hc_nyet_intr(dwc_otg_hcd, hc, hc_regs, qtd); diff --git a/patches/linux-3.6.11/0228-fix-missing-modulo-for-bit-in-bank-computation-in-bc.patch b/patches/linux-3.6.11/0228-fix-missing-modulo-for-bit-in-bank-computation-in-bc.patch new file mode 100644 index 0000000..1945824 --- /dev/null +++ b/patches/linux-3.6.11/0228-fix-missing-modulo-for-bit-in-bank-computation-in-bc.patch @@ -0,0 +1,22 @@ +From: Zeta <zeta@sagittarii.fr> +Date: Sat, 2 Mar 2013 15:15:39 +0100 +Subject: [PATCH] fix missing modulo for bit in bank computation, in bcm2708 + gpio irq mask + +--- + arch/arm/mach-bcm2708/bcm2708_gpio.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/arm/mach-bcm2708/bcm2708_gpio.c b/arch/arm/mach-bcm2708/bcm2708_gpio.c +index c8161e1..2d87250 100644 +--- a/arch/arm/mach-bcm2708/bcm2708_gpio.c ++++ b/arch/arm/mach-bcm2708/bcm2708_gpio.c +@@ -173,6 +173,8 @@ static void bcm2708_gpio_irq_mask(struct irq_data *d) + unsigned long rising = readl(gpio->base + GPIOREN(gb)); + unsigned long falling = readl(gpio->base + GPIOFEN(gb)); + ++ gn = gn % 32; ++ + writel(rising & ~(1 << gn), gpio->base + GPIOREN(gb)); + writel(falling & ~(1 << gn), gpio->base + GPIOFEN(gb)); + } diff --git a/patches/linux-3.6.11/0229-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch b/patches/linux-3.6.11/0229-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch new file mode 100644 index 0000000..3ccc92a --- /dev/null +++ b/patches/linux-3.6.11/0229-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch @@ -0,0 +1,52 @@ +From: P33M <P33M@github.com> +Date: Sun, 3 Mar 2013 14:45:53 +0000 +Subject: [PATCH] dwc_otg: add handling of SPLIT transaction data toggle errors + +Previously a data toggle error on packets from a USB1.1 device behind +a TT would result in the Pi locking up as the driver never handled +the associated interrupt. Patch adds basic retry mechanism and +interrupt acknowledgement to cater for either a chance toggle error or +for devices that have a broken initial toggle state (FT8U232/FT232BM). +--- + drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +index 0c81a64..16e8c6c 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +@@ -1921,13 +1921,20 @@ static int32_t handle_hc_datatglerr_intr(dwc_otg_hcd_t * hcd, + dwc_otg_qtd_t * qtd) + { + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " +- "Data Toggle Error--\n", hc->hc_num); ++ "Data Toggle Error on %s transfer--\n", ++ hc->hc_num, (hc->ep_is_in ? "IN" : "OUT")); + +- if (hc->ep_is_in) { ++ /* Data toggles on split transactions cause the hc to halt. ++ * restart transfer */ ++ if(hc->qh->do_split) ++ { ++ qtd->error_count++; ++ dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); ++ update_urb_state_xfer_intr(hc, hc_regs, ++ qtd->urb, qtd, DWC_OTG_HC_XFER_XACT_ERR); ++ halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR); ++ } else if (hc->ep_is_in) { + qtd->error_count = 0; +- } else { +- DWC_ERROR("Data Toggle Error on OUT transfer," +- "channel %d\n", hc->hc_num); + } + + disable_hc_int(hc_regs, datatglerr); +@@ -2080,6 +2087,8 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd, + handle_hc_babble_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.frmovrun) { + handle_hc_frmovrun_intr(hcd, hc, hc_regs, qtd); ++ } else if (hcint.b.datatglerr) { ++ handle_hc_datatglerr_intr(hcd, hc, hc_regs, qtd); + } else if (!out_nak_enh) { + if (hcint.b.nyet) { + /* diff --git a/patches/linux-3.6.11/0230-USB-option-add-Telekom-Speedstick-LTE-II.patch b/patches/linux-3.6.11/0230-USB-option-add-Telekom-Speedstick-LTE-II.patch new file mode 100644 index 0000000..396e35a --- /dev/null +++ b/patches/linux-3.6.11/0230-USB-option-add-Telekom-Speedstick-LTE-II.patch @@ -0,0 +1,46 @@ +From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no> +Date: Fri, 28 Dec 2012 17:29:52 +0100 +Subject: [PATCH] USB: option: add Telekom Speedstick LTE II +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +also known as Alcatel One Touch L100V LTE + +The driver description files gives these names to the vendor specific +functions on this modem: + + Application1: VID_1BBB&PID_011E&MI_00 + Application2: VID_1BBB&PID_011E&MI_01 + Modem: VID_1BBB&PID_011E&MI_03 + Ethernet: VID_1BBB&PID_011E&MI_04 + +Reported-by: Thomas Schäfer <tschaefer@t-online.de> +Cc: <stable@vger.kernel.org> +Signed-off-by: Bjørn Mork <bjorn@mork.no> +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +--- + drivers/usb/serial/option.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c +index 56fed62..a1eb1c9 100644 +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -289,6 +289,7 @@ static void option_instat_callback(struct urb *urb); + #define ALCATEL_VENDOR_ID 0x1bbb + #define ALCATEL_PRODUCT_X060S_X200 0x0000 + #define ALCATEL_PRODUCT_X220_X500D 0x0017 ++#define ALCATEL_PRODUCT_L100V 0x011e + + #define PIRELLI_VENDOR_ID 0x1266 + #define PIRELLI_PRODUCT_C100_1 0x1002 +@@ -1191,6 +1192,8 @@ static const struct usb_device_id option_ids[] = { + .driver_info = (kernel_ulong_t)&alcatel_x200_blacklist + }, + { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D) }, ++ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_L100V), ++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, + { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) }, + { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14), diff --git a/patches/linux-3.6.11/0231-Increase-the-minimum-alsa-buffer-size-as-we-get-unde.patch b/patches/linux-3.6.11/0231-Increase-the-minimum-alsa-buffer-size-as-we-get-unde.patch new file mode 100644 index 0000000..c7da265 --- /dev/null +++ b/patches/linux-3.6.11/0231-Increase-the-minimum-alsa-buffer-size-as-we-get-unde.patch @@ -0,0 +1,22 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Sun, 3 Mar 2013 21:35:30 +0000 +Subject: [PATCH] Increase the minimum alsa buffer size as we get underrun with + some apps (e.g. espeak) + +--- + sound/arm/bcm2835-pcm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c +index fd8890c..c5684ba 100755 +--- a/sound/arm/bcm2835-pcm.c ++++ b/sound/arm/bcm2835-pcm.c +@@ -27,7 +27,7 @@ static struct snd_pcm_hardware snd_bcm2835_playback_hw = { + .channels_min = 1, + .channels_max = 2, + .buffer_bytes_max = 32 * 1024, /* Needs to be less than audioplay buffer size */ +- .period_bytes_min = 1 * 1024, ++ .period_bytes_min = 4 * 1024, + .period_bytes_max = 32 * 1024, + .periods_min = 1, + .periods_max = 32, diff --git a/patches/linux-3.6.11/0232-USB-usb-storage-unusual_devs-update-for-Super-TOP-SA.patch b/patches/linux-3.6.11/0232-USB-usb-storage-unusual_devs-update-for-Super-TOP-SA.patch new file mode 100644 index 0000000..090a9aa --- /dev/null +++ b/patches/linux-3.6.11/0232-USB-usb-storage-unusual_devs-update-for-Super-TOP-SA.patch @@ -0,0 +1,38 @@ +From: Josh Boyer <jwboyer@redhat.com> +Date: Thu, 14 Feb 2013 09:39:09 -0500 +Subject: [PATCH] USB: usb-storage: unusual_devs update for Super TOP SATA + bridge + +The current entry in unusual_cypress.h for the Super TOP SATA bridge devices +seems to be causing corruption on newer revisions of this device. This has +been reported in Arch Linux and Fedora. The original patch was tested on +devices with bcdDevice of 1.60, whereas the newer devices report bcdDevice +as 2.20. Limit the UNUSUAL_DEV entry to devices less than 2.20. + +This fixes https://bugzilla.redhat.com/show_bug.cgi?id=909591 + +The Arch Forum post on this is here: + https://bbs.archlinux.org/viewtopic.php?id=152011 + +Reported-by: Carsten S. <carsteniq@yahoo.com> +Tested-by: Carsten S. <carsteniq@yahoo.com> +Cc: stable <stable@vger.kernel.org> +Signed-off-by: Josh Boyer <jwboyer@redhat.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +--- + drivers/usb/storage/unusual_cypress.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/usb/storage/unusual_cypress.h b/drivers/usb/storage/unusual_cypress.h +index 2c85530..65a6a75 100644 +--- a/drivers/usb/storage/unusual_cypress.h ++++ b/drivers/usb/storage/unusual_cypress.h +@@ -31,7 +31,7 @@ UNUSUAL_DEV( 0x04b4, 0x6831, 0x0000, 0x9999, + "Cypress ISD-300LP", + USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), + +-UNUSUAL_DEV( 0x14cd, 0x6116, 0x0000, 0x9999, ++UNUSUAL_DEV( 0x14cd, 0x6116, 0x0000, 0x0219, + "Super Top", + "USB 2.0 SATA BRIDGE", + USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), diff --git a/patches/linux-3.6.11/0233-Add-bitbanging-pullups-use-them-for-w1-gpio.patch b/patches/linux-3.6.11/0233-Add-bitbanging-pullups-use-them-for-w1-gpio.patch new file mode 100644 index 0000000..c398d59 --- /dev/null +++ b/patches/linux-3.6.11/0233-Add-bitbanging-pullups-use-them-for-w1-gpio.patch @@ -0,0 +1,145 @@ +From: Matt Johnston <matt@ucc.asn.au> +Date: Fri, 7 Dec 2012 23:21:31 +0800 +Subject: [PATCH] Add bitbanging pullups, use them for w1-gpio + +Allows parasite power to work, uses module option pullup=1 +--- + drivers/w1/masters/w1-gpio.c | 20 ++++++++++++++++++++ + drivers/w1/w1.h | 6 ++++++ + drivers/w1/w1_int.c | 25 ++++++++++++++----------- + drivers/w1/w1_io.c | 14 +++++++++++--- + 4 files changed, 51 insertions(+), 14 deletions(-) + +diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c +index df600d1..cc761f2 100644 +--- a/drivers/w1/masters/w1-gpio.c ++++ b/drivers/w1/masters/w1-gpio.c +@@ -18,6 +18,9 @@ + #include "../w1.h" + #include "../w1_int.h" + ++static int w1_gpio_pullup = 0; ++module_param_named(pullup, w1_gpio_pullup, int, 0); ++ + static void w1_gpio_write_bit_dir(void *data, u8 bit) + { + struct w1_gpio_platform_data *pdata = data; +@@ -42,6 +45,16 @@ static u8 w1_gpio_read_bit(void *data) + return gpio_get_value(pdata->pin) ? 1 : 0; + } + ++static void w1_gpio_bitbang_pullup(void *data, u8 on) ++{ ++ struct w1_gpio_platform_data *pdata = data; ++ ++ if (on) ++ gpio_direction_output(pdata->pin, 1); ++ else ++ gpio_direction_input(pdata->pin); ++} ++ + static int __init w1_gpio_probe(struct platform_device *pdev) + { + struct w1_bus_master *master; +@@ -70,6 +83,13 @@ static int __init w1_gpio_probe(struct platform_device *pdev) + master->write_bit = w1_gpio_write_bit_dir; + } + ++ if (w1_gpio_pullup) ++ if (pdata->is_open_drain) ++ printk(KERN_ERR "w1-gpio 'pullup' option " ++ "doesn't work with open drain GPIO\n"); ++ else ++ master->bitbang_pullup = w1_gpio_bitbang_pullup; ++ + err = w1_add_master_device(master); + if (err) + goto free_gpio; +diff --git a/drivers/w1/w1.h b/drivers/w1/w1.h +index 45908e5..463d019 100644 +--- a/drivers/w1/w1.h ++++ b/drivers/w1/w1.h +@@ -148,6 +148,12 @@ struct w1_bus_master + */ + u8 (*set_pullup)(void *, int); + ++ /** ++ * Turns the pullup on/off in bitbanging mode, takes an on/off argument. ++ * @return -1=Error, 0=completed ++ */ ++ void (*bitbang_pullup)(void *, u8); ++ + /** Really nice hardware can handles the different types of ROM search + * w1_master* is passed to the slave found callback. + */ +diff --git a/drivers/w1/w1_int.c b/drivers/w1/w1_int.c +index 5a98649..eb906e8 100644 +--- a/drivers/w1/w1_int.c ++++ b/drivers/w1/w1_int.c +@@ -110,26 +110,29 @@ int w1_add_master_device(struct w1_bus_master *master) + struct w1_netlink_msg msg; + int id, found; + +- /* validate minimum functionality */ +- if (!(master->touch_bit && master->reset_bus) && +- !(master->write_bit && master->read_bit) && ++ /* validate minimum functionality */ ++ if (!(master->touch_bit && master->reset_bus) && ++ !(master->write_bit && master->read_bit) && + !(master->write_byte && master->read_byte && master->reset_bus)) { + printk(KERN_ERR "w1_add_master_device: invalid function set\n"); + return(-EINVAL); +- } +- /* While it would be electrically possible to make a device that +- * generated a strong pullup in bit bang mode, only hardware that +- * controls 1-wire time frames are even expected to support a strong +- * pullup. w1_io.c would need to support calling set_pullup before +- * the last write_bit operation of a w1_write_8 which it currently +- * doesn't. +- */ ++ } ++ ++ /* bitbanging hardware uses bitbang_pullup, other hardware uses set_pullup ++ * and takes care of timing itself */ + if (!master->write_byte && !master->touch_bit && master->set_pullup) { + printk(KERN_ERR "w1_add_master_device: set_pullup requires " + "write_byte or touch_bit, disabling\n"); + master->set_pullup = NULL; + } + ++ if (master->set_pullup && master->bitbang_pullup) ++ { ++ printk(KERN_ERR "w1_add_master_device: set_pullup should not " ++ "be set when bitbang_pullup is used, disabling\n"); ++ master->set_pullup = NULL; ++ } ++ + /* Lock until the device is added (or not) to w1_masters. */ + mutex_lock(&w1_mlock); + /* Search for the first available id (starting at 1). */ +diff --git a/drivers/w1/w1_io.c b/drivers/w1/w1_io.c +index e10acc2..e546fdc 100644 +--- a/drivers/w1/w1_io.c ++++ b/drivers/w1/w1_io.c +@@ -127,10 +127,18 @@ static void w1_pre_write(struct w1_master *dev) + static void w1_post_write(struct w1_master *dev) + { + if (dev->pullup_duration) { +- if (dev->enable_pullup && dev->bus_master->set_pullup) +- dev->bus_master->set_pullup(dev->bus_master->data, 0); +- else ++ if (dev->enable_pullup) { ++ if (dev->bus_master->set_pullup) { ++ dev->bus_master->set_pullup(dev->bus_master->data, 0); ++ } else if (dev->bus_master->bitbang_pullup) { ++ dev->bus_master->bitbang_pullup(dev->bus_master->data, 1); ++ msleep(dev->pullup_duration); ++ dev->bus_master->bitbang_pullup(dev->bus_master->data, 0); ++ } ++ } else { + msleep(dev->pullup_duration); ++ } ++ + dev->pullup_duration = 0; + } + } diff --git a/patches/linux-3.6.11/0234-Run-Lindent-to-fix-whitespace-fix-braces.patch b/patches/linux-3.6.11/0234-Run-Lindent-to-fix-whitespace-fix-braces.patch new file mode 100644 index 0000000..3efa620 --- /dev/null +++ b/patches/linux-3.6.11/0234-Run-Lindent-to-fix-whitespace-fix-braces.patch @@ -0,0 +1,757 @@ +From: Matt Johnston <matt@ucc.asn.au> +Date: Thu, 7 Mar 2013 18:56:49 +0800 +Subject: [PATCH] Run Lindent to fix whitespace, fix braces + +--- + drivers/w1/masters/w1-gpio.c | 14 ++--- + drivers/w1/w1.h | 141 ++++++++++++++++++++----------------------- + drivers/w1/w1_int.c | 63 +++++++++---------- + drivers/w1/w1_io.c | 98 ++++++++++++++++++------------ + 4 files changed, 165 insertions(+), 151 deletions(-) + +diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c +index cc761f2..2a5f8b3 100644 +--- a/drivers/w1/masters/w1-gpio.c ++++ b/drivers/w1/masters/w1-gpio.c +@@ -86,7 +86,7 @@ static int __init w1_gpio_probe(struct platform_device *pdev) + if (w1_gpio_pullup) + if (pdata->is_open_drain) + printk(KERN_ERR "w1-gpio 'pullup' option " +- "doesn't work with open drain GPIO\n"); ++ "doesn't work with open drain GPIO\n"); + else + master->bitbang_pullup = w1_gpio_bitbang_pullup; + +@@ -101,9 +101,9 @@ static int __init w1_gpio_probe(struct platform_device *pdev) + + return 0; + +- free_gpio: ++free_gpio: + gpio_free(pdata->pin); +- free_master: ++free_master: + kfree(master); + + return err; +@@ -153,10 +153,10 @@ static int w1_gpio_resume(struct platform_device *pdev) + + static struct platform_driver w1_gpio_driver = { + .driver = { +- .name = "w1-gpio", +- .owner = THIS_MODULE, +- }, +- .remove = __exit_p(w1_gpio_remove), ++ .name = "w1-gpio", ++ .owner = THIS_MODULE, ++ }, ++ .remove = __exit_p(w1_gpio_remove), + .suspend = w1_gpio_suspend, + .resume = w1_gpio_resume, + }; +diff --git a/drivers/w1/w1.h b/drivers/w1/w1.h +index 463d019..40123e3 100644 +--- a/drivers/w1/w1.h ++++ b/drivers/w1/w1.h +@@ -22,16 +22,11 @@ + #ifndef __W1_H + #define __W1_H + +-struct w1_reg_num +-{ ++struct w1_reg_num { + #if defined(__LITTLE_ENDIAN_BITFIELD) +- __u64 family:8, +- id:48, +- crc:8; ++ __u64 family:8, id:48, crc:8; + #elif defined(__BIG_ENDIAN_BITFIELD) +- __u64 crc:8, +- id:48, +- family:8; ++ __u64 crc:8, id:48, family:8; + #else + #error "Please fix <asm/byteorder.h>" + #endif +@@ -59,26 +54,24 @@ struct w1_reg_num + + #define W1_SLAVE_ACTIVE 0 + +-struct w1_slave +-{ +- struct module *owner; +- unsigned char name[W1_MAXNAMELEN]; +- struct list_head w1_slave_entry; +- struct w1_reg_num reg_num; +- atomic_t refcnt; +- u8 rom[9]; +- u32 flags; +- int ttl; +- +- struct w1_master *master; +- struct w1_family *family; +- void *family_data; +- struct device dev; +- struct completion released; ++struct w1_slave { ++ struct module *owner; ++ unsigned char name[W1_MAXNAMELEN]; ++ struct list_head w1_slave_entry; ++ struct w1_reg_num reg_num; ++ atomic_t refcnt; ++ u8 rom[9]; ++ u32 flags; ++ int ttl; ++ ++ struct w1_master *master; ++ struct w1_family *family; ++ void *family_data; ++ struct device dev; ++ struct completion released; + }; + +-typedef void (*w1_slave_found_callback)(struct w1_master *, u64); +- ++typedef void (*w1_slave_found_callback) (struct w1_master *, u64); + + /** + * Note: read_bit and write_bit are very low level functions and should only +@@ -87,19 +80,18 @@ typedef void (*w1_slave_found_callback)(struct w1_master *, u64); + * Either define read_bit and write_bit OR define, at minimum, touch_bit and + * reset_bus. + */ +-struct w1_bus_master +-{ ++struct w1_bus_master { + /** the first parameter in all the functions below */ +- void *data; ++ void *data; + + /** + * Sample the line level + * @return the level read (0 or 1) + */ +- u8 (*read_bit)(void *); ++ u8(*read_bit) (void *); + + /** Sets the line level */ +- void (*write_bit)(void *, u8); ++ void (*write_bit) (void *, u8); + + /** + * touch_bit is the lowest-level function for devices that really +@@ -108,102 +100,103 @@ struct w1_bus_master + * touch_bit(1) = write-1 / read cycle + * @return the bit read (0 or 1) + */ +- u8 (*touch_bit)(void *, u8); ++ u8(*touch_bit) (void *, u8); + + /** + * Reads a bytes. Same as 8 touch_bit(1) calls. + * @return the byte read + */ +- u8 (*read_byte)(void *); ++ u8(*read_byte) (void *); + + /** + * Writes a byte. Same as 8 touch_bit(x) calls. + */ +- void (*write_byte)(void *, u8); ++ void (*write_byte) (void *, u8); + + /** + * Same as a series of read_byte() calls + * @return the number of bytes read + */ +- u8 (*read_block)(void *, u8 *, int); ++ u8(*read_block) (void *, u8 *, int); + + /** Same as a series of write_byte() calls */ +- void (*write_block)(void *, const u8 *, int); ++ void (*write_block) (void *, const u8 *, int); + + /** + * Combines two reads and a smart write for ROM searches + * @return bit0=Id bit1=comp_id bit2=dir_taken + */ +- u8 (*triplet)(void *, u8); ++ u8(*triplet) (void *, u8); + + /** + * long write-0 with a read for the presence pulse detection + * @return -1=Error, 0=Device present, 1=No device present + */ +- u8 (*reset_bus)(void *); ++ u8(*reset_bus) (void *); + + /** + * Put out a strong pull-up pulse of the specified duration. + * @return -1=Error, 0=completed + */ +- u8 (*set_pullup)(void *, int); ++ u8(*set_pullup) (void *, int); + + /** + * Turns the pullup on/off in bitbanging mode, takes an on/off argument. + * @return -1=Error, 0=completed + */ +- void (*bitbang_pullup)(void *, u8); ++ void (*bitbang_pullup) (void *, u8); + + /** Really nice hardware can handles the different types of ROM search + * w1_master* is passed to the slave found callback. + */ +- void (*search)(void *, struct w1_master *, +- u8, w1_slave_found_callback); ++ void (*search) (void *, struct w1_master *, ++ u8, w1_slave_found_callback); + }; + +-struct w1_master +-{ +- struct list_head w1_master_entry; +- struct module *owner; +- unsigned char name[W1_MAXNAMELEN]; +- struct list_head slist; +- int max_slave_count, slave_count; +- unsigned long attempts; +- int slave_ttl; +- int initialized; +- u32 id; +- int search_count; +- +- atomic_t refcnt; +- +- void *priv; +- int priv_size; ++struct w1_master { ++ struct list_head w1_master_entry; ++ struct module *owner; ++ unsigned char name[W1_MAXNAMELEN]; ++ struct list_head slist; ++ int max_slave_count, slave_count; ++ unsigned long attempts; ++ int slave_ttl; ++ int initialized; ++ u32 id; ++ int search_count; ++ ++ atomic_t refcnt; ++ ++ void *priv; ++ int priv_size; + + /** 5V strong pullup enabled flag, 1 enabled, zero disabled. */ +- int enable_pullup; ++ int enable_pullup; + /** 5V strong pullup duration in milliseconds, zero disabled. */ +- int pullup_duration; ++ int pullup_duration; + +- struct task_struct *thread; +- struct mutex mutex; +- struct mutex bus_mutex; ++ struct task_struct *thread; ++ struct mutex mutex; ++ struct mutex bus_mutex; + +- struct device_driver *driver; +- struct device dev; ++ struct device_driver *driver; ++ struct device dev; + +- struct w1_bus_master *bus_master; ++ struct w1_bus_master *bus_master; + +- u32 seq; ++ u32 seq; + }; + + int w1_create_master_attributes(struct w1_master *); + void w1_destroy_master_attributes(struct w1_master *master); +-void w1_search(struct w1_master *dev, u8 search_type, w1_slave_found_callback cb); +-void w1_search_devices(struct w1_master *dev, u8 search_type, w1_slave_found_callback cb); ++void w1_search(struct w1_master *dev, u8 search_type, ++ w1_slave_found_callback cb); ++void w1_search_devices(struct w1_master *dev, u8 search_type, ++ w1_slave_found_callback cb); + struct w1_slave *w1_search_slave(struct w1_reg_num *id); + void w1_slave_found(struct w1_master *dev, u64 rn); + void w1_search_process_cb(struct w1_master *dev, u8 search_type, +- w1_slave_found_callback cb); ++ w1_slave_found_callback cb); + struct w1_master *w1_search_master_id(u32 id); + + /* Disconnect and reconnect devices in the given family. Used for finding +@@ -226,17 +219,17 @@ int w1_reset_select_slave(struct w1_slave *sl); + int w1_reset_resume_command(struct w1_master *); + void w1_next_pullup(struct w1_master *, int); + +-static inline struct w1_slave* dev_to_w1_slave(struct device *dev) ++static inline struct w1_slave *dev_to_w1_slave(struct device *dev) + { + return container_of(dev, struct w1_slave, dev); + } + +-static inline struct w1_slave* kobj_to_w1_slave(struct kobject *kobj) ++static inline struct w1_slave *kobj_to_w1_slave(struct kobject *kobj) + { + return dev_to_w1_slave(container_of(kobj, struct device, kobj)); + } + +-static inline struct w1_master* dev_to_w1_master(struct device *dev) ++static inline struct w1_master *dev_to_w1_master(struct device *dev) + { + return container_of(dev, struct w1_master, dev); + } +diff --git a/drivers/w1/w1_int.c b/drivers/w1/w1_int.c +index eb906e8..e7e3d11 100644 +--- a/drivers/w1/w1_int.c ++++ b/drivers/w1/w1_int.c +@@ -32,15 +32,15 @@ + #include "w1_netlink.h" + #include "w1_int.h" + +-static int w1_search_count = -1; /* Default is continual scan */ ++static int w1_search_count = -1; /* Default is continual scan */ + module_param_named(search_count, w1_search_count, int, 0); + + static int w1_enable_pullup = 1; + module_param_named(enable_pullup, w1_enable_pullup, int, 0); + +-static struct w1_master * w1_alloc_dev(u32 id, int slave_count, int slave_ttl, +- struct device_driver *driver, +- struct device *device) ++static struct w1_master *w1_alloc_dev(u32 id, int slave_count, int slave_ttl, ++ struct device_driver *driver, ++ struct device *device) + { + struct w1_master *dev; + int err; +@@ -48,26 +48,27 @@ static struct w1_master * w1_alloc_dev(u32 id, int slave_count, int slave_ttl, + /* + * We are in process context(kernel thread), so can sleep. + */ +- dev = kzalloc(sizeof(struct w1_master) + sizeof(struct w1_bus_master), GFP_KERNEL); ++ dev = ++ kzalloc(sizeof(struct w1_master) + sizeof(struct w1_bus_master), ++ GFP_KERNEL); + if (!dev) { + printk(KERN_ERR +- "Failed to allocate %zd bytes for new w1 device.\n", +- sizeof(struct w1_master)); ++ "Failed to allocate %zd bytes for new w1 device.\n", ++ sizeof(struct w1_master)); + return NULL; + } + +- + dev->bus_master = (struct w1_bus_master *)(dev + 1); + +- dev->owner = THIS_MODULE; +- dev->max_slave_count = slave_count; +- dev->slave_count = 0; +- dev->attempts = 0; +- dev->initialized = 0; +- dev->id = id; +- dev->slave_ttl = slave_ttl; +- dev->search_count = w1_search_count; +- dev->enable_pullup = w1_enable_pullup; ++ dev->owner = THIS_MODULE; ++ dev->max_slave_count = slave_count; ++ dev->slave_count = 0; ++ dev->attempts = 0; ++ dev->initialized = 0; ++ dev->id = id; ++ dev->slave_ttl = slave_ttl; ++ dev->search_count = w1_search_count; ++ dev->enable_pullup = w1_enable_pullup; + + /* 1 for w1_process to decrement + * 1 for __w1_remove_master_device to decrement +@@ -89,7 +90,8 @@ static struct w1_master * w1_alloc_dev(u32 id, int slave_count, int slave_ttl, + + err = device_register(&dev->dev); + if (err) { +- printk(KERN_ERR "Failed to register master device. err=%d\n", err); ++ printk(KERN_ERR "Failed to register master device. err=%d\n", ++ err); + memset(dev, 0, sizeof(struct w1_master)); + kfree(dev); + dev = NULL; +@@ -115,21 +117,20 @@ int w1_add_master_device(struct w1_bus_master *master) + !(master->write_bit && master->read_bit) && + !(master->write_byte && master->read_byte && master->reset_bus)) { + printk(KERN_ERR "w1_add_master_device: invalid function set\n"); +- return(-EINVAL); ++ return (-EINVAL); + } + + /* bitbanging hardware uses bitbang_pullup, other hardware uses set_pullup + * and takes care of timing itself */ + if (!master->write_byte && !master->touch_bit && master->set_pullup) { + printk(KERN_ERR "w1_add_master_device: set_pullup requires " +- "write_byte or touch_bit, disabling\n"); ++ "write_byte or touch_bit, disabling\n"); + master->set_pullup = NULL; + } + +- if (master->set_pullup && master->bitbang_pullup) +- { ++ if (master->set_pullup && master->bitbang_pullup) { + printk(KERN_ERR "w1_add_master_device: set_pullup should not " +- "be set when bitbang_pullup is used, disabling\n"); ++ "be set when bitbang_pullup is used, disabling\n"); + master->set_pullup = NULL; + } + +@@ -149,13 +150,13 @@ int w1_add_master_device(struct w1_bus_master *master) + } while (found); + + dev = w1_alloc_dev(id, w1_max_slave_count, w1_max_slave_ttl, +- &w1_master_driver, &w1_master_device); ++ &w1_master_driver, &w1_master_device); + if (!dev) { + mutex_unlock(&w1_mlock); + return -ENOMEM; + } + +- retval = w1_create_master_attributes(dev); ++ retval = w1_create_master_attributes(dev); + if (retval) { + mutex_unlock(&w1_mlock); + goto err_out_free_dev; +@@ -169,8 +170,7 @@ int w1_add_master_device(struct w1_bus_master *master) + if (IS_ERR(dev->thread)) { + retval = PTR_ERR(dev->thread); + dev_err(&dev->dev, +- "Failed to create new kernel thread. err=%d\n", +- retval); ++ "Failed to create new kernel thread. err=%d\n", retval); + mutex_unlock(&w1_mlock); + goto err_out_rm_attr; + } +@@ -185,7 +185,7 @@ int w1_add_master_device(struct w1_bus_master *master) + + return 0; + +-#if 0 /* Thread cleanup code, not required currently. */ ++#if 0 /* Thread cleanup code, not required currently. */ + err_out_kill_thread: + kthread_stop(dev->thread); + #endif +@@ -210,14 +210,15 @@ void __w1_remove_master_device(struct w1_master *dev) + + mutex_lock(&dev->mutex); + list_for_each_entry_safe(sl, sln, &dev->slist, w1_slave_entry) +- w1_slave_detach(sl); ++ w1_slave_detach(sl); + w1_destroy_master_attributes(dev); + mutex_unlock(&dev->mutex); + atomic_dec(&dev->refcnt); + + while (atomic_read(&dev->refcnt)) { +- dev_info(&dev->dev, "Waiting for %s to become free: refcnt=%d.\n", +- dev->name, atomic_read(&dev->refcnt)); ++ dev_info(&dev->dev, ++ "Waiting for %s to become free: refcnt=%d.\n", ++ dev->name, atomic_read(&dev->refcnt)); + + if (msleep_interruptible(1000)) + flush_signals(current); +diff --git a/drivers/w1/w1_io.c b/drivers/w1/w1_io.c +index e546fdc..0566abe 100644 +--- a/drivers/w1/w1_io.c ++++ b/drivers/w1/w1_io.c +@@ -43,14 +43,15 @@ static u8 w1_crc8_table[] = { + 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, + 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, + 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, +- 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, +- 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80, +- 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, +- 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115, +- 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, +- 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22, +- 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, +- 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53 ++ 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, ++ 205, 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, ++ 236, 14, 80, 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, ++ 12, 82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, ++ 18, 145, 207, 45, 115, 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, ++ 180, 234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, ++ 149, 203, 41, 119, 244, 170, 72, 22, 233, 183, 85, 11, 136, 214, 52, ++ 106, 43, 117, 151, 201, 74, 20, 246, 168, 116, 42, 200, 150, 21, 75, ++ 169, 247, 182, 232, 10, 84, 215, 137, 107, 53 + }; + + static void w1_delay(unsigned long tm) +@@ -84,7 +85,8 @@ static void w1_write_bit(struct w1_master *dev, int bit) + { + unsigned long flags = 0; + +- if(w1_disable_irqs) local_irq_save(flags); ++ if (w1_disable_irqs) ++ local_irq_save(flags); + + if (bit) { + dev->bus_master->write_bit(dev->bus_master->data, 0); +@@ -98,7 +100,8 @@ static void w1_write_bit(struct w1_master *dev, int bit) + w1_delay(10); + } + +- if(w1_disable_irqs) local_irq_restore(flags); ++ if (w1_disable_irqs) ++ local_irq_restore(flags); + } + + /** +@@ -111,9 +114,9 @@ static void w1_write_bit(struct w1_master *dev, int bit) + static void w1_pre_write(struct w1_master *dev) + { + if (dev->pullup_duration && +- dev->enable_pullup && dev->bus_master->set_pullup) { ++ dev->enable_pullup && dev->bus_master->set_pullup) { + dev->bus_master->set_pullup(dev->bus_master->data, +- dev->pullup_duration); ++ dev->pullup_duration); + } + } + +@@ -129,15 +132,19 @@ static void w1_post_write(struct w1_master *dev) + if (dev->pullup_duration) { + if (dev->enable_pullup) { + if (dev->bus_master->set_pullup) { +- dev->bus_master->set_pullup(dev->bus_master->data, 0); ++ dev->bus_master->set_pullup(dev-> ++ bus_master->data, ++ 0); + } else if (dev->bus_master->bitbang_pullup) { +- dev->bus_master->bitbang_pullup(dev->bus_master->data, 1); ++ dev->bus_master-> ++ bitbang_pullup(dev->bus_master->data, 1); + msleep(dev->pullup_duration); +- dev->bus_master->bitbang_pullup(dev->bus_master->data, 0); ++ dev->bus_master-> ++ bitbang_pullup(dev->bus_master->data, 0); + } +- } else { ++ } else { + msleep(dev->pullup_duration); +- } ++ } + + dev->pullup_duration = 0; + } +@@ -156,8 +163,7 @@ void w1_write_8(struct w1_master *dev, u8 byte) + if (dev->bus_master->write_byte) { + w1_pre_write(dev); + dev->bus_master->write_byte(dev->bus_master->data, byte); +- } +- else ++ } else + for (i = 0; i < 8; ++i) { + if (i == 7) + w1_pre_write(dev); +@@ -165,8 +171,8 @@ void w1_write_8(struct w1_master *dev, u8 byte) + } + w1_post_write(dev); + } +-EXPORT_SYMBOL_GPL(w1_write_8); + ++EXPORT_SYMBOL_GPL(w1_write_8); + + /** + * Generates a write-1 cycle and samples the level. +@@ -204,17 +210,17 @@ static u8 w1_read_bit(struct w1_master *dev) + * @param bdir the bit to write if both id_bit and comp_bit are 0 + * @return bit fields - see above + */ +-u8 w1_triplet(struct w1_master *dev, int bdir) ++u8 w1_triplet(struct w1_master * dev, int bdir) + { + if (dev->bus_master->triplet) + return dev->bus_master->triplet(dev->bus_master->data, bdir); + else { +- u8 id_bit = w1_touch_bit(dev, 1); ++ u8 id_bit = w1_touch_bit(dev, 1); + u8 comp_bit = w1_touch_bit(dev, 1); + u8 retval; + + if (id_bit && comp_bit) +- return 0x03; /* error */ ++ return 0x03; /* error */ + + if (!id_bit && !comp_bit) { + /* Both bits are valid, take the direction given */ +@@ -239,7 +245,7 @@ u8 w1_triplet(struct w1_master *dev, int bdir) + * @param dev the master device + * @return the byte read + */ +-u8 w1_read_8(struct w1_master *dev) ++u8 w1_read_8(struct w1_master * dev) + { + int i; + u8 res = 0; +@@ -248,10 +254,11 @@ u8 w1_read_8(struct w1_master *dev) + res = dev->bus_master->read_byte(dev->bus_master->data); + else + for (i = 0; i < 8; ++i) +- res |= (w1_touch_bit(dev,1) << i); ++ res |= (w1_touch_bit(dev, 1) << i); + + return res; + } ++ + EXPORT_SYMBOL_GPL(w1_read_8); + + /** +@@ -261,19 +268,19 @@ EXPORT_SYMBOL_GPL(w1_read_8); + * @param buf pointer to the data to write + * @param len the number of bytes to write + */ +-void w1_write_block(struct w1_master *dev, const u8 *buf, int len) ++void w1_write_block(struct w1_master *dev, const u8 * buf, int len) + { + int i; + + if (dev->bus_master->write_block) { + w1_pre_write(dev); + dev->bus_master->write_block(dev->bus_master->data, buf, len); +- } +- else ++ } else + for (i = 0; i < len; ++i) +- w1_write_8(dev, buf[i]); /* calls w1_pre_write */ ++ w1_write_8(dev, buf[i]); /* calls w1_pre_write */ + w1_post_write(dev); + } ++ + EXPORT_SYMBOL_GPL(w1_write_block); + + /** +@@ -283,7 +290,7 @@ EXPORT_SYMBOL_GPL(w1_write_block); + * @param buf pointer to the data to write + * @param len the number of bytes to write + */ +-void w1_touch_block(struct w1_master *dev, u8 *buf, int len) ++void w1_touch_block(struct w1_master *dev, u8 * buf, int len) + { + int i, j; + u8 tmp; +@@ -299,6 +306,7 @@ void w1_touch_block(struct w1_master *dev, u8 *buf, int len) + buf[i] = tmp; + } + } ++ + EXPORT_SYMBOL_GPL(w1_touch_block); + + /** +@@ -309,13 +317,15 @@ EXPORT_SYMBOL_GPL(w1_touch_block); + * @param len the number of bytes to read + * @return the number of bytes read + */ +-u8 w1_read_block(struct w1_master *dev, u8 *buf, int len) ++u8 w1_read_block(struct w1_master *dev, u8 * buf, int len) + { + int i; + u8 ret; + + if (dev->bus_master->read_block) +- ret = dev->bus_master->read_block(dev->bus_master->data, buf, len); ++ ret = ++ dev->bus_master->read_block(dev->bus_master->data, buf, ++ len); + else { + for (i = 0; i < len; ++i) + buf[i] = w1_read_8(dev); +@@ -324,6 +334,7 @@ u8 w1_read_block(struct w1_master *dev, u8 *buf, int len) + + return ret; + } ++ + EXPORT_SYMBOL_GPL(w1_read_block); + + /** +@@ -337,10 +348,12 @@ int w1_reset_bus(struct w1_master *dev) + int result; + unsigned long flags = 0; + +- if(w1_disable_irqs) local_irq_save(flags); ++ if (w1_disable_irqs) ++ local_irq_save(flags); + + if (dev->bus_master->reset_bus) +- result = dev->bus_master->reset_bus(dev->bus_master->data) & 0x1; ++ result = ++ dev->bus_master->reset_bus(dev->bus_master->data) & 0x1; + else { + dev->bus_master->write_bit(dev->bus_master->data, 0); + /* minimum 480, max ? us +@@ -363,10 +376,12 @@ int w1_reset_bus(struct w1_master *dev) + msleep(1); + } + +- if(w1_disable_irqs) local_irq_restore(flags); ++ if (w1_disable_irqs) ++ local_irq_restore(flags); + + return result; + } ++ + EXPORT_SYMBOL_GPL(w1_reset_bus); + + u8 w1_calc_crc8(u8 * data, int len) +@@ -378,14 +393,16 @@ u8 w1_calc_crc8(u8 * data, int len) + + return crc; + } ++ + EXPORT_SYMBOL_GPL(w1_calc_crc8); + +-void w1_search_devices(struct w1_master *dev, u8 search_type, w1_slave_found_callback cb) ++void w1_search_devices(struct w1_master *dev, u8 search_type, ++ w1_slave_found_callback cb) + { + dev->attempts++; + if (dev->bus_master->search) + dev->bus_master->search(dev->bus_master->data, dev, +- search_type, cb); ++ search_type, cb); + else + w1_search(dev, search_type, cb); + } +@@ -406,14 +423,15 @@ int w1_reset_select_slave(struct w1_slave *sl) + if (sl->master->slave_count == 1) + w1_write_8(sl->master, W1_SKIP_ROM); + else { +- u8 match[9] = {W1_MATCH_ROM, }; +- u64 rn = le64_to_cpu(*((u64*)&sl->reg_num)); ++ u8 match[9] = { W1_MATCH_ROM, }; ++ u64 rn = le64_to_cpu(*((u64 *) & sl->reg_num)); + + memcpy(&match[1], &rn, 8); + w1_write_block(sl->master, match, 9); + } + return 0; + } ++ + EXPORT_SYMBOL_GPL(w1_reset_select_slave); + + /** +@@ -440,6 +458,7 @@ int w1_reset_resume_command(struct w1_master *dev) + w1_write_8(dev, W1_RESUME_CMD); + return 0; + } ++ + EXPORT_SYMBOL_GPL(w1_reset_resume_command); + + /** +@@ -457,4 +476,5 @@ void w1_next_pullup(struct w1_master *dev, int delay) + { + dev->pullup_duration = delay; + } ++ + EXPORT_SYMBOL_GPL(w1_next_pullup); diff --git a/patches/linux-3.6.11/0235-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch b/patches/linux-3.6.11/0235-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch new file mode 100644 index 0000000..942fa53 --- /dev/null +++ b/patches/linux-3.6.11/0235-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch @@ -0,0 +1,251 @@ +From: Ivan Djelic <ivan.djelic@parrot.com> +Date: Wed, 6 Mar 2013 20:09:27 +0100 +Subject: [PATCH] ARM: 7668/1: fix memset-related crashes caused by recent GCC + (4.7.2) optimizations + +Recent GCC versions (e.g. GCC-4.7.2) perform optimizations based on +assumptions about the implementation of memset and similar functions. +The current ARM optimized memset code does not return the value of +its first argument, as is usually expected from standard implementations. + +For instance in the following function: + +void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) +{ + memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter)); + waiter->magic = waiter; + INIT_LIST_HEAD(&waiter->list); +} + +compiled as: + +800554d0 <debug_mutex_lock_common>: +800554d0: e92d4008 push {r3, lr} +800554d4: e1a00001 mov r0, r1 +800554d8: e3a02010 mov r2, #16 ; 0x10 +800554dc: e3a01011 mov r1, #17 ; 0x11 +800554e0: eb04426e bl 80165ea0 <memset> +800554e4: e1a03000 mov r3, r0 +800554e8: e583000c str r0, [r3, #12] +800554ec: e5830000 str r0, [r3] +800554f0: e5830004 str r0, [r3, #4] +800554f4: e8bd8008 pop {r3, pc} + +GCC assumes memset returns the value of pointer 'waiter' in register r0; causing +register/memory corruptions. + +This patch fixes the return value of the assembly version of memset. +It adds a 'mov' instruction and merges an additional load+store into +existing load/store instructions. +For ease of review, here is a breakdown of the patch into 4 simple steps: + +Step 1 +====== +Perform the following substitutions: +ip -> r8, then +r0 -> ip, +and insert 'mov ip, r0' as the first statement of the function. +At this point, we have a memset() implementation returning the proper result, +but corrupting r8 on some paths (the ones that were using ip). + +Step 2 +====== +Make sure r8 is saved and restored when (! CALGN(1)+0) == 1: + +save r8: +- str lr, [sp, #-4]! ++ stmfd sp!, {r8, lr} + +and restore r8 on both exit paths: +- ldmeqfd sp!, {pc} @ Now <64 bytes to go. ++ ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. +(...) + tst r2, #16 + stmneia ip!, {r1, r3, r8, lr} +- ldr lr, [sp], #4 ++ ldmfd sp!, {r8, lr} + +Step 3 +====== +Make sure r8 is saved and restored when (! CALGN(1)+0) == 0: + +save r8: +- stmfd sp!, {r4-r7, lr} ++ stmfd sp!, {r4-r8, lr} + +and restore r8 on both exit paths: + bgt 3b +- ldmeqfd sp!, {r4-r7, pc} ++ ldmeqfd sp!, {r4-r8, pc} +(...) + tst r2, #16 + stmneia ip!, {r4-r7} +- ldmfd sp!, {r4-r7, lr} ++ ldmfd sp!, {r4-r8, lr} + +Step 4 +====== +Rewrite register list "r4-r7, r8" as "r4-r8". + +Signed-off-by: Ivan Djelic <ivan.djelic@parrot.com> +Reviewed-by: Nicolas Pitre <nico@linaro.org> +Signed-off-by: Dirk Behme <dirk.behme@gmail.com> +Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> +--- + arch/arm/lib/memset.S | 85 ++++++++++++++++++++++++++------------------------- + 1 file changed, 44 insertions(+), 41 deletions(-) + +diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S +index 650d592..d912e73 100644 +--- a/arch/arm/lib/memset.S ++++ b/arch/arm/lib/memset.S +@@ -19,9 +19,9 @@ + 1: subs r2, r2, #4 @ 1 do we have enough + blt 5f @ 1 bytes to align with? + cmp r3, #2 @ 1 +- strltb r1, [r0], #1 @ 1 +- strleb r1, [r0], #1 @ 1 +- strb r1, [r0], #1 @ 1 ++ strltb r1, [ip], #1 @ 1 ++ strleb r1, [ip], #1 @ 1 ++ strb r1, [ip], #1 @ 1 + add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) + /* + * The pointer is now aligned and the length is adjusted. Try doing the +@@ -29,10 +29,14 @@ + */ + + ENTRY(memset) +- ands r3, r0, #3 @ 1 unaligned? ++/* ++ * Preserve the contents of r0 for the return value. ++ */ ++ mov ip, r0 ++ ands r3, ip, #3 @ 1 unaligned? + bne 1b @ 1 + /* +- * we know that the pointer in r0 is aligned to a word boundary. ++ * we know that the pointer in ip is aligned to a word boundary. + */ + orr r1, r1, r1, lsl #8 + orr r1, r1, r1, lsl #16 +@@ -43,29 +47,28 @@ ENTRY(memset) + #if ! CALGN(1)+0 + + /* +- * We need an extra register for this loop - save the return address and +- * use the LR ++ * We need 2 extra registers for this loop - use r8 and the LR + */ +- str lr, [sp, #-4]! +- mov ip, r1 ++ stmfd sp!, {r8, lr} ++ mov r8, r1 + mov lr, r1 + + 2: subs r2, r2, #64 +- stmgeia r0!, {r1, r3, ip, lr} @ 64 bytes at a time. +- stmgeia r0!, {r1, r3, ip, lr} +- stmgeia r0!, {r1, r3, ip, lr} +- stmgeia r0!, {r1, r3, ip, lr} ++ stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time. ++ stmgeia ip!, {r1, r3, r8, lr} ++ stmgeia ip!, {r1, r3, r8, lr} ++ stmgeia ip!, {r1, r3, r8, lr} + bgt 2b +- ldmeqfd sp!, {pc} @ Now <64 bytes to go. ++ ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. + /* + * No need to correct the count; we're only testing bits from now on + */ + tst r2, #32 +- stmneia r0!, {r1, r3, ip, lr} +- stmneia r0!, {r1, r3, ip, lr} ++ stmneia ip!, {r1, r3, r8, lr} ++ stmneia ip!, {r1, r3, r8, lr} + tst r2, #16 +- stmneia r0!, {r1, r3, ip, lr} +- ldr lr, [sp], #4 ++ stmneia ip!, {r1, r3, r8, lr} ++ ldmfd sp!, {r8, lr} + + #else + +@@ -74,54 +77,54 @@ ENTRY(memset) + * whole cache lines at once. + */ + +- stmfd sp!, {r4-r7, lr} ++ stmfd sp!, {r4-r8, lr} + mov r4, r1 + mov r5, r1 + mov r6, r1 + mov r7, r1 +- mov ip, r1 ++ mov r8, r1 + mov lr, r1 + + cmp r2, #96 +- tstgt r0, #31 ++ tstgt ip, #31 + ble 3f + +- and ip, r0, #31 +- rsb ip, ip, #32 +- sub r2, r2, ip +- movs ip, ip, lsl #(32 - 4) +- stmcsia r0!, {r4, r5, r6, r7} +- stmmiia r0!, {r4, r5} +- tst ip, #(1 << 30) +- mov ip, r1 +- strne r1, [r0], #4 ++ and r8, ip, #31 ++ rsb r8, r8, #32 ++ sub r2, r2, r8 ++ movs r8, r8, lsl #(32 - 4) ++ stmcsia ip!, {r4, r5, r6, r7} ++ stmmiia ip!, {r4, r5} ++ tst r8, #(1 << 30) ++ mov r8, r1 ++ strne r1, [ip], #4 + + 3: subs r2, r2, #64 +- stmgeia r0!, {r1, r3-r7, ip, lr} +- stmgeia r0!, {r1, r3-r7, ip, lr} ++ stmgeia ip!, {r1, r3-r8, lr} ++ stmgeia ip!, {r1, r3-r8, lr} + bgt 3b +- ldmeqfd sp!, {r4-r7, pc} ++ ldmeqfd sp!, {r4-r8, pc} + + tst r2, #32 +- stmneia r0!, {r1, r3-r7, ip, lr} ++ stmneia ip!, {r1, r3-r8, lr} + tst r2, #16 +- stmneia r0!, {r4-r7} +- ldmfd sp!, {r4-r7, lr} ++ stmneia ip!, {r4-r7} ++ ldmfd sp!, {r4-r8, lr} + + #endif + + 4: tst r2, #8 +- stmneia r0!, {r1, r3} ++ stmneia ip!, {r1, r3} + tst r2, #4 +- strne r1, [r0], #4 ++ strne r1, [ip], #4 + /* + * When we get here, we've got less than 4 bytes to zero. We + * may have an unaligned pointer as well. + */ + 5: tst r2, #2 +- strneb r1, [r0], #1 +- strneb r1, [r0], #1 ++ strneb r1, [ip], #1 ++ strneb r1, [ip], #1 + tst r2, #1 +- strneb r1, [r0], #1 ++ strneb r1, [ip], #1 + mov pc, lr + ENDPROC(memset) diff --git a/patches/linux-3.6.11/0236-USB-add-OWL-CM-160-support-to-cp210x-driver.patch b/patches/linux-3.6.11/0236-USB-add-OWL-CM-160-support-to-cp210x-driver.patch new file mode 100644 index 0000000..f8a4fce --- /dev/null +++ b/patches/linux-3.6.11/0236-USB-add-OWL-CM-160-support-to-cp210x-driver.patch @@ -0,0 +1,25 @@ +From: Luis Llorente Campo <luisllorente@luisllorente.com> +Date: Thu, 31 Jan 2013 13:37:05 +0100 +Subject: [PATCH] USB: add OWL CM-160 support to cp210x driver + +This adds support for the OWL CM-160 electricity monitor to the cp210x +driver. + +Signed-off-by: Luis Llorente <luisllorente@luisllorente.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +--- + drivers/usb/serial/cp210x.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c +index 5ad932d..5599a45 100644 +--- a/drivers/usb/serial/cp210x.c ++++ b/drivers/usb/serial/cp210x.c +@@ -67,6 +67,7 @@ static const struct usb_device_id id_table[] = { + { USB_DEVICE(0x0FCF, 0x1003) }, /* Dynastream ANT development board */ + { USB_DEVICE(0x0FCF, 0x1004) }, /* Dynastream ANT2USB */ + { USB_DEVICE(0x0FCF, 0x1006) }, /* Dynastream ANT development board */ ++ { USB_DEVICE(0x0FDE, 0xCA05) }, /* OWL Wireless Electricity Monitor CM-160 */ + { USB_DEVICE(0x10A6, 0xAA26) }, /* Knock-off DCU-11 cable */ + { USB_DEVICE(0x10AB, 0x10C5) }, /* Siemens MC60 Cable */ + { USB_DEVICE(0x10B5, 0xAC70) }, /* Nokia CA-42 USB */ diff --git a/patches/linux-3.6.11/0237-Add-device-ID-330d.patch b/patches/linux-3.6.11/0237-Add-device-ID-330d.patch new file mode 100644 index 0000000..cb879f8 --- /dev/null +++ b/patches/linux-3.6.11/0237-Add-device-ID-330d.patch @@ -0,0 +1,34 @@ +From: Jo Are By <grimjoey@gmail.com> +Date: Sun, 17 Mar 2013 17:45:41 +0100 +Subject: [PATCH] Add device ID (330d) + +--- + drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c | 2 ++ + drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c b/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c +index 47be445..e0db1ee 100755 +--- a/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c ++++ b/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c +@@ -3783,6 +3783,8 @@ _ReadIDs( + pHalData->CustomerID = RT_CID_DLINK; + else if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x330a)) + pHalData->CustomerID = RT_CID_DLINK; ++ else if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x330d)) ++ pHalData->CustomerID = RT_CID_DLINK; + break; + case EEPROM_CID_WHQL: + /* +diff --git a/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c b/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c +index 942ea08..2e54e74 100755 +--- a/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c ++++ b/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c +@@ -138,6 +138,7 @@ static struct usb_device_id rtw_usb_id_tbl[] ={ + {USB_DEVICE(0x2001, 0x3307)},//D-Link - Cameo + {USB_DEVICE(0x2001, 0x330A)},//D-Link - Alpha + {USB_DEVICE(0x2001, 0x3309)},//D-Link - Alpha ++ {USB_DEVICE(0x2001, 0x330D)},//D-Link - Alpha(?) + {USB_DEVICE(0x0586, 0x341F)},//Zyxel - Abocom + {USB_DEVICE(0x7392, 0x7822)},//Edimax - Edimax + {USB_DEVICE(0x2019, 0xAB2B)},//Planex - Abocom diff --git a/patches/linux-3.6.11/0238-dwc_otg-implement-tasklet-for-returning-URBs-to-usbc.patch b/patches/linux-3.6.11/0238-dwc_otg-implement-tasklet-for-returning-URBs-to-usbc.patch new file mode 100644 index 0000000..f31402c --- /dev/null +++ b/patches/linux-3.6.11/0238-dwc_otg-implement-tasklet-for-returning-URBs-to-usbc.patch @@ -0,0 +1,240 @@ +From: P33M <P33M@github.com> +Date: Thu, 21 Mar 2013 19:36:17 +0000 +Subject: [PATCH] dwc_otg: implement tasklet for returning URBs to usbcore hcd + layer + +The dwc_otg driver interrupt handler for transfer completion will spend +a very long time with interrupts disabled when a URB is completed - +this is because usb_hcd_giveback_urb is called from within the handler +which for a USB device driver with complicated processing (e.g. webcam) +will take an exorbitant amount of time to complete. This results in +missed completion interrupts for other USB packets which lead to them +being dropped due to microframe overruns. + +This patch splits returning the URB to the usb hcd layer into a +high-priority tasklet. This will have most benefit for isochronous IN +transfers but will also have incidental benefit where multiple periodic +devices are active at once. +--- + .../usb/host/dwc_common_port/dwc_common_linux.c | 5 ++++ + drivers/usb/host/dwc_common_port/dwc_list.h | 14 ++++----- + drivers/usb/host/dwc_common_port/dwc_os.h | 2 ++ + drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 34 +++++++++++++++++++++- + drivers/usb/host/dwc_otg/dwc_otg_hcd.h | 10 +++++++ + drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 25 ++++++++++------ + 6 files changed, 73 insertions(+), 17 deletions(-) + +diff --git a/drivers/usb/host/dwc_common_port/dwc_common_linux.c b/drivers/usb/host/dwc_common_port/dwc_common_linux.c +index f00a9ff..6814e51 100644 +--- a/drivers/usb/host/dwc_common_port/dwc_common_linux.c ++++ b/drivers/usb/host/dwc_common_port/dwc_common_linux.c +@@ -991,6 +991,11 @@ void DWC_TASK_SCHEDULE(dwc_tasklet_t *task) + tasklet_schedule(&task->t); + } + ++void DWC_TASK_HI_SCHEDULE(dwc_tasklet_t *task) ++{ ++ tasklet_hi_schedule(&task->t); ++} ++ + + /* workqueues + - run in process context (can sleep) +diff --git a/drivers/usb/host/dwc_common_port/dwc_list.h b/drivers/usb/host/dwc_common_port/dwc_list.h +index 89cc325..4ce560d 100644 +--- a/drivers/usb/host/dwc_common_port/dwc_list.h ++++ b/drivers/usb/host/dwc_common_port/dwc_list.h +@@ -384,17 +384,17 @@ struct { \ + #define DWC_TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) + #define DWC_TAILQ_EMPTY(head) \ +- (TAILQ_FIRST(head) == TAILQ_END(head)) ++ (DWC_TAILQ_FIRST(head) == DWC_TAILQ_END(head)) + + #define DWC_TAILQ_FOREACH(var, head, field) \ +- for((var) = TAILQ_FIRST(head); \ +- (var) != TAILQ_END(head); \ +- (var) = TAILQ_NEXT(var, field)) ++ for ((var) = DWC_TAILQ_FIRST(head); \ ++ (var) != DWC_TAILQ_END(head); \ ++ (var) = DWC_TAILQ_NEXT(var, field)) + + #define DWC_TAILQ_FOREACH_REVERSE(var, head, headname, field) \ +- for((var) = TAILQ_LAST(head, headname); \ +- (var) != TAILQ_END(head); \ +- (var) = TAILQ_PREV(var, headname, field)) ++ for ((var) = DWC_TAILQ_LAST(head, headname); \ ++ (var) != DWC_TAILQ_END(head); \ ++ (var) = DWC_TAILQ_PREV(var, headname, field)) + + /* + * Tail queue functions. +diff --git a/drivers/usb/host/dwc_common_port/dwc_os.h b/drivers/usb/host/dwc_common_port/dwc_os.h +index 308ddd5..8eb24ea 100644 +--- a/drivers/usb/host/dwc_common_port/dwc_os.h ++++ b/drivers/usb/host/dwc_common_port/dwc_os.h +@@ -981,6 +981,8 @@ extern void DWC_TASK_FREE(dwc_tasklet_t *task); + extern void DWC_TASK_SCHEDULE(dwc_tasklet_t *task); + #define dwc_task_schedule DWC_TASK_SCHEDULE + ++extern void DWC_TASK_HI_SCHEDULE(dwc_tasklet_t *task); ++#define dwc_task_hi_schedule DWC_TASK_HI_SCHEDULE + + /** @name Timer + * +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +index fcec97f..91eefec 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +@@ -40,6 +40,9 @@ + * header file. + */ + ++#include <linux/usb.h> ++#include <linux/usb/hcd.h> ++ + #include "dwc_otg_hcd.h" + #include "dwc_otg_regs.h" + +@@ -694,6 +697,31 @@ static void reset_tasklet_func(void *data) + dwc_otg_hcd->flags.b.port_reset_change = 1; + } + ++static void completion_tasklet_func(void *ptr) ++{ ++ dwc_otg_hcd_t *hcd = (dwc_otg_hcd_t *) ptr; ++ struct urb *urb; ++ urb_tq_entry_t *item; ++ dwc_irqflags_t flags; ++ ++ DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); ++ while (!DWC_TAILQ_EMPTY(&hcd->completed_urb_list)) { ++ item = DWC_TAILQ_FIRST(&hcd->completed_urb_list); ++ urb = item->urb; ++ DWC_TAILQ_REMOVE(&hcd->completed_urb_list, item, ++ urb_tq_entries); ++ DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); ++ DWC_FREE(item); ++ ++ usb_hcd_unlink_urb_from_ep(hcd->priv, urb); ++ usb_hcd_giveback_urb(hcd->priv, urb, urb->status); ++ ++ DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); ++ } ++ DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); ++ return; ++} ++ + static void qh_list_free(dwc_otg_hcd_t * hcd, dwc_list_link_t * qh_list) + { + dwc_list_link_t *item; +@@ -833,6 +861,7 @@ static void dwc_otg_hcd_free(dwc_otg_hcd_t * dwc_otg_hcd) + + DWC_TIMER_FREE(dwc_otg_hcd->conn_timer); + DWC_TASK_FREE(dwc_otg_hcd->reset_tasklet); ++ DWC_TASK_FREE(dwc_otg_hcd->completion_tasklet); + + #ifdef DWC_DEV_SRPCAP + if (dwc_otg_hcd->core_if->power_down == 2 && +@@ -877,7 +906,7 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if) + DWC_LIST_INIT(&hcd->periodic_sched_ready); + DWC_LIST_INIT(&hcd->periodic_sched_assigned); + DWC_LIST_INIT(&hcd->periodic_sched_queued); +- ++ DWC_TAILQ_INIT(&hcd->completed_urb_list); + /* + * Create a host channel descriptor for each host channel implemented + * in the controller. Initialize the channel descriptor array. +@@ -915,6 +944,9 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if) + + /* Initialize reset tasklet. */ + hcd->reset_tasklet = DWC_TASK_ALLOC("reset_tasklet", reset_tasklet_func, hcd); ++ ++ hcd->completion_tasklet = DWC_TASK_ALLOC("completion_tasklet", ++ completion_tasklet_func, hcd); + #ifdef DWC_DEV_SRPCAP + if (hcd->core_if->power_down == 2) { + /* Initialize Power on timer for Host power up in case hibernation */ +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h +index 45e44ea..0493dbf 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h +@@ -374,6 +374,13 @@ typedef struct dwc_otg_qh { + + DWC_CIRCLEQ_HEAD(hc_list, dwc_hc); + ++typedef struct urb_tq_entry { ++ struct urb *urb; ++ DWC_TAILQ_ENTRY(urb_tq_entry) urb_tq_entries; ++} urb_tq_entry_t; ++ ++DWC_TAILQ_HEAD(urb_list, urb_tq_entry); ++ + /** + * This structure holds the state of the HCD, including the non-periodic and + * periodic schedules. +@@ -551,6 +558,9 @@ struct dwc_otg_hcd { + /* Tasket to do a reset */ + dwc_tasklet_t *reset_tasklet; + ++ dwc_tasklet_t *completion_tasklet; ++ struct urb_list completed_urb_list; ++ + /* */ + dwc_spinlock_t *lock; + dwc_spinlock_t *channel_lock; +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c +index f91c4b1..0137ce3 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c +@@ -271,7 +271,7 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle, + dwc_otg_hcd_urb_t * dwc_otg_urb, int32_t status) + { + struct urb *urb = (struct urb *)urb_handle; +- ++ urb_tq_entry_t *new_entry; + if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) { + DWC_PRINTF("%s: urb %p, device %d, ep %d %s, status=%d\n", + __func__, urb, usb_pipedevice(urb->pipe), +@@ -285,7 +285,7 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle, + } + } + } +- ++ new_entry = DWC_ALLOC_ATOMIC(sizeof(urb_tq_entry_t)); + urb->actual_length = dwc_otg_hcd_urb_get_actual_length(dwc_otg_urb); + /* Convert status value. */ + switch (status) { +@@ -348,18 +348,25 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle, + } + + DWC_FREE(dwc_otg_urb); +- ++ if (!new_entry) { ++ DWC_ERROR("dwc_otg_hcd: complete: cannot allocate URB TQ entry\n"); ++ urb->status = -EPROTO; ++ /* don't schedule the tasklet - ++ * directly return the packet here with error. */ + #if USB_URB_EP_LINKING +- usb_hcd_unlink_urb_from_ep(dwc_otg_hcd_to_hcd(hcd), urb); ++ usb_hcd_unlink_urb_from_ep(dwc_otg_hcd_to_hcd(hcd), urb); + #endif +- DWC_SPINUNLOCK(hcd->lock); + #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) +- usb_hcd_giveback_urb(dwc_otg_hcd_to_hcd(hcd), urb); ++ usb_hcd_giveback_urb(dwc_otg_hcd_to_hcd(hcd), urb); + #else +- usb_hcd_giveback_urb(dwc_otg_hcd_to_hcd(hcd), urb, status); ++ usb_hcd_giveback_urb(dwc_otg_hcd_to_hcd(hcd), urb, urb->status); + #endif +- DWC_SPINLOCK(hcd->lock); +- ++ } else { ++ new_entry->urb = urb; ++ DWC_TAILQ_INSERT_TAIL(&hcd->completed_urb_list, new_entry, ++ urb_tq_entries); ++ DWC_TASK_HI_SCHEDULE(hcd->completion_tasklet); ++ } + return 0; + } + diff --git a/patches/linux-3.6.11/0239-Added-Device-IDs-for-August-DVB-T-205.patch b/patches/linux-3.6.11/0239-Added-Device-IDs-for-August-DVB-T-205.patch new file mode 100644 index 0000000..b8a2bfa --- /dev/null +++ b/patches/linux-3.6.11/0239-Added-Device-IDs-for-August-DVB-T-205.patch @@ -0,0 +1,64 @@ +From: Franz Abzieher <franz@abzieher.net> +Date: Sun, 24 Mar 2013 11:44:37 +0100 +Subject: [PATCH] Added Device IDs for August DVB-T 205 + +--- + drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 1 + + drivers/media/dvb/dvb-usb/rtl28xxu.c | 13 ++++++++++++- + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h +index 26c4481..5c7262d 100644 +--- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h ++++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h +@@ -358,4 +358,5 @@ + #define USB_PID_TECHNISAT_USB2_HDCI_V2 0x0002 + #define USB_PID_TECHNISAT_AIRSTAR_TELESTICK_2 0x0004 + #define USB_PID_TECHNISAT_USB2_DVB_S2 0x0500 ++#define USB_PID_AUGUST_DVBT205 0xa803 + #endif +diff --git a/drivers/media/dvb/dvb-usb/rtl28xxu.c b/drivers/media/dvb/dvb-usb/rtl28xxu.c +index 6bd0bd7..4f79522 100644 +--- a/drivers/media/dvb/dvb-usb/rtl28xxu.c ++++ b/drivers/media/dvb/dvb-usb/rtl28xxu.c +@@ -1157,6 +1157,7 @@ enum rtl28xxu_usb_table_entry { + RTL2832U_0CCD_00A9, + RTL2832U_1F4D_B803, + RTL2832U_0CCD_00B3, ++ RTL2838U_1F4D_A803, + }; + + static struct usb_device_id rtl28xxu_table[] = { +@@ -1175,6 +1176,10 @@ static struct usb_device_id rtl28xxu_table[] = { + USB_DEVICE(USB_VID_GTEK, USB_PID_DELOCK_USB2_DVBT)}, + [RTL2832U_0CCD_00B3] = { + USB_DEVICE(USB_VID_TERRATEC, USB_PID_NOXON_DAB_STICK)}, ++ ++ /* RTL2838U */ ++ [RTL2838U_1F4D_A803] { ++ USB_DEVICE(USB_VID_GTEK, USB_PID_AUGUST_DVBT205)}, + {} /* terminating entry */ + }; + +@@ -1288,7 +1293,7 @@ static struct dvb_usb_device_properties rtl28xxu_properties[] = { + + .i2c_algo = &rtl28xxu_i2c_algo, + +- .num_device_descs = 3, ++ .num_device_descs = 4, + .devices = { + { + .name = "Terratec Cinergy T Stick Black", +@@ -1308,6 +1313,12 @@ static struct dvb_usb_device_properties rtl28xxu_properties[] = { + &rtl28xxu_table[RTL2832U_0CCD_00B3], + }, + }, ++ { ++ .name = "AUGUST DVB-T205", ++ .warm_ids = { ++ &rtl28xxu_table[RTL2838U_1F4D_A803], ++ }, ++ }, + } + }, + diff --git a/patches/linux-3.6.11/0240-Revert-ARM-7668-1-fix-memset-related-crashes-caused-.patch b/patches/linux-3.6.11/0240-Revert-ARM-7668-1-fix-memset-related-crashes-caused-.patch new file mode 100644 index 0000000..6f31dfa --- /dev/null +++ b/patches/linux-3.6.11/0240-Revert-ARM-7668-1-fix-memset-related-crashes-caused-.patch @@ -0,0 +1,166 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Fri, 29 Mar 2013 19:22:41 +0000 +Subject: [PATCH] Revert "ARM: 7668/1: fix memset-related crashes caused by + recent GCC (4.7.2) optimizations" + +This reverts commit 690c641b4aeefa1df72ae783613afcb6b8ae7347. + +There have been various reports of FAT partition corruption following this commit. Reverting for now to see if things improve. +--- + arch/arm/lib/memset.S | 85 +++++++++++++++++++++++++-------------------------- + 1 file changed, 41 insertions(+), 44 deletions(-) + +diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S +index d912e73..650d592 100644 +--- a/arch/arm/lib/memset.S ++++ b/arch/arm/lib/memset.S +@@ -19,9 +19,9 @@ + 1: subs r2, r2, #4 @ 1 do we have enough + blt 5f @ 1 bytes to align with? + cmp r3, #2 @ 1 +- strltb r1, [ip], #1 @ 1 +- strleb r1, [ip], #1 @ 1 +- strb r1, [ip], #1 @ 1 ++ strltb r1, [r0], #1 @ 1 ++ strleb r1, [r0], #1 @ 1 ++ strb r1, [r0], #1 @ 1 + add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) + /* + * The pointer is now aligned and the length is adjusted. Try doing the +@@ -29,14 +29,10 @@ + */ + + ENTRY(memset) +-/* +- * Preserve the contents of r0 for the return value. +- */ +- mov ip, r0 +- ands r3, ip, #3 @ 1 unaligned? ++ ands r3, r0, #3 @ 1 unaligned? + bne 1b @ 1 + /* +- * we know that the pointer in ip is aligned to a word boundary. ++ * we know that the pointer in r0 is aligned to a word boundary. + */ + orr r1, r1, r1, lsl #8 + orr r1, r1, r1, lsl #16 +@@ -47,28 +43,29 @@ ENTRY(memset) + #if ! CALGN(1)+0 + + /* +- * We need 2 extra registers for this loop - use r8 and the LR ++ * We need an extra register for this loop - save the return address and ++ * use the LR + */ +- stmfd sp!, {r8, lr} +- mov r8, r1 ++ str lr, [sp, #-4]! ++ mov ip, r1 + mov lr, r1 + + 2: subs r2, r2, #64 +- stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time. +- stmgeia ip!, {r1, r3, r8, lr} +- stmgeia ip!, {r1, r3, r8, lr} +- stmgeia ip!, {r1, r3, r8, lr} ++ stmgeia r0!, {r1, r3, ip, lr} @ 64 bytes at a time. ++ stmgeia r0!, {r1, r3, ip, lr} ++ stmgeia r0!, {r1, r3, ip, lr} ++ stmgeia r0!, {r1, r3, ip, lr} + bgt 2b +- ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. ++ ldmeqfd sp!, {pc} @ Now <64 bytes to go. + /* + * No need to correct the count; we're only testing bits from now on + */ + tst r2, #32 +- stmneia ip!, {r1, r3, r8, lr} +- stmneia ip!, {r1, r3, r8, lr} ++ stmneia r0!, {r1, r3, ip, lr} ++ stmneia r0!, {r1, r3, ip, lr} + tst r2, #16 +- stmneia ip!, {r1, r3, r8, lr} +- ldmfd sp!, {r8, lr} ++ stmneia r0!, {r1, r3, ip, lr} ++ ldr lr, [sp], #4 + + #else + +@@ -77,54 +74,54 @@ ENTRY(memset) + * whole cache lines at once. + */ + +- stmfd sp!, {r4-r8, lr} ++ stmfd sp!, {r4-r7, lr} + mov r4, r1 + mov r5, r1 + mov r6, r1 + mov r7, r1 +- mov r8, r1 ++ mov ip, r1 + mov lr, r1 + + cmp r2, #96 +- tstgt ip, #31 ++ tstgt r0, #31 + ble 3f + +- and r8, ip, #31 +- rsb r8, r8, #32 +- sub r2, r2, r8 +- movs r8, r8, lsl #(32 - 4) +- stmcsia ip!, {r4, r5, r6, r7} +- stmmiia ip!, {r4, r5} +- tst r8, #(1 << 30) +- mov r8, r1 +- strne r1, [ip], #4 ++ and ip, r0, #31 ++ rsb ip, ip, #32 ++ sub r2, r2, ip ++ movs ip, ip, lsl #(32 - 4) ++ stmcsia r0!, {r4, r5, r6, r7} ++ stmmiia r0!, {r4, r5} ++ tst ip, #(1 << 30) ++ mov ip, r1 ++ strne r1, [r0], #4 + + 3: subs r2, r2, #64 +- stmgeia ip!, {r1, r3-r8, lr} +- stmgeia ip!, {r1, r3-r8, lr} ++ stmgeia r0!, {r1, r3-r7, ip, lr} ++ stmgeia r0!, {r1, r3-r7, ip, lr} + bgt 3b +- ldmeqfd sp!, {r4-r8, pc} ++ ldmeqfd sp!, {r4-r7, pc} + + tst r2, #32 +- stmneia ip!, {r1, r3-r8, lr} ++ stmneia r0!, {r1, r3-r7, ip, lr} + tst r2, #16 +- stmneia ip!, {r4-r7} +- ldmfd sp!, {r4-r8, lr} ++ stmneia r0!, {r4-r7} ++ ldmfd sp!, {r4-r7, lr} + + #endif + + 4: tst r2, #8 +- stmneia ip!, {r1, r3} ++ stmneia r0!, {r1, r3} + tst r2, #4 +- strne r1, [ip], #4 ++ strne r1, [r0], #4 + /* + * When we get here, we've got less than 4 bytes to zero. We + * may have an unaligned pointer as well. + */ + 5: tst r2, #2 +- strneb r1, [ip], #1 +- strneb r1, [ip], #1 ++ strneb r1, [r0], #1 ++ strneb r1, [r0], #1 + tst r2, #1 +- strneb r1, [ip], #1 ++ strneb r1, [r0], #1 + mov pc, lr + ENDPROC(memset) diff --git a/patches/linux-3.6.11/0241-Move-definition-of-fiq_fix_enable-to-bcm2708.c-to-al.patch b/patches/linux-3.6.11/0241-Move-definition-of-fiq_fix_enable-to-bcm2708.c-to-al.patch new file mode 100644 index 0000000..64c553c --- /dev/null +++ b/patches/linux-3.6.11/0241-Move-definition-of-fiq_fix_enable-to-bcm2708.c-to-al.patch @@ -0,0 +1,38 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Tue, 2 Apr 2013 13:53:40 +0100 +Subject: [PATCH] Move definition of fiq_fix_enable to bcm2708.c to allow + building without dwc_otg + +--- + arch/arm/mach-bcm2708/bcm2708.c | 2 +- + drivers/usb/host/dwc_otg/dwc_otg_driver.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 7294aa0..3f9d32d 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -366,7 +366,7 @@ static struct resource bcm2708_usb_resources[] = { + }, + }; + +-extern bool fiq_fix_enable; ++bool fiq_fix_enable = true; + + static struct resource bcm2708_usb_resources_no_fiq_fix[] = { + [0] = { +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.c b/drivers/usb/host/dwc_otg/dwc_otg_driver.c +index 25110ca..cea8fcb 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_driver.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c +@@ -240,8 +240,8 @@ static struct dwc_otg_driver_module_params dwc_otg_module_params = { + .adp_enable = -1, + }; + +-//Global variable to switch the fiq fix on or off +-bool fiq_fix_enable = true; ++//Global variable to switch the fiq fix on or off (declared in bcm2708.c) ++extern bool fiq_fix_enable; + + //Global variable to switch the nak holdoff on or off + bool nak_holdoff_enable = true; diff --git a/patches/linux-3.6.11/0242-Revert-back-to-smaller-alsa-buffer.patch b/patches/linux-3.6.11/0242-Revert-back-to-smaller-alsa-buffer.patch new file mode 100644 index 0000000..fcfcc8c --- /dev/null +++ b/patches/linux-3.6.11/0242-Revert-back-to-smaller-alsa-buffer.patch @@ -0,0 +1,28 @@ +From: popcornmix <popcornmix@gmail.com> +Date: Tue, 2 Apr 2013 22:32:30 +0100 +Subject: [PATCH] Revert back to smaller alsa buffer + +--- + sound/arm/bcm2835-pcm.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c +index c5684ba..8d182f0 100755 +--- a/sound/arm/bcm2835-pcm.c ++++ b/sound/arm/bcm2835-pcm.c +@@ -26,11 +26,11 @@ static struct snd_pcm_hardware snd_bcm2835_playback_hw = { + .rate_max = 48000, + .channels_min = 1, + .channels_max = 2, +- .buffer_bytes_max = 32 * 1024, /* Needs to be less than audioplay buffer size */ +- .period_bytes_min = 4 * 1024, +- .period_bytes_max = 32 * 1024, ++ .buffer_bytes_max = 128 * 1024, ++ .period_bytes_min = 1 * 1024, ++ .period_bytes_max = 128 * 1024, + .periods_min = 1, +- .periods_max = 32, ++ .periods_max = 128, + }; + + static void snd_bcm2835_playback_free(struct snd_pcm_runtime *runtime) diff --git a/patches/linux-3.6.10/0201-Release-raspberrypi-20121217.patch b/patches/linux-3.6.11/0301-Release-raspberrypi-20130406.patch index 9050264..854680c 100644 --- a/patches/linux-3.6.10/0201-Release-raspberrypi-20121217.patch +++ b/patches/linux-3.6.11/0301-Release-raspberrypi-20130406.patch @@ -1,6 +1,6 @@ From: Michael Olbrich <m.olbrich@pengutronix.de> -Date: Mon, 17 Dec 2012 22:54:15 +0100 -Subject: [PATCH] Release raspberrypi/20121217 +Date: Sat, 6 Apr 2013 15:00:46 +0200 +Subject: [PATCH] Release raspberrypi/20130406 Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> --- @@ -8,15 +8,15 @@ Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile -index 686b83c..0240f39 100644 +index 50dc4d1..e90f629 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ VERSION = 3 PATCHLEVEL = 6 - SUBLEVEL = 10 + SUBLEVEL = 11 -EXTRAVERSION = -+EXTRAVERSION =-20121217 ++EXTRAVERSION =-20130406 NAME = Terrified Chipmunk # *DOCUMENTATION* diff --git a/patches/linux-3.6.10/series b/patches/linux-3.6.11/series index bc00e72..b280ae9 100644 --- a/patches/linux-3.6.10/series +++ b/patches/linux-3.6.11/series @@ -1,9 +1,9 @@ -# umpf-base: v3.6.10 +# umpf-base: v3.6.11 # umpf-name: raspberrypi -# umpf-version: raspberrypi/20121217 +# umpf-version: raspberrypi/20130406 # umpf-topic: rpi-3.6.y -# umpf-hashinfo: d21d26ebd773ab87888351220739b43a9733233a -# umpf-topic-range: a63a7cf3fc2ac1aff657f58ea446c34f3252209a..580ab44564aa8b60d86527d9615ebd32e84e366d +# umpf-hashinfo: 4642dffd091481f055d52aba9e0f785a80b6e1cb +# umpf-topic-range: b2824f4e0990716407b0c0e7acee75bb6353febf..3116edf19a8e9a170231d81d5c2813857e6aa280 0001-Add-dwc_otg-driver.patch 0002-Main-bcm2708-linux-port.patch 0003-bcm2708-watchdog-driver.patch @@ -198,7 +198,55 @@ 0192-net-use-bigger-pages-in-__netdev_alloc_frag.patch 0193-Bluetooth-Increase-HCI-command-tx-timeout.patch 0194-Dual-licence-Broadcom-code-under-BSD-and-GPL.patch -# umpf-release: raspberrypi/20121217 -# umpf-topic-range: 580ab44564aa8b60d86527d9615ebd32e84e366d..317ff0e27dc59890f4609c08321b1361bee5eb49 -0201-Release-raspberrypi-20121217.patch +0195-Update-to-Simon-s-latest-dmaer-module.patch +0196-Add-retry-for-vchiq-init.-Needed-in-some-cases-when-.patch +0197-Silence-bootup-errors-from-timer-and-gpio.patch +0198-Remove-RTC_HCTOSYS-as-it-produces-a-kernel-boot-erro.patch +0199-Make-CMA-kernel-messages-quieter-when-not-fatal.patch +0200-Add-missing-USB_NET-modules.patch +0201-Add-mutex-around-bcm_mailbox_property-function.patch +0202-Enable-ZRAM-and-RFKILL-config-options.patch +0203-dwc_otg-fix-bug-in-dwc_otg_hcd.c-resulting-in-silent.patch +0204-Add-config-options-for-netfilter-log-and-more-dvb-mo.patch +0205-Add-more-dvb-modules.patch +0206-Return-error-value-from-bcm2708_setup_state.-Thanks-.patch +0207-spi-spi-bcm2708-respect-per-transfer-SPI-clock-speed.patch +0208-spi-bcm2708-add-9-bit-support-using-LoSSI-mode.patch +0209-Add-hwrng-hardware-random-number-generator-driver.patch +0210-Add-HW_RANDOM-BATMAN_ADV-and-CONFIG_NET_IPGRE.patch +0211-Add-raid0-module.patch +0212-Update-vchiq-to-version-supporting-querying-peer-ver.patch +0213-Use-control-messages-for-audio-data-to-fix-scratch-h.patch +0214-Default-force_bulk-to-false.patch +0215-Add-missing-newlines-to-log-messages.patch +0216-Changed-wording-on-logging.-Previously-we-received-e.patch +0217-Fix-for-low-bogomips-value-reported.patch +0218-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch +0219-dwc_otg-Fix-incorrect-URB-allocation-error-handling.patch +0220-Added-inverted-transmitter-support.patch +0221-fbcon-clear-the-logo-bitmap-from-the-margin-area.patch +0222-Add-config-request-CONFIG_IP_SCTP.patch +0223-Add-retry-on-error-and-tidy-of-temperature-driver.patch +0224-Add-SPEAKUP-and-SPEAKUP_SYNTH_SOFT-kernel-modules.patch +0225-ARM-VFP-fix-emulation-of-second-VFP-instruction.patch +0226-ARM-7492-1-add-strstr-declaration-for-decompressors.patch +0227-dwc_otg-fix-potential-use-after-free-case-in-interru.patch +0228-fix-missing-modulo-for-bit-in-bank-computation-in-bc.patch +0229-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch +0230-USB-option-add-Telekom-Speedstick-LTE-II.patch +0231-Increase-the-minimum-alsa-buffer-size-as-we-get-unde.patch +0232-USB-usb-storage-unusual_devs-update-for-Super-TOP-SA.patch +0233-Add-bitbanging-pullups-use-them-for-w1-gpio.patch +0234-Run-Lindent-to-fix-whitespace-fix-braces.patch +0235-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch +0236-USB-add-OWL-CM-160-support-to-cp210x-driver.patch +0237-Add-device-ID-330d.patch +0238-dwc_otg-implement-tasklet-for-returning-URBs-to-usbc.patch +0239-Added-Device-IDs-for-August-DVB-T-205.patch +0240-Revert-ARM-7668-1-fix-memset-related-crashes-caused-.patch +0241-Move-definition-of-fiq_fix_enable-to-bcm2708.c-to-al.patch +0242-Revert-back-to-smaller-alsa-buffer.patch +# umpf-release: raspberrypi/20130406 +# umpf-topic-range: 3116edf19a8e9a170231d81d5c2813857e6aa280..8022b5c8eeb7b854f0fb0001e4021d72cd7234e7 +0301-Release-raspberrypi-20130406.patch # umpf-end diff --git a/platformconfig b/platformconfig index e675951..254e61d 100644 --- a/platformconfig +++ b/platformconfig @@ -97,8 +97,8 @@ PTXCONF_KERNEL=y PTXCONF_KERNEL_MODULES=y PTXCONF_KERNEL_MODULES_INSTALL=y PTXCONF_KERNEL_MODULES_BUILD="modules" -PTXCONF_KERNEL_VERSION="3.6.10" -PTXCONF_KERNEL_MD5="a8c2dcd268d3ca2b81908990abd5d382" +PTXCONF_KERNEL_VERSION="3.6.11" +PTXCONF_KERNEL_MD5="3d602ad7f7984509c3e923a5ae90bc54" PTXCONF_KERNEL_ARCH_STRING="arm" # PTXCONF_KERNEL_IMAGE_BZ is not set PTXCONF_KERNEL_IMAGE_Z=y |