diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2015-06-03 16:53:31 -0500 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2015-06-03 16:54:21 -0500 |
commit | e38204a8348094cf703ad70680d4b50b865759e0 (patch) | |
tree | 1ebb31885a3d30075c030c8c42ce3c678f96689f /target/arm/bcm28xx | |
parent | f81fe6f2d52cc051f11a9be53e937b242390a2d1 (diff) |
update kernel to 3.18.14, refresh realtime and rpi patches
Diffstat (limited to 'target/arm/bcm28xx')
-rw-r--r-- | target/arm/bcm28xx/patches/3.18.14/0000-raspberry-pi.patch (renamed from target/arm/bcm28xx/patches/3.18.12/0000-raspberry-pi.patch) | 6290 | ||||
-rw-r--r-- | target/arm/bcm28xx/patches/3.18.14/0001-i2s-allow-to-enable-ALSA-MMAP.patch (renamed from target/arm/bcm28xx/patches/3.18.12/0001-i2s-allow-to-enable-ALSA-MMAP.patch) | 0 |
2 files changed, 4688 insertions, 1602 deletions
diff --git a/target/arm/bcm28xx/patches/3.18.12/0000-raspberry-pi.patch b/target/arm/bcm28xx/patches/3.18.14/0000-raspberry-pi.patch index d9b021fc0..05e671894 100644 --- a/target/arm/bcm28xx/patches/3.18.12/0000-raspberry-pi.patch +++ b/target/arm/bcm28xx/patches/3.18.14/0000-raspberry-pi.patch @@ -1,6 +1,6 @@ -diff -Nur linux-3.18.10/arch/arm/boot/dts/ads7846-overlay.dts linux-rpi/arch/arm/boot/dts/ads7846-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/ads7846-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/ads7846-overlay.dts 2015-03-26 11:46:41.692226515 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/ads7846-overlay.dts linux-rpi/arch/arm/boot/dts/ads7846-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/ads7846-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/ads7846-overlay.dts 2015-05-31 14:46:07.961661006 -0500 @@ -0,0 +1,83 @@ +/* + * Generic Device Tree overlay for the ADS7846 touch controller @@ -85,10 +85,10 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/ads7846-overlay.dts linux-rpi/arch/arm + xohms = <&ads7846>,"ti,x-plate-ohms;0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/dts/bcm2708.dtsi ---- linux-3.18.10/arch/arm/boot/dts/bcm2708.dtsi 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/bcm2708.dtsi 2015-03-26 11:46:41.696226518 +0100 -@@ -0,0 +1,109 @@ +diff -Nur linux-3.18.14/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/dts/bcm2708.dtsi +--- linux-3.18.14/arch/arm/boot/dts/bcm2708.dtsi 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/bcm2708.dtsi 2015-05-31 14:46:07.981661006 -0500 +@@ -0,0 +1,128 @@ +/include/ "skeleton.dtsi" + +/ { @@ -127,6 +127,17 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/d + #interrupt-cells = <2>; + }; + ++ mmc: mmc@7e300000 { ++ compatible = "brcm,bcm2835-mmc"; ++ reg = <0x7e300000 0x100>; ++ interrupts = <2 30>; ++ clocks = <&clk_mmc>; ++ //dmas = <&dma 11>, ++ // <&dma 11>; ++ dma-names = "tx", "rx"; ++ status = "disabled"; ++ }; ++ + i2s: i2s@7e203000 { + compatible = "brcm,bcm2708-i2s"; + reg = <0x7e203000 0x20>, @@ -182,6 +193,14 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/d + #address-cells = <1>; + #size-cells = <0>; + ++ clk_mmc: clock@0 { ++ compatible = "fixed-clock"; ++ reg = <0>; ++ #clock-cells = <0>; ++ clock-output-names = "mmc"; ++ clock-frequency = <250000000>; ++ }; ++ + clk_i2c: i2c { + compatible = "fixed-clock"; + reg = <1>; @@ -198,10 +217,10 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/d + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts ---- linux-3.18.10/arch/arm/boot/dts/bcm2708-rpi-b.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts 2015-03-26 11:46:41.696226518 +0100 -@@ -0,0 +1,107 @@ +diff -Nur linux-3.18.14/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts +--- linux-3.18.14/arch/arm/boot/dts/bcm2708-rpi-b.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts 2015-05-31 14:46:07.981661006 -0500 +@@ -0,0 +1,112 @@ +/dts-v1/; + +/include/ "bcm2708.dtsi" @@ -248,6 +267,11 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/b + }; +}; + ++&mmc { ++ status = "okay"; ++ bus-width = <4>; ++}; ++ +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; @@ -309,10 +333,10 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/b + act_led_trigger = <&act_led>,"linux,default-trigger"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts ---- linux-3.18.10/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 2015-03-26 11:46:41.696226518 +0100 -@@ -0,0 +1,117 @@ +diff -Nur linux-3.18.14/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +--- linux-3.18.14/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 2015-05-31 14:46:07.981661006 -0500 +@@ -0,0 +1,122 @@ +/dts-v1/; + +/include/ "bcm2708.dtsi" @@ -359,6 +383,11 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/ + }; +}; + ++&mmc { ++ status = "okay"; ++ bus-width = <4>; ++}; ++ +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; @@ -430,10 +459,64 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/ + pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2709.dtsi linux-rpi/arch/arm/boot/dts/bcm2709.dtsi ---- linux-3.18.10/arch/arm/boot/dts/bcm2709.dtsi 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/bcm2709.dtsi 2015-03-26 11:46:41.696226518 +0100 -@@ -0,0 +1,160 @@ +diff -Nur linux-3.18.14/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dts +--- linux-3.18.14/arch/arm/boot/dts/bcm2708-rpi-cm.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dts 2015-05-31 14:46:07.981661006 -0500 +@@ -0,0 +1,7 @@ ++/dts-v1/; ++ ++/include/ "bcm2708-rpi-cm.dtsi" ++ ++/ { ++ model = "Raspberry Pi Compute Module"; ++}; +diff -Nur linux-3.18.14/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi +--- linux-3.18.14/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 2015-05-31 14:46:07.981661006 -0500 +@@ -0,0 +1,39 @@ ++/include/ "bcm2708.dtsi" ++ ++/ { ++ aliases { ++ soc = &soc; ++ spi0 = &spi0; ++ i2c0 = &i2c0; ++ i2c1 = &i2c1; ++ i2s = &i2s; ++ gpio = &gpio; ++ intc = &intc; ++ leds = &leds; ++ sound = &sound; ++ }; ++ ++ sound: sound { ++ }; ++}; ++ ++&leds { ++ act_led: act { ++ label = "led0"; ++ linux,default-trigger = "mmc0"; ++ gpios = <&gpio 47 0>; ++ }; ++}; ++ ++&mmc { ++ status = "okay"; ++ bus-width = <4>; ++}; ++ ++/ { ++ __overrides__ { ++ act_led_gpio = <&act_led>,"gpios:4"; ++ act_led_activelow = <&act_led>,"gpios:8"; ++ act_led_trigger = <&act_led>,"linux,default-trigger"; ++ }; ++}; +diff -Nur linux-3.18.14/arch/arm/boot/dts/bcm2709.dtsi linux-rpi/arch/arm/boot/dts/bcm2709.dtsi +--- linux-3.18.14/arch/arm/boot/dts/bcm2709.dtsi 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/bcm2709.dtsi 2015-05-31 14:46:07.981661006 -0500 +@@ -0,0 +1,179 @@ +/include/ "skeleton.dtsi" + +/ { @@ -472,6 +555,17 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2709.dtsi linux-rpi/arch/arm/boot/d + #interrupt-cells = <2>; + }; + ++ mmc: mmc@7e300000 { ++ compatible = "brcm,bcm2835-mmc"; ++ reg = <0x7e300000 0x100>; ++ interrupts = <2 30>; ++ clocks = <&clk_mmc>; ++ //dmas = <&dma 11>, ++ // <&dma 11>; ++ dma-names = "tx", "rx"; ++ status = "disabled"; ++ }; ++ + i2s: i2s@7e203000 { + compatible = "brcm,bcm2708-i2s"; + reg = <0x7e203000 0x20>, @@ -528,6 +622,14 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2709.dtsi linux-rpi/arch/arm/boot/d + #address-cells = <1>; + #size-cells = <0>; + ++ clk_mmc: clock@0 { ++ compatible = "fixed-clock"; ++ reg = <0>; ++ #clock-cells = <0>; ++ clock-output-names = "mmc"; ++ clock-frequency = <250000000>; ++ }; ++ + clk_i2c: i2c { + compatible = "fixed-clock"; + reg = <1>; @@ -594,10 +696,10 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2709.dtsi linux-rpi/arch/arm/boot/d + <&v7_cpu3>, "clock-frequency:0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-rpi/arch/arm/boot/dts/bcm2709-rpi-2-b.dts ---- linux-3.18.10/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 2015-03-26 11:46:41.696226518 +0100 -@@ -0,0 +1,117 @@ +diff -Nur linux-3.18.14/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-rpi/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +--- linux-3.18.14/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 2015-05-31 14:46:07.981661006 -0500 +@@ -0,0 +1,122 @@ +/dts-v1/; + +/include/ "bcm2709.dtsi" @@ -644,6 +746,11 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-rpi/arch/arm + }; +}; + ++&mmc { ++ status = "okay"; ++ bus-width = <4>; ++}; ++ +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; @@ -715,9 +822,50 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-rpi/arch/arm + pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/bmp085_i2c-sensor-overlay.dts linux-rpi/arch/arm/boot/dts/bmp085_i2c-sensor-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/bmp085_i2c-sensor-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/bmp085_i2c-sensor-overlay.dts 2015-03-26 11:46:41.696226518 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/bcm2835.dtsi linux-rpi/arch/arm/boot/dts/bcm2835.dtsi +--- linux-3.18.14/arch/arm/boot/dts/bcm2835.dtsi 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/boot/dts/bcm2835.dtsi 2015-05-31 14:46:07.981661006 -0500 +@@ -122,11 +122,14 @@ + status = "disabled"; + }; + +- sdhci: sdhci@7e300000 { +- compatible = "brcm,bcm2835-sdhci"; ++ mmc: mmc@7e300000 { ++ compatible = "brcm,bcm2835-mmc"; + reg = <0x7e300000 0x100>; + interrupts = <2 30>; + clocks = <&clk_mmc>; ++ dmas = <&dma 11>, ++ <&dma 11>; ++ dma-names = "tx", "rx"; + status = "disabled"; + }; + +@@ -161,7 +164,7 @@ + reg = <0>; + #clock-cells = <0>; + clock-output-names = "mmc"; +- clock-frequency = <100000000>; ++ clock-frequency = <250000000>; + }; + + clk_i2c: clock@1 { +diff -Nur linux-3.18.14/arch/arm/boot/dts/bcm2835-rpi-b.dts linux-rpi/arch/arm/boot/dts/bcm2835-rpi-b.dts +--- linux-3.18.14/arch/arm/boot/dts/bcm2835-rpi-b.dts 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/boot/dts/bcm2835-rpi-b.dts 2015-05-31 14:46:07.981661006 -0500 +@@ -57,7 +57,7 @@ + clock-frequency = <100000>; + }; + +-&sdhci { ++&mmc { + status = "okay"; + bus-width = <4>; + }; +diff -Nur linux-3.18.14/arch/arm/boot/dts/bmp085_i2c-sensor-overlay.dts linux-rpi/arch/arm/boot/dts/bmp085_i2c-sensor-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/bmp085_i2c-sensor-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/bmp085_i2c-sensor-overlay.dts 2015-05-31 14:46:07.981661006 -0500 @@ -0,0 +1,23 @@ +// Definitions for BMP085/BMP180 digital barometric pressure and temperature sensors from Bosch Sensortec +/dts-v1/; @@ -742,9 +890,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/bmp085_i2c-sensor-overlay.dts linux-rp + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/ds1307-rtc-overlay.dts linux-rpi/arch/arm/boot/dts/ds1307-rtc-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/ds1307-rtc-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/ds1307-rtc-overlay.dts 2015-03-26 11:46:41.700226520 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/ds1307-rtc-overlay.dts linux-rpi/arch/arm/boot/dts/ds1307-rtc-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/ds1307-rtc-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/ds1307-rtc-overlay.dts 2015-05-31 14:46:07.981661006 -0500 @@ -0,0 +1,22 @@ +// Definitions for DS1307 Real Time Clock +/dts-v1/; @@ -768,10 +916,10 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/ds1307-rtc-overlay.dts linux-rpi/arch/ + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/enc28j60-overlay.dts linux-rpi/arch/arm/boot/dts/enc28j60-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/enc28j60-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/enc28j60-overlay.dts 2015-03-26 11:46:41.700226520 +0100 -@@ -0,0 +1,29 @@ +diff -Nur linux-3.18.14/arch/arm/boot/dts/enc28j60-overlay.dts linux-rpi/arch/arm/boot/dts/enc28j60-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/enc28j60-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/enc28j60-overlay.dts 2015-05-31 14:46:07.985661006 -0500 +@@ -0,0 +1,50 @@ +// Overlay for the Microchip ENC28J60 Ethernet Controller +/dts-v1/; +/plugin/; @@ -792,18 +940,39 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/enc28j60-overlay.dts linux-rpi/arch/ar + status = "disabled"; + }; + -+ enc28j60@0{ ++ eth1: enc28j60@0{ + compatible = "microchip,enc28j60"; + reg = <0>; /* CE0 */ ++ pinctrl-names = "default"; ++ pinctrl-0 = <ð1_pins>; ++ interrupt-parent = <&gpio>; ++ interrupts = <25 0x2>; /* falling edge */ + spi-max-frequency = <12000000>; + status = "okay"; + }; + }; + }; ++ ++ fragment@1 { ++ target = <&gpio>; ++ __overlay__ { ++ eth1_pins: eth1_pins { ++ brcm,pins = <25>; ++ brcm,function = <0>; /* in */ ++ brcm,pull = <0>; /* none */ ++ }; ++ }; ++ }; ++ ++ __overrides__ { ++ int_pin = <ð1>, "interrupts:0", ++ <ð1_pins>, "brcm,pins:0"; ++ speed = <ð1>, "spi-max-frequency:0"; ++ }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/hifiberry-amp-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-amp-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/hifiberry-amp-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/hifiberry-amp-overlay.dts 2015-03-26 11:46:41.700226520 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/hifiberry-amp-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-amp-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/hifiberry-amp-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/hifiberry-amp-overlay.dts 2015-05-31 14:46:08.001661006 -0500 @@ -0,0 +1,39 @@ +// Definitions for HiFiBerry Amp/Amp+ +/dts-v1/; @@ -844,9 +1013,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/hifiberry-amp-overlay.dts linux-rpi/ar + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/hifiberry-dac-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-dac-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/hifiberry-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/hifiberry-dac-overlay.dts 2015-03-26 11:46:41.700226520 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/hifiberry-dac-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-dac-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/hifiberry-dac-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/hifiberry-dac-overlay.dts 2015-05-31 14:46:08.001661006 -0500 @@ -0,0 +1,34 @@ +// Definitions for HiFiBerry DAC +/dts-v1/; @@ -882,9 +1051,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/hifiberry-dac-overlay.dts linux-rpi/ar + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts 2015-03-26 11:46:41.700226520 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts 2015-05-31 14:46:08.001661006 -0500 @@ -0,0 +1,39 @@ +// Definitions for HiFiBerry DAC+ +/dts-v1/; @@ -925,9 +1094,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts linux-rp + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/hifiberry-digi-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-digi-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/hifiberry-digi-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/hifiberry-digi-overlay.dts 2015-03-26 11:46:41.700226520 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/hifiberry-digi-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-digi-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/hifiberry-digi-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/hifiberry-digi-overlay.dts 2015-05-31 14:46:08.001661006 -0500 @@ -0,0 +1,39 @@ +// Definitions for HiFiBerry Digi +/dts-v1/; @@ -968,9 +1137,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/hifiberry-digi-overlay.dts linux-rpi/a + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/hy28a-overlay.dts linux-rpi/arch/arm/boot/dts/hy28a-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/hy28a-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/hy28a-overlay.dts 2015-03-26 11:46:41.700226520 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/hy28a-overlay.dts linux-rpi/arch/arm/boot/dts/hy28a-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/hy28a-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/hy28a-overlay.dts 2015-05-31 14:46:08.001661006 -0500 @@ -0,0 +1,87 @@ +/* + * Device Tree overlay for HY28A display @@ -1059,9 +1228,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/hy28a-overlay.dts linux-rpi/arch/arm/b + <&hy28a_pins>, "brcm,pins:2"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/hy28b-overlay.dts linux-rpi/arch/arm/boot/dts/hy28b-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/hy28b-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/hy28b-overlay.dts 2015-03-26 11:46:41.700226520 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/hy28b-overlay.dts linux-rpi/arch/arm/boot/dts/hy28b-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/hy28b-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/hy28b-overlay.dts 2015-05-31 14:46:08.001661006 -0500 @@ -0,0 +1,142 @@ +/* + * Device Tree overlay for HY28b display shield by Texy @@ -1205,9 +1374,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/hy28b-overlay.dts linux-rpi/arch/arm/b + <&hy28b_pins>, "brcm,pins:2"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/i2c-rtc-overlay.dts linux-rpi/arch/arm/boot/dts/i2c-rtc-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/i2c-rtc-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/i2c-rtc-overlay.dts 2015-03-26 11:46:41.700226520 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/i2c-rtc-overlay.dts linux-rpi/arch/arm/boot/dts/i2c-rtc-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/i2c-rtc-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/i2c-rtc-overlay.dts 2015-05-31 14:46:08.001661006 -0500 @@ -0,0 +1,49 @@ +// Definitions for several I2C based Real Time Clocks +/dts-v1/; @@ -1258,9 +1427,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/i2c-rtc-overlay.dts linux-rpi/arch/arm + pcf8563 = <&pcf8563>,"status"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/iqaudio-dac-overlay.dts linux-rpi/arch/arm/boot/dts/iqaudio-dac-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/iqaudio-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/iqaudio-dac-overlay.dts 2015-03-26 11:46:41.712226533 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/iqaudio-dac-overlay.dts linux-rpi/arch/arm/boot/dts/iqaudio-dac-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/iqaudio-dac-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/iqaudio-dac-overlay.dts 2015-05-31 14:46:08.029661006 -0500 @@ -0,0 +1,39 @@ +// Definitions for IQaudIO DAC +/dts-v1/; @@ -1301,9 +1470,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/iqaudio-dac-overlay.dts linux-rpi/arch + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts linux-rpi/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts 2015-03-26 11:46:41.712226533 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts linux-rpi/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts 2015-05-31 14:46:08.029661006 -0500 @@ -0,0 +1,39 @@ +// Definitions for IQaudIO DAC+ +/dts-v1/; @@ -1344,9 +1513,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts linux-rpi/ + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/lirc-rpi-overlay.dts linux-rpi/arch/arm/boot/dts/lirc-rpi-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/lirc-rpi-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/lirc-rpi-overlay.dts 2015-03-26 11:46:41.712226533 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/lirc-rpi-overlay.dts linux-rpi/arch/arm/boot/dts/lirc-rpi-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/lirc-rpi-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/lirc-rpi-overlay.dts 2015-05-31 14:46:08.033661006 -0500 @@ -0,0 +1,57 @@ +// Definitions for lirc-rpi module +/dts-v1/; @@ -1405,10 +1574,10 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/lirc-rpi-overlay.dts linux-rpi/arch/ar + debug = <&lirc_rpi>,"rpi,debug:0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/Makefile ---- linux-3.18.10/arch/arm/boot/dts/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/Makefile 2015-03-26 11:46:41.692226515 +0100 -@@ -53,7 +53,46 @@ +diff -Nur linux-3.18.14/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/Makefile +--- linux-3.18.14/arch/arm/boot/dts/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/boot/dts/Makefile 2015-05-31 14:46:07.961661006 -0500 +@@ -53,7 +53,50 @@ dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb @@ -1422,6 +1591,7 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/M +endif +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b-plus.dtb ++dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-cm.dtb +dtb-$(CONFIG_BCM2709_DT) += bcm2709-rpi-2-b.dtb +dtb-$(RPI_DT_OVERLAYS) += ads7846-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor-overlay.dtb @@ -1436,8 +1606,10 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/M +dtb-$(RPI_DT_OVERLAYS) += hy28b-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += iqaudio-dac-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += iqaudio-dacplus-overlay.dtb ++dtb-$(RPI_DT_OVERLAYS) += rpi-dac-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += rpi-proto-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += lirc-rpi-overlay.dtb ++dtb-$(RPI_DT_OVERLAYS) += mmc-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += mz61581-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += pcf2127-rtc-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += pcf8523-rtc-overlay.dtb @@ -1445,6 +1617,7 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/M +dtb-$(RPI_DT_OVERLAYS) += pitft28-resistive-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += pps-gpio-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += rpi-display-overlay.dtb ++dtb-$(RPI_DT_OVERLAYS) += sdhost-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += tinylcd35-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += w1-gpio-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += w1-gpio-pullup-overlay.dtb @@ -1455,7 +1628,7 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/M dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb dtb-$(CONFIG_ARCH_BCM_63XX) += bcm963138dvt.dtb dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm28155-ap.dtb \ -@@ -519,6 +558,12 @@ +@@ -519,6 +562,12 @@ targets += dtbs dtbs_install targets += $(dtb-y) @@ -1468,9 +1641,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/M endif # *.dtb used to be generated in the directory above. Clean out the -diff -Nur linux-3.18.10/arch/arm/boot/dts/mcp2515-can0-overlay.dts linux-rpi/arch/arm/boot/dts/mcp2515-can0-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/mcp2515-can0-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/mcp2515-can0-overlay.dts 2015-03-26 11:46:41.716226537 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/mcp2515-can0-overlay.dts linux-rpi/arch/arm/boot/dts/mcp2515-can0-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/mcp2515-can0-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/mcp2515-can0-overlay.dts 2015-05-31 14:46:08.033661006 -0500 @@ -0,0 +1,69 @@ +/* + * Device tree overlay for mcp251x/can0 on spi0.0 @@ -1536,14 +1709,37 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/mcp2515-can0-overlay.dts linux-rpi/arc + }; + }; + __overrides__ { -+ oscillator = <&can0_osc>,"oscillator-frequency"; ++ oscillator = <&can0_osc>,"clock-frequency:0"; + spimaxfrequency = <&can0>,"spi-max-frequency:0"; + interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/mz61581-overlay.dts linux-rpi/arch/arm/boot/dts/mz61581-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/mz61581-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/mz61581-overlay.dts 2015-03-26 11:46:41.716226537 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/mmc-overlay.dts linux-rpi/arch/arm/boot/dts/mmc-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/mmc-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/mmc-overlay.dts 2015-05-31 14:46:08.033661006 -0500 +@@ -0,0 +1,19 @@ ++/dts-v1/; ++/plugin/; ++ ++/{ ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&mmc>; ++ ++ __overlay__ { ++ brcm,overclock-50 = <0>; ++ }; ++ }; ++ ++ __overrides__ { ++ overclock_50 = <&mmc>,"brcm,overclock-50:0"; ++ force_pio = <&mmc>,"brcm,force-pio?"; ++ }; ++}; +diff -Nur linux-3.18.14/arch/arm/boot/dts/mz61581-overlay.dts linux-rpi/arch/arm/boot/dts/mz61581-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/mz61581-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/mz61581-overlay.dts 2015-05-31 14:46:08.041661006 -0500 @@ -0,0 +1,109 @@ +/* + * Device Tree overlay for MZ61581-PI-EXT 2014.12.28 by Tontec @@ -1654,9 +1850,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/mz61581-overlay.dts linux-rpi/arch/arm + xohms = <&mz61581_ts>,"ti,x-plate-ohms;0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/pcf2127-rtc-overlay.dts linux-rpi/arch/arm/boot/dts/pcf2127-rtc-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/pcf2127-rtc-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/pcf2127-rtc-overlay.dts 2015-03-26 11:46:41.720226540 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/pcf2127-rtc-overlay.dts linux-rpi/arch/arm/boot/dts/pcf2127-rtc-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/pcf2127-rtc-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/pcf2127-rtc-overlay.dts 2015-05-31 14:46:08.045661006 -0500 @@ -0,0 +1,22 @@ +// Definitions for PCF2127 Real Time Clock +/dts-v1/; @@ -1680,9 +1876,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/pcf2127-rtc-overlay.dts linux-rpi/arch + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/pcf8523-rtc-overlay.dts linux-rpi/arch/arm/boot/dts/pcf8523-rtc-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/pcf8523-rtc-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/pcf8523-rtc-overlay.dts 2015-03-26 11:46:41.720226540 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/pcf8523-rtc-overlay.dts linux-rpi/arch/arm/boot/dts/pcf8523-rtc-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/pcf8523-rtc-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/pcf8523-rtc-overlay.dts 2015-05-31 14:46:08.045661006 -0500 @@ -0,0 +1,22 @@ +// Definitions for PCF8523 Real Time Clock +/dts-v1/; @@ -1706,10 +1902,10 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/pcf8523-rtc-overlay.dts linux-rpi/arch + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/piscreen-overlay.dts linux-rpi/arch/arm/boot/dts/piscreen-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/piscreen-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/piscreen-overlay.dts 2015-03-26 11:46:41.720226540 +0100 -@@ -0,0 +1,94 @@ +diff -Nur linux-3.18.14/arch/arm/boot/dts/piscreen-overlay.dts linux-rpi/arch/arm/boot/dts/piscreen-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/piscreen-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/piscreen-overlay.dts 2015-05-31 14:46:08.045661006 -0500 +@@ -0,0 +1,96 @@ +/* + * Device Tree overlay for PiScreen 3.5" display shield by Ozzmaker + * @@ -1784,7 +1980,7 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/piscreen-overlay.dts linux-rpi/arch/ar + 0x1000029>; + }; + -+ piscreen-ts@1 { ++ piscreen_ts: piscreen-ts@1 { + compatible = "ti,ads7846"; + reg = <1>; + @@ -1792,6 +1988,7 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/piscreen-overlay.dts linux-rpi/arch/ar + interrupts = <17 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; + pendown-gpio = <&gpio 17 0>; ++ ti,swap-xy; + ti,x-plate-ohms = /bits/ 16 <100>; + ti,pressure-max = /bits/ 16 <255>; + }; @@ -1802,11 +1999,12 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/piscreen-overlay.dts linux-rpi/arch/ar + rotate = <&piscreen>,"rotate:0"; + fps = <&piscreen>,"fps:0"; + debug = <&piscreen>,"debug:0"; ++ xohms = <&piscreen_ts>,"ti,x-plate-ohms;0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/pitft28-resistive-overlay.dts linux-rpi/arch/arm/boot/dts/pitft28-resistive-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/pitft28-resistive-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/pitft28-resistive-overlay.dts 2015-03-26 11:46:41.720226540 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/pitft28-resistive-overlay.dts linux-rpi/arch/arm/boot/dts/pitft28-resistive-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/pitft28-resistive-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/pitft28-resistive-overlay.dts 2015-05-31 14:46:08.045661006 -0500 @@ -0,0 +1,115 @@ +/* + * Device Tree overlay for Adafruit PiTFT 2.8" resistive touch screen @@ -1923,9 +2121,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/pitft28-resistive-overlay.dts linux-rp + debug = <&pitft>,"debug:0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/pps-gpio-overlay.dts linux-rpi/arch/arm/boot/dts/pps-gpio-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/pps-gpio-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/pps-gpio-overlay.dts 2015-03-26 11:46:41.720226540 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/pps-gpio-overlay.dts linux-rpi/arch/arm/boot/dts/pps-gpio-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/pps-gpio-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/pps-gpio-overlay.dts 2015-05-31 14:46:08.061661005 -0500 @@ -0,0 +1,34 @@ +/dts-v1/; +/plugin/; @@ -1961,9 +2159,47 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/pps-gpio-overlay.dts linux-rpi/arch/ar + <&pps_pins>,"brcm,pins:0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/rpi-display-overlay.dts linux-rpi/arch/arm/boot/dts/rpi-display-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/rpi-display-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/rpi-display-overlay.dts 2015-03-26 11:46:41.724226543 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/rpi-dac-overlay.dts linux-rpi/arch/arm/boot/dts/rpi-dac-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/rpi-dac-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/rpi-dac-overlay.dts 2015-05-31 14:46:08.061661005 -0500 +@@ -0,0 +1,34 @@ ++// Definitions for RPi DAC ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "rpi,rpi-dac"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&i2s>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@2 { ++ target-path = "/"; ++ __overlay__ { ++ pcm1794a-codec { ++ #sound-dai-cells = <0>; ++ compatible = "ti,pcm1794a"; ++ status = "okay"; ++ }; ++ }; ++ }; ++}; +diff -Nur linux-3.18.14/arch/arm/boot/dts/rpi-display-overlay.dts linux-rpi/arch/arm/boot/dts/rpi-display-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/rpi-display-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/rpi-display-overlay.dts 2015-05-31 14:46:08.061661005 -0500 @@ -0,0 +1,82 @@ +/* + * Device Tree overlay for rpi-display by Watterott @@ -2047,9 +2283,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/rpi-display-overlay.dts linux-rpi/arch + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/rpi-proto-overlay.dts linux-rpi/arch/arm/boot/dts/rpi-proto-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/rpi-proto-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/rpi-proto-overlay.dts 2015-03-26 11:46:41.724226543 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/rpi-proto-overlay.dts linux-rpi/arch/arm/boot/dts/rpi-proto-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/rpi-proto-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/rpi-proto-overlay.dts 2015-05-31 14:46:08.061661005 -0500 @@ -0,0 +1,39 @@ +// Definitions for Rpi-Proto +/dts-v1/; @@ -2090,9 +2326,88 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/rpi-proto-overlay.dts linux-rpi/arch/a + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/spi-bcm2835-overlay.dts linux-rpi/arch/arm/boot/dts/spi-bcm2835-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/spi-bcm2835-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/spi-bcm2835-overlay.dts 2015-03-26 11:46:41.724226543 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/sdhost-overlay.dts linux-rpi/arch/arm/boot/dts/sdhost-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/sdhost-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/sdhost-overlay.dts 2015-05-31 14:46:08.065661006 -0500 +@@ -0,0 +1,75 @@ ++/dts-v1/; ++/plugin/; ++ ++/{ ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&soc>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ sdhost: sdhost@7e202000 { ++ compatible = "brcm,bcm2835-sdhost"; ++ reg = <0x7e202000 0x100>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdhost_pins>; ++ interrupts = <2 24>; ++ clocks = <&clk_sdhost>; ++ //dmas = <&dma 13>, ++ // <&dma 13>; ++ dma-names = "tx", "rx"; ++ brcm,delay-after-stop = <0>; ++ brcm,overclock-50 = <0>; ++ status = "okay"; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ clk_sdhost: clock@3 { ++ compatible = "fixed-clock"; ++ reg = <0>; ++ #clock-cells = <0>; ++ clock-output-names = "sdhost"; ++ clock-frequency = <250000000>; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&gpio>; ++ __overlay__ { ++ sdhost_pins: sdhost_pins { ++ brcm,pins = <48 49 50 51 52 53>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&mmc>; ++ __overlay__ { ++ /* Find a way to disable the other driver */ ++ compatible = ""; ++ status = "disabled"; ++ }; ++ }; ++ ++ fragment@3 { ++ target-path = "/__overrides__"; ++ __overlay__ { ++ sdhost_freq = <&clk_sdhost>,"clock-frequency:0"; ++ }; ++ }; ++ ++ __overrides__ { ++ delay_after_stop = <&sdhost>,"brcm,delay-after-stop:0"; ++ overclock_50 = <&sdhost>,"brcm,overclock-50:0"; ++ force_pio = <&sdhost>,"brcm,force-pio?"; ++ sdhost_freq = <&clk_sdhost>,"clock-frequency:0"; ++ }; ++}; +diff -Nur linux-3.18.14/arch/arm/boot/dts/spi-bcm2835-overlay.dts linux-rpi/arch/arm/boot/dts/spi-bcm2835-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/spi-bcm2835-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/spi-bcm2835-overlay.dts 2015-05-31 14:46:08.065661006 -0500 @@ -0,0 +1,18 @@ +/* + * Device tree overlay for spi-bcm2835 @@ -2112,9 +2427,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/spi-bcm2835-overlay.dts linux-rpi/arch + }; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/tinylcd35-overlay.dts linux-rpi/arch/arm/boot/dts/tinylcd35-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/tinylcd35-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/tinylcd35-overlay.dts 2015-03-26 11:46:41.732226551 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/tinylcd35-overlay.dts linux-rpi/arch/arm/boot/dts/tinylcd35-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/tinylcd35-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/tinylcd35-overlay.dts 2015-05-31 14:46:08.073661005 -0500 @@ -0,0 +1,216 @@ +/* + * tinylcd35-overlay.dts @@ -2332,9 +2647,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/tinylcd35-overlay.dts linux-rpi/arch/a + keypad = <&keypad>,"status"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/w1-gpio-overlay.dts linux-rpi/arch/arm/boot/dts/w1-gpio-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/w1-gpio-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/w1-gpio-overlay.dts 2015-03-26 11:46:41.732226551 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/w1-gpio-overlay.dts linux-rpi/arch/arm/boot/dts/w1-gpio-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/w1-gpio-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/w1-gpio-overlay.dts 2015-05-31 14:46:08.089661005 -0500 @@ -0,0 +1,39 @@ +// Definitions for w1-gpio module (without external pullup) +/dts-v1/; @@ -2375,9 +2690,9 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/w1-gpio-overlay.dts linux-rpi/arch/arm + pullup = <&w1>,"rpi,parasitic-power:0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts linux-rpi/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts ---- linux-3.18.10/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts 2015-03-26 11:46:41.732226551 +0100 +diff -Nur linux-3.18.14/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts linux-rpi/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts +--- linux-3.18.14/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts 2015-05-31 14:46:08.089661005 -0500 @@ -0,0 +1,41 @@ +// Definitions for w1-gpio module (with external pullup) +/dts-v1/; @@ -2420,10 +2735,10 @@ diff -Nur linux-3.18.10/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts linux-rpi/a + pullup = <&w1>,"rpi,parasitic-power:0"; + }; +}; -diff -Nur linux-3.18.10/arch/arm/configs/bcm2709_defconfig linux-rpi/arch/arm/configs/bcm2709_defconfig ---- linux-3.18.10/arch/arm/configs/bcm2709_defconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/configs/bcm2709_defconfig 2015-03-26 11:46:41.736226555 +0100 -@@ -0,0 +1,1204 @@ +diff -Nur linux-3.18.14/arch/arm/configs/bcm2709_defconfig linux-rpi/arch/arm/configs/bcm2709_defconfig +--- linux-3.18.14/arch/arm/configs/bcm2709_defconfig 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/configs/bcm2709_defconfig 2015-05-31 14:46:08.113661005 -0500 +@@ -0,0 +1,1207 @@ +# CONFIG_ARM_PATCH_PHYS_VIRT is not set +CONFIG_PHYS_OFFSET=0 +CONFIG_LOCALVERSION="-v7" @@ -2473,6 +2788,7 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcm2709_defconfig linux-rpi/arch/arm/co +CONFIG_VMSPLIT_2G=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y ++CONFIG_OABI_COMPAT=y +CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y +CONFIG_CMA=y @@ -2807,7 +3123,6 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcm2709_defconfig linux-rpi/arch/arm/co +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_WILINK=m -+CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_WIMAX=m @@ -3206,6 +3521,7 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcm2709_defconfig linux-rpi/arch/arm/co +CONFIG_FB=y +CONFIG_FB_BCM2708=y +CONFIG_FB_UDL=m ++CONFIG_FB_SSD1307=m +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_GPIO=m +CONFIG_FRAMEBUFFER_CONSOLE=y @@ -3391,10 +3707,11 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcm2709_defconfig linux-rpi/arch/arm/co +CONFIG_USB_XUSBATM=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_BCM2835=y +CONFIG_MMC_BCM2835_DMA=y ++CONFIG_MMC_BCM2835_SDHOST=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SPI=m +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y @@ -3553,6 +3870,7 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcm2709_defconfig linux-rpi/arch/arm/co +CONFIG_NFSD_V4=y +CONFIG_CIFS=m +CONFIG_CIFS_WEAK_PW_HASH=y ++CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_9P_FS=m @@ -3628,10 +3946,10 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcm2709_defconfig linux-rpi/arch/arm/co +# CONFIG_CRYPTO_HW is not set +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y -diff -Nur linux-3.18.10/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/configs/bcmrpi_defconfig ---- linux-3.18.10/arch/arm/configs/bcmrpi_defconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/configs/bcmrpi_defconfig 2015-03-26 11:46:41.736226555 +0100 -@@ -0,0 +1,1200 @@ +diff -Nur linux-3.18.14/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/configs/bcmrpi_defconfig +--- linux-3.18.14/arch/arm/configs/bcmrpi_defconfig 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/configs/bcmrpi_defconfig 2015-05-31 14:46:08.113661005 -0500 +@@ -0,0 +1,1203 @@ +# CONFIG_ARM_PATCH_PHYS_VIRT is not set +CONFIG_PHYS_OFFSET=0 +# CONFIG_LOCALVERSION_AUTO is not set @@ -3676,6 +3994,7 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/con +CONFIG_BCM2708_DT=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y ++CONFIG_OABI_COMPAT=y +CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y +CONFIG_CMA=y @@ -4009,7 +4328,6 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/con +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_WILINK=m -+CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_WIMAX=m @@ -4408,6 +4726,7 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/con +CONFIG_FB=y +CONFIG_FB_BCM2708=y +CONFIG_FB_UDL=m ++CONFIG_FB_SSD1307=m +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_GPIO=m +CONFIG_FRAMEBUFFER_CONSOLE=y @@ -4593,10 +4912,11 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/con +CONFIG_USB_XUSBATM=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_BCM2835=y +CONFIG_MMC_BCM2835_DMA=y ++CONFIG_MMC_BCM2835_SDHOST=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SPI=m +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y @@ -4755,6 +5075,7 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/con +CONFIG_NFSD_V4=y +CONFIG_CIFS=m +CONFIG_CIFS_WEAK_PW_HASH=y ++CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_9P_FS=m @@ -4832,9 +5153,9 @@ diff -Nur linux-3.18.10/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/con +# CONFIG_CRYPTO_HW is not set +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y -diff -Nur linux-3.18.10/arch/arm/include/asm/dma-mapping.h linux-rpi/arch/arm/include/asm/dma-mapping.h ---- linux-3.18.10/arch/arm/include/asm/dma-mapping.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/include/asm/dma-mapping.h 2015-03-26 11:46:41.748226564 +0100 +diff -Nur linux-3.18.14/arch/arm/include/asm/dma-mapping.h linux-rpi/arch/arm/include/asm/dma-mapping.h +--- linux-3.18.14/arch/arm/include/asm/dma-mapping.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/include/asm/dma-mapping.h 2015-05-31 14:46:08.129661005 -0500 @@ -58,37 +58,21 @@ #ifndef __arch_pfn_to_dma static inline dma_addr_t pfn_to_dma(struct device *dev, unsigned long pfn) @@ -4874,9 +5195,9 @@ diff -Nur linux-3.18.10/arch/arm/include/asm/dma-mapping.h linux-rpi/arch/arm/in return (dma_addr_t)__virt_to_bus((unsigned long)(addr)); } -diff -Nur linux-3.18.10/arch/arm/include/asm/entry-macro-multi.S linux-rpi/arch/arm/include/asm/entry-macro-multi.S ---- linux-3.18.10/arch/arm/include/asm/entry-macro-multi.S 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/include/asm/entry-macro-multi.S 2015-03-26 11:46:41.748226564 +0100 +diff -Nur linux-3.18.14/arch/arm/include/asm/entry-macro-multi.S linux-rpi/arch/arm/include/asm/entry-macro-multi.S +--- linux-3.18.14/arch/arm/include/asm/entry-macro-multi.S 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/include/asm/entry-macro-multi.S 2015-05-31 14:46:08.129661005 -0500 @@ -1,5 +1,6 @@ #include <asm/assembler.h> @@ -4892,9 +5213,9 @@ diff -Nur linux-3.18.10/arch/arm/include/asm/entry-macro-multi.S linux-rpi/arch/ .macro arch_irq_handler, symbol_name .align 5 -diff -Nur linux-3.18.10/arch/arm/include/asm/irqflags.h linux-rpi/arch/arm/include/asm/irqflags.h ---- linux-3.18.10/arch/arm/include/asm/irqflags.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/include/asm/irqflags.h 2015-03-26 11:46:41.748226564 +0100 +diff -Nur linux-3.18.14/arch/arm/include/asm/irqflags.h linux-rpi/arch/arm/include/asm/irqflags.h +--- linux-3.18.14/arch/arm/include/asm/irqflags.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/include/asm/irqflags.h 2015-05-31 14:46:08.141661005 -0500 @@ -145,12 +145,22 @@ } @@ -4921,9 +5242,9 @@ diff -Nur linux-3.18.10/arch/arm/include/asm/irqflags.h linux-rpi/arch/arm/inclu : : "r" (flags) : "memory", "cc"); -diff -Nur linux-3.18.10/arch/arm/include/asm/string.h linux-rpi/arch/arm/include/asm/string.h ---- linux-3.18.10/arch/arm/include/asm/string.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/include/asm/string.h 2015-03-26 11:46:41.752226568 +0100 +diff -Nur linux-3.18.14/arch/arm/include/asm/string.h linux-rpi/arch/arm/include/asm/string.h +--- linux-3.18.14/arch/arm/include/asm/string.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/include/asm/string.h 2015-05-31 14:46:08.145661005 -0500 @@ -24,6 +24,11 @@ #define __HAVE_ARCH_MEMSET extern void * memset(void *, int, __kernel_size_t); @@ -4936,9 +5257,9 @@ diff -Nur linux-3.18.10/arch/arm/include/asm/string.h linux-rpi/arch/arm/include extern void __memzero(void *ptr, __kernel_size_t n); #define memset(p,v,n) \ -diff -Nur linux-3.18.10/arch/arm/include/asm/uaccess.h linux-rpi/arch/arm/include/asm/uaccess.h ---- linux-3.18.10/arch/arm/include/asm/uaccess.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/include/asm/uaccess.h 2015-03-26 11:46:41.752226568 +0100 +diff -Nur linux-3.18.14/arch/arm/include/asm/uaccess.h linux-rpi/arch/arm/include/asm/uaccess.h +--- linux-3.18.14/arch/arm/include/asm/uaccess.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/include/asm/uaccess.h 2015-05-31 14:46:08.145661005 -0500 @@ -475,6 +475,7 @@ #ifdef CONFIG_MMU @@ -4947,9 +5268,9 @@ diff -Nur linux-3.18.10/arch/arm/include/asm/uaccess.h linux-rpi/arch/arm/includ extern unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n); extern unsigned long __must_check __copy_to_user_std(void __user *to, const void *from, unsigned long n); extern unsigned long __must_check __clear_user(void __user *addr, unsigned long n); -diff -Nur linux-3.18.10/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig ---- linux-3.18.10/arch/arm/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/Kconfig 2015-03-26 11:46:41.692226515 +0100 +diff -Nur linux-3.18.14/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig +--- linux-3.18.14/arch/arm/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/Kconfig 2015-05-31 14:46:07.957661007 -0500 @@ -381,6 +381,23 @@ This enables support for systems based on Atmel AT91RM9200 and AT91SAM9* processors. @@ -5010,9 +5331,9 @@ diff -Nur linux-3.18.10/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig source "arch/arm/mach-zynq/Kconfig" -diff -Nur linux-3.18.10/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug ---- linux-3.18.10/arch/arm/Kconfig.debug 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/Kconfig.debug 2015-03-26 11:46:41.692226515 +0100 +diff -Nur linux-3.18.14/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug +--- linux-3.18.14/arch/arm/Kconfig.debug 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/Kconfig.debug 2015-05-31 14:46:07.961661006 -0500 @@ -985,6 +985,14 @@ options; the platform specific options are deprecated and will be soon removed. @@ -5028,9 +5349,9 @@ diff -Nur linux-3.18.10/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug endchoice config DEBUG_EXYNOS_UART -diff -Nur linux-3.18.10/arch/arm/kernel/fiqasm.S linux-rpi/arch/arm/kernel/fiqasm.S ---- linux-3.18.10/arch/arm/kernel/fiqasm.S 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/kernel/fiqasm.S 2015-03-26 11:46:41.756226573 +0100 +diff -Nur linux-3.18.14/arch/arm/kernel/fiqasm.S linux-rpi/arch/arm/kernel/fiqasm.S +--- linux-3.18.14/arch/arm/kernel/fiqasm.S 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/kernel/fiqasm.S 2015-05-31 14:46:08.157661005 -0500 @@ -47,3 +47,7 @@ mov r0, r0 @ avoid hazard prior to ARMv4 ret lr @@ -5039,9 +5360,9 @@ diff -Nur linux-3.18.10/arch/arm/kernel/fiqasm.S linux-rpi/arch/arm/kernel/fiqas +ENTRY(__FIQ_Branch) + mov pc, r8 +ENDPROC(__FIQ_Branch) -diff -Nur linux-3.18.10/arch/arm/kernel/head.S linux-rpi/arch/arm/kernel/head.S ---- linux-3.18.10/arch/arm/kernel/head.S 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/kernel/head.S 2015-03-26 11:46:41.756226573 +0100 +diff -Nur linux-3.18.14/arch/arm/kernel/head.S linux-rpi/arch/arm/kernel/head.S +--- linux-3.18.14/arch/arm/kernel/head.S 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/kernel/head.S 2015-05-31 14:46:08.157661005 -0500 @@ -673,6 +673,14 @@ ldrcc r7, [r4], #4 @ use branch for delay slot bcc 1b @@ -5057,10 +5378,10 @@ diff -Nur linux-3.18.10/arch/arm/kernel/head.S linux-rpi/arch/arm/kernel/head.S #endif ENDPROC(__fixup_a_pv_table) -diff -Nur linux-3.18.10/arch/arm/kernel/process.c linux-rpi/arch/arm/kernel/process.c ---- linux-3.18.10/arch/arm/kernel/process.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/kernel/process.c 2015-03-26 11:46:41.760226578 +0100 -@@ -166,6 +166,16 @@ +diff -Nur linux-3.18.14/arch/arm/kernel/process.c linux-rpi/arch/arm/kernel/process.c +--- linux-3.18.14/arch/arm/kernel/process.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/kernel/process.c 2015-05-31 14:46:08.169661004 -0500 +@@ -172,6 +172,16 @@ } #endif @@ -5077,9 +5398,9 @@ diff -Nur linux-3.18.10/arch/arm/kernel/process.c linux-rpi/arch/arm/kernel/proc /* * Called by kexec, immediately prior to machine_kexec(). * -diff -Nur linux-3.18.10/arch/arm/lib/arm-mem.h linux-rpi/arch/arm/lib/arm-mem.h ---- linux-3.18.10/arch/arm/lib/arm-mem.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/lib/arm-mem.h 2015-03-26 11:46:41.760226578 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/arm-mem.h linux-rpi/arch/arm/lib/arm-mem.h +--- linux-3.18.14/arch/arm/lib/arm-mem.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/lib/arm-mem.h 2015-05-31 14:46:08.177661005 -0500 @@ -0,0 +1,159 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation @@ -5240,9 +5561,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/arm-mem.h linux-rpi/arch/arm/lib/arm-mem.h + .endif +92: +.endm -diff -Nur linux-3.18.10/arch/arm/lib/copy_from_user.S linux-rpi/arch/arm/lib/copy_from_user.S ---- linux-3.18.10/arch/arm/lib/copy_from_user.S 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/lib/copy_from_user.S 2015-03-26 11:46:41.764226581 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/copy_from_user.S linux-rpi/arch/arm/lib/copy_from_user.S +--- linux-3.18.14/arch/arm/lib/copy_from_user.S 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/lib/copy_from_user.S 2015-05-31 14:46:08.177661005 -0500 @@ -84,11 +84,13 @@ .text @@ -5258,9 +5579,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/copy_from_user.S linux-rpi/arch/arm/lib/cop .pushsection .fixup,"ax" .align 0 -diff -Nur linux-3.18.10/arch/arm/lib/exports_rpi.c linux-rpi/arch/arm/lib/exports_rpi.c ---- linux-3.18.10/arch/arm/lib/exports_rpi.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/lib/exports_rpi.c 2015-03-26 11:46:41.764226581 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/exports_rpi.c linux-rpi/arch/arm/lib/exports_rpi.c +--- linux-3.18.14/arch/arm/lib/exports_rpi.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/lib/exports_rpi.c 2015-05-31 14:46:08.177661005 -0500 @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2014, Raspberry Pi (Trading) Ltd. @@ -5299,9 +5620,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/exports_rpi.c linux-rpi/arch/arm/lib/export +#include <linux/module.h> + +EXPORT_SYMBOL(memcmp); -diff -Nur linux-3.18.10/arch/arm/lib/Makefile linux-rpi/arch/arm/lib/Makefile ---- linux-3.18.10/arch/arm/lib/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/lib/Makefile 2015-03-26 11:46:41.760226578 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/Makefile linux-rpi/arch/arm/lib/Makefile +--- linux-3.18.14/arch/arm/lib/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/lib/Makefile 2015-05-31 14:46:08.177661005 -0500 @@ -6,15 +6,24 @@ lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \ @@ -5330,9 +5651,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/Makefile linux-rpi/arch/arm/lib/Makefile mmu-y := clear_user.o copy_page.o getuser.o putuser.o # the code in uaccess.S is not preemption safe and -diff -Nur linux-3.18.10/arch/arm/lib/memcmp_rpi.S linux-rpi/arch/arm/lib/memcmp_rpi.S ---- linux-3.18.10/arch/arm/lib/memcmp_rpi.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/lib/memcmp_rpi.S 2015-03-26 11:46:41.764226581 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/memcmp_rpi.S linux-rpi/arch/arm/lib/memcmp_rpi.S +--- linux-3.18.14/arch/arm/lib/memcmp_rpi.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/lib/memcmp_rpi.S 2015-05-31 14:46:08.177661005 -0500 @@ -0,0 +1,285 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation @@ -5619,9 +5940,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/memcmp_rpi.S linux-rpi/arch/arm/lib/memcmp_ + .unreq DAT7 + .unreq OFF +ENDPROC(memcmp) -diff -Nur linux-3.18.10/arch/arm/lib/memcpymove.h linux-rpi/arch/arm/lib/memcpymove.h ---- linux-3.18.10/arch/arm/lib/memcpymove.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/lib/memcpymove.h 2015-03-26 11:46:41.764226581 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/memcpymove.h linux-rpi/arch/arm/lib/memcpymove.h +--- linux-3.18.14/arch/arm/lib/memcpymove.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/lib/memcpymove.h 2015-05-31 14:46:08.177661005 -0500 @@ -0,0 +1,506 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation @@ -6129,9 +6450,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/memcpymove.h linux-rpi/arch/arm/lib/memcpym + .unreq LAST + .unreq OFF +.endm -diff -Nur linux-3.18.10/arch/arm/lib/memcpy_rpi.S linux-rpi/arch/arm/lib/memcpy_rpi.S ---- linux-3.18.10/arch/arm/lib/memcpy_rpi.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/lib/memcpy_rpi.S 2015-03-26 11:46:41.764226581 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/memcpy_rpi.S linux-rpi/arch/arm/lib/memcpy_rpi.S +--- linux-3.18.14/arch/arm/lib/memcpy_rpi.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/lib/memcpy_rpi.S 2015-05-31 14:46:08.177661005 -0500 @@ -0,0 +1,59 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation @@ -6192,9 +6513,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/memcpy_rpi.S linux-rpi/arch/arm/lib/memcpy_ +ENTRY(memcpy) + memcpy 0 +ENDPROC(memcpy) -diff -Nur linux-3.18.10/arch/arm/lib/memmove_rpi.S linux-rpi/arch/arm/lib/memmove_rpi.S ---- linux-3.18.10/arch/arm/lib/memmove_rpi.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/lib/memmove_rpi.S 2015-03-26 11:46:41.764226581 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/memmove_rpi.S linux-rpi/arch/arm/lib/memmove_rpi.S +--- linux-3.18.14/arch/arm/lib/memmove_rpi.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/lib/memmove_rpi.S 2015-05-31 14:46:08.177661005 -0500 @@ -0,0 +1,61 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation @@ -6257,9 +6578,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/memmove_rpi.S linux-rpi/arch/arm/lib/memmov + bpl memcpy /* pl works even over -1 - 0 and 0x7fffffff - 0x80000000 boundaries */ + memcpy 1 +ENDPROC(memmove) -diff -Nur linux-3.18.10/arch/arm/lib/memset_rpi.S linux-rpi/arch/arm/lib/memset_rpi.S ---- linux-3.18.10/arch/arm/lib/memset_rpi.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/lib/memset_rpi.S 2015-03-26 11:46:41.764226581 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/memset_rpi.S linux-rpi/arch/arm/lib/memset_rpi.S +--- linux-3.18.14/arch/arm/lib/memset_rpi.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/lib/memset_rpi.S 2015-05-31 14:46:08.177661005 -0500 @@ -0,0 +1,121 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation @@ -6382,9 +6703,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/memset_rpi.S linux-rpi/arch/arm/lib/memset_ + .unreq DAT2 + .unreq DAT3 +ENDPROC(memset) -diff -Nur linux-3.18.10/arch/arm/lib/uaccess_with_memcpy.c linux-rpi/arch/arm/lib/uaccess_with_memcpy.c ---- linux-3.18.10/arch/arm/lib/uaccess_with_memcpy.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/lib/uaccess_with_memcpy.c 2015-03-26 11:46:41.764226581 +0100 +diff -Nur linux-3.18.14/arch/arm/lib/uaccess_with_memcpy.c linux-rpi/arch/arm/lib/uaccess_with_memcpy.c +--- linux-3.18.14/arch/arm/lib/uaccess_with_memcpy.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/lib/uaccess_with_memcpy.c 2015-05-31 14:46:08.177661005 -0500 @@ -22,6 +22,14 @@ #include <asm/current.h> #include <asm/page.h> @@ -6528,9 +6849,9 @@ diff -Nur linux-3.18.10/arch/arm/lib/uaccess_with_memcpy.c linux-rpi/arch/arm/li static unsigned long noinline __clear_user_memset(void __user *addr, unsigned long n) -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/armctrl.c linux-rpi/arch/arm/mach-bcm2708/armctrl.c ---- linux-3.18.10/arch/arm/mach-bcm2708/armctrl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/armctrl.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/armctrl.c linux-rpi/arch/arm/mach-bcm2708/armctrl.c +--- linux-3.18.14/arch/arm/mach-bcm2708/armctrl.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/armctrl.c 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,315 @@ +/* + * linux/arch/arm/mach-bcm2708/armctrl.c @@ -6847,9 +7168,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/armctrl.c linux-rpi/arch/arm/mach- + armctrl_dt_init(); + return 0; +} -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/armctrl.h linux-rpi/arch/arm/mach-bcm2708/armctrl.h ---- linux-3.18.10/arch/arm/mach-bcm2708/armctrl.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/armctrl.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/armctrl.h linux-rpi/arch/arm/mach-bcm2708/armctrl.h +--- linux-3.18.14/arch/arm/mach-bcm2708/armctrl.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/armctrl.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,27 @@ +/* + * linux/arch/arm/mach-bcm2708/armctrl.h @@ -6878,10 +7199,10 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/armctrl.h linux-rpi/arch/arm/mach- + u32 armctrl_sources, u32 resume_sources); + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach-bcm2708/bcm2708.c ---- linux-3.18.10/arch/arm/mach-bcm2708/bcm2708.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.c 2015-03-26 11:46:41.772226586 +0100 -@@ -0,0 +1,1132 @@ +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach-bcm2708/bcm2708.c +--- linux-3.18.14/arch/arm/mach-bcm2708/bcm2708.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.c 2015-05-31 14:46:08.209661004 -0500 +@@ -0,0 +1,1133 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708.c + * @@ -7117,6 +7438,7 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach- + bcm2708_register_clkdev(clk, "dev:f1"); + + clk = bcm2708_clk_register("sdhost_clk", 250000000); ++ bcm2708_register_clkdev(clk, "mmc-bcm2835.0"); + bcm2708_register_clkdev(clk, "bcm2708_spi.0"); + bcm2708_register_clkdev(clk, "bcm2708_i2c.0"); + bcm2708_register_clkdev(clk, "bcm2708_i2c.1"); @@ -7762,7 +8084,7 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach- + bcm_register_device(&bcm2708_powerman_device); + +#ifdef CONFIG_MMC_BCM2835 -+ bcm_register_device(&bcm2835_emmc_device); ++ bcm_register_device_dt(&bcm2835_emmc_device); +#endif + bcm2708_init_led(); + for (i = 0; i < ARRAY_SIZE(bcm2708_alsa_devices); i++) @@ -8014,9 +8336,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach- +MODULE_PARM_DESC(pps_gpio_pin, "Set GPIO pin to reserve for PPS"); +module_param(vc_i2c_override, bool, 0644); +MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral."); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c ---- linux-3.18.10/arch/arm/mach-bcm2708/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c +--- linux-3.18.14/arch/arm/mach-bcm2708/bcm2708_gpio.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,426 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708_gpio.c @@ -8444,9 +8766,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/ + +MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/bcm2708.h linux-rpi/arch/arm/mach-bcm2708/bcm2708.h ---- linux-3.18.10/arch/arm/mach-bcm2708/bcm2708.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/bcm2708.h linux-rpi/arch/arm/mach-bcm2708/bcm2708.h +--- linux-3.18.14/arch/arm/mach-bcm2708/bcm2708.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,49 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708.h @@ -8497,9 +8819,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/bcm2708.h linux-rpi/arch/arm/mach- +} + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/dma.c linux-rpi/arch/arm/mach-bcm2708/dma.c ---- linux-3.18.10/arch/arm/mach-bcm2708/dma.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/dma.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/dma.c linux-rpi/arch/arm/mach-bcm2708/dma.c +--- linux-3.18.14/arch/arm/mach-bcm2708/dma.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/dma.c 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,409 @@ +/* + * linux/arch/arm/mach-bcm2708/dma.c @@ -8910,9 +9232,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/dma.c linux-rpi/arch/arm/mach-bcm2 +MODULE_LICENSE("GPL"); + +MODULE_PARM_DESC(dmachans, "Bitmap of DMA channels available to the ARM"); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/arm_control.h linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_control.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/arm_control.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_control.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/arm_control.h linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_control.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/arm_control.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_control.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,419 @@ +/* + * linux/arch/arm/mach-bcm2708/arm_control.h @@ -9333,9 +9655,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/arm_control.h linux-r +#define AJBTDO HW_REGISTER_RW(AJB_BASE+0x0c) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/arm_power.h linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_power.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/arm_power.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_power.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/arm_power.h linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_power.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/arm_power.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_power.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,62 @@ +/* + * linux/arch/arm/mach-bcm2708/include/mach/arm_power.h @@ -9399,9 +9721,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/arm_power.h linux-rpi +}; + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/clkdev.h linux-rpi/arch/arm/mach-bcm2708/include/mach/clkdev.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/clkdev.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/clkdev.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/clkdev.h linux-rpi/arch/arm/mach-bcm2708/include/mach/clkdev.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/clkdev.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/clkdev.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,7 @@ +#ifndef __ASM_MACH_CLKDEV_H +#define __ASM_MACH_CLKDEV_H @@ -9410,9 +9732,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/clkdev.h linux-rpi/ar +#define __clk_put(clk) do { } while (0) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/debug-macro.S linux-rpi/arch/arm/mach-bcm2708/include/mach/debug-macro.S ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/debug-macro.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/debug-macro.S 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/debug-macro.S linux-rpi/arch/arm/mach-bcm2708/include/mach/debug-macro.S +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/debug-macro.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/debug-macro.S 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,22 @@ +/* arch/arm/mach-bcm2708/include/mach/debug-macro.S + * @@ -9436,9 +9758,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/debug-macro.S linux-r + .endm + +#include <debug/pl01x.S> -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/dma.h linux-rpi/arch/arm/mach-bcm2708/include/mach/dma.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/dma.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/dma.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/dma.h linux-rpi/arch/arm/mach-bcm2708/include/mach/dma.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/dma.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/dma.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,94 @@ +/* + * linux/arch/arm/mach-bcm2708/include/mach/dma.h @@ -9534,9 +9856,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/dma.h linux-rpi/arch/ + + +#endif /* _MACH_BCM2708_DMA_H */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/entry-macro.S linux-rpi/arch/arm/mach-bcm2708/include/mach/entry-macro.S ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/entry-macro.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/entry-macro.S 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/entry-macro.S linux-rpi/arch/arm/mach-bcm2708/include/mach/entry-macro.S +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/entry-macro.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/entry-macro.S 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,69 @@ +/* + * arch/arm/mach-bcm2708/include/mach/entry-macro.S @@ -9607,9 +9929,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/entry-macro.S linux-r +1020: @ EQ will be set if no irqs pending + + .endm -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/frc.h linux-rpi/arch/arm/mach-bcm2708/include/mach/frc.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/frc.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/frc.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/frc.h linux-rpi/arch/arm/mach-bcm2708/include/mach/frc.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/frc.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/frc.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,38 @@ +/* + * arch/arm/mach-bcm2708/include/mach/timex.h @@ -9649,9 +9971,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/frc.h linux-rpi/arch/ +extern unsigned long long frc_clock_ticks63(void); + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/gpio.h linux-rpi/arch/arm/mach-bcm2708/include/mach/gpio.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/gpio.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/gpio.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/gpio.h linux-rpi/arch/arm/mach-bcm2708/include/mach/gpio.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/gpio.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/gpio.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,17 @@ +/* + * arch/arm/mach-bcm2708/include/mach/gpio.h @@ -9670,9 +9992,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/gpio.h linux-rpi/arch +#define irq_to_gpio(x) ((x) - GPIO_IRQ_START) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/hardware.h linux-rpi/arch/arm/mach-bcm2708/include/mach/hardware.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/hardware.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/hardware.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/hardware.h linux-rpi/arch/arm/mach-bcm2708/include/mach/hardware.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/hardware.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/hardware.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,28 @@ +/* + * arch/arm/mach-bcm2708/include/mach/hardware.h @@ -9702,9 +10024,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/hardware.h linux-rpi/ +#include <mach/platform.h> + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/io.h linux-rpi/arch/arm/mach-bcm2708/include/mach/io.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/io.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/io.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/io.h linux-rpi/arch/arm/mach-bcm2708/include/mach/io.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/io.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/io.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,27 @@ +/* + * arch/arm/mach-bcm2708/include/mach/io.h @@ -9733,9 +10055,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/io.h linux-rpi/arch/a +#define __io(a) __typesafe_io(a) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/irqs.h linux-rpi/arch/arm/mach-bcm2708/include/mach/irqs.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/irqs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/irqs.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/irqs.h linux-rpi/arch/arm/mach-bcm2708/include/mach/irqs.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/irqs.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/irqs.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,199 @@ +/* + * arch/arm/mach-bcm2708/include/mach/irqs.h @@ -9936,9 +10258,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/irqs.h linux-rpi/arch +#define NR_IRQS (BCM2708_ALLOC_IRQS+FREE_IRQS) + +#endif /* _BCM2708_IRQS_H_ */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/memory.h linux-rpi/arch/arm/mach-bcm2708/include/mach/memory.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/memory.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/memory.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/memory.h linux-rpi/arch/arm/mach-bcm2708/include/mach/memory.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/memory.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/memory.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,57 @@ +/* + * arch/arm/mach-bcm2708/include/mach/memory.h @@ -9997,9 +10319,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/memory.h linux-rpi/ar +#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET)) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/platform.h linux-rpi/arch/arm/mach-bcm2708/include/mach/platform.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/platform.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/platform.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/platform.h linux-rpi/arch/arm/mach-bcm2708/include/mach/platform.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/platform.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/platform.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,228 @@ +/* + * arch/arm/mach-bcm2708/include/mach/platform.h @@ -10229,9 +10551,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/platform.h linux-rpi/ +#endif + +/* END */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/power.h linux-rpi/arch/arm/mach-bcm2708/include/mach/power.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/power.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/power.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/power.h linux-rpi/arch/arm/mach-bcm2708/include/mach/power.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/power.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/power.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,26 @@ +/* + * linux/arch/arm/mach-bcm2708/power.h @@ -10259,9 +10581,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/power.h linux-rpi/arc +extern int bcm_power_close(BCM_POWER_HANDLE_T handle); + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/system.h linux-rpi/arch/arm/mach-bcm2708/include/mach/system.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/system.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/system.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/system.h linux-rpi/arch/arm/mach-bcm2708/include/mach/system.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/system.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/system.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,38 @@ +/* + * arch/arm/mach-bcm2708/include/mach/system.h @@ -10301,9 +10623,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/system.h linux-rpi/ar +} + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/timex.h linux-rpi/arch/arm/mach-bcm2708/include/mach/timex.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/timex.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/timex.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/timex.h linux-rpi/arch/arm/mach-bcm2708/include/mach/timex.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/timex.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/timex.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,23 @@ +/* + * arch/arm/mach-bcm2708/include/mach/timex.h @@ -10328,9 +10650,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/timex.h linux-rpi/arc + */ + +#define CLOCK_TICK_RATE (1000000) -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/uncompress.h linux-rpi/arch/arm/mach-bcm2708/include/mach/uncompress.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/uncompress.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/uncompress.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/uncompress.h linux-rpi/arch/arm/mach-bcm2708/include/mach/uncompress.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/uncompress.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/uncompress.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,84 @@ +/* + * arch/arm/mach-bcn2708/include/mach/uncompress.h @@ -10416,9 +10738,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/uncompress.h linux-rp + * nothing to do + */ +#define arch_decomp_wdog() -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vcio.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vcio.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vcio.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vcio.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vcio.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vcio.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vcio.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vcio.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,165 @@ +/* + * arch/arm/mach-bcm2708/include/mach/vcio.h @@ -10585,9 +10907,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vcio.h linux-rpi/arch +#define DEVICE_FILE_NAME "vcio" + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_mem.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_mem.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_mem.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_mem.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vc_mem.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_mem.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vc_mem.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_mem.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,35 @@ +/***************************************************************************** +* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved. @@ -10624,9 +10946,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_mem.h linux-rpi/ar +#endif + +#endif /* VC_MEM_H */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,181 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -10809,9 +11131,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h linux-rp +} VC_SM_MSG_UNION_T; + +#endif /* __VC_SM_DEFS_H__INCLUDED__ */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,55 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -10868,9 +11190,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h linux-rpi + long unsigned int *data); + +#endif /* __VC_SM_KNL_H__INCLUDED__ */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,82 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -10954,9 +11276,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h linux-rp + VC_SM_ACTION_CLEAN_T *action_clean); + +#endif /* __VC_VCHI_SM_H__INCLUDED__ */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vmalloc.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vmalloc.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vmalloc.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vmalloc.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vmalloc.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vmalloc.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vmalloc.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vmalloc.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,20 @@ +/* + * arch/arm/mach-bcm2708/include/mach/vmalloc.h @@ -10978,10 +11300,10 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vmalloc.h linux-rpi/a + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#define VMALLOC_END (0xe8000000) -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h ---- linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h 2015-03-26 11:46:41.772226586 +0100 -@@ -0,0 +1,233 @@ +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h +--- linux-3.18.14/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h 2015-05-31 14:46:08.209661004 -0500 +@@ -0,0 +1,248 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* @@ -11045,6 +11367,8 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h linux + VMCS_SM_CMD_HOST_WALK_PID_ALLOC, + VMCS_SM_CMD_HOST_WALK_PID_MAP, + ++ VMCS_SM_CMD_CLEAN_INVALID, ++ + VMCS_SM_CMD_LAST /* Do no delete */ +}; + @@ -11147,6 +11471,16 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h linux + unsigned int size; +}; + ++struct vmcs_sm_ioctl_clean_invalid { ++ /* user -> kernel */ ++ struct { ++ unsigned int cmd; ++ unsigned int handle; ++ unsigned int addr; ++ unsigned int size; ++ } s[8]; ++}; ++ +/* IOCTL numbers */ +#define VMCS_SM_IOCTL_MEM_ALLOC\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_ALLOC,\ @@ -11175,6 +11509,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h linux +#define VMCS_SM_IOCTL_MEM_INVALID\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_INVALID,\ + struct vmcs_sm_ioctl_cache) ++#define VMCS_SM_IOCTL_MEM_CLEAN_INVALID\ ++ _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_CLEAN_INVALID,\ ++ struct vmcs_sm_ioctl_clean_invalid) + +#define VMCS_SM_IOCTL_SIZE_USR_HDL\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_SIZE_USR_HANDLE,\ @@ -11215,9 +11552,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h linux +/* ---- Function Prototypes ---------------------------------------------- */ + +#endif /* __VMCS_SM_IOCTL_H__INCLUDED__ */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/Kconfig linux-rpi/arch/arm/mach-bcm2708/Kconfig ---- linux-3.18.10/arch/arm/mach-bcm2708/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/Kconfig 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/Kconfig linux-rpi/arch/arm/mach-bcm2708/Kconfig +--- linux-3.18.14/arch/arm/mach-bcm2708/Kconfig 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/Kconfig 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,52 @@ +menu "Broadcom BCM2708 Implementations" + depends on ARCH_BCM2708 @@ -11271,9 +11608,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/Kconfig linux-rpi/arch/arm/mach-bc + help + Binds spidev driver to the SPI0 master +endmenu -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/Makefile linux-rpi/arch/arm/mach-bcm2708/Makefile ---- linux-3.18.10/arch/arm/mach-bcm2708/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/Makefile 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/Makefile linux-rpi/arch/arm/mach-bcm2708/Makefile +--- linux-3.18.14/arch/arm/mach-bcm2708/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/Makefile 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,7 @@ +# +# Makefile for the linux kernel. @@ -11282,16 +11619,16 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/Makefile linux-rpi/arch/arm/mach-b +obj-$(CONFIG_MACH_BCM2708) += bcm2708.o armctrl.o vcio.o power.o dma.o +obj-$(CONFIG_BCM2708_GPIO) += bcm2708_gpio.o +obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/Makefile.boot linux-rpi/arch/arm/mach-bcm2708/Makefile.boot ---- linux-3.18.10/arch/arm/mach-bcm2708/Makefile.boot 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/Makefile.boot 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/Makefile.boot linux-rpi/arch/arm/mach-bcm2708/Makefile.boot +--- linux-3.18.14/arch/arm/mach-bcm2708/Makefile.boot 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/Makefile.boot 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,3 @@ + zreladdr-y := 0x00008000 +params_phys-y := 0x00000100 +initrd_phys-y := 0x00800000 -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/power.c linux-rpi/arch/arm/mach-bcm2708/power.c ---- linux-3.18.10/arch/arm/mach-bcm2708/power.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/power.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/power.c linux-rpi/arch/arm/mach-bcm2708/power.c +--- linux-3.18.14/arch/arm/mach-bcm2708/power.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/power.c 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,197 @@ +/* + * linux/arch/arm/mach-bcm2708/power.c @@ -11490,9 +11827,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/power.c linux-rpi/arch/arm/mach-bc +MODULE_AUTHOR("Phil Elwell"); +MODULE_DESCRIPTION("Interface to BCM2708 power management"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/vcio.c linux-rpi/arch/arm/mach-bcm2708/vcio.c ---- linux-3.18.10/arch/arm/mach-bcm2708/vcio.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/vcio.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/vcio.c linux-rpi/arch/arm/mach-bcm2708/vcio.c +--- linux-3.18.14/arch/arm/mach-bcm2708/vcio.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/vcio.c 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,484 @@ +/* + * linux/arch/arm/mach-bcm2708/vcio.c @@ -11978,9 +12315,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/vcio.c linux-rpi/arch/arm/mach-bcm +MODULE_DESCRIPTION("ARM I/O to VideoCore processor"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:bcm-mbox"); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/vc_mem.c linux-rpi/arch/arm/mach-bcm2708/vc_mem.c ---- linux-3.18.10/arch/arm/mach-bcm2708/vc_mem.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2708/vc_mem.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2708/vc_mem.c linux-rpi/arch/arm/mach-bcm2708/vc_mem.c +--- linux-3.18.14/arch/arm/mach-bcm2708/vc_mem.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2708/vc_mem.c 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,432 @@ +/***************************************************************************** +* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved. @@ -12414,9 +12751,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2708/vc_mem.c linux-rpi/arch/arm/mach-b +module_param(mem_size, uint, 0644); +module_param(mem_base, uint, 0644); + -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/armctrl.c linux-rpi/arch/arm/mach-bcm2709/armctrl.c ---- linux-3.18.10/arch/arm/mach-bcm2709/armctrl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/armctrl.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/armctrl.c linux-rpi/arch/arm/mach-bcm2709/armctrl.c +--- linux-3.18.14/arch/arm/mach-bcm2709/armctrl.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/armctrl.c 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,369 @@ +/* + * linux/arch/arm/mach-bcm2708/armctrl.c @@ -12787,9 +13124,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/armctrl.c linux-rpi/arch/arm/mach- + armctrl_dt_init(); + return 0; +} -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/armctrl.h linux-rpi/arch/arm/mach-bcm2709/armctrl.h ---- linux-3.18.10/arch/arm/mach-bcm2709/armctrl.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/armctrl.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/armctrl.h linux-rpi/arch/arm/mach-bcm2709/armctrl.h +--- linux-3.18.14/arch/arm/mach-bcm2709/armctrl.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/armctrl.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,27 @@ +/* + * linux/arch/arm/mach-bcm2708/armctrl.h @@ -12818,9 +13155,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/armctrl.h linux-rpi/arch/arm/mach- + u32 armctrl_sources, u32 resume_sources); + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/bcm2708_gpio.c linux-rpi/arch/arm/mach-bcm2709/bcm2708_gpio.c ---- linux-3.18.10/arch/arm/mach-bcm2709/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/bcm2708_gpio.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/bcm2708_gpio.c linux-rpi/arch/arm/mach-bcm2709/bcm2708_gpio.c +--- linux-3.18.14/arch/arm/mach-bcm2709/bcm2708_gpio.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/bcm2708_gpio.c 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,426 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708_gpio.c @@ -13248,10 +13585,10 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/bcm2708_gpio.c linux-rpi/arch/arm/ + +MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/bcm2709.c linux-rpi/arch/arm/mach-bcm2709/bcm2709.c ---- linux-3.18.10/arch/arm/mach-bcm2709/bcm2709.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/bcm2709.c 2015-03-26 11:46:41.772226586 +0100 -@@ -0,0 +1,1297 @@ +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/bcm2709.c linux-rpi/arch/arm/mach-bcm2709/bcm2709.c +--- linux-3.18.14/arch/arm/mach-bcm2709/bcm2709.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/bcm2709.c 2015-05-31 14:46:08.209661004 -0500 +@@ -0,0 +1,1298 @@ +/* + * linux/arch/arm/mach-bcm2709/bcm2709.c + * @@ -13497,6 +13834,7 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/bcm2709.c linux-rpi/arch/arm/mach- + bcm2709_register_clkdev(clk, "dev:f1"); + + clk = bcm2709_clk_register("sdhost_clk", 250000000); ++ bcm2709_register_clkdev(clk, "mmc-bcm2835.0"); + bcm2709_register_clkdev(clk, "bcm2708_spi.0"); + bcm2709_register_clkdev(clk, "bcm2708_i2c.0"); + bcm2709_register_clkdev(clk, "bcm2708_i2c.1"); @@ -14154,7 +14492,7 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/bcm2709.c linux-rpi/arch/arm/mach- + bcm_register_device(&bcm2708_powerman_device); + +#ifdef CONFIG_MMC_BCM2835 -+ bcm_register_device(&bcm2835_emmc_device); ++ bcm_register_device_dt(&bcm2835_emmc_device); +#endif + bcm2709_init_led(); + for (i = 0; i < ARRAY_SIZE(bcm2708_alsa_devices); i++) @@ -14549,9 +14887,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/bcm2709.c linux-rpi/arch/arm/mach- +MODULE_PARM_DESC(pps_gpio_pin, "Set GPIO pin to reserve for PPS"); +module_param(vc_i2c_override, bool, 0644); +MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral."); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/bcm2709.h linux-rpi/arch/arm/mach-bcm2709/bcm2709.h ---- linux-3.18.10/arch/arm/mach-bcm2709/bcm2709.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/bcm2709.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/bcm2709.h linux-rpi/arch/arm/mach-bcm2709/bcm2709.h +--- linux-3.18.14/arch/arm/mach-bcm2709/bcm2709.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/bcm2709.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,49 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708.h @@ -14602,9 +14940,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/bcm2709.h linux-rpi/arch/arm/mach- +} + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/clock.c linux-rpi/arch/arm/mach-bcm2709/clock.c ---- linux-3.18.10/arch/arm/mach-bcm2709/clock.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/clock.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/clock.c linux-rpi/arch/arm/mach-bcm2709/clock.c +--- linux-3.18.14/arch/arm/mach-bcm2709/clock.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/clock.c 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,61 @@ +/* + * linux/arch/arm/mach-bcm2708/clock.c @@ -14667,9 +15005,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/clock.c linux-rpi/arch/arm/mach-bc + return -EIO; +} +EXPORT_SYMBOL(clk_set_rate); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/clock.h linux-rpi/arch/arm/mach-bcm2709/clock.h ---- linux-3.18.10/arch/arm/mach-bcm2709/clock.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/clock.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/clock.h linux-rpi/arch/arm/mach-bcm2709/clock.h +--- linux-3.18.14/arch/arm/mach-bcm2709/clock.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/clock.h 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,24 @@ +/* + * linux/arch/arm/mach-bcm2708/clock.h @@ -14695,9 +15033,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/clock.h linux-rpi/arch/arm/mach-bc +struct clk { + unsigned long rate; +}; -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/delay.S linux-rpi/arch/arm/mach-bcm2709/delay.S ---- linux-3.18.10/arch/arm/mach-bcm2709/delay.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/delay.S 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/delay.S linux-rpi/arch/arm/mach-bcm2709/delay.S +--- linux-3.18.14/arch/arm/mach-bcm2709/delay.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/delay.S 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,21 @@ +/* + * linux/arch/arm/lib/delay.S @@ -14720,9 +15058,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/delay.S linux-rpi/arch/arm/mach-bc + bhi bcm2708_delay + mov pc, lr +ENDPROC(bcm2708_delay) -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/dma.c linux-rpi/arch/arm/mach-bcm2709/dma.c ---- linux-3.18.10/arch/arm/mach-bcm2709/dma.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/dma.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/dma.c linux-rpi/arch/arm/mach-bcm2709/dma.c +--- linux-3.18.14/arch/arm/mach-bcm2709/dma.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/dma.c 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,409 @@ +/* + * linux/arch/arm/mach-bcm2708/dma.c @@ -15133,9 +15471,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/dma.c linux-rpi/arch/arm/mach-bcm2 +MODULE_LICENSE("GPL"); + +MODULE_PARM_DESC(dmachans, "Bitmap of DMA channels available to the ARM"); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/dmaer.c linux-rpi/arch/arm/mach-bcm2709/dmaer.c ---- linux-3.18.10/arch/arm/mach-bcm2709/dmaer.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/dmaer.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/dmaer.c linux-rpi/arch/arm/mach-bcm2709/dmaer.c +--- linux-3.18.14/arch/arm/mach-bcm2709/dmaer.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/dmaer.c 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,886 @@ +#include <linux/init.h> +#include <linux/sched.h> @@ -16023,9 +16361,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/dmaer.c linux-rpi/arch/arm/mach-bc +MODULE_AUTHOR("Simon Hall"); +module_init(dmaer_init); +module_exit(dmaer_exit); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/arm_control.h linux-rpi/arch/arm/mach-bcm2709/include/mach/arm_control.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/arm_control.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/arm_control.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/arm_control.h linux-rpi/arch/arm/mach-bcm2709/include/mach/arm_control.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/arm_control.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/arm_control.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,493 @@ +/* + * linux/arch/arm/mach-bcm2708/arm_control.h @@ -16520,9 +16858,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/arm_control.h linux-r +#define ARM_LOCAL_MAILBOX3_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0FC) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/arm_power.h linux-rpi/arch/arm/mach-bcm2709/include/mach/arm_power.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/arm_power.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/arm_power.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/arm_power.h linux-rpi/arch/arm/mach-bcm2709/include/mach/arm_power.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/arm_power.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/arm_power.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,62 @@ +/* + * linux/arch/arm/mach-bcm2708/include/mach/arm_power.h @@ -16586,16 +16924,16 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/arm_power.h linux-rpi +}; + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/barriers.h linux-rpi/arch/arm/mach-bcm2709/include/mach/barriers.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/barriers.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/barriers.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/barriers.h linux-rpi/arch/arm/mach-bcm2709/include/mach/barriers.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/barriers.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/barriers.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,3 @@ +#define mb() dsb() +#define rmb() dsb() +#define wmb() mb() -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/clkdev.h linux-rpi/arch/arm/mach-bcm2709/include/mach/clkdev.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/clkdev.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/clkdev.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/clkdev.h linux-rpi/arch/arm/mach-bcm2709/include/mach/clkdev.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/clkdev.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/clkdev.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,7 @@ +#ifndef __ASM_MACH_CLKDEV_H +#define __ASM_MACH_CLKDEV_H @@ -16604,9 +16942,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/clkdev.h linux-rpi/ar +#define __clk_put(clk) do { } while (0) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/debug-macro.S linux-rpi/arch/arm/mach-bcm2709/include/mach/debug-macro.S ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/debug-macro.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/debug-macro.S 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/debug-macro.S linux-rpi/arch/arm/mach-bcm2709/include/mach/debug-macro.S +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/debug-macro.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/debug-macro.S 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,22 @@ +/* arch/arm/mach-bcm2708/include/mach/debug-macro.S + * @@ -16630,9 +16968,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/debug-macro.S linux-r + .endm + +#include <debug/pl01x.S> -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/dma.h linux-rpi/arch/arm/mach-bcm2709/include/mach/dma.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/dma.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/dma.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/dma.h linux-rpi/arch/arm/mach-bcm2709/include/mach/dma.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/dma.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/dma.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,94 @@ +/* + * linux/arch/arm/mach-bcm2708/include/mach/dma.h @@ -16728,9 +17066,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/dma.h linux-rpi/arch/ + + +#endif /* _MACH_BCM2708_DMA_H */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/entry-macro.S linux-rpi/arch/arm/mach-bcm2709/include/mach/entry-macro.S ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/entry-macro.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/entry-macro.S 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/entry-macro.S linux-rpi/arch/arm/mach-bcm2709/include/mach/entry-macro.S +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/entry-macro.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/entry-macro.S 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,120 @@ +/* + * arch/arm/mach-bcm2708/include/mach/entry-macro.S @@ -16852,9 +17190,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/entry-macro.S linux-r + .macro arch_irq_handler_default +1: get_irqnr_and_base r0, r2, r6, lr + .endm -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/frc.h linux-rpi/arch/arm/mach-bcm2709/include/mach/frc.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/frc.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/frc.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/frc.h linux-rpi/arch/arm/mach-bcm2709/include/mach/frc.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/frc.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/frc.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,38 @@ +/* + * arch/arm/mach-bcm2708/include/mach/timex.h @@ -16894,9 +17232,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/frc.h linux-rpi/arch/ +extern unsigned long long frc_clock_ticks63(void); + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/gpio.h linux-rpi/arch/arm/mach-bcm2709/include/mach/gpio.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/gpio.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/gpio.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/gpio.h linux-rpi/arch/arm/mach-bcm2709/include/mach/gpio.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/gpio.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/gpio.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,17 @@ +/* + * arch/arm/mach-bcm2708/include/mach/gpio.h @@ -16915,9 +17253,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/gpio.h linux-rpi/arch +#define irq_to_gpio(x) ((x) - GPIO_IRQ_START) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/hardware.h linux-rpi/arch/arm/mach-bcm2709/include/mach/hardware.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/hardware.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/hardware.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/hardware.h linux-rpi/arch/arm/mach-bcm2709/include/mach/hardware.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/hardware.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/hardware.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,28 @@ +/* + * arch/arm/mach-bcm2708/include/mach/hardware.h @@ -16947,9 +17285,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/hardware.h linux-rpi/ +#include <mach/platform.h> + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/io.h linux-rpi/arch/arm/mach-bcm2709/include/mach/io.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/io.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/io.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/io.h linux-rpi/arch/arm/mach-bcm2709/include/mach/io.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/io.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/io.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,27 @@ +/* + * arch/arm/mach-bcm2708/include/mach/io.h @@ -16978,9 +17316,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/io.h linux-rpi/arch/a +#define __io(a) __typesafe_io(a) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/irqs.h linux-rpi/arch/arm/mach-bcm2709/include/mach/irqs.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/irqs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/irqs.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/irqs.h linux-rpi/arch/arm/mach-bcm2709/include/mach/irqs.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/irqs.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/irqs.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,225 @@ +/* + * arch/arm/mach-bcm2708/include/mach/irqs.h @@ -17207,9 +17545,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/irqs.h linux-rpi/arch +#define NR_IRQS (BCM2708_ALLOC_IRQS+FREE_IRQS) + +#endif /* _BCM2708_IRQS_H_ */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/memory.h linux-rpi/arch/arm/mach-bcm2709/include/mach/memory.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/memory.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/memory.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/memory.h linux-rpi/arch/arm/mach-bcm2709/include/mach/memory.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/memory.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/memory.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,57 @@ +/* + * arch/arm/mach-bcm2708/include/mach/memory.h @@ -17268,9 +17606,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/memory.h linux-rpi/ar +#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET)) + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/platform.h linux-rpi/arch/arm/mach-bcm2709/include/mach/platform.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/platform.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/platform.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/platform.h linux-rpi/arch/arm/mach-bcm2709/include/mach/platform.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/platform.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/platform.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,225 @@ +/* + * arch/arm/mach-bcm2708/include/mach/platform.h @@ -17497,9 +17835,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/platform.h linux-rpi/ +#endif + +/* END */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/power.h linux-rpi/arch/arm/mach-bcm2709/include/mach/power.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/power.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/power.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/power.h linux-rpi/arch/arm/mach-bcm2709/include/mach/power.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/power.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/power.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,26 @@ +/* + * linux/arch/arm/mach-bcm2708/power.h @@ -17527,9 +17865,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/power.h linux-rpi/arc +extern int bcm_power_close(BCM_POWER_HANDLE_T handle); + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/system.h linux-rpi/arch/arm/mach-bcm2709/include/mach/system.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/system.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/system.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/system.h linux-rpi/arch/arm/mach-bcm2709/include/mach/system.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/system.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/system.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,38 @@ +/* + * arch/arm/mach-bcm2708/include/mach/system.h @@ -17569,9 +17907,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/system.h linux-rpi/ar +} + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/timex.h linux-rpi/arch/arm/mach-bcm2709/include/mach/timex.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/timex.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/timex.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/timex.h linux-rpi/arch/arm/mach-bcm2709/include/mach/timex.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/timex.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/timex.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,23 @@ +/* + * arch/arm/mach-bcm2708/include/mach/timex.h @@ -17596,9 +17934,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/timex.h linux-rpi/arc + */ + +#define CLOCK_TICK_RATE (1000000) -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/uncompress.h linux-rpi/arch/arm/mach-bcm2709/include/mach/uncompress.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/uncompress.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/uncompress.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/uncompress.h linux-rpi/arch/arm/mach-bcm2709/include/mach/uncompress.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/uncompress.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/uncompress.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,84 @@ +/* + * arch/arm/mach-bcn2708/include/mach/uncompress.h @@ -17684,9 +18022,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/uncompress.h linux-rp + * nothing to do + */ +#define arch_decomp_wdog() -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vcio.h linux-rpi/arch/arm/mach-bcm2709/include/mach/vcio.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vcio.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/vcio.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/vcio.h linux-rpi/arch/arm/mach-bcm2709/include/mach/vcio.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/vcio.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/vcio.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,165 @@ +/* + * arch/arm/mach-bcm2708/include/mach/vcio.h @@ -17853,9 +18191,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vcio.h linux-rpi/arch +#define DEVICE_FILE_NAME "vcio" + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vc_mem.h linux-rpi/arch/arm/mach-bcm2709/include/mach/vc_mem.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vc_mem.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/vc_mem.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/vc_mem.h linux-rpi/arch/arm/mach-bcm2709/include/mach/vc_mem.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/vc_mem.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/vc_mem.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,35 @@ +/***************************************************************************** +* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved. @@ -17892,9 +18230,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vc_mem.h linux-rpi/ar +#endif + +#endif /* VC_MEM_H */ -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vc_support.h linux-rpi/arch/arm/mach-bcm2709/include/mach/vc_support.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vc_support.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/vc_support.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/vc_support.h linux-rpi/arch/arm/mach-bcm2709/include/mach/vc_support.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/vc_support.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/vc_support.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,69 @@ +#ifndef _VC_SUPPORT_H_ +#define _VC_SUPPORT_H_ @@ -17965,9 +18303,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vc_support.h linux-rp + unsigned int r0, unsigned int r1, unsigned int r2, unsigned int r3, unsigned int r4, unsigned int r5); + +#endif -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vmalloc.h linux-rpi/arch/arm/mach-bcm2709/include/mach/vmalloc.h ---- linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vmalloc.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/include/mach/vmalloc.h 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/include/mach/vmalloc.h linux-rpi/arch/arm/mach-bcm2709/include/mach/vmalloc.h +--- linux-3.18.14/arch/arm/mach-bcm2709/include/mach/vmalloc.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/include/mach/vmalloc.h 2015-05-31 14:46:08.213661004 -0500 @@ -0,0 +1,20 @@ +/* + * arch/arm/mach-bcm2708/include/mach/vmalloc.h @@ -17989,9 +18327,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/include/mach/vmalloc.h linux-rpi/a + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#define VMALLOC_END (0xff000000) -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/Kconfig linux-rpi/arch/arm/mach-bcm2709/Kconfig ---- linux-3.18.10/arch/arm/mach-bcm2709/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/Kconfig 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/Kconfig linux-rpi/arch/arm/mach-bcm2709/Kconfig +--- linux-3.18.14/arch/arm/mach-bcm2709/Kconfig 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/Kconfig 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,49 @@ +menu "Broadcom BCM2709 Implementations" + depends on ARCH_BCM2709 @@ -18042,9 +18380,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/Kconfig linux-rpi/arch/arm/mach-bc + help + Binds spidev driver to the SPI0 master +endmenu -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/Makefile linux-rpi/arch/arm/mach-bcm2709/Makefile ---- linux-3.18.10/arch/arm/mach-bcm2709/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/Makefile 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/Makefile linux-rpi/arch/arm/mach-bcm2709/Makefile +--- linux-3.18.14/arch/arm/mach-bcm2709/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/Makefile 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,7 @@ +# +# Makefile for the linux kernel. @@ -18053,16 +18391,16 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/Makefile linux-rpi/arch/arm/mach-b +obj-$(CONFIG_MACH_BCM2709) += bcm2709.o armctrl.o vcio.o power.o dma.o +obj-$(CONFIG_BCM2708_GPIO) += bcm2708_gpio.o +obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/Makefile.boot linux-rpi/arch/arm/mach-bcm2709/Makefile.boot ---- linux-3.18.10/arch/arm/mach-bcm2709/Makefile.boot 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/Makefile.boot 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/Makefile.boot linux-rpi/arch/arm/mach-bcm2709/Makefile.boot +--- linux-3.18.14/arch/arm/mach-bcm2709/Makefile.boot 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/Makefile.boot 2015-05-31 14:46:08.209661004 -0500 @@ -0,0 +1,3 @@ + zreladdr-y := 0x00008000 +params_phys-y := 0x00000100 +initrd_phys-y := 0x00800000 -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/power.c linux-rpi/arch/arm/mach-bcm2709/power.c ---- linux-3.18.10/arch/arm/mach-bcm2709/power.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/power.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/power.c linux-rpi/arch/arm/mach-bcm2709/power.c +--- linux-3.18.14/arch/arm/mach-bcm2709/power.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/power.c 2015-05-31 14:46:08.217661004 -0500 @@ -0,0 +1,195 @@ +/* + * linux/arch/arm/mach-bcm2708/power.c @@ -18259,9 +18597,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/power.c linux-rpi/arch/arm/mach-bc +MODULE_AUTHOR("Phil Elwell"); +MODULE_DESCRIPTION("Interface to BCM2708 power management"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/vcio.c linux-rpi/arch/arm/mach-bcm2709/vcio.c ---- linux-3.18.10/arch/arm/mach-bcm2709/vcio.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/vcio.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/vcio.c linux-rpi/arch/arm/mach-bcm2709/vcio.c +--- linux-3.18.14/arch/arm/mach-bcm2709/vcio.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/vcio.c 2015-05-31 14:46:08.217661004 -0500 @@ -0,0 +1,484 @@ +/* + * linux/arch/arm/mach-bcm2708/vcio.c @@ -18747,9 +19085,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/vcio.c linux-rpi/arch/arm/mach-bcm +MODULE_DESCRIPTION("ARM I/O to VideoCore processor"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:bcm-mbox"); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/vc_mem.c linux-rpi/arch/arm/mach-bcm2709/vc_mem.c ---- linux-3.18.10/arch/arm/mach-bcm2709/vc_mem.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/vc_mem.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/vc_mem.c linux-rpi/arch/arm/mach-bcm2709/vc_mem.c +--- linux-3.18.14/arch/arm/mach-bcm2709/vc_mem.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/vc_mem.c 2015-05-31 14:46:08.217661004 -0500 @@ -0,0 +1,431 @@ +/***************************************************************************** +* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved. @@ -19182,9 +19520,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/vc_mem.c linux-rpi/arch/arm/mach-b +module_param(phys_addr, uint, 0644); +module_param(mem_size, uint, 0644); +module_param(mem_base, uint, 0644); -diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/vc_support.c linux-rpi/arch/arm/mach-bcm2709/vc_support.c ---- linux-3.18.10/arch/arm/mach-bcm2709/vc_support.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/arch/arm/mach-bcm2709/vc_support.c 2015-03-26 11:46:41.772226586 +0100 +diff -Nur linux-3.18.14/arch/arm/mach-bcm2709/vc_support.c linux-rpi/arch/arm/mach-bcm2709/vc_support.c +--- linux-3.18.14/arch/arm/mach-bcm2709/vc_support.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/arch/arm/mach-bcm2709/vc_support.c 2015-05-31 14:46:08.217661004 -0500 @@ -0,0 +1,318 @@ +/* + * vc_support.c @@ -19504,9 +19842,9 @@ diff -Nur linux-3.18.10/arch/arm/mach-bcm2709/vc_support.c linux-rpi/arch/arm/ma + return 1; + } +} -diff -Nur linux-3.18.10/arch/arm/Makefile linux-rpi/arch/arm/Makefile ---- linux-3.18.10/arch/arm/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/Makefile 2015-03-26 11:46:41.692226515 +0100 +diff -Nur linux-3.18.14/arch/arm/Makefile linux-rpi/arch/arm/Makefile +--- linux-3.18.14/arch/arm/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/Makefile 2015-05-31 14:46:07.961661006 -0500 @@ -146,6 +146,8 @@ machine-$(CONFIG_ARCH_AT91) += at91 machine-$(CONFIG_ARCH_AXXIA) += axxia @@ -19516,9 +19854,9 @@ diff -Nur linux-3.18.10/arch/arm/Makefile linux-rpi/arch/arm/Makefile machine-$(CONFIG_ARCH_BERLIN) += berlin machine-$(CONFIG_ARCH_CLPS711X) += clps711x machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx -diff -Nur linux-3.18.10/arch/arm/mm/Kconfig linux-rpi/arch/arm/mm/Kconfig ---- linux-3.18.10/arch/arm/mm/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/mm/Kconfig 2015-03-26 11:46:42.112226903 +0100 +diff -Nur linux-3.18.14/arch/arm/mm/Kconfig linux-rpi/arch/arm/mm/Kconfig +--- linux-3.18.14/arch/arm/mm/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/mm/Kconfig 2015-05-31 14:46:08.565661001 -0500 @@ -358,7 +358,7 @@ # ARMv6 @@ -19528,9 +19866,9 @@ diff -Nur linux-3.18.10/arch/arm/mm/Kconfig linux-rpi/arch/arm/mm/Kconfig select CPU_32v6 select CPU_ABRT_EV6 select CPU_CACHE_V6 -diff -Nur linux-3.18.10/arch/arm/mm/proc-v6.S linux-rpi/arch/arm/mm/proc-v6.S ---- linux-3.18.10/arch/arm/mm/proc-v6.S 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/mm/proc-v6.S 2015-03-26 11:46:42.116226906 +0100 +diff -Nur linux-3.18.14/arch/arm/mm/proc-v6.S linux-rpi/arch/arm/mm/proc-v6.S +--- linux-3.18.14/arch/arm/mm/proc-v6.S 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/mm/proc-v6.S 2015-05-31 14:46:08.585661001 -0500 @@ -73,10 +73,19 @@ * * IRQs are already disabled. @@ -19554,9 +19892,9 @@ diff -Nur linux-3.18.10/arch/arm/mm/proc-v6.S linux-rpi/arch/arm/mm/proc-v6.S ret lr ENTRY(cpu_v6_dcache_clean_area) -diff -Nur linux-3.18.10/arch/arm/mm/proc-v7.S linux-rpi/arch/arm/mm/proc-v7.S ---- linux-3.18.10/arch/arm/mm/proc-v7.S 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/mm/proc-v7.S 2015-03-26 11:46:42.116226906 +0100 +diff -Nur linux-3.18.14/arch/arm/mm/proc-v7.S linux-rpi/arch/arm/mm/proc-v7.S +--- linux-3.18.14/arch/arm/mm/proc-v7.S 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/mm/proc-v7.S 2015-05-31 14:46:08.585661001 -0500 @@ -441,6 +441,7 @@ orr r0, r0, r6 @ set them THUMB( orr r0, r0, #1 << 30 ) @ Thumb exceptions @@ -19565,9 +19903,9 @@ diff -Nur linux-3.18.10/arch/arm/mm/proc-v7.S linux-rpi/arch/arm/mm/proc-v7.S ENDPROC(__v7_setup) .align 2 -diff -Nur linux-3.18.10/arch/arm/tools/mach-types linux-rpi/arch/arm/tools/mach-types ---- linux-3.18.10/arch/arm/tools/mach-types 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/arch/arm/tools/mach-types 2015-03-26 11:46:42.172226958 +0100 +diff -Nur linux-3.18.14/arch/arm/tools/mach-types linux-rpi/arch/arm/tools/mach-types +--- linux-3.18.14/arch/arm/tools/mach-types 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/arch/arm/tools/mach-types 2015-05-31 14:46:08.617661000 -0500 @@ -522,6 +522,8 @@ prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB 3103 paz00 MACH_PAZ00 PAZ00 3128 @@ -19577,9 +19915,9 @@ diff -Nur linux-3.18.10/arch/arm/tools/mach-types linux-rpi/arch/arm/tools/mach- ag5evm MACH_AG5EVM AG5EVM 3189 ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206 wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207 -diff -Nur linux-3.18.10/Documentation/sound/alsa/ControlNames.txt linux-rpi/Documentation/sound/alsa/ControlNames.txt ---- linux-3.18.10/Documentation/sound/alsa/ControlNames.txt 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/Documentation/sound/alsa/ControlNames.txt 2015-03-26 11:46:41.644226470 +0100 +diff -Nur linux-3.18.14/Documentation/sound/alsa/ControlNames.txt linux-rpi/Documentation/sound/alsa/ControlNames.txt +--- linux-3.18.14/Documentation/sound/alsa/ControlNames.txt 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/Documentation/sound/alsa/ControlNames.txt 2015-05-31 14:46:07.825661008 -0500 @@ -49,11 +49,11 @@ IEC958 @@ -19597,9 +19935,9 @@ diff -Nur linux-3.18.10/Documentation/sound/alsa/ControlNames.txt linux-rpi/Docu Tone Control - Switch Tone Control - Bass Tone Control - Treble -diff -Nur linux-3.18.10/Documentation/video4linux/bcm2835-v4l2.txt linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt ---- linux-3.18.10/Documentation/video4linux/bcm2835-v4l2.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt 2015-03-26 11:46:41.656226478 +0100 +diff -Nur linux-3.18.14/Documentation/video4linux/bcm2835-v4l2.txt linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt +--- linux-3.18.14/Documentation/video4linux/bcm2835-v4l2.txt 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt 2015-05-31 14:46:07.861661007 -0500 @@ -0,0 +1,60 @@ + +BCM2835 (aka Raspberry Pi) V4L2 driver @@ -19661,9 +19999,9 @@ diff -Nur linux-3.18.10/Documentation/video4linux/bcm2835-v4l2.txt linux-rpi/Doc +List of available formats: + +$ v4l2-ctl --list-formats -diff -Nur linux-3.18.10/drivers/char/broadcom/Kconfig linux-rpi/drivers/char/broadcom/Kconfig ---- linux-3.18.10/drivers/char/broadcom/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/char/broadcom/Kconfig 2015-03-26 11:46:46.136230632 +0100 +diff -Nur linux-3.18.14/drivers/char/broadcom/Kconfig linux-rpi/drivers/char/broadcom/Kconfig +--- linux-3.18.14/drivers/char/broadcom/Kconfig 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/char/broadcom/Kconfig 2015-05-31 14:46:10.057660987 -0500 @@ -0,0 +1,22 @@ +# +# Broadcom char driver config @@ -19687,15 +20025,15 @@ diff -Nur linux-3.18.10/drivers/char/broadcom/Kconfig linux-rpi/drivers/char/bro + help + Support for the VC shared memory on the Broadcom reference + design. Uses the VCHIQ stack. -diff -Nur linux-3.18.10/drivers/char/broadcom/Makefile linux-rpi/drivers/char/broadcom/Makefile ---- linux-3.18.10/drivers/char/broadcom/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/char/broadcom/Makefile 2015-03-26 11:46:46.136230632 +0100 +diff -Nur linux-3.18.14/drivers/char/broadcom/Makefile linux-rpi/drivers/char/broadcom/Makefile +--- linux-3.18.14/drivers/char/broadcom/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/char/broadcom/Makefile 2015-05-31 14:46:10.057660987 -0500 @@ -0,0 +1,2 @@ +obj-$(CONFIG_BCM_VC_CMA) += vc_cma/ +obj-$(CONFIG_BCM_VC_SM) += vc_sm/ -diff -Nur linux-3.18.10/drivers/char/broadcom/vc_cma/Makefile linux-rpi/drivers/char/broadcom/vc_cma/Makefile ---- linux-3.18.10/drivers/char/broadcom/vc_cma/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/char/broadcom/vc_cma/Makefile 2015-03-26 11:46:46.136230632 +0100 +diff -Nur linux-3.18.14/drivers/char/broadcom/vc_cma/Makefile linux-rpi/drivers/char/broadcom/vc_cma/Makefile +--- linux-3.18.14/drivers/char/broadcom/vc_cma/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/char/broadcom/vc_cma/Makefile 2015-05-31 14:46:10.057660987 -0500 @@ -0,0 +1,14 @@ +ccflags-y += -Wall -Wstrict-prototypes -Wno-trigraphs +ccflags-y += -Werror @@ -19711,9 +20049,9 @@ diff -Nur linux-3.18.10/drivers/char/broadcom/vc_cma/Makefile linux-rpi/drivers/ +obj-$(CONFIG_BCM_VC_CMA) += vc-cma.o + +vc-cma-objs := vc_cma.o -diff -Nur linux-3.18.10/drivers/char/broadcom/vc_cma/vc_cma.c linux-rpi/drivers/char/broadcom/vc_cma/vc_cma.c ---- linux-3.18.10/drivers/char/broadcom/vc_cma/vc_cma.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/char/broadcom/vc_cma/vc_cma.c 2015-03-26 11:46:46.136230632 +0100 +diff -Nur linux-3.18.14/drivers/char/broadcom/vc_cma/vc_cma.c linux-rpi/drivers/char/broadcom/vc_cma/vc_cma.c +--- linux-3.18.14/drivers/char/broadcom/vc_cma/vc_cma.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/char/broadcom/vc_cma/vc_cma.c 2015-05-31 14:46:10.057660987 -0500 @@ -0,0 +1,1193 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -20908,9 +21246,9 @@ diff -Nur linux-3.18.10/drivers/char/broadcom/vc_cma/vc_cma.c linux-rpi/drivers/ +module_exit(vc_cma_exit); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Broadcom Corporation"); -diff -Nur linux-3.18.10/drivers/char/broadcom/vc_sm/Makefile linux-rpi/drivers/char/broadcom/vc_sm/Makefile ---- linux-3.18.10/drivers/char/broadcom/vc_sm/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/char/broadcom/vc_sm/Makefile 2015-03-26 11:46:46.136230632 +0100 +diff -Nur linux-3.18.14/drivers/char/broadcom/vc_sm/Makefile linux-rpi/drivers/char/broadcom/vc_sm/Makefile +--- linux-3.18.14/drivers/char/broadcom/vc_sm/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/char/broadcom/vc_sm/Makefile 2015-05-31 14:46:10.057660987 -0500 @@ -0,0 +1,21 @@ +EXTRA_CFLAGS += -Wall -Wstrict-prototypes -Wno-trigraphs -O2 + @@ -20933,9 +21271,9 @@ diff -Nur linux-3.18.10/drivers/char/broadcom/vc_sm/Makefile linux-rpi/drivers/c +vc-sm-objs := \ + vmcs_sm.o \ + vc_vchi_sm.o -diff -Nur linux-3.18.10/drivers/char/broadcom/vc_sm/vc_vchi_sm.c linux-rpi/drivers/char/broadcom/vc_sm/vc_vchi_sm.c ---- linux-3.18.10/drivers/char/broadcom/vc_sm/vc_vchi_sm.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/char/broadcom/vc_sm/vc_vchi_sm.c 2015-03-26 11:46:46.136230632 +0100 +diff -Nur linux-3.18.14/drivers/char/broadcom/vc_sm/vc_vchi_sm.c linux-rpi/drivers/char/broadcom/vc_sm/vc_vchi_sm.c +--- linux-3.18.14/drivers/char/broadcom/vc_sm/vc_vchi_sm.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/char/broadcom/vc_sm/vc_vchi_sm.c 2015-05-31 14:46:10.057660987 -0500 @@ -0,0 +1,492 @@ +/***************************************************************************** +* Copyright 2011-2012 Broadcom Corporation. All rights reserved. @@ -21429,10 +21767,10 @@ diff -Nur linux-3.18.10/drivers/char/broadcom/vc_sm/vc_vchi_sm.c linux-rpi/drive + return vc_vchi_sm_send_msg(handle, VC_SM_MSG_TYPE_ACTION_CLEAN, + msg, sizeof(*msg), 0, 0, 0, 0); +} -diff -Nur linux-3.18.10/drivers/char/broadcom/vc_sm/vmcs_sm.c linux-rpi/drivers/char/broadcom/vc_sm/vmcs_sm.c ---- linux-3.18.10/drivers/char/broadcom/vc_sm/vmcs_sm.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/char/broadcom/vc_sm/vmcs_sm.c 2015-03-26 11:46:46.136230632 +0100 -@@ -0,0 +1,3163 @@ +diff -Nur linux-3.18.14/drivers/char/broadcom/vc_sm/vmcs_sm.c linux-rpi/drivers/char/broadcom/vc_sm/vmcs_sm.c +--- linux-3.18.14/drivers/char/broadcom/vc_sm/vmcs_sm.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/char/broadcom/vc_sm/vmcs_sm.c 2015-05-31 14:46:10.057660987 -0500 +@@ -0,0 +1,3212 @@ +/***************************************************************************** +* Copyright 2011-2012 Broadcom Corporation. All rights reserved. +* @@ -24167,6 +24505,55 @@ diff -Nur linux-3.18.10/drivers/char/broadcom/vc_sm/vmcs_sm.c linux-rpi/drivers/ + } + break; + ++ /* Flush/Invalidate the cache for a given mapping. */ ++ case VMCS_SM_CMD_CLEAN_INVALID: ++ { ++ int i; ++ struct vmcs_sm_ioctl_clean_invalid ioparam; ++ ++ /* Get parameter data. */ ++ if (copy_from_user(&ioparam, ++ (void *)arg, sizeof(ioparam)) != 0) { ++ pr_err("[%s]: failed to copy-from-user for cmd %x\n", ++ __func__, cmdnr); ++ ret = -EFAULT; ++ goto out; ++ } ++ for (i=0; i<sizeof ioparam.s/sizeof *ioparam.s; i++) { ++ switch (ioparam.s[i].cmd) { ++ default: case 0: break; /* NOOP */ ++ case 1: /* L1/L2 invalidate virtual range */ ++ case 2: /* L1/L2 clean physical range */ ++ case 3: /* L1/L2 clean+invalidate all */ ++ { ++ /* Locate resource from GUID. ++ */ ++ resource = ++ vmcs_sm_acquire_resource(file_data, ioparam.s[i].handle); ++ ++ if ((resource != NULL) && resource->res_cached) { ++ unsigned long base = ioparam.s[i].addr & ~(PAGE_SIZE-1); ++ unsigned long end = (ioparam.s[i].addr + ioparam.s[i].size + PAGE_SIZE-1) & ~(PAGE_SIZE-1); ++ resource->res_stats[ioparam.s[i].cmd == 1 ? INVALID:FLUSH]++; ++ ++ /* L1/L2 cache flush */ ++ down_read(¤t->mm->mmap_sem); ++ vcsm_vma_cache_clean_page_range(base, end); ++ up_read(¤t->mm->mmap_sem); ++ } else if (resource == NULL) { ++ ret = -EINVAL; ++ goto out; ++ } ++ ++ if (resource) ++ vmcs_sm_release_resource(resource, 0); ++ } ++ break; ++ } ++ } ++ } ++ break; ++ + default: + { + ret = -EINVAL; @@ -24596,9 +24983,9 @@ diff -Nur linux-3.18.10/drivers/char/broadcom/vc_sm/vmcs_sm.c linux-rpi/drivers/ +MODULE_AUTHOR("Broadcom"); +MODULE_DESCRIPTION("VideoCore SharedMemory Driver"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/drivers/char/hw_random/bcm2708-rng.c linux-rpi/drivers/char/hw_random/bcm2708-rng.c ---- linux-3.18.10/drivers/char/hw_random/bcm2708-rng.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/char/hw_random/bcm2708-rng.c 2015-03-26 11:46:46.140230636 +0100 +diff -Nur linux-3.18.14/drivers/char/hw_random/bcm2708-rng.c linux-rpi/drivers/char/hw_random/bcm2708-rng.c +--- linux-3.18.14/drivers/char/hw_random/bcm2708-rng.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/char/hw_random/bcm2708-rng.c 2015-05-31 14:46:10.061660987 -0500 @@ -0,0 +1,118 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -24718,9 +25105,9 @@ diff -Nur linux-3.18.10/drivers/char/hw_random/bcm2708-rng.c linux-rpi/drivers/c + +MODULE_DESCRIPTION("BCM2708 H/W Random Number Generator (RNG) driver"); +MODULE_LICENSE("GPL and additional rights"); -diff -Nur linux-3.18.10/drivers/char/hw_random/Kconfig linux-rpi/drivers/char/hw_random/Kconfig ---- linux-3.18.10/drivers/char/hw_random/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/char/hw_random/Kconfig 2015-03-26 11:46:46.136230632 +0100 +diff -Nur linux-3.18.14/drivers/char/hw_random/Kconfig linux-rpi/drivers/char/hw_random/Kconfig +--- linux-3.18.14/drivers/char/hw_random/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/char/hw_random/Kconfig 2015-05-31 14:46:10.057660987 -0500 @@ -320,6 +320,17 @@ If unsure, say Y. @@ -24739,9 +25126,9 @@ diff -Nur linux-3.18.10/drivers/char/hw_random/Kconfig linux-rpi/drivers/char/hw config HW_RANDOM_MSM tristate "Qualcomm SoCs Random Number Generator support" depends on HW_RANDOM && ARCH_QCOM -diff -Nur linux-3.18.10/drivers/char/hw_random/Makefile linux-rpi/drivers/char/hw_random/Makefile ---- linux-3.18.10/drivers/char/hw_random/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/char/hw_random/Makefile 2015-03-26 11:46:46.140230636 +0100 +diff -Nur linux-3.18.14/drivers/char/hw_random/Makefile linux-rpi/drivers/char/hw_random/Makefile +--- linux-3.18.14/drivers/char/hw_random/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/char/hw_random/Makefile 2015-05-31 14:46:10.057660987 -0500 @@ -28,5 +28,6 @@ obj-$(CONFIG_HW_RANDOM_EXYNOS) += exynos-rng.o obj-$(CONFIG_HW_RANDOM_TPM) += tpm-rng.o @@ -24749,9 +25136,9 @@ diff -Nur linux-3.18.10/drivers/char/hw_random/Makefile linux-rpi/drivers/char/h +obj-$(CONFIG_HW_RANDOM_BCM2708) += bcm2708-rng.o obj-$(CONFIG_HW_RANDOM_MSM) += msm-rng.o obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o -diff -Nur linux-3.18.10/drivers/char/Kconfig linux-rpi/drivers/char/Kconfig ---- linux-3.18.10/drivers/char/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/char/Kconfig 2015-03-26 11:46:46.032230536 +0100 +diff -Nur linux-3.18.14/drivers/char/Kconfig linux-rpi/drivers/char/Kconfig +--- linux-3.18.14/drivers/char/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/char/Kconfig 2015-05-31 14:46:10.053660987 -0500 @@ -581,6 +581,8 @@ source "drivers/s390/char/Kconfig" @@ -24761,17 +25148,17 @@ diff -Nur linux-3.18.10/drivers/char/Kconfig linux-rpi/drivers/char/Kconfig config MSM_SMD_PKT bool "Enable device interface for some SMD packet ports" default n -diff -Nur linux-3.18.10/drivers/char/Makefile linux-rpi/drivers/char/Makefile ---- linux-3.18.10/drivers/char/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/char/Makefile 2015-03-26 11:46:46.032230536 +0100 +diff -Nur linux-3.18.14/drivers/char/Makefile linux-rpi/drivers/char/Makefile +--- linux-3.18.14/drivers/char/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/char/Makefile 2015-05-31 14:46:10.053660987 -0500 @@ -62,3 +62,4 @@ obj-$(CONFIG_TILE_SROM) += tile-srom.o obj-$(CONFIG_XILLYBUS) += xillybus/ +obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/ -diff -Nur linux-3.18.10/drivers/clocksource/arm_arch_timer.c linux-rpi/drivers/clocksource/arm_arch_timer.c ---- linux-3.18.10/drivers/clocksource/arm_arch_timer.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/clocksource/arm_arch_timer.c 2015-03-26 11:46:46.384230862 +0100 +diff -Nur linux-3.18.14/drivers/clocksource/arm_arch_timer.c linux-rpi/drivers/clocksource/arm_arch_timer.c +--- linux-3.18.14/drivers/clocksource/arm_arch_timer.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/clocksource/arm_arch_timer.c 2015-05-31 14:46:10.109660987 -0500 @@ -795,3 +795,39 @@ } CLOCKSOURCE_OF_DECLARE(armv7_arch_timer_mem, "arm,armv7-timer-mem", @@ -24812,9 +25199,9 @@ diff -Nur linux-3.18.10/drivers/clocksource/arm_arch_timer.c linux-rpi/drivers/c + arch_timer_common_init(); + return 0; +} -diff -Nur linux-3.18.10/drivers/cpufreq/bcm2835-cpufreq.c linux-rpi/drivers/cpufreq/bcm2835-cpufreq.c ---- linux-3.18.10/drivers/cpufreq/bcm2835-cpufreq.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/cpufreq/bcm2835-cpufreq.c 2015-03-26 11:46:46.388230866 +0100 +diff -Nur linux-3.18.14/drivers/cpufreq/bcm2835-cpufreq.c linux-rpi/drivers/cpufreq/bcm2835-cpufreq.c +--- linux-3.18.14/drivers/cpufreq/bcm2835-cpufreq.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/cpufreq/bcm2835-cpufreq.c 2015-05-31 14:46:10.117660987 -0500 @@ -0,0 +1,224 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -25040,9 +25427,9 @@ diff -Nur linux-3.18.10/drivers/cpufreq/bcm2835-cpufreq.c linux-rpi/drivers/cpuf + +module_init(bcm2835_cpufreq_module_init); +module_exit(bcm2835_cpufreq_module_exit); -diff -Nur linux-3.18.10/drivers/cpufreq/Kconfig.arm linux-rpi/drivers/cpufreq/Kconfig.arm ---- linux-3.18.10/drivers/cpufreq/Kconfig.arm 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/cpufreq/Kconfig.arm 2015-03-26 11:46:46.388230866 +0100 +diff -Nur linux-3.18.14/drivers/cpufreq/Kconfig.arm linux-rpi/drivers/cpufreq/Kconfig.arm +--- linux-3.18.14/drivers/cpufreq/Kconfig.arm 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/cpufreq/Kconfig.arm 2015-05-31 14:46:10.113660987 -0500 @@ -241,6 +241,14 @@ help This adds the CPUFreq driver support for SPEAr SOCs. @@ -25058,9 +25445,9 @@ diff -Nur linux-3.18.10/drivers/cpufreq/Kconfig.arm linux-rpi/drivers/cpufreq/Kc config ARM_TEGRA_CPUFREQ bool "TEGRA CPUFreq support" depends on ARCH_TEGRA -diff -Nur linux-3.18.10/drivers/cpufreq/Makefile linux-rpi/drivers/cpufreq/Makefile ---- linux-3.18.10/drivers/cpufreq/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/cpufreq/Makefile 2015-03-26 11:46:46.388230866 +0100 +diff -Nur linux-3.18.14/drivers/cpufreq/Makefile linux-rpi/drivers/cpufreq/Makefile +--- linux-3.18.14/drivers/cpufreq/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/cpufreq/Makefile 2015-05-31 14:46:10.113660987 -0500 @@ -75,6 +75,7 @@ obj-$(CONFIG_ARM_SA1100_CPUFREQ) += sa1100-cpufreq.o obj-$(CONFIG_ARM_SA1110_CPUFREQ) += sa1110-cpufreq.o @@ -25069,10 +25456,10 @@ diff -Nur linux-3.18.10/drivers/cpufreq/Makefile linux-rpi/drivers/cpufreq/Makef obj-$(CONFIG_ARM_TEGRA_CPUFREQ) += tegra-cpufreq.o obj-$(CONFIG_ARM_VEXPRESS_SPC_CPUFREQ) += vexpress-spc-cpufreq.o -diff -Nur linux-3.18.10/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bcm2708-dmaengine.c ---- linux-3.18.10/drivers/dma/bcm2708-dmaengine.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/dma/bcm2708-dmaengine.c 2015-03-26 11:46:46.792231240 +0100 -@@ -0,0 +1,1052 @@ +diff -Nur linux-3.18.14/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bcm2708-dmaengine.c +--- linux-3.18.14/drivers/dma/bcm2708-dmaengine.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/dma/bcm2708-dmaengine.c 2015-05-31 14:46:10.161660986 -0500 +@@ -0,0 +1,1060 @@ +/* + * BCM2835 DMA engine support + * @@ -25131,6 +25518,7 @@ diff -Nur linux-3.18.10/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bc + +#include "virt-dma.h" + ++static unsigned dma_debug; + +struct bcm2835_dmadev { + struct dma_device ddev; @@ -25658,6 +26046,7 @@ diff -Nur linux-3.18.10/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bc + uint32_t len = sg_dma_len(sgent); + + for (j = 0; j < len; j += max_size) { ++ u32 waits = SDHCI_BCM_DMA_WAITS; + struct bcm2835_dma_cb *control_block = + &d->control_block_base[i+splitct]; + @@ -25675,7 +26064,9 @@ diff -Nur linux-3.18.10/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bc + } + + /* Common part */ -+ control_block->info |= BCM2835_DMA_WAITS(SDHCI_BCM_DMA_WAITS); ++ if ((dma_debug >> 0) & 0x1f) ++ waits = (dma_debug >> 0) & 0x1f; ++ control_block->info |= BCM2835_DMA_WAITS(waits); + control_block->info |= BCM2835_DMA_WAIT_RESP; + + /* Enable */ @@ -25883,6 +26274,7 @@ diff -Nur linux-3.18.10/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bc + caps->src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); + caps->dstn_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); + caps->directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); ++ caps->residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; + caps->cmd_pause = false; + caps->cmd_terminate = true; + @@ -26044,6 +26436,8 @@ diff -Nur linux-3.18.10/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bc + } + + dev_info(&pdev->dev, "Load BCM2835 DMA engine driver\n"); ++ if (dma_debug) ++ dev_info(&pdev->dev, "dma_debug:%x\n", dma_debug); + + return 0; + @@ -26120,14 +26514,15 @@ diff -Nur linux-3.18.10/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bc + +#endif + ++module_param(dma_debug, uint, 0644); +MODULE_ALIAS("platform:bcm2835-dma"); +MODULE_DESCRIPTION("BCM2835 DMA engine driver"); +MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>"); +MODULE_AUTHOR("Gellert Weisz <gellert@raspberrypi.org>"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/drivers/dma/Kconfig linux-rpi/drivers/dma/Kconfig ---- linux-3.18.10/drivers/dma/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/dma/Kconfig 2015-03-26 11:46:46.792231240 +0100 +diff -Nur linux-3.18.14/drivers/dma/Kconfig linux-rpi/drivers/dma/Kconfig +--- linux-3.18.14/drivers/dma/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/dma/Kconfig 2015-05-31 14:46:10.157660987 -0500 @@ -330,6 +330,12 @@ select DMA_ENGINE select DMA_VIRTUAL_CHANNELS @@ -26141,9 +26536,9 @@ diff -Nur linux-3.18.10/drivers/dma/Kconfig linux-rpi/drivers/dma/Kconfig config TI_CPPI41 tristate "AM33xx CPPI41 DMA support" depends on ARCH_OMAP -diff -Nur linux-3.18.10/drivers/dma/Makefile linux-rpi/drivers/dma/Makefile ---- linux-3.18.10/drivers/dma/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/dma/Makefile 2015-03-26 11:46:46.792231240 +0100 +diff -Nur linux-3.18.14/drivers/dma/Makefile linux-rpi/drivers/dma/Makefile +--- linux-3.18.14/drivers/dma/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/dma/Makefile 2015-05-31 14:46:10.157660987 -0500 @@ -38,6 +38,7 @@ obj-$(CONFIG_MMP_TDMA) += mmp_tdma.o obj-$(CONFIG_DMA_OMAP) += omap-dma.o @@ -26152,9 +26547,9 @@ diff -Nur linux-3.18.10/drivers/dma/Makefile linux-rpi/drivers/dma/Makefile obj-$(CONFIG_MMP_PDMA) += mmp_pdma.o obj-$(CONFIG_DMA_JZ4740) += dma-jz4740.o obj-$(CONFIG_TI_CPPI41) += cppi41.o -diff -Nur linux-3.18.10/drivers/hid/usbhid/hid-core.c linux-rpi/drivers/hid/usbhid/hid-core.c ---- linux-3.18.10/drivers/hid/usbhid/hid-core.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/hid/usbhid/hid-core.c 2015-03-26 11:46:50.116234319 +0100 +diff -Nur linux-3.18.14/drivers/hid/usbhid/hid-core.c linux-rpi/drivers/hid/usbhid/hid-core.c +--- linux-3.18.14/drivers/hid/usbhid/hid-core.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/hid/usbhid/hid-core.c 2015-05-31 14:46:10.457660983 -0500 @@ -49,7 +49,7 @@ * Module parameters. */ @@ -26179,9 +26574,9 @@ diff -Nur linux-3.18.10/drivers/hid/usbhid/hid-core.c linux-rpi/drivers/hid/usbh ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { -diff -Nur linux-3.18.10/drivers/hwmon/bcm2835-hwmon.c linux-rpi/drivers/hwmon/bcm2835-hwmon.c ---- linux-3.18.10/drivers/hwmon/bcm2835-hwmon.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/hwmon/bcm2835-hwmon.c 2015-03-26 11:46:50.124234326 +0100 +diff -Nur linux-3.18.14/drivers/hwmon/bcm2835-hwmon.c linux-rpi/drivers/hwmon/bcm2835-hwmon.c +--- linux-3.18.14/drivers/hwmon/bcm2835-hwmon.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/hwmon/bcm2835-hwmon.c 2015-05-31 14:46:10.469660984 -0500 @@ -0,0 +1,219 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -26402,9 +26797,9 @@ diff -Nur linux-3.18.10/drivers/hwmon/bcm2835-hwmon.c linux-rpi/drivers/hwmon/bc +MODULE_DESCRIPTION("HW Monitor driver for bcm2835 chip"); + +module_platform_driver(bcm2835_hwmon_driver); -diff -Nur linux-3.18.10/drivers/hwmon/Kconfig linux-rpi/drivers/hwmon/Kconfig ---- linux-3.18.10/drivers/hwmon/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/hwmon/Kconfig 2015-03-26 11:46:50.120234322 +0100 +diff -Nur linux-3.18.14/drivers/hwmon/Kconfig linux-rpi/drivers/hwmon/Kconfig +--- linux-3.18.14/drivers/hwmon/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/hwmon/Kconfig 2015-05-31 14:46:10.461660983 -0500 @@ -1680,6 +1680,16 @@ This driver provides support for the Ultra45 workstation environmental sensors. @@ -26422,9 +26817,9 @@ diff -Nur linux-3.18.10/drivers/hwmon/Kconfig linux-rpi/drivers/hwmon/Kconfig if ACPI comment "ACPI drivers" -diff -Nur linux-3.18.10/drivers/hwmon/Makefile linux-rpi/drivers/hwmon/Makefile ---- linux-3.18.10/drivers/hwmon/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/hwmon/Makefile 2015-03-26 11:46:50.120234322 +0100 +diff -Nur linux-3.18.14/drivers/hwmon/Makefile linux-rpi/drivers/hwmon/Makefile +--- linux-3.18.14/drivers/hwmon/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/hwmon/Makefile 2015-05-31 14:46:10.461660983 -0500 @@ -153,6 +153,7 @@ obj-$(CONFIG_SENSORS_W83L786NG) += w83l786ng.o obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o @@ -26433,10 +26828,10 @@ diff -Nur linux-3.18.10/drivers/hwmon/Makefile linux-rpi/drivers/hwmon/Makefile obj-$(CONFIG_PMBUS) += pmbus/ -diff -Nur linux-3.18.10/drivers/i2c/busses/i2c-bcm2708.c linux-rpi/drivers/i2c/busses/i2c-bcm2708.c ---- linux-3.18.10/drivers/i2c/busses/i2c-bcm2708.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/i2c/busses/i2c-bcm2708.c 2015-03-26 11:46:50.140234341 +0100 -@@ -0,0 +1,521 @@ +diff -Nur linux-3.18.14/drivers/i2c/busses/i2c-bcm2708.c linux-rpi/drivers/i2c/busses/i2c-bcm2708.c +--- linux-3.18.14/drivers/i2c/busses/i2c-bcm2708.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/i2c/busses/i2c-bcm2708.c 2015-05-31 14:46:10.493660983 -0500 +@@ -0,0 +1,522 @@ +/* + * Driver for Broadcom BCM2708 BSC Controllers + * @@ -26821,7 +27216,8 @@ diff -Nur linux-3.18.10/drivers/i2c/busses/i2c-bcm2708.c linux-rpi/drivers/i2c/b + goto out_clk_put; + } + -+ bcm2708_i2c_init_pinmode(pdev->id); ++ if (!pdev->dev.of_node) ++ bcm2708_i2c_init_pinmode(pdev->id); + + bi = kzalloc(sizeof(*bi), GFP_KERNEL); + if (!bi) @@ -26958,9 +27354,9 @@ diff -Nur linux-3.18.10/drivers/i2c/busses/i2c-bcm2708.c linux-rpi/drivers/i2c/b +MODULE_AUTHOR("Chris Boot <bootc@bootc.net>"); +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -diff -Nur linux-3.18.10/drivers/i2c/busses/Kconfig linux-rpi/drivers/i2c/busses/Kconfig ---- linux-3.18.10/drivers/i2c/busses/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/i2c/busses/Kconfig 2015-03-26 11:46:50.140234341 +0100 +diff -Nur linux-3.18.14/drivers/i2c/busses/Kconfig linux-rpi/drivers/i2c/busses/Kconfig +--- linux-3.18.14/drivers/i2c/busses/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/i2c/busses/Kconfig 2015-05-31 14:46:10.489660983 -0500 @@ -361,7 +361,7 @@ config I2C_BCM2835 @@ -26996,9 +27392,9 @@ diff -Nur linux-3.18.10/drivers/i2c/busses/Kconfig linux-rpi/drivers/i2c/busses/ config I2C_BCM_KONA tristate "BCM Kona I2C adapter" depends on ARCH_BCM_MOBILE -diff -Nur linux-3.18.10/drivers/i2c/busses/Makefile linux-rpi/drivers/i2c/busses/Makefile ---- linux-3.18.10/drivers/i2c/busses/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/i2c/busses/Makefile 2015-03-26 11:46:50.140234341 +0100 +diff -Nur linux-3.18.14/drivers/i2c/busses/Makefile linux-rpi/drivers/i2c/busses/Makefile +--- linux-3.18.14/drivers/i2c/busses/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/i2c/busses/Makefile 2015-05-31 14:46:10.489660983 -0500 @@ -33,6 +33,7 @@ obj-$(CONFIG_I2C_AU1550) += i2c-au1550.o obj-$(CONFIG_I2C_AXXIA) += i2c-axxia.o @@ -27007,9 +27403,9 @@ diff -Nur linux-3.18.10/drivers/i2c/busses/Makefile linux-rpi/drivers/i2c/busses obj-$(CONFIG_I2C_BLACKFIN_TWI) += i2c-bfin-twi.o obj-$(CONFIG_I2C_CADENCE) += i2c-cadence.o obj-$(CONFIG_I2C_CBUS_GPIO) += i2c-cbus-gpio.o -diff -Nur linux-3.18.10/drivers/leds/trigger/Kconfig linux-rpi/drivers/leds/trigger/Kconfig ---- linux-3.18.10/drivers/leds/trigger/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/leds/trigger/Kconfig 2015-03-26 11:46:50.276234466 +0100 +diff -Nur linux-3.18.14/drivers/leds/trigger/Kconfig linux-rpi/drivers/leds/trigger/Kconfig +--- linux-3.18.14/drivers/leds/trigger/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/leds/trigger/Kconfig 2015-05-31 14:46:10.769660981 -0500 @@ -108,4 +108,11 @@ This enables direct flash/torch on/off by the driver, kernel space. If unsure, say Y. @@ -27022,9 +27418,9 @@ diff -Nur linux-3.18.10/drivers/leds/trigger/Kconfig linux-rpi/drivers/leds/trig + If unsure, say Y. + endif # LEDS_TRIGGERS -diff -Nur linux-3.18.10/drivers/leds/trigger/ledtrig-input.c linux-rpi/drivers/leds/trigger/ledtrig-input.c ---- linux-3.18.10/drivers/leds/trigger/ledtrig-input.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/leds/trigger/ledtrig-input.c 2015-03-26 11:46:50.276234466 +0100 +diff -Nur linux-3.18.14/drivers/leds/trigger/ledtrig-input.c linux-rpi/drivers/leds/trigger/ledtrig-input.c +--- linux-3.18.14/drivers/leds/trigger/ledtrig-input.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/leds/trigger/ledtrig-input.c 2015-05-31 14:46:10.769660981 -0500 @@ -0,0 +1,65 @@ +/* + * Set LED GPIO to Input "Trigger" @@ -27091,17 +27487,17 @@ diff -Nur linux-3.18.10/drivers/leds/trigger/ledtrig-input.c linux-rpi/drivers/l +MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.org>"); +MODULE_DESCRIPTION("Set LED GPIO to Input \"trigger\""); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/leds/trigger/Makefile linux-rpi/drivers/leds/trigger/Makefile ---- linux-3.18.10/drivers/leds/trigger/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/leds/trigger/Makefile 2015-03-26 11:46:50.276234466 +0100 +diff -Nur linux-3.18.14/drivers/leds/trigger/Makefile linux-rpi/drivers/leds/trigger/Makefile +--- linux-3.18.14/drivers/leds/trigger/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/leds/trigger/Makefile 2015-05-31 14:46:10.769660981 -0500 @@ -8,3 +8,4 @@ obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o +obj-$(CONFIG_LEDS_TRIGGER_INPUT) += ledtrig-input.o -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/bcm2835-camera.c linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.c ---- linux-3.18.10/drivers/media/platform/bcm2835/bcm2835-camera.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.c 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/bcm2835-camera.c linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.c +--- linux-3.18.14/drivers/media/platform/bcm2835/bcm2835-camera.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.c 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,1828 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -28931,9 +29327,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/bcm2835-camera.c linux-rp + +module_init(bm2835_mmal_init); +module_exit(bm2835_mmal_exit); -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/bcm2835-camera.h linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.h ---- linux-3.18.10/drivers/media/platform/bcm2835/bcm2835-camera.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.h 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/bcm2835-camera.h linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.h +--- linux-3.18.14/drivers/media/platform/bcm2835/bcm2835-camera.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.h 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,126 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -29061,9 +29457,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/bcm2835-camera.h linux-rp + (pix_fmt)->pixelformat, (pix_fmt)->bytesperline, \ + (pix_fmt)->sizeimage, (pix_fmt)->colorspace, (pix_fmt)->priv); \ +} -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/controls.c linux-rpi/drivers/media/platform/bcm2835/controls.c ---- linux-3.18.10/drivers/media/platform/bcm2835/controls.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/controls.c 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/controls.c linux-rpi/drivers/media/platform/bcm2835/controls.c +--- linux-3.18.14/drivers/media/platform/bcm2835/controls.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/controls.c 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,1322 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -30387,9 +30783,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/controls.c linux-rpi/driv + + return 0; +} -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/Kconfig linux-rpi/drivers/media/platform/bcm2835/Kconfig ---- linux-3.18.10/drivers/media/platform/bcm2835/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/Kconfig 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/Kconfig linux-rpi/drivers/media/platform/bcm2835/Kconfig +--- linux-3.18.14/drivers/media/platform/bcm2835/Kconfig 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/Kconfig 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,25 @@ +# Broadcom VideoCore IV v4l2 camera support + @@ -30416,18 +30812,18 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/Kconfig linux-rpi/drivers + + +endif # VIDEO_BM2835 -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/Makefile linux-rpi/drivers/media/platform/bcm2835/Makefile ---- linux-3.18.10/drivers/media/platform/bcm2835/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/Makefile 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/Makefile linux-rpi/drivers/media/platform/bcm2835/Makefile +--- linux-3.18.14/drivers/media/platform/bcm2835/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/Makefile 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,5 @@ +bcm2835-v4l2-objs := bcm2835-camera.o controls.o mmal-vchiq.o + +obj-$(CONFIG_VIDEO_BCM2835_MMAL) += bcm2835-v4l2.o + +ccflags-$(CONFIG_VIDEO_BCM2835) += -Idrivers/misc/vc04_services -Idrivers/misc/vc04_services/interface/vcos/linuxkernel -D__VCCOREVER__=0x04000000 -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-common.h linux-rpi/drivers/media/platform/bcm2835/mmal-common.h ---- linux-3.18.10/drivers/media/platform/bcm2835/mmal-common.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/mmal-common.h 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/mmal-common.h linux-rpi/drivers/media/platform/bcm2835/mmal-common.h +--- linux-3.18.14/drivers/media/platform/bcm2835/mmal-common.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/mmal-common.h 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,53 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -30482,9 +30878,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-common.h linux-rpi/d + u32 v; +}; + -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-encodings.h linux-rpi/drivers/media/platform/bcm2835/mmal-encodings.h ---- linux-3.18.10/drivers/media/platform/bcm2835/mmal-encodings.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/mmal-encodings.h 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/mmal-encodings.h linux-rpi/drivers/media/platform/bcm2835/mmal-encodings.h +--- linux-3.18.14/drivers/media/platform/bcm2835/mmal-encodings.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/mmal-encodings.h 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,127 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -30613,9 +31009,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-encodings.h linux-rp +/* @} MmalColorSpace List */ + +#endif /* MMAL_ENCODINGS_H */ -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg-common.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-common.h ---- linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg-common.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-common.h 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/mmal-msg-common.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-common.h +--- linux-3.18.14/drivers/media/platform/bcm2835/mmal-msg-common.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-common.h 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,50 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -30667,9 +31063,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg-common.h linux-r +}; + +#endif /* MMAL_MSG_COMMON_H */ -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg-format.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-format.h ---- linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg-format.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-format.h 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/mmal-msg-format.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-format.h +--- linux-3.18.14/drivers/media/platform/bcm2835/mmal-msg-format.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-format.h 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,81 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -30752,9 +31148,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg-format.h linux-r +}; + +#endif /* MMAL_MSG_FORMAT_H */ -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg.h ---- linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg.h 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/mmal-msg.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg.h +--- linux-3.18.14/drivers/media/platform/bcm2835/mmal-msg.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg.h 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,404 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -31160,9 +31556,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg.h linux-rpi/driv + u8 payload[MMAL_MSG_MAX_PAYLOAD]; + } u; +}; -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg-port.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-port.h ---- linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg-port.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-port.h 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/mmal-msg-port.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-port.h +--- linux-3.18.14/drivers/media/platform/bcm2835/mmal-msg-port.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-port.h 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,107 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -31271,9 +31667,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-msg-port.h linux-rpi + */ + +}; -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-parameters.h linux-rpi/drivers/media/platform/bcm2835/mmal-parameters.h ---- linux-3.18.10/drivers/media/platform/bcm2835/mmal-parameters.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/mmal-parameters.h 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/mmal-parameters.h linux-rpi/drivers/media/platform/bcm2835/mmal-parameters.h +--- linux-3.18.14/drivers/media/platform/bcm2835/mmal-parameters.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/mmal-parameters.h 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,656 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -31931,9 +32327,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-parameters.h linux-r + u32 num_effect_params; + u32 effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS]; +}; -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-vchiq.c linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.c ---- linux-3.18.10/drivers/media/platform/bcm2835/mmal-vchiq.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.c 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/mmal-vchiq.c linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.c +--- linux-3.18.14/drivers/media/platform/bcm2835/mmal-vchiq.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.c 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,1916 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -33851,9 +34247,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-vchiq.c linux-rpi/dr + kfree(instance); + return -ENODEV; +} -diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-vchiq.h linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.h ---- linux-3.18.10/drivers/media/platform/bcm2835/mmal-vchiq.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.h 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/bcm2835/mmal-vchiq.h linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.h +--- linux-3.18.14/drivers/media/platform/bcm2835/mmal-vchiq.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.h 2015-05-31 14:46:10.937660979 -0500 @@ -0,0 +1,178 @@ +/* + * Broadcom BM2835 V4L2 driver @@ -34033,9 +34429,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/bcm2835/mmal-vchiq.h linux-rpi/dr + struct mmal_buffer *buf); + +#endif /* MMAL_VCHIQ_H */ -diff -Nur linux-3.18.10/drivers/media/platform/Kconfig linux-rpi/drivers/media/platform/Kconfig ---- linux-3.18.10/drivers/media/platform/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/media/platform/Kconfig 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/Kconfig linux-rpi/drivers/media/platform/Kconfig +--- linux-3.18.14/drivers/media/platform/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/media/platform/Kconfig 2015-05-31 14:46:10.937660979 -0500 @@ -124,6 +124,7 @@ source "drivers/media/platform/soc_camera/Kconfig" source "drivers/media/platform/exynos4-is/Kconfig" @@ -34044,9 +34440,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/Kconfig linux-rpi/drivers/media/p endif # V4L_PLATFORM_DRIVERS -diff -Nur linux-3.18.10/drivers/media/platform/Makefile linux-rpi/drivers/media/platform/Makefile ---- linux-3.18.10/drivers/media/platform/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/media/platform/Makefile 2015-03-26 11:46:50.408234586 +0100 +diff -Nur linux-3.18.14/drivers/media/platform/Makefile linux-rpi/drivers/media/platform/Makefile +--- linux-3.18.14/drivers/media/platform/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/media/platform/Makefile 2015-05-31 14:46:10.937660979 -0500 @@ -49,4 +49,6 @@ obj-y += omap/ @@ -34054,9 +34450,9 @@ diff -Nur linux-3.18.10/drivers/media/platform/Makefile linux-rpi/drivers/media/ +obj-$(CONFIG_VIDEO_BCM2835) += bcm2835/ + ccflags-y += -I$(srctree)/drivers/media/i2c -diff -Nur linux-3.18.10/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-rpi/drivers/media/usb/dvb-usb-v2/rtl28xxu.c ---- linux-3.18.10/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2015-03-26 11:46:50.560234730 +0100 +diff -Nur linux-3.18.14/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-rpi/drivers/media/usb/dvb-usb-v2/rtl28xxu.c +--- linux-3.18.14/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2015-05-31 14:46:11.029660978 -0500 @@ -1531,6 +1531,10 @@ &rtl2832u_props, "Compro VideoMate U620F", NULL) }, { DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394, @@ -34068,9 +34464,9 @@ diff -Nur linux-3.18.10/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-rpi/driver { DVB_USB_DEVICE(USB_VID_LEADTEK, 0x6a03, &rtl2832u_props, "Leadtek WinFast DTV Dongle mini", NULL) }, { DVB_USB_DEVICE(USB_VID_GTEK, USB_PID_CPYTO_REDI_PC50A, -diff -Nur linux-3.18.10/drivers/misc/Kconfig linux-rpi/drivers/misc/Kconfig ---- linux-3.18.10/drivers/misc/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/misc/Kconfig 2015-03-26 11:46:50.980235118 +0100 +diff -Nur linux-3.18.14/drivers/misc/Kconfig linux-rpi/drivers/misc/Kconfig +--- linux-3.18.14/drivers/misc/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/misc/Kconfig 2015-05-31 14:46:11.133660977 -0500 @@ -524,6 +524,7 @@ source "drivers/misc/altera-stapl/Kconfig" source "drivers/misc/mei/Kconfig" @@ -34079,9 +34475,9 @@ diff -Nur linux-3.18.10/drivers/misc/Kconfig linux-rpi/drivers/misc/Kconfig source "drivers/misc/mic/Kconfig" source "drivers/misc/genwqe/Kconfig" source "drivers/misc/echo/Kconfig" -diff -Nur linux-3.18.10/drivers/misc/Makefile linux-rpi/drivers/misc/Makefile ---- linux-3.18.10/drivers/misc/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/misc/Makefile 2015-03-26 11:46:50.980235118 +0100 +diff -Nur linux-3.18.14/drivers/misc/Makefile linux-rpi/drivers/misc/Makefile +--- linux-3.18.14/drivers/misc/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/misc/Makefile 2015-05-31 14:46:11.133660977 -0500 @@ -51,6 +51,7 @@ obj-$(CONFIG_VMWARE_VMCI) += vmw_vmci/ obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o @@ -34090,9 +34486,9 @@ diff -Nur linux-3.18.10/drivers/misc/Makefile linux-rpi/drivers/misc/Makefile obj-y += mic/ obj-$(CONFIG_GENWQE) += genwqe/ obj-$(CONFIG_ECHO) += echo/ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/connections/connection.h linux-rpi/drivers/misc/vc04_services/interface/vchi/connections/connection.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchi/connections/connection.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/connections/connection.h 2015-03-26 11:46:50.996235135 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchi/connections/connection.h linux-rpi/drivers/misc/vc04_services/interface/vchi/connections/connection.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchi/connections/connection.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/connections/connection.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,328 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -34422,9 +34818,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/connections/co +#endif /* CONNECTION_H_ */ + +/****************************** End of file **********************************/ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h linux-rpi/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h linux-rpi/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,204 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -34630,9 +35026,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/message_driver +#endif // _VCHI_MESSAGE_H_ + +/****************************** End of file ***********************************/ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,224 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -34858,9 +35254,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h lin +#endif /* VCHI_CFG_H_ */ + +/****************************** End of file **********************************/ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,71 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -34933,9 +35329,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_cfg_inter +//#define VCHI_RX_NANOLOCKS + +#endif /*VCHI_CFG_INTERNAL_H_*/ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_common.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_common.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_common.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_common.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi_common.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_common.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi_common.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_common.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,175 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -35112,9 +35508,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_common.h + + +#endif // VCHI_COMMON_H_ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,378 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -35494,9 +35890,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi.h linux-r +#endif /* VCHI_H_ */ + +/****************************** End of file **********************************/ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_mh.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_mh.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi_mh.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_mh.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -35540,9 +35936,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchi/vchi_mh.h linu +#define VCHI_MEM_HANDLE_INVALID 0 + +#endif -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,562 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -35645,7 +36041,7 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_283 + frag_mem_size = PAGE_ALIGN(sizeof(FRAGMENTS_T) * MAX_FRAGMENTS); + + g_slot_mem = dma_alloc_coherent(NULL, g_slot_mem_size + frag_mem_size, -+ &g_slot_phys, GFP_ATOMIC); ++ &g_slot_phys, GFP_KERNEL); + + if (!g_slot_mem) { + vchiq_log_error(vchiq_arm_log_level, @@ -36106,9 +36502,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_283 + + kfree(pagelist); +} -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -36152,9 +36548,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_283 +#define VCHIQ_PLATFORM_FRAGMENTS_COUNT_IDX 1 + +#endif /* VCHIQ_2835_H */ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,2884 @@ +/** + * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved. @@ -37934,7 +38330,7 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm +** VC_RESUME_FAILED - Currently unused - no mechanism to fail resume exists. +*/ + -+inline void ++void +set_suspend_state(VCHIQ_ARM_STATE_T *arm_state, + enum vc_suspend_status new_state) +{ @@ -37971,7 +38367,7 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm + } +} + -+inline void ++void +set_resume_state(VCHIQ_ARM_STATE_T *arm_state, + enum vc_resume_status new_state) +{ @@ -39040,9 +39436,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm +module_exit(vchiq_exit); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Broadcom Corporation"); -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,223 @@ +/** + * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved. @@ -39267,9 +39663,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm + + +#endif /* VCHIQ_ARM_H */ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -39308,9 +39704,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_bui +const char *vchiq_get_build_version(void); +const char *vchiq_get_build_time(void); +const char *vchiq_get_build_date(void); -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,69 @@ +/** + * Copyright (c) 2010-2014 Broadcom. All rights reserved. @@ -39381,9 +39777,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg +#endif + +#endif /* VCHIQ_CFG_H */ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,120 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -39505,9 +39901,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_con + mutex_unlock(&g_connected_mutex); +} +EXPORT_SYMBOL(vchiq_add_connected_callback); -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -39559,9 +39955,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_con +void vchiq_call_connected_callbacks(void); + +#endif /* VCHIQ_CONNECTED_H */ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,3934 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -43497,9 +43893,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cor + numBytes = 0; + } +} -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,712 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -44213,9 +44609,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cor + size_t numBytes); + +#endif -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,383 @@ +/** + * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved. @@ -44600,9 +44996,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_deb +} + +#endif /* CONFIG_DEBUG_FS */ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved. @@ -44656,9 +45052,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_deb +void vchiq_debugfs_remove_instance(VCHIQ_INSTANCE_T instance); + +#endif /* VCHIQ_DEBUGFS_H */ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,87 @@ +#!/usr/bin/perl -w + @@ -44747,9 +45143,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_gen + return vchiq_build_time; +} +EOF -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -44791,9 +45187,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h l +#include "vchiq_util.h" + +#endif -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,189 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -44984,9 +45380,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if. + short *peer_version); + +#endif /* VCHIQ_IF_H */ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,131 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -45119,9 +45515,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioc +#define VCHIQ_IOC_MAX 17 + +#endif -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,458 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -45581,9 +45977,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ker + + return status; +} -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,69 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -45654,9 +46050,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kil +#define mutex_lock_interruptible mutex_lock_interruptible_killable + +#endif -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,71 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -45729,9 +46125,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_mem + const VCHIQ_PLATFORM_DATA_T * platform_data); + +#endif -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -45791,9 +46187,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pag +} FRAGMENTS_T; + +#endif /* VCHIQ_PAGELIST_H */ -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,860 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -46655,9 +47051,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shi + return ret; +} +EXPORT_SYMBOL(vchi_service_release); -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,152 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -46811,9 +47207,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_uti + + return header; +} -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,81 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -46896,9 +47292,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_uti +extern VCHIQ_HEADER_T *vchiu_queue_pop(VCHIU_QUEUE_T *queue); + +#endif -diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c ---- linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 2015-03-26 11:46:51.088235219 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c +--- linux-3.18.14/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 2015-05-31 14:46:11.157660977 -0500 @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. @@ -46959,9 +47355,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ver +{ + return vchiq_build_time; +} -diff -Nur linux-3.18.10/drivers/misc/vc04_services/Kconfig linux-rpi/drivers/misc/vc04_services/Kconfig ---- linux-3.18.10/drivers/misc/vc04_services/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/Kconfig 2015-03-26 11:46:50.996235135 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/Kconfig linux-rpi/drivers/misc/vc04_services/Kconfig +--- linux-3.18.14/drivers/misc/vc04_services/Kconfig 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/Kconfig 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,9 @@ +config BCM2708_VCHIQ + tristate "Videocore VCHIQ" @@ -46972,9 +47368,9 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/Kconfig linux-rpi/drivers/mis + BCM2708 family of products. + Defaults to Y when the Broadcom Videocore services + are included in the build, N otherwise. -diff -Nur linux-3.18.10/drivers/misc/vc04_services/Makefile linux-rpi/drivers/misc/vc04_services/Makefile ---- linux-3.18.10/drivers/misc/vc04_services/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/misc/vc04_services/Makefile 2015-03-26 11:46:50.996235135 +0100 +diff -Nur linux-3.18.14/drivers/misc/vc04_services/Makefile linux-rpi/drivers/misc/vc04_services/Makefile +--- linux-3.18.14/drivers/misc/vc04_services/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/misc/vc04_services/Makefile 2015-05-31 14:46:11.153660977 -0500 @@ -0,0 +1,14 @@ +obj-$(CONFIG_BCM2708_VCHIQ) += vchiq.o + @@ -46990,23 +47386,43 @@ diff -Nur linux-3.18.10/drivers/misc/vc04_services/Makefile linux-rpi/drivers/mi + +ccflags-y += -DVCOS_VERIFY_BKPTS=1 -Idrivers/misc/vc04_services -DUSE_VCHIQ_ARM -D__VCCOREVER__=0x04000000 + -diff -Nur linux-3.18.10/drivers/mmc/core/quirks.c linux-rpi/drivers/mmc/core/quirks.c ---- linux-3.18.10/drivers/mmc/core/quirks.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/mmc/core/quirks.c 2015-03-26 11:46:51.092235223 +0100 -@@ -95,5 +95,9 @@ +diff -Nur linux-3.18.14/drivers/mmc/card/block.c linux-rpi/drivers/mmc/card/block.c +--- linux-3.18.14/drivers/mmc/card/block.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/mmc/card/block.c 2015-05-31 14:46:11.157660977 -0500 +@@ -1406,6 +1406,7 @@ + brq->data.blocks = card->host->ops->multi_io_quirk(card, + (rq_data_dir(req) == READ) ? + MMC_DATA_READ : MMC_DATA_WRITE, ++ blk_rq_pos(req), + brq->data.blocks); + } + +diff -Nur linux-3.18.14/drivers/mmc/core/quirks.c linux-rpi/drivers/mmc/core/quirks.c +--- linux-3.18.14/drivers/mmc/core/quirks.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/mmc/core/quirks.c 2015-05-31 14:46:11.161660977 -0500 +@@ -71,6 +71,7 @@ + + void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table) + { ++ extern unsigned mmc_debug; + const struct mmc_fixup *f; + u64 rev = cid_rev_card(card); + +@@ -95,5 +96,10 @@ f->vendor_fixup(card, f->data); } } + /* SDHCI on BCM2708 - bug causes a certain sequence of CMD23 operations to fail. + * Disable this flag for all cards (fall-back to CMD25/CMD18 multi-block transfers). + */ ++ if (mmc_debug & (1<<13)) + card->quirks |= MMC_QUIRK_BLK_NO_CMD23; } EXPORT_SYMBOL(mmc_fixup_device); -diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/host/bcm2835-mmc.c ---- linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/mmc/host/bcm2835-mmc.c 2015-03-26 11:46:51.092235223 +0100 -@@ -0,0 +1,1557 @@ +diff -Nur linux-3.18.14/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/host/bcm2835-mmc.c +--- linux-3.18.14/drivers/mmc/host/bcm2835-mmc.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/mmc/host/bcm2835-mmc.c 2015-05-31 14:46:11.165660977 -0500 +@@ -0,0 +1,1563 @@ +/* + * BCM2835 MMC host driver. + * @@ -47051,10 +47467,6 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos +#include "sdhci.h" + + -+#ifndef CONFIG_ARCH_BCM2835 -+ #define BCM2835_CLOCK_FREQ 250000000 -+#endif -+ +#define DRIVER_NAME "mmc-bcm2835" + +#define DBG(f, x...) \ @@ -47084,6 +47496,9 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos +#define BCM2835_VCMMU_SHIFT (0x7E000000 - BCM2708_PERI_BASE) + + ++/*static */unsigned mmc_debug; ++/*static */unsigned mmc_debug2; ++ +struct bcm2835_host { + spinlock_t lock; + @@ -47145,22 +47560,38 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos +#define SDHCI_PV_ENABLED (1<<8) /* Preset value enabled */ +#define SDHCI_SDIO_IRQ_ENABLED (1<<9) /* SDIO irq enabled */ +#define SDHCI_USE_PLATDMA (1<<12) /* Host uses 3rd party DMA */ ++ ++ u32 overclock_50; /* frequency to use when 50MHz is requested (in MHz) */ ++ u32 max_overclock; /* Highest reported */ +}; + + -+static inline void bcm2835_mmc_writel(struct bcm2835_host *host, u32 val, int reg) ++static inline void bcm2835_mmc_writel(struct bcm2835_host *host, u32 val, int reg, int from) +{ ++ u32 delay; ++ lockdep_assert_held_once(&host->lock); + writel(val, host->ioaddr + reg); + udelay(BCM2835_SDHCI_WRITE_DELAY(max(host->clock, MIN_FREQ))); ++ ++ delay = ((mmc_debug >> 16) & 0xf) << ((mmc_debug >> 20) & 0xf); ++ if (delay && !((1<<from) & mmc_debug2)) ++ udelay(delay); +} + +static inline void mmc_raw_writel(struct bcm2835_host *host, u32 val, int reg) +{ ++ u32 delay; ++ lockdep_assert_held_once(&host->lock); + writel(val, host->ioaddr + reg); ++ ++ delay = ((mmc_debug >> 24) & 0xf) << ((mmc_debug >> 28) & 0xf); ++ if (delay) ++ udelay(delay); +} + +static inline u32 bcm2835_mmc_readl(struct bcm2835_host *host, int reg) +{ ++ lockdep_assert_held_once(&host->lock); + return readl(host->ioaddr + reg); +} + @@ -47176,7 +47607,7 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + if (reg == SDHCI_TRANSFER_MODE) + host->shadow = newval; + else -+ bcm2835_mmc_writel(host, newval, reg & ~3); ++ bcm2835_mmc_writel(host, newval, reg & ~3, 0); + +} + @@ -47188,7 +47619,7 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + u32 mask = 0xff << byte_shift; + u32 newval = (oldval & ~mask) | (val << byte_shift); + -+ bcm2835_mmc_writel(host, newval, reg & ~3); ++ bcm2835_mmc_writel(host, newval, reg & ~3, 1); +} + + @@ -47220,7 +47651,7 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + ier &= ~clear; + /* change which requests generate IRQs - makes no difference to + the content of SDHCI_INT_STATUS, or the need to acknowledge IRQs */ -+ bcm2835_mmc_writel(host, ier, SDHCI_SIGNAL_ENABLE); ++ bcm2835_mmc_writel(host, ier, SDHCI_SIGNAL_ENABLE, 2); +} + + @@ -47272,7 +47703,9 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos +static void bcm2835_mmc_reset(struct bcm2835_host *host, u8 mask) +{ + unsigned long timeout; ++ unsigned long flags; + ++ spin_lock_irqsave(&host->lock, flags); + bcm2835_mmc_writeb(host, mask, SDHCI_SOFTWARE_RESET); + + if (mask & SDHCI_RESET_ALL) @@ -47290,19 +47723,23 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + return; + } + timeout--; ++ spin_unlock_irqrestore(&host->lock, flags); + mdelay(1); ++ spin_lock_irqsave(&host->lock, flags); + } + + if (100-timeout > 10 && 100-timeout > host->max_delay) { + host->max_delay = 100-timeout; + pr_warning("Warning: MMC controller hung for %d ms\n", host->max_delay); + } ++ spin_unlock_irqrestore(&host->lock, flags); +} + +static void bcm2835_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios); + +static void bcm2835_mmc_init(struct bcm2835_host *host, int soft) +{ ++ unsigned long flags; + if (soft) + bcm2835_mmc_reset(host, SDHCI_RESET_CMD|SDHCI_RESET_DATA); + else @@ -47314,8 +47751,10 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + SDHCI_INT_TIMEOUT | SDHCI_INT_DATA_END | + SDHCI_INT_RESPONSE; + -+ bcm2835_mmc_writel(host, host->ier, SDHCI_INT_ENABLE); -+ bcm2835_mmc_writel(host, host->ier, SDHCI_SIGNAL_ENABLE); ++ spin_lock_irqsave(&host->lock, flags); ++ bcm2835_mmc_writel(host, host->ier, SDHCI_INT_ENABLE, 3); ++ bcm2835_mmc_writel(host, host->ier, SDHCI_SIGNAL_ENABLE, 3); ++ spin_unlock_irqrestore(&host->lock, flags); + + if (soft) { + /* force clock reconfiguration */ @@ -47514,11 +47953,14 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + dev_err(mmc_dev(host->mmc), "dma_map_sg returned zero length\n"); + } + if (desc) { ++ unsigned long flags; ++ spin_lock_irqsave(&host->lock, flags); + bcm2835_mmc_unsignal_irqs(host, SDHCI_INT_DATA_AVAIL | + SDHCI_INT_SPACE_AVAIL); + host->tx_desc = desc; + desc->callback = bcm2835_mmc_dma_complete; + desc->callback_param = host; ++ spin_unlock_irqrestore(&host->lock, flags); + dmaengine_submit(desc); + dma_async_issue_pending(dma_chan); + } @@ -47537,8 +47979,8 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + else + host->ier = (host->ier & ~dma_irqs) | pio_irqs; + -+ bcm2835_mmc_writel(host, host->ier, SDHCI_INT_ENABLE); -+ bcm2835_mmc_writel(host, host->ier, SDHCI_SIGNAL_ENABLE); ++ bcm2835_mmc_writel(host, host->ier, SDHCI_INT_ENABLE, 4); ++ bcm2835_mmc_writel(host, host->ier, SDHCI_SIGNAL_ENABLE, 4); +} + + @@ -47620,7 +48062,7 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + mode |= SDHCI_TRNS_AUTO_CMD12; + else if (host->mrq->sbc && (host->flags & SDHCI_AUTO_CMD23)) { + mode |= SDHCI_TRNS_AUTO_CMD23; -+ bcm2835_mmc_writel(host, host->mrq->sbc->arg, SDHCI_ARGUMENT2); ++ bcm2835_mmc_writel(host, host->mrq->sbc->arg, SDHCI_ARGUMENT2, 5); + } + } + @@ -47683,7 +48125,7 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + + bcm2835_mmc_prepare_data(host, cmd); + -+ bcm2835_mmc_writel(host, cmd->arg, SDHCI_ARGUMENT); ++ bcm2835_mmc_writel(host, cmd->arg, SDHCI_ARGUMENT, 6); + + bcm2835_mmc_set_transfer_mode(host, cmd); + @@ -47840,8 +48282,8 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + else + host->ier &= ~SDHCI_INT_CARD_INT; + -+ bcm2835_mmc_writel(host, host->ier, SDHCI_INT_ENABLE); -+ bcm2835_mmc_writel(host, host->ier, SDHCI_SIGNAL_ENABLE); ++ bcm2835_mmc_writel(host, host->ier, SDHCI_INT_ENABLE, 7); ++ bcm2835_mmc_writel(host, host->ier, SDHCI_SIGNAL_ENABLE, 7); + mmiowb(); + } +} @@ -47988,7 +48430,7 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + /* Clear selected interrupts. */ + mask = intmask & (SDHCI_INT_CMD_MASK | SDHCI_INT_DATA_MASK | + SDHCI_INT_BUS_POWER); -+ bcm2835_mmc_writel(host, mask, SDHCI_INT_STATUS); ++ bcm2835_mmc_writel(host, mask, SDHCI_INT_STATUS, 8); + + + if (intmask & SDHCI_INT_CMD_MASK) @@ -48018,7 +48460,7 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + + if (intmask) { + unexpected |= intmask; -+ bcm2835_mmc_writel(host, intmask, SDHCI_INT_STATUS); ++ bcm2835_mmc_writel(host, intmask, SDHCI_INT_STATUS, 9); + } + + if (result == IRQ_NONE) @@ -48076,7 +48518,10 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + int real_div = div, clk_mul = 1; + u16 clk = 0; + unsigned long timeout; ++ unsigned int input_clock = clock; + ++ if (host->overclock_50 && (clock == 50000000)) ++ clock = host->overclock_50 * 1000000 + 999999; + + host->mmc->actual_clock = 0; + @@ -48100,7 +48545,14 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + div >>= 1; + + if (real_div) -+ host->mmc->actual_clock = (host->max_clk * clk_mul) / real_div; ++ clock = (host->max_clk * clk_mul) / real_div; ++ host->mmc->actual_clock = clock; ++ ++ if ((clock > input_clock) && (clock > host->max_overclock)) { ++ pr_warn("%s: Overclocking to %dHz\n", ++ mmc_hostname(host->mmc), clock); ++ host->max_overclock = clock; ++ } + + clk |= (div & SDHCI_DIV_MASK) << SDHCI_DIVIDER_SHIFT; + clk |= ((div & SDHCI_DIV_HI_MASK) >> SDHCI_DIV_MASK_LEN) @@ -48167,6 +48619,9 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + u8 ctrl; + u16 clk, ctrl_2; + ++ pr_debug("bcm2835_mmc_set_ios: clock %d, pwr %d, bus_width %d, timing %d, vdd %d, drv_type %d\n", ++ ios->clock, ios->power_mode, ios->bus_width, ++ ios->timing, ios->signal_voltage, ios->drv_type); + + spin_lock_irqsave(&host->lock, flags); + @@ -48260,8 +48715,10 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + (mrq->data && (mrq->data->error || + (mrq->data->stop && mrq->data->stop->error))))) { + ++ spin_unlock_irqrestore(&host->lock, flags); + bcm2835_mmc_reset(host, SDHCI_RESET_CMD); + bcm2835_mmc_reset(host, SDHCI_RESET_DATA); ++ spin_lock_irqsave(&host->lock, flags); + } + + host->mrq = NULL; @@ -48276,21 +48733,19 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + + + -+int bcm2835_mmc_add_host(struct bcm2835_host *host) ++static int bcm2835_mmc_add_host(struct bcm2835_host *host) +{ -+ struct mmc_host *mmc; ++ struct mmc_host *mmc = host->mmc; ++ struct device *dev = mmc->parent; +#ifndef FORCE_PIO + struct dma_slave_config cfg; +#endif + int ret; + -+ mmc = host->mmc; -+ + bcm2835_mmc_reset(host, SDHCI_RESET_ALL); + + host->clk_mul = 0; + -+ mmc->ops = &bcm2835_ops; + mmc->f_max = host->max_clk; + mmc->f_max = host->max_clk; + mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_300; @@ -48306,19 +48761,19 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + + host->flags = SDHCI_AUTO_CMD23; + -+ spin_lock_init(&host->lock); -+ -+ ++ if (mmc_debug || mmc_debug2) ++ pr_info("mmc_debug:%x mmc_debug2:%x\n", mmc_debug, mmc_debug2); +#ifdef FORCE_PIO -+ pr_info("Forcing PIO mode\n"); ++ dev_info(dev, "Forcing PIO mode\n"); + host->have_dma = false; +#else -+ if (!host->dma_chan_tx || !host->dma_chan_rx || -+ IS_ERR(host->dma_chan_tx) || IS_ERR(host->dma_chan_rx)) { -+ pr_err("%s: Unable to initialise DMA channels. Falling back to PIO\n", DRIVER_NAME); ++ if (IS_ERR_OR_NULL(host->dma_chan_tx) || ++ IS_ERR_OR_NULL(host->dma_chan_rx)) { ++ dev_err(dev, "%s: Unable to initialise DMA channels. Falling back to PIO\n", ++ DRIVER_NAME); + host->have_dma = false; + } else { -+ pr_info("DMA channels allocated for the MMC driver"); ++ dev_info(dev, "DMA channels allocated"); + host->have_dma = true; + + cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; @@ -48336,8 +48791,6 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + ret = dmaengine_slave_config(host->dma_chan_rx, &cfg); + } +#endif -+ -+ + mmc->max_segs = 128; + mmc->max_req_size = 524288; + mmc->max_seg_size = mmc->max_req_size; @@ -48355,23 +48808,21 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + + bcm2835_mmc_init(host, 0); +#ifndef CONFIG_ARCH_BCM2835 -+ ret = request_irq(host->irq, bcm2835_mmc_irq, 0 /*IRQF_SHARED*/, -+ mmc_hostname(mmc), host); ++ ret = devm_request_irq(dev, host->irq, bcm2835_mmc_irq, 0, ++ mmc_hostname(mmc), host); +#else -+ ret = request_threaded_irq(host->irq, bcm2835_mmc_irq, bcm2835_mmc_thread_irq, -+ IRQF_SHARED, mmc_hostname(mmc), host); ++ ret = devm_request_threaded_irq(dev, host->irq, bcm2835_mmc_irq, ++ bcm2835_mmc_thread_irq, IRQF_SHARED, ++ mmc_hostname(mmc), host); +#endif + if (ret) { -+ pr_err("%s: Failed to request IRQ %d: %d\n", -+ mmc_hostname(mmc), host->irq, ret); ++ dev_err(dev, "Failed to request IRQ %d: %d\n", host->irq, ret); + goto untasklet; + } + + mmiowb(); + mmc_add_host(mmc); + -+ pr_info("Load BCM2835 MMC driver\n"); -+ + return 0; + +untasklet: @@ -48383,118 +48834,89 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos +static int bcm2835_mmc_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; -+#ifdef CONFIG_ARCH_BCM2835 + struct device_node *node = dev->of_node; + struct clk *clk; -+#endif + struct resource *iomem; -+ struct bcm2835_host *host = NULL; -+ -+ int ret; ++ struct bcm2835_host *host; + struct mmc_host *mmc; -+#if !defined(CONFIG_ARCH_BCM2835) && !defined(FORCE_PIO) -+ dma_cap_mask_t mask; -+#endif -+ -+ iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0); -+ if (!iomem) { -+ ret = -ENOMEM; -+ goto err; -+ } ++ int ret; + -+ if (resource_size(iomem) < 0x100) -+ dev_err(&pdev->dev, "Invalid iomem size!\n"); ++ mmc = mmc_alloc_host(sizeof(*host), dev); ++ if (!mmc) ++ return -ENOMEM; + -+ mmc = mmc_alloc_host(sizeof(struct bcm2835_host), dev); ++ mmc->ops = &bcm2835_ops; + host = mmc_priv(mmc); + host->mmc = mmc; ++ host->timeout = msecs_to_jiffies(1000); ++ spin_lock_init(&host->lock); + -+ -+ if (IS_ERR(host)) { -+ ret = PTR_ERR(host); ++ iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0); ++ host->ioaddr = devm_ioremap_resource(dev, iomem); ++ if (IS_ERR(host->ioaddr)) { ++ ret = PTR_ERR(host->ioaddr); + goto err; + } + + host->phys_addr = iomem->start + BCM2835_VCMMU_SHIFT; + -+#ifndef CONFIG_ARCH_BCM2835 +#ifndef FORCE_PIO -+ dma_cap_zero(mask); -+ /* we don't care about the channel, any would work */ -+ dma_cap_set(DMA_SLAVE, mask); -+ -+ host->dma_chan_tx = dma_request_channel(mask, NULL, NULL); -+ host->dma_chan_rx = dma_request_channel(mask, NULL, NULL); -+#endif -+ host->max_clk = BCM2835_CLOCK_FREQ; ++ if (node && of_property_read_bool(node, "dmas")) { ++ host->dma_chan_tx = of_dma_request_slave_channel(node, "tx"); ++ host->dma_chan_rx = of_dma_request_slave_channel(node, "rx"); ++ } else { ++ dma_cap_mask_t mask; + -+#else -+#ifndef FORCE_PIO -+ host->dma_chan_tx = of_dma_request_slave_channel(node, "tx"); -+ host->dma_chan_rx = of_dma_request_slave_channel(node, "rx"); ++ dma_cap_zero(mask); ++ /* we don't care about the channel, any would work */ ++ dma_cap_set(DMA_SLAVE, mask); ++ host->dma_chan_tx = dma_request_channel(mask, NULL, NULL); ++ host->dma_chan_rx = dma_request_channel(mask, NULL, NULL); ++ } +#endif -+ clk = of_clk_get(node, 0); ++ clk = devm_clk_get(dev, NULL); + if (IS_ERR(clk)) { -+ dev_err(dev, "get CLOCK failed\n"); ++ dev_err(dev, "could not get clk\n"); + ret = PTR_ERR(clk); -+ goto out; -+ } -+ host->max_clk = (clk_get_rate(clk)); -+#endif -+ host->irq = platform_get_irq(pdev, 0); -+ -+ if (!request_mem_region(iomem->start, resource_size(iomem), -+ mmc_hostname(host->mmc))) { -+ dev_err(&pdev->dev, "cannot request region\n"); -+ ret = -EBUSY; -+ goto err_request; -+ } -+ -+ host->ioaddr = ioremap(iomem->start, resource_size(iomem)); -+ if (!host->ioaddr) { -+ dev_err(&pdev->dev, "failed to remap registers\n"); -+ ret = -ENOMEM; -+ goto err_remap; ++ goto err; + } + -+ platform_set_drvdata(pdev, host); -+ ++ host->max_clk = clk_get_rate(clk); + ++ host->irq = platform_get_irq(pdev, 0); + if (host->irq <= 0) { + dev_err(dev, "get IRQ failed\n"); + ret = -EINVAL; -+ goto out; ++ goto err; + } + ++ if (node) { ++ mmc_of_parse(mmc); + -+#ifndef CONFIG_ARCH_BCM2835 -+ mmc->caps |= MMC_CAP_4_BIT_DATA; -+#else -+ mmc_of_parse(mmc); -+#endif -+ host->timeout = msecs_to_jiffies(1000); -+ spin_lock_init(&host->lock); -+ mmc->ops = &bcm2835_ops; -+ return bcm2835_mmc_add_host(host); ++ /* Read any custom properties */ ++ of_property_read_u32(node, ++ "brcm,overclock-50", ++ &host->overclock_50); ++ } else { ++ mmc->caps |= MMC_CAP_4_BIT_DATA; ++ } + ++ ret = bcm2835_mmc_add_host(host); ++ if (ret) ++ goto err; + -+err_remap: -+ release_mem_region(iomem->start, resource_size(iomem)); -+err_request: -+ mmc_free_host(host->mmc); ++ platform_set_drvdata(pdev, host); ++ ++ return 0; +err: -+ dev_err(&pdev->dev, "%s failed %d\n", __func__, ret); -+ return ret; -+out: -+ if (mmc) -+ mmc_free_host(mmc); ++ mmc_free_host(mmc); ++ + return ret; +} + +static int bcm2835_mmc_remove(struct platform_device *pdev) +{ + struct bcm2835_host *host = platform_get_drvdata(pdev); -+ struct resource *iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + unsigned long flags; + int dead; + u32 scratch; @@ -48532,8 +48954,6 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos + + tasklet_kill(&host->finish_tasklet); + -+ iounmap(host->ioaddr); -+ release_mem_region(iomem->start, resource_size(iomem)); + mmc_free_host(host->mmc); + platform_set_drvdata(pdev, NULL); + @@ -48560,38 +48980,1732 @@ diff -Nur linux-3.18.10/drivers/mmc/host/bcm2835-mmc.c linux-rpi/drivers/mmc/hos +}; +module_platform_driver(bcm2835_mmc_driver); + ++module_param(mmc_debug, uint, 0644); ++module_param(mmc_debug2, uint, 0644); +MODULE_ALIAS("platform:mmc-bcm2835"); +MODULE_DESCRIPTION("BCM2835 SDHCI driver"); +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Gellert Weisz"); -diff -Nur linux-3.18.10/drivers/mmc/host/Kconfig linux-rpi/drivers/mmc/host/Kconfig ---- linux-3.18.10/drivers/mmc/host/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/mmc/host/Kconfig 2015-03-26 11:46:51.092235223 +0100 -@@ -281,17 +281,6 @@ - - If you have a controller with this interface, say Y or M here. +diff -Nur linux-3.18.14/drivers/mmc/host/bcm2835-sdhost.c linux-rpi/drivers/mmc/host/bcm2835-sdhost.c +--- linux-3.18.14/drivers/mmc/host/bcm2835-sdhost.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/mmc/host/bcm2835-sdhost.c 2015-05-31 14:46:11.165660977 -0500 +@@ -0,0 +1,1706 @@ ++/* ++ * BCM2835 SD host driver. ++ * ++ * Author: Phil Elwell <phil@raspberrypi.org> ++ * Copyright 2015 ++ * ++ * Based on ++ * mmc-bcm2835.c by Gellert Weisz ++ * which is, in turn, based on ++ * sdhci-bcm2708.c by Broadcom ++ * sdhci-bcm2835.c by Stephen Warren and Oleksandr Tymoshenko ++ * sdhci.c and sdhci-pci.c by Pierre Ossman ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms and conditions of the GNU General Public License, ++ * version 2, as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope it will be useful, but WITHOUT ++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for ++ * more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see <http://www.gnu.org/licenses/>. ++ */ ++ ++#define SAFE_READ_THRESHOLD 4 ++#define SAFE_WRITE_THRESHOLD 4 ++#define ALLOW_DMA 1 ++#define ALLOW_CMD23 0 ++#define ALLOW_FAST 1 ++#define USE_BLOCK_IRQ 1 ++ ++#include <linux/delay.h> ++#include <linux/module.h> ++#include <linux/io.h> ++#include <linux/mmc/mmc.h> ++#include <linux/mmc/host.h> ++#include <linux/mmc/sd.h> ++#include <linux/scatterlist.h> ++#include <linux/of_address.h> ++#include <linux/of_irq.h> ++#include <linux/clk.h> ++#include <linux/platform_device.h> ++#include <linux/err.h> ++#include <linux/blkdev.h> ++#include <linux/dmaengine.h> ++#include <linux/dma-mapping.h> ++#include <linux/of_dma.h> ++#include <linux/time.h> ++ ++#define DRIVER_NAME "sdhost-bcm2835" ++ ++#define SDCMD 0x00 /* Command to SD card - 16 R/W */ ++#define SDARG 0x04 /* Argument to SD card - 32 R/W */ ++#define SDTOUT 0x08 /* Start value for timeout counter - 32 R/W */ ++#define SDCDIV 0x0c /* Start value for clock divider - 11 R/W */ ++#define SDRSP0 0x10 /* SD card response (31:0) - 32 R */ ++#define SDRSP1 0x14 /* SD card response (63:32) - 32 R */ ++#define SDRSP2 0x18 /* SD card response (95:64) - 32 R */ ++#define SDRSP3 0x1c /* SD card response (127:96) - 32 R */ ++#define SDHSTS 0x20 /* SD host status - 11 R */ ++#define SDVDD 0x30 /* SD card power control - 1 R/W */ ++#define SDEDM 0x34 /* Emergency Debug Mode - 13 R/W */ ++#define SDHCFG 0x38 /* Host configuration - 2 R/W */ ++#define SDHBCT 0x3c /* Host byte count (debug) - 32 R/W */ ++#define SDDATA 0x40 /* Data to/from SD card - 32 R/W */ ++#define SDHBLC 0x50 /* Host block count (SDIO/SDHC) - 9 R/W */ ++ ++#define SDCMD_NEW_FLAG 0x8000 ++#define SDCMD_FAIL_FLAG 0x4000 ++#define SDCMD_BUSYWAIT 0x800 ++#define SDCMD_NO_RESPONSE 0x400 ++#define SDCMD_LONG_RESPONSE 0x200 ++#define SDCMD_WRITE_CMD 0x80 ++#define SDCMD_READ_CMD 0x40 ++#define SDCMD_CMD_MASK 0x3f ++ ++#define SDCDIV_MAX_CDIV 0x7ff ++ ++#define SDHSTS_BUSY_IRPT 0x400 ++#define SDHSTS_BLOCK_IRPT 0x200 ++#define SDHSTS_SDIO_IRPT 0x100 ++#define SDHSTS_REW_TIME_OUT 0x80 ++#define SDHSTS_CMD_TIME_OUT 0x40 ++#define SDHSTS_CRC16_ERROR 0x20 ++#define SDHSTS_CRC7_ERROR 0x10 ++#define SDHSTS_FIFO_ERROR 0x08 ++/* Reserved */ ++/* Reserved */ ++#define SDHSTS_DATA_FLAG 0x01 ++ ++#define SDHSTS_TRANSFER_ERROR_MASK (SDHSTS_CRC16_ERROR|SDHSTS_REW_TIME_OUT|SDHSTS_FIFO_ERROR) ++#define SDHSTS_ERROR_MASK (SDHSTS_CMD_TIME_OUT|SDHSTS_TRANSFER_ERROR_MASK) ++/* SDHSTS_CRC7_ERROR - ignore this as MMC cards generate this spuriously */ ++ ++#define SDHCFG_BUSY_IRPT_EN (1<<10) ++#define SDHCFG_BLOCK_IRPT_EN (1<<8) ++#define SDHCFG_SDIO_IRPT_EN (1<<5) ++#define SDHCFG_DATA_IRPT_EN (1<<4) ++#define SDHCFG_SLOW_CARD (1<<3) ++#define SDHCFG_WIDE_EXT_BUS (1<<2) ++#define SDHCFG_WIDE_INT_BUS (1<<1) ++#define SDHCFG_REL_CMD_LINE (1<<0) ++ ++#define SDEDM_FORCE_DATA_MODE (1<<19) ++#define SDEDM_CLOCK_PULSE (1<<20) ++#define SDEDM_BYPASS (1<<21) ++ ++#define SDEDM_WRITE_THRESHOLD_SHIFT 9 ++#define SDEDM_READ_THRESHOLD_SHIFT 14 ++#define SDEDM_THRESHOLD_MASK 0x1f ++ ++/* the inclusive limit in bytes under which PIO will be used instead of DMA */ ++#ifdef CONFIG_MMC_BCM2835_SDHOST_PIO_DMA_BARRIER ++#define PIO_DMA_BARRIER CONFIG_MMC_BCM2835_SDHOST_PIO_DMA_BARRIER ++#else ++#define PIO_DMA_BARRIER 0 ++#endif ++ ++#define MIN_FREQ 400000 ++#define TIMEOUT_VAL 0xE ++#define BCM2835_SDHOST_WRITE_DELAY(f) (((2 * 1000000) / f) + 1) ++ ++#ifndef BCM2708_PERI_BASE ++ #define BCM2708_PERI_BASE 0x20000000 ++#endif ++ ++/* FIXME: Needs IOMMU support */ ++#define BCM2835_VCMMU_SHIFT (0x7E000000 - BCM2708_PERI_BASE) ++ ++ ++struct bcm2835_host { ++ spinlock_t lock; ++ ++ void __iomem *ioaddr; ++ u32 phys_addr; ++ ++ struct mmc_host *mmc; ++ ++ u32 timeout; ++ ++ int clock; /* Current clock speed */ ++ ++ bool slow_card; /* Force 11-bit divisor */ ++ ++ unsigned int max_clk; /* Max possible freq */ ++ unsigned int timeout_clk; /* Timeout freq (KHz) */ ++ ++ struct tasklet_struct finish_tasklet; /* Tasklet structures */ ++ ++ struct timer_list timer; /* Timer for timeouts */ ++ ++ struct sg_mapping_iter sg_miter; /* SG state for PIO */ ++ unsigned int blocks; /* remaining PIO blocks */ ++ ++ int irq; /* Device IRQ */ ++ ++ ++ /* cached registers */ ++ u32 hcfg; ++ u32 cdiv; ++ ++ struct mmc_request *mrq; /* Current request */ ++ struct mmc_command *cmd; /* Current command */ ++ struct mmc_data *data; /* Current data request */ ++ unsigned int data_complete:1; /* Data finished before cmd */ ++ ++ unsigned int flush_fifo:1; /* Drain the fifo when finishing */ ++ ++ unsigned int use_busy:1; /* Wait for busy interrupt */ ++ ++ u32 thread_isr; ++ ++ /*DMA part*/ ++ struct dma_chan *dma_chan_rx; /* DMA channel for reads */ ++ struct dma_chan *dma_chan_tx; /* DMA channel for writes */ ++ ++ bool allow_dma; ++ bool have_dma; ++ bool use_dma; ++ /*end of DMA part*/ ++ ++ int max_delay; /* maximum length of time spent waiting */ ++ struct timeval stop_time; /* when the last stop was issued */ ++ u32 delay_after_stop; /* minimum time between stop and subsequent data transfer */ ++ u32 overclock_50; /* frequency to use when 50MHz is requested (in MHz) */ ++ u32 max_overclock; /* Highest reported */ ++}; ++ ++ ++static inline void bcm2835_sdhost_write(struct bcm2835_host *host, u32 val, int reg) ++{ ++ writel(val, host->ioaddr + reg); ++} ++ ++static inline u32 bcm2835_sdhost_read(struct bcm2835_host *host, int reg) ++{ ++ return readl(host->ioaddr + reg); ++} ++ ++static inline u32 bcm2835_sdhost_read_relaxed(struct bcm2835_host *host, int reg) ++{ ++ return readl_relaxed(host->ioaddr + reg); ++} ++ ++static void bcm2835_sdhost_dumpregs(struct bcm2835_host *host) ++{ ++ pr_info(DRIVER_NAME ": =========== REGISTER DUMP (%s)===========\n", ++ mmc_hostname(host->mmc)); ++ ++ pr_info(DRIVER_NAME ": SDCMD 0x%08x\n", ++ bcm2835_sdhost_read(host, SDCMD)); ++ pr_info(DRIVER_NAME ": SDARG 0x%08x\n", ++ bcm2835_sdhost_read(host, SDARG)); ++ pr_info(DRIVER_NAME ": SDTOUT 0x%08x\n", ++ bcm2835_sdhost_read(host, SDTOUT)); ++ pr_info(DRIVER_NAME ": SDCDIV 0x%08x\n", ++ bcm2835_sdhost_read(host, SDCDIV)); ++ pr_info(DRIVER_NAME ": SDRSP0 0x%08x\n", ++ bcm2835_sdhost_read(host, SDRSP0)); ++ pr_info(DRIVER_NAME ": SDRSP1 0x%08x\n", ++ bcm2835_sdhost_read(host, SDRSP1)); ++ pr_info(DRIVER_NAME ": SDRSP2 0x%08x\n", ++ bcm2835_sdhost_read(host, SDRSP2)); ++ pr_info(DRIVER_NAME ": SDRSP3 0x%08x\n", ++ bcm2835_sdhost_read(host, SDRSP3)); ++ pr_info(DRIVER_NAME ": SDHSTS 0x%08x\n", ++ bcm2835_sdhost_read(host, SDHSTS)); ++ pr_info(DRIVER_NAME ": SDVDD 0x%08x\n", ++ bcm2835_sdhost_read(host, SDVDD)); ++ pr_info(DRIVER_NAME ": SDEDM 0x%08x\n", ++ bcm2835_sdhost_read(host, SDEDM)); ++ pr_info(DRIVER_NAME ": SDHCFG 0x%08x\n", ++ bcm2835_sdhost_read(host, SDHCFG)); ++ pr_info(DRIVER_NAME ": SDHBCT 0x%08x\n", ++ bcm2835_sdhost_read(host, SDHBCT)); ++ pr_info(DRIVER_NAME ": SDHBLC 0x%08x\n", ++ bcm2835_sdhost_read(host, SDHBLC)); ++ ++ pr_debug(DRIVER_NAME ": ===========================================\n"); ++} ++ ++ ++static void bcm2835_sdhost_set_power(struct bcm2835_host *host, bool on) ++{ ++ bcm2835_sdhost_write(host, on ? 1 : 0, SDVDD); ++} ++ ++ ++static void bcm2835_sdhost_reset(struct bcm2835_host *host) ++{ ++ u32 temp; ++ ++ pr_debug("bcm2835_sdhost_reset\n"); ++ ++ bcm2835_sdhost_set_power(host, false); ++ ++ bcm2835_sdhost_write(host, 0, SDCMD); ++ bcm2835_sdhost_write(host, 0, SDARG); ++ bcm2835_sdhost_write(host, 0xf00000, SDTOUT); ++ bcm2835_sdhost_write(host, 0, SDCDIV); ++ bcm2835_sdhost_write(host, 0x7f8, SDHSTS); /* Write 1s to clear */ ++ bcm2835_sdhost_write(host, 0, SDHCFG); ++ bcm2835_sdhost_write(host, 0, SDHBCT); ++ bcm2835_sdhost_write(host, 0, SDHBLC); ++ ++ /* Limit fifo usage due to silicon bug */ ++ temp = bcm2835_sdhost_read(host, SDEDM); ++ temp &= ~((SDEDM_THRESHOLD_MASK<<SDEDM_READ_THRESHOLD_SHIFT) | ++ (SDEDM_THRESHOLD_MASK<<SDEDM_WRITE_THRESHOLD_SHIFT)); ++ temp |= (SAFE_READ_THRESHOLD << SDEDM_READ_THRESHOLD_SHIFT) | ++ (SAFE_WRITE_THRESHOLD << SDEDM_WRITE_THRESHOLD_SHIFT); ++ bcm2835_sdhost_write(host, temp, SDEDM); ++ mdelay(10); ++ bcm2835_sdhost_set_power(host, true); ++ mdelay(10); ++ host->clock = 0; ++ bcm2835_sdhost_write(host, host->hcfg, SDHCFG); ++ bcm2835_sdhost_write(host, host->cdiv, SDCDIV); ++ mmiowb(); ++} ++ ++static void bcm2835_sdhost_set_ios(struct mmc_host *mmc, struct mmc_ios *ios); ++ ++static void bcm2835_sdhost_init(struct bcm2835_host *host, int soft) ++{ ++ pr_debug("bcm2835_sdhost_init(%d)\n", soft); ++ ++ /* Set interrupt enables */ ++ host->hcfg = SDHCFG_BUSY_IRPT_EN; ++ ++ bcm2835_sdhost_reset(host); ++ ++ if (soft) { ++ /* force clock reconfiguration */ ++ host->clock = 0; ++ bcm2835_sdhost_set_ios(host->mmc, &host->mmc->ios); ++ } ++} ++ ++static bool bcm2835_sdhost_is_write_complete(struct bcm2835_host *host) ++{ ++ bool write_complete = ((bcm2835_sdhost_read(host, SDEDM) & 0xf) == 1); ++ ++ if (!write_complete) { ++ /* Request an IRQ for the last block */ ++ host->hcfg |= SDHCFG_BLOCK_IRPT_EN; ++ bcm2835_sdhost_write(host, host->hcfg, SDHCFG); ++ if ((bcm2835_sdhost_read(host, SDEDM) & 0xf) == 1) { ++ /* The write has now completed. Disable the interrupt ++ and clear the status flag */ ++ host->hcfg &= ~SDHCFG_BLOCK_IRPT_EN; ++ bcm2835_sdhost_write(host, host->hcfg, SDHCFG); ++ bcm2835_sdhost_write(host, SDHSTS_BLOCK_IRPT, SDHSTS); ++ write_complete = true; ++ } ++ } ++ ++ return write_complete; ++} ++ ++static void bcm2835_sdhost_wait_write_complete(struct bcm2835_host *host) ++{ ++ int timediff; ++#ifdef DEBUG ++ static struct timeval start_time; ++ static int max_stall_time = 0; ++ static int total_stall_time = 0; ++ struct timeval before, after; ++ ++ do_gettimeofday(&before); ++ if (max_stall_time == 0) ++ start_time = before; ++#endif ++ ++ timediff = 0; ++ ++ while (1) { ++ u32 edm = bcm2835_sdhost_read(host, SDEDM); ++ if ((edm & 0xf) == 1) ++ break; ++ timediff++; ++ if (timediff > 5000000) { ++#ifdef DEBUG ++ do_gettimeofday(&after); ++ timediff = (after.tv_sec - before.tv_sec)*1000000 + ++ (after.tv_usec - before.tv_usec); ++ ++ pr_err(" wait_write_complete - still waiting after %dus\n", ++ timediff); ++#else ++ pr_err(" wait_write_complete - still waiting after %d retries\n", ++ timediff); ++#endif ++ bcm2835_sdhost_dumpregs(host); ++ host->data->error = -ETIMEDOUT; ++ return; ++ } ++ } ++ ++#ifdef DEBUG ++ do_gettimeofday(&after); ++ timediff = (after.tv_sec - before.tv_sec)*1000000 + (after.tv_usec - before.tv_usec); ++ ++ total_stall_time += timediff; ++ if (timediff > max_stall_time) ++ max_stall_time = timediff; ++ ++ if ((after.tv_sec - start_time.tv_sec) > 10) { ++ pr_debug(" wait_write_complete - max wait %dus, total %dus\n", ++ max_stall_time, total_stall_time); ++ start_time = after; ++ max_stall_time = 0; ++ total_stall_time = 0; ++ } ++#endif ++} ++ ++static void bcm2835_sdhost_finish_data(struct bcm2835_host *host); ++ ++static void bcm2835_sdhost_dma_complete(void *param) ++{ ++ struct bcm2835_host *host = param; ++ struct dma_chan *dma_chan; ++ unsigned long flags; ++ u32 dir_data; ++ ++ spin_lock_irqsave(&host->lock, flags); ++ ++ if (host->data) { ++ bool write_complete; ++ if (USE_BLOCK_IRQ) ++ write_complete = bcm2835_sdhost_is_write_complete(host); ++ else { ++ bcm2835_sdhost_wait_write_complete(host); ++ write_complete = true; ++ } ++ pr_debug("dma_complete() - write_complete=%d\n", ++ write_complete); ++ ++ if (write_complete || (host->data->flags & MMC_DATA_READ)) ++ { ++ if (write_complete) { ++ dma_chan = host->dma_chan_tx; ++ dir_data = DMA_TO_DEVICE; ++ } else { ++ dma_chan = host->dma_chan_rx; ++ dir_data = DMA_FROM_DEVICE; ++ } ++ ++ dma_unmap_sg(dma_chan->device->dev, ++ host->data->sg, host->data->sg_len, ++ dir_data); ++ ++ bcm2835_sdhost_finish_data(host); ++ } ++ } ++ ++ spin_unlock_irqrestore(&host->lock, flags); ++} ++ ++static void bcm2835_sdhost_read_block_pio(struct bcm2835_host *host) ++{ ++ unsigned long flags; ++ size_t blksize, len; ++ u32 *buf; ++ ++ blksize = host->data->blksz; ++ ++ local_irq_save(flags); ++ ++ while (blksize) { ++ if (!sg_miter_next(&host->sg_miter)) ++ BUG(); ++ ++ len = min(host->sg_miter.length, blksize); ++ BUG_ON(len % 4); ++ ++ blksize -= len; ++ host->sg_miter.consumed = len; ++ ++ buf = (u32 *)host->sg_miter.addr; ++ ++ while (len) { ++ while (1) { ++ u32 hsts; ++ hsts = bcm2835_sdhost_read(host, SDHSTS); ++ if (hsts & SDHSTS_DATA_FLAG) ++ break; ++ ++ if (hsts & SDHSTS_ERROR_MASK) { ++ pr_err("%s: Transfer error - HSTS %x, HBCT %x - %x left\n", ++ mmc_hostname(host->mmc), ++ hsts, ++ bcm2835_sdhost_read(host, SDHBCT), ++ blksize + len); ++ if (hsts & SDHSTS_REW_TIME_OUT) ++ host->data->error = -ETIMEDOUT; ++ else if (hsts & (SDHSTS_CRC16_ERROR || ++ SDHSTS_CRC7_ERROR)) ++ host->data->error = -EILSEQ; ++ else { ++ pr_err("%s: unexpected data error\n", ++ mmc_hostname(host->mmc)); ++ bcm2835_sdhost_dumpregs(host); ++ host->cmd->error = -EIO; ++ } ++ } ++ } ++ ++ *(buf++) = bcm2835_sdhost_read(host, SDDATA); ++ len -= 4; ++ } ++ } ++ ++ sg_miter_stop(&host->sg_miter); ++ ++ local_irq_restore(flags); ++} ++ ++static void bcm2835_sdhost_write_block_pio(struct bcm2835_host *host) ++{ ++ unsigned long flags; ++ size_t blksize, len; ++ u32 *buf; ++ ++ blksize = host->data->blksz; ++ ++ local_irq_save(flags); ++ ++ while (blksize) { ++ if (!sg_miter_next(&host->sg_miter)) ++ BUG(); ++ ++ len = min(host->sg_miter.length, blksize); ++ BUG_ON(len % 4); ++ ++ blksize -= len; ++ host->sg_miter.consumed = len; ++ ++ buf = host->sg_miter.addr; ++ ++ while (len) { ++ while (!(bcm2835_sdhost_read(host, SDHSTS) & SDHSTS_DATA_FLAG)) ++ continue; ++ bcm2835_sdhost_write(host, *(buf++), SDDATA); ++ len -= 4; ++ } ++ } ++ ++ sg_miter_stop(&host->sg_miter); ++ ++ local_irq_restore(flags); ++} ++ ++ ++static void bcm2835_sdhost_transfer_pio(struct bcm2835_host *host) ++{ ++ BUG_ON(!host->data); ++ ++ if (host->data->flags & MMC_DATA_READ) ++ bcm2835_sdhost_read_block_pio(host); ++ else ++ bcm2835_sdhost_write_block_pio(host); ++} ++ ++ ++static void bcm2835_sdhost_transfer_dma(struct bcm2835_host *host) ++{ ++ u32 len, dir_data, dir_slave; ++ struct dma_async_tx_descriptor *desc = NULL; ++ struct dma_chan *dma_chan; ++ ++ pr_debug("bcm2835_sdhost_transfer_dma()\n"); ++ ++ WARN_ON(!host->data); ++ ++ if (!host->data) ++ return; ++ ++ if (host->data->flags & MMC_DATA_READ) { ++ dma_chan = host->dma_chan_rx; ++ dir_data = DMA_FROM_DEVICE; ++ dir_slave = DMA_DEV_TO_MEM; ++ } else { ++ dma_chan = host->dma_chan_tx; ++ dir_data = DMA_TO_DEVICE; ++ dir_slave = DMA_MEM_TO_DEV; ++ } ++ ++ BUG_ON(!dma_chan->device); ++ BUG_ON(!dma_chan->device->dev); ++ BUG_ON(!host->data->sg); ++ ++ len = dma_map_sg(dma_chan->device->dev, host->data->sg, ++ host->data->sg_len, dir_data); ++ if (len > 0) { ++ desc = dmaengine_prep_slave_sg(dma_chan, host->data->sg, ++ len, dir_slave, ++ DMA_PREP_INTERRUPT | DMA_CTRL_ACK); ++ } else { ++ dev_err(mmc_dev(host->mmc), "dma_map_sg returned zero length\n"); ++ } ++ if (desc) { ++ desc->callback = bcm2835_sdhost_dma_complete; ++ desc->callback_param = host; ++ dmaengine_submit(desc); ++ dma_async_issue_pending(dma_chan); ++ } ++ ++} ++ ++ ++static void bcm2835_sdhost_set_transfer_irqs(struct bcm2835_host *host) ++{ ++ u32 all_irqs = SDHCFG_DATA_IRPT_EN | SDHCFG_BLOCK_IRPT_EN | ++ SDHCFG_BUSY_IRPT_EN; ++ if (host->use_dma) ++ host->hcfg = (host->hcfg & ~all_irqs) | ++ SDHCFG_BUSY_IRPT_EN; ++ else ++ host->hcfg = (host->hcfg & ~all_irqs) | ++ SDHCFG_DATA_IRPT_EN | ++ SDHCFG_BUSY_IRPT_EN; ++ ++ bcm2835_sdhost_write(host, host->hcfg, SDHCFG); ++} ++ ++ ++static void bcm2835_sdhost_prepare_data(struct bcm2835_host *host, struct mmc_command *cmd) ++{ ++ struct mmc_data *data = cmd->data; ++ ++ WARN_ON(host->data); ++ ++ if (!data) ++ return; ++ ++ /* Sanity checks */ ++ BUG_ON(data->blksz * data->blocks > 524288); ++ BUG_ON(data->blksz > host->mmc->max_blk_size); ++ BUG_ON(data->blocks > 65535); ++ ++ host->data = data; ++ host->data_complete = 0; ++ host->flush_fifo = 0; ++ host->data->bytes_xfered = 0; ++ ++ if (!host->use_dma) { ++ int flags; ++ ++ flags = SG_MITER_ATOMIC; ++ if (data->flags & MMC_DATA_READ) ++ flags |= SG_MITER_TO_SG; ++ else ++ flags |= SG_MITER_FROM_SG; ++ sg_miter_start(&host->sg_miter, data->sg, data->sg_len, flags); ++ host->blocks = data->blocks; ++ } ++ ++ host->use_dma = host->have_dma && data->blocks > PIO_DMA_BARRIER; ++ ++ bcm2835_sdhost_set_transfer_irqs(host); ++ ++ bcm2835_sdhost_write(host, data->blksz, SDHBCT); ++ if (host->use_dma) ++ bcm2835_sdhost_write(host, data->blocks, SDHBLC); ++ ++ BUG_ON(!host->data); ++} ++ ++ ++void bcm2835_sdhost_send_command(struct bcm2835_host *host, struct mmc_command *cmd) ++{ ++ u32 sdcmd; ++ unsigned long timeout; ++ ++ WARN_ON(host->cmd); ++ ++ if (1) { ++ pr_debug("bcm2835_sdhost_send_command: %08x %08x (flags %x)\n", ++ cmd->opcode, cmd->arg, (cmd->flags & 0xff) | (cmd->data ? cmd->data->flags : 0)); ++ if (cmd->data) ++ pr_debug("bcm2835_sdhost_send_command: %s %d*%x\n", ++ (cmd->data->flags & MMC_DATA_READ) ? ++ "read" : "write", cmd->data->blocks, ++ cmd->data->blksz); ++ } ++ ++ /* Wait max 10 ms */ ++ timeout = 1000; ++ ++ while (bcm2835_sdhost_read(host, SDCMD) & SDCMD_NEW_FLAG) { ++ if (timeout == 0) { ++ pr_err("%s: Previous command never completed.\n", ++ mmc_hostname(host->mmc)); ++ bcm2835_sdhost_dumpregs(host); ++ cmd->error = -EIO; ++ tasklet_schedule(&host->finish_tasklet); ++ return; ++ } ++ timeout--; ++ udelay(10); ++ } ++ ++ if ((1000-timeout)/100 > 1 && (1000-timeout)/100 > host->max_delay) { ++ host->max_delay = (1000-timeout)/100; ++ pr_warning("Warning: SDHost controller hung for %d ms\n", host->max_delay); ++ } ++ ++ timeout = jiffies; ++#ifdef CONFIG_ARCH_BCM2835 ++ if (!cmd->data && cmd->busy_timeout > 9000) ++ timeout += DIV_ROUND_UP(cmd->busy_timeout, 1000) * HZ + HZ; ++ else ++#endif ++ timeout += 10 * HZ; ++ mod_timer(&host->timer, timeout); ++ ++ host->cmd = cmd; ++ ++ bcm2835_sdhost_prepare_data(host, cmd); ++ ++ bcm2835_sdhost_write(host, cmd->arg, SDARG); ++ ++ if ((cmd->flags & MMC_RSP_136) && (cmd->flags & MMC_RSP_BUSY)) { ++ pr_err("%s: Unsupported response type!\n", ++ mmc_hostname(host->mmc)); ++ cmd->error = -EINVAL; ++ tasklet_schedule(&host->finish_tasklet); ++ return; ++ } ++ ++ sdcmd = cmd->opcode & SDCMD_CMD_MASK; ++ ++ if (!(cmd->flags & MMC_RSP_PRESENT)) ++ sdcmd |= SDCMD_NO_RESPONSE; ++ else { ++ if (cmd->flags & MMC_RSP_136) ++ sdcmd |= SDCMD_LONG_RESPONSE; ++ if (cmd->flags & MMC_RSP_BUSY) { ++ sdcmd |= SDCMD_BUSYWAIT; ++ host->use_busy = 1; ++ } ++ } ++ ++ if (cmd->data) { ++ if (host->delay_after_stop) { ++ struct timeval now; ++ int time_since_stop; ++ do_gettimeofday(&now); ++ time_since_stop = (now.tv_sec - host->stop_time.tv_sec); ++ if (time_since_stop < 2) { ++ /* Possibly less than one second */ ++ time_since_stop = time_since_stop * 1000000 + ++ (now.tv_usec - host->stop_time.tv_usec); ++ if (time_since_stop < host->delay_after_stop) ++ udelay(host->delay_after_stop - ++ time_since_stop); ++ } ++ } ++ ++ if (cmd->data->flags & MMC_DATA_WRITE) ++ sdcmd |= SDCMD_WRITE_CMD; ++ if (cmd->data->flags & MMC_DATA_READ) ++ sdcmd |= SDCMD_READ_CMD; ++ } ++ ++ bcm2835_sdhost_write(host, sdcmd | SDCMD_NEW_FLAG, SDCMD); ++} ++ ++ ++static void bcm2835_sdhost_finish_command(struct bcm2835_host *host); ++static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host); ++ ++static void bcm2835_sdhost_finish_data(struct bcm2835_host *host) ++{ ++ struct mmc_data *data; ++ ++ data = host->data; ++ BUG_ON(!data); ++ ++ pr_debug("finish_data(error %d, stop %d, sbc %d)\n", ++ data->error, data->stop ? 1 : 0, ++ host->mrq->sbc ? 1 : 0); ++ ++ host->hcfg &= ~(SDHCFG_DATA_IRPT_EN | SDHCFG_BLOCK_IRPT_EN); ++ bcm2835_sdhost_write(host, host->hcfg, SDHCFG); ++ ++ if (data->error) { ++ data->bytes_xfered = 0; ++ } else ++ data->bytes_xfered = data->blksz * data->blocks; ++ ++ host->data_complete = 1; ++ ++ if (host->cmd) { ++ /* ++ * Data managed to finish before the ++ * command completed. Make sure we do ++ * things in the proper order. ++ */ ++ pr_debug("Finished early - HSTS %x\n", ++ bcm2835_sdhost_read(host, SDHSTS)); ++ } ++ else ++ bcm2835_sdhost_transfer_complete(host); ++} ++ ++ ++static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host) ++{ ++ struct mmc_data *data; ++ ++ BUG_ON(host->cmd); ++ BUG_ON(!host->data); ++ BUG_ON(!host->data_complete); ++ ++ data = host->data; ++ host->data = NULL; ++ ++ pr_debug("transfer_complete(error %d, stop %d)\n", ++ data->error, data->stop ? 1 : 0); ++ ++ if (data->error) ++ /* ++ * The controller needs a reset of internal state machines ++ * upon error conditions. ++ */ ++ bcm2835_sdhost_reset(host); ++ ++ /* ++ * Need to send CMD12 if - ++ * a) open-ended multiblock transfer (no CMD23) ++ * b) error in multiblock transfer ++ */ ++ if (data->stop && ++ (data->error || ++ !host->mrq->sbc)) { ++ host->flush_fifo = 1; ++ bcm2835_sdhost_send_command(host, data->stop); ++ if (host->delay_after_stop) ++ do_gettimeofday(&host->stop_time); ++ if (!host->use_busy) ++ bcm2835_sdhost_finish_command(host); ++ } else { ++ tasklet_schedule(&host->finish_tasklet); ++ } ++} ++ ++static void bcm2835_sdhost_finish_command(struct bcm2835_host *host) ++{ ++ u32 sdcmd; ++ int timeout = 1000; ++#ifdef DEBUG ++ struct timeval before, after; ++ int timediff = 0; ++#endif ++ ++ pr_debug("finish_command(%x)\n", bcm2835_sdhost_read(host, SDCMD)); ++ ++ BUG_ON(!host->cmd || !host->mrq); ++ ++#ifdef DEBUG ++ do_gettimeofday(&before); ++#endif ++ for (sdcmd = bcm2835_sdhost_read(host, SDCMD); ++ (sdcmd & SDCMD_NEW_FLAG) && timeout; ++ timeout--) { ++ if (host->flush_fifo) { ++ while (bcm2835_sdhost_read(host, SDHSTS) & ++ SDHSTS_DATA_FLAG) ++ (void)bcm2835_sdhost_read(host, SDDATA); ++ } ++ udelay(10); ++ sdcmd = bcm2835_sdhost_read(host, SDCMD); ++ } ++#ifdef DEBUG ++ do_gettimeofday(&after); ++ timediff = (after.tv_sec - before.tv_sec)*1000000 + ++ (after.tv_usec - before.tv_usec); ++ ++ pr_debug(" finish_command - waited %dus\n", timediff); ++#endif ++ ++ if (timeout == 0) { ++ pr_err("%s: Command never completed.\n", ++ mmc_hostname(host->mmc)); ++ bcm2835_sdhost_dumpregs(host); ++ host->cmd->error = -EIO; ++ tasklet_schedule(&host->finish_tasklet); ++ return; ++ } ++ ++ if (host->flush_fifo) { ++ for (timeout = 100; ++ (bcm2835_sdhost_read(host, SDHSTS) & SDHSTS_DATA_FLAG) && timeout; ++ timeout--) { ++ (void)bcm2835_sdhost_read(host, SDDATA); ++ } ++ host->flush_fifo = 0; ++ if (timeout == 0) { ++ pr_err("%s: FIFO never drained.\n", ++ mmc_hostname(host->mmc)); ++ bcm2835_sdhost_dumpregs(host); ++ host->cmd->error = -EIO; ++ tasklet_schedule(&host->finish_tasklet); ++ return; ++ } ++ } ++ ++ /* Check for errors */ ++ if (sdcmd & SDCMD_FAIL_FLAG) ++ { ++ u32 sdhsts = bcm2835_sdhost_read(host, SDHSTS); ++ ++ pr_debug("%s: error detected - CMD %x, HSTS %03x, EDM %x\n", ++ mmc_hostname(host->mmc), sdcmd, sdhsts, ++ bcm2835_sdhost_read(host, SDEDM)); ++ ++ if (sdhsts & SDHSTS_CMD_TIME_OUT) ++ host->cmd->error = -ETIMEDOUT; ++ else ++ { ++ pr_err("%s: unexpected command error\n", ++ mmc_hostname(host->mmc)); ++ bcm2835_sdhost_dumpregs(host); ++ host->cmd->error = -EIO; ++ } ++ tasklet_schedule(&host->finish_tasklet); ++ return; ++ } ++ ++ if (host->cmd->flags & MMC_RSP_PRESENT) { ++ if (host->cmd->flags & MMC_RSP_136) { ++ int i; ++ for (i = 0; i < 4; i++) ++ host->cmd->resp[3 - i] = bcm2835_sdhost_read(host, SDRSP0 + i*4); ++ pr_debug("bcm2835_sdhost_finish_command: %08x %08x %08x %08x\n", ++ host->cmd->resp[0], host->cmd->resp[1], host->cmd->resp[2], host->cmd->resp[3]); ++ } else { ++ host->cmd->resp[0] = bcm2835_sdhost_read(host, SDRSP0); ++ pr_debug("bcm2835_sdhost_finish_command: %08x\n", ++ host->cmd->resp[0]); ++ } ++ } ++ ++ host->cmd->error = 0; ++ ++ if (host->cmd == host->mrq->sbc) { ++ /* Finished CMD23, now send actual command. */ ++ host->cmd = NULL; ++ bcm2835_sdhost_send_command(host, host->mrq->cmd); ++ ++ if (host->cmd->data && host->use_dma) ++ /* DMA transfer starts now, PIO starts after irq */ ++ bcm2835_sdhost_transfer_dma(host); ++ ++ if (!host->use_busy) ++ bcm2835_sdhost_finish_command(host); ++ } else if (host->cmd == host->mrq->stop) ++ /* Finished CMD12 */ ++ tasklet_schedule(&host->finish_tasklet); ++ else { ++ /* Processed actual command. */ ++ host->cmd = NULL; ++ if (!host->data) ++ tasklet_schedule(&host->finish_tasklet); ++ else if (host->data_complete) ++ bcm2835_sdhost_transfer_complete(host); ++ } ++} ++ ++static void bcm2835_sdhost_timeout_timer(unsigned long data) ++{ ++ struct bcm2835_host *host; ++ unsigned long flags; ++ ++ host = (struct bcm2835_host *)data; ++ ++ spin_lock_irqsave(&host->lock, flags); ++ ++ if (host->mrq) { ++ pr_err("%s: Timeout waiting for hardware interrupt.\n", ++ mmc_hostname(host->mmc)); ++ bcm2835_sdhost_dumpregs(host); ++ ++ if (host->data) { ++ host->data->error = -ETIMEDOUT; ++ bcm2835_sdhost_finish_data(host); ++ } else { ++ if (host->cmd) ++ host->cmd->error = -ETIMEDOUT; ++ else ++ host->mrq->cmd->error = -ETIMEDOUT; ++ ++ pr_debug("timeout_timer tasklet_schedule\n"); ++ tasklet_schedule(&host->finish_tasklet); ++ } ++ } ++ ++ mmiowb(); ++ spin_unlock_irqrestore(&host->lock, flags); ++} ++ ++static void bcm2835_sdhost_enable_sdio_irq_nolock(struct bcm2835_host *host, int enable) ++{ ++ if (enable) ++ host->hcfg |= SDHCFG_SDIO_IRPT_EN; ++ else ++ host->hcfg &= ~SDHCFG_SDIO_IRPT_EN; ++ bcm2835_sdhost_write(host, host->hcfg, SDHCFG); ++ mmiowb(); ++} ++ ++static void bcm2835_sdhost_enable_sdio_irq(struct mmc_host *mmc, int enable) ++{ ++ struct bcm2835_host *host = mmc_priv(mmc); ++ unsigned long flags; ++ ++ pr_debug("bcm2835_sdhost_enable_sdio_irq(%d)\n", enable); ++ spin_lock_irqsave(&host->lock, flags); ++ bcm2835_sdhost_enable_sdio_irq_nolock(host, enable); ++ spin_unlock_irqrestore(&host->lock, flags); ++} ++ ++static u32 bcm2835_sdhost_busy_irq(struct bcm2835_host *host, u32 intmask) ++{ ++ const u32 handled = (SDHSTS_CMD_TIME_OUT | SDHSTS_CRC16_ERROR | ++ SDHSTS_CRC7_ERROR | SDHSTS_FIFO_ERROR); ++ ++ if (!host->cmd) { ++ pr_err("%s: Got command busy interrupt 0x%08x even " ++ "though no command operation was in progress.\n", ++ mmc_hostname(host->mmc), (unsigned)intmask); ++ bcm2835_sdhost_dumpregs(host); ++ return 0; ++ } ++ ++ if (!host->use_busy) { ++ pr_err("%s: Got command busy interrupt 0x%08x even " ++ "though not expecting one.\n", ++ mmc_hostname(host->mmc), (unsigned)intmask); ++ bcm2835_sdhost_dumpregs(host); ++ return 0; ++ } ++ host->use_busy = 0; ++ ++ if (intmask & SDHSTS_CMD_TIME_OUT) ++ host->cmd->error = -ETIMEDOUT; ++ else if (intmask & (SDHSTS_CRC16_ERROR | SDHSTS_CRC7_ERROR | ++ SDHSTS_FIFO_ERROR)) ++ host->cmd->error = -EILSEQ; ++ ++ if (host->cmd->error) ++ tasklet_schedule(&host->finish_tasklet); ++ else ++ bcm2835_sdhost_finish_command(host); ++ ++ return handled; ++} ++ ++static u32 bcm2835_sdhost_data_irq(struct bcm2835_host *host, u32 intmask) ++{ ++ const u32 handled = (SDHSTS_CMD_TIME_OUT | SDHSTS_CRC16_ERROR | ++ SDHSTS_CRC7_ERROR | SDHSTS_FIFO_ERROR); ++ ++ /* There are no dedicated data/space available interrupt ++ status bits, so it is necessary to use the single shared ++ data/space available FIFO status bits. It is therefore not ++ an error to get here when there is no data transfer in ++ progress. */ ++ if (!host->data) ++ return 0; ++ ++ // XXX FIFO_ERROR ++ if (intmask & SDHSTS_CMD_TIME_OUT) ++ host->cmd->error = -ETIMEDOUT; ++ else if ((intmask & (SDHSTS_CRC16_ERROR | SDHSTS_CRC7_ERROR)) && ++ ((bcm2835_sdhost_read(host, SDCMD) & SDCMD_CMD_MASK) ++ != MMC_BUS_TEST_R)) ++ host->cmd->error = -EILSEQ; ++ ++ /* Use the block interrupt for writes after the first block */ ++ if (host->data->flags & MMC_DATA_WRITE) { ++ host->hcfg &= ~(SDHCFG_DATA_IRPT_EN); ++ host->hcfg |= SDHCFG_BLOCK_IRPT_EN; ++ bcm2835_sdhost_write(host, host->hcfg, SDHCFG); ++ if (host->data->error) ++ bcm2835_sdhost_finish_data(host); ++ else ++ bcm2835_sdhost_transfer_pio(host); ++ } else { ++ if (!host->data->error) { ++ bcm2835_sdhost_transfer_pio(host); ++ host->blocks--; ++ } ++ if ((host->blocks == 0) || host->data->error) ++ bcm2835_sdhost_finish_data(host); ++ } ++ ++ return handled; ++} ++ ++static u32 bcm2835_sdhost_block_irq(struct bcm2835_host *host, u32 intmask) ++{ ++ struct dma_chan *dma_chan; ++ u32 dir_data; ++ const u32 handled = (SDHSTS_CMD_TIME_OUT | SDHSTS_CRC16_ERROR | ++ SDHSTS_CRC7_ERROR | SDHSTS_FIFO_ERROR); ++ ++ if (!host->data) { ++ pr_err("%s: Got block interrupt 0x%08x even " ++ "though no data operation was in progress.\n", ++ mmc_hostname(host->mmc), (unsigned)intmask); ++ bcm2835_sdhost_dumpregs(host); ++ return handled; ++ } ++ ++ if (intmask & SDHSTS_CMD_TIME_OUT) ++ host->cmd->error = -ETIMEDOUT; ++ else if ((intmask & (SDHSTS_CRC16_ERROR | SDHSTS_CRC7_ERROR)) && ++ ((bcm2835_sdhost_read(host, SDCMD) & SDCMD_CMD_MASK) ++ != MMC_BUS_TEST_R)) ++ host->cmd->error = -EILSEQ; ++ ++ if (!host->use_dma) { ++ BUG_ON(!host->blocks); ++ host->blocks--; ++ if ((host->blocks == 0) || host->data->error) ++ bcm2835_sdhost_finish_data(host); ++ else ++ bcm2835_sdhost_transfer_pio(host); ++ } else if (host->data->flags & MMC_DATA_WRITE) { ++ dma_chan = host->dma_chan_tx; ++ dir_data = DMA_TO_DEVICE; ++ dma_unmap_sg(dma_chan->device->dev, ++ host->data->sg, host->data->sg_len, ++ dir_data); ++ ++ bcm2835_sdhost_finish_data(host); ++ } ++ ++ return handled; ++} ++ ++ ++static irqreturn_t bcm2835_sdhost_irq(int irq, void *dev_id) ++{ ++ irqreturn_t result = IRQ_NONE; ++ struct bcm2835_host *host = dev_id; ++ u32 unexpected = 0, early = 0; ++ int loops = 0; ++#ifndef CONFIG_ARCH_BCM2835 ++ int cardint = 0; ++#endif ++ spin_lock(&host->lock); ++ ++ for (loops = 0; loops < 1; loops++) { ++ u32 intmask, handled; ++ ++ intmask = bcm2835_sdhost_read(host, SDHSTS); ++ handled = intmask & (SDHSTS_BUSY_IRPT | ++ SDHSTS_BLOCK_IRPT | ++ SDHSTS_SDIO_IRPT | ++ SDHSTS_DATA_FLAG); ++ if ((handled == SDHSTS_DATA_FLAG) && // XXX ++ (loops == 0) && !host->data) { ++ pr_err("%s: sdhost_irq data interrupt 0x%08x even " ++ "though no data operation was in progress.\n", ++ mmc_hostname(host->mmc), ++ (unsigned)intmask); ++ ++ bcm2835_sdhost_dumpregs(host); ++ } ++ ++ if (!handled) ++ break; ++ ++ if (loops) ++ early |= handled; ++ ++ result = IRQ_HANDLED; ++ ++ /* Clear all interrupts and notifications */ ++ bcm2835_sdhost_write(host, intmask, SDHSTS); ++ ++ if (intmask & SDHSTS_BUSY_IRPT) ++ handled |= bcm2835_sdhost_busy_irq(host, intmask); ++ ++ /* There is no true data interrupt status bit, so it is ++ necessary to qualify the data flag with the interrupt ++ enable bit */ ++ if ((intmask & SDHSTS_DATA_FLAG) && ++ (host->hcfg & SDHCFG_DATA_IRPT_EN)) ++ handled |= bcm2835_sdhost_data_irq(host, intmask); ++ ++ if (intmask & SDHSTS_BLOCK_IRPT) ++ handled |= bcm2835_sdhost_block_irq(host, intmask); ++ ++ if (intmask & SDHSTS_SDIO_IRPT) { ++#ifndef CONFIG_ARCH_BCM2835 ++ cardint = 1; ++#else ++ bcm2835_sdhost_enable_sdio_irq_nolock(host, false); ++ host->thread_isr |= SDHSTS_SDIO_IRPT; ++ result = IRQ_WAKE_THREAD; ++#endif ++ } ++ ++ unexpected |= (intmask & ~handled); ++ } ++ ++ mmiowb(); ++ ++ spin_unlock(&host->lock); ++ ++ if (early) ++ pr_debug("%s: early %x (loops %d)\n", mmc_hostname(host->mmc), early, loops); ++ ++ if (unexpected) { ++ pr_err("%s: Unexpected interrupt 0x%08x.\n", ++ mmc_hostname(host->mmc), unexpected); ++ bcm2835_sdhost_dumpregs(host); ++ } ++ ++#ifndef CONFIG_ARCH_BCM2835 ++ if (cardint) ++ mmc_signal_sdio_irq(host->mmc); ++#endif ++ ++ return result; ++} ++ ++#ifdef CONFIG_ARCH_BCM2835 ++static irqreturn_t bcm2835_sdhost_thread_irq(int irq, void *dev_id) ++{ ++ struct bcm2835_host *host = dev_id; ++ unsigned long flags; ++ u32 isr; ++ ++ spin_lock_irqsave(&host->lock, flags); ++ isr = host->thread_isr; ++ host->thread_isr = 0; ++ spin_unlock_irqrestore(&host->lock, flags); ++ ++ if (isr & SDHSTS_SDIO_IRPT) { ++ sdio_run_irqs(host->mmc); ++ ++/* Is this necessary? Why re-enable an interrupt which is enabled? ++ spin_lock_irqsave(&host->lock, flags); ++ if (host->flags & SDHSTS_SDIO_IRPT_ENABLED) ++ bcm2835_sdhost_enable_sdio_irq_nolock(host, true); ++ spin_unlock_irqrestore(&host->lock, flags); ++*/ ++ } ++ ++ return isr ? IRQ_HANDLED : IRQ_NONE; ++} ++#endif ++ ++ ++ ++void bcm2835_sdhost_set_clock(struct bcm2835_host *host, unsigned int clock) ++{ ++ int div = 0; /* Initialized for compiler warning */ ++ unsigned int input_clock = clock; ++ ++ if (host->overclock_50 && (clock == 50000000)) ++ clock = host->overclock_50 * 1000000 + 999999; ++ ++ /* The SDCDIV register has 11 bits, and holds (div - 2). ++ But in data mode the max is 50MHz wihout a minimum, and only the ++ bottom 3 bits are used. Since the switch over is automatic (unless ++ we have marked the card as slow...), chosen values have to make ++ sense in both modes. ++ Ident mode must be 100-400KHz, so can range check the requested ++ clock. CMD15 must be used to return to data mode, so this can be ++ monitored. ++ ++ clock 250MHz -> 0->125MHz, 1->83.3MHz, 2->62.5MHz, 3->50.0MHz ++ 4->41.7MHz, 5->35.7MHz, 6->31.3MHz, 7->27.8MHz ++ ++ 623->400KHz/27.8MHz ++ reset value (507)->491159/50MHz ++ ++ BUT, the 3-bit clock divisor in data mode is too small if the ++ core clock is higher than 250MHz, so instead use the SLOW_CARD ++ configuration bit to force the use of the ident clock divisor ++ at all times. ++ */ ++ ++ host->mmc->actual_clock = 0; ++ ++ if (clock < 100000) { ++ /* Can't stop the clock, but make it as slow as possible ++ * to show willing ++ */ ++ host->cdiv = SDCDIV_MAX_CDIV; ++ bcm2835_sdhost_write(host, host->cdiv, SDCDIV); ++ return; ++ } ++ ++ div = host->max_clk / clock; ++ if (div < 2) ++ div = 2; ++ if ((host->max_clk / div) > clock) ++ div++; ++ div -= 2; ++ ++ if (div > SDCDIV_MAX_CDIV) ++ div = SDCDIV_MAX_CDIV; ++ ++ clock = host->max_clk / (div + 2); ++ host->mmc->actual_clock = clock; ++ ++ if ((clock > input_clock) && (clock > host->max_overclock)) { ++ pr_warn("%s: Overclocking to %dHz\n", ++ mmc_hostname(host->mmc), clock); ++ host->max_overclock = clock; ++ } ++ ++ host->cdiv = div; ++ bcm2835_sdhost_write(host, host->cdiv, SDCDIV); ++ ++ pr_debug(DRIVER_NAME ": clock=%d -> max_clk=%d, cdiv=%x (actual clock %d)\n", ++ input_clock, host->max_clk, host->cdiv, host->mmc->actual_clock); ++} ++ ++static void bcm2835_sdhost_request(struct mmc_host *mmc, struct mmc_request *mrq) ++{ ++ struct bcm2835_host *host; ++ unsigned long flags; ++ ++ if (1) { ++ struct mmc_command *cmd = mrq->cmd; ++ const char *src = "cmd"; ++ BUG_ON(!cmd); ++ pr_debug("bcm2835_sdhost_request: %s %08x %08x (flags %x)\n", ++ src, cmd->opcode, cmd->arg, cmd->flags); ++ if (cmd->data) ++ pr_debug("bcm2835_sdhost_request: %s %d*%d\n", ++ (cmd->data->flags & MMC_DATA_READ) ? ++ "read" : "write", cmd->data->blocks, ++ cmd->data->blksz); ++ } ++ ++ if (mrq->data && !is_power_of_2(mrq->data->blksz)) { ++ pr_err("%s: Unsupported block size (%d bytes)\n", ++ mmc_hostname(mmc), mrq->data->blksz); ++ mrq->cmd->error = -EINVAL; ++ mmc_request_done(mmc, mrq); ++ return; ++ } ++ ++ host = mmc_priv(mmc); ++ ++ spin_lock_irqsave(&host->lock, flags); ++ ++ WARN_ON(host->mrq != NULL); ++ ++ host->mrq = mrq; ++ ++ if (mrq->sbc) ++ bcm2835_sdhost_send_command(host, mrq->sbc); ++ else ++ bcm2835_sdhost_send_command(host, mrq->cmd); ++ ++ mmiowb(); ++ spin_unlock_irqrestore(&host->lock, flags); ++ ++ if (!mrq->sbc && mrq->cmd->data && host->use_dma) ++ /* DMA transfer starts now, PIO starts after irq */ ++ bcm2835_sdhost_transfer_dma(host); ++ ++ if (!host->use_busy) ++ bcm2835_sdhost_finish_command(host); ++} ++ ++ ++static void bcm2835_sdhost_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) ++{ ++ ++ struct bcm2835_host *host = mmc_priv(mmc); ++ unsigned long flags; ++ ++ pr_debug("bcm2835_sdhost_set_ios: clock %d, pwr %d, bus_width %d, timing %d, vdd %d, drv_type %d\n", ++ ios->clock, ios->power_mode, ios->bus_width, ++ ios->timing, ios->signal_voltage, ios->drv_type); ++ ++ spin_lock_irqsave(&host->lock, flags); ++ ++ if (!ios->clock || ios->clock != host->clock) { ++ bcm2835_sdhost_set_clock(host, ios->clock); ++ host->clock = ios->clock; ++ } ++ ++ /* set bus width */ ++ host->hcfg &= ~SDHCFG_WIDE_EXT_BUS; ++ if (ios->bus_width == MMC_BUS_WIDTH_4) ++ host->hcfg |= SDHCFG_WIDE_EXT_BUS; ++ ++ host->hcfg |= SDHCFG_WIDE_INT_BUS; ++ ++ /* Disable clever clock switching, to cope with fast core clocks */ ++ host->hcfg |= SDHCFG_SLOW_CARD; ++ ++ bcm2835_sdhost_write(host, host->hcfg, SDHCFG); ++ ++ mmiowb(); ++ ++ spin_unlock_irqrestore(&host->lock, flags); ++} ++ ++static int bcm2835_sdhost_multi_io_quirk(struct mmc_card *card, ++ unsigned int direction, ++ u32 blk_pos, int blk_size) ++{ ++ /* There is a bug in the host controller hardware that makes ++ reading the final sector of the card as part of a multiple read ++ problematic. Detect that case and shorten the read accordingly. ++ */ ++ /* csd.capacity is in weird units - convert to sectors */ ++ u32 card_sectors = (card->csd.capacity << (card->csd.read_blkbits - 9)); ++ ++ if ((direction == MMC_DATA_READ) && ++ ((blk_pos + blk_size) == card_sectors)) ++ blk_size--; ++ ++ return blk_size; ++} ++ ++ ++static struct mmc_host_ops bcm2835_sdhost_ops = { ++ .request = bcm2835_sdhost_request, ++ .set_ios = bcm2835_sdhost_set_ios, ++ .enable_sdio_irq = bcm2835_sdhost_enable_sdio_irq, ++ .multi_io_quirk = bcm2835_sdhost_multi_io_quirk, ++}; ++ ++ ++static void bcm2835_sdhost_tasklet_finish(unsigned long param) ++{ ++ struct bcm2835_host *host; ++ unsigned long flags; ++ struct mmc_request *mrq; ++ ++ host = (struct bcm2835_host *)param; ++ ++ spin_lock_irqsave(&host->lock, flags); ++ ++ /* ++ * If this tasklet gets rescheduled while running, it will ++ * be run again afterwards but without any active request. ++ */ ++ if (!host->mrq) { ++ spin_unlock_irqrestore(&host->lock, flags); ++ return; ++ } ++ ++ del_timer(&host->timer); ++ ++ mrq = host->mrq; ++ ++ /* ++ * The controller needs a reset of internal state machines ++ * upon error conditions. ++ */ ++ if (((mrq->cmd && mrq->cmd->error) || ++ (mrq->data && (mrq->data->error || ++ (mrq->data->stop && mrq->data->stop->error))))) { ++ ++ bcm2835_sdhost_reset(host); ++ } ++ ++ host->mrq = NULL; ++ host->cmd = NULL; ++ host->data = NULL; ++ ++ mmiowb(); ++ ++ spin_unlock_irqrestore(&host->lock, flags); ++ mmc_request_done(host->mmc, mrq); ++} ++ ++ ++ ++int bcm2835_sdhost_add_host(struct bcm2835_host *host) ++{ ++ struct mmc_host *mmc; ++ struct dma_slave_config cfg; ++ int ret; ++ ++ mmc = host->mmc; ++ ++ bcm2835_sdhost_reset(host); ++ ++ mmc->f_max = host->max_clk; ++ mmc->f_min = host->max_clk / SDCDIV_MAX_CDIV; ++ ++ /* SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK */ ++ host->timeout_clk = mmc->f_max / 1000; ++#ifdef CONFIG_ARCH_BCM2835 ++ mmc->max_busy_timeout = (1 << 27) / host->timeout_clk; ++#endif ++ /* host controller capabilities */ ++ mmc->caps |= /* MMC_CAP_SDIO_IRQ |*/ MMC_CAP_4_BIT_DATA | ++ MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED | ++ MMC_CAP_NEEDS_POLL | ++ (ALLOW_CMD23 * MMC_CAP_CMD23); ++ ++ spin_lock_init(&host->lock); ++ ++ if (host->allow_dma) { ++ if (IS_ERR_OR_NULL(host->dma_chan_tx) || ++ IS_ERR_OR_NULL(host->dma_chan_rx)) { ++ pr_err("%s: Unable to initialise DMA channels. Falling back to PIO\n", DRIVER_NAME); ++ host->have_dma = false; ++ } else { ++ pr_info("DMA channels allocated for the SDHost driver"); ++ host->have_dma = true; ++ ++ cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; ++ cfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; ++ cfg.slave_id = 13; /* DREQ channel */ ++ ++ cfg.direction = DMA_MEM_TO_DEV; ++ cfg.src_addr = 0; ++ cfg.dst_addr = host->phys_addr + SDDATA; ++ ret = dmaengine_slave_config(host->dma_chan_tx, &cfg); ++ ++ cfg.direction = DMA_DEV_TO_MEM; ++ cfg.src_addr = host->phys_addr + SDDATA; ++ cfg.dst_addr = 0; ++ ret = dmaengine_slave_config(host->dma_chan_rx, &cfg); ++ } ++ } else { ++ pr_info("Forcing PIO mode\n"); ++ host->have_dma = false; ++ } ++ ++ mmc->max_segs = 128; ++ mmc->max_req_size = 524288; ++ mmc->max_seg_size = mmc->max_req_size; ++ mmc->max_blk_size = 512; ++ mmc->max_blk_count = 65535; ++ ++ /* report supported voltage ranges */ ++ mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; ++ ++ tasklet_init(&host->finish_tasklet, ++ bcm2835_sdhost_tasklet_finish, (unsigned long)host); ++ ++ setup_timer(&host->timer, bcm2835_sdhost_timeout_timer, (unsigned long)host); ++ ++ bcm2835_sdhost_init(host, 0); ++#ifndef CONFIG_ARCH_BCM2835 ++ ret = request_irq(host->irq, bcm2835_sdhost_irq, 0 /*IRQF_SHARED*/, ++ mmc_hostname(mmc), host); ++#else ++ ret = request_threaded_irq(host->irq, bcm2835_sdhost_irq, bcm2835_sdhost_thread_irq, ++ IRQF_SHARED, mmc_hostname(mmc), host); ++#endif ++ if (ret) { ++ pr_err("%s: Failed to request IRQ %d: %d\n", ++ mmc_hostname(mmc), host->irq, ret); ++ goto untasklet; ++ } ++ ++ mmiowb(); ++ mmc_add_host(mmc); ++ ++ pr_info("Load BCM2835 SDHost driver\n"); ++ if (host->delay_after_stop) ++ pr_info("BCM2835 SDHost: delay_after_stop=%dus\n", ++ host->delay_after_stop); ++ ++ return 0; ++ ++untasklet: ++ tasklet_kill(&host->finish_tasklet); ++ ++ return ret; ++} ++ ++static int bcm2835_sdhost_probe(struct platform_device *pdev) ++{ ++ struct device *dev = &pdev->dev; ++ struct device_node *node = dev->of_node; ++ struct clk *clk; ++ struct resource *iomem; ++ struct bcm2835_host *host; ++ struct mmc_host *mmc; ++ int ret; ++ ++ pr_debug("bcm2835_sdhost_probe\n"); ++ mmc = mmc_alloc_host(sizeof(*host), dev); ++ if (!mmc) ++ return -ENOMEM; ++ ++ mmc->ops = &bcm2835_sdhost_ops; ++ host = mmc_priv(mmc); ++ host->mmc = mmc; ++ host->timeout = msecs_to_jiffies(1000); ++ spin_lock_init(&host->lock); ++ ++ iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0); ++ host->ioaddr = devm_ioremap_resource(dev, iomem); ++ if (IS_ERR(host->ioaddr)) { ++ ret = PTR_ERR(host->ioaddr); ++ goto err; ++ } ++ ++ host->phys_addr = iomem->start + BCM2835_VCMMU_SHIFT; ++ pr_debug(" - ioaddr %lx, iomem->start %lx, phys_addr %lx\n", ++ (unsigned long)host->ioaddr, ++ (unsigned long)iomem->start, ++ (unsigned long)host->phys_addr); ++ ++ host->allow_dma = ALLOW_DMA; ++ ++ if (node) { ++ /* Read any custom properties */ ++ of_property_read_u32(node, ++ "brcm,delay-after-stop", ++ &host->delay_after_stop); ++ of_property_read_u32(node, ++ "brcm,overclock-50", ++ &host->overclock_50); ++ host->allow_dma = ALLOW_DMA && ++ !of_property_read_bool(node, "brcm,force-pio"); ++ } ++ ++ if (host->allow_dma) { ++ dma_cap_mask_t mask; ++ ++ dma_cap_zero(mask); ++ /* we don't care about the channel, any would work */ ++ dma_cap_set(DMA_SLAVE, mask); ++ ++ if (node) { ++ host->dma_chan_tx = ++ dma_request_slave_channel(dev, "tx"); ++ host->dma_chan_rx = ++ dma_request_slave_channel(dev, "rx"); ++ } ++ ++ if (!host->dma_chan_tx) ++ host->dma_chan_tx = ++ dma_request_channel(mask, NULL, NULL); ++ ++ if (!host->dma_chan_rx) ++ host->dma_chan_rx = ++ dma_request_channel(mask, NULL, NULL); ++ } ++ ++ clk = devm_clk_get(dev, NULL); ++ if (IS_ERR(clk)) { ++ dev_err(dev, "could not get clk\n"); ++ ret = PTR_ERR(clk); ++ goto err; ++ } ++ ++ host->max_clk = clk_get_rate(clk); ++ ++ host->irq = platform_get_irq(pdev, 0); ++ if (host->irq <= 0) { ++ dev_err(dev, "get IRQ failed\n"); ++ ret = -EINVAL; ++ goto err; ++ } ++ ++ pr_debug(" - max_clk %lx, irq %d\n", ++ (unsigned long)host->max_clk, ++ (int)host->irq); ++ ++ if (node) ++ mmc_of_parse(mmc); ++ else ++ mmc->caps |= MMC_CAP_4_BIT_DATA; ++ ++ ret = bcm2835_sdhost_add_host(host); ++ if (ret) ++ goto err; ++ ++ platform_set_drvdata(pdev, host); ++ ++ pr_debug("bcm2835_sdhost_probe -> OK\n"); ++ ++ return 0; ++ ++err: ++ pr_debug("bcm2835_sdhost_probe -> err %d\n", ret); ++ mmc_free_host(mmc); ++ ++ return ret; ++} ++ ++static int bcm2835_sdhost_remove(struct platform_device *pdev) ++{ ++ struct bcm2835_host *host = platform_get_drvdata(pdev); ++ ++ pr_debug("bcm2835_sdhost_remove\n"); ++ ++ mmc_remove_host(host->mmc); ++ ++ bcm2835_sdhost_set_power(host, false); ++ ++ free_irq(host->irq, host); ++ ++ del_timer_sync(&host->timer); ++ ++ tasklet_kill(&host->finish_tasklet); ++ ++ mmc_free_host(host->mmc); ++ platform_set_drvdata(pdev, NULL); ++ ++ pr_debug("bcm2835_sdhost_remove - OK\n"); ++ return 0; ++} ++ ++ ++static const struct of_device_id bcm2835_sdhost_match[] = { ++ { .compatible = "brcm,bcm2835-sdhost" }, ++ { } ++}; ++MODULE_DEVICE_TABLE(of, bcm2835_sdhost_match); ++ ++ ++ ++static struct platform_driver bcm2835_sdhost_driver = { ++ .probe = bcm2835_sdhost_probe, ++ .remove = bcm2835_sdhost_remove, ++ .driver = { ++ .name = DRIVER_NAME, ++ .owner = THIS_MODULE, ++ .of_match_table = bcm2835_sdhost_match, ++ }, ++}; ++module_platform_driver(bcm2835_sdhost_driver); ++ ++MODULE_ALIAS("platform:sdhost-bcm2835"); ++MODULE_DESCRIPTION("BCM2835 SDHost driver"); ++MODULE_LICENSE("GPL v2"); ++MODULE_AUTHOR("Phil Elwell"); +diff -Nur linux-3.18.14/drivers/mmc/host/Kconfig linux-rpi/drivers/mmc/host/Kconfig +--- linux-3.18.14/drivers/mmc/host/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/mmc/host/Kconfig 2015-05-31 14:46:11.161660977 -0500 +@@ -4,6 +4,45 @@ --config MMC_SDHCI_BCM2835 -- tristate "SDHCI platform support for the BCM2835 SD/MMC Controller" -- depends on ARCH_BCM2835 -- depends on MMC_SDHCI_PLTFM -- select MMC_SDHCI_IO_ACCESSORS -- help -- This selects the BCM2835 SD/MMC controller. If you have a BCM2835 -- platform with SD or MMC devices, say Y or M here. -- -- If unsure, say N. -- - config MMC_MOXART - tristate "MOXART SD/MMC Host Controller support" - depends on ARCH_MOXART && MMC -@@ -313,6 +302,35 @@ - If you have a controller with this interface, say Y or M here. - If unsure, say N. + comment "MMC/SD/SDIO Host Controller Drivers" +config MMC_BCM2835 + tristate "MMC support on BCM2835" -+ depends on (MACH_BCM2708 || MACH_BCM2709) ++ depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 + help + This selects the MMC Interface on BCM2835. + @@ -48618,23 +50732,94 @@ diff -Nur linux-3.18.10/drivers/mmc/host/Kconfig linux-rpi/drivers/mmc/host/Kcon + + If unsure, say 2 here. + - config MMC_OMAP - tristate "TI OMAP Multimedia Card Interface support" - depends on ARCH_OMAP -diff -Nur linux-3.18.10/drivers/mmc/host/Makefile linux-rpi/drivers/mmc/host/Makefile ---- linux-3.18.10/drivers/mmc/host/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/mmc/host/Makefile 2015-03-26 11:46:51.092235223 +0100 -@@ -17,6 +17,7 @@ ++config MMC_BCM2835_SDHOST ++ tristate "Support for the SDHost controller on BCM2708/9" ++ depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 ++ help ++ This selects the SDHost controller on BCM2835/6. ++ ++ If you have a controller with this interface, say Y or M here. ++ ++ If unsure, say N. ++ + config MMC_ARMMMCI + tristate "ARM AMBA Multimedia Card Interface support" + depends on ARM_AMBA +@@ -281,17 +320,6 @@ + + If you have a controller with this interface, say Y or M here. + +-config MMC_SDHCI_BCM2835 +- tristate "SDHCI platform support for the BCM2835 SD/MMC Controller" +- depends on ARCH_BCM2835 +- depends on MMC_SDHCI_PLTFM +- select MMC_SDHCI_IO_ACCESSORS +- help +- This selects the BCM2835 SD/MMC controller. If you have a BCM2835 +- platform with SD or MMC devices, say Y or M here. +- +- If unsure, say N. +- + config MMC_MOXART + tristate "MOXART SD/MMC Host Controller support" + depends on ARCH_MOXART && MMC +diff -Nur linux-3.18.14/drivers/mmc/host/Makefile linux-rpi/drivers/mmc/host/Makefile +--- linux-3.18.14/drivers/mmc/host/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/mmc/host/Makefile 2015-05-31 14:46:11.161660977 -0500 +@@ -17,6 +17,8 @@ obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci-sirf.o obj-$(CONFIG_MMC_SDHCI_SPEAR) += sdhci-spear.o ++obj-$(CONFIG_MMC_BCM2835_SDHOST) += bcm2835-sdhost.o +obj-$(CONFIG_MMC_BCM2835) += bcm2835-mmc.o obj-$(CONFIG_MMC_WBSD) += wbsd.o obj-$(CONFIG_MMC_AU1X) += au1xmmc.o obj-$(CONFIG_MMC_OMAP) += omap.o -diff -Nur linux-3.18.10/drivers/net/ethernet/microchip/enc28j60.c linux-rpi/drivers/net/ethernet/microchip/enc28j60.c ---- linux-3.18.10/drivers/net/ethernet/microchip/enc28j60.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/net/ethernet/microchip/enc28j60.c 2015-03-26 11:46:51.880235952 +0100 +diff -Nur linux-3.18.14/drivers/mmc/host/omap_hsmmc.c linux-rpi/drivers/mmc/host/omap_hsmmc.c +--- linux-3.18.14/drivers/mmc/host/omap_hsmmc.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/mmc/host/omap_hsmmc.c 2015-05-31 14:46:11.169660977 -0500 +@@ -1832,7 +1832,9 @@ + } + + static int omap_hsmmc_multi_io_quirk(struct mmc_card *card, +- unsigned int direction, int blk_size) ++ unsigned int direction, ++ u32 blk_pos, ++ int blk_size) + { + /* This controller can't do multiblock reads due to hw bugs */ + if (direction == MMC_DATA_READ) +diff -Nur linux-3.18.14/drivers/mmc/host/sh_mobile_sdhi.c linux-rpi/drivers/mmc/host/sh_mobile_sdhi.c +--- linux-3.18.14/drivers/mmc/host/sh_mobile_sdhi.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/mmc/host/sh_mobile_sdhi.c 2015-05-31 14:46:11.181660977 -0500 +@@ -139,7 +139,9 @@ + } + + static int sh_mobile_sdhi_multi_io_quirk(struct mmc_card *card, +- unsigned int direction, int blk_size) ++ unsigned int direction, ++ u32 blk_pos, ++ int blk_size) + { + /* + * In Renesas controllers, when performing a +diff -Nur linux-3.18.14/drivers/mmc/host/tmio_mmc_pio.c linux-rpi/drivers/mmc/host/tmio_mmc_pio.c +--- linux-3.18.14/drivers/mmc/host/tmio_mmc_pio.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/mmc/host/tmio_mmc_pio.c 2015-05-31 14:46:11.181660977 -0500 +@@ -1002,7 +1002,9 @@ + } + + static int tmio_multi_io_quirk(struct mmc_card *card, +- unsigned int direction, int blk_size) ++ unsigned int direction, ++ u32 blk_pos, ++ int blk_size) + { + struct tmio_mmc_host *host = mmc_priv(card->host); + struct tmio_mmc_data *pdata = host->pdata; +diff -Nur linux-3.18.14/drivers/net/ethernet/microchip/enc28j60.c linux-rpi/drivers/net/ethernet/microchip/enc28j60.c +--- linux-3.18.14/drivers/net/ethernet/microchip/enc28j60.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/net/ethernet/microchip/enc28j60.c 2015-05-31 14:46:11.465660974 -0500 @@ -1630,10 +1630,21 @@ return 0; } @@ -48657,9 +50842,9 @@ diff -Nur linux-3.18.10/drivers/net/ethernet/microchip/enc28j60.c linux-rpi/driv }, .probe = enc28j60_probe, .remove = enc28j60_remove, -diff -Nur linux-3.18.10/drivers/net/usb/smsc95xx.c linux-rpi/drivers/net/usb/smsc95xx.c ---- linux-3.18.10/drivers/net/usb/smsc95xx.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/net/usb/smsc95xx.c 2015-03-26 11:46:51.956236021 +0100 +diff -Nur linux-3.18.14/drivers/net/usb/smsc95xx.c linux-rpi/drivers/net/usb/smsc95xx.c +--- linux-3.18.14/drivers/net/usb/smsc95xx.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/net/usb/smsc95xx.c 2015-05-31 14:46:11.597660973 -0500 @@ -59,6 +59,7 @@ #define SUSPEND_SUSPEND3 (0x08) #define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \ @@ -48668,7 +50853,12 @@ diff -Nur linux-3.18.10/drivers/net/usb/smsc95xx.c linux-rpi/drivers/net/usb/sms struct smsc95xx_priv { u32 mac_cr; -@@ -74,6 +75,10 @@ +@@ -70,10 +71,14 @@ + u8 suspend_flags; + }; + +-static bool turbo_mode = true; ++static bool turbo_mode = false; module_param(turbo_mode, bool, 0644); MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); @@ -48739,9 +50929,25 @@ diff -Nur linux-3.18.10/drivers/net/usb/smsc95xx.c linux-rpi/drivers/net/usb/sms /* try reading mac address from EEPROM */ if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN, dev->net->dev_addr) == 0) { -diff -Nur linux-3.18.10/drivers/of/fdt.c linux-rpi/drivers/of/fdt.c ---- linux-3.18.10/drivers/of/fdt.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/of/fdt.c 2015-03-26 11:46:52.772236778 +0100 +@@ -1783,7 +1839,6 @@ + if (dev->net->features & NETIF_F_RXCSUM) + smsc95xx_rx_csum_offload(skb); + skb_trim(skb, skb->len - 4); /* remove fcs */ +- skb->truesize = size + sizeof(struct sk_buff); + + return 1; + } +@@ -1801,7 +1856,6 @@ + if (dev->net->features & NETIF_F_RXCSUM) + smsc95xx_rx_csum_offload(ax_skb); + skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */ +- ax_skb->truesize = size + sizeof(struct sk_buff); + + usbnet_skb_return(dev, ax_skb); + } +diff -Nur linux-3.18.14/drivers/of/fdt.c linux-rpi/drivers/of/fdt.c +--- linux-3.18.14/drivers/of/fdt.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/of/fdt.c 2015-05-31 14:46:11.969660970 -0500 @@ -901,19 +901,38 @@ /* Retrieve command line */ @@ -48800,9 +51006,9 @@ diff -Nur linux-3.18.10/drivers/of/fdt.c linux-rpi/drivers/of/fdt.c if (!d) return -ENOENT; -diff -Nur linux-3.18.10/drivers/pinctrl/pinctrl-bcm2835.c linux-rpi/drivers/pinctrl/pinctrl-bcm2835.c ---- linux-3.18.10/drivers/pinctrl/pinctrl-bcm2835.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/pinctrl/pinctrl-bcm2835.c 2015-03-26 11:46:52.964236956 +0100 +diff -Nur linux-3.18.14/drivers/pinctrl/pinctrl-bcm2835.c linux-rpi/drivers/pinctrl/pinctrl-bcm2835.c +--- linux-3.18.14/drivers/pinctrl/pinctrl-bcm2835.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/pinctrl/pinctrl-bcm2835.c 2015-05-31 14:46:12.077660969 -0500 @@ -47,6 +47,7 @@ #define MODULE_NAME "pinctrl-bcm2835" #define BCM2835_NUM_GPIOS 54 @@ -48940,9 +51146,9 @@ diff -Nur linux-3.18.10/drivers/pinctrl/pinctrl-bcm2835.c linux-rpi/drivers/pinc len = strlen(dev_name(pc->dev)) + 16; name = devm_kzalloc(pc->dev, len, GFP_KERNEL); -diff -Nur linux-3.18.10/drivers/rtc/rtc-ds1307.c linux-rpi/drivers/rtc/rtc-ds1307.c ---- linux-3.18.10/drivers/rtc/rtc-ds1307.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/rtc/rtc-ds1307.c 2015-03-26 11:46:53.432237389 +0100 +diff -Nur linux-3.18.14/drivers/rtc/rtc-ds1307.c linux-rpi/drivers/rtc/rtc-ds1307.c +--- linux-3.18.14/drivers/rtc/rtc-ds1307.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/rtc/rtc-ds1307.c 2015-05-31 14:46:12.229660968 -0500 @@ -1241,6 +1241,14 @@ return 0; } @@ -48958,9 +51164,9 @@ diff -Nur linux-3.18.10/drivers/rtc/rtc-ds1307.c linux-rpi/drivers/rtc/rtc-ds130 static struct i2c_driver ds1307_driver = { .driver = { .name = "rtc-ds1307", -diff -Nur linux-3.18.10/drivers/spi/Kconfig linux-rpi/drivers/spi/Kconfig ---- linux-3.18.10/drivers/spi/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/spi/Kconfig 2015-03-26 11:46:53.876237802 +0100 +diff -Nur linux-3.18.14/drivers/spi/Kconfig linux-rpi/drivers/spi/Kconfig +--- linux-3.18.14/drivers/spi/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/spi/Kconfig 2015-05-31 14:46:12.493660965 -0500 @@ -77,7 +77,7 @@ config SPI_BCM2835 @@ -48985,9 +51191,9 @@ diff -Nur linux-3.18.10/drivers/spi/Kconfig linux-rpi/drivers/spi/Kconfig config SPI_BFIN5XX tristate "SPI controller driver for ADI Blackfin5xx" depends on BLACKFIN && !BF60x -diff -Nur linux-3.18.10/drivers/spi/Makefile linux-rpi/drivers/spi/Makefile ---- linux-3.18.10/drivers/spi/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/spi/Makefile 2015-03-26 11:46:53.876237802 +0100 +diff -Nur linux-3.18.14/drivers/spi/Makefile linux-rpi/drivers/spi/Makefile +--- linux-3.18.14/drivers/spi/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/spi/Makefile 2015-05-31 14:46:12.493660965 -0500 @@ -20,6 +20,7 @@ obj-$(CONFIG_SPI_BCM63XX_HSSPI) += spi-bcm63xx-hsspi.o obj-$(CONFIG_SPI_BFIN5XX) += spi-bfin5xx.o @@ -48996,9 +51202,9 @@ diff -Nur linux-3.18.10/drivers/spi/Makefile linux-rpi/drivers/spi/Makefile obj-$(CONFIG_SPI_BFIN_SPORT) += spi-bfin-sport.o obj-$(CONFIG_SPI_BITBANG) += spi-bitbang.o obj-$(CONFIG_SPI_BUTTERFLY) += spi-butterfly.o -diff -Nur linux-3.18.10/drivers/spi/spi-bcm2708.c linux-rpi/drivers/spi/spi-bcm2708.c ---- linux-3.18.10/drivers/spi/spi-bcm2708.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/spi/spi-bcm2708.c 2015-03-26 11:46:53.876237802 +0100 +diff -Nur linux-3.18.14/drivers/spi/spi-bcm2708.c linux-rpi/drivers/spi/spi-bcm2708.c +--- linux-3.18.14/drivers/spi/spi-bcm2708.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/spi/spi-bcm2708.c 2015-05-31 14:46:12.493660965 -0500 @@ -0,0 +1,635 @@ +/* + * Driver for Broadcom BCM2708 SPI Controllers @@ -49635,9 +51841,536 @@ diff -Nur linux-3.18.10/drivers/spi/spi-bcm2708.c linux-rpi/drivers/spi/spi-bcm2 +MODULE_AUTHOR("Chris Boot <bootc@bootc.net>"); +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_agm1264k-fl.c linux-rpi/drivers/staging/fbtft/fb_agm1264k-fl.c ---- linux-3.18.10/drivers/staging/fbtft/fb_agm1264k-fl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_agm1264k-fl.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/spi/spi-bcm2835.c linux-rpi/drivers/spi/spi-bcm2835.c +--- linux-3.18.14/drivers/spi/spi-bcm2835.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/spi/spi-bcm2835.c 2015-05-31 14:46:12.493660965 -0500 +@@ -3,6 +3,7 @@ + * + * Copyright (C) 2012 Chris Boot + * Copyright (C) 2013 Stephen Warren ++ * Copyright (C) 2015 Martin Sperl + * + * This driver is inspired by: + * spi-ath79.c, Copyright (C) 2009-2011 Gabor Juhos <juhosg@openwrt.org> +@@ -33,6 +34,7 @@ + #include <linux/module.h> + #include <linux/of.h> + #include <linux/of_irq.h> ++#include <linux/of_gpio.h> + #include <linux/of_device.h> + #include <linux/spi/spi.h> + +@@ -70,8 +72,10 @@ + #define BCM2835_SPI_CS_CS_10 0x00000002 + #define BCM2835_SPI_CS_CS_01 0x00000001 + +-#define BCM2835_SPI_TIMEOUT_MS 30000 +-#define BCM2835_SPI_MODE_BITS (SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_NO_CS) ++#define BCM2835_SPI_POLLING_LIMIT_US 30 ++#define BCM2835_SPI_TIMEOUT_MS 30000 ++#define BCM2835_SPI_MODE_BITS (SPI_CPOL | SPI_CPHA | SPI_CS_HIGH \ ++ | SPI_NO_CS | SPI_3WIRE) + + #define DRV_NAME "spi-bcm2835" + +@@ -79,10 +83,10 @@ + void __iomem *regs; + struct clk *clk; + int irq; +- struct completion done; + const u8 *tx_buf; + u8 *rx_buf; +- int len; ++ int tx_len; ++ int rx_len; + }; + + static inline u32 bcm2835_rd(struct bcm2835_spi *bs, unsigned reg) +@@ -95,205 +99,314 @@ + writel(val, bs->regs + reg); + } + +-static inline void bcm2835_rd_fifo(struct bcm2835_spi *bs, int len) ++static inline void bcm2835_rd_fifo(struct bcm2835_spi *bs) + { + u8 byte; + +- while (len--) { ++ while ((bs->rx_len) && ++ (bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_RXD)) { + byte = bcm2835_rd(bs, BCM2835_SPI_FIFO); + if (bs->rx_buf) + *bs->rx_buf++ = byte; ++ bs->rx_len--; + } + } + +-static inline void bcm2835_wr_fifo(struct bcm2835_spi *bs, int len) ++static inline void bcm2835_wr_fifo(struct bcm2835_spi *bs) + { + u8 byte; + +- if (len > bs->len) +- len = bs->len; +- +- while (len--) { ++ while ((bs->tx_len) && ++ (bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_TXD)) { + byte = bs->tx_buf ? *bs->tx_buf++ : 0; + bcm2835_wr(bs, BCM2835_SPI_FIFO, byte); +- bs->len--; ++ bs->tx_len--; + } + } + ++static void bcm2835_spi_reset_hw(struct spi_master *master) ++{ ++ struct bcm2835_spi *bs = spi_master_get_devdata(master); ++ u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); ++ ++ /* Disable SPI interrupts and transfer */ ++ cs &= ~(BCM2835_SPI_CS_INTR | ++ BCM2835_SPI_CS_INTD | ++ BCM2835_SPI_CS_TA); ++ /* and reset RX/TX FIFOS */ ++ cs |= BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX; ++ ++ /* and reset the SPI_HW */ ++ bcm2835_wr(bs, BCM2835_SPI_CS, cs); ++} ++ + static irqreturn_t bcm2835_spi_interrupt(int irq, void *dev_id) + { + struct spi_master *master = dev_id; + struct bcm2835_spi *bs = spi_master_get_devdata(master); +- u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); + +- /* +- * RXR - RX needs Reading. This means 12 (or more) bytes have been +- * transmitted and hence 12 (or more) bytes have been received. +- * +- * The FIFO is 16-bytes deep. We check for this interrupt to keep the +- * FIFO full; we have a 4-byte-time buffer for IRQ latency. We check +- * this before DONE (TX empty) just in case we delayed processing this +- * interrupt for some reason. +- * +- * We only check for this case if we have more bytes to TX; at the end +- * of the transfer, we ignore this pipelining optimization, and let +- * bcm2835_spi_finish_transfer() drain the RX FIFO. ++ /* Read as many bytes as possible from FIFO */ ++ bcm2835_rd_fifo(bs); ++ /* Write as many bytes as possible to FIFO */ ++ bcm2835_wr_fifo(bs); ++ ++ /* based on flags decide if we can finish the transfer */ ++ if (bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_DONE) { ++ /* Transfer complete - reset SPI HW */ ++ bcm2835_spi_reset_hw(master); ++ /* wake up the framework */ ++ complete(&master->xfer_completion); ++ } ++ ++ return IRQ_HANDLED; ++} ++ ++static int bcm2835_spi_transfer_one_poll(struct spi_master *master, ++ struct spi_device *spi, ++ struct spi_transfer *tfr, ++ u32 cs, ++ unsigned long xfer_time_us) ++{ ++ struct bcm2835_spi *bs = spi_master_get_devdata(master); ++ /* set timeout to 1 second of maximum polling */ ++ unsigned long timeout = jiffies + HZ; ++ ++ /* enable HW block without interrupts */ ++ bcm2835_wr(bs, BCM2835_SPI_CS, cs | BCM2835_SPI_CS_TA); ++ ++ /* loop until finished the transfer */ ++ while (bs->rx_len) { ++ /* read from fifo as much as possible */ ++ bcm2835_rd_fifo(bs); ++ /* fill in tx fifo as much as possible */ ++ bcm2835_wr_fifo(bs); ++ /* if we still expect some data after the read, ++ * check for a possible timeout ++ */ ++ if (bs->rx_len && time_after(jiffies, timeout)) { ++ /* Transfer complete - reset SPI HW */ ++ bcm2835_spi_reset_hw(master); ++ /* and return timeout */ ++ return -ETIMEDOUT; ++ } ++ } ++ ++ /* Transfer complete - reset SPI HW */ ++ bcm2835_spi_reset_hw(master); ++ /* and return without waiting for completion */ ++ return 0; ++} ++ ++static int bcm2835_spi_transfer_one_irq(struct spi_master *master, ++ struct spi_device *spi, ++ struct spi_transfer *tfr, ++ u32 cs) ++{ ++ struct bcm2835_spi *bs = spi_master_get_devdata(master); ++ ++ /* fill in fifo if we have gpio-cs ++ * note that there have been rare events where the native-CS ++ * flapped for <1us which may change the behaviour ++ * with gpio-cs this does not happen, so it is implemented ++ * only for this case + */ +- if (bs->len && (cs & BCM2835_SPI_CS_RXR)) { +- /* Read 12 bytes of data */ +- bcm2835_rd_fifo(bs, 12); +- +- /* Write up to 12 bytes */ +- bcm2835_wr_fifo(bs, 12); +- +- /* +- * We must have written something to the TX FIFO due to the +- * bs->len check above, so cannot be DONE. Hence, return +- * early. Note that DONE could also be set if we serviced an +- * RXR interrupt really late. ++ if (gpio_is_valid(spi->cs_gpio)) { ++ /* enable HW block, but without interrupts enabled ++ * this would triggern an immediate interrupt + */ +- return IRQ_HANDLED; ++ bcm2835_wr(bs, BCM2835_SPI_CS, ++ cs | BCM2835_SPI_CS_TA); ++ /* fill in tx fifo as much as possible */ ++ bcm2835_wr_fifo(bs); + } + + /* +- * DONE - TX empty. This occurs when we first enable the transfer +- * since we do not pre-fill the TX FIFO. At any other time, given that +- * we refill the TX FIFO above based on RXR, and hence ignore DONE if +- * RXR is set, DONE really does mean end-of-transfer. ++ * Enable the HW block. This will immediately trigger a DONE (TX ++ * empty) interrupt, upon which we will fill the TX FIFO with the ++ * first TX bytes. Pre-filling the TX FIFO here to avoid the ++ * interrupt doesn't work:-( + */ +- if (cs & BCM2835_SPI_CS_DONE) { +- if (bs->len) { /* First interrupt in a transfer */ +- bcm2835_wr_fifo(bs, 16); +- } else { /* Transfer complete */ +- /* Disable SPI interrupts */ +- cs &= ~(BCM2835_SPI_CS_INTR | BCM2835_SPI_CS_INTD); +- bcm2835_wr(bs, BCM2835_SPI_CS, cs); +- +- /* +- * Wake up bcm2835_spi_transfer_one(), which will call +- * bcm2835_spi_finish_transfer(), to drain the RX FIFO. +- */ +- complete(&bs->done); +- } +- +- return IRQ_HANDLED; +- } ++ cs |= BCM2835_SPI_CS_INTR | BCM2835_SPI_CS_INTD | BCM2835_SPI_CS_TA; ++ bcm2835_wr(bs, BCM2835_SPI_CS, cs); + +- return IRQ_NONE; ++ /* signal that we need to wait for completion */ ++ return 1; + } + +-static int bcm2835_spi_start_transfer(struct spi_device *spi, +- struct spi_transfer *tfr) ++static int bcm2835_spi_transfer_one(struct spi_master *master, ++ struct spi_device *spi, ++ struct spi_transfer *tfr) + { +- struct bcm2835_spi *bs = spi_master_get_devdata(spi->master); ++ struct bcm2835_spi *bs = spi_master_get_devdata(master); + unsigned long spi_hz, clk_hz, cdiv; +- u32 cs = BCM2835_SPI_CS_INTR | BCM2835_SPI_CS_INTD | BCM2835_SPI_CS_TA; ++ unsigned long spi_used_hz, xfer_time_us; ++ u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); + ++ /* set clock */ + spi_hz = tfr->speed_hz; + clk_hz = clk_get_rate(bs->clk); + + if (spi_hz >= clk_hz / 2) { + cdiv = 2; /* clk_hz/2 is the fastest we can go */ + } else if (spi_hz) { +- /* CDIV must be a power of two */ +- cdiv = roundup_pow_of_two(DIV_ROUND_UP(clk_hz, spi_hz)); ++ /* CDIV must be a multiple of two */ ++ cdiv = DIV_ROUND_UP(clk_hz, spi_hz); ++ cdiv += (cdiv % 2); + + if (cdiv >= 65536) + cdiv = 0; /* 0 is the slowest we can go */ +- } else ++ } else { + cdiv = 0; /* 0 is the slowest we can go */ ++ } ++ spi_used_hz = cdiv ? (clk_hz / cdiv) : (clk_hz / 65536); ++ bcm2835_wr(bs, BCM2835_SPI_CLK, cdiv); + ++ /* handle all the modes */ ++ if ((spi->mode & SPI_3WIRE) && (tfr->rx_buf)) ++ cs |= BCM2835_SPI_CS_REN; + if (spi->mode & SPI_CPOL) + cs |= BCM2835_SPI_CS_CPOL; + if (spi->mode & SPI_CPHA) + cs |= BCM2835_SPI_CS_CPHA; + +- if (!(spi->mode & SPI_NO_CS)) { +- if (spi->mode & SPI_CS_HIGH) { +- cs |= BCM2835_SPI_CS_CSPOL; +- cs |= BCM2835_SPI_CS_CSPOL0 << spi->chip_select; +- } +- +- cs |= spi->chip_select; +- } ++ /* for gpio_cs set dummy CS so that no HW-CS get changed ++ * we can not run this in bcm2835_spi_set_cs, as it does ++ * not get called for cs_gpio cases, so we need to do it here ++ */ ++ if (gpio_is_valid(spi->cs_gpio) || (spi->mode & SPI_NO_CS)) ++ cs |= BCM2835_SPI_CS_CS_10 | BCM2835_SPI_CS_CS_01; + +- reinit_completion(&bs->done); ++ /* set transmit buffers and length */ + bs->tx_buf = tfr->tx_buf; + bs->rx_buf = tfr->rx_buf; +- bs->len = tfr->len; ++ bs->tx_len = tfr->len; ++ bs->rx_len = tfr->len; + +- bcm2835_wr(bs, BCM2835_SPI_CLK, cdiv); +- /* +- * Enable the HW block. This will immediately trigger a DONE (TX +- * empty) interrupt, upon which we will fill the TX FIFO with the +- * first TX bytes. Pre-filling the TX FIFO here to avoid the +- * interrupt doesn't work:-( +- */ +- bcm2835_wr(bs, BCM2835_SPI_CS, cs); ++ /* calculate the estimated time in us the transfer runs */ ++ xfer_time_us = tfr->len ++ * 9 /* clocks/byte - SPI-HW waits 1 clock after each byte */ ++ * 1000000 / spi_used_hz; ++ ++ /* for short requests run polling*/ ++ if (xfer_time_us <= BCM2835_SPI_POLLING_LIMIT_US) ++ return bcm2835_spi_transfer_one_poll(master, spi, tfr, ++ cs, xfer_time_us); + +- return 0; ++ return bcm2835_spi_transfer_one_irq(master, spi, tfr, cs); + } + +-static int bcm2835_spi_finish_transfer(struct spi_device *spi, +- struct spi_transfer *tfr, bool cs_change) ++static void bcm2835_spi_handle_err(struct spi_master *master, ++ struct spi_message *msg) + { +- struct bcm2835_spi *bs = spi_master_get_devdata(spi->master); +- u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); +- +- /* Drain RX FIFO */ +- while (cs & BCM2835_SPI_CS_RXD) { +- bcm2835_rd_fifo(bs, 1); +- cs = bcm2835_rd(bs, BCM2835_SPI_CS); +- } +- +- if (tfr->delay_usecs) +- udelay(tfr->delay_usecs); +- +- if (cs_change) +- /* Clear TA flag */ +- bcm2835_wr(bs, BCM2835_SPI_CS, cs & ~BCM2835_SPI_CS_TA); +- +- return 0; ++ bcm2835_spi_reset_hw(master); + } + +-static int bcm2835_spi_transfer_one(struct spi_master *master, +- struct spi_message *mesg) ++static void bcm2835_spi_set_cs(struct spi_device *spi, bool gpio_level) + { +- struct bcm2835_spi *bs = spi_master_get_devdata(master); +- struct spi_transfer *tfr; +- struct spi_device *spi = mesg->spi; +- int err = 0; +- unsigned int timeout; +- bool cs_change; +- +- list_for_each_entry(tfr, &mesg->transfers, transfer_list) { +- err = bcm2835_spi_start_transfer(spi, tfr); +- if (err) +- goto out; +- +- timeout = wait_for_completion_timeout(&bs->done, +- msecs_to_jiffies(BCM2835_SPI_TIMEOUT_MS)); +- if (!timeout) { +- err = -ETIMEDOUT; +- goto out; +- } ++ /* ++ * we can assume that we are "native" as per spi_set_cs ++ * calling us ONLY when cs_gpio is not set ++ * we can also assume that we are CS < 3 as per bcm2835_spi_setup ++ * we would not get called because of error handling there. ++ * the level passed is the electrical level not enabled/disabled ++ * so it has to get translated back to enable/disable ++ * see spi_set_cs in spi.c for the implementation ++ */ + +- cs_change = tfr->cs_change || +- list_is_last(&tfr->transfer_list, &mesg->transfers); ++ struct spi_master *master = spi->master; ++ struct bcm2835_spi *bs = spi_master_get_devdata(master); ++ u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); ++ bool enable; + +- err = bcm2835_spi_finish_transfer(spi, tfr, cs_change); +- if (err) +- goto out; ++ /* calculate the enable flag from the passed gpio_level */ ++ enable = (spi->mode & SPI_CS_HIGH) ? gpio_level : !gpio_level; + +- mesg->actual_length += (tfr->len - bs->len); ++ /* set flags for "reverse" polarity in the registers */ ++ if (spi->mode & SPI_CS_HIGH) { ++ /* set the correct CS-bits */ ++ cs |= BCM2835_SPI_CS_CSPOL; ++ cs |= BCM2835_SPI_CS_CSPOL0 << spi->chip_select; ++ } else { ++ /* clean the CS-bits */ ++ cs &= ~BCM2835_SPI_CS_CSPOL; ++ cs &= ~(BCM2835_SPI_CS_CSPOL0 << spi->chip_select); ++ } ++ ++ /* select the correct chip_select depending on disabled/enabled */ ++ if (enable) { ++ /* set cs correctly */ ++ if (spi->mode & SPI_NO_CS) { ++ /* use the "undefined" chip-select */ ++ cs |= BCM2835_SPI_CS_CS_10 | BCM2835_SPI_CS_CS_01; ++ } else { ++ /* set the chip select */ ++ cs &= ~(BCM2835_SPI_CS_CS_10 | BCM2835_SPI_CS_CS_01); ++ cs |= spi->chip_select; ++ } ++ } else { ++ /* disable CSPOL which puts HW-CS into deselected state */ ++ cs &= ~BCM2835_SPI_CS_CSPOL; ++ /* use the "undefined" chip-select as precaution */ ++ cs |= BCM2835_SPI_CS_CS_10 | BCM2835_SPI_CS_CS_01; + } + +-out: +- /* Clear FIFOs, and disable the HW block */ +- bcm2835_wr(bs, BCM2835_SPI_CS, +- BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX); +- mesg->status = err; +- spi_finalize_current_message(master); ++ /* finally set the calculated flags in SPI_CS */ ++ bcm2835_wr(bs, BCM2835_SPI_CS, cs); ++} ++ ++static int chip_match_name(struct gpio_chip *chip, void *data) ++{ ++ return !strcmp(chip->label, data); ++} ++ ++static int bcm2835_spi_setup(struct spi_device *spi) ++{ ++ int err; ++ struct gpio_chip *chip; ++ /* ++ * sanity checking the native-chipselects ++ */ ++ if (spi->mode & SPI_NO_CS) ++ return 0; ++ if (gpio_is_valid(spi->cs_gpio)) ++ return 0; ++ if (spi->chip_select > 1) { ++ /* error in the case of native CS requested with CS > 1 ++ * officially there is a CS2, but it is not documented ++ * which GPIO is connected with that... ++ */ ++ dev_err(&spi->dev, ++ "setup: only two native chip-selects are supported\n"); ++ return -EINVAL; ++ } ++ /* now translate native cs to GPIO */ ++ ++ /* get the gpio chip for the base */ ++ chip = gpiochip_find("pinctrl-bcm2835", chip_match_name); ++ if (!chip) ++ return 0; ++ ++ /* and calculate the real CS */ ++ spi->cs_gpio = chip->base + 8 - spi->chip_select; ++ ++ /* and set up the "mode" and level */ ++ dev_info(&spi->dev, "setting up native-CS%i as GPIO %i\n", ++ spi->chip_select, spi->cs_gpio); ++ ++ /* set up GPIO as output and pull to the correct level */ ++ err = gpio_direction_output(spi->cs_gpio, ++ (spi->mode & SPI_CS_HIGH) ? 0 : 1); ++ if (err) { ++ dev_err(&spi->dev, ++ "could not set CS%i gpio %i as output: %i", ++ spi->chip_select, spi->cs_gpio, err); ++ return err; ++ } ++ /* the implementation of pinctrl-bcm2835 currently does not ++ * set the GPIO value when using gpio_direction_output ++ * so we are setting it here explicitly ++ */ ++ gpio_set_value(spi->cs_gpio, (spi->mode & SPI_CS_HIGH) ? 0 : 1); + + return 0; + } +@@ -316,13 +429,14 @@ + master->mode_bits = BCM2835_SPI_MODE_BITS; + master->bits_per_word_mask = SPI_BPW_MASK(8); + master->num_chipselect = 3; +- master->transfer_one_message = bcm2835_spi_transfer_one; ++ master->setup = bcm2835_spi_setup; ++ master->set_cs = bcm2835_spi_set_cs; ++ master->transfer_one = bcm2835_spi_transfer_one; ++ //master->handle_err = bcm2835_spi_handle_err; + master->dev.of_node = pdev->dev.of_node; + + bs = spi_master_get_devdata(master); + +- init_completion(&bs->done); +- + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + bs->regs = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(bs->regs)) { +@@ -347,13 +461,13 @@ + clk_prepare_enable(bs->clk); + + err = devm_request_irq(&pdev->dev, bs->irq, bcm2835_spi_interrupt, 0, +- dev_name(&pdev->dev), master); ++ dev_name(&pdev->dev), master); + if (err) { + dev_err(&pdev->dev, "could not request IRQ: %d\n", err); + goto out_clk_disable; + } + +- /* initialise the hardware */ ++ /* initialise the hardware with the default polarities */ + bcm2835_wr(bs, BCM2835_SPI_CS, + BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX); + +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_agm1264k-fl.c linux-rpi/drivers/staging/fbtft/fb_agm1264k-fl.c +--- linux-3.18.14/drivers/staging/fbtft/fb_agm1264k-fl.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_agm1264k-fl.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,462 @@ +/* + * FB driver for Two KS0108 LCD controllers in AGM1264K-FL display @@ -50101,9 +52834,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_agm1264k-fl.c linux-rpi/drivers +MODULE_DESCRIPTION("Two KS0108 LCD controllers in AGM1264K-FL display"); +MODULE_AUTHOR("ololoshka2871"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_bd663474.c linux-rpi/drivers/staging/fbtft/fb_bd663474.c ---- linux-3.18.10/drivers/staging/fbtft/fb_bd663474.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_bd663474.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_bd663474.c linux-rpi/drivers/staging/fbtft/fb_bd663474.c +--- linux-3.18.14/drivers/staging/fbtft/fb_bd663474.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_bd663474.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,193 @@ +/* + * FB driver for the uPD161704 LCD Controller @@ -50298,9 +53031,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_bd663474.c linux-rpi/drivers/st +MODULE_DESCRIPTION("FB driver for the uPD161704 LCD Controller"); +MODULE_AUTHOR("Seong-Woo Kim"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_hx8340bn.c linux-rpi/drivers/staging/fbtft/fb_hx8340bn.c ---- linux-3.18.10/drivers/staging/fbtft/fb_hx8340bn.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_hx8340bn.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_hx8340bn.c linux-rpi/drivers/staging/fbtft/fb_hx8340bn.c +--- linux-3.18.14/drivers/staging/fbtft/fb_hx8340bn.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_hx8340bn.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,229 @@ +/* + * FB driver for the HX8340BN LCD Controller @@ -50531,9 +53264,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_hx8340bn.c linux-rpi/drivers/st +MODULE_DESCRIPTION("FB driver for the HX8340BN LCD Controller"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_hx8347d.c linux-rpi/drivers/staging/fbtft/fb_hx8347d.c ---- linux-3.18.10/drivers/staging/fbtft/fb_hx8347d.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_hx8347d.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_hx8347d.c linux-rpi/drivers/staging/fbtft/fb_hx8347d.c +--- linux-3.18.14/drivers/staging/fbtft/fb_hx8347d.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_hx8347d.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,181 @@ +/* + * FB driver for the HX8347D LCD Controller @@ -50716,9 +53449,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_hx8347d.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the HX8347D LCD Controller"); +MODULE_AUTHOR("Christian Vogelgsang"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_hx8353d.c linux-rpi/drivers/staging/fbtft/fb_hx8353d.c ---- linux-3.18.10/drivers/staging/fbtft/fb_hx8353d.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_hx8353d.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_hx8353d.c linux-rpi/drivers/staging/fbtft/fb_hx8353d.c +--- linux-3.18.14/drivers/staging/fbtft/fb_hx8353d.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_hx8353d.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,166 @@ +/* + * FB driver for the HX8353D LCD Controller @@ -50886,9 +53619,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_hx8353d.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the HX8353D LCD Controller"); +MODULE_AUTHOR("Petr Olivka"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9320.c linux-rpi/drivers/staging/fbtft/fb_ili9320.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ili9320.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ili9320.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ili9320.c linux-rpi/drivers/staging/fbtft/fb_ili9320.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ili9320.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ili9320.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,234 @@ +/* + * FB driver for the ILI9320 LCD Controller @@ -51124,9 +53857,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9320.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the ILI9320 LCD Controller"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9325.c linux-rpi/drivers/staging/fbtft/fb_ili9325.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ili9325.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ili9325.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ili9325.c linux-rpi/drivers/staging/fbtft/fb_ili9325.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ili9325.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ili9325.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,291 @@ +/* + * FB driver for the ILI9325 LCD Controller @@ -51419,9 +54152,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9325.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the ILI9325 LCD Controller"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9340.c linux-rpi/drivers/staging/fbtft/fb_ili9340.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ili9340.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ili9340.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ili9340.c linux-rpi/drivers/staging/fbtft/fb_ili9340.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ili9340.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ili9340.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,163 @@ +/* + * FB driver for the ILI9340 LCD Controller @@ -51586,9 +54319,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9340.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the ILI9340 LCD Controller"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9341.c linux-rpi/drivers/staging/fbtft/fb_ili9341.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ili9341.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ili9341.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ili9341.c linux-rpi/drivers/staging/fbtft/fb_ili9341.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ili9341.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ili9341.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,179 @@ +/* + * FB driver for the ILI9341 LCD display controller @@ -51769,9 +54502,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9341.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the ILI9341 LCD display controller"); +MODULE_AUTHOR("Christian Vogelgsang"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9481.c linux-rpi/drivers/staging/fbtft/fb_ili9481.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ili9481.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ili9481.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ili9481.c linux-rpi/drivers/staging/fbtft/fb_ili9481.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ili9481.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ili9481.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,117 @@ +/* + * FB driver for the ILI9481 LCD Controller @@ -51890,9 +54623,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9481.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the ILI9481 LCD Controller"); +MODULE_AUTHOR("Petr Olivka"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9486.c linux-rpi/drivers/staging/fbtft/fb_ili9486.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ili9486.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ili9486.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ili9486.c linux-rpi/drivers/staging/fbtft/fb_ili9486.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ili9486.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ili9486.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,121 @@ +/* + * FB driver for the ILI9486 LCD Controller @@ -52015,9 +54748,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ili9486.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the ILI9486 LCD Controller"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_pcd8544.c linux-rpi/drivers/staging/fbtft/fb_pcd8544.c ---- linux-3.18.10/drivers/staging/fbtft/fb_pcd8544.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_pcd8544.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_pcd8544.c linux-rpi/drivers/staging/fbtft/fb_pcd8544.c +--- linux-3.18.14/drivers/staging/fbtft/fb_pcd8544.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_pcd8544.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,177 @@ +/* + * FB driver for the PCD8544 LCD Controller @@ -52196,9 +54929,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_pcd8544.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the PCD8544 LCD Controller"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ra8875.c linux-rpi/drivers/staging/fbtft/fb_ra8875.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ra8875.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ra8875.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ra8875.c linux-rpi/drivers/staging/fbtft/fb_ra8875.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ra8875.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ra8875.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,331 @@ +/****************************************************************************** + @@ -52531,9 +55264,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ra8875.c linux-rpi/drivers/stag +MODULE_DESCRIPTION("FB driver for the RA8875 LCD Controller"); +MODULE_AUTHOR("Pf@nne"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_s6d02a1.c linux-rpi/drivers/staging/fbtft/fb_s6d02a1.c ---- linux-3.18.10/drivers/staging/fbtft/fb_s6d02a1.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_s6d02a1.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_s6d02a1.c linux-rpi/drivers/staging/fbtft/fb_s6d02a1.c +--- linux-3.18.14/drivers/staging/fbtft/fb_s6d02a1.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_s6d02a1.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,168 @@ +/* + * FB driver for the S6D02A1 LCD Controller @@ -52703,9 +55436,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_s6d02a1.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the S6D02A1 LCD Controller"); +MODULE_AUTHOR("WOLFGANG BUENING"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_s6d1121.c linux-rpi/drivers/staging/fbtft/fb_s6d1121.c ---- linux-3.18.10/drivers/staging/fbtft/fb_s6d1121.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_s6d1121.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_s6d1121.c linux-rpi/drivers/staging/fbtft/fb_s6d1121.c +--- linux-3.18.14/drivers/staging/fbtft/fb_s6d1121.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_s6d1121.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,208 @@ +/* + * FB driver for the S6D1121 LCD Controller @@ -52915,9 +55648,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_s6d1121.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the S6D1121 LCD Controller"); +MODULE_AUTHOR("Roman Rolinsky"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ssd1289.c linux-rpi/drivers/staging/fbtft/fb_ssd1289.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ssd1289.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ssd1289.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ssd1289.c linux-rpi/drivers/staging/fbtft/fb_ssd1289.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ssd1289.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ssd1289.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,206 @@ +/* + * FB driver for the SSD1289 LCD Controller @@ -53125,9 +55858,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ssd1289.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the SSD1289 LCD Controller"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ssd1306.c linux-rpi/drivers/staging/fbtft/fb_ssd1306.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ssd1306.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ssd1306.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ssd1306.c linux-rpi/drivers/staging/fbtft/fb_ssd1306.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ssd1306.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ssd1306.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,229 @@ +/* + * FB driver for the SSD1306 OLED Controller @@ -53358,9 +56091,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ssd1306.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("SSD1306 OLED Driver"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ssd1331.c linux-rpi/drivers/staging/fbtft/fb_ssd1331.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ssd1331.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ssd1331.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ssd1331.c linux-rpi/drivers/staging/fbtft/fb_ssd1331.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ssd1331.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ssd1331.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,205 @@ +#include <linux/module.h> +#include <linux/kernel.h> @@ -53567,9 +56300,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ssd1331.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("SSD1331 OLED Driver"); +MODULE_AUTHOR("Alec Smecher (adapted from SSD1351 by James Davies)"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ssd1351.c linux-rpi/drivers/staging/fbtft/fb_ssd1351.c ---- linux-3.18.10/drivers/staging/fbtft/fb_ssd1351.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_ssd1351.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_ssd1351.c linux-rpi/drivers/staging/fbtft/fb_ssd1351.c +--- linux-3.18.14/drivers/staging/fbtft/fb_ssd1351.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_ssd1351.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,258 @@ +#include <linux/module.h> +#include <linux/kernel.h> @@ -53829,9 +56562,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_ssd1351.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("SSD1351 OLED Driver"); +MODULE_AUTHOR("James Davies"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_st7735r.c linux-rpi/drivers/staging/fbtft/fb_st7735r.c ---- linux-3.18.10/drivers/staging/fbtft/fb_st7735r.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_st7735r.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_st7735r.c linux-rpi/drivers/staging/fbtft/fb_st7735r.c +--- linux-3.18.14/drivers/staging/fbtft/fb_st7735r.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_st7735r.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,195 @@ +/* + * FB driver for the ST7735R LCD Controller @@ -54028,9 +56761,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_st7735r.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the ST7735R LCD Controller"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft-bus.c linux-rpi/drivers/staging/fbtft/fbtft-bus.c ---- linux-3.18.10/drivers/staging/fbtft/fbtft-bus.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fbtft-bus.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fbtft-bus.c linux-rpi/drivers/staging/fbtft/fbtft-bus.c +--- linux-3.18.14/drivers/staging/fbtft/fbtft-bus.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fbtft-bus.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,256 @@ +#include <linux/export.h> +#include <linux/errno.h> @@ -54288,9 +57021,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft-bus.c linux-rpi/drivers/stag + return par->fbtftops.write(par, vmem16, len); +} +EXPORT_SYMBOL(fbtft_write_vmem16_bus16); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft-core.c linux-rpi/drivers/staging/fbtft/fbtft-core.c ---- linux-3.18.10/drivers/staging/fbtft/fbtft-core.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fbtft-core.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fbtft-core.c linux-rpi/drivers/staging/fbtft/fbtft-core.c +--- linux-3.18.14/drivers/staging/fbtft/fbtft-core.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fbtft-core.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,1521 @@ +/* + * Copyright (C) 2013 Noralf Tronnes @@ -55813,9 +58546,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft-core.c linux-rpi/drivers/sta +EXPORT_SYMBOL(fbtft_remove_common); + +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft_device.c linux-rpi/drivers/staging/fbtft/fbtft_device.c ---- linux-3.18.10/drivers/staging/fbtft/fbtft_device.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fbtft_device.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fbtft_device.c linux-rpi/drivers/staging/fbtft/fbtft_device.c +--- linux-3.18.14/drivers/staging/fbtft/fbtft_device.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fbtft_device.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,1444 @@ +/* + * @@ -57261,9 +59994,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft_device.c linux-rpi/drivers/s +MODULE_DESCRIPTION("Add a FBTFT device."); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft.h linux-rpi/drivers/staging/fbtft/fbtft.h ---- linux-3.18.10/drivers/staging/fbtft/fbtft.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fbtft.h 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fbtft.h linux-rpi/drivers/staging/fbtft/fbtft.h +--- linux-3.18.14/drivers/staging/fbtft/fbtft.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fbtft.h 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,447 @@ +/* + * Copyright (C) 2013 Noralf Tronnes @@ -57712,9 +60445,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft.h linux-rpi/drivers/staging/ +} while (0) + +#endif /* __LINUX_FBTFT_H */ -diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft-io.c linux-rpi/drivers/staging/fbtft/fbtft-io.c ---- linux-3.18.10/drivers/staging/fbtft/fbtft-io.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fbtft-io.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fbtft-io.c linux-rpi/drivers/staging/fbtft/fbtft-io.c +--- linux-3.18.14/drivers/staging/fbtft/fbtft-io.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fbtft-io.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,239 @@ +#include <linux/export.h> +#include <linux/errno.h> @@ -57955,9 +60688,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft-io.c linux-rpi/drivers/stagi + return -1; +} +EXPORT_SYMBOL(fbtft_write_gpio16_wr_latched); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft-sysfs.c linux-rpi/drivers/staging/fbtft/fbtft-sysfs.c ---- linux-3.18.10/drivers/staging/fbtft/fbtft-sysfs.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fbtft-sysfs.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fbtft-sysfs.c linux-rpi/drivers/staging/fbtft/fbtft-sysfs.c +--- linux-3.18.14/drivers/staging/fbtft/fbtft-sysfs.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fbtft-sysfs.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,222 @@ +#include "fbtft.h" + @@ -58181,9 +60914,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fbtft-sysfs.c linux-rpi/drivers/st + if (par->gamma.curves && par->fbtftops.set_gamma) + device_remove_file(par->info->dev, &gamma_device_attrs[0]); +} -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_tinylcd.c linux-rpi/drivers/staging/fbtft/fb_tinylcd.c ---- linux-3.18.10/drivers/staging/fbtft/fb_tinylcd.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_tinylcd.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_tinylcd.c linux-rpi/drivers/staging/fbtft/fb_tinylcd.c +--- linux-3.18.14/drivers/staging/fbtft/fb_tinylcd.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_tinylcd.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,124 @@ +/* + * Custom FB driver for tinylcd.com display @@ -58309,9 +61042,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_tinylcd.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("Custom FB driver for tinylcd.com display"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_tls8204.c linux-rpi/drivers/staging/fbtft/fb_tls8204.c ---- linux-3.18.10/drivers/staging/fbtft/fb_tls8204.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_tls8204.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_tls8204.c linux-rpi/drivers/staging/fbtft/fb_tls8204.c +--- linux-3.18.14/drivers/staging/fbtft/fb_tls8204.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_tls8204.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,176 @@ +/* + * FB driver for the TLS8204 LCD Controller @@ -58489,9 +61222,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_tls8204.c linux-rpi/drivers/sta +MODULE_DESCRIPTION("FB driver for the TLS8204 LCD Controller"); +MODULE_AUTHOR("Michael Hope"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_uc1701.c linux-rpi/drivers/staging/fbtft/fb_uc1701.c ---- linux-3.18.10/drivers/staging/fbtft/fb_uc1701.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_uc1701.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_uc1701.c linux-rpi/drivers/staging/fbtft/fb_uc1701.c +--- linux-3.18.14/drivers/staging/fbtft/fb_uc1701.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_uc1701.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,210 @@ +/* + * FB driver for the UC1701 LCD Controller @@ -58703,9 +61436,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_uc1701.c linux-rpi/drivers/stag +MODULE_DESCRIPTION("FB driver for the UC1701 LCD Controller"); +MODULE_AUTHOR("Juergen Holzmann"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_upd161704.c linux-rpi/drivers/staging/fbtft/fb_upd161704.c ---- linux-3.18.10/drivers/staging/fbtft/fb_upd161704.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_upd161704.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_upd161704.c linux-rpi/drivers/staging/fbtft/fb_upd161704.c +--- linux-3.18.14/drivers/staging/fbtft/fb_upd161704.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_upd161704.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,206 @@ +/* + * FB driver for the uPD161704 LCD Controller @@ -58913,9 +61646,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_upd161704.c linux-rpi/drivers/s +MODULE_DESCRIPTION("FB driver for the uPD161704 LCD Controller"); +MODULE_AUTHOR("Seong-Woo Kim"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_watterott.c linux-rpi/drivers/staging/fbtft/fb_watterott.c ---- linux-3.18.10/drivers/staging/fbtft/fb_watterott.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/fb_watterott.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/fb_watterott.c linux-rpi/drivers/staging/fbtft/fb_watterott.c +--- linux-3.18.14/drivers/staging/fbtft/fb_watterott.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/fb_watterott.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,324 @@ +/* + * FB driver for the Watterott LCD Controller @@ -59241,9 +61974,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/fb_watterott.c linux-rpi/drivers/s +MODULE_DESCRIPTION("FB driver for the Watterott LCD Controller"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/flexfb.c linux-rpi/drivers/staging/fbtft/flexfb.c ---- linux-3.18.10/drivers/staging/fbtft/flexfb.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/flexfb.c 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/flexfb.c linux-rpi/drivers/staging/fbtft/flexfb.c +--- linux-3.18.14/drivers/staging/fbtft/flexfb.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/flexfb.c 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,592 @@ +/* + * Generic FB driver for TFT LCD displays @@ -59837,9 +62570,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/flexfb.c linux-rpi/drivers/staging +MODULE_DESCRIPTION("Generic FB driver for TFT LCD displays"); +MODULE_AUTHOR("Noralf Tronnes"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/staging/fbtft/Kconfig linux-rpi/drivers/staging/fbtft/Kconfig ---- linux-3.18.10/drivers/staging/fbtft/Kconfig 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/Kconfig 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/Kconfig linux-rpi/drivers/staging/fbtft/Kconfig +--- linux-3.18.14/drivers/staging/fbtft/Kconfig 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/Kconfig 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,169 @@ +menuconfig FB_TFT + tristate "Support for small TFT LCD display modules" @@ -60010,9 +62743,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/Kconfig linux-rpi/drivers/staging/ +config FB_TFT_FBTFT_DEVICE + tristate "Module to for adding FBTFT devices" + depends on FB_TFT -diff -Nur linux-3.18.10/drivers/staging/fbtft/Makefile linux-rpi/drivers/staging/fbtft/Makefile ---- linux-3.18.10/drivers/staging/fbtft/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/Makefile 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/Makefile linux-rpi/drivers/staging/fbtft/Makefile +--- linux-3.18.14/drivers/staging/fbtft/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/Makefile 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,34 @@ +# Core module +obj-$(CONFIG_FB_TFT) += fbtft.o @@ -60048,9 +62781,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/Makefile linux-rpi/drivers/staging + +# Device modules +obj-$(CONFIG_FB_TFT_FBTFT_DEVICE) += fbtft_device.o -diff -Nur linux-3.18.10/drivers/staging/fbtft/README linux-rpi/drivers/staging/fbtft/README ---- linux-3.18.10/drivers/staging/fbtft/README 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/fbtft/README 2015-03-26 11:46:54.000237917 +0100 +diff -Nur linux-3.18.14/drivers/staging/fbtft/README linux-rpi/drivers/staging/fbtft/README +--- linux-3.18.14/drivers/staging/fbtft/README 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/fbtft/README 2015-05-31 14:46:12.565660964 -0500 @@ -0,0 +1,32 @@ + FBTFT +========= @@ -60084,9 +62817,9 @@ diff -Nur linux-3.18.10/drivers/staging/fbtft/README linux-rpi/drivers/staging/f + + +Source: https://github.com/notro/fbtft/ -diff -Nur linux-3.18.10/drivers/staging/Kconfig linux-rpi/drivers/staging/Kconfig ---- linux-3.18.10/drivers/staging/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/staging/Kconfig 2015-03-26 11:46:53.888237809 +0100 +diff -Nur linux-3.18.14/drivers/staging/Kconfig linux-rpi/drivers/staging/Kconfig +--- linux-3.18.14/drivers/staging/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/staging/Kconfig 2015-05-31 14:46:12.505660965 -0500 @@ -108,4 +108,6 @@ source "drivers/staging/unisys/Kconfig" @@ -60094,17 +62827,17 @@ diff -Nur linux-3.18.10/drivers/staging/Kconfig linux-rpi/drivers/staging/Kconfi +source "drivers/staging/fbtft/Kconfig" + endif # STAGING -diff -Nur linux-3.18.10/drivers/staging/Makefile linux-rpi/drivers/staging/Makefile ---- linux-3.18.10/drivers/staging/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/staging/Makefile 2015-03-26 11:46:53.888237809 +0100 +diff -Nur linux-3.18.14/drivers/staging/Makefile linux-rpi/drivers/staging/Makefile +--- linux-3.18.14/drivers/staging/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/staging/Makefile 2015-05-31 14:46:12.505660965 -0500 @@ -46,3 +46,4 @@ obj-$(CONFIG_GS_FPGABOOT) += gs_fpgaboot/ obj-$(CONFIG_CRYPTO_SKEIN) += skein/ obj-$(CONFIG_UNISYSSPAR) += unisys/ +obj-$(CONFIG_FB_TFT) += fbtft/ -diff -Nur linux-3.18.10/drivers/staging/media/lirc/Kconfig linux-rpi/drivers/staging/media/lirc/Kconfig ---- linux-3.18.10/drivers/staging/media/lirc/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/staging/media/lirc/Kconfig 2015-03-26 11:46:54.056237968 +0100 +diff -Nur linux-3.18.14/drivers/staging/media/lirc/Kconfig linux-rpi/drivers/staging/media/lirc/Kconfig +--- linux-3.18.14/drivers/staging/media/lirc/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/staging/media/lirc/Kconfig 2015-05-31 14:46:12.665660964 -0500 @@ -38,6 +38,12 @@ help Driver for Homebrew Parallel Port Receivers @@ -60118,9 +62851,9 @@ diff -Nur linux-3.18.10/drivers/staging/media/lirc/Kconfig linux-rpi/drivers/sta config LIRC_SASEM tristate "Sasem USB IR Remote" depends on LIRC && USB -diff -Nur linux-3.18.10/drivers/staging/media/lirc/lirc_rpi.c linux-rpi/drivers/staging/media/lirc/lirc_rpi.c ---- linux-3.18.10/drivers/staging/media/lirc/lirc_rpi.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/staging/media/lirc/lirc_rpi.c 2015-03-26 11:46:54.056237968 +0100 +diff -Nur linux-3.18.14/drivers/staging/media/lirc/lirc_rpi.c linux-rpi/drivers/staging/media/lirc/lirc_rpi.c +--- linux-3.18.14/drivers/staging/media/lirc/lirc_rpi.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/staging/media/lirc/lirc_rpi.c 2015-05-31 14:46:12.665660964 -0500 @@ -0,0 +1,765 @@ +/* + * lirc_rpi.c @@ -60887,9 +63620,9 @@ diff -Nur linux-3.18.10/drivers/staging/media/lirc/lirc_rpi.c linux-rpi/drivers/ + +module_param(debug, bool, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(debug, "Enable debugging messages"); -diff -Nur linux-3.18.10/drivers/staging/media/lirc/Makefile linux-rpi/drivers/staging/media/lirc/Makefile ---- linux-3.18.10/drivers/staging/media/lirc/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/staging/media/lirc/Makefile 2015-03-26 11:46:54.056237968 +0100 +diff -Nur linux-3.18.14/drivers/staging/media/lirc/Makefile linux-rpi/drivers/staging/media/lirc/Makefile +--- linux-3.18.14/drivers/staging/media/lirc/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/staging/media/lirc/Makefile 2015-05-31 14:46:12.665660964 -0500 @@ -7,6 +7,7 @@ obj-$(CONFIG_LIRC_IGORPLUGUSB) += lirc_igorplugusb.o obj-$(CONFIG_LIRC_IMON) += lirc_imon.o @@ -60898,9 +63631,9 @@ diff -Nur linux-3.18.10/drivers/staging/media/lirc/Makefile linux-rpi/drivers/st obj-$(CONFIG_LIRC_SASEM) += lirc_sasem.o obj-$(CONFIG_LIRC_SERIAL) += lirc_serial.o obj-$(CONFIG_LIRC_SIR) += lirc_sir.o -diff -Nur linux-3.18.10/drivers/thermal/bcm2835-thermal.c linux-rpi/drivers/thermal/bcm2835-thermal.c ---- linux-3.18.10/drivers/thermal/bcm2835-thermal.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/thermal/bcm2835-thermal.c 2015-03-26 11:46:54.192238094 +0100 +diff -Nur linux-3.18.14/drivers/thermal/bcm2835-thermal.c linux-rpi/drivers/thermal/bcm2835-thermal.c +--- linux-3.18.14/drivers/thermal/bcm2835-thermal.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/thermal/bcm2835-thermal.c 2015-05-31 14:46:12.801660962 -0500 @@ -0,0 +1,184 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -61086,9 +63819,9 @@ diff -Nur linux-3.18.10/drivers/thermal/bcm2835-thermal.c linux-rpi/drivers/ther +MODULE_DESCRIPTION("Thermal driver for bcm2835 chip"); + +module_platform_driver(bcm2835_thermal_driver); -diff -Nur linux-3.18.10/drivers/thermal/Kconfig linux-rpi/drivers/thermal/Kconfig ---- linux-3.18.10/drivers/thermal/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/thermal/Kconfig 2015-03-26 11:46:54.192238094 +0100 +diff -Nur linux-3.18.14/drivers/thermal/Kconfig linux-rpi/drivers/thermal/Kconfig +--- linux-3.18.14/drivers/thermal/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/thermal/Kconfig 2015-05-31 14:46:12.801660962 -0500 @@ -206,6 +206,12 @@ enforce idle time which results in more package C-state residency. The user interface is exposed via generic thermal framework. @@ -61102,9 +63835,9 @@ diff -Nur linux-3.18.10/drivers/thermal/Kconfig linux-rpi/drivers/thermal/Kconfi config X86_PKG_TEMP_THERMAL tristate "X86 package temperature thermal driver" depends on X86_THERMAL_VECTOR -diff -Nur linux-3.18.10/drivers/thermal/Makefile linux-rpi/drivers/thermal/Makefile ---- linux-3.18.10/drivers/thermal/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/thermal/Makefile 2015-03-26 11:46:54.192238094 +0100 +diff -Nur linux-3.18.14/drivers/thermal/Makefile linux-rpi/drivers/thermal/Makefile +--- linux-3.18.14/drivers/thermal/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/thermal/Makefile 2015-05-31 14:46:12.801660962 -0500 @@ -29,6 +29,7 @@ obj-$(CONFIG_IMX_THERMAL) += imx_thermal.o obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o @@ -61113,18 +63846,10 @@ diff -Nur linux-3.18.10/drivers/thermal/Makefile linux-rpi/drivers/thermal/Makef obj-$(CONFIG_X86_PKG_TEMP_THERMAL) += x86_pkg_temp_thermal.o obj-$(CONFIG_INTEL_SOC_DTS_THERMAL) += intel_soc_dts_thermal.o obj-$(CONFIG_TI_SOC_THERMAL) += ti-soc-thermal/ -diff -Nur linux-3.18.10/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/serial/amba-pl011.c ---- linux-3.18.10/drivers/tty/serial/amba-pl011.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/tty/serial/amba-pl011.c 2015-03-26 11:46:54.212238112 +0100 -@@ -58,6 +58,7 @@ - #include <linux/pinctrl/consumer.h> - #include <linux/sizes.h> - #include <linux/io.h> -+#include <linux/workqueue.h> - - #define UART_NR 14 - -@@ -84,7 +85,7 @@ +diff -Nur linux-3.18.14/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/serial/amba-pl011.c +--- linux-3.18.14/drivers/tty/serial/amba-pl011.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/tty/serial/amba-pl011.c 2015-05-31 14:46:12.821660962 -0500 +@@ -84,7 +84,7 @@ static unsigned int get_fifosize_arm(struct amba_device *dev) { @@ -61133,17 +63858,7 @@ diff -Nur linux-3.18.10/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/se } static struct vendor_data vendor_arm = { -@@ -156,7 +157,9 @@ - unsigned int lcrh_tx; /* vendor-specific */ - unsigned int lcrh_rx; /* vendor-specific */ - unsigned int old_cr; /* state during shutdown */ -+ struct delayed_work tx_softirq_work; - bool autorts; -+ unsigned int tx_irq_seen; /* 0=none, 1=1, 2=2 or more */ - char type[12]; - #ifdef CONFIG_DMA_ENGINE - /* DMA stuff */ -@@ -408,8 +411,9 @@ +@@ -408,8 +408,9 @@ dma_release_channel(uap->dmarx.chan); } @@ -61154,7 +63869,7 @@ diff -Nur linux-3.18.10/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/se /* * The current DMA TX buffer has been sent. -@@ -447,14 +451,13 @@ +@@ -447,14 +448,13 @@ return; } @@ -61172,7 +63887,7 @@ diff -Nur linux-3.18.10/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/se spin_unlock_irqrestore(&uap->port.lock, flags); } -@@ -628,12 +631,10 @@ +@@ -628,12 +628,10 @@ if (!uap->dmatx.queued) { if (pl011_dma_tx_refill(uap) > 0) { uap->im &= ~UART011_TXIM; @@ -61188,19 +63903,18 @@ diff -Nur linux-3.18.10/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/se } else if (!(uap->dmacr & UART011_TXDMAE)) { uap->dmacr |= UART011_TXDMAE; writew(uap->dmacr, -@@ -1172,15 +1173,24 @@ +@@ -1172,15 +1170,23 @@ pl011_dma_tx_stop(uap); } -+static bool pl011_tx_chars(struct uart_amba_port *uap); ++static void pl011_tx_chars(struct uart_amba_port *uap, bool from_irq); + +/* Start TX with programmed I/O only (no DMA) */ +static void pl011_start_tx_pio(struct uart_amba_port *uap) +{ + uap->im |= UART011_TXIM; + writew(uap->im, uap->port.membase + UART011_IMSC); -+ if (!uap->tx_irq_seen) -+ pl011_tx_chars(uap); ++ pl011_tx_chars(uap, false); +} + static void pl011_start_tx(struct uart_port *port) @@ -61217,148 +63931,73 @@ diff -Nur linux-3.18.10/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/se } static void pl011_stop_rx(struct uart_port *port) -@@ -1238,40 +1248,87 @@ +@@ -1238,16 +1244,29 @@ spin_lock(&uap->port.lock); } -static void pl011_tx_chars(struct uart_amba_port *uap) -+/* -+ * Transmit a character -+ * There must be at least one free entry in the TX FIFO to accept the char. -+ * -+ * Returns true if the FIFO might have space in it afterwards; -+ * returns false if the FIFO definitely became full. -+ */ -+static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c) ++static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c, ++ bool from_irq) +{ ++ if (unlikely(!from_irq) && ++ readw(uap->port.membase + UART01x_FR) & UART01x_FR_TXFF) ++ return false; /* unable to transmit character */ ++ + writew(c, uap->port.membase + UART01x_DR); + uap->port.icount.tx++; + -+ if (likely(uap->tx_irq_seen > 1)) -+ return true; -+ -+ return !(readw(uap->port.membase + UART01x_FR) & UART01x_FR_TXFF); ++ return true; +} + -+static bool pl011_tx_chars(struct uart_amba_port *uap) ++static void pl011_tx_chars(struct uart_amba_port *uap, bool from_irq) { struct circ_buf *xmit = &uap->port.state->xmit; - int count; +- int count; ++ int count = uap->fifosize >> 1; -+ if (unlikely(uap->tx_irq_seen < 2)) -+ /* -+ * Initial FIFO fill level unknown: we must check TXFF -+ * after each write, so just try to fill up the FIFO. -+ */ -+ count = uap->fifosize; -+ else /* tx_irq_seen >= 2 */ -+ /* -+ * FIFO initially at least half-empty, so we can simply -+ * write half the FIFO without polling TXFF. -+ -+ * Note: the *first* TX IRQ can still race with -+ * pl011_start_tx_pio(), which can result in the FIFO -+ * being fuller than expected in that case. -+ */ -+ count = uap->fifosize >> 1; -+ -+ /* -+ * If the FIFO is full we're guaranteed a TX IRQ at some later point, -+ * and can't transmit immediately in any case: -+ */ -+ if (unlikely(uap->tx_irq_seen < 2 && -+ readw(uap->port.membase + UART01x_FR) & UART01x_FR_TXFF)) -+ return false; -+ if (uap->port.x_char) { - writew(uap->port.x_char, uap->port.membase + UART01x_DR); - uap->port.icount.tx++; -+ pl011_tx_char(uap, uap->port.x_char); ++ if (!pl011_tx_char(uap, uap->port.x_char, from_irq)) ++ return; uap->port.x_char = 0; - return; + --count; } if (uart_circ_empty(xmit) || uart_tx_stopped(&uap->port)) { pl011_stop_tx(&uap->port); -- return; -+ goto done; - } - - /* If we are using DMA mode, try to send some characters. */ +@@ -1258,14 +1277,15 @@ if (pl011_dma_tx_irq(uap)) -- return; -+ goto done; + return; - count = uap->fifosize >> 1; -- do { + do { - writew(xmit->buf[xmit->tail], uap->port.membase + UART01x_DR); -+ while (count-- > 0 && pl011_tx_char(uap, xmit->buf[xmit->tail])) { - xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); +- xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); - uap->port.icount.tx++; - if (uart_circ_empty(xmit)) +- if (uart_circ_empty(xmit)) ++ if (likely(from_irq) && count-- == 0) break; - } while (--count > 0); -+ } - - if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) - uart_write_wakeup(&uap->port); - -- if (uart_circ_empty(xmit)) -+ if (uart_circ_empty(xmit)) { - pl011_stop_tx(&uap->port); -+ goto done; -+ } + -+ if (unlikely(!uap->tx_irq_seen)) -+ schedule_delayed_work(&uap->tx_softirq_work, uap->port.timeout); ++ if (!pl011_tx_char(uap, xmit->buf[xmit->tail], from_irq)) ++ break; + -+done: -+ return false; - } - - static void pl011_modem_status(struct uart_amba_port *uap) -@@ -1298,6 +1355,28 @@ - wake_up_interruptible(&uap->port.state->port.delta_msr_wait); - } ++ xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); ++ } while (!uart_circ_empty(xmit)); -+static void pl011_tx_softirq(struct work_struct *work) -+{ -+ struct delayed_work *dwork = to_delayed_work(work); -+ struct uart_amba_port *uap = -+ container_of(dwork, struct uart_amba_port, tx_softirq_work); -+ -+ spin_lock(&uap->port.lock); -+ while (pl011_tx_chars(uap)) ; -+ spin_unlock(&uap->port.lock); -+} -+ -+static void pl011_tx_irq_seen(struct uart_amba_port *uap) -+{ -+ if (likely(uap->tx_irq_seen > 1)) -+ return; -+ -+ uap->tx_irq_seen++; -+ if (uap->tx_irq_seen < 2) -+ /* first TX IRQ */ -+ cancel_delayed_work(&uap->tx_softirq_work); -+} -+ - static irqreturn_t pl011_int(int irq, void *dev_id) - { - struct uart_amba_port *uap = dev_id; -@@ -1336,8 +1415,10 @@ - if (status & (UART011_DSRMIS|UART011_DCDMIS| + if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) + uart_write_wakeup(&uap->port); +@@ -1337,7 +1357,7 @@ UART011_CTSMIS|UART011_RIMIS)) pl011_modem_status(uap); -- if (status & UART011_TXIS) -+ if (status & UART011_TXIS) { -+ pl011_tx_irq_seen(uap); - pl011_tx_chars(uap); -+ } + if (status & UART011_TXIS) +- pl011_tx_chars(uap); ++ pl011_tx_chars(uap, true); if (pass_counter-- == 0) break; -@@ -1541,7 +1622,7 @@ +@@ -1541,7 +1561,7 @@ { struct uart_amba_port *uap = container_of(port, struct uart_amba_port, port); @@ -61367,7 +64006,7 @@ diff -Nur linux-3.18.10/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/se int retval; retval = pl011_hwinit(port); -@@ -1559,30 +1640,8 @@ +@@ -1559,30 +1579,8 @@ writew(uap->vendor->ifls, uap->port.membase + UART011_IFLS); @@ -61398,34 +64037,9 @@ diff -Nur linux-3.18.10/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/se /* restore RTS and DTR */ cr = uap->old_cr & (UART011_CR_RTS | UART011_CR_DTR); cr |= UART01x_CR_UARTEN | UART011_CR_RXE | UART011_CR_TXE; -@@ -1636,13 +1695,15 @@ - container_of(port, struct uart_amba_port, port); - unsigned int cr; - -+ cancel_delayed_work_sync(&uap->tx_softirq_work); -+ - /* - * disable all interrupts - */ - spin_lock_irq(&uap->port.lock); - uap->im = 0; - writew(uap->im, uap->port.membase + UART011_IMSC); -- writew(0xffff, uap->port.membase + UART011_ICR); -+ writew(0xffff & ~UART011_TXIS, uap->port.membase + UART011_ICR); - spin_unlock_irq(&uap->port.lock); - - pl011_dma_shutdown(uap); -@@ -2180,6 +2241,7 @@ - uap->port.ops = &amba_pl011_pops; - uap->port.flags = UPF_BOOT_AUTOCONF; - uap->port.line = i; -+ INIT_DELAYED_WORK(&uap->tx_softirq_work, pl011_tx_softirq); - pl011_dma_probe(&dev->dev, uap); - - /* Ensure interrupts from this UART are masked and cleared */ -diff -Nur linux-3.18.10/drivers/usb/core/generic.c linux-rpi/drivers/usb/core/generic.c ---- linux-3.18.10/drivers/usb/core/generic.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/usb/core/generic.c 2015-03-26 11:46:54.260238154 +0100 +diff -Nur linux-3.18.14/drivers/usb/core/generic.c linux-rpi/drivers/usb/core/generic.c +--- linux-3.18.14/drivers/usb/core/generic.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/usb/core/generic.c 2015-05-31 14:46:12.853660962 -0500 @@ -152,6 +152,7 @@ dev_warn(&udev->dev, "no configuration chosen from %d choice%s\n", @@ -61434,9 +64048,9 @@ diff -Nur linux-3.18.10/drivers/usb/core/generic.c linux-rpi/drivers/usb/core/ge } return i; } -diff -Nur linux-3.18.10/drivers/usb/core/hub.c linux-rpi/drivers/usb/core/hub.c ---- linux-3.18.10/drivers/usb/core/hub.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/usb/core/hub.c 2015-03-26 11:46:54.260238154 +0100 +diff -Nur linux-3.18.14/drivers/usb/core/hub.c linux-rpi/drivers/usb/core/hub.c +--- linux-3.18.14/drivers/usb/core/hub.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/usb/core/hub.c 2015-05-31 14:46:12.857660962 -0500 @@ -4923,7 +4923,7 @@ if (portchange & USB_PORT_STAT_C_OVERCURRENT) { u16 status = 0, unused; @@ -61446,9 +64060,9 @@ diff -Nur linux-3.18.10/drivers/usb/core/hub.c linux-rpi/drivers/usb/core/hub.c usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_OVER_CURRENT); msleep(100); /* Cool down */ -diff -Nur linux-3.18.10/drivers/usb/core/message.c linux-rpi/drivers/usb/core/message.c ---- linux-3.18.10/drivers/usb/core/message.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/usb/core/message.c 2015-03-26 11:46:54.260238154 +0100 +diff -Nur linux-3.18.14/drivers/usb/core/message.c linux-rpi/drivers/usb/core/message.c +--- linux-3.18.14/drivers/usb/core/message.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/usb/core/message.c 2015-05-31 14:46:12.857660962 -0500 @@ -1872,6 +1872,85 @@ if (cp->string == NULL && !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) @@ -61535,9 +64149,9 @@ diff -Nur linux-3.18.10/drivers/usb/core/message.c linux-rpi/drivers/usb/core/me /* Now that the interfaces are installed, re-enable LPM. */ usb_unlocked_enable_lpm(dev); -diff -Nur linux-3.18.10/drivers/usb/core/otg_whitelist.h linux-rpi/drivers/usb/core/otg_whitelist.h ---- linux-3.18.10/drivers/usb/core/otg_whitelist.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/usb/core/otg_whitelist.h 2015-03-26 11:46:54.260238154 +0100 +diff -Nur linux-3.18.14/drivers/usb/core/otg_whitelist.h linux-rpi/drivers/usb/core/otg_whitelist.h +--- linux-3.18.14/drivers/usb/core/otg_whitelist.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/usb/core/otg_whitelist.h 2015-05-31 14:46:12.857660962 -0500 @@ -19,33 +19,82 @@ static struct usb_device_id whitelist_table [] = { @@ -61691,9 +64305,9 @@ diff -Nur linux-3.18.10/drivers/usb/core/otg_whitelist.h linux-rpi/drivers/usb/c return 0; } -diff -Nur linux-3.18.10/drivers/usb/gadget/file_storage.c linux-rpi/drivers/usb/gadget/file_storage.c ---- linux-3.18.10/drivers/usb/gadget/file_storage.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/gadget/file_storage.c 2015-03-26 11:46:54.272238167 +0100 +diff -Nur linux-3.18.14/drivers/usb/gadget/file_storage.c linux-rpi/drivers/usb/gadget/file_storage.c +--- linux-3.18.14/drivers/usb/gadget/file_storage.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/gadget/file_storage.c 2015-05-31 14:46:12.865660961 -0500 @@ -0,0 +1,3676 @@ +/* + * file_storage.c -- File-backed USB Storage Gadget, for USB development @@ -65371,9 +67985,9 @@ diff -Nur linux-3.18.10/drivers/usb/gadget/file_storage.c linux-rpi/drivers/usb/ + kref_put(&fsg->ref, fsg_release); +} +module_exit(fsg_cleanup); -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/changes.txt linux-rpi/drivers/usb/host/dwc_common_port/changes.txt ---- linux-3.18.10/drivers/usb/host/dwc_common_port/changes.txt 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/changes.txt 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/changes.txt linux-rpi/drivers/usb/host/dwc_common_port/changes.txt +--- linux-3.18.14/drivers/usb/host/dwc_common_port/changes.txt 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/changes.txt 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,174 @@ + +dwc_read_reg32() and friends now take an additional parameter, a pointer to an @@ -65549,9 +68163,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/changes.txt linux-rpi/d +A DWC_LIBMODULE #define has also been added. If this is not defined, then the +module code in dwc_common_linux.c is not compiled in. This allows linking the +library code directly into a driver module, instead of as a standalone module. -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/doc/doxygen.cfg linux-rpi/drivers/usb/host/dwc_common_port/doc/doxygen.cfg ---- linux-3.18.10/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/doc/doxygen.cfg linux-rpi/drivers/usb/host/dwc_common_port/doc/doxygen.cfg +--- linux-3.18.14/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,270 @@ +# Doxyfile 1.4.5 + @@ -65823,9 +68437,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/doc/doxygen.cfg linux-r +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_cc.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.c ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_cc.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_cc.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.c +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_cc.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.c 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,532 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_cc.c $ @@ -66359,9 +68973,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_cc.c linux-rpi/driv +} + +#endif /* DWC_CCLIB */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_cc.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.h ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_cc.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_cc.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.h +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_cc.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.h 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,224 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_cc.h $ @@ -66587,9 +69201,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_cc.h linux-rpi/driv +#endif + +#endif /* _DWC_CC_H_ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,1308 @@ +#include "dwc_os.h" +#include "dwc_list.h" @@ -67899,9 +70513,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c linux +{ + return wq->pending; +} -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_common_linux.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_linux.c ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_common_linux.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_linux.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_common_linux.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_linux.c +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_common_linux.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_linux.c 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,1434 @@ +#include <linux/kernel.h> +#include <linux/init.h> @@ -69337,9 +71951,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_common_linux.c linu +MODULE_LICENSE ("GPL"); + +#endif /* DWC_LIBMODULE */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,1275 @@ +#include "dwc_os.h" +#include "dwc_list.h" @@ -70616,9 +73230,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c linux +{ + return wq->pending; +} -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_crypto.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.c ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_crypto.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_crypto.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.c +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_crypto.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.c 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,308 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_crypto.c $ @@ -70928,9 +73542,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_crypto.c linux-rpi/ +} + +#endif /* DWC_CRYPTOLIB */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_crypto.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.h ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_crypto.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_crypto.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.h +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_crypto.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.h 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,111 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_crypto.h $ @@ -71043,9 +73657,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_crypto.h linux-rpi/ +#endif + +#endif /* _DWC_CRYPTO_H_ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_dh.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.c ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_dh.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_dh.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.c +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_dh.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.c 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,291 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_dh.c $ @@ -71338,9 +73952,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_dh.c linux-rpi/driv +#endif /* !CONFIG_MACH_IPMATE */ + +#endif /* DWC_CRYPTOLIB */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_dh.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.h ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_dh.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_dh.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.h +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_dh.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.h 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,106 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_dh.h $ @@ -71448,9 +74062,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_dh.h linux-rpi/driv +#endif + +#endif /* _DWC_DH_H_ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_list.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_list.h ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_list.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_list.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_list.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_list.h +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_list.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_list.h 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,594 @@ +/* $OpenBSD: queue.h,v 1.26 2004/05/04 16:59:32 grange Exp $ */ +/* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */ @@ -72046,9 +74660,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_list.h linux-rpi/dr +#endif + +#endif /* _DWC_LIST_H_ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_mem.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_mem.c ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_mem.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_mem.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_mem.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_mem.c +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_mem.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_mem.c 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,245 @@ +/* Memory Debugging */ +#ifdef DWC_DEBUG_MEMORY @@ -72295,9 +74909,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_mem.c linux-rpi/dri +} + +#endif /* DWC_DEBUG_MEMORY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_modpow.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.c ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_modpow.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_modpow.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.c +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_modpow.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.c 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,636 @@ +/* Bignum routines adapted from PUTTY sources. PuTTY copyright notice follows. + * @@ -72935,9 +75549,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_modpow.c linux-rpi/ +#endif /* CONFIG_MACH_IPMATE */ + +#endif /*DWC_CRYPTOLIB */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_modpow.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.h ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_modpow.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_modpow.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.h +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_modpow.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.h 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,34 @@ +/* + * dwc_modpow.h @@ -72973,9 +75587,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_modpow.h linux-rpi/ +#endif + +#endif /* _LINUX_BIGNUM_H */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_notifier.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.c ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_notifier.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_notifier.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.c +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_notifier.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.c 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,319 @@ +#ifdef DWC_NOTIFYLIB + @@ -73296,9 +75910,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_notifier.c linux-rp +} + +#endif /* DWC_NOTIFYLIB */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_notifier.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.h ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_notifier.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_notifier.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.h +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_notifier.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.h 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,122 @@ + +#ifndef __DWC_NOTIFIER_H__ @@ -73422,9 +76036,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_notifier.h linux-rp +#endif + +#endif /* __DWC_NOTIFIER_H__ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_os.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_os.h ---- linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_os.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_os.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_os.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_os.h +--- linux-3.18.14/drivers/usb/host/dwc_common_port/dwc_os.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_os.h 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,1276 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_os.h $ @@ -74702,9 +77316,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/dwc_os.h linux-rpi/driv +#endif + +#endif /* _DWC_OS_H_ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/Makefile linux-rpi/drivers/usb/host/dwc_common_port/Makefile ---- linux-3.18.10/drivers/usb/host/dwc_common_port/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/Makefile linux-rpi/drivers/usb/host/dwc_common_port/Makefile +--- linux-3.18.14/drivers/usb/host/dwc_common_port/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,58 @@ +# +# Makefile for DWC_common library @@ -74764,9 +77378,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/Makefile linux-rpi/driv + +clean: + rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/Makefile.fbsd linux-rpi/drivers/usb/host/dwc_common_port/Makefile.fbsd ---- linux-3.18.10/drivers/usb/host/dwc_common_port/Makefile.fbsd 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile.fbsd 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/Makefile.fbsd linux-rpi/drivers/usb/host/dwc_common_port/Makefile.fbsd +--- linux-3.18.14/drivers/usb/host/dwc_common_port/Makefile.fbsd 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile.fbsd 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,17 @@ +CFLAGS += -I/sys/i386/compile/GENERIC -I/sys/i386/include -I/usr/include +CFLAGS += -DDWC_FREEBSD @@ -74785,9 +77399,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/Makefile.fbsd linux-rpi + dwc_common_fbsd.c dwc_mem.c + +.include <bsd.kmod.mk> -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/Makefile.linux linux-rpi/drivers/usb/host/dwc_common_port/Makefile.linux ---- linux-3.18.10/drivers/usb/host/dwc_common_port/Makefile.linux 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile.linux 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/Makefile.linux linux-rpi/drivers/usb/host/dwc_common_port/Makefile.linux +--- linux-3.18.14/drivers/usb/host/dwc_common_port/Makefile.linux 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile.linux 2015-05-31 14:46:12.889660961 -0500 @@ -0,0 +1,49 @@ +# +# Makefile for DWC_common library @@ -74838,9 +77452,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/Makefile.linux linux-rp + +clean: + rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/usb.h linux-rpi/drivers/usb/host/dwc_common_port/usb.h ---- linux-3.18.10/drivers/usb/host/dwc_common_port/usb.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_common_port/usb.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_common_port/usb.h linux-rpi/drivers/usb/host/dwc_common_port/usb.h +--- linux-3.18.14/drivers/usb/host/dwc_common_port/usb.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_common_port/usb.h 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,946 @@ +/* + * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -75788,9 +78402,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_common_port/usb.h linux-rpi/drivers +#endif + +#endif /* _USB_H_ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/doc/doxygen.cfg linux-rpi/drivers/usb/host/dwc_otg/doc/doxygen.cfg ---- linux-3.18.10/drivers/usb/host/dwc_otg/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/doc/doxygen.cfg 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/doc/doxygen.cfg linux-rpi/drivers/usb/host/dwc_otg/doc/doxygen.cfg +--- linux-3.18.14/drivers/usb/host/dwc_otg/doc/doxygen.cfg 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/doc/doxygen.cfg 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,224 @@ +# Doxyfile 1.3.9.1 + @@ -76016,9 +78630,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/doc/doxygen.cfg linux-rpi/drive +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dummy_audio.c linux-rpi/drivers/usb/host/dwc_otg/dummy_audio.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dummy_audio.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dummy_audio.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dummy_audio.c linux-rpi/drivers/usb/host/dwc_otg/dummy_audio.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dummy_audio.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dummy_audio.c 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,1575 @@ +/* + * zero.c -- Gadget Zero, for USB development @@ -77595,9 +80209,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dummy_audio.c linux-rpi/drivers + remove_proc_entry("isoc_test", NULL); +} +module_exit (cleanup); -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_cfi_common.h linux-rpi/drivers/usb/host/dwc_otg/dwc_cfi_common.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_cfi_common.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_cfi_common.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_cfi_common.h linux-rpi/drivers/usb/host/dwc_otg/dwc_cfi_common.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_cfi_common.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_cfi_common.h 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,142 @@ +/* ========================================================================== + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, @@ -77741,9 +80355,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_cfi_common.h linux-rpi/driv +typedef struct cfi_string cfi_string_t; + +#endif -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_adp.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_adp.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_adp.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_adp.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.c 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,854 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_adp.c $ @@ -78599,9 +81213,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_adp.c linux-rpi/drivers +#endif + return 1; +} -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_adp.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_adp.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_adp.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_adp.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.h 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,80 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_adp.h $ @@ -78683,9 +81297,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_adp.h linux-rpi/drivers +extern int32_t dwc_otg_adp_handle_srp_intr(dwc_otg_core_if_t * core_if); + +#endif //__DWC_OTG_ADP_H__ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_attr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_attr.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_attr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_attr.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.c 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,1210 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.c $ @@ -79897,9 +82511,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_attr.c linux-rpi/driver + device_remove_file(&dev->dev, &dev_attr_sleep_status); +#endif +} -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_attr.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_attr.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_attr.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_attr.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.h 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,89 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.h $ @@ -79990,9 +82604,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_attr.h linux-rpi/driver +#endif + ); +#endif -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cfi.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cfi.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,1876 @@ +/* ========================================================================== + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, @@ -81870,9 +84484,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cfi.c linux-rpi/drivers +} + +#endif //DWC_UTE_CFI -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cfi.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cfi.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,320 @@ +/* ========================================================================== + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, @@ -82194,9 +84808,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cfi.h linux-rpi/drivers +int cfi_setup(struct dwc_otg_pcd *pcd, struct cfi_usb_ctrlrequest *ctrl); + +#endif /* (__DWC_OTG_CFI_H__) */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cil.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cil.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.c 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cil.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cil.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.c 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,7141 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.c $ @@ -89339,9 +91953,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cil.c linux-rpi/drivers + dwc_otg_pcd_start_srp_timer(core_if); + return; +} -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cil.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cil.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.h 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cil.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cil.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.h 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,1464 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.h $ @@ -90807,9 +93421,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cil.h linux-rpi/drivers +////////////////////////////////////////////////////////////////////// + +#endif -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,1594 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil_intr.c $ @@ -92405,9 +95019,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-rpi/dr + DWC_SPINUNLOCK(core_if->lock); + return retval; +} -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_core_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_core_if.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_core_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_core_if.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,705 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_core_if.h $ @@ -93114,9 +95728,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_core_if.h linux-rpi/dri +/** @} */ + +#endif /* __DWC_CORE_IF_H__ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_dbg.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_dbg.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_dbg.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_dbg.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,117 @@ +/* ========================================================================== + * @@ -93235,9 +95849,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_dbg.h linux-rpi/drivers + +#endif /*DEBUG*/ +#endif -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_driver.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_driver.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.c 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_driver.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_driver.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.c 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,1749 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.c $ @@ -94988,9 +97602,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_driver.c linux-rpi/driv + </td></tr> + +*/ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_driver.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_driver.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.h 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_driver.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_driver.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.h 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,86 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.h $ @@ -95078,9 +97692,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_driver.h linux-rpi/driv +#endif + +#endif -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,1346 @@ +/* + * dwc_otg_fiq_fsm.c - The finite state machine FIQ @@ -96428,9 +99042,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-rpi/dri + mb(); + fiq_fsm_spin_unlock(&state->lock); +} -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,367 @@ +/* + * dwc_otg_fiq_fsm.h - Finite state machine FIQ header definitions @@ -96799,9 +99413,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h linux-rpi/dri +extern void dwc_otg_fiq_nop(struct fiq_state *state); + +#endif /* DWC_OTG_FIQ_FSM_H_ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 2015-03-26 11:46:54.312238202 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,81 @@ +/* + * dwc_otg_fiq_fsm.S - assembly stub for the FSM FIQ @@ -96884,10 +99498,10 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S linux-rpi/dr +_dwc_otg_fiq_stub_end: +END(_dwc_otg_fiq_stub) + -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 2015-03-26 11:46:54.320238212 +0100 -@@ -0,0 +1,4244 @@ +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 2015-05-31 14:46:12.905660961 -0500 +@@ -0,0 +1,4252 @@ + +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd.c $ @@ -98304,8 +100918,12 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers + dwc_otg_hc_init(hcd->core_if, hc); + + local_irq_save(flags); -+ local_fiq_disable(); -+ fiq_fsm_spin_lock(&hcd->fiq_state->lock); ++ ++ if (fiq_enable) { ++ local_fiq_disable(); ++ fiq_fsm_spin_lock(&hcd->fiq_state->lock); ++ } ++ + /* Enable the top level host channel interrupt. */ + intr_enable = (1 << hc->hc_num); + DWC_MODIFY_REG32(&hcd->core_if->host_if->host_global_regs->haintmsk, 0, intr_enable); @@ -98313,8 +100931,12 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers + /* Make sure host channel interrupts are enabled. */ + gintmsk.b.hcintr = 1; + DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, 0, gintmsk.d32); -+ fiq_fsm_spin_unlock(&hcd->fiq_state->lock); -+ local_fiq_enable(); ++ ++ if (fiq_enable) { ++ fiq_fsm_spin_unlock(&hcd->fiq_state->lock); ++ local_fiq_enable(); ++ } ++ + local_irq_restore(flags); + hc->qh = qh; +} @@ -101132,9 +103754,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers +} + +#endif /* DWC_DEVICE_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,1132 @@ +/*========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_ddma.c $ @@ -102268,9 +104890,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c linux-rpi/dr +} + +#endif /* DWC_DEVICE_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,862 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd.h $ @@ -103134,9 +105756,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd.h linux-rpi/drivers +#endif +#endif +#endif /* DWC_DEVICE_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 2015-05-31 14:46:12.905660961 -0500 @@ -0,0 +1,417 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_if.h $ @@ -103555,9 +106177,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h linux-rpi/driv + +#endif /* __DWC_HCD_IF_H__ */ +#endif /* DWC_DEVICE_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,2713 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_intr.c $ @@ -106272,9 +108894,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-rpi/dr + return retval; +} +#endif /* DWC_DEVICE_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,994 @@ + +/* ========================================================================== @@ -107270,9 +109892,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c linux-rpi/d +} + +#endif /* DWC_DEVICE_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,957 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_queue.c $ @@ -108231,9 +110853,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c linux-rpi/d +} + +#endif /* DWC_DEVICE_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,188 @@ +#ifndef _DWC_OS_DEP_H_ +#define _DWC_OS_DEP_H_ @@ -108423,9 +111045,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h linux-rpi/driv + + +#endif /* _DWC_OS_DEP_H_ */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,2712 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.c $ @@ -111139,9 +113761,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd.c linux-rpi/drivers +} + +#endif /* DWC_HOST_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,266 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.h $ @@ -111409,9 +114031,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd.h linux-rpi/drivers +extern void do_test_mode(void *data); +#endif +#endif /* DWC_HOST_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,360 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_if.h $ @@ -111773,9 +114395,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h linux-rpi/driv +#endif /* __DWC_PCD_IF_H__ */ + +#endif /* DWC_HOST_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,5147 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_intr.c $ @@ -116924,9 +119546,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c linux-rpi/dr +} + +#endif /* DWC_HOST_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,1360 @@ + /* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_linux.c $ @@ -118288,9 +120910,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c linux-rpi/d +EXPORT_SYMBOL(usb_gadget_unregister_driver); + +#endif /* DWC_HOST_ONLY */ -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_regs.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_regs.h ---- linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_regs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_regs.h 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_regs.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_regs.h +--- linux-3.18.14/drivers/usb/host/dwc_otg/dwc_otg_regs.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_regs.h 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,2550 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_regs.h $ @@ -120842,9 +123464,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/dwc_otg_regs.h linux-rpi/driver +} gpwrdn_data_t; + +#endif -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/Makefile linux-rpi/drivers/usb/host/dwc_otg/Makefile ---- linux-3.18.10/drivers/usb/host/dwc_otg/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/Makefile 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/Makefile linux-rpi/drivers/usb/host/dwc_otg/Makefile +--- linux-3.18.14/drivers/usb/host/dwc_otg/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/Makefile 2015-05-31 14:46:12.901660961 -0500 @@ -0,0 +1,82 @@ +# +# Makefile for DWC_otg Highspeed USB controller driver @@ -120928,9 +123550,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/Makefile linux-rpi/drivers/usb/ + rm -rf *.o *.ko .*cmd *.mod.c .tmp_versions Module.symvers + +endif -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm linux-rpi/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm ---- linux-3.18.10/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm linux-rpi/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm +--- linux-3.18.14/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,337 @@ +package dwc_otg_test; + @@ -121269,9 +123891,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm linux-rpi/ +); + +1; -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/test/Makefile linux-rpi/drivers/usb/host/dwc_otg/test/Makefile ---- linux-3.18.10/drivers/usb/host/dwc_otg/test/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/test/Makefile 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/test/Makefile linux-rpi/drivers/usb/host/dwc_otg/test/Makefile +--- linux-3.18.14/drivers/usb/host/dwc_otg/test/Makefile 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/test/Makefile 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,16 @@ + +PERL=/usr/bin/perl @@ -121289,9 +123911,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/test/Makefile linux-rpi/drivers + else echo "=======> $$test, FAILED" ; \ + fi \ + done -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/test/test_mod_param.pl linux-rpi/drivers/usb/host/dwc_otg/test/test_mod_param.pl ---- linux-3.18.10/drivers/usb/host/dwc_otg/test/test_mod_param.pl 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/test/test_mod_param.pl 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/test/test_mod_param.pl linux-rpi/drivers/usb/host/dwc_otg/test/test_mod_param.pl +--- linux-3.18.14/drivers/usb/host/dwc_otg/test/test_mod_param.pl 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/test/test_mod_param.pl 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,133 @@ +#!/usr/bin/perl -w +# @@ -121426,9 +124048,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/test/test_mod_param.pl linux-rp + +test_main(); +0; -diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/test/test_sysfs.pl linux-rpi/drivers/usb/host/dwc_otg/test/test_sysfs.pl ---- linux-3.18.10/drivers/usb/host/dwc_otg/test/test_sysfs.pl 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/usb/host/dwc_otg/test/test_sysfs.pl 2015-03-26 11:46:54.320238212 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/dwc_otg/test/test_sysfs.pl linux-rpi/drivers/usb/host/dwc_otg/test/test_sysfs.pl +--- linux-3.18.14/drivers/usb/host/dwc_otg/test/test_sysfs.pl 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/usb/host/dwc_otg/test/test_sysfs.pl 2015-05-31 14:46:12.909660961 -0500 @@ -0,0 +1,193 @@ +#!/usr/bin/perl -w +# @@ -121623,9 +124245,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/dwc_otg/test/test_sysfs.pl linux-rpi/dr + +test_main(); +0; -diff -Nur linux-3.18.10/drivers/usb/host/Kconfig linux-rpi/drivers/usb/host/Kconfig ---- linux-3.18.10/drivers/usb/host/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/usb/host/Kconfig 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/Kconfig linux-rpi/drivers/usb/host/Kconfig +--- linux-3.18.14/drivers/usb/host/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/usb/host/Kconfig 2015-05-31 14:46:12.889660961 -0500 @@ -744,6 +744,19 @@ To compile this driver a module, choose M here: the module will be called "hwa-hc". @@ -121646,9 +124268,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/Kconfig linux-rpi/drivers/usb/host/Kcon config USB_IMX21_HCD tristate "i.MX21 HCD support" depends on ARM && ARCH_MXC -diff -Nur linux-3.18.10/drivers/usb/host/Makefile linux-rpi/drivers/usb/host/Makefile ---- linux-3.18.10/drivers/usb/host/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/usb/host/Makefile 2015-03-26 11:46:54.308238199 +0100 +diff -Nur linux-3.18.14/drivers/usb/host/Makefile linux-rpi/drivers/usb/host/Makefile +--- linux-3.18.14/drivers/usb/host/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/usb/host/Makefile 2015-05-31 14:46:12.889660961 -0500 @@ -71,6 +71,8 @@ obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o obj-$(CONFIG_USB_ISP1760_HCD) += isp1760.o @@ -121658,9 +124280,9 @@ diff -Nur linux-3.18.10/drivers/usb/host/Makefile linux-rpi/drivers/usb/host/Mak obj-$(CONFIG_USB_IMX21_HCD) += imx21-hcd.o obj-$(CONFIG_USB_FSL_MPH_DR_OF) += fsl-mph-dr-of.o obj-$(CONFIG_USB_OCTEON2_COMMON) += octeon2-common.o -diff -Nur linux-3.18.10/drivers/usb/Makefile linux-rpi/drivers/usb/Makefile ---- linux-3.18.10/drivers/usb/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/usb/Makefile 2015-03-26 11:46:54.248238147 +0100 +diff -Nur linux-3.18.14/drivers/usb/Makefile linux-rpi/drivers/usb/Makefile +--- linux-3.18.14/drivers/usb/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/usb/Makefile 2015-05-31 14:46:12.845660962 -0500 @@ -24,6 +24,7 @@ obj-$(CONFIG_USB_R8A66597_HCD) += host/ obj-$(CONFIG_USB_HWA_HCD) += host/ @@ -121669,9 +124291,9 @@ diff -Nur linux-3.18.10/drivers/usb/Makefile linux-rpi/drivers/usb/Makefile obj-$(CONFIG_USB_IMX21_HCD) += host/ obj-$(CONFIG_USB_FSL_MPH_DR_OF) += host/ obj-$(CONFIG_USB_FUSBH200_HCD) += host/ -diff -Nur linux-3.18.10/drivers/video/fbdev/bcm2708_fb.c linux-rpi/drivers/video/fbdev/bcm2708_fb.c ---- linux-3.18.10/drivers/video/fbdev/bcm2708_fb.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/video/fbdev/bcm2708_fb.c 2015-03-26 11:46:54.428238312 +0100 +diff -Nur linux-3.18.14/drivers/video/fbdev/bcm2708_fb.c linux-rpi/drivers/video/fbdev/bcm2708_fb.c +--- linux-3.18.14/drivers/video/fbdev/bcm2708_fb.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/video/fbdev/bcm2708_fb.c 2015-05-31 14:46:13.001660960 -0500 @@ -0,0 +1,818 @@ +/* + * linux/drivers/video/bcm2708_fb.c @@ -122354,7 +124976,7 @@ diff -Nur linux-3.18.10/drivers/video/fbdev/bcm2708_fb.c linux-rpi/drivers/video + fb_set_var(&fb->fb, &fb->fb.var); + bcm2708_fb_set_par(&fb->fb); + -+ print_debug("BCM2708FB: registering framebuffer (%dx%d@%d) (%d)\n", fbwidth ++ print_debug("BCM2708FB: registering framebuffer (%dx%d@%d) (%d)\n", fbwidth, + fbheight, fbdepth, fbswap); + + ret = register_framebuffer(&fb->fb); @@ -122491,9 +125113,9 @@ diff -Nur linux-3.18.10/drivers/video/fbdev/bcm2708_fb.c linux-rpi/drivers/video +MODULE_PARM_DESC(fbheight, "Height of ARM Framebuffer"); +MODULE_PARM_DESC(fbdepth, "Bit depth of ARM Framebuffer"); +MODULE_PARM_DESC(fbswap, "Swap order of red and blue in 24 and 32 bit modes"); -diff -Nur linux-3.18.10/drivers/video/fbdev/core/cfbimgblt.c linux-rpi/drivers/video/fbdev/core/cfbimgblt.c ---- linux-3.18.10/drivers/video/fbdev/core/cfbimgblt.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/video/fbdev/core/cfbimgblt.c 2015-03-26 11:46:54.436238317 +0100 +diff -Nur linux-3.18.14/drivers/video/fbdev/core/cfbimgblt.c linux-rpi/drivers/video/fbdev/core/cfbimgblt.c +--- linux-3.18.14/drivers/video/fbdev/core/cfbimgblt.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/video/fbdev/core/cfbimgblt.c 2015-05-31 14:46:13.001660960 -0500 @@ -28,6 +28,11 @@ * * Also need to add code to deal with cards endians that are different than @@ -122667,9 +125289,9 @@ diff -Nur linux-3.18.10/drivers/video/fbdev/core/cfbimgblt.c linux-rpi/drivers/v slow_imageblit(image, p, dst1, fgcolor, bgcolor, start_index, pitch_index); } else -diff -Nur linux-3.18.10/drivers/video/fbdev/core/fbmem.c linux-rpi/drivers/video/fbdev/core/fbmem.c ---- linux-3.18.10/drivers/video/fbdev/core/fbmem.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/video/fbdev/core/fbmem.c 2015-03-26 11:46:54.452238335 +0100 +diff -Nur linux-3.18.14/drivers/video/fbdev/core/fbmem.c linux-rpi/drivers/video/fbdev/core/fbmem.c +--- linux-3.18.14/drivers/video/fbdev/core/fbmem.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/video/fbdev/core/fbmem.c 2015-05-31 14:46:13.005660960 -0500 @@ -1084,6 +1084,25 @@ } EXPORT_SYMBOL(fb_blank); @@ -122728,9 +125350,9 @@ diff -Nur linux-3.18.10/drivers/video/fbdev/core/fbmem.c linux-rpi/drivers/video arg = (unsigned long) compat_ptr(arg); case FBIOBLANK: ret = do_fb_ioctl(info, cmd, arg); -diff -Nur linux-3.18.10/drivers/video/fbdev/Kconfig linux-rpi/drivers/video/fbdev/Kconfig ---- linux-3.18.10/drivers/video/fbdev/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/video/fbdev/Kconfig 2015-03-26 11:46:54.420238304 +0100 +diff -Nur linux-3.18.14/drivers/video/fbdev/Kconfig linux-rpi/drivers/video/fbdev/Kconfig +--- linux-3.18.14/drivers/video/fbdev/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/video/fbdev/Kconfig 2015-05-31 14:46:12.993660961 -0500 @@ -224,6 +224,20 @@ comment "Frame buffer hardware drivers" depends on FB @@ -122752,9 +125374,9 @@ diff -Nur linux-3.18.10/drivers/video/fbdev/Kconfig linux-rpi/drivers/video/fbde config FB_GRVGA tristate "Aeroflex Gaisler framebuffer support" depends on FB && SPARC -diff -Nur linux-3.18.10/drivers/video/fbdev/Makefile linux-rpi/drivers/video/fbdev/Makefile ---- linux-3.18.10/drivers/video/fbdev/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/video/fbdev/Makefile 2015-03-26 11:46:54.420238304 +0100 +diff -Nur linux-3.18.14/drivers/video/fbdev/Makefile linux-rpi/drivers/video/fbdev/Makefile +--- linux-3.18.14/drivers/video/fbdev/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/video/fbdev/Makefile 2015-05-31 14:46:12.993660961 -0500 @@ -12,6 +12,7 @@ obj-$(CONFIG_FB_WMT_GE_ROPS) += wmt_ge_rops.o @@ -122763,9 +125385,9 @@ diff -Nur linux-3.18.10/drivers/video/fbdev/Makefile linux-rpi/drivers/video/fbd obj-$(CONFIG_FB_AMIGA) += amifb.o c2p_planar.o obj-$(CONFIG_FB_ARC) += arcfb.o obj-$(CONFIG_FB_CLPS711X) += clps711x-fb.o -diff -Nur linux-3.18.10/drivers/video/logo/logo_linux_clut224.ppm linux-rpi/drivers/video/logo/logo_linux_clut224.ppm ---- linux-3.18.10/drivers/video/logo/logo_linux_clut224.ppm 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/video/logo/logo_linux_clut224.ppm 2015-03-26 11:46:54.512238389 +0100 +diff -Nur linux-3.18.14/drivers/video/logo/logo_linux_clut224.ppm linux-rpi/drivers/video/logo/logo_linux_clut224.ppm +--- linux-3.18.14/drivers/video/logo/logo_linux_clut224.ppm 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/video/logo/logo_linux_clut224.ppm 2015-05-31 14:46:13.093660960 -0500 @@ -1,1604 +1,883 @@ P3 -# Standard 224-color Linux logo @@ -125252,9 +127874,9 @@ diff -Nur linux-3.18.10/drivers/video/logo/logo_linux_clut224.ppm linux-rpi/driv +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 -diff -Nur linux-3.18.10/drivers/w1/masters/w1-gpio.c linux-rpi/drivers/w1/masters/w1-gpio.c ---- linux-3.18.10/drivers/w1/masters/w1-gpio.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/w1/masters/w1-gpio.c 2015-03-26 11:46:54.528238404 +0100 +diff -Nur linux-3.18.14/drivers/w1/masters/w1-gpio.c linux-rpi/drivers/w1/masters/w1-gpio.c +--- linux-3.18.14/drivers/w1/masters/w1-gpio.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/w1/masters/w1-gpio.c 2015-05-31 14:46:13.101660959 -0500 @@ -23,6 +23,19 @@ #include "../w1.h" #include "../w1_int.h" @@ -125389,9 +128011,9 @@ diff -Nur linux-3.18.10/drivers/w1/masters/w1-gpio.c linux-rpi/drivers/w1/master return 0; } -diff -Nur linux-3.18.10/drivers/w1/w1.h linux-rpi/drivers/w1/w1.h ---- linux-3.18.10/drivers/w1/w1.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/w1/w1.h 2015-03-26 11:46:54.528238404 +0100 +diff -Nur linux-3.18.14/drivers/w1/w1.h linux-rpi/drivers/w1/w1.h +--- linux-3.18.14/drivers/w1/w1.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/w1/w1.h 2015-05-31 14:46:13.101660959 -0500 @@ -171,6 +171,12 @@ u8 (*set_pullup)(void *, int); @@ -125405,9 +128027,9 @@ diff -Nur linux-3.18.10/drivers/w1/w1.h linux-rpi/drivers/w1/w1.h void (*search)(void *, struct w1_master *, u8, w1_slave_found_callback); }; -diff -Nur linux-3.18.10/drivers/w1/w1_int.c linux-rpi/drivers/w1/w1_int.c ---- linux-3.18.10/drivers/w1/w1_int.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/w1/w1_int.c 2015-03-26 11:46:54.528238404 +0100 +diff -Nur linux-3.18.14/drivers/w1/w1_int.c linux-rpi/drivers/w1/w1_int.c +--- linux-3.18.14/drivers/w1/w1_int.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/w1/w1_int.c 2015-05-31 14:46:13.105660959 -0500 @@ -123,6 +123,20 @@ return(-EINVAL); } @@ -125429,9 +128051,9 @@ diff -Nur linux-3.18.10/drivers/w1/w1_int.c linux-rpi/drivers/w1/w1_int.c /* 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 -Nur linux-3.18.10/drivers/w1/w1_io.c linux-rpi/drivers/w1/w1_io.c ---- linux-3.18.10/drivers/w1/w1_io.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/w1/w1_io.c 2015-03-26 11:46:54.528238404 +0100 +diff -Nur linux-3.18.14/drivers/w1/w1_io.c linux-rpi/drivers/w1/w1_io.c +--- linux-3.18.14/drivers/w1/w1_io.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/w1/w1_io.c 2015-05-31 14:46:13.105660959 -0500 @@ -134,10 +134,22 @@ static void w1_post_write(struct w1_master *dev) { @@ -125458,9 +128080,9 @@ diff -Nur linux-3.18.10/drivers/w1/w1_io.c linux-rpi/drivers/w1/w1_io.c dev->pullup_duration = 0; } } -diff -Nur linux-3.18.10/drivers/watchdog/bcm2708_wdog.c linux-rpi/drivers/watchdog/bcm2708_wdog.c ---- linux-3.18.10/drivers/watchdog/bcm2708_wdog.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/drivers/watchdog/bcm2708_wdog.c 2015-03-26 11:46:54.528238404 +0100 +diff -Nur linux-3.18.14/drivers/watchdog/bcm2708_wdog.c linux-rpi/drivers/watchdog/bcm2708_wdog.c +--- linux-3.18.14/drivers/watchdog/bcm2708_wdog.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/drivers/watchdog/bcm2708_wdog.c 2015-05-31 14:46:13.105660959 -0500 @@ -0,0 +1,382 @@ +/* + * Broadcom BCM2708 watchdog driver. @@ -125844,9 +128466,9 @@ diff -Nur linux-3.18.10/drivers/watchdog/bcm2708_wdog.c linux-rpi/drivers/watchd +MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); +MODULE_ALIAS_MISCDEV(TEMP_MINOR); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/drivers/watchdog/Kconfig linux-rpi/drivers/watchdog/Kconfig ---- linux-3.18.10/drivers/watchdog/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/watchdog/Kconfig 2015-03-26 11:46:54.528238404 +0100 +diff -Nur linux-3.18.14/drivers/watchdog/Kconfig linux-rpi/drivers/watchdog/Kconfig +--- linux-3.18.14/drivers/watchdog/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/watchdog/Kconfig 2015-05-31 14:46:13.105660959 -0500 @@ -452,6 +452,12 @@ To compile this driver as a module, choose M here: the module will be called retu_wdt. @@ -125860,9 +128482,9 @@ diff -Nur linux-3.18.10/drivers/watchdog/Kconfig linux-rpi/drivers/watchdog/Kcon config MOXART_WDT tristate "MOXART watchdog" depends on ARCH_MOXART -diff -Nur linux-3.18.10/drivers/watchdog/Makefile linux-rpi/drivers/watchdog/Makefile ---- linux-3.18.10/drivers/watchdog/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/drivers/watchdog/Makefile 2015-03-26 11:46:54.528238404 +0100 +diff -Nur linux-3.18.14/drivers/watchdog/Makefile linux-rpi/drivers/watchdog/Makefile +--- linux-3.18.14/drivers/watchdog/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/drivers/watchdog/Makefile 2015-05-31 14:46:13.105660959 -0500 @@ -56,6 +56,7 @@ obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o obj-$(CONFIG_UX500_WATCHDOG) += ux500_wdt.o @@ -125871,9 +128493,9 @@ diff -Nur linux-3.18.10/drivers/watchdog/Makefile linux-rpi/drivers/watchdog/Mak obj-$(CONFIG_BCM2835_WDT) += bcm2835_wdt.o obj-$(CONFIG_MOXART_WDT) += moxart_wdt.o obj-$(CONFIG_SIRFSOC_WATCHDOG) += sirfsoc_wdt.o -diff -Nur linux-3.18.10/include/linux/broadcom/vc_cma.h linux-rpi/include/linux/broadcom/vc_cma.h ---- linux-3.18.10/include/linux/broadcom/vc_cma.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/include/linux/broadcom/vc_cma.h 2015-03-26 11:46:55.548239348 +0100 +diff -Nur linux-3.18.14/include/linux/broadcom/vc_cma.h linux-rpi/include/linux/broadcom/vc_cma.h +--- linux-3.18.14/include/linux/broadcom/vc_cma.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/include/linux/broadcom/vc_cma.h 2015-05-31 14:46:13.529660956 -0500 @@ -0,0 +1,29 @@ +/***************************************************************************** +* Copyright 2012 Broadcom Corporation. All rights reserved. @@ -125904,10 +128526,21 @@ diff -Nur linux-3.18.10/include/linux/broadcom/vc_cma.h linux-rpi/include/linux/ +#endif + +#endif /* VC_CMA_H */ -diff -Nur linux-3.18.10/include/linux/mmc/host.h linux-rpi/include/linux/mmc/host.h ---- linux-3.18.10/include/linux/mmc/host.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/include/linux/mmc/host.h 2015-03-26 11:46:55.932239704 +0100 -@@ -290,6 +290,7 @@ +diff -Nur linux-3.18.14/include/linux/mmc/host.h linux-rpi/include/linux/mmc/host.h +--- linux-3.18.14/include/linux/mmc/host.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/include/linux/mmc/host.h 2015-05-31 14:46:13.613660955 -0500 +@@ -146,7 +146,9 @@ + * I/O. Returns the number of supported blocks for the request. + */ + int (*multi_io_quirk)(struct mmc_card *card, +- unsigned int direction, int blk_size); ++ unsigned int direction, ++ u32 blk_pos, ++ int blk_size); + }; + + struct mmc_card; +@@ -290,6 +292,7 @@ #define MMC_CAP2_HS400 (MMC_CAP2_HS400_1_8V | \ MMC_CAP2_HS400_1_2V) #define MMC_CAP2_SDIO_IRQ_NOTHREAD (1 << 17) @@ -125915,9 +128548,9 @@ diff -Nur linux-3.18.10/include/linux/mmc/host.h linux-rpi/include/linux/mmc/hos mmc_pm_flag_t pm_caps; /* supported pm features */ -diff -Nur linux-3.18.10/include/linux/mmc/sdhci.h linux-rpi/include/linux/mmc/sdhci.h ---- linux-3.18.10/include/linux/mmc/sdhci.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/include/linux/mmc/sdhci.h 2015-03-26 11:46:55.932239704 +0100 +diff -Nur linux-3.18.14/include/linux/mmc/sdhci.h linux-rpi/include/linux/mmc/sdhci.h +--- linux-3.18.14/include/linux/mmc/sdhci.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/include/linux/mmc/sdhci.h 2015-05-31 14:46:13.613660955 -0500 @@ -130,6 +130,7 @@ #define SDHCI_SDIO_IRQ_ENABLED (1<<9) /* SDIO irq enabled */ #define SDHCI_SDR104_NEEDS_TUNING (1<<10) /* SDR104/HS200 needs tuning */ @@ -125926,9 +128559,9 @@ diff -Nur linux-3.18.10/include/linux/mmc/sdhci.h linux-rpi/include/linux/mmc/sd unsigned int version; /* SDHCI spec. version */ -diff -Nur linux-3.18.10/include/linux/platform_data/bcm2708.h linux-rpi/include/linux/platform_data/bcm2708.h ---- linux-3.18.10/include/linux/platform_data/bcm2708.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/include/linux/platform_data/bcm2708.h 2015-03-26 11:46:56.020239783 +0100 +diff -Nur linux-3.18.14/include/linux/platform_data/bcm2708.h linux-rpi/include/linux/platform_data/bcm2708.h +--- linux-3.18.14/include/linux/platform_data/bcm2708.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/include/linux/platform_data/bcm2708.h 2015-05-31 14:46:13.633660955 -0500 @@ -0,0 +1,23 @@ +/* + * include/linux/platform_data/bcm2708.h @@ -125953,9 +128586,9 @@ diff -Nur linux-3.18.10/include/linux/platform_data/bcm2708.h linux-rpi/include/ + bcm2708_gpio_pull_t value); + +#endif -diff -Nur linux-3.18.10/include/linux/vmstat.h linux-rpi/include/linux/vmstat.h ---- linux-3.18.10/include/linux/vmstat.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/include/linux/vmstat.h 2015-03-26 11:46:56.512240241 +0100 +diff -Nur linux-3.18.14/include/linux/vmstat.h linux-rpi/include/linux/vmstat.h +--- linux-3.18.14/include/linux/vmstat.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/include/linux/vmstat.h 2015-05-31 14:46:13.681660954 -0500 @@ -241,7 +241,11 @@ static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item) { @@ -125968,9 +128601,9 @@ diff -Nur linux-3.18.10/include/linux/vmstat.h linux-rpi/include/linux/vmstat.h } static inline void __inc_zone_page_state(struct page *page, -diff -Nur linux-3.18.10/include/linux/w1-gpio.h linux-rpi/include/linux/w1-gpio.h ---- linux-3.18.10/include/linux/w1-gpio.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/include/linux/w1-gpio.h 2015-03-26 11:46:56.512240241 +0100 +diff -Nur linux-3.18.14/include/linux/w1-gpio.h linux-rpi/include/linux/w1-gpio.h +--- linux-3.18.14/include/linux/w1-gpio.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/include/linux/w1-gpio.h 2015-05-31 14:46:13.681660954 -0500 @@ -18,6 +18,7 @@ struct w1_gpio_platform_data { unsigned int pin; @@ -125979,9 +128612,9 @@ diff -Nur linux-3.18.10/include/linux/w1-gpio.h linux-rpi/include/linux/w1-gpio. void (*enable_external_pullup)(int enable); unsigned int ext_pullup_enable_pin; unsigned int pullup_duration; -diff -Nur linux-3.18.10/include/uapi/linux/fb.h linux-rpi/include/uapi/linux/fb.h ---- linux-3.18.10/include/uapi/linux/fb.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/include/uapi/linux/fb.h 2015-03-26 11:46:58.608242179 +0100 +diff -Nur linux-3.18.14/include/uapi/linux/fb.h linux-rpi/include/uapi/linux/fb.h +--- linux-3.18.14/include/uapi/linux/fb.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/include/uapi/linux/fb.h 2015-05-31 14:46:13.761660954 -0500 @@ -34,6 +34,11 @@ #define FBIOPUT_MODEINFO 0x4617 #define FBIOGET_DISPINFO 0x4618 @@ -125994,9 +128627,9 @@ diff -Nur linux-3.18.10/include/uapi/linux/fb.h linux-rpi/include/uapi/linux/fb. #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ -diff -Nur linux-3.18.10/kernel/cgroup.c linux-rpi/kernel/cgroup.c ---- linux-3.18.10/kernel/cgroup.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/kernel/cgroup.c 2015-03-26 11:46:59.356242871 +0100 +diff -Nur linux-3.18.14/kernel/cgroup.c linux-rpi/kernel/cgroup.c +--- linux-3.18.14/kernel/cgroup.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/kernel/cgroup.c 2015-05-31 14:46:13.841660953 -0500 @@ -5322,6 +5322,29 @@ } __setup("cgroup_disable=", cgroup_disable); @@ -126027,9 +128660,9 @@ diff -Nur linux-3.18.10/kernel/cgroup.c linux-rpi/kernel/cgroup.c static int __init cgroup_set_legacy_files_on_dfl(char *str) { printk("cgroup: using legacy files on the default hierarchy\n"); -diff -Nur linux-3.18.10/mm/memcontrol.c linux-rpi/mm/memcontrol.c ---- linux-3.18.10/mm/memcontrol.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/mm/memcontrol.c 2015-03-26 11:47:00.144243601 +0100 +diff -Nur linux-3.18.14/mm/memcontrol.c linux-rpi/mm/memcontrol.c +--- linux-3.18.14/mm/memcontrol.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/mm/memcontrol.c 2015-05-31 14:46:13.937660952 -0500 @@ -6207,6 +6207,7 @@ .bind = mem_cgroup_bind, .legacy_cftypes = mem_cgroup_files, @@ -126038,9 +128671,9 @@ diff -Nur linux-3.18.10/mm/memcontrol.c linux-rpi/mm/memcontrol.c }; #ifdef CONFIG_MEMCG_SWAP -diff -Nur linux-3.18.10/scripts/dtc/checks.c linux-rpi/scripts/dtc/checks.c ---- linux-3.18.10/scripts/dtc/checks.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/checks.c 2015-03-26 11:47:02.296245591 +0100 +diff -Nur linux-3.18.14/scripts/dtc/checks.c linux-rpi/scripts/dtc/checks.c +--- linux-3.18.14/scripts/dtc/checks.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/checks.c 2015-05-31 14:46:14.185660950 -0500 @@ -53,7 +53,7 @@ void *data; bool warn, error; @@ -126293,9 +128926,9 @@ diff -Nur linux-3.18.10/scripts/dtc/checks.c linux-rpi/scripts/dtc/checks.c { struct node *dt = bi->dt; int i; -diff -Nur linux-3.18.10/scripts/dtc/data.c linux-rpi/scripts/dtc/data.c ---- linux-3.18.10/scripts/dtc/data.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/data.c 2015-03-26 11:47:02.296245591 +0100 +diff -Nur linux-3.18.14/scripts/dtc/data.c linux-rpi/scripts/dtc/data.c +--- linux-3.18.14/scripts/dtc/data.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/data.c 2015-05-31 14:46:14.185660950 -0500 @@ -74,7 +74,7 @@ struct data d; char *q; @@ -126331,9 +128964,9 @@ diff -Nur linux-3.18.10/scripts/dtc/data.c linux-rpi/scripts/dtc/data.c - return 1; + return true; } -diff -Nur linux-3.18.10/scripts/dtc/dtc.c linux-rpi/scripts/dtc/dtc.c ---- linux-3.18.10/scripts/dtc/dtc.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/dtc.c 2015-03-26 11:47:02.296245591 +0100 +diff -Nur linux-3.18.14/scripts/dtc/dtc.c linux-rpi/scripts/dtc/dtc.c +--- linux-3.18.14/scripts/dtc/dtc.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/dtc.c 2015-05-31 14:46:14.189660949 -0500 @@ -29,6 +29,7 @@ int minsize; /* Minimum blob size */ int padsize; /* Additional padding to blob */ @@ -126429,9 +129062,9 @@ diff -Nur linux-3.18.10/scripts/dtc/dtc.c linux-rpi/scripts/dtc/dtc.c if (! outf) die("Couldn't open output file %s: %s\n", outname, strerror(errno)); -diff -Nur linux-3.18.10/scripts/dtc/dtc.h linux-rpi/scripts/dtc/dtc.h ---- linux-3.18.10/scripts/dtc/dtc.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/dtc.h 2015-03-26 11:47:02.296245591 +0100 +diff -Nur linux-3.18.14/scripts/dtc/dtc.h linux-rpi/scripts/dtc/dtc.h +--- linux-3.18.14/scripts/dtc/dtc.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/dtc.h 2015-05-31 14:46:14.189660949 -0500 @@ -38,9 +38,9 @@ #include "util.h" @@ -126557,9 +129190,9 @@ diff -Nur linux-3.18.10/scripts/dtc/dtc.h linux-rpi/scripts/dtc/dtc.h /* Flattened trees */ -diff -Nur linux-3.18.10/scripts/dtc/dtc-lexer.l linux-rpi/scripts/dtc/dtc-lexer.l ---- linux-3.18.10/scripts/dtc/dtc-lexer.l 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/dtc-lexer.l 2015-03-26 11:47:02.296245591 +0100 +diff -Nur linux-3.18.14/scripts/dtc/dtc-lexer.l linux-rpi/scripts/dtc/dtc-lexer.l +--- linux-3.18.14/scripts/dtc/dtc-lexer.l 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/dtc-lexer.l 2015-05-31 14:46:14.185660950 -0500 @@ -20,7 +20,6 @@ %option noyywrap nounput noinput never-interactive @@ -126697,9 +129330,9 @@ diff -Nur linux-3.18.10/scripts/dtc/dtc-lexer.l linux-rpi/scripts/dtc/dtc-lexer. + + treesource_error = true; } -diff -Nur linux-3.18.10/scripts/dtc/dtc-lexer.lex.c_shipped linux-rpi/scripts/dtc/dtc-lexer.lex.c_shipped ---- linux-3.18.10/scripts/dtc/dtc-lexer.lex.c_shipped 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/dtc-lexer.lex.c_shipped 2015-03-26 11:47:02.296245591 +0100 +diff -Nur linux-3.18.14/scripts/dtc/dtc-lexer.lex.c_shipped linux-rpi/scripts/dtc/dtc-lexer.lex.c_shipped +--- linux-3.18.14/scripts/dtc/dtc-lexer.lex.c_shipped 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/dtc-lexer.lex.c_shipped 2015-05-31 14:46:14.185660950 -0500 @@ -372,8 +372,8 @@ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; @@ -127554,9 +130187,9 @@ diff -Nur linux-3.18.10/scripts/dtc/dtc-lexer.lex.c_shipped linux-rpi/scripts/dt + treesource_error = true; } -diff -Nur linux-3.18.10/scripts/dtc/dtc-parser.tab.c_shipped linux-rpi/scripts/dtc/dtc-parser.tab.c_shipped ---- linux-3.18.10/scripts/dtc/dtc-parser.tab.c_shipped 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/dtc-parser.tab.c_shipped 2015-03-26 11:47:02.296245591 +0100 +diff -Nur linux-3.18.14/scripts/dtc/dtc-parser.tab.c_shipped linux-rpi/scripts/dtc/dtc-parser.tab.c_shipped +--- linux-3.18.14/scripts/dtc/dtc-parser.tab.c_shipped 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/dtc-parser.tab.c_shipped 2015-05-31 14:46:14.189660949 -0500 @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7.12-4996. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ @@ -130226,9 +132859,9 @@ diff -Nur linux-3.18.10/scripts/dtc/dtc-parser.tab.c_shipped linux-rpi/scripts/d - return c; + ERROR(&yylloc, "%s", s); } -diff -Nur linux-3.18.10/scripts/dtc/dtc-parser.tab.h_shipped linux-rpi/scripts/dtc/dtc-parser.tab.h_shipped ---- linux-3.18.10/scripts/dtc/dtc-parser.tab.h_shipped 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/dtc-parser.tab.h_shipped 2015-03-26 11:47:02.296245591 +0100 +diff -Nur linux-3.18.14/scripts/dtc/dtc-parser.tab.h_shipped linux-rpi/scripts/dtc/dtc-parser.tab.h_shipped +--- linux-3.18.14/scripts/dtc/dtc-parser.tab.h_shipped 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/dtc-parser.tab.h_shipped 2015-05-31 14:46:14.189660949 -0500 @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7.12-4996. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ @@ -130400,9 +133033,9 @@ diff -Nur linux-3.18.10/scripts/dtc/dtc-parser.tab.h_shipped linux-rpi/scripts/d -#endif /* ! YYPARSE_PARAM */ #endif /* !YY_YY_DTC_PARSER_TAB_H_INCLUDED */ -diff -Nur linux-3.18.10/scripts/dtc/dtc-parser.y linux-rpi/scripts/dtc/dtc-parser.y ---- linux-3.18.10/scripts/dtc/dtc-parser.y 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/dtc-parser.y 2015-03-26 11:47:02.296245591 +0100 +diff -Nur linux-3.18.14/scripts/dtc/dtc-parser.y linux-rpi/scripts/dtc/dtc-parser.y +--- linux-3.18.14/scripts/dtc/dtc-parser.y 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/dtc-parser.y 2015-05-31 14:46:14.189660949 -0500 @@ -17,31 +17,28 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA @@ -130677,9 +133310,9 @@ diff -Nur linux-3.18.10/scripts/dtc/dtc-parser.y linux-rpi/scripts/dtc/dtc-parse - return c; + ERROR(&yylloc, "%s", s); } -diff -Nur linux-3.18.10/scripts/dtc/flattree.c linux-rpi/scripts/dtc/flattree.c ---- linux-3.18.10/scripts/dtc/flattree.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/flattree.c 2015-03-26 11:47:02.300245594 +0100 +diff -Nur linux-3.18.14/scripts/dtc/flattree.c linux-rpi/scripts/dtc/flattree.c +--- linux-3.18.14/scripts/dtc/flattree.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/flattree.c 2015-05-31 14:46:14.189660949 -0500 @@ -261,7 +261,13 @@ { struct property *prop; @@ -130847,9 +133480,9 @@ diff -Nur linux-3.18.10/scripts/dtc/flattree.c linux-rpi/scripts/dtc/flattree.c emit->endnode(etarget, tree->labels); } -diff -Nur linux-3.18.10/scripts/dtc/fstree.c linux-rpi/scripts/dtc/fstree.c ---- linux-3.18.10/scripts/dtc/fstree.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/fstree.c 2015-03-26 11:47:02.300245594 +0100 +diff -Nur linux-3.18.14/scripts/dtc/fstree.c linux-rpi/scripts/dtc/fstree.c +--- linux-3.18.14/scripts/dtc/fstree.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/fstree.c 2015-05-31 14:46:14.189660949 -0500 @@ -37,26 +37,26 @@ tree = build_node(NULL, NULL); @@ -130898,9 +133531,9 @@ diff -Nur linux-3.18.10/scripts/dtc/fstree.c linux-rpi/scripts/dtc/fstree.c } closedir(d); -diff -Nur linux-3.18.10/scripts/dtc/livetree.c linux-rpi/scripts/dtc/livetree.c ---- linux-3.18.10/scripts/dtc/livetree.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/livetree.c 2015-03-26 11:47:02.300245594 +0100 +diff -Nur linux-3.18.14/scripts/dtc/livetree.c linux-rpi/scripts/dtc/livetree.c +--- linux-3.18.14/scripts/dtc/livetree.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/livetree.c 2015-05-31 14:46:14.197660949 -0500 @@ -511,7 +511,9 @@ struct node *get_node_by_ref(struct node *tree, const char *ref) @@ -130912,9 +133545,9 @@ diff -Nur linux-3.18.10/scripts/dtc/livetree.c linux-rpi/scripts/dtc/livetree.c return get_node_by_path(tree, ref); else return get_node_by_label(tree, ref); -diff -Nur linux-3.18.10/scripts/dtc/srcpos.c linux-rpi/scripts/dtc/srcpos.c ---- linux-3.18.10/scripts/dtc/srcpos.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/srcpos.c 2015-03-26 11:47:02.300245594 +0100 +diff -Nur linux-3.18.14/scripts/dtc/srcpos.c linux-rpi/scripts/dtc/srcpos.c +--- linux-3.18.14/scripts/dtc/srcpos.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/srcpos.c 2015-05-31 14:46:14.197660949 -0500 @@ -34,7 +34,7 @@ static struct search_path *search_path_head, **search_path_tail; @@ -131015,9 +133648,9 @@ diff -Nur linux-3.18.10/scripts/dtc/srcpos.c linux-rpi/scripts/dtc/srcpos.c va_end(va); } -diff -Nur linux-3.18.10/scripts/dtc/srcpos.h linux-rpi/scripts/dtc/srcpos.h ---- linux-3.18.10/scripts/dtc/srcpos.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/srcpos.h 2015-03-26 11:47:02.300245594 +0100 +diff -Nur linux-3.18.14/scripts/dtc/srcpos.h linux-rpi/scripts/dtc/srcpos.h +--- linux-3.18.14/scripts/dtc/srcpos.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/srcpos.h 2015-05-31 14:46:14.197660949 -0500 @@ -21,6 +21,7 @@ #define _SRCPOS_H_ @@ -131054,9 +133687,9 @@ diff -Nur linux-3.18.10/scripts/dtc/srcpos.h linux-rpi/scripts/dtc/srcpos.h extern void srcpos_set_line(char *f, int l); -diff -Nur linux-3.18.10/scripts/dtc/treesource.c linux-rpi/scripts/dtc/treesource.c ---- linux-3.18.10/scripts/dtc/treesource.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/treesource.c 2015-03-26 11:47:02.300245594 +0100 +diff -Nur linux-3.18.14/scripts/dtc/treesource.c linux-rpi/scripts/dtc/treesource.c +--- linux-3.18.14/scripts/dtc/treesource.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/treesource.c 2015-05-31 14:46:14.197660949 -0500 @@ -26,12 +26,12 @@ extern YYLTYPE yylloc; @@ -131111,9 +133744,9 @@ diff -Nur linux-3.18.10/scripts/dtc/treesource.c linux-rpi/scripts/dtc/treesourc if ((const void *)bp >= propend) break; fprintf(f, " "); -diff -Nur linux-3.18.10/scripts/dtc/util.c linux-rpi/scripts/dtc/util.c ---- linux-3.18.10/scripts/dtc/util.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/util.c 2015-03-26 11:47:02.300245594 +0100 +diff -Nur linux-3.18.14/scripts/dtc/util.c linux-rpi/scripts/dtc/util.c +--- linux-3.18.14/scripts/dtc/util.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/util.c 2015-05-31 14:46:14.197660949 -0500 @@ -39,11 +39,11 @@ char *xstrdup(const char *s) { @@ -131170,9 +133803,9 @@ diff -Nur linux-3.18.10/scripts/dtc/util.c linux-rpi/scripts/dtc/util.c printf(">"); } else { printf(" = ["); -diff -Nur linux-3.18.10/scripts/dtc/util.h linux-rpi/scripts/dtc/util.h ---- linux-3.18.10/scripts/dtc/util.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/util.h 2015-03-26 11:47:02.300245594 +0100 +diff -Nur linux-3.18.14/scripts/dtc/util.h linux-rpi/scripts/dtc/util.h +--- linux-3.18.14/scripts/dtc/util.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/util.h 2015-05-31 14:46:14.197660949 -0500 @@ -2,6 +2,7 @@ #define _UTIL_H @@ -131198,15 +133831,450 @@ diff -Nur linux-3.18.10/scripts/dtc/util.h linux-rpi/scripts/dtc/util.h /* * Parse an escaped character starting at index i in string s. The resulting -diff -Nur linux-3.18.10/scripts/dtc/version_gen.h linux-rpi/scripts/dtc/version_gen.h ---- linux-3.18.10/scripts/dtc/version_gen.h 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/scripts/dtc/version_gen.h 2015-03-26 11:47:02.300245594 +0100 +diff -Nur linux-3.18.14/scripts/dtc/version_gen.h linux-rpi/scripts/dtc/version_gen.h +--- linux-3.18.14/scripts/dtc/version_gen.h 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/scripts/dtc/version_gen.h 2015-05-31 14:46:14.197660949 -0500 @@ -1 +1 @@ -#define DTC_VERSION "DTC 1.4.0-dirty" +#define DTC_VERSION "DTC 1.4.1-g36c70742" -diff -Nur linux-3.18.10/sound/arm/bcm2835.c linux-rpi/sound/arm/bcm2835.c ---- linux-3.18.10/sound/arm/bcm2835.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/arm/bcm2835.c 2015-03-26 11:47:02.440245724 +0100 +diff -Nur linux-3.18.14/scripts/knlinfo linux-rpi/scripts/knlinfo +--- linux-3.18.14/scripts/knlinfo 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/scripts/knlinfo 2015-05-31 14:46:14.205660949 -0500 +@@ -0,0 +1,167 @@ ++#!/usr/bin/env perl ++# ---------------------------------------------------------------------- ++# knlinfo by Phil Elwell for Raspberry Pi ++# ++# (c) 2014,2015 Raspberry Pi (Trading) Limited <info@raspberrypi.org> ++# ++# Licensed under the terms of the GNU General Public License. ++# ---------------------------------------------------------------------- ++ ++use strict; ++use integer; ++ ++use Fcntl ":seek"; ++ ++my $trailer_magic = 'RPTL'; ++ ++my %atom_formats = ++( ++ 'DTOK' => \&format_bool, ++ 'KVer' => \&format_string, ++); ++ ++if (@ARGV != 1) ++{ ++ print ("Usage: knlinfo <kernel image>\n"); ++ exit(1); ++} ++ ++my $kernel_file = $ARGV[0]; ++ ++ ++my ($atoms, $pos) = read_trailer($kernel_file); ++ ++exit(1) if (!$atoms); ++ ++printf("Kernel trailer found at %d/0x%x:\n", $pos, $pos); ++ ++foreach my $atom (@$atoms) ++{ ++ printf(" %s: %s\n", $atom->[0], format_atom($atom)); ++} ++ ++exit(0); ++ ++sub read_trailer ++{ ++ my ($kernel_file) = @_; ++ my $fh; ++ ++ if (!open($fh, '<', $kernel_file)) ++ { ++ print ("* Failed to open '$kernel_file'\n"); ++ return undef; ++ } ++ ++ if (!seek($fh, -12, SEEK_END)) ++ { ++ print ("* seek error in '$kernel_file'\n"); ++ return undef; ++ } ++ ++ my $last_bytes; ++ sysread($fh, $last_bytes, 12); ++ ++ my ($trailer_len, $data_len, $magic) = unpack('VVa4', $last_bytes); ++ ++ if (($magic ne $trailer_magic) || ($data_len != 4)) ++ { ++ print ("* no trailer\n"); ++ return undef; ++ } ++ if (!seek($fh, -12, SEEK_END)) ++ { ++ print ("* seek error in '$kernel_file'\n"); ++ return undef; ++ } ++ ++ $trailer_len -= 12; ++ ++ while ($trailer_len > 0) ++ { ++ if ($trailer_len < 8) ++ { ++ print ("* truncated atom header in trailer\n"); ++ return undef; ++ } ++ if (!seek($fh, -8, SEEK_CUR)) ++ { ++ print ("* seek error in '$kernel_file'\n"); ++ return undef; ++ } ++ $trailer_len -= 8; ++ ++ my $atom_hdr; ++ sysread($fh, $atom_hdr, 8); ++ my ($atom_len, $atom_type) = unpack('Va4', $atom_hdr); ++ ++ if ($trailer_len < $atom_len) ++ { ++ print ("* truncated atom data in trailer\n"); ++ return undef; ++ } ++ ++ my $rounded_len = (($atom_len + 3) & ~3); ++ if (!seek($fh, -(8 + $rounded_len), SEEK_CUR)) ++ { ++ print ("* seek error in '$kernel_file'\n"); ++ return undef; ++ } ++ $trailer_len -= $rounded_len; ++ ++ my $atom_data; ++ sysread($fh, $atom_data, $atom_len); ++ ++ if (!seek($fh, -$atom_len, SEEK_CUR)) ++ { ++ print ("* seek error in '$kernel_file'\n"); ++ return undef; ++ } ++ ++ push @$atoms, [ $atom_type, $atom_data ]; ++ } ++ ++ if (($$atoms[-1][0] eq "\x00\x00\x00\x00") && ++ ($$atoms[-1][1] eq "")) ++ { ++ pop @$atoms; ++ } ++ else ++ { ++ print ("* end marker missing from trailer\n"); ++ } ++ ++ return ($atoms, tell($fh)); ++} ++ ++sub format_atom ++{ ++ my ($atom) = @_; ++ ++ my $format_func = $atom_formats{$atom->[0]} || \&format_hex; ++ return $format_func->($atom->[1]); ++} ++ ++sub format_bool ++{ ++ my ($data) = @_; ++ return unpack('V', $data) ? 'true' : 'false'; ++} ++ ++sub format_int ++{ ++ my ($data) = @_; ++ return unpack('V', $data); ++} ++ ++sub format_string ++{ ++ my ($data) = @_; ++ return '"'.$data.'"'; ++} ++ ++sub format_hex ++{ ++ my ($data) = @_; ++ return unpack('H*', $data); ++} +diff -Nur linux-3.18.14/scripts/mkknlimg linux-rpi/scripts/mkknlimg +--- linux-3.18.14/scripts/mkknlimg 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/scripts/mkknlimg 2015-05-31 14:46:14.205660949 -0500 +@@ -0,0 +1,260 @@ ++#!/usr/bin/env perl ++# ---------------------------------------------------------------------- ++# mkknlimg by Phil Elwell for Raspberry Pi ++# based on extract-ikconfig Dick Streefland ++# ++# (c) 2009,2010 Dick Streefland <dick@streefland.net> ++# (c) 2014,2015 Raspberry Pi (Trading) Limited <info@raspberrypi.org> ++# ++# Licensed under the terms of the GNU General Public License. ++# ---------------------------------------------------------------------- ++ ++use strict; ++use warnings; ++use integer; ++ ++my $trailer_magic = 'RPTL'; ++ ++my $tmpfile1 = "/tmp/mkknlimg_$$.1"; ++my $tmpfile2 = "/tmp/mkknlimg_$$.2"; ++ ++my $dtok = 0; ++ ++while (@ARGV && ($ARGV[0] =~ /^-/)) ++{ ++ my $arg = shift(@ARGV); ++ if ($arg eq '--dtok') ++ { ++ $dtok = 1; ++ } ++ else ++ { ++ print ("* Unknown option '$arg'\n"); ++ usage(); ++ } ++} ++ ++usage() if (@ARGV != 2); ++ ++my $kernel_file = $ARGV[0]; ++my $out_file = $ARGV[1]; ++ ++if (! -r $kernel_file) ++{ ++ print ("* File '$kernel_file' not found\n"); ++ usage(); ++} ++ ++my @wanted_config_lines = ++( ++ 'CONFIG_BCM2708_DT' ++); ++ ++my @wanted_strings = ++( ++ 'bcm2708_fb', ++ 'brcm,bcm2708-pinctrl', ++ 'brcm,bcm2835-gpio', ++ 'of_find_property' ++); ++ ++my $res = try_extract($kernel_file, $tmpfile1); ++$res = try_decompress('\037\213\010', 'xy', 'gunzip', 0, ++ $kernel_file, $tmpfile1, $tmpfile2) if (!$res); ++$res = try_decompress('\3757zXZ\000', 'abcde', 'unxz --single-stream', -1, ++ $kernel_file, $tmpfile1, $tmpfile2) if (!$res); ++$res = try_decompress('BZh', 'xy', 'bunzip2', 0, ++ $kernel_file, $tmpfile1, $tmpfile2) if (!$res); ++$res = try_decompress('\135\0\0\0', 'xxx', 'unlzma', 0, ++ $kernel_file, $tmpfile1, $tmpfile2) if (!$res); ++$res = try_decompress('\211\114\132', 'xy', 'lzop -d', 0, ++ $kernel_file, $tmpfile1, $tmpfile2) if (!$res); ++$res = try_decompress('\002\041\114\030', 'xy', 'lz4 -d', 1, ++ $kernel_file, $tmpfile1, $tmpfile2) if (!$res); ++ ++my $append_trailer; ++my $trailer; ++my $kver = '?'; ++ ++$append_trailer = $dtok; ++ ++if ($res) ++{ ++ $kver = $res->{''} || '?'; ++ print("Version: $kver\n"); ++ ++ $append_trailer = $dtok; ++ if (!$dtok) ++ { ++ if (config_bool($res, 'bcm2708_fb')) ++ { ++ $dtok ||= config_bool($res, 'CONFIG_BCM2708_DT'); ++ $dtok ||= config_bool($res, 'brcm,bcm2708-pinctrl'); ++ $dtok ||= config_bool($res, 'brcm,bcm2835-gpio'); ++ $append_trailer = 1; ++ } ++ else ++ { ++ print ("* This doesn't look like a Raspberry Pi kernel. In pass-through mode.\n"); ++ } ++ } ++} ++elsif (!$dtok) ++{ ++ print ("* Is this a valid kernel? In pass-through mode.\n"); ++} ++ ++if ($append_trailer) ++{ ++ printf("DT: %s\n", $dtok ? "y" : "n"); ++ ++ my @atoms; ++ ++ push @atoms, [ $trailer_magic, pack('V', 0) ]; ++ push @atoms, [ 'KVer', $kver ]; ++ push @atoms, [ 'DTOK', pack('V', $dtok) ]; ++ ++ $trailer = pack_trailer(\@atoms); ++ $atoms[0]->[1] = pack('V', length($trailer)); ++ ++ $trailer = pack_trailer(\@atoms); ++} ++ ++my $ofh; ++my $total_len = 0; ++ ++if ($out_file eq $kernel_file) ++{ ++ die "* Failed to open '$out_file' for append\n" ++ if (!open($ofh, '>>', $out_file)); ++ $total_len = tell($ofh); ++} ++else ++{ ++ die "* Failed to open '$kernel_file'\n" ++ if (!open(my $ifh, '<', $kernel_file)); ++ die "* Failed to create '$out_file'\n" ++ if (!open($ofh, '>', $out_file)); ++ ++ my $copybuf; ++ while (1) ++ { ++ my $bytes = sysread($ifh, $copybuf, 64*1024); ++ last if (!$bytes); ++ syswrite($ofh, $copybuf, $bytes); ++ $total_len += $bytes; ++ } ++ close($ifh); ++} ++ ++if ($trailer) ++{ ++ # Pad to word-alignment ++ syswrite($ofh, "\x000\x000\x000", (-$total_len & 0x3)); ++ syswrite($ofh, $trailer); ++} ++ ++close($ofh); ++ ++exit($trailer ? 0 : 1); ++ ++END { ++ unlink($tmpfile1) if ($tmpfile1); ++ unlink($tmpfile2) if ($tmpfile2); ++} ++ ++ ++sub usage ++{ ++ print ("Usage: mkknlimg [--dtok] <vmlinux|zImage|bzImage> <outfile>\n"); ++ exit(1); ++} ++ ++sub try_extract ++{ ++ my ($knl, $tmp) = @_; ++ ++ my $ver = `strings "$knl" | grep -a -E "^Linux version [1-9]"`; ++ ++ return undef if (!$ver); ++ ++ chomp($ver); ++ ++ my $res = { ''=>$ver }; ++ my $string_pattern = '^('.join('|', @wanted_strings).')$'; ++ ++ my @matches = `strings \"$knl\" | grep -E \"$string_pattern\"`; ++ foreach my $match (@matches) ++ { ++ chomp($match); ++ $res->{$match} = 1; ++ } ++ ++ my $config_pattern = '^('.join('|', @wanted_config_lines).')=(.*)$'; ++ my $cf1 = 'IKCFG_ST\037\213\010'; ++ my $cf2 = '0123456789'; ++ ++ my $pos = `tr "$cf1\n$cf2" "\n$cf2=" < "$knl" | grep -abo "^$cf2"`; ++ if ($pos) ++ { ++ $pos =~ s/:.*[\r\n]*$//s; ++ $pos += 8; ++ my $err = (system("tail -c+$pos \"$knl\" | zcat > $tmp 2> /dev/null") >> 8); ++ if (($err == 0) || ($err == 2)) ++ { ++ if (open(my $fh, '<', $tmp)) ++ { ++ while (my $line = <$fh>) ++ { ++ chomp($line); ++ $res->{$1} = $2 if ($line =~ /$config_pattern/); ++ } ++ ++ close($fh); ++ } ++ } ++ } ++ ++ return $res; ++} ++ ++ ++sub try_decompress ++{ ++ my ($magic, $subst, $zcat, $idx, $knl, $tmp1, $tmp2) = @_; ++ ++ my $pos = `tr "$magic\n$subst" "\n$subst=" < "$knl" | grep -abo "^$subst"`; ++ if ($pos) ++ { ++ chomp($pos); ++ $pos = (split(/[\r\n]+/, $pos))[$idx]; ++ return undef if (!defined($pos)); ++ $pos =~ s/:.*[\r\n]*$//s; ++ my $cmd = "tail -c+$pos \"$knl\" | $zcat > $tmp2 2> /dev/null"; ++ my $err = (system($cmd) >> 8); ++ return undef if (($err != 0) && ($err != 2)); ++ ++ return try_extract($tmp2, $tmp1); ++ } ++ ++ return undef; ++} ++ ++sub pack_trailer ++{ ++ my ($atoms) = @_; ++ my $trailer = pack('VV', 0, 0); ++ for (my $i = $#$atoms; $i>=0; $i--) ++ { ++ my $atom = $atoms->[$i]; ++ $trailer .= pack('a*x!4Va4', $atom->[1], length($atom->[1]), $atom->[0]); ++ } ++ return $trailer; ++} ++ ++sub config_bool ++{ ++ my ($configs, $wanted) = @_; ++ my $val = $configs->{$wanted} || 'n'; ++ return (($val eq 'y') || ($val eq '1')); ++} +diff -Nur linux-3.18.14/sound/arm/bcm2835.c linux-rpi/sound/arm/bcm2835.c +--- linux-3.18.14/sound/arm/bcm2835.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/arm/bcm2835.c 2015-05-31 14:46:14.233660949 -0500 @@ -0,0 +1,420 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -131628,9 +134696,9 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835.c linux-rpi/sound/arm/bcm2835.c +MODULE_DESCRIPTION("Alsa driver for BCM2835 chip"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:bcm2835_alsa"); -diff -Nur linux-3.18.10/sound/arm/bcm2835-ctl.c linux-rpi/sound/arm/bcm2835-ctl.c ---- linux-3.18.10/sound/arm/bcm2835-ctl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/arm/bcm2835-ctl.c 2015-03-26 11:47:02.428245711 +0100 +diff -Nur linux-3.18.14/sound/arm/bcm2835-ctl.c linux-rpi/sound/arm/bcm2835-ctl.c +--- linux-3.18.14/sound/arm/bcm2835-ctl.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/arm/bcm2835-ctl.c 2015-05-31 14:46:14.233660949 -0500 @@ -0,0 +1,323 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -131955,9 +135023,9 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-ctl.c linux-rpi/sound/arm/bcm2835-ctl. + } + return 0; +} -diff -Nur linux-3.18.10/sound/arm/bcm2835.h linux-rpi/sound/arm/bcm2835.h ---- linux-3.18.10/sound/arm/bcm2835.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/arm/bcm2835.h 2015-03-26 11:47:02.440245724 +0100 +diff -Nur linux-3.18.14/sound/arm/bcm2835.h linux-rpi/sound/arm/bcm2835.h +--- linux-3.18.14/sound/arm/bcm2835.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/arm/bcm2835.h 2015-05-31 14:46:14.233660949 -0500 @@ -0,0 +1,167 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -132126,10 +135194,10 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835.h linux-rpi/sound/arm/bcm2835.h +void bcm2835_audio_flush_playback_buffers(bcm2835_alsa_stream_t * alsa_stream); + +#endif /* __SOUND_ARM_BCM2835_H */ -diff -Nur linux-3.18.10/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm.c ---- linux-3.18.10/sound/arm/bcm2835-pcm.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/arm/bcm2835-pcm.c 2015-03-26 11:47:02.440245724 +0100 -@@ -0,0 +1,552 @@ +diff -Nur linux-3.18.14/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm.c +--- linux-3.18.14/sound/arm/bcm2835-pcm.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/arm/bcm2835-pcm.c 2015-05-31 14:46:14.233660949 -0500 +@@ -0,0 +1,557 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* @@ -132259,11 +135327,14 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm. + audio_info("Alsa open (%d)\n", substream->number); + idx = substream->number; + -+ if (spdif && chip->opened != 0) -+ return -EBUSY; -+ else if (!spdif && (chip->opened & (1 << idx))) -+ return -EBUSY; -+ ++ if (spdif && chip->opened != 0) { ++ err = -EBUSY; ++ goto out; ++ } ++ else if (!spdif && (chip->opened & (1 << idx))) { ++ err = -EBUSY; ++ goto out; ++ } + if (idx > MAX_SUBSTREAMS) { + audio_error + ("substream(%d) device doesn't exist max(%d) substreams allowed\n", @@ -132302,7 +135373,7 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm. + err = bcm2835_audio_open(alsa_stream); + if (err != 0) { + kfree(alsa_stream); -+ return err; ++ goto out; + } + runtime->private_data = alsa_stream; + runtime->private_free = snd_bcm2835_playback_free; @@ -132629,7 +135700,7 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm. + err = + snd_pcm_new(chip->card, "bcm2835 ALSA", 0, MAX_SUBSTREAMS, 0, &pcm); + if (err < 0) -+ return err; ++ goto out; + pcm->private_data = chip; + strcpy(pcm->name, "bcm2835 ALSA"); + chip->pcm = pcm; @@ -132647,6 +135718,7 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm. + (GFP_KERNEL), 64 * 1024, + 64 * 1024); + ++out: + mutex_unlock(&chip->audio_mutex); + audio_info(" .. OUT\n"); + @@ -132666,7 +135738,7 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm. + } + err = snd_pcm_new(chip->card, "bcm2835 ALSA", 1, 1, 0, &pcm); + if (err < 0) -+ return err; ++ goto out; + + pcm->private_data = chip; + strcpy(pcm->name, "bcm2835 IEC958/HDMI"); @@ -132677,14 +135749,15 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm. + snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, + snd_dma_continuous_data (GFP_KERNEL), + 64 * 1024, 64 * 1024); ++out: + mutex_unlock(&chip->audio_mutex); + audio_info(" .. OUT\n"); + + return 0; +} -diff -Nur linux-3.18.10/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vchiq.c ---- linux-3.18.10/sound/arm/bcm2835-vchiq.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/arm/bcm2835-vchiq.c 2015-03-26 11:47:02.440245724 +0100 +diff -Nur linux-3.18.14/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vchiq.c +--- linux-3.18.14/sound/arm/bcm2835-vchiq.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/arm/bcm2835-vchiq.c 2015-05-31 14:46:14.233660949 -0500 @@ -0,0 +1,902 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -133031,7 +136104,7 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vc + + success = vchi_service_close(instance->vchi_handle[i]); + if (success != 0) { -+ LOG_ERR ++ LOG_DBG + ("%s: failed to close VCHI service connection (status=%d)\n", + __func__, success); + } @@ -133201,7 +136274,7 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vc + /* We are expecting a reply from the videocore */ + ret = wait_for_completion_interruptible(&instance->msg_avail_comp); + if (ret) { -+ LOG_ERR("%s: failed on waiting for event (status=%d)\n", ++ LOG_DBG("%s: failed on waiting for event (status=%d)\n", + __func__, success); + goto unlock; + } @@ -133305,7 +136378,7 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vc + /* We are expecting a reply from the videocore */ + ret = wait_for_completion_interruptible(&instance->msg_avail_comp); + if (ret) { -+ LOG_ERR("%s: failed on waiting for event (status=%d)\n", ++ LOG_DBG("%s: failed on waiting for event (status=%d)\n", + __func__, success); + goto unlock; + } @@ -133451,7 +136524,7 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vc + + ret = wait_for_completion_interruptible(&instance->msg_avail_comp); + if (ret) { -+ LOG_ERR("%s: failed on waiting for event (status=%d)\n", ++ LOG_DBG("%s: failed on waiting for event (status=%d)\n", + __func__, success); + goto unlock; + } @@ -133588,9 +136661,9 @@ diff -Nur linux-3.18.10/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vc + +module_param(force_bulk, bool, 0444); +MODULE_PARM_DESC(force_bulk, "Force use of vchiq bulk for audio"); -diff -Nur linux-3.18.10/sound/arm/Kconfig linux-rpi/sound/arm/Kconfig ---- linux-3.18.10/sound/arm/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/sound/arm/Kconfig 2015-03-26 11:47:02.428245711 +0100 +diff -Nur linux-3.18.14/sound/arm/Kconfig linux-rpi/sound/arm/Kconfig +--- linux-3.18.14/sound/arm/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/sound/arm/Kconfig 2015-05-31 14:46:14.233660949 -0500 @@ -39,5 +39,12 @@ Say Y or M if you want to support any AC97 codec attached to the PXA2xx AC97 interface. @@ -133604,9 +136677,9 @@ diff -Nur linux-3.18.10/sound/arm/Kconfig linux-rpi/sound/arm/Kconfig + endif # SND_ARM -diff -Nur linux-3.18.10/sound/arm/Makefile linux-rpi/sound/arm/Makefile ---- linux-3.18.10/sound/arm/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/sound/arm/Makefile 2015-03-26 11:47:02.428245711 +0100 +diff -Nur linux-3.18.14/sound/arm/Makefile linux-rpi/sound/arm/Makefile +--- linux-3.18.14/sound/arm/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/sound/arm/Makefile 2015-05-31 14:46:14.233660949 -0500 @@ -14,3 +14,8 @@ obj-$(CONFIG_SND_PXA2XX_AC97) += snd-pxa2xx-ac97.o @@ -133616,9 +136689,9 @@ diff -Nur linux-3.18.10/sound/arm/Makefile linux-rpi/sound/arm/Makefile +snd-bcm2835-objs := bcm2835.o bcm2835-ctl.o bcm2835-pcm.o bcm2835-vchiq.o + +ccflags-y += -Idrivers/misc/vc04_services -Idrivers/misc/vc04_services/interface/vcos/linuxkernel -D__VCCOREVER__=0x04000000 -diff -Nur linux-3.18.10/sound/arm/vc_vchi_audioserv_defs.h linux-rpi/sound/arm/vc_vchi_audioserv_defs.h ---- linux-3.18.10/sound/arm/vc_vchi_audioserv_defs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/arm/vc_vchi_audioserv_defs.h 2015-03-26 11:47:02.440245724 +0100 +diff -Nur linux-3.18.14/sound/arm/vc_vchi_audioserv_defs.h linux-rpi/sound/arm/vc_vchi_audioserv_defs.h +--- linux-3.18.14/sound/arm/vc_vchi_audioserv_defs.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/arm/vc_vchi_audioserv_defs.h 2015-05-31 14:46:14.233660949 -0500 @@ -0,0 +1,116 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. @@ -133736,9 +136809,9 @@ diff -Nur linux-3.18.10/sound/arm/vc_vchi_audioserv_defs.h linux-rpi/sound/arm/v +} VC_AUDIO_MSG_T; + +#endif // _VC_AUDIO_DEFS_H_ -diff -Nur linux-3.18.10/sound/soc/bcm/bcm2708-i2s.c linux-rpi/sound/soc/bcm/bcm2708-i2s.c ---- linux-3.18.10/sound/soc/bcm/bcm2708-i2s.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/bcm2708-i2s.c 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/bcm2708-i2s.c linux-rpi/sound/soc/bcm/bcm2708-i2s.c +--- linux-3.18.14/sound/soc/bcm/bcm2708-i2s.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/bcm/bcm2708-i2s.c 2015-05-31 14:46:14.493660947 -0500 @@ -0,0 +1,1009 @@ +/* + * ALSA SoC I2S Audio Layer for Broadcom BCM2708 SoC @@ -134749,9 +137822,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/bcm2708-i2s.c linux-rpi/sound/soc/bcm/bcm2 +MODULE_DESCRIPTION("BCM2708 I2S interface"); +MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/bcm/bcm2708-i2s.h linux-rpi/sound/soc/bcm/bcm2708-i2s.h ---- linux-3.18.10/sound/soc/bcm/bcm2708-i2s.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/bcm2708-i2s.h 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/bcm2708-i2s.h linux-rpi/sound/soc/bcm/bcm2708-i2s.h +--- linux-3.18.14/sound/soc/bcm/bcm2708-i2s.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/bcm/bcm2708-i2s.h 2015-05-31 14:46:14.493660947 -0500 @@ -0,0 +1,35 @@ +/* + * I2S configuration for sound cards. @@ -134788,9 +137861,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/bcm2708-i2s.h linux-rpi/sound/soc/bcm/bcm2 +extern void bcm2708_i2s_set_gpio(int gpio); + +#endif -diff -Nur linux-3.18.10/sound/soc/bcm/bcm2835-i2s.c linux-rpi/sound/soc/bcm/bcm2835-i2s.c ---- linux-3.18.10/sound/soc/bcm/bcm2835-i2s.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/bcm2835-i2s.c 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/bcm2835-i2s.c linux-rpi/sound/soc/bcm/bcm2835-i2s.c +--- linux-3.18.14/sound/soc/bcm/bcm2835-i2s.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/sound/soc/bcm/bcm2835-i2s.c 2015-05-31 14:46:14.493660947 -0500 @@ -861,6 +861,7 @@ { .compatible = "brcm,bcm2835-i2s", }, {}, @@ -134799,9 +137872,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/bcm2835-i2s.c linux-rpi/sound/soc/bcm/bcm2 static struct platform_driver bcm2835_i2s_driver = { .probe = bcm2835_i2s_probe, -diff -Nur linux-3.18.10/sound/soc/bcm/hifiberry_amp.c linux-rpi/sound/soc/bcm/hifiberry_amp.c ---- linux-3.18.10/sound/soc/bcm/hifiberry_amp.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/hifiberry_amp.c 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/hifiberry_amp.c linux-rpi/sound/soc/bcm/hifiberry_amp.c +--- linux-3.18.14/sound/soc/bcm/hifiberry_amp.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/bcm/hifiberry_amp.c 2015-05-31 14:46:14.493660947 -0500 @@ -0,0 +1,127 @@ +/* + * ASoC Driver for HifiBerry AMP @@ -134930,9 +138003,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/hifiberry_amp.c linux-rpi/sound/soc/bcm/hi +MODULE_AUTHOR("Sebastian Eickhoff <basti.eickhoff@googlemail.com>"); +MODULE_DESCRIPTION("ASoC driver for HiFiBerry-AMP"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/bcm/hifiberry_dac.c linux-rpi/sound/soc/bcm/hifiberry_dac.c ---- linux-3.18.10/sound/soc/bcm/hifiberry_dac.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/hifiberry_dac.c 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/hifiberry_dac.c linux-rpi/sound/soc/bcm/hifiberry_dac.c +--- linux-3.18.14/sound/soc/bcm/hifiberry_dac.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/bcm/hifiberry_dac.c 2015-05-31 14:46:14.493660947 -0500 @@ -0,0 +1,122 @@ +/* + * ASoC Driver for HifiBerry DAC @@ -135056,9 +138129,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/hifiberry_dac.c linux-rpi/sound/soc/bcm/hi +MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>"); +MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/bcm/hifiberry_dacplus.c linux-rpi/sound/soc/bcm/hifiberry_dacplus.c ---- linux-3.18.10/sound/soc/bcm/hifiberry_dacplus.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/hifiberry_dacplus.c 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/hifiberry_dacplus.c linux-rpi/sound/soc/bcm/hifiberry_dacplus.c +--- linux-3.18.14/sound/soc/bcm/hifiberry_dacplus.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/bcm/hifiberry_dacplus.c 2015-05-31 14:46:14.493660947 -0500 @@ -0,0 +1,141 @@ +/* + * ASoC Driver for HiFiBerry DAC+ @@ -135201,9 +138274,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/hifiberry_dacplus.c linux-rpi/sound/soc/bc +MODULE_AUTHOR("Daniel Matuschek <daniel@hifiberry.com>"); +MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/bcm/hifiberry_digi.c linux-rpi/sound/soc/bcm/hifiberry_digi.c ---- linux-3.18.10/sound/soc/bcm/hifiberry_digi.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/hifiberry_digi.c 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/hifiberry_digi.c linux-rpi/sound/soc/bcm/hifiberry_digi.c +--- linux-3.18.14/sound/soc/bcm/hifiberry_digi.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/bcm/hifiberry_digi.c 2015-05-31 14:46:14.493660947 -0500 @@ -0,0 +1,223 @@ +/* + * ASoC Driver for HifiBerry Digi @@ -135428,9 +138501,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/hifiberry_digi.c linux-rpi/sound/soc/bcm/h +MODULE_AUTHOR("Daniel Matuschek <info@crazy-audio.com>"); +MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/bcm/iqaudio-dac.c linux-rpi/sound/soc/bcm/iqaudio-dac.c ---- linux-3.18.10/sound/soc/bcm/iqaudio-dac.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/iqaudio-dac.c 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/iqaudio-dac.c linux-rpi/sound/soc/bcm/iqaudio-dac.c +--- linux-3.18.14/sound/soc/bcm/iqaudio-dac.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/bcm/iqaudio-dac.c 2015-05-31 14:46:14.493660947 -0500 @@ -0,0 +1,133 @@ +/* + * ASoC Driver for IQaudIO DAC @@ -135565,9 +138638,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/iqaudio-dac.c linux-rpi/sound/soc/bcm/iqau +MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>"); +MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/bcm/Kconfig linux-rpi/sound/soc/bcm/Kconfig ---- linux-3.18.10/sound/soc/bcm/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/Kconfig 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/Kconfig linux-rpi/sound/soc/bcm/Kconfig +--- linux-3.18.14/sound/soc/bcm/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/sound/soc/bcm/Kconfig 2015-05-31 14:46:14.493660947 -0500 @@ -7,3 +7,63 @@ Say Y or M if you want to add support for codecs attached to the BCM2835 I2S interface. You will also need @@ -135632,9 +138705,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/Kconfig linux-rpi/sound/soc/bcm/Kconfig + select SND_SOC_PCM512x_I2C + help + Say Y or M if you want to add support for IQaudIO-DAC. -diff -Nur linux-3.18.10/sound/soc/bcm/Makefile linux-rpi/sound/soc/bcm/Makefile ---- linux-3.18.10/sound/soc/bcm/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/Makefile 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/Makefile linux-rpi/sound/soc/bcm/Makefile +--- linux-3.18.14/sound/soc/bcm/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/sound/soc/bcm/Makefile 2015-05-31 14:46:14.493660947 -0500 @@ -3,3 +3,24 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o @@ -135660,10 +138733,10 @@ diff -Nur linux-3.18.10/sound/soc/bcm/Makefile linux-rpi/sound/soc/bcm/Makefile +obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o +obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o +obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o -diff -Nur linux-3.18.10/sound/soc/bcm/rpi-dac.c linux-rpi/sound/soc/bcm/rpi-dac.c ---- linux-3.18.10/sound/soc/bcm/rpi-dac.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/rpi-dac.c 2015-03-26 11:47:03.340246554 +0100 -@@ -0,0 +1,97 @@ +diff -Nur linux-3.18.14/sound/soc/bcm/rpi-dac.c linux-rpi/sound/soc/bcm/rpi-dac.c +--- linux-3.18.14/sound/soc/bcm/rpi-dac.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/bcm/rpi-dac.c 2015-05-31 14:46:14.493660947 -0500 +@@ -0,0 +1,118 @@ +/* + * ASoC Driver for RPi-DAC. + * @@ -135735,6 +138808,20 @@ diff -Nur linux-3.18.10/sound/soc/bcm/rpi-dac.c linux-rpi/sound/soc/bcm/rpi-dac. + int ret = 0; + + snd_rpi_rpi_dac.dev = &pdev->dev; ++ ++ if (pdev->dev.of_node) { ++ struct device_node *i2s_node; ++ struct snd_soc_dai_link *dai = &snd_rpi_rpi_dac_dai[0]; ++ i2s_node = of_parse_phandle(pdev->dev.of_node, "i2s-controller", 0); ++ ++ if (i2s_node) { ++ dai->cpu_dai_name = NULL; ++ dai->cpu_of_node = i2s_node; ++ dai->platform_name = NULL; ++ dai->platform_of_node = i2s_node; ++ } ++ } ++ + ret = snd_soc_register_card(&snd_rpi_rpi_dac); + if (ret) + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret); @@ -135747,10 +138834,17 @@ diff -Nur linux-3.18.10/sound/soc/bcm/rpi-dac.c linux-rpi/sound/soc/bcm/rpi-dac. + return snd_soc_unregister_card(&snd_rpi_rpi_dac); +} + ++static const struct of_device_id snd_rpi_rpi_dac_of_match[] = { ++ { .compatible = "rpi,rpi-dac", }, ++ {}, ++}; ++MODULE_DEVICE_TABLE(of, snd_rpi_rpi_dac_of_match); ++ +static struct platform_driver snd_rpi_rpi_dac_driver = { + .driver = { + .name = "snd-rpi-dac", + .owner = THIS_MODULE, ++ .of_match_table = snd_rpi_rpi_dac_of_match, + }, + .probe = snd_rpi_rpi_dac_probe, + .remove = snd_rpi_rpi_dac_remove, @@ -135761,9 +138855,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/rpi-dac.c linux-rpi/sound/soc/bcm/rpi-dac. +MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>"); +MODULE_DESCRIPTION("ASoC Driver for RPi-DAC"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/bcm/rpi-proto.c linux-rpi/sound/soc/bcm/rpi-proto.c ---- linux-3.18.10/sound/soc/bcm/rpi-proto.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/bcm/rpi-proto.c 2015-03-26 11:47:03.340246554 +0100 +diff -Nur linux-3.18.14/sound/soc/bcm/rpi-proto.c linux-rpi/sound/soc/bcm/rpi-proto.c +--- linux-3.18.14/sound/soc/bcm/rpi-proto.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/bcm/rpi-proto.c 2015-05-31 14:46:14.493660947 -0500 @@ -0,0 +1,152 @@ +/* + * ASoC driver for PROTO AudioCODEC (with a WM8731) @@ -135917,9 +139011,9 @@ diff -Nur linux-3.18.10/sound/soc/bcm/rpi-proto.c linux-rpi/sound/soc/bcm/rpi-pr +MODULE_AUTHOR("Florian Meier"); +MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to PROTO board (WM8731)"); +MODULE_LICENSE("GPL"); -diff -Nur linux-3.18.10/sound/soc/codecs/Kconfig linux-rpi/sound/soc/codecs/Kconfig ---- linux-3.18.10/sound/soc/codecs/Kconfig 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/sound/soc/codecs/Kconfig 2015-03-26 11:47:03.360246573 +0100 +diff -Nur linux-3.18.14/sound/soc/codecs/Kconfig linux-rpi/sound/soc/codecs/Kconfig +--- linux-3.18.14/sound/soc/codecs/Kconfig 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/sound/soc/codecs/Kconfig 2015-05-31 14:46:14.497660947 -0500 @@ -80,6 +80,8 @@ select SND_SOC_PCM512x_I2C if I2C select SND_SOC_PCM512x_SPI if SPI_MASTER @@ -135960,9 +139054,9 @@ diff -Nur linux-3.18.10/sound/soc/codecs/Kconfig linux-rpi/sound/soc/codecs/Kcon config SND_SOC_TLV320AIC23 tristate -diff -Nur linux-3.18.10/sound/soc/codecs/Makefile linux-rpi/sound/soc/codecs/Makefile ---- linux-3.18.10/sound/soc/codecs/Makefile 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/sound/soc/codecs/Makefile 2015-03-26 11:47:03.360246573 +0100 +diff -Nur linux-3.18.14/sound/soc/codecs/Makefile linux-rpi/sound/soc/codecs/Makefile +--- linux-3.18.14/sound/soc/codecs/Makefile 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/sound/soc/codecs/Makefile 2015-05-31 14:46:14.497660947 -0500 @@ -74,6 +74,8 @@ snd-soc-pcm512x-spi-objs := pcm512x-spi.o snd-soc-rl6231-objs := rl6231.o @@ -135997,10 +139091,10 @@ diff -Nur linux-3.18.10/sound/soc/codecs/Makefile linux-rpi/sound/soc/codecs/Mak obj-$(CONFIG_SND_SOC_TLV320AIC23) += snd-soc-tlv320aic23.o obj-$(CONFIG_SND_SOC_TLV320AIC23_I2C) += snd-soc-tlv320aic23-i2c.o obj-$(CONFIG_SND_SOC_TLV320AIC23_SPI) += snd-soc-tlv320aic23-spi.o -diff -Nur linux-3.18.10/sound/soc/codecs/pcm1794a.c linux-rpi/sound/soc/codecs/pcm1794a.c ---- linux-3.18.10/sound/soc/codecs/pcm1794a.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/codecs/pcm1794a.c 2015-03-26 11:47:03.480246684 +0100 -@@ -0,0 +1,62 @@ +diff -Nur linux-3.18.14/sound/soc/codecs/pcm1794a.c linux-rpi/sound/soc/codecs/pcm1794a.c +--- linux-3.18.14/sound/soc/codecs/pcm1794a.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/codecs/pcm1794a.c 2015-05-31 14:46:14.525660946 -0500 +@@ -0,0 +1,69 @@ +/* + * Driver for the PCM1794A codec + * @@ -136049,12 +139143,19 @@ diff -Nur linux-3.18.10/sound/soc/codecs/pcm1794a.c linux-rpi/sound/soc/codecs/p + return 0; +} + ++static const struct of_device_id pcm1794a_of_match[] = { ++ { .compatible = "ti,pcm1794a", }, ++ { } ++}; ++MODULE_DEVICE_TABLE(of, pcm1794a_of_match); ++ +static struct platform_driver pcm1794a_codec_driver = { + .probe = pcm1794a_probe, + .remove = pcm1794a_remove, + .driver = { + .name = "pcm1794a-codec", + .owner = THIS_MODULE, ++ .of_match_table = of_match_ptr(pcm1794a_of_match), + }, +}; + @@ -136063,9 +139164,9 @@ diff -Nur linux-3.18.10/sound/soc/codecs/pcm1794a.c linux-rpi/sound/soc/codecs/p +MODULE_DESCRIPTION("ASoC PCM1794A codec driver"); +MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/codecs/pcm5102a.c linux-rpi/sound/soc/codecs/pcm5102a.c ---- linux-3.18.10/sound/soc/codecs/pcm5102a.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/codecs/pcm5102a.c 2015-03-26 11:47:03.480246684 +0100 +diff -Nur linux-3.18.14/sound/soc/codecs/pcm5102a.c linux-rpi/sound/soc/codecs/pcm5102a.c +--- linux-3.18.14/sound/soc/codecs/pcm5102a.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/codecs/pcm5102a.c 2015-05-31 14:46:14.525660946 -0500 @@ -0,0 +1,70 @@ +/* + * Driver for the PCM5102A codec @@ -136137,24 +139238,9 @@ diff -Nur linux-3.18.10/sound/soc/codecs/pcm5102a.c linux-rpi/sound/soc/codecs/p +MODULE_DESCRIPTION("ASoC PCM5102A codec driver"); +MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/codecs/pcm512x.c linux-rpi/sound/soc/codecs/pcm512x.c ---- linux-3.18.10/sound/soc/codecs/pcm512x.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/sound/soc/codecs/pcm512x.c 2015-03-26 11:47:03.480246684 +0100 -@@ -261,9 +261,9 @@ - static const struct snd_kcontrol_new pcm512x_controls[] = { - SOC_DOUBLE_R_TLV("Digital Playback Volume", PCM512x_DIGITAL_VOLUME_2, - PCM512x_DIGITAL_VOLUME_3, 0, 255, 1, digital_tlv), --SOC_DOUBLE_TLV("Playback Volume", PCM512x_ANALOG_GAIN_CTRL, -+SOC_DOUBLE_TLV("Analogue Playback Volume", PCM512x_ANALOG_GAIN_CTRL, - PCM512x_LAGN_SHIFT, PCM512x_RAGN_SHIFT, 1, 1, analog_tlv), --SOC_DOUBLE_TLV("Playback Boost Volume", PCM512x_ANALOG_GAIN_BOOST, -+SOC_DOUBLE_TLV("Analogue Playback Boost Volume", PCM512x_ANALOG_GAIN_BOOST, - PCM512x_AGBL_SHIFT, PCM512x_AGBR_SHIFT, 1, 0, boost_tlv), - SOC_DOUBLE("Digital Playback Switch", PCM512x_MUTE, PCM512x_RQML_SHIFT, - PCM512x_RQMR_SHIFT, 1, 1), -diff -Nur linux-3.18.10/sound/soc/codecs/tas5713.c linux-rpi/sound/soc/codecs/tas5713.c ---- linux-3.18.10/sound/soc/codecs/tas5713.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/codecs/tas5713.c 2015-03-26 11:47:03.568246766 +0100 +diff -Nur linux-3.18.14/sound/soc/codecs/tas5713.c linux-rpi/sound/soc/codecs/tas5713.c +--- linux-3.18.14/sound/soc/codecs/tas5713.c 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/codecs/tas5713.c 2015-05-31 14:46:14.533660946 -0500 @@ -0,0 +1,369 @@ +/* + * ASoC Driver for TAS5713 @@ -136525,9 +139611,9 @@ diff -Nur linux-3.18.10/sound/soc/codecs/tas5713.c linux-rpi/sound/soc/codecs/ta +MODULE_AUTHOR("Sebastian Eickhoff <basti.eickhoff@googlemail.com>"); +MODULE_DESCRIPTION("ASoC driver for TAS5713"); +MODULE_LICENSE("GPL v2"); -diff -Nur linux-3.18.10/sound/soc/codecs/tas5713.h linux-rpi/sound/soc/codecs/tas5713.h ---- linux-3.18.10/sound/soc/codecs/tas5713.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-rpi/sound/soc/codecs/tas5713.h 2015-03-26 11:47:03.568246766 +0100 +diff -Nur linux-3.18.14/sound/soc/codecs/tas5713.h linux-rpi/sound/soc/codecs/tas5713.h +--- linux-3.18.14/sound/soc/codecs/tas5713.h 1969-12-31 18:00:00.000000000 -0600 ++++ linux-rpi/sound/soc/codecs/tas5713.h 2015-05-31 14:46:14.533660946 -0500 @@ -0,0 +1,210 @@ +/* + * ASoC Driver for TAS5713 @@ -136739,9 +139825,9 @@ diff -Nur linux-3.18.10/sound/soc/codecs/tas5713.h linux-rpi/sound/soc/codecs/ta + + +#endif /* _TAS5713_H */ -diff -Nur linux-3.18.10/sound/soc/codecs/wm8804.c linux-rpi/sound/soc/codecs/wm8804.c ---- linux-3.18.10/sound/soc/codecs/wm8804.c 2015-03-24 02:05:12.000000000 +0100 -+++ linux-rpi/sound/soc/codecs/wm8804.c 2015-03-26 11:47:03.752246937 +0100 +diff -Nur linux-3.18.14/sound/soc/codecs/wm8804.c linux-rpi/sound/soc/codecs/wm8804.c +--- linux-3.18.14/sound/soc/codecs/wm8804.c 2015-05-20 10:04:50.000000000 -0500 ++++ linux-rpi/sound/soc/codecs/wm8804.c 2015-05-31 14:46:14.565660946 -0500 @@ -278,6 +278,7 @@ blen = 0x1; break; diff --git a/target/arm/bcm28xx/patches/3.18.12/0001-i2s-allow-to-enable-ALSA-MMAP.patch b/target/arm/bcm28xx/patches/3.18.14/0001-i2s-allow-to-enable-ALSA-MMAP.patch index 2df6ea512..2df6ea512 100644 --- a/target/arm/bcm28xx/patches/3.18.12/0001-i2s-allow-to-enable-ALSA-MMAP.patch +++ b/target/arm/bcm28xx/patches/3.18.14/0001-i2s-allow-to-enable-ALSA-MMAP.patch |