brcm2708: refresh patches

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

SVN-Revision: 44433
owl
John Crispin 2015-02-13 07:38:27 +00:00
parent 2dbcf5e91f
commit 9b74de00f7
114 changed files with 645 additions and 2950 deletions

View File

@ -83,8 +83,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
create mode 100644 arch/arm/mach-bcm2708/vc_mem.c
create mode 100644 arch/arm/mach-bcm2708/vcio.c
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 89c4b5c..4cedaf2 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -381,6 +381,22 @@ config ARCH_AT91
@ -118,8 +116,6 @@ index 89c4b5c..4cedaf2 100644
source "arch/arm/mach-zynq/Kconfig"
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index d8f6a2e..526e50d 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -985,6 +985,14 @@ choice
@ -137,11 +133,9 @@ index d8f6a2e..526e50d 100644
endchoice
config DEBUG_EXYNOS_UART
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 034a949..fea9213 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -146,6 +146,7 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000
@@ -151,6 +151,7 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x003080
machine-$(CONFIG_ARCH_AT91) += at91
machine-$(CONFIG_ARCH_AXXIA) += axxia
machine-$(CONFIG_ARCH_BCM) += bcm
@ -149,9 +143,6 @@ index 034a949..fea9213 100644
machine-$(CONFIG_ARCH_BERLIN) += berlin
machine-$(CONFIG_ARCH_CLPS711X) += clps711x
machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
new file mode 100644
index 0000000..8950e53
--- /dev/null
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -0,0 +1,464 @@
@ -619,8 +610,6 @@ index 0000000..8950e53
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index fe972a2..f4f3bfd 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -166,6 +166,16 @@ void arch_cpu_idle_dead(void)
@ -640,9 +629,6 @@ index fe972a2..f4f3bfd 100644
/*
* Called by kexec, immediately prior to machine_kexec().
*
diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig
new file mode 100644
index 0000000..1f11478
--- /dev/null
+++ b/arch/arm/mach-bcm2708/Kconfig
@@ -0,0 +1,26 @@
@ -672,9 +658,6 @@ index 0000000..1f11478
+ Do not allow ARM to use GPU's L2 cache. Requires disable_l2cache in config.txt.
+
+endmenu
diff --git a/arch/arm/mach-bcm2708/Makefile b/arch/arm/mach-bcm2708/Makefile
new file mode 100644
index 0000000..c76f39bc
--- /dev/null
+++ b/arch/arm/mach-bcm2708/Makefile
@@ -0,0 +1,6 @@
@ -684,18 +667,12 @@ index 0000000..c76f39bc
+
+obj-$(CONFIG_MACH_BCM2708) += clock.o bcm2708.o armctrl.o vcio.o power.o dma.o
+obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
diff --git a/arch/arm/mach-bcm2708/Makefile.boot b/arch/arm/mach-bcm2708/Makefile.boot
new file mode 100644
index 0000000..67039c3
--- /dev/null
+++ b/arch/arm/mach-bcm2708/Makefile.boot
@@ -0,0 +1,3 @@
+ zreladdr-y := 0x00008000
+params_phys-y := 0x00000100
+initrd_phys-y := 0x00800000
diff --git a/arch/arm/mach-bcm2708/armctrl.c b/arch/arm/mach-bcm2708/armctrl.c
new file mode 100644
index 0000000..ef1c8d5
--- /dev/null
+++ b/arch/arm/mach-bcm2708/armctrl.c
@@ -0,0 +1,208 @@
@ -907,9 +884,6 @@ index 0000000..ef1c8d5
+ armctrl_pm_register(base, irq_start, resume_sources);
+ return 0;
+}
diff --git a/arch/arm/mach-bcm2708/armctrl.h b/arch/arm/mach-bcm2708/armctrl.h
new file mode 100644
index 0000000..0aa916e
--- /dev/null
+++ b/arch/arm/mach-bcm2708/armctrl.h
@@ -0,0 +1,27 @@
@ -940,9 +914,6 @@ index 0000000..0aa916e
+ u32 armctrl_sources, u32 resume_sources);
+
+#endif
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
new file mode 100644
index 0000000..9b4e709
--- /dev/null
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -0,0 +1,662 @@
@ -1608,9 +1579,6 @@ index 0000000..9b4e709
+module_param(disk_led_gpio, uint, 0644);
+module_param(disk_led_active_low, uint, 0644);
+module_param(reboot_part, uint, 0644);
diff --git a/arch/arm/mach-bcm2708/bcm2708.h b/arch/arm/mach-bcm2708/bcm2708.h
new file mode 100644
index 0000000..e339a93
--- /dev/null
+++ b/arch/arm/mach-bcm2708/bcm2708.h
@@ -0,0 +1,49 @@
@ -1663,9 +1631,6 @@ index 0000000..e339a93
+}
+
+#endif
diff --git a/arch/arm/mach-bcm2708/clock.c b/arch/arm/mach-bcm2708/clock.c
new file mode 100644
index 0000000..4fc556e
--- /dev/null
+++ b/arch/arm/mach-bcm2708/clock.c
@@ -0,0 +1,61 @@
@ -1730,9 +1695,6 @@ index 0000000..4fc556e
+ return -EIO;
+}
+EXPORT_SYMBOL(clk_set_rate);
diff --git a/arch/arm/mach-bcm2708/clock.h b/arch/arm/mach-bcm2708/clock.h
new file mode 100644
index 0000000..5f9d725
--- /dev/null
+++ b/arch/arm/mach-bcm2708/clock.h
@@ -0,0 +1,24 @@
@ -1760,9 +1722,6 @@ index 0000000..5f9d725
+struct clk {
+ unsigned long rate;
+};
diff --git a/arch/arm/mach-bcm2708/dma.c b/arch/arm/mach-bcm2708/dma.c
new file mode 100644
index 0000000..51d147a
--- /dev/null
+++ b/arch/arm/mach-bcm2708/dma.c
@@ -0,0 +1,399 @@
@ -2165,9 +2124,6 @@ index 0000000..51d147a
+MODULE_LICENSE("GPL");
+
+MODULE_PARM_DESC(dmachans, "Bitmap of DMA channels available to the ARM");
diff --git a/arch/arm/mach-bcm2708/include/mach/arm_control.h b/arch/arm/mach-bcm2708/include/mach/arm_control.h
new file mode 100644
index 0000000..a82bb92
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/arm_control.h
@@ -0,0 +1,419 @@
@ -2590,9 +2546,6 @@ index 0000000..a82bb92
+#define AJBTDO HW_REGISTER_RW(AJB_BASE+0x0c)
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/arm_power.h b/arch/arm/mach-bcm2708/include/mach/arm_power.h
new file mode 100644
index 0000000..d3bf245
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/arm_power.h
@@ -0,0 +1,62 @@
@ -2658,9 +2611,6 @@ index 0000000..d3bf245
+};
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/clkdev.h b/arch/arm/mach-bcm2708/include/mach/clkdev.h
new file mode 100644
index 0000000..04b37a8
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/clkdev.h
@@ -0,0 +1,7 @@
@ -2671,9 +2621,6 @@ index 0000000..04b37a8
+#define __clk_put(clk) do { } while (0)
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/debug-macro.S b/arch/arm/mach-bcm2708/include/mach/debug-macro.S
new file mode 100644
index 0000000..b24304a
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/debug-macro.S
@@ -0,0 +1,22 @@
@ -2699,9 +2646,6 @@ index 0000000..b24304a
+ .endm
+
+#include <debug/pl01x.S>
diff --git a/arch/arm/mach-bcm2708/include/mach/dma.h b/arch/arm/mach-bcm2708/include/mach/dma.h
new file mode 100644
index 0000000..f2568d4
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/dma.h
@@ -0,0 +1,88 @@
@ -2793,9 +2737,6 @@ index 0000000..f2568d4
+
+
+#endif /* _MACH_BCM2708_DMA_H */
diff --git a/arch/arm/mach-bcm2708/include/mach/entry-macro.S b/arch/arm/mach-bcm2708/include/mach/entry-macro.S
new file mode 100644
index 0000000..79b62d9
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/entry-macro.S
@@ -0,0 +1,69 @@
@ -2868,9 +2809,6 @@ index 0000000..79b62d9
+1020: @ EQ will be set if no irqs pending
+
+ .endm
diff --git a/arch/arm/mach-bcm2708/include/mach/frc.h b/arch/arm/mach-bcm2708/include/mach/frc.h
new file mode 100644
index 0000000..dd51e07
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/frc.h
@@ -0,0 +1,38 @@
@ -2912,9 +2850,6 @@ index 0000000..dd51e07
+extern unsigned long long frc_clock_ticks63(void);
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/hardware.h b/arch/arm/mach-bcm2708/include/mach/hardware.h
new file mode 100644
index 0000000..c2954e8
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/hardware.h
@@ -0,0 +1,28 @@
@ -2946,9 +2881,6 @@ index 0000000..c2954e8
+#include <mach/platform.h>
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/io.h b/arch/arm/mach-bcm2708/include/mach/io.h
new file mode 100644
index 0000000..e6eb84d
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/io.h
@@ -0,0 +1,27 @@
@ -2979,9 +2911,6 @@ index 0000000..e6eb84d
+#define __io(a) __typesafe_io(a)
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/irqs.h b/arch/arm/mach-bcm2708/include/mach/irqs.h
new file mode 100644
index 0000000..3a88a1a
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/irqs.h
@@ -0,0 +1,196 @@
@ -3181,9 +3110,6 @@ index 0000000..3a88a1a
+#define NR_IRQS (BCM2708_ALLOC_IRQS+FREE_IRQS)
+
+#endif /* _BCM2708_IRQS_H_ */
diff --git a/arch/arm/mach-bcm2708/include/mach/memory.h b/arch/arm/mach-bcm2708/include/mach/memory.h
new file mode 100644
index 0000000..7548a52
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/memory.h
@@ -0,0 +1,57 @@
@ -3244,9 +3170,6 @@ index 0000000..7548a52
+#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET))
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/platform.h b/arch/arm/mach-bcm2708/include/mach/platform.h
new file mode 100644
index 0000000..2e7e1bb
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/platform.h
@@ -0,0 +1,228 @@
@ -3478,9 +3401,6 @@ index 0000000..2e7e1bb
+#endif
+
+/* END */
diff --git a/arch/arm/mach-bcm2708/include/mach/power.h b/arch/arm/mach-bcm2708/include/mach/power.h
new file mode 100644
index 0000000..52b3b02
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/power.h
@@ -0,0 +1,26 @@
@ -3510,9 +3430,6 @@ index 0000000..52b3b02
+extern int bcm_power_close(BCM_POWER_HANDLE_T handle);
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/system.h b/arch/arm/mach-bcm2708/include/mach/system.h
new file mode 100644
index 0000000..2d0b821
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/system.h
@@ -0,0 +1,38 @@
@ -3554,9 +3471,6 @@ index 0000000..2d0b821
+}
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/timex.h b/arch/arm/mach-bcm2708/include/mach/timex.h
new file mode 100644
index 0000000..64a660c
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/timex.h
@@ -0,0 +1,23 @@
@ -3583,9 +3497,6 @@ index 0000000..64a660c
+ */
+
+#define CLOCK_TICK_RATE (1000000)
diff --git a/arch/arm/mach-bcm2708/include/mach/uncompress.h b/arch/arm/mach-bcm2708/include/mach/uncompress.h
new file mode 100644
index 0000000..d634813
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/uncompress.h
@@ -0,0 +1,84 @@
@ -3673,9 +3584,6 @@ index 0000000..d634813
+ * nothing to do
+ */
+#define arch_decomp_wdog()
diff --git a/arch/arm/mach-bcm2708/include/mach/vc_mem.h b/arch/arm/mach-bcm2708/include/mach/vc_mem.h
new file mode 100644
index 0000000..4a4a338
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vc_mem.h
@@ -0,0 +1,35 @@
@ -3714,9 +3622,6 @@ index 0000000..4a4a338
+#endif
+
+#endif /* VC_MEM_H */
diff --git a/arch/arm/mach-bcm2708/include/mach/vcio.h b/arch/arm/mach-bcm2708/include/mach/vcio.h
new file mode 100644
index 0000000..8e11d67
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vcio.h
@@ -0,0 +1,165 @@
@ -3885,9 +3790,6 @@ index 0000000..8e11d67
+#define DEVICE_FILE_NAME "vcio"
+
+#endif
diff --git a/arch/arm/mach-bcm2708/include/mach/vmalloc.h b/arch/arm/mach-bcm2708/include/mach/vmalloc.h
new file mode 100644
index 0000000..502c617
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vmalloc.h
@@ -0,0 +1,20 @@
@ -3911,9 +3813,6 @@ index 0000000..502c617
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#define VMALLOC_END (0xe8000000)
diff --git a/arch/arm/mach-bcm2708/power.c b/arch/arm/mach-bcm2708/power.c
new file mode 100644
index 0000000..2696be9
--- /dev/null
+++ b/arch/arm/mach-bcm2708/power.c
@@ -0,0 +1,197 @@
@ -4114,9 +4013,6 @@ index 0000000..2696be9
+MODULE_AUTHOR("Phil Elwell");
+MODULE_DESCRIPTION("Interface to BCM2708 power management");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-bcm2708/vc_mem.c b/arch/arm/mach-bcm2708/vc_mem.c
new file mode 100644
index 0000000..2982af7
--- /dev/null
+++ b/arch/arm/mach-bcm2708/vc_mem.c
@@ -0,0 +1,431 @@
@ -4551,9 +4447,6 @@ index 0000000..2982af7
+module_param(phys_addr, uint, 0644);
+module_param(mem_size, uint, 0644);
+module_param(mem_base, uint, 0644);
diff --git a/arch/arm/mach-bcm2708/vcio.c b/arch/arm/mach-bcm2708/vcio.c
new file mode 100644
index 0000000..5e43e85
--- /dev/null
+++ b/arch/arm/mach-bcm2708/vcio.c
@@ -0,0 +1,474 @@
@ -5031,8 +4924,6 @@ index 0000000..5e43e85
+MODULE_DESCRIPTION("ARM I/O to VideoCore processor");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:bcm-mbox");
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index 7eb94e6..7b58dae 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -358,7 +358,7 @@ config CPU_PJ4B
@ -5044,8 +4935,6 @@ index 7eb94e6..7b58dae 100644
select CPU_32v6
select CPU_ABRT_EV6
select CPU_CACHE_V6
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S
index d0390f4..a042de8 100644
--- a/arch/arm/mm/proc-v6.S
+++ b/arch/arm/mm/proc-v6.S
@@ -73,10 +73,19 @@ ENDPROC(cpu_v6_reset)
@ -5071,8 +4960,6 @@ index d0390f4..a042de8 100644
ret lr
ENTRY(cpu_v6_dcache_clean_area)
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index a10297d..c9ddd87 100644
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -522,6 +522,7 @@ torbreck MACH_TORBRECK TORBRECK 3090
@ -5083,8 +4970,6 @@ index a10297d..c9ddd87 100644
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 --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index 02016fc..fed2b92 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -84,7 +84,7 @@ struct vendor_data {
@ -5096,8 +4981,6 @@ index 02016fc..fed2b92 100644
}
static struct vendor_data vendor_arm = {
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index df0c153..c226105 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -290,6 +290,7 @@ struct mmc_host {
@ -5108,8 +4991,6 @@ index df0c153..c226105 100644
mmc_pm_flag_t pm_caps; /* supported pm features */
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h
index dba793e..9300f87 100644
--- a/include/linux/mmc/sdhci.h
+++ b/include/linux/mmc/sdhci.h
@@ -130,6 +130,7 @@ struct sdhci_host {
@ -5120,6 +5001,3 @@ index dba793e..9300f87 100644
unsigned int version; /* SDHCI spec. version */
--
1.8.3.2

View File

@ -45,8 +45,6 @@ Issue: linux #760
create mode 100644 arch/arm/mach-bcm2708/include/mach/gpio.h
create mode 100644 include/linux/platform_data/bcm2708.h
diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig
index 1f11478..9355841 100644
--- a/arch/arm/mach-bcm2708/Kconfig
+++ b/arch/arm/mach-bcm2708/Kconfig
@@ -9,6 +9,14 @@ config MACH_BCM2708
@ -64,8 +62,6 @@ index 1f11478..9355841 100644
config BCM2708_VCMEM
bool "Videocore Memory"
depends on MACH_BCM2708
diff --git a/arch/arm/mach-bcm2708/Makefile b/arch/arm/mach-bcm2708/Makefile
index c76f39bc..a722f3f 100644
--- a/arch/arm/mach-bcm2708/Makefile
+++ b/arch/arm/mach-bcm2708/Makefile
@@ -3,4 +3,5 @@
@ -74,11 +70,9 @@ index c76f39bc..a722f3f 100644
obj-$(CONFIG_MACH_BCM2708) += clock.o 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 --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 9b4e709..7503649 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -331,6 +331,31 @@ static struct platform_device bcm2708_vcio_device = {
@@ -331,6 +331,31 @@ static struct platform_device bcm2708_vc
},
};
@ -120,9 +114,6 @@ index 9b4e709..7503649 100644
bcm_register_device(&bcm2708_systemtimer_device);
bcm_register_device(&bcm2708_fb_device);
bcm_register_device(&bcm2708_usb_device);
diff --git a/arch/arm/mach-bcm2708/bcm2708_gpio.c b/arch/arm/mach-bcm2708/bcm2708_gpio.c
new file mode 100644
index 0000000..c1e9254
--- /dev/null
+++ b/arch/arm/mach-bcm2708/bcm2708_gpio.c
@@ -0,0 +1,426 @@
@ -552,9 +543,6 @@ index 0000000..c1e9254
+
+MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-bcm2708/include/mach/gpio.h b/arch/arm/mach-bcm2708/include/mach/gpio.h
new file mode 100644
index 0000000..7965a97
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/gpio.h
@@ -0,0 +1,17 @@
@ -575,9 +563,6 @@ index 0000000..7965a97
+#define irq_to_gpio(x) ((x) - GPIO_IRQ_START)
+
+#endif
diff --git a/include/linux/platform_data/bcm2708.h b/include/linux/platform_data/bcm2708.h
new file mode 100644
index 0000000..fb69624
--- /dev/null
+++ b/include/linux/platform_data/bcm2708.h
@@ -0,0 +1,23 @@
@ -604,6 +589,3 @@ index 0000000..fb69624
+ bcm2708_gpio_pull_t value);
+
+#endif
--
1.8.3.2

View File

@ -10,9 +10,6 @@ No modules are needed and it includes all Pi specific drivers
1 file changed, 197 insertions(+)
create mode 100644 arch/arm/configs/bcmrpi_quick_defconfig
diff --git a/arch/arm/configs/bcmrpi_quick_defconfig b/arch/arm/configs/bcmrpi_quick_defconfig
new file mode 100644
index 0000000..e5efe75
--- /dev/null
+++ b/arch/arm/configs/bcmrpi_quick_defconfig
@@ -0,0 +1,197 @@
@ -213,6 +210,3 @@ index 0000000..e5efe75
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
--
1.8.3.2

View File

@ -137,8 +137,6 @@ Signed-off-by: Kari Suvanto <karis79@gmail.com>
create mode 100644 drivers/usb/host/dwc_otg/test/test_mod_param.pl
create mode 100644 drivers/usb/host/dwc_otg/test/test_sysfs.pl
diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
index d7be717..f48b630 100644
--- a/drivers/usb/Makefile
+++ b/drivers/usb/Makefile
@@ -24,6 +24,7 @@ obj-$(CONFIG_USB_U132_HCD) += host/
@ -149,11 +147,9 @@ index d7be717..f48b630 100644
obj-$(CONFIG_USB_IMX21_HCD) += host/
obj-$(CONFIG_USB_FSL_MPH_DR_OF) += host/
obj-$(CONFIG_USB_FUSBH200_HCD) += host/
diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c
index 358ca8d..abaac7c 100644
--- a/drivers/usb/core/generic.c
+++ b/drivers/usb/core/generic.c
@@ -152,6 +152,7 @@ int usb_choose_configuration(struct usb_device *udev)
@@ -152,6 +152,7 @@ int usb_choose_configuration(struct usb_
dev_warn(&udev->dev,
"no configuration chosen from %d choice%s\n",
num_configs, plural(num_configs));
@ -161,8 +157,6 @@ index 358ca8d..abaac7c 100644
}
return i;
}
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index f7b7713..5423d18 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -1889,6 +1889,85 @@ free_interfaces:
@ -251,8 +245,6 @@ index f7b7713..5423d18 100644
/* Now that the interfaces are installed, re-enable LPM. */
usb_unlocked_enable_lpm(dev);
diff --git a/drivers/usb/core/otg_whitelist.h b/drivers/usb/core/otg_whitelist.h
index a6315ab..165dd53 100644
--- a/drivers/usb/core/otg_whitelist.h
+++ b/drivers/usb/core/otg_whitelist.h
@@ -19,33 +19,82 @@
@ -344,7 +336,7 @@ index a6315ab..165dd53 100644
static int is_targeted(struct usb_device *dev)
{
struct usb_device_id *id = whitelist_table;
@@ -95,16 +144,57 @@ static int is_targeted(struct usb_device *dev)
@@ -95,16 +144,57 @@ static int is_targeted(struct usb_device
continue;
return 1;
@ -367,15 +359,11 @@ index a6315ab..165dd53 100644
+ if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
+ id->idVendor != le16_to_cpu(dev->descriptor.idVendor))
+ continue;
+
+ if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) &&
+ id->idProduct != le16_to_cpu(dev->descriptor.idProduct))
+ continue;
- /* OTG MESSAGE: report errors here, customize to match your product */
- dev_err(&dev->dev, "device v%04x p%04x is not supported\n",
- le16_to_cpu(dev->descriptor.idVendor),
- le16_to_cpu(dev->descriptor.idProduct));
+
+ /* No need to test id->bcdDevice_lo != 0, since 0 is never
+ greater than any unsigned number. */
+ if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) &&
@ -397,20 +385,21 @@ index a6315ab..165dd53 100644
+ if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
+ (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol))
+ continue;
+
+ return 1;
+ }
+ }
+
- /* OTG MESSAGE: report errors here, customize to match your product */
- dev_err(&dev->dev, "device v%04x p%04x is not supported\n",
- le16_to_cpu(dev->descriptor.idVendor),
- le16_to_cpu(dev->descriptor.idProduct));
+ /* add other match criteria here ... */
+ report_errors(dev);
return 0;
}
diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c
new file mode 100644
index 0000000..a896d73
--- /dev/null
+++ b/drivers/usb/gadget/file_storage.c
@@ -0,0 +1,3676 @@
@ -4090,8 +4079,6 @@ index 0000000..a896d73
+ kref_put(&fsg->ref, fsg_release);
+}
+module_exit(fsg_cleanup);
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index a3ca137..4937c9c 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -744,6 +744,19 @@ config USB_HWA_HCD
@ -4114,8 +4101,6 @@ index a3ca137..4937c9c 100644
config USB_IMX21_HCD
tristate "i.MX21 HCD support"
depends on ARM && ARCH_MXC
diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
index 348c243..7ca1836 100644
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
@@ -71,6 +71,8 @@ obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o
@ -4127,9 +4112,6 @@ index 348c243..7ca1836 100644
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 --git a/drivers/usb/host/dwc_common_port/Makefile b/drivers/usb/host/dwc_common_port/Makefile
new file mode 100644
index 0000000..f10d466
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/Makefile
@@ -0,0 +1,58 @@
@ -4191,9 +4173,6 @@ index 0000000..f10d466
+
+clean:
+ rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/
diff --git a/drivers/usb/host/dwc_common_port/Makefile.fbsd b/drivers/usb/host/dwc_common_port/Makefile.fbsd
new file mode 100644
index 0000000..45db991
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/Makefile.fbsd
@@ -0,0 +1,17 @@
@ -4214,9 +4193,6 @@ index 0000000..45db991
+ dwc_common_fbsd.c dwc_mem.c
+
+.include <bsd.kmod.mk>
diff --git a/drivers/usb/host/dwc_common_port/Makefile.linux b/drivers/usb/host/dwc_common_port/Makefile.linux
new file mode 100644
index 0000000..0cef7b4
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/Makefile.linux
@@ -0,0 +1,49 @@
@ -4269,9 +4245,6 @@ index 0000000..0cef7b4
+
+clean:
+ rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/
diff --git a/drivers/usb/host/dwc_common_port/changes.txt b/drivers/usb/host/dwc_common_port/changes.txt
new file mode 100644
index 0000000..f6839f9
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/changes.txt
@@ -0,0 +1,174 @@
@ -4449,9 +4422,6 @@ index 0000000..f6839f9
+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 --git a/drivers/usb/host/dwc_common_port/doc/doxygen.cfg b/drivers/usb/host/dwc_common_port/doc/doxygen.cfg
new file mode 100644
index 0000000..89aa887
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/doc/doxygen.cfg
@@ -0,0 +1,270 @@
@ -4725,9 +4695,6 @@ index 0000000..89aa887
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
diff --git a/drivers/usb/host/dwc_common_port/dwc_cc.c b/drivers/usb/host/dwc_common_port/dwc_cc.c
new file mode 100644
index 0000000..5ec2ae2
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_cc.c
@@ -0,0 +1,532 @@
@ -5263,9 +5230,6 @@ index 0000000..5ec2ae2
+}
+
+#endif /* DWC_CCLIB */
diff --git a/drivers/usb/host/dwc_common_port/dwc_cc.h b/drivers/usb/host/dwc_common_port/dwc_cc.h
new file mode 100644
index 0000000..f86e6f2
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_cc.h
@@ -0,0 +1,224 @@
@ -5493,9 +5457,6 @@ index 0000000..f86e6f2
+#endif
+
+#endif /* _DWC_CC_H_ */
diff --git a/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c b/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c
new file mode 100644
index 0000000..6dd04b5
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c
@@ -0,0 +1,1308 @@
@ -6807,9 +6768,6 @@ index 0000000..6dd04b5
+{
+ return wq->pending;
+}
diff --git a/drivers/usb/host/dwc_common_port/dwc_common_linux.c b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
new file mode 100644
index 0000000..1668f10
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
@@ -0,0 +1,1429 @@
@ -8242,9 +8200,6 @@ index 0000000..1668f10
+MODULE_LICENSE ("GPL");
+
+#endif /* DWC_LIBMODULE */
diff --git a/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c b/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c
new file mode 100644
index 0000000..49b07e1
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c
@@ -0,0 +1,1275 @@
@ -9523,9 +9478,6 @@ index 0000000..49b07e1
+{
+ return wq->pending;
+}
diff --git a/drivers/usb/host/dwc_common_port/dwc_crypto.c b/drivers/usb/host/dwc_common_port/dwc_crypto.c
new file mode 100644
index 0000000..3b03532
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_crypto.c
@@ -0,0 +1,308 @@
@ -9837,9 +9789,6 @@ index 0000000..3b03532
+}
+
+#endif /* DWC_CRYPTOLIB */
diff --git a/drivers/usb/host/dwc_common_port/dwc_crypto.h b/drivers/usb/host/dwc_common_port/dwc_crypto.h
new file mode 100644
index 0000000..26fcddc
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_crypto.h
@@ -0,0 +1,111 @@
@ -9954,9 +9903,6 @@ index 0000000..26fcddc
+#endif
+
+#endif /* _DWC_CRYPTO_H_ */
diff --git a/drivers/usb/host/dwc_common_port/dwc_dh.c b/drivers/usb/host/dwc_common_port/dwc_dh.c
new file mode 100644
index 0000000..2b429a3
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_dh.c
@@ -0,0 +1,291 @@
@ -10251,9 +10197,6 @@ index 0000000..2b429a3
+#endif /* !CONFIG_MACH_IPMATE */
+
+#endif /* DWC_CRYPTOLIB */
diff --git a/drivers/usb/host/dwc_common_port/dwc_dh.h b/drivers/usb/host/dwc_common_port/dwc_dh.h
new file mode 100644
index 0000000..25c1cc0
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_dh.h
@@ -0,0 +1,106 @@
@ -10363,9 +10306,6 @@ index 0000000..25c1cc0
+#endif
+
+#endif /* _DWC_DH_H_ */
diff --git a/drivers/usb/host/dwc_common_port/dwc_list.h b/drivers/usb/host/dwc_common_port/dwc_list.h
new file mode 100644
index 0000000..89cc325
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_list.h
@@ -0,0 +1,594 @@
@ -10963,9 +10903,6 @@ index 0000000..89cc325
+#endif
+
+#endif /* _DWC_LIST_H_ */
diff --git a/drivers/usb/host/dwc_common_port/dwc_mem.c b/drivers/usb/host/dwc_common_port/dwc_mem.c
new file mode 100644
index 0000000..ad645ff
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_mem.c
@@ -0,0 +1,245 @@
@ -11214,9 +11151,6 @@ index 0000000..ad645ff
+}
+
+#endif /* DWC_DEBUG_MEMORY */
diff --git a/drivers/usb/host/dwc_common_port/dwc_modpow.c b/drivers/usb/host/dwc_common_port/dwc_modpow.c
new file mode 100644
index 0000000..2004538
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_modpow.c
@@ -0,0 +1,636 @@
@ -11856,9 +11790,6 @@ index 0000000..2004538
+#endif /* CONFIG_MACH_IPMATE */
+
+#endif /*DWC_CRYPTOLIB */
diff --git a/drivers/usb/host/dwc_common_port/dwc_modpow.h b/drivers/usb/host/dwc_common_port/dwc_modpow.h
new file mode 100644
index 0000000..64f00c2
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_modpow.h
@@ -0,0 +1,34 @@
@ -11896,9 +11827,6 @@ index 0000000..64f00c2
+#endif
+
+#endif /* _LINUX_BIGNUM_H */
diff --git a/drivers/usb/host/dwc_common_port/dwc_notifier.c b/drivers/usb/host/dwc_common_port/dwc_notifier.c
new file mode 100644
index 0000000..8b3772a
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_notifier.c
@@ -0,0 +1,319 @@
@ -12221,9 +12149,6 @@ index 0000000..8b3772a
+}
+
+#endif /* DWC_NOTIFYLIB */
diff --git a/drivers/usb/host/dwc_common_port/dwc_notifier.h b/drivers/usb/host/dwc_common_port/dwc_notifier.h
new file mode 100644
index 0000000..4a8cdfe
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_notifier.h
@@ -0,0 +1,122 @@
@ -12349,9 +12274,6 @@ index 0000000..4a8cdfe
+#endif
+
+#endif /* __DWC_NOTIFIER_H__ */
diff --git a/drivers/usb/host/dwc_common_port/dwc_os.h b/drivers/usb/host/dwc_common_port/dwc_os.h
new file mode 100644
index 0000000..8117731
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_os.h
@@ -0,0 +1,1274 @@
@ -13629,9 +13551,6 @@ index 0000000..8117731
+#endif
+
+#endif /* _DWC_OS_H_ */
diff --git a/drivers/usb/host/dwc_common_port/usb.h b/drivers/usb/host/dwc_common_port/usb.h
new file mode 100644
index 0000000..27bda82
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/usb.h
@@ -0,0 +1,946 @@
@ -14581,9 +14500,6 @@ index 0000000..27bda82
+#endif
+
+#endif /* _USB_H_ */
diff --git a/drivers/usb/host/dwc_otg/Makefile b/drivers/usb/host/dwc_otg/Makefile
new file mode 100644
index 0000000..236c47c
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/Makefile
@@ -0,0 +1,80 @@
@ -14667,9 +14583,6 @@ index 0000000..236c47c
+ rm -rf *.o *.ko .*cmd *.mod.c .tmp_versions Module.symvers
+
+endif
diff --git a/drivers/usb/host/dwc_otg/doc/doxygen.cfg b/drivers/usb/host/dwc_otg/doc/doxygen.cfg
new file mode 100644
index 0000000..712b057
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/doc/doxygen.cfg
@@ -0,0 +1,224 @@
@ -14897,9 +14810,6 @@ index 0000000..712b057
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
diff --git a/drivers/usb/host/dwc_otg/dummy_audio.c b/drivers/usb/host/dwc_otg/dummy_audio.c
new file mode 100644
index 0000000..225decf
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dummy_audio.c
@@ -0,0 +1,1575 @@
@ -16478,9 +16388,6 @@ index 0000000..225decf
+ remove_proc_entry("isoc_test", NULL);
+}
+module_exit (cleanup);
diff --git a/drivers/usb/host/dwc_otg/dwc_cfi_common.h b/drivers/usb/host/dwc_otg/dwc_cfi_common.h
new file mode 100644
index 0000000..7770e20
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_cfi_common.h
@@ -0,0 +1,142 @@
@ -16626,9 +16533,6 @@ index 0000000..7770e20
+typedef struct cfi_string cfi_string_t;
+
+#endif
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_adp.c b/drivers/usb/host/dwc_otg/dwc_otg_adp.c
new file mode 100644
index 0000000..ce0618d
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_adp.c
@@ -0,0 +1,854 @@
@ -17486,9 +17390,6 @@ index 0000000..ce0618d
+#endif
+ return 1;
+}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_adp.h b/drivers/usb/host/dwc_otg/dwc_otg_adp.h
new file mode 100644
index 0000000..4110b25
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_adp.h
@@ -0,0 +1,80 @@
@ -17572,9 +17473,6 @@ index 0000000..4110b25
+extern int32_t dwc_otg_adp_handle_srp_intr(dwc_otg_core_if_t * core_if);
+
+#endif //__DWC_OTG_ADP_H__
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_attr.c b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
new file mode 100644
index 0000000..fab2961
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
@@ -0,0 +1,1210 @@
@ -18788,9 +18686,6 @@ index 0000000..fab2961
+ device_remove_file(&dev->dev, &dev_attr_sleep_status);
+#endif
+}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_attr.h b/drivers/usb/host/dwc_otg/dwc_otg_attr.h
new file mode 100644
index 0000000..e10b67f
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_attr.h
@@ -0,0 +1,89 @@
@ -18883,9 +18778,6 @@ index 0000000..e10b67f
+#endif
+ );
+#endif
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cfi.c b/drivers/usb/host/dwc_otg/dwc_otg_cfi.c
new file mode 100644
index 0000000..bbb3d32
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cfi.c
@@ -0,0 +1,1876 @@
@ -20765,9 +20657,6 @@ index 0000000..bbb3d32
+}
+
+#endif //DWC_UTE_CFI
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cfi.h b/drivers/usb/host/dwc_otg/dwc_otg_cfi.h
new file mode 100644
index 0000000..55fd337
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cfi.h
@@ -0,0 +1,320 @@
@ -21091,9 +20980,6 @@ index 0000000..55fd337
+int cfi_setup(struct dwc_otg_pcd *pcd, struct cfi_usb_ctrlrequest *ctrl);
+
+#endif /* (__DWC_OTG_CFI_H__) */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil.c b/drivers/usb/host/dwc_otg/dwc_otg_cil.c
new file mode 100644
index 0000000..6a32c5c
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil.c
@@ -0,0 +1,7151 @@
@ -28248,9 +28134,6 @@ index 0000000..6a32c5c
+ dwc_otg_pcd_start_srp_timer(core_if);
+ return;
+}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil.h b/drivers/usb/host/dwc_otg/dwc_otg_cil.h
new file mode 100644
index 0000000..79dbf83
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil.h
@@ -0,0 +1,1464 @@
@ -29718,9 +29601,6 @@ index 0000000..79dbf83
+//////////////////////////////////////////////////////////////////////
+
+#endif
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
new file mode 100644
index 0000000..59fc862
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
@@ -0,0 +1,1563 @@
@ -31287,9 +31167,6 @@ index 0000000..59fc862
+
+ return retval;
+}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_core_if.h b/drivers/usb/host/dwc_otg/dwc_otg_core_if.h
new file mode 100644
index 0000000..4138fd1
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_core_if.h
@@ -0,0 +1,705 @@
@ -31998,9 +31875,6 @@ index 0000000..4138fd1
+/** @} */
+
+#endif /* __DWC_CORE_IF_H__ */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_dbg.h b/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
new file mode 100644
index 0000000..8900318
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
@@ -0,0 +1,116 @@
@ -32120,9 +31994,6 @@ index 0000000..8900318
+
+#endif /*DEBUG*/
+#endif
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.c b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
new file mode 100644
index 0000000..ac2c846
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
@@ -0,0 +1,1700 @@
@ -33826,9 +33697,6 @@ index 0000000..ac2c846
+ </td></tr>
+
+*/
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.h b/drivers/usb/host/dwc_otg/dwc_otg_driver.h
new file mode 100644
index 0000000..6a8be63
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.h
@@ -0,0 +1,86 @@
@ -33918,9 +33786,6 @@ index 0000000..6a8be63
+#endif
+
+#endif
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
new file mode 100644
index 0000000..1e89549
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -0,0 +1,3479 @@
@ -37403,9 +37268,6 @@ index 0000000..1e89549
+}
+
+#endif /* DWC_DEVICE_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
new file mode 100644
index 0000000..bb4f67a
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -0,0 +1,824 @@
@ -38233,9 +38095,6 @@ index 0000000..bb4f67a
+#endif
+#endif
+#endif /* DWC_DEVICE_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
new file mode 100644
index 0000000..274967b
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
@@ -0,0 +1,1133 @@
@ -39372,9 +39231,6 @@ index 0000000..274967b
+}
+
+#endif /* DWC_DEVICE_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
new file mode 100644
index 0000000..4823167
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
@@ -0,0 +1,412 @@
@ -39790,9 +39646,6 @@ index 0000000..4823167
+
+#endif /* __DWC_HCD_IF_H__ */
+#endif /* DWC_DEVICE_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
new file mode 100644
index 0000000..b41e164
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -0,0 +1,2106 @@
@ -41902,9 +41755,6 @@ index 0000000..b41e164
+}
+
+#endif /* DWC_DEVICE_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
new file mode 100644
index 0000000..e4787f5
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -0,0 +1,893 @@
@ -42801,9 +42651,6 @@ index 0000000..e4787f5
+}
+
+#endif /* DWC_DEVICE_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
new file mode 100644
index 0000000..0a1cbb7
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -0,0 +1,923 @@
@ -43730,9 +43577,6 @@ index 0000000..0a1cbb7
+}
+
+#endif /* DWC_DEVICE_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h b/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
new file mode 100644
index 0000000..e46d9bb
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
@@ -0,0 +1,185 @@
@ -43921,9 +43765,6 @@ index 0000000..e46d9bb
+
+
+#endif /* _DWC_OS_DEP_H_ */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd.c
new file mode 100644
index 0000000..ae0c72d
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd.c
@@ -0,0 +1,2712 @@
@ -46639,9 +46480,6 @@ index 0000000..ae0c72d
+}
+
+#endif /* DWC_HOST_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd.h b/drivers/usb/host/dwc_otg/dwc_otg_pcd.h
new file mode 100644
index 0000000..8ef7ba6
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd.h
@@ -0,0 +1,266 @@
@ -46911,9 +46749,6 @@ index 0000000..8ef7ba6
+extern void do_test_mode(void *data);
+#endif
+#endif /* DWC_HOST_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h b/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h
new file mode 100644
index 0000000..c8d2e0e
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h
@@ -0,0 +1,360 @@
@ -47277,9 +47112,6 @@ index 0000000..c8d2e0e
+#endif /* __DWC_PCD_IF_H__ */
+
+#endif /* DWC_HOST_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
new file mode 100644
index 0000000..1b1f83c
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
@@ -0,0 +1,5147 @@
@ -52430,9 +52262,6 @@ index 0000000..1b1f83c
+}
+
+#endif /* DWC_HOST_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
new file mode 100644
index 0000000..5d310df
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
@@ -0,0 +1,1358 @@
@ -53794,9 +53623,6 @@ index 0000000..5d310df
+EXPORT_SYMBOL(usb_gadget_unregister_driver);
+
+#endif /* DWC_HOST_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_regs.h b/drivers/usb/host/dwc_otg/dwc_otg_regs.h
new file mode 100644
index 0000000..8e0e7b5
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_regs.h
@@ -0,0 +1,2550 @@
@ -56350,9 +56176,6 @@ index 0000000..8e0e7b5
+} gpwrdn_data_t;
+
+#endif
diff --git a/drivers/usb/host/dwc_otg/test/Makefile b/drivers/usb/host/dwc_otg/test/Makefile
new file mode 100644
index 0000000..fc45375
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/Makefile
@@ -0,0 +1,16 @@
@ -56372,9 +56195,6 @@ index 0000000..fc45375
+ else echo "=======> $$test, FAILED" ; \
+ fi \
+ done
diff --git a/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm b/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm
new file mode 100644
index 0000000..85e55fd
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm
@@ -0,0 +1,337 @@
@ -56715,9 +56535,6 @@ index 0000000..85e55fd
+);
+
+1;
diff --git a/drivers/usb/host/dwc_otg/test/test_mod_param.pl b/drivers/usb/host/dwc_otg/test/test_mod_param.pl
new file mode 100644
index 0000000..dc3820d
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/test_mod_param.pl
@@ -0,0 +1,133 @@
@ -56854,9 +56671,6 @@ index 0000000..dc3820d
+
+test_main();
+0;
diff --git a/drivers/usb/host/dwc_otg/test/test_sysfs.pl b/drivers/usb/host/dwc_otg/test/test_sysfs.pl
new file mode 100644
index 0000000..cdc9963
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/test_sysfs.pl
@@ -0,0 +1,193 @@
@ -57053,6 +56867,3 @@ index 0000000..cdc9963
+
+test_main();
+0;
--
1.8.3.2

View File

@ -11,8 +11,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
3 files changed, 389 insertions(+)
create mode 100644 drivers/watchdog/bcm2708_wdog.c
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index d0107d4..ff56894 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -452,6 +452,12 @@ config RETU_WATCHDOG
@ -28,11 +26,9 @@ index d0107d4..ff56894 100644
config MOXART_WDT
tristate "MOXART watchdog"
depends on ARCH_MOXART
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index c569ec8..10e0665 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -56,6 +56,7 @@ obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o
@@ -56,6 +56,7 @@ obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_
obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o
obj-$(CONFIG_UX500_WATCHDOG) += ux500_wdt.o
obj-$(CONFIG_RETU_WATCHDOG) += retu_wdt.o
@ -40,9 +36,6 @@ index c569ec8..10e0665 100644
obj-$(CONFIG_BCM2835_WDT) += bcm2835_wdt.o
obj-$(CONFIG_MOXART_WDT) += moxart_wdt.o
obj-$(CONFIG_SIRFSOC_WATCHDOG) += sirfsoc_wdt.o
diff --git a/drivers/watchdog/bcm2708_wdog.c b/drivers/watchdog/bcm2708_wdog.c
new file mode 100644
index 0000000..8a27d68
--- /dev/null
+++ b/drivers/watchdog/bcm2708_wdog.c
@@ -0,0 +1,382 @@
@ -428,6 +421,3 @@ index 0000000..8a27d68
+MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
+MODULE_ALIAS_MISCDEV(TEMP_MINOR);
+MODULE_LICENSE("GPL");
--
1.8.3.2

File diff suppressed because it is too large Load Diff

View File

@ -32,8 +32,6 @@ Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>
drivers/video/fbdev/core/cfbimgblt.c | 152 +++++++++++++++++++++++++++++++++--
1 file changed, 147 insertions(+), 5 deletions(-)
diff --git a/drivers/video/fbdev/core/cfbimgblt.c b/drivers/video/fbdev/core/cfbimgblt.c
index a2bb276..436494f 100644
--- a/drivers/video/fbdev/core/cfbimgblt.c
+++ b/drivers/video/fbdev/core/cfbimgblt.c
@@ -28,6 +28,11 @@
@ -48,7 +46,7 @@ index a2bb276..436494f 100644
*/
#include <linux/module.h>
#include <linux/string.h>
@@ -262,6 +267,133 @@ static inline void fast_imageblit(const struct fb_image *image, struct fb_info *
@@ -262,6 +267,133 @@ static inline void fast_imageblit(const
}
}
@ -182,7 +180,7 @@ index a2bb276..436494f 100644
void cfb_imageblit(struct fb_info *p, const struct fb_image *image)
{
u32 fgcolor, bgcolor, start_index, bitstart, pitch_index = 0;
@@ -294,11 +426,21 @@ void cfb_imageblit(struct fb_info *p, const struct fb_image *image)
@@ -294,11 +426,21 @@ void cfb_imageblit(struct fb_info *p, co
bgcolor = image->bg_color;
}
@ -209,6 +207,3 @@ index a2bb276..436494f 100644
slow_imageblit(image, p, dst1, fgcolor, bgcolor,
start_index, pitch_index);
} else
--
1.8.3.2

View File

@ -15,11 +15,9 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
include/uapi/linux/fb.h | 5 +++++
2 files changed, 35 insertions(+)
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index 0705d88..771992a 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -1084,6 +1084,25 @@ fb_blank(struct fb_info *info, int blank)
@@ -1084,6 +1084,25 @@ fb_blank(struct fb_info *info, int blank
}
EXPORT_SYMBOL(fb_blank);
@ -45,7 +43,7 @@ index 0705d88..771992a 100644
static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
unsigned long arg)
{
@@ -1094,6 +1113,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
@@ -1094,6 +1113,7 @@ static long do_fb_ioctl(struct fb_info *
struct fb_cmap cmap_from;
struct fb_cmap_user cmap;
struct fb_event event;
@ -53,7 +51,7 @@ index 0705d88..771992a 100644
void __user *argp = (void __user *)arg;
long ret = 0;
@@ -1211,6 +1231,15 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
@@ -1211,6 +1231,15 @@ static long do_fb_ioctl(struct fb_info *
unlock_fb_info(info);
console_unlock();
break;
@ -69,7 +67,7 @@ index 0705d88..771992a 100644
default:
if (!lock_fb_info(info))
return -ENODEV;
@@ -1365,6 +1394,7 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd,
@@ -1365,6 +1394,7 @@ static long fb_compat_ioctl(struct file
case FBIOPAN_DISPLAY:
case FBIOGET_CON2FBMAP:
case FBIOPUT_CON2FBMAP:
@ -77,8 +75,6 @@ index 0705d88..771992a 100644
arg = (unsigned long) compat_ptr(arg);
case FBIOBLANK:
ret = do_fb_ioctl(info, cmd, arg);
diff --git a/include/uapi/linux/fb.h b/include/uapi/linux/fb.h
index fb795c3..fa72af0 100644
--- a/include/uapi/linux/fb.h
+++ b/include/uapi/linux/fb.h
@@ -34,6 +34,11 @@
@ -93,6 +89,3 @@ index fb795c3..fa72af0 100644
#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */
#define FB_TYPE_PLANES 1 /* Non interleaved planes */
--
1.8.3.2

View File

@ -55,11 +55,9 @@ Signed-off-by: Luke Diamand <luke@diamand.org>
6 files changed, 1724 insertions(+), 1602 deletions(-)
create mode 100644 drivers/video/fbdev/bcm2708_fb.c
diff --git a/arch/arm/mach-bcm2708/dma.c b/arch/arm/mach-bcm2708/dma.c
index 51d147a..1da2413 100644
--- a/arch/arm/mach-bcm2708/dma.c
+++ b/arch/arm/mach-bcm2708/dma.c
@@ -83,6 +83,14 @@ extern void bcm_dma_wait_idle(void __iomem *dma_chan_base)
@@ -83,6 +83,14 @@ extern void bcm_dma_wait_idle(void __iom
EXPORT_SYMBOL_GPL(bcm_dma_start);
@ -74,8 +72,6 @@ index 51d147a..1da2413 100644
/* Complete an ongoing DMA (assuming its results are to be ignored)
Does nothing if there is no DMA in progress.
This routine waits for the current AXI transfer to complete before
diff --git a/arch/arm/mach-bcm2708/include/mach/dma.h b/arch/arm/mach-bcm2708/include/mach/dma.h
index f2568d4..a4aac4c 100644
--- a/arch/arm/mach-bcm2708/include/mach/dma.h
+++ b/arch/arm/mach-bcm2708/include/mach/dma.h
@@ -64,11 +64,13 @@ struct bcm2708_dma_cb {
@ -92,8 +88,6 @@ index f2568d4..a4aac4c 100644
extern int /*rc*/ bcm_dma_abort(void __iomem *dma_chan_base);
/* When listing features we can ask for when allocating DMA channels give
diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
index c7bf606..0349473 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -224,6 +224,20 @@ config FB_TILEBLITTING
@ -117,11 +111,9 @@ index c7bf606..0349473 100644
config FB_GRVGA
tristate "Aeroflex Gaisler framebuffer support"
depends on FB && SPARC
diff --git a/drivers/video/fbdev/Makefile b/drivers/video/fbdev/Makefile
index 1979aff..57181ad 100644
--- a/drivers/video/fbdev/Makefile
+++ b/drivers/video/fbdev/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_FB_MACMODES) += macmodes.o
@@ -12,6 +12,7 @@ obj-$(CONFIG_FB_MACMODES) += macmod
obj-$(CONFIG_FB_WMT_GE_ROPS) += wmt_ge_rops.o
# Hardware specific drivers go first
@ -129,9 +121,6 @@ index 1979aff..57181ad 100644
obj-$(CONFIG_FB_AMIGA) += amifb.o c2p_planar.o
obj-$(CONFIG_FB_ARC) += arcfb.o
obj-$(CONFIG_FB_CLPS711X) += clps711x-fb.o
diff --git a/drivers/video/fbdev/bcm2708_fb.c b/drivers/video/fbdev/bcm2708_fb.c
new file mode 100644
index 0000000..dcc4de2
--- /dev/null
+++ b/drivers/video/fbdev/bcm2708_fb.c
@@ -0,0 +1,818 @@
@ -953,8 +942,6 @@ index 0000000..dcc4de2
+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 --git a/drivers/video/logo/logo_linux_clut224.ppm b/drivers/video/logo/logo_linux_clut224.ppm
index 3c14e43..7626beb 100644
--- a/drivers/video/logo/logo_linux_clut224.ppm
+++ b/drivers/video/logo/logo_linux_clut224.ppm
@@ -1,1604 +1,883 @@
@ -3443,6 +3430,3 @@ index 3c14e43..7626beb 100644
+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
--
1.8.3.2

View File

@ -122,8 +122,6 @@ described above.
create mode 100644 drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h
create mode 100644 drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index bbeb451..b6109a2 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -524,6 +524,7 @@ source "drivers/misc/carma/Kconfig"
@ -134,8 +132,6 @@ index bbeb451..b6109a2 100644
source "drivers/misc/mic/Kconfig"
source "drivers/misc/genwqe/Kconfig"
source "drivers/misc/echo/Kconfig"
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index 7d5c4cd..c085ede 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -51,6 +51,7 @@ obj-$(CONFIG_INTEL_MEI) += mei/
@ -146,9 +142,6 @@ index 7d5c4cd..c085ede 100644
obj-y += mic/
obj-$(CONFIG_GENWQE) += genwqe/
obj-$(CONFIG_ECHO) += echo/
diff --git a/drivers/misc/vc04_services/Kconfig b/drivers/misc/vc04_services/Kconfig
new file mode 100644
index 0000000..2663933
--- /dev/null
+++ b/drivers/misc/vc04_services/Kconfig
@@ -0,0 +1,9 @@
@ -161,9 +154,6 @@ index 0000000..2663933
+ BCM2708 family of products.
+ Defaults to Y when the Broadcom Videocore services
+ are included in the build, N otherwise.
diff --git a/drivers/misc/vc04_services/Makefile b/drivers/misc/vc04_services/Makefile
new file mode 100644
index 0000000..0c82520
--- /dev/null
+++ b/drivers/misc/vc04_services/Makefile
@@ -0,0 +1,17 @@
@ -184,9 +174,6 @@ index 0000000..0c82520
+ccflags-y += -DVCOS_VERIFY_BKPTS=1 -Idrivers/misc/vc04_services -DUSE_VCHIQ_ARM -D__VCCOREVER__=0x04000000
+
+endif
diff --git a/drivers/misc/vc04_services/interface/vchi/connections/connection.h b/drivers/misc/vc04_services/interface/vchi/connections/connection.h
new file mode 100644
index 0000000..fef6ac3
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchi/connections/connection.h
@@ -0,0 +1,328 @@
@ -518,9 +505,6 @@ index 0000000..fef6ac3
+#endif /* CONNECTION_H_ */
+
+/****************************** End of file **********************************/
diff --git a/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h b/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h
new file mode 100644
index 0000000..8b3f767
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h
@@ -0,0 +1,204 @@
@ -728,9 +712,6 @@ index 0000000..8b3f767
+#endif // _VCHI_MESSAGE_H_
+
+/****************************** End of file ***********************************/
diff --git a/drivers/misc/vc04_services/interface/vchi/vchi.h b/drivers/misc/vc04_services/interface/vchi/vchi.h
new file mode 100644
index 0000000..1b17e98
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchi/vchi.h
@@ -0,0 +1,378 @@
@ -1112,9 +1093,6 @@ index 0000000..1b17e98
+#endif /* VCHI_H_ */
+
+/****************************** End of file **********************************/
diff --git a/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h b/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h
new file mode 100644
index 0000000..26bc2d3
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h
@@ -0,0 +1,224 @@
@ -1342,9 +1320,6 @@ index 0000000..26bc2d3
+#endif /* VCHI_CFG_H_ */
+
+/****************************** End of file **********************************/
diff --git a/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h b/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h
new file mode 100644
index 0000000..35dcba4
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h
@@ -0,0 +1,71 @@
@ -1419,9 +1394,6 @@ index 0000000..35dcba4
+//#define VCHI_RX_NANOLOCKS
+
+#endif /*VCHI_CFG_INTERNAL_H_*/
diff --git a/drivers/misc/vc04_services/interface/vchi/vchi_common.h b/drivers/misc/vc04_services/interface/vchi/vchi_common.h
new file mode 100644
index 0000000..d76118c
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchi/vchi_common.h
@@ -0,0 +1,174 @@
@ -1599,9 +1571,6 @@ index 0000000..d76118c
+
+
+#endif // VCHI_COMMON_H_
diff --git a/drivers/misc/vc04_services/interface/vchi/vchi_mh.h b/drivers/misc/vc04_services/interface/vchi/vchi_mh.h
new file mode 100644
index 0000000..198bd07
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchi/vchi_mh.h
@@ -0,0 +1,42 @@
@ -1647,9 +1616,6 @@ index 0000000..198bd07
+#define VCHI_MEM_HANDLE_INVALID 0
+
+#endif
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h
new file mode 100644
index 0000000..ad398ba
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h
@@ -0,0 +1,40 @@
@ -1693,9 +1659,6 @@ index 0000000..ad398ba
+#include "vchiq_util.h"
+
+#endif
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h
new file mode 100644
index 0000000..7ea5c64
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h
@@ -0,0 +1,42 @@
@ -1741,9 +1704,6 @@ index 0000000..7ea5c64
+#define VCHIQ_PLATFORM_FRAGMENTS_COUNT_IDX 1
+
+#endif /* VCHIQ_2835_H */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
new file mode 100644
index 0000000..b3bdaa2
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
@@ -0,0 +1,561 @@
@ -2308,9 +2268,6 @@ index 0000000..b3bdaa2
+
+ kfree(pagelist);
+}
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
new file mode 100644
index 0000000..2596818
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -0,0 +1,2883 @@
@ -5197,9 +5154,6 @@ index 0000000..2596818
+module_exit(vchiq_exit);
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Broadcom Corporation");
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h
new file mode 100644
index 0000000..d1e2741
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h
@@ -0,0 +1,223 @@
@ -5426,9 +5380,6 @@ index 0000000..d1e2741
+
+
+#endif /* VCHIQ_ARM_H */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h
new file mode 100644
index 0000000..df64581
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h
@@ -0,0 +1,37 @@
@ -5469,9 +5420,6 @@ index 0000000..df64581
+const char *vchiq_get_build_version(void);
+const char *vchiq_get_build_time(void);
+const char *vchiq_get_build_date(void);
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h
new file mode 100644
index 0000000..c382740
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h
@@ -0,0 +1,66 @@
@ -5541,9 +5489,6 @@ index 0000000..c382740
+#endif
+
+#endif /* VCHIQ_CFG_H */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c
new file mode 100644
index 0000000..65f4b52
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c
@@ -0,0 +1,119 @@
@ -5666,9 +5611,6 @@ index 0000000..65f4b52
+ mutex_unlock(&g_connected_mutex);
+}
+EXPORT_SYMBOL(vchiq_add_connected_callback);
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h
new file mode 100644
index 0000000..863b3e3
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h
@@ -0,0 +1,50 @@
@ -5722,9 +5664,6 @@ index 0000000..863b3e3
+void vchiq_call_connected_callbacks(void);
+
+#endif /* VCHIQ_CONNECTED_H */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
new file mode 100644
index 0000000..f962027
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
@@ -0,0 +1,3861 @@
@ -9589,9 +9528,6 @@ index 0000000..f962027
+ numBytes = 0;
+ }
+}
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h
new file mode 100644
index 0000000..1b27917
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h
@@ -0,0 +1,711 @@
@ -10306,9 +10242,6 @@ index 0000000..1b27917
+ size_t numBytes);
+
+#endif
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c
new file mode 100644
index 0000000..7e03213
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c
@@ -0,0 +1,383 @@
@ -10695,9 +10628,6 @@ index 0000000..7e03213
+}
+
+#endif /* CONFIG_DEBUG_FS */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h
new file mode 100644
index 0000000..4d6a378
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h
@@ -0,0 +1,52 @@
@ -10753,9 +10683,6 @@ index 0000000..4d6a378
+void vchiq_debugfs_remove_instance(VCHIQ_INSTANCE_T instance);
+
+#endif /* VCHIQ_DEBUGFS_H */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion
new file mode 100644
index 0000000..9f5b634
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion
@@ -0,0 +1,87 @@
@ -10846,9 +10773,6 @@ index 0000000..9f5b634
+ return vchiq_build_time;
+}
+EOF
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h
new file mode 100644
index 0000000..8067bbe
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h
@@ -0,0 +1,189 @@
@ -11041,9 +10965,6 @@ index 0000000..8067bbe
+ short *peer_version);
+
+#endif /* VCHIQ_IF_H */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h
new file mode 100644
index 0000000..6137ae9
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h
@@ -0,0 +1,131 @@
@ -11178,9 +11099,6 @@ index 0000000..6137ae9
+#define VCHIQ_IOC_MAX 17
+
+#endif
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
new file mode 100644
index 0000000..be9735f
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
@@ -0,0 +1,456 @@
@ -11640,9 +11558,6 @@ index 0000000..be9735f
+
+ return status;
+}
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h
new file mode 100644
index 0000000..d02e776
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h
@@ -0,0 +1,71 @@
@ -11717,9 +11632,6 @@ index 0000000..d02e776
+ const VCHIQ_PLATFORM_DATA_T * platform_data);
+
+#endif
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h
new file mode 100644
index 0000000..54a3ece
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h
@@ -0,0 +1,58 @@
@ -11781,9 +11693,6 @@ index 0000000..54a3ece
+} FRAGMENTS_T;
+
+#endif /* VCHIQ_PAGELIST_H */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
new file mode 100644
index 0000000..72eacdaf
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
@@ -0,0 +1,853 @@
@ -12640,9 +12549,6 @@ index 0000000..72eacdaf
+ return ret;
+}
+EXPORT_SYMBOL(vchi_service_release);
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
new file mode 100644
index 0000000..c2eefef
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
@@ -0,0 +1,151 @@
@ -12797,9 +12703,6 @@ index 0000000..c2eefef
+
+ return header;
+}
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h
new file mode 100644
index 0000000..f4d0b66
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h
@@ -0,0 +1,81 @@
@ -12884,9 +12787,6 @@ index 0000000..f4d0b66
+extern VCHIQ_HEADER_T *vchiu_queue_pop(VCHIU_QUEUE_T *queue);
+
+#endif
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c
new file mode 100644
index 0000000..b6bfa21
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c
@@ -0,0 +1,59 @@
@ -12949,6 +12849,3 @@ index 0000000..b6bfa21
+{
+ return vchiq_build_time;
+}
--
1.8.3.2

View File

@ -15,8 +15,6 @@ vchiq: Include SIGSTOP and SIGCONT in list of signals not-masked by vchiq to all
7 files changed, 75 insertions(+)
create mode 100644 drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
index b3bdaa2..7e7b09f 100644
--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
@@ -56,6 +56,7 @@
@ -27,8 +25,6 @@ index b3bdaa2..7e7b09f 100644
#define MAX_FRAGMENTS (VCHIQ_NUM_CURRENT_BULKS * 2)
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
index 2596818..3e328ab 100644
--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -50,6 +50,7 @@
@ -39,8 +35,6 @@ index 2596818..3e328ab 100644
#define DEVICE_NAME "vchiq"
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c
index 65f4b52..5efc62f 100644
--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c
@@ -33,6 +33,7 @@
@ -51,8 +45,6 @@ index 65f4b52..5efc62f 100644
#include <linux/module.h>
#include <linux/mutex.h>
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
index f962027..14a4155 100644
--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
@@ -32,6 +32,7 @@
@ -63,8 +55,6 @@ index f962027..14a4155 100644
#define VCHIQ_SLOT_HANDLER_STACK 8192
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
index be9735f..5a4182e 100644
--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
@@ -39,6 +39,7 @@
@ -75,9 +65,6 @@ index be9735f..5a4182e 100644
/* ---- Public Variables ------------------------------------------------- */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h
new file mode 100644
index 0000000..335446e
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h
@@ -0,0 +1,69 @@
@ -150,8 +137,6 @@ index 0000000..335446e
+#define mutex_lock_interruptible mutex_lock_interruptible_killable
+
+#endif
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
index c2eefef..05e7979 100644
--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
@@ -32,6 +32,7 @@
@ -162,6 +147,3 @@ index c2eefef..05e7979 100644
static inline int is_pow2(int i)
{
--
1.8.3.2

View File

@ -20,8 +20,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
create mode 100644 drivers/char/broadcom/vc_cma/vc_cma.c
create mode 100644 include/linux/broadcom/vc_cma.h
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index efefd12..aebd7ca 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -581,6 +581,8 @@ config DEVPORT
@ -33,8 +31,6 @@ index efefd12..aebd7ca 100644
config MSM_SMD_PKT
bool "Enable device interface for some SMD packet ports"
default n
diff --git a/drivers/char/Makefile b/drivers/char/Makefile
index d06cde26..a9f9daf 100644
--- a/drivers/char/Makefile
+++ b/drivers/char/Makefile
@@ -62,3 +62,4 @@ js-rtc-y = rtc.o
@ -42,9 +38,6 @@ index d06cde26..a9f9daf 100644
obj-$(CONFIG_TILE_SROM) += tile-srom.o
obj-$(CONFIG_XILLYBUS) += xillybus/
+obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/
diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig
new file mode 100644
index 0000000..2d8bd6e
--- /dev/null
+++ b/drivers/char/broadcom/Kconfig
@@ -0,0 +1,15 @@
@ -63,16 +56,10 @@ index 0000000..2d8bd6e
+ default n
+ help
+ Helper for videocore CMA access.
diff --git a/drivers/char/broadcom/Makefile b/drivers/char/broadcom/Makefile
new file mode 100644
index 0000000..13c5bca
--- /dev/null
+++ b/drivers/char/broadcom/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_BCM_VC_CMA) += vc_cma/
diff --git a/drivers/char/broadcom/vc_cma/Makefile b/drivers/char/broadcom/vc_cma/Makefile
new file mode 100644
index 0000000..6a94de4
--- /dev/null
+++ b/drivers/char/broadcom/vc_cma/Makefile
@@ -0,0 +1,14 @@
@ -90,9 +77,6 @@ index 0000000..6a94de4
+obj-$(CONFIG_BCM_VC_CMA) += vc-cma.o
+
+vc-cma-objs := vc_cma.o
diff --git a/drivers/char/broadcom/vc_cma/vc_cma.c b/drivers/char/broadcom/vc_cma/vc_cma.c
new file mode 100644
index 0000000..a635f9f
--- /dev/null
+++ b/drivers/char/broadcom/vc_cma/vc_cma.c
@@ -0,0 +1,1143 @@
@ -1239,8 +1223,6 @@ index 0000000..a635f9f
+module_exit(vc_cma_exit);
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Broadcom Corporation");
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index c085ede..43d2ac9 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -51,7 +51,7 @@ obj-$(CONFIG_INTEL_MEI) += mei/
@ -1252,9 +1234,6 @@ index c085ede..43d2ac9 100644
obj-y += mic/
obj-$(CONFIG_GENWQE) += genwqe/
obj-$(CONFIG_ECHO) += echo/
diff --git a/include/linux/broadcom/vc_cma.h b/include/linux/broadcom/vc_cma.h
new file mode 100644
index 0000000..5325832
--- /dev/null
+++ b/include/linux/broadcom/vc_cma.h
@@ -0,0 +1,29 @@
@ -1287,6 +1266,3 @@ index 0000000..5325832
+#endif
+
+#endif /* VC_CMA_H */
--
1.8.3.2

View File

@ -44,8 +44,6 @@ snd-bcm2708: Fix dmesg spam for non-error case
create mode 100755 sound/arm/bcm2835.h
create mode 100644 sound/arm/vc_vchi_audioserv_defs.h
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 8950e53..63cb6a4 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -202,6 +202,26 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
@ -75,11 +73,9 @@ index 8950e53..63cb6a4 100644
CONFIG_HID_A4TECH=m
CONFIG_HID_ACRUX=m
CONFIG_HID_APPLE=m
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 7503649..f3dccae 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -403,6 +403,58 @@ struct platform_device bcm2708_powerman_device = {
@@ -403,6 +403,58 @@ struct platform_device bcm2708_powerman_
.coherent_dma_mask = 0xffffffffUL},
};
@ -147,8 +143,6 @@ index 7503649..f3dccae 100644
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
index 5a4182e..25e7011 100644
--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
@@ -288,11 +288,12 @@ VCHIQ_STATUS_T vchiq_open_service(
@ -167,11 +161,9 @@ index 5a4182e..25e7011 100644
}
failed:
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
index 72eacdaf..c26eff7 100644
--- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
@@ -634,6 +634,9 @@ int32_t vchi_service_open(VCHI_INSTANCE_T instance_handle,
@@ -634,6 +634,9 @@ int32_t vchi_service_open(VCHI_INSTANCE_
{
VCHIQ_INSTANCE_T instance = (VCHIQ_INSTANCE_T)instance_handle;
SHIM_SERVICE_T *service = service_alloc(instance, setup);
@ -181,7 +173,7 @@ index 72eacdaf..c26eff7 100644
if (service) {
VCHIQ_SERVICE_PARAMS_T params;
VCHIQ_STATUS_T status;
@@ -650,11 +653,10 @@ int32_t vchi_service_open(VCHI_INSTANCE_T instance_handle,
@@ -650,11 +653,10 @@ int32_t vchi_service_open(VCHI_INSTANCE_
if (status != VCHIQ_SUCCESS) {
service_free(service);
service = NULL;
@ -194,7 +186,7 @@ index 72eacdaf..c26eff7 100644
return (service != NULL) ? 0 : -1;
}
EXPORT_SYMBOL(vchi_service_open);
@@ -665,6 +667,9 @@ int32_t vchi_service_create(VCHI_INSTANCE_T instance_handle,
@@ -665,6 +667,9 @@ int32_t vchi_service_create(VCHI_INSTANC
{
VCHIQ_INSTANCE_T instance = (VCHIQ_INSTANCE_T)instance_handle;
SHIM_SERVICE_T *service = service_alloc(instance, setup);
@ -204,7 +196,7 @@ index 72eacdaf..c26eff7 100644
if (service) {
VCHIQ_SERVICE_PARAMS_T params;
VCHIQ_STATUS_T status;
@@ -680,11 +685,10 @@ int32_t vchi_service_create(VCHI_INSTANCE_T instance_handle,
@@ -680,11 +685,10 @@ int32_t vchi_service_create(VCHI_INSTANC
if (status != VCHIQ_SUCCESS) {
service_free(service);
service = NULL;
@ -217,8 +209,6 @@ index 72eacdaf..c26eff7 100644
return (service != NULL) ? 0 : -1;
}
EXPORT_SYMBOL(vchi_service_create);
diff --git a/sound/arm/Kconfig b/sound/arm/Kconfig
index 885683a..f7ceafd 100644
--- a/sound/arm/Kconfig
+++ b/sound/arm/Kconfig
@@ -39,5 +39,12 @@ config SND_PXA2XX_AC97
@ -234,11 +224,9 @@ index 885683a..f7ceafd 100644
+
endif # SND_ARM
diff --git a/sound/arm/Makefile b/sound/arm/Makefile
index 8c0c851..6796d7f 100644
--- a/sound/arm/Makefile
+++ b/sound/arm/Makefile
@@ -14,3 +14,8 @@ snd-pxa2xx-lib-$(CONFIG_SND_PXA2XX_LIB_AC97) += pxa2xx-ac97-lib.o
@@ -14,3 +14,8 @@ snd-pxa2xx-lib-$(CONFIG_SND_PXA2XX_LIB_A
obj-$(CONFIG_SND_PXA2XX_AC97) += snd-pxa2xx-ac97.o
snd-pxa2xx-ac97-objs := pxa2xx-ac97.o
@ -247,9 +235,6 @@ index 8c0c851..6796d7f 100644
+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 --git a/sound/arm/bcm2835-ctl.c b/sound/arm/bcm2835-ctl.c
new file mode 100755
index 0000000..aad905f
--- /dev/null
+++ b/sound/arm/bcm2835-ctl.c
@@ -0,0 +1,323 @@
@ -576,9 +561,6 @@ index 0000000..aad905f
+ }
+ return 0;
+}
diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c
new file mode 100755
index 0000000..3a20b34
--- /dev/null
+++ b/sound/arm/bcm2835-pcm.c
@@ -0,0 +1,552 @@
@ -1134,9 +1116,6 @@ index 0000000..3a20b34
+
+ return 0;
+}
diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c
new file mode 100755
index 0000000..3c95381
--- /dev/null
+++ b/sound/arm/bcm2835-vchiq.c
@@ -0,0 +1,902 @@
@ -2042,9 +2021,6 @@ index 0000000..3c95381
+
+module_param(force_bulk, bool, 0444);
+MODULE_PARM_DESC(force_bulk, "Force use of vchiq bulk for audio");
diff --git a/sound/arm/bcm2835.c b/sound/arm/bcm2835.c
new file mode 100755
index 0000000..7ed5079
--- /dev/null
+++ b/sound/arm/bcm2835.c
@@ -0,0 +1,420 @@
@ -2468,9 +2444,6 @@ index 0000000..7ed5079
+MODULE_DESCRIPTION("Alsa driver for BCM2835 chip");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:bcm2835_alsa");
diff --git a/sound/arm/bcm2835.h b/sound/arm/bcm2835.h
new file mode 100755
index 0000000..0f71c5d
--- /dev/null
+++ b/sound/arm/bcm2835.h
@@ -0,0 +1,167 @@
@ -2641,9 +2614,6 @@ index 0000000..0f71c5d
+void bcm2835_audio_flush_playback_buffers(bcm2835_alsa_stream_t * alsa_stream);
+
+#endif /* __SOUND_ARM_BCM2835_H */
diff --git a/sound/arm/vc_vchi_audioserv_defs.h b/sound/arm/vc_vchi_audioserv_defs.h
new file mode 100644
index 0000000..af3e6eb
--- /dev/null
+++ b/sound/arm/vc_vchi_audioserv_defs.h
@@ -0,0 +1,116 @@
@ -2763,6 +2733,3 @@ index 0000000..af3e6eb
+} VC_AUDIO_MSG_T;
+
+#endif // _VC_AUDIO_DEFS_H_
--
1.8.3.2

View File

@ -10,8 +10,6 @@ Subject: [PATCH 014/114] Add hwrng (hardware random number generator) driver
3 files changed, 130 insertions(+)
create mode 100755 drivers/char/hw_random/bcm2708-rng.c
diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index 91a04ae..0d2ca0d 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -320,6 +320,17 @@ config HW_RANDOM_TPM
@ -32,20 +30,15 @@ index 91a04ae..0d2ca0d 100644
config HW_RANDOM_MSM
tristate "Qualcomm SoCs Random Number Generator support"
depends on HW_RANDOM && ARCH_QCOM
diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
index 0b4cd57..78b019c 100644
--- a/drivers/char/hw_random/Makefile
+++ b/drivers/char/hw_random/Makefile
@@ -28,5 +28,6 @@ obj-$(CONFIG_HW_RANDOM_POWERNV) += powernv-rng.o
@@ -28,5 +28,6 @@ obj-$(CONFIG_HW_RANDOM_POWERNV) += power
obj-$(CONFIG_HW_RANDOM_EXYNOS) += exynos-rng.o
obj-$(CONFIG_HW_RANDOM_TPM) += tpm-rng.o
obj-$(CONFIG_HW_RANDOM_BCM2835) += bcm2835-rng.o
+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 --git a/drivers/char/hw_random/bcm2708-rng.c b/drivers/char/hw_random/bcm2708-rng.c
new file mode 100755
index 0000000..340f004
--- /dev/null
+++ b/drivers/char/hw_random/bcm2708-rng.c
@@ -0,0 +1,118 @@
@ -167,6 +160,3 @@ index 0000000..340f004
+
+MODULE_DESCRIPTION("BCM2708 H/W Random Number Generator (RNG) driver");
+MODULE_LICENSE("GPL and additional rights");
--
1.8.3.2

View File

@ -38,8 +38,6 @@ lirc-rpi: Correct the interrupt usage
3 files changed, 666 insertions(+)
create mode 100644 drivers/staging/media/lirc/lirc_rpi.c
diff --git a/drivers/staging/media/lirc/Kconfig b/drivers/staging/media/lirc/Kconfig
index e60a59f..6b7ff70 100644
--- a/drivers/staging/media/lirc/Kconfig
+++ b/drivers/staging/media/lirc/Kconfig
@@ -38,6 +38,12 @@ config LIRC_PARALLEL
@ -55,8 +53,6 @@ index e60a59f..6b7ff70 100644
config LIRC_SASEM
tristate "Sasem USB IR Remote"
depends on LIRC && USB
diff --git a/drivers/staging/media/lirc/Makefile b/drivers/staging/media/lirc/Makefile
index b90fcab..2b227fd 100644
--- a/drivers/staging/media/lirc/Makefile
+++ b/drivers/staging/media/lirc/Makefile
@@ -7,6 +7,7 @@ obj-$(CONFIG_LIRC_BT829) += lirc_bt829.o
@ -67,9 +63,6 @@ index b90fcab..2b227fd 100644
obj-$(CONFIG_LIRC_SASEM) += lirc_sasem.o
obj-$(CONFIG_LIRC_SERIAL) += lirc_serial.o
obj-$(CONFIG_LIRC_SIR) += lirc_sir.o
diff --git a/drivers/staging/media/lirc/lirc_rpi.c b/drivers/staging/media/lirc/lirc_rpi.c
new file mode 100644
index 0000000..c688364
--- /dev/null
+++ b/drivers/staging/media/lirc/lirc_rpi.c
@@ -0,0 +1,659 @@
@ -732,6 +725,3 @@ index 0000000..c688364
+
+module_param(debug, bool, S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(debug, "Enable debugging messages");
--
1.8.3.2

View File

@ -11,8 +11,6 @@ Subject: [PATCH 016/114] Add cpufreq driver
4 files changed, 234 insertions(+)
create mode 100755 drivers/cpufreq/bcm2835-cpufreq.c
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 4cedaf2..6283d7d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -390,6 +390,7 @@ config ARCH_BCM2708
@ -23,8 +21,6 @@ index 4cedaf2..6283d7d 100644
select GENERIC_CLOCKEVENTS
select ARM_ERRATA_411920
select MACH_BCM2708
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
index 83a75dc..210394f 100644
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
@@ -241,6 +241,14 @@ config ARM_SPEAR_CPUFREQ
@ -42,11 +38,9 @@ index 83a75dc..210394f 100644
config ARM_TEGRA_CPUFREQ
bool "TEGRA CPUFreq support"
depends on ARCH_TEGRA
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
index 40c53dc..47d2922 100644
--- a/drivers/cpufreq/Makefile
+++ b/drivers/cpufreq/Makefile
@@ -75,6 +75,7 @@ obj-$(CONFIG_ARM_S5PV210_CPUFREQ) += s5pv210-cpufreq.o
@@ -75,6 +75,7 @@ obj-$(CONFIG_ARM_S5PV210_CPUFREQ) += s5p
obj-$(CONFIG_ARM_SA1100_CPUFREQ) += sa1100-cpufreq.o
obj-$(CONFIG_ARM_SA1110_CPUFREQ) += sa1110-cpufreq.o
obj-$(CONFIG_ARM_SPEAR_CPUFREQ) += spear-cpufreq.o
@ -54,9 +48,6 @@ index 40c53dc..47d2922 100644
obj-$(CONFIG_ARM_TEGRA_CPUFREQ) += tegra-cpufreq.o
obj-$(CONFIG_ARM_VEXPRESS_SPC_CPUFREQ) += vexpress-spc-cpufreq.o
diff --git a/drivers/cpufreq/bcm2835-cpufreq.c b/drivers/cpufreq/bcm2835-cpufreq.c
new file mode 100755
index 0000000..447ca09
--- /dev/null
+++ b/drivers/cpufreq/bcm2835-cpufreq.c
@@ -0,0 +1,224 @@
@ -284,6 +275,3 @@ index 0000000..447ca09
+
+module_init(bcm2835_cpufreq_module_init);
+module_exit(bcm2835_cpufreq_module_exit);
--
1.8.3.2

View File

@ -16,11 +16,9 @@ Subject: [PATCH 017/114] Added hwmon/thermal driver for reporting core
create mode 100644 drivers/hwmon/bcm2835-hwmon.c
create mode 100644 drivers/thermal/bcm2835-thermal.c
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index f3dccae..af57d11 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -455,6 +455,14 @@ static struct platform_device bcm2708_alsa_devices[] = {
@@ -455,6 +455,14 @@ static struct platform_device bcm2708_al
},
};
@ -45,11 +43,9 @@ index f3dccae..af57d11 100644
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
amba_device_register(d, &iomem_resource);
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 5286d7c..d52e192 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1680,6 +1680,16 @@ config SENSORS_ULTRA45
@@ -1689,6 +1689,16 @@ config SENSORS_ULTRA45
This driver provides support for the Ultra45 workstation environmental
sensors.
@ -66,11 +62,9 @@ index 5286d7c..d52e192 100644
if ACPI
comment "ACPI drivers"
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index c90a761..15aaecf 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -153,6 +153,7 @@ obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o
@@ -154,6 +154,7 @@ obj-$(CONFIG_SENSORS_W83L786NG) += w83l7
obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o
obj-$(CONFIG_SENSORS_WM8350) += wm8350-hwmon.o
obj-$(CONFIG_SENSORS_GSC) += gsc.o
@ -78,9 +72,6 @@ index c90a761..15aaecf 100644
obj-$(CONFIG_PMBUS) += pmbus/
diff --git a/drivers/hwmon/bcm2835-hwmon.c b/drivers/hwmon/bcm2835-hwmon.c
new file mode 100644
index 0000000..5bbed45
--- /dev/null
+++ b/drivers/hwmon/bcm2835-hwmon.c
@@ -0,0 +1,219 @@
@ -303,8 +294,6 @@ index 0000000..5bbed45
+MODULE_DESCRIPTION("HW Monitor driver for bcm2835 chip");
+
+module_platform_driver(bcm2835_hwmon_driver);
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index f554d25..fecc621 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -206,6 +206,12 @@ config INTEL_POWERCLAMP
@ -320,11 +309,9 @@ index f554d25..fecc621 100644
config X86_PKG_TEMP_THERMAL
tristate "X86 package temperature thermal driver"
depends on X86_THERMAL_VECTOR
diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
index 39c4fe8..30a4741 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -29,6 +29,7 @@ obj-$(CONFIG_ARMADA_THERMAL) += armada_thermal.o
@@ -29,6 +29,7 @@ obj-$(CONFIG_ARMADA_THERMAL) += armada_t
obj-$(CONFIG_IMX_THERMAL) += imx_thermal.o
obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o
obj-$(CONFIG_INTEL_POWERCLAMP) += intel_powerclamp.o
@ -332,9 +319,6 @@ index 39c4fe8..30a4741 100644
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 --git a/drivers/thermal/bcm2835-thermal.c b/drivers/thermal/bcm2835-thermal.c
new file mode 100644
index 0000000..85fceb5
--- /dev/null
+++ b/drivers/thermal/bcm2835-thermal.c
@@ -0,0 +1,184 @@
@ -522,6 +506,3 @@ index 0000000..85fceb5
+MODULE_DESCRIPTION("Thermal driver for bcm2835 chip");
+
+module_platform_driver(bcm2835_thermal_driver);
--
1.8.3.2

View File

@ -8,8 +8,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index d07bf4c..5ae60ab 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -59,6 +59,7 @@
@ -31,7 +29,7 @@ index d07bf4c..5ae60ab 100644
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data, int in_pm)
{
@@ -763,8 +768,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
@@ -763,8 +768,59 @@ static int smsc95xx_ioctl(struct net_dev
return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
}
@ -91,6 +89,3 @@ index d07bf4c..5ae60ab 100644
/* try reading mac address from EEPROM */
if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
dev->net->dev_addr) == 0) {
--
1.8.3.2

View File

@ -25,8 +25,6 @@ The correct baudrate is shown in the log after the cdiv > 0xffff correction.
create mode 100644 drivers/i2c/busses/i2c-bcm2708.c
create mode 100644 drivers/spi/spi-bcm2708.c
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 63cb6a4..6d2eae1 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -195,6 +195,13 @@ CONFIG_SERIAL_AMBA_PL011=y
@ -43,8 +41,6 @@ index 63cb6a4..6d2eae1 100644
# CONFIG_HWMON is not set
CONFIG_WATCHDOG=y
CONFIG_FB=y
diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig
index 9355841..e151ed4 100644
--- a/arch/arm/mach-bcm2708/Kconfig
+++ b/arch/arm/mach-bcm2708/Kconfig
@@ -31,4 +31,11 @@ config BCM2708_NOL2CACHE
@ -59,8 +55,6 @@ index 9355841..e151ed4 100644
+ help
+ Binds spidev driver to the SPI0 master
endmenu
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index af57d11..82f56fb 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -31,6 +31,7 @@
@ -103,7 +97,7 @@ index af57d11..82f56fb 100644
}
};
@@ -455,6 +463,89 @@ static struct platform_device bcm2708_alsa_devices[] = {
@@ -455,6 +463,89 @@ static struct platform_device bcm2708_al
},
};
@ -216,8 +210,6 @@ index af57d11..82f56fb 100644
}
static void timer_set_mode(enum clock_event_mode mode,
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 917c358..3d3db41 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -371,6 +371,25 @@ config I2C_BCM2835
@ -246,8 +238,6 @@ index 917c358..3d3db41 100644
config I2C_BCM_KONA
tristate "BCM Kona I2C adapter"
depends on ARCH_BCM_MOBILE
diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
index 78d56c5..abe642f 100644
--- a/drivers/i2c/busses/Makefile
+++ b/drivers/i2c/busses/Makefile
@@ -33,6 +33,7 @@ obj-$(CONFIG_I2C_AT91) += i2c-at91.o
@ -258,9 +248,6 @@ index 78d56c5..abe642f 100644
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 --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c
new file mode 100644
index 0000000..09203c0
--- /dev/null
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -0,0 +1,420 @@
@ -684,8 +671,6 @@ index 0000000..09203c0
+MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" DRV_NAME);
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index 84e7c9e..71b4741 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -86,6 +86,14 @@ config SPI_BCM2835
@ -703,11 +688,9 @@ index 84e7c9e..71b4741 100644
config SPI_BFIN5XX
tristate "SPI controller driver for ADI Blackfin5xx"
depends on BLACKFIN && !BF60x
diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
index 78f24ca..fdd29d3 100644
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -20,6 +20,7 @@ obj-$(CONFIG_SPI_BCM63XX) += spi-bcm63xx.o
@@ -20,6 +20,7 @@ obj-$(CONFIG_SPI_BCM63XX) += spi-bcm63x
obj-$(CONFIG_SPI_BCM63XX_HSSPI) += spi-bcm63xx-hsspi.o
obj-$(CONFIG_SPI_BFIN5XX) += spi-bfin5xx.o
obj-$(CONFIG_SPI_ADI_V3) += spi-adi-v3.o
@ -715,9 +698,6 @@ index 78f24ca..fdd29d3 100644
obj-$(CONFIG_SPI_BFIN_SPORT) += spi-bfin-sport.o
obj-$(CONFIG_SPI_BITBANG) += spi-bitbang.o
obj-$(CONFIG_SPI_BUTTERFLY) += spi-butterfly.o
diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c
new file mode 100644
index 0000000..b04a57d
--- /dev/null
+++ b/drivers/spi/spi-bcm2708.c
@@ -0,0 +1,626 @@
@ -1347,6 +1327,3 @@ index 0000000..b04a57d
+MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" DRV_NAME);
--
1.8.3.2

View File

@ -16,11 +16,9 @@ i2c: Make combined transactions optional and disabled by default
drivers/i2c/busses/i2c-bcm2708.c | 31 ++++++++++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c
index 09203c0..7d385a3 100644
--- a/drivers/i2c/busses/i2c-bcm2708.c
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -74,6 +74,9 @@ static unsigned int baudrate = CONFIG_I2C_BCM2708_BAUDRATE;
@@ -74,6 +74,9 @@ static unsigned int baudrate = CONFIG_I2
module_param(baudrate, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
MODULE_PARM_DESC(baudrate, "The I2C baudrate");
@ -30,7 +28,7 @@ index 09203c0..7d385a3 100644
struct bcm2708_i2c {
struct i2c_adapter adapter;
@@ -150,7 +153,7 @@ static inline void bcm2708_bsc_fifo_fill(struct bcm2708_i2c *bi)
@@ -150,7 +153,7 @@ static inline void bcm2708_bsc_fifo_fill
static inline void bcm2708_bsc_setup(struct bcm2708_i2c *bi)
{
unsigned long bus_hz;
@ -39,7 +37,7 @@ index 09203c0..7d385a3 100644
u32 c = BSC_C_I2CEN | BSC_C_INTD | BSC_C_ST | BSC_C_CLEAR_1;
bus_hz = clk_get_rate(bi->clk);
@@ -166,6 +169,32 @@ static inline void bcm2708_bsc_setup(struct bcm2708_i2c *bi)
@@ -166,6 +169,32 @@ static inline void bcm2708_bsc_setup(str
bcm2708_wr(bi, BSC_DIV, cdiv);
bcm2708_wr(bi, BSC_A, bi->msg->addr);
bcm2708_wr(bi, BSC_DLEN, bi->msg->len);
@ -72,6 +70,3 @@ index 09203c0..7d385a3 100644
bcm2708_wr(bi, BSC_C, c);
}
--
1.8.3.2

View File

@ -26,8 +26,6 @@ Signed-off-by: Alex J Lennon <ajlennon@dynamicdevices.co.uk>
drivers/w1/w1_io.c | 18 +++++++++++---
5 files changed, 114 insertions(+), 8 deletions(-)
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 82f56fb..7dd89a7f 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -32,6 +32,7 @@
@ -58,7 +56,7 @@ index 82f56fb..7dd89a7f 100644
static void __init bcm2708_init_led(void);
@@ -258,6 +266,20 @@ static struct platform_device bcm2708_dmaman_device = {
@@ -258,6 +266,20 @@ static struct platform_device bcm2708_dm
.num_resources = ARRAY_SIZE(bcm2708_dmaman_resources),
};
@ -97,8 +95,6 @@ index 82f56fb..7dd89a7f 100644
module_param(reboot_part, uint, 0644);
+module_param(w1_gpio_pin, uint, 0644);
+module_param(w1_gpio_pullup, uint, 0644);
diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c
index 1d111e5..61be2cd 100644
--- a/drivers/w1/masters/w1-gpio.c
+++ b/drivers/w1/masters/w1-gpio.c
@@ -23,6 +23,15 @@
@ -134,7 +130,7 @@ index 1d111e5..61be2cd 100644
#if defined(CONFIG_OF)
static struct of_device_id w1_gpio_dt_ids[] = {
{ .compatible = "w1-gpio" },
@@ -113,13 +132,15 @@ static int w1_gpio_probe_dt(struct platform_device *pdev)
@@ -113,13 +132,15 @@ static int w1_gpio_probe_dt(struct platf
static int w1_gpio_probe(struct platform_device *pdev)
{
struct w1_bus_master *master;
@ -155,7 +151,7 @@ index 1d111e5..61be2cd 100644
}
pdata = dev_get_platdata(&pdev->dev);
@@ -136,6 +157,19 @@ static int w1_gpio_probe(struct platform_device *pdev)
@@ -136,6 +157,19 @@ static int w1_gpio_probe(struct platform
return -ENOMEM;
}
@ -175,7 +171,7 @@ index 1d111e5..61be2cd 100644
err = devm_gpio_request(&pdev->dev, pdata->pin, "w1");
if (err) {
dev_err(&pdev->dev, "gpio_request (pin) failed\n");
@@ -165,6 +199,14 @@ static int w1_gpio_probe(struct platform_device *pdev)
@@ -165,6 +199,14 @@ static int w1_gpio_probe(struct platform
master->set_pullup = w1_gpio_set_pullup;
}
@ -190,7 +186,7 @@ index 1d111e5..61be2cd 100644
err = w1_add_master_device(master);
if (err) {
dev_err(&pdev->dev, "w1_add_master device failed\n");
@@ -195,6 +237,9 @@ static int w1_gpio_remove(struct platform_device *pdev)
@@ -195,6 +237,9 @@ static int w1_gpio_remove(struct platfor
w1_remove_master_device(master);
@ -200,8 +196,6 @@ index 1d111e5..61be2cd 100644
return 0;
}
diff --git a/drivers/w1/w1.h b/drivers/w1/w1.h
index 56a49ba..881d728 100644
--- a/drivers/w1/w1.h
+++ b/drivers/w1/w1.h
@@ -171,6 +171,12 @@ struct w1_bus_master
@ -217,11 +211,9 @@ index 56a49ba..881d728 100644
void (*search)(void *, struct w1_master *,
u8, w1_slave_found_callback);
};
diff --git a/drivers/w1/w1_int.c b/drivers/w1/w1_int.c
index 47249a3..a4b4a8d 100644
--- a/drivers/w1/w1_int.c
+++ b/drivers/w1/w1_int.c
@@ -123,6 +123,20 @@ int w1_add_master_device(struct w1_bus_master *master)
@@ -123,6 +123,20 @@ int w1_add_master_device(struct w1_bus_m
return(-EINVAL);
}
@ -242,11 +234,9 @@ index 47249a3..a4b4a8d 100644
/* Lock until the device is added (or not) to w1_masters. */
mutex_lock(&w1_mlock);
/* Search for the first available id (starting at 1). */
diff --git a/drivers/w1/w1_io.c b/drivers/w1/w1_io.c
index 2820924..fd0550f 100644
--- a/drivers/w1/w1_io.c
+++ b/drivers/w1/w1_io.c
@@ -134,10 +134,22 @@ static void w1_pre_write(struct w1_master *dev)
@@ -134,10 +134,22 @@ static void w1_pre_write(struct w1_maste
static void w1_post_write(struct w1_master *dev)
{
if (dev->pullup_duration) {
@ -261,17 +251,14 @@ index 2820924..fd0550f 100644
+ } else if (dev->bus_master->bitbang_pullup) {
+ dev->bus_master->
+ bitbang_pullup(dev->bus_master->data, 1);
+ msleep(dev->pullup_duration);
msleep(dev->pullup_duration);
+ dev->bus_master->
+ bitbang_pullup(dev->bus_master->data, 0);
+ }
+ } else {
msleep(dev->pullup_duration);
+ msleep(dev->pullup_duration);
+ }
+
dev->pullup_duration = 0;
}
}
--
1.8.3.2

View File

@ -7,11 +7,9 @@ Subject: [PATCH 022/114] Added Device IDs for August DVB-T 205
drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
index 27b1e03..a2997b7 100644
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
@@ -1531,6 +1531,10 @@ static const struct usb_device_id rtl28xxu_id_table[] = {
@@ -1531,6 +1531,10 @@ static const struct usb_device_id rtl28x
&rtl2832u_props, "Compro VideoMate U620F", NULL) },
{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394,
&rtl2832u_props, "MaxMedia HU394-T", NULL) },
@ -22,6 +20,3 @@ index 27b1e03..a2997b7 100644
{ 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,
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 023/114] config: add missing options from 3.6.y kernel
arch/arm/configs/bcmrpi_defconfig | 658 ++++++++++++++++++++++++++++++++++++--
1 file changed, 636 insertions(+), 22 deletions(-)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 6d2eae1..e2da9da 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -1,3 +1,5 @@
@ -934,6 +932,3 @@ index 6d2eae1..e2da9da 100644
# CONFIG_CRYPTO_ANSI_CPRNG is not set
# CONFIG_CRYPTO_HW is not set
CONFIG_CRC_ITU_T=y
--
1.8.3.2

View File

@ -10,8 +10,6 @@ Subject: [PATCH 024/114] config: Enable CONFIG_MEMCG, but leave it disabled
mm/memcontrol.c | 1 +
3 files changed, 25 insertions(+)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index e2da9da..897616c 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -19,6 +19,7 @@ CONFIG_CGROUP_FREEZER=y
@ -22,11 +20,9 @@ index e2da9da..897616c 100644
CONFIG_BLK_CGROUP=y
CONFIG_NAMESPACES=y
CONFIG_SCHED_AUTOGROUP=y
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 136ecea..c909506 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -5322,6 +5322,29 @@ static int __init cgroup_disable(char *str)
@@ -5322,6 +5322,29 @@ static int __init cgroup_disable(char *s
}
__setup("cgroup_disable=", cgroup_disable);
@ -56,11 +52,9 @@ index 136ecea..c909506 100644
static int __init cgroup_set_legacy_files_on_dfl(char *str)
{
printk("cgroup: using legacy files on the default hierarchy\n");
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 4918b6e..168498c 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -6207,6 +6207,7 @@ struct cgroup_subsys memory_cgrp_subsys = {
@@ -6207,6 +6207,7 @@ struct cgroup_subsys memory_cgrp_subsys
.bind = mem_cgroup_bind,
.legacy_cftypes = mem_cgroup_files,
.early_init = 0,
@ -68,6 +62,3 @@ index 4918b6e..168498c 100644
};
#ifdef CONFIG_MEMCG_SWAP
--
1.8.3.2

View File

@ -282,8 +282,6 @@ incarnations.
create mode 100755 drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c
create mode 100755 drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 6283d7d..ba9c18e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -395,6 +395,7 @@ config ARCH_BCM2708
@ -294,11 +292,9 @@ index 6283d7d..ba9c18e 100644
help
This enables support for Broadcom BCM2708 boards.
diff --git a/arch/arm/include/asm/irqflags.h b/arch/arm/include/asm/irqflags.h
index 3b763d6..5770408 100644
--- a/arch/arm/include/asm/irqflags.h
+++ b/arch/arm/include/asm/irqflags.h
@@ -145,12 +145,22 @@ static inline unsigned long arch_local_save_flags(void)
@@ -145,12 +145,22 @@ static inline unsigned long arch_local_s
}
/*
@ -324,8 +320,6 @@ index 3b763d6..5770408 100644
:
: "r" (flags)
: "memory", "cc");
diff --git a/arch/arm/kernel/fiqasm.S b/arch/arm/kernel/fiqasm.S
index 8dd26e1..eef4847 100644
--- a/arch/arm/kernel/fiqasm.S
+++ b/arch/arm/kernel/fiqasm.S
@@ -47,3 +47,7 @@ ENTRY(__get_fiq_regs)
@ -336,11 +330,9 @@ index 8dd26e1..eef4847 100644
+ENTRY(__FIQ_Branch)
+ mov pc, r8
+ENDPROC(__FIQ_Branch)
diff --git a/arch/arm/mach-bcm2708/armctrl.c b/arch/arm/mach-bcm2708/armctrl.c
index ef1c8d5..96fa9b9 100644
--- a/arch/arm/mach-bcm2708/armctrl.c
+++ b/arch/arm/mach-bcm2708/armctrl.c
@@ -52,8 +52,12 @@ static void armctrl_mask_irq(struct irq_data *d)
@@ -52,8 +52,12 @@ static void armctrl_mask_irq(struct irq_
0
};
@ -355,7 +347,7 @@ index ef1c8d5..96fa9b9 100644
}
static void armctrl_unmask_irq(struct irq_data *d)
@@ -65,8 +69,14 @@ static void armctrl_unmask_irq(struct irq_data *d)
@@ -65,8 +69,14 @@ static void armctrl_unmask_irq(struct ir
0
};
@ -372,18 +364,16 @@ index ef1c8d5..96fa9b9 100644
}
#if defined(CONFIG_PM)
@@ -204,5 +214,6 @@ int __init armctrl_init(void __iomem * base, unsigned int irq_start,
@@ -204,5 +214,6 @@ int __init armctrl_init(void __iomem * b
}
armctrl_pm_register(base, irq_start, resume_sources);
+ init_FIQ(FIQ_START);
return 0;
}
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 7dd89a7f..dc59a6b 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -321,12 +321,32 @@ static struct resource bcm2708_usb_resources[] = {
@@ -321,12 +321,32 @@ static struct resource bcm2708_usb_resou
.flags = IORESOURCE_MEM,
},
[1] = {
@ -430,8 +420,6 @@ index 7dd89a7f..dc59a6b 100644
bcm_register_device(&bcm2708_usb_device);
bcm_register_device(&bcm2708_uart1_device);
bcm_register_device(&bcm2708_powerman_device);
diff --git a/arch/arm/mach-bcm2708/include/mach/irqs.h b/arch/arm/mach-bcm2708/include/mach/irqs.h
index 3a88a1a..45152ed 100644
--- a/arch/arm/mach-bcm2708/include/mach/irqs.h
+++ b/arch/arm/mach-bcm2708/include/mach/irqs.h
@@ -106,87 +106,90 @@
@ -600,11 +588,9 @@ index 3a88a1a..45152ed 100644
#define GPIO_IRQS (32*5)
#define SPARE_ALLOC_IRQS 64
#define BCM2708_ALLOC_IRQS (HARD_IRQS+FIQ_IRQS+GPIO_IRQS+SPARE_ALLOC_IRQS)
diff --git a/drivers/usb/host/dwc_common_port/dwc_common_linux.c b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
index 1668f10..5c50a8b 100644
--- a/drivers/usb/host/dwc_common_port/dwc_common_linux.c
+++ b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
@@ -580,7 +580,13 @@ void DWC_WRITE_REG64(uint64_t volatile *reg, uint64_t value)
@@ -580,7 +580,13 @@ void DWC_WRITE_REG64(uint64_t volatile *
void DWC_MODIFY_REG32(uint32_t volatile *reg, uint32_t clear_mask, uint32_t set_mask)
{
@ -618,7 +604,7 @@ index 1668f10..5c50a8b 100644
}
#if 0
@@ -995,6 +1001,11 @@ void DWC_TASK_SCHEDULE(dwc_tasklet_t *task)
@@ -995,6 +1001,11 @@ void DWC_TASK_SCHEDULE(dwc_tasklet_t *ta
tasklet_schedule(&task->t);
}
@ -630,8 +616,6 @@ index 1668f10..5c50a8b 100644
/* workqueues
- run in process context (can sleep)
diff --git a/drivers/usb/host/dwc_common_port/dwc_list.h b/drivers/usb/host/dwc_common_port/dwc_list.h
index 89cc325..4ce560d 100644
--- a/drivers/usb/host/dwc_common_port/dwc_list.h
+++ b/drivers/usb/host/dwc_common_port/dwc_list.h
@@ -384,17 +384,17 @@ struct { \
@ -659,11 +643,9 @@ index 89cc325..4ce560d 100644
/*
* Tail queue functions.
diff --git a/drivers/usb/host/dwc_common_port/dwc_os.h b/drivers/usb/host/dwc_common_port/dwc_os.h
index 8117731..a2bbe23 100644
--- a/drivers/usb/host/dwc_common_port/dwc_os.h
+++ b/drivers/usb/host/dwc_common_port/dwc_os.h
@@ -982,6 +982,8 @@ extern void DWC_TASK_FREE(dwc_tasklet_t *task);
@@ -982,6 +982,8 @@ extern void DWC_TASK_FREE(dwc_tasklet_t
extern void DWC_TASK_SCHEDULE(dwc_tasklet_t *task);
#define dwc_task_schedule DWC_TASK_SCHEDULE
@ -672,11 +654,9 @@ index 8117731..a2bbe23 100644
/** @name Timer
*
diff --git a/drivers/usb/host/dwc_otg/Makefile b/drivers/usb/host/dwc_otg/Makefile
index 236c47c..a56f193 100644
--- a/drivers/usb/host/dwc_otg/Makefile
+++ b/drivers/usb/host/dwc_otg/Makefile
@@ -36,6 +36,7 @@ dwc_otg-objs += dwc_otg_cil.o dwc_otg_cil_intr.o
@@ -36,6 +36,7 @@ dwc_otg-objs += dwc_otg_cil.o dwc_otg_ci
dwc_otg-objs += dwc_otg_pcd_linux.o dwc_otg_pcd.o dwc_otg_pcd_intr.o
dwc_otg-objs += dwc_otg_hcd.o dwc_otg_hcd_linux.o dwc_otg_hcd_intr.o dwc_otg_hcd_queue.o dwc_otg_hcd_ddma.o
dwc_otg-objs += dwc_otg_adp.o
@ -684,11 +664,9 @@ index 236c47c..a56f193 100644
ifneq ($(CFI),)
dwc_otg-objs += dwc_otg_cfi.o
endif
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_attr.c b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
index fab2961..9da0c92 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_attr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
@@ -909,7 +909,7 @@ static ssize_t regdump_show(struct device *_dev,
@@ -909,7 +909,7 @@ static ssize_t regdump_show(struct devic
return sprintf(buf, "Register Dump\n");
}
@ -697,7 +675,7 @@ index fab2961..9da0c92 100644
/**
* Dump global registers and either host or device registers (depending on the
@@ -920,12 +920,12 @@ static ssize_t spramdump_show(struct device *_dev,
@@ -920,12 +920,12 @@ static ssize_t spramdump_show(struct dev
{
dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev);
@ -712,7 +690,7 @@ index fab2961..9da0c92 100644
/**
* Dump the current hcd state.
@@ -940,7 +940,7 @@ static ssize_t hcddump_show(struct device *_dev,
@@ -940,7 +940,7 @@ static ssize_t hcddump_show(struct devic
return sprintf(buf, "HCD Dump\n");
}
@ -721,7 +699,7 @@ index fab2961..9da0c92 100644
/**
* Dump the average frame remaining at SOF. This can be used to
@@ -958,7 +958,7 @@ static ssize_t hcd_frrem_show(struct device *_dev,
@@ -958,7 +958,7 @@ static ssize_t hcd_frrem_show(struct dev
return sprintf(buf, "HCD Dump Frame Remaining\n");
}
@ -730,7 +708,7 @@ index fab2961..9da0c92 100644
/**
* Displays the time required to read the GNPTXFSIZ register many times (the
@@ -986,7 +986,7 @@ static ssize_t rd_reg_test_show(struct device *_dev,
@@ -986,7 +986,7 @@ static ssize_t rd_reg_test_show(struct d
RW_REG_COUNT, time * MSEC_PER_JIFFIE, time);
}
@ -739,7 +717,7 @@ index fab2961..9da0c92 100644
/**
* Displays the time required to write the GNPTXFSIZ register many times (the
@@ -1014,7 +1014,7 @@ static ssize_t wr_reg_test_show(struct device *_dev,
@@ -1014,7 +1014,7 @@ static ssize_t wr_reg_test_show(struct d
RW_REG_COUNT, time * MSEC_PER_JIFFIE, time);
}
@ -748,8 +726,6 @@ index fab2961..9da0c92 100644
#ifdef CONFIG_USB_DWC_OTG_LPM
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
index 59fc862..2f8b3bd 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
@@ -45,6 +45,7 @@
@ -760,7 +736,7 @@ index 59fc862..2f8b3bd 100644
#ifdef DEBUG
inline const char *op_state_str(dwc_otg_core_if_t * core_if)
@@ -1318,7 +1319,7 @@ static int32_t dwc_otg_handle_lpm_intr(dwc_otg_core_if_t * core_if)
@@ -1318,7 +1319,7 @@ static int32_t dwc_otg_handle_lpm_intr(d
/**
* This function returns the Core Interrupt register.
*/
@ -769,7 +745,7 @@ index 59fc862..2f8b3bd 100644
{
gahbcfg_data_t gahbcfg = {.d32 = 0 };
gintsts_data_t gintsts;
@@ -1335,26 +1336,45 @@ static inline uint32_t dwc_otg_read_common_intr(dwc_otg_core_if_t * core_if)
@@ -1335,26 +1336,45 @@ static inline uint32_t dwc_otg_read_comm
gintmsk_common.b.lpmtranrcvd = 1;
#endif
gintmsk_common.b.restoredone = 1;
@ -824,7 +800,7 @@ index 59fc862..2f8b3bd 100644
}
@@ -1386,6 +1406,7 @@ int32_t dwc_otg_handle_common_intr(void *dev)
@@ -1386,6 +1406,7 @@ int32_t dwc_otg_handle_common_intr(void
{
int retval = 0;
gintsts_data_t gintsts;
@ -832,7 +808,7 @@ index 59fc862..2f8b3bd 100644
gpwrdn_data_t gpwrdn = {.d32 = 0 };
dwc_otg_device_t *otg_dev = dev;
dwc_otg_core_if_t *core_if = otg_dev->core_if;
@@ -1407,7 +1428,7 @@ int32_t dwc_otg_handle_common_intr(void *dev)
@@ -1407,7 +1428,7 @@ int32_t dwc_otg_handle_common_intr(void
}
if (core_if->hibernation_suspend <= 0) {
@ -841,7 +817,7 @@ index 59fc862..2f8b3bd 100644
if (gintsts.b.modemismatch) {
retval |= dwc_otg_handle_mode_mismatch_intr(core_if);
@@ -1504,8 +1525,12 @@ int32_t dwc_otg_handle_common_intr(void *dev)
@@ -1504,8 +1525,12 @@ int32_t dwc_otg_handle_common_intr(void
gintsts.b.portintr = 1;
DWC_WRITE_REG32(&core_if->core_global_regs->gintsts,gintsts.d32);
retval |= 1;
@ -854,11 +830,9 @@ index 59fc862..2f8b3bd 100644
} else {
DWC_DEBUGPL(DBG_ANY, "gpwrdn=%08x\n", gpwrdn.d32);
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_dbg.h b/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
index 8900318..ccc24e0 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
@@ -49,6 +49,7 @@ static inline uint32_t SET_DEBUG_LEVEL(const uint32_t new)
@@ -49,6 +49,7 @@ static inline uint32_t SET_DEBUG_LEVEL(c
return old;
}
@ -866,8 +840,6 @@ index 8900318..ccc24e0 100644
/** When debug level has the DBG_CIL bit set, display CIL Debug messages. */
#define DBG_CIL (0x2)
/** When debug level has the DBG_CILV bit set, display CIL Verbose debug
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.c b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
index ac2c846..f06c3d22 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_driver.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
@@ -64,6 +64,8 @@ bool microframe_schedule=true;
@ -879,7 +851,7 @@ index ac2c846..f06c3d22 100644
extern int pcd_init(
#ifdef LM_INTERFACE
struct lm_device *_dev
@@ -238,6 +240,14 @@ static struct dwc_otg_driver_module_params dwc_otg_module_params = {
@@ -238,6 +240,14 @@ static struct dwc_otg_driver_module_para
.adp_enable = -1,
};
@ -933,7 +905,7 @@ index ac2c846..f06c3d22 100644
#else
{
struct map_desc desc = {
@@ -1044,6 +1070,12 @@ static int __init dwc_otg_driver_init(void)
@@ -1044,6 +1070,12 @@ static int __init dwc_otg_driver_init(vo
int retval = 0;
int error;
struct device_driver *drv;
@ -946,7 +918,7 @@ index ac2c846..f06c3d22 100644
printk(KERN_INFO "%s: version %s (%s bus)\n", dwc_driver_name,
DWC_DRIVER_VERSION,
#ifdef LM_INTERFACE
@@ -1063,6 +1095,9 @@ static int __init dwc_otg_driver_init(void)
@@ -1063,6 +1095,9 @@ static int __init dwc_otg_driver_init(vo
printk(KERN_ERR "%s retval=%d\n", __func__, retval);
return retval;
}
@ -956,7 +928,7 @@ index ac2c846..f06c3d22 100644
error = driver_create_file(drv, &driver_attr_version);
#ifdef DEBUG
@@ -1343,6 +1378,13 @@ MODULE_PARM_DESC(otg_ver, "OTG revision supported 0=OTG 1.3 1=OTG 2.0");
@@ -1343,6 +1378,13 @@ MODULE_PARM_DESC(otg_ver, "OTG revision
module_param(microframe_schedule, bool, 0444);
MODULE_PARM_DESC(microframe_schedule, "Enable the microframe scheduler");
@ -970,8 +942,6 @@ index ac2c846..f06c3d22 100644
/** @page "Module Parameters"
*
* The following parameters may be specified when starting the module.
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 1e89549..986d361 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -40,10 +40,14 @@
@ -990,7 +960,7 @@ index 1e89549..986d361 100644
//#define DEBUG_HOST_CHANNELS
#ifdef DEBUG_HOST_CHANNELS
@@ -53,6 +57,13 @@ static int last_sel_trans_num_avail_hc_at_start = 0;
@@ -53,6 +57,13 @@ static int last_sel_trans_num_avail_hc_a
static int last_sel_trans_num_avail_hc_at_end = 0;
#endif /* DEBUG_HOST_CHANNELS */
@ -1004,7 +974,7 @@ index 1e89549..986d361 100644
dwc_otg_hcd_t *dwc_otg_hcd_alloc_hcd(void)
{
return DWC_ALLOC(sizeof(dwc_otg_hcd_t));
@@ -162,31 +173,43 @@ static void del_timers(dwc_otg_hcd_t * hcd)
@@ -162,31 +173,43 @@ static void del_timers(dwc_otg_hcd_t * h
/**
* Processes all the URBs in a single list of QHs. Completes them with
@ -1053,7 +1023,7 @@ index 1e89549..986d361 100644
* and periodic schedules. The QTD associated with each URB is removed from
* the schedule and freed. This function may be called when a disconnect is
* detected or when the HCD is being stopped.
@@ -272,7 +295,8 @@ static int32_t dwc_otg_hcd_disconnect_cb(void *p)
@@ -272,7 +295,8 @@ static int32_t dwc_otg_hcd_disconnect_cb
*/
dwc_otg_hcd->flags.b.port_connect_status_change = 1;
dwc_otg_hcd->flags.b.port_connect_status = 0;
@ -1063,7 +1033,7 @@ index 1e89549..986d361 100644
/*
* Shutdown any transfers in process by clearing the Tx FIFO Empty
* interrupt mask and status bits and disabling subsequent host
@@ -368,8 +392,22 @@ static int32_t dwc_otg_hcd_disconnect_cb(void *p)
@@ -368,8 +392,22 @@ static int32_t dwc_otg_hcd_disconnect_cb
channel->qh = NULL;
}
}
@ -1094,7 +1064,7 @@ index 1e89549..986d361 100644
/**
* HCD Callback function for Remote Wakeup.
*
@@ -457,10 +496,12 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
@@ -457,10 +496,12 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
dwc_otg_hcd_urb_t * dwc_otg_urb, void **ep_handle,
int atomic_alloc)
{
@ -1108,7 +1078,7 @@ index 1e89549..986d361 100644
#ifdef DEBUG /* integrity checks (Broadcom) */
if (NULL == hcd->core_if) {
@@ -475,6 +516,16 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
@@ -475,6 +516,16 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
return -DWC_E_NO_DEVICE;
}
@ -1125,7 +1095,7 @@ index 1e89549..986d361 100644
qtd = dwc_otg_hcd_qtd_create(dwc_otg_urb, atomic_alloc);
if (qtd == NULL) {
DWC_ERROR("DWC OTG HCD URB Enqueue failed creating QTD\n");
@@ -490,32 +541,27 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
@@ -490,32 +541,27 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
return -DWC_E_NO_MEMORY;
}
#endif
@ -1168,7 +1138,7 @@ index 1e89549..986d361 100644
return retval;
}
@@ -524,6 +570,8 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * hcd,
@@ -524,6 +570,8 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_
{
dwc_otg_qh_t *qh;
dwc_otg_qtd_t *urb_qtd;
@ -1177,7 +1147,7 @@ index 1e89549..986d361 100644
#ifdef DEBUG /* integrity checks (Broadcom) */
@@ -540,14 +588,17 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * hcd,
@@ -540,14 +588,17 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_
return -DWC_E_INVALID;
}
urb_qtd = dwc_otg_urb->qtd;
@ -1195,7 +1165,7 @@ index 1e89549..986d361 100644
if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) {
if (urb_qtd->in_process) {
dump_channel_info(hcd, qh);
@@ -571,6 +622,8 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * hcd,
@@ -571,6 +622,8 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_
*/
dwc_otg_hc_halt(hcd->core_if, qh->channel,
DWC_OTG_HC_XFER_URB_DEQUEUE);
@ -1204,7 +1174,7 @@ index 1e89549..986d361 100644
}
}
@@ -687,6 +740,33 @@ static void reset_tasklet_func(void *data)
@@ -687,6 +740,33 @@ static void reset_tasklet_func(void *dat
dwc_otg_hcd->flags.b.port_reset_change = 1;
}
@ -1238,7 +1208,7 @@ index 1e89549..986d361 100644
static void qh_list_free(dwc_otg_hcd_t * hcd, dwc_list_link_t * qh_list)
{
dwc_list_link_t *item;
@@ -819,12 +899,14 @@ static void dwc_otg_hcd_free(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -819,12 +899,14 @@ static void dwc_otg_hcd_free(dwc_otg_hcd
} else if (dwc_otg_hcd->status_buf != NULL) {
DWC_FREE(dwc_otg_hcd->status_buf);
}
@ -1253,7 +1223,7 @@ index 1e89549..986d361 100644
#ifdef DWC_DEV_SRPCAP
if (dwc_otg_hcd->core_if->power_down == 2 &&
@@ -874,7 +956,7 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
@@ -874,7 +956,7 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
DWC_LIST_INIT(&hcd->periodic_sched_ready);
DWC_LIST_INIT(&hcd->periodic_sched_assigned);
DWC_LIST_INIT(&hcd->periodic_sched_queued);
@ -1262,7 +1232,7 @@ index 1e89549..986d361 100644
/*
* Create a host channel descriptor for each host channel implemented
* in the controller. Initialize the channel descriptor array.
@@ -912,6 +994,9 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
@@ -912,6 +994,9 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
/* Initialize reset tasklet. */
hcd->reset_tasklet = DWC_TASK_ALLOC("reset_tasklet", reset_tasklet_func, hcd);
@ -1272,7 +1242,7 @@ index 1e89549..986d361 100644
#ifdef DWC_DEV_SRPCAP
if (hcd->core_if->power_down == 2) {
/* Initialize Power on timer for Host power up in case hibernation */
@@ -944,6 +1029,12 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
@@ -944,6 +1029,12 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
hcd->frame_list = NULL;
hcd->frame_list_dma = 0;
hcd->periodic_qh_count = 0;
@ -1285,7 +1255,7 @@ index 1e89549..986d361 100644
out:
return retval;
}
@@ -1089,7 +1180,12 @@ static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -1089,7 +1180,12 @@ static void assign_and_init_hc(dwc_otg_h
uint32_t hub_addr, port_addr;
hc->do_split = 1;
hc->xact_pos = qtd->isoc_split_pos;
@ -1299,7 +1269,7 @@ index 1e89549..986d361 100644
hcd->fops->hub_info(hcd, urb->priv, &hub_addr, &port_addr);
hc->hub_addr = (uint8_t) hub_addr;
hc->port_addr = (uint8_t) port_addr;
@@ -1236,6 +1332,65 @@ static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -1236,6 +1332,65 @@ static void assign_and_init_hc(dwc_otg_h
hc->qh = qh;
}
@ -1365,7 +1335,7 @@ index 1e89549..986d361 100644
/**
* This function selects transactions from the HCD transfer schedule and
* assigns them to available host channels. It is called from HCD interrupt
@@ -1249,9 +1404,10 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1249,9 +1404,10 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
{
dwc_list_link_t *qh_ptr;
dwc_otg_qh_t *qh;
@ -1377,7 +1347,7 @@ index 1e89549..986d361 100644
dwc_otg_transaction_type_e ret_val = DWC_OTG_TRANSACTION_NONE;
#ifdef DEBUG_SOF
@@ -1269,11 +1425,29 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1269,11 +1425,29 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
while (qh_ptr != &hcd->periodic_sched_ready &&
!DWC_CIRCLEQ_EMPTY(&hcd->free_hc_list)) {
@ -1407,7 +1377,7 @@ index 1e89549..986d361 100644
break;
}
hcd->available_host_channels--;
@@ -1294,8 +1468,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1294,8 +1468,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_assigned,
&qh->qh_list_entry);
DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags);
@ -1416,7 +1386,7 @@ index 1e89549..986d361 100644
}
/*
@@ -1310,6 +1482,31 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1310,6 +1482,31 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
num_channels - hcd->periodic_channels) &&
!DWC_CIRCLEQ_EMPTY(&hcd->free_hc_list)) {
@ -1448,7 +1418,7 @@ index 1e89549..986d361 100644
if (microframe_schedule) {
DWC_SPINLOCK_IRQSAVE(channel_lock, &flags);
if (hcd->available_host_channels < 1) {
@@ -1322,7 +1519,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1322,7 +1519,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
last_sel_trans_num_nonper_scheduled++;
#endif /* DEBUG_HOST_CHANNELS */
}
@ -1456,7 +1426,7 @@ index 1e89549..986d361 100644
assign_and_init_hc(hcd, qh);
@@ -1336,21 +1532,22 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1336,21 +1532,22 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
&qh->qh_list_entry);
DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags);
@ -1486,7 +1456,7 @@ index 1e89549..986d361 100644
return ret_val;
}
@@ -1464,6 +1661,15 @@ static void process_periodic_channels(dwc_otg_hcd_t * hcd)
@@ -1464,6 +1661,15 @@ static void process_periodic_channels(dw
qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry);
@ -1502,7 +1472,7 @@ index 1e89549..986d361 100644
/*
* Set a flag if we're queuing high-bandwidth in slave mode.
* The flag prevents any halts to get into the request queue in
@@ -1593,6 +1799,15 @@ static void process_non_periodic_channels(dwc_otg_hcd_t * hcd)
@@ -1593,6 +1799,15 @@ static void process_non_periodic_channel
qh = DWC_LIST_ENTRY(hcd->non_periodic_qh_ptr, dwc_otg_qh_t,
qh_list_entry);
@ -1518,7 +1488,7 @@ index 1e89549..986d361 100644
status =
queue_transaction(hcd, qh->channel,
tx_status.b.nptxfspcavail);
@@ -3118,17 +3333,13 @@ dwc_otg_hcd_urb_t *dwc_otg_hcd_urb_alloc(dwc_otg_hcd_t * hcd,
@@ -3118,17 +3333,13 @@ dwc_otg_hcd_urb_t *dwc_otg_hcd_urb_alloc
else
dwc_otg_urb = DWC_ALLOC(size);
@ -1542,8 +1512,6 @@ index 1e89549..986d361 100644
return dwc_otg_urb;
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
index bb4f67a..0007fa1 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -168,10 +168,10 @@ typedef enum dwc_otg_control_phase {
@ -1620,7 +1588,7 @@ index bb4f67a..0007fa1 100644
/** Frame List DMA address */
dma_addr_t frame_list_dma;
@@ -589,6 +612,10 @@ extern dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t
@@ -589,6 +612,10 @@ extern dwc_otg_transaction_type_e dwc_ot
extern void dwc_otg_hcd_queue_transactions(dwc_otg_hcd_t * hcd,
dwc_otg_transaction_type_e tr_type);
@ -1631,11 +1599,9 @@ index bb4f67a..0007fa1 100644
/** @} */
/** @name Interrupt Handler Functions */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
index 274967b..ee920c4 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
@@ -276,7 +276,7 @@ void dump_frame_list(dwc_otg_hcd_t * hcd)
@@ -276,7 +276,7 @@ void dump_frame_list(dwc_otg_hcd_t * hcd
static void release_channel_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
{
dwc_irqflags_t flags;
@ -1644,7 +1610,7 @@ index 274967b..ee920c4 100644
dwc_hc_t *hc = qh->channel;
if (dwc_qh_is_non_per(qh)) {
@@ -306,7 +306,6 @@ static void release_channel_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -306,7 +306,6 @@ static void release_channel_ddma(dwc_otg
dwc_memset(qh->desc_list, 0x00,
sizeof(dwc_otg_host_dma_desc_t) * max_desc_num(qh));
}
@ -1652,11 +1618,9 @@ index 274967b..ee920c4 100644
}
/**
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
index 4823167..fb57db0 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
@@ -113,6 +113,11 @@ extern void dwc_otg_hcd_remove(dwc_otg_hcd_t * hcd);
@@ -113,6 +113,11 @@ extern void dwc_otg_hcd_remove(dwc_otg_h
*/
extern int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd);
@ -1668,8 +1632,6 @@ index 4823167..fb57db0 100644
/**
* Returns private data set by
* dwc_otg_hcd_set_priv_data function.
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
index b41e164..64d33a5 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -34,6 +34,12 @@
@ -2184,7 +2146,7 @@ index b41e164..64d33a5 100644
/* Don't print debug message in the interrupt handler on SOF */
#ifndef DEBUG_SOF
if (gintsts.d32 != DWC_SOF_INTR_MASK)
@@ -88,10 +543,16 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -88,10 +543,16 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
"DWC OTG HCD Interrupt Detected gintsts&gintmsk=0x%08x core_if=%p\n",
gintsts.d32, core_if);
#endif
@ -2203,7 +2165,7 @@ index b41e164..64d33a5 100644
if (gintsts.b.rxstsqlvl) {
retval |=
dwc_otg_hcd_handle_rx_status_q_level_intr
@@ -106,7 +567,10 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -106,7 +567,10 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
/** @todo Implement i2cintr handler. */
}
if (gintsts.b.portintr) {
@ -2214,7 +2176,7 @@ index b41e164..64d33a5 100644
}
if (gintsts.b.hcintr) {
retval |= dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd);
@@ -138,11 +602,48 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -138,11 +602,48 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
#endif
}
@ -2263,7 +2225,7 @@ index b41e164..64d33a5 100644
#warning Compiling code to track missed SOFs
#define FRAME_NUM_ARRAY_SIZE 1000
/**
@@ -188,7 +689,8 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd)
@@ -188,7 +689,8 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_
dwc_list_link_t *qh_entry;
dwc_otg_qh_t *qh;
dwc_otg_transaction_type_e tr_type;
@ -2273,7 +2235,7 @@ index b41e164..64d33a5 100644
hfnum.d32 =
DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hfnum);
@@ -212,17 +714,31 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd)
@@ -212,17 +714,31 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_
qh = DWC_LIST_ENTRY(qh_entry, dwc_otg_qh_t, qh_list_entry);
qh_entry = qh_entry->next;
if (dwc_frame_num_le(qh->sched_frame, hcd->frame_number)) {
@ -2305,7 +2267,7 @@ index b41e164..64d33a5 100644
}
/* Clear interrupt */
@@ -511,6 +1027,15 @@ int32_t dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -511,6 +1027,15 @@ int32_t dwc_otg_hcd_handle_hc_intr(dwc_o
haint.d32 = dwc_otg_read_host_all_channels_intr(dwc_otg_hcd->core_if);
@ -2321,7 +2283,7 @@ index b41e164..64d33a5 100644
for (i = 0; i < dwc_otg_hcd->core_if->core_params->host_channels; i++) {
if (haint.b2.chint & (1 << i)) {
retval |= dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd, i);
@@ -551,7 +1076,10 @@ static uint32_t get_actual_xfer_length(dwc_hc_t * hc,
@@ -551,7 +1076,10 @@ static uint32_t get_actual_xfer_length(d
*short_read = (hctsiz.b.xfersize != 0);
}
} else if (hc->qh->do_split) {
@ -2333,7 +2295,7 @@ index b41e164..64d33a5 100644
} else {
length = hc->xfer_len;
}
@@ -595,7 +1123,6 @@ static int update_urb_state_xfer_comp(dwc_hc_t * hc,
@@ -595,7 +1123,6 @@ static int update_urb_state_xfer_comp(dw
DWC_OTG_HC_XFER_COMPLETE,
&short_read);
@ -2341,7 +2303,7 @@ index b41e164..64d33a5 100644
/* non DWORD-aligned buffer case handling. */
if (hc->align_buff && xfer_length && hc->ep_is_in) {
dwc_memcpy(urb->buf + urb->actual_length, hc->qh->dw_align_buf,
@@ -797,11 +1324,24 @@ static void release_channel(dwc_otg_hcd_t * hcd,
@@ -797,11 +1324,24 @@ static void release_channel(dwc_otg_hcd_
dwc_otg_transaction_type_e tr_type;
int free_qtd;
dwc_irqflags_t flags;
@ -2401,7 +2363,7 @@ index b41e164..64d33a5 100644
}
/**
@@ -1295,6 +1852,17 @@ static int32_t handle_hc_nak_intr(dwc_otg_hcd_t * hcd,
@@ -1295,6 +1852,17 @@ static int32_t handle_hc_nak_intr(dwc_ot
"NAK Received--\n", hc->hc_num);
/*
@ -2419,7 +2381,7 @@ index b41e164..64d33a5 100644
* Handle NAK for IN/OUT SSPLIT/CSPLIT transfers, bulk, control, and
* interrupt. Re-start the SSPLIT transfer.
*/
@@ -1316,7 +1884,11 @@ static int32_t handle_hc_nak_intr(dwc_otg_hcd_t * hcd,
@@ -1316,7 +1884,11 @@ static int32_t handle_hc_nak_intr(dwc_ot
* transfers in DMA mode for the sole purpose of
* resetting the error count after a transaction error
* occurs. The core will continue transferring data.
@ -2431,7 +2393,7 @@ index b41e164..64d33a5 100644
qtd->error_count = 0;
goto handle_nak_done;
}
@@ -1428,6 +2000,15 @@ static int32_t handle_hc_ack_intr(dwc_otg_hcd_t * hcd,
@@ -1428,6 +2000,15 @@ static int32_t handle_hc_ack_intr(dwc_ot
halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_ACK);
}
} else {
@ -2447,7 +2409,7 @@ index b41e164..64d33a5 100644
qtd->error_count = 0;
if (hc->qh->ping_state) {
@@ -1490,8 +2071,10 @@ static int32_t handle_hc_nyet_intr(dwc_otg_hcd_t * hcd,
@@ -1490,8 +2071,10 @@ static int32_t handle_hc_nyet_intr(dwc_o
hc->ep_type == DWC_OTG_EP_TYPE_ISOC) {
int frnum = dwc_otg_hcd_get_frame_number(hcd);
@ -2459,7 +2421,7 @@ index b41e164..64d33a5 100644
/*
* No longer in the same full speed frame.
* Treat this as a transaction error.
@@ -1778,13 +2361,28 @@ static int32_t handle_hc_datatglerr_intr(dwc_otg_hcd_t * hcd,
@@ -1778,13 +2361,28 @@ static int32_t handle_hc_datatglerr_intr
dwc_otg_qtd_t * qtd)
{
DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: "
@ -2493,7 +2455,7 @@ index b41e164..64d33a5 100644
}
disable_hc_int(hc_regs, datatglerr);
@@ -1862,10 +2460,10 @@ static inline int halt_status_ok(dwc_otg_hcd_t * hcd,
@@ -1862,10 +2460,10 @@ static inline int halt_status_ok(dwc_otg
static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
dwc_hc_t * hc,
dwc_otg_hc_regs_t * hc_regs,
@ -2507,7 +2469,7 @@ index b41e164..64d33a5 100644
int out_nak_enh = 0;
/* For core with OUT NAK enhancement, the flow for high-
@@ -1897,8 +2495,11 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
@@ -1897,8 +2495,11 @@ static void handle_hc_chhltd_intr_dma(dw
}
/* Read the HCINTn register to determine the cause for the halt. */
@ -2521,7 +2483,7 @@ index b41e164..64d33a5 100644
if (hcint.b.xfercomp) {
/** @todo This is here because of a possible hardware bug. Spec
@@ -1937,6 +2538,8 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
@@ -1937,6 +2538,8 @@ static void handle_hc_chhltd_intr_dma(dw
handle_hc_babble_intr(hcd, hc, hc_regs, qtd);
} else if (hcint.b.frmovrun) {
handle_hc_frmovrun_intr(hcd, hc, hc_regs, qtd);
@ -2530,7 +2492,7 @@ index b41e164..64d33a5 100644
} else if (!out_nak_enh) {
if (hcint.b.nyet) {
/*
@@ -1986,12 +2589,24 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
@@ -1986,12 +2589,24 @@ static void handle_hc_chhltd_intr_dma(dw
DWC_READ_REG32(&hcd->
core_if->core_global_regs->
gintsts));
@ -2555,7 +2517,7 @@ index b41e164..64d33a5 100644
}
}
@@ -2009,13 +2624,15 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
@@ -2009,13 +2624,15 @@ static void handle_hc_chhltd_intr_dma(dw
static int32_t handle_hc_chhltd_intr(dwc_otg_hcd_t * hcd,
dwc_hc_t * hc,
dwc_otg_hc_regs_t * hc_regs,
@ -2573,7 +2535,7 @@ index b41e164..64d33a5 100644
} else {
#ifdef DEBUG
if (!halt_status_ok(hcd, hc, hc_regs, qtd)) {
@@ -2032,7 +2649,7 @@ static int32_t handle_hc_chhltd_intr(dwc_otg_hcd_t * hcd,
@@ -2032,7 +2649,7 @@ static int32_t handle_hc_chhltd_intr(dwc
int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
{
int retval = 0;
@ -2582,7 +2544,7 @@ index b41e164..64d33a5 100644
hcintmsk_data_t hcintmsk;
dwc_hc_t *hc;
dwc_otg_hc_regs_t *hc_regs;
@@ -2042,15 +2659,33 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
@@ -2042,15 +2659,33 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
hc = dwc_otg_hcd->hc_ptr_array[num];
hc_regs = dwc_otg_hcd->core_if->host_if->hc_regs[num];
@ -2616,7 +2578,7 @@ index b41e164..64d33a5 100644
if (!dwc_otg_hcd->core_if->dma_enable) {
if (hcint.b.chhltd && hcint.d32 != 0x2) {
hcint.b.chhltd = 0;
@@ -2068,7 +2703,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
@@ -2068,7 +2703,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
hcint.b.nyet = 0;
}
if (hcint.b.chhltd) {
@ -2625,7 +2587,7 @@ index b41e164..64d33a5 100644
}
if (hcint.b.ahberr) {
retval |= handle_hc_ahberr_intr(dwc_otg_hcd, hc, hc_regs, qtd);
@@ -2080,7 +2715,8 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
@@ -2080,7 +2715,8 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
retval |= handle_hc_nak_intr(dwc_otg_hcd, hc, hc_regs, qtd);
}
if (hcint.b.ack) {
@ -2635,14 +2597,12 @@ index b41e164..64d33a5 100644
}
if (hcint.b.nyet) {
retval |= handle_hc_nyet_intr(dwc_otg_hcd, hc, hc_regs, qtd);
@@ -2102,5 +2738,4 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
@@ -2102,5 +2738,4 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
return retval;
}
-
#endif /* DWC_DEVICE_ONLY */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
index e4787f5..ee8eec9 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -1,3 +1,4 @@
@ -2676,7 +2636,7 @@ index e4787f5..ee8eec9 100644
/** @name Linux HC Driver API Functions */
/** @{ */
/* manage i/o requests, device state */
@@ -259,13 +265,15 @@ static void free_bus_bandwidth(struct usb_hcd *hcd, uint32_t bw,
@@ -259,13 +265,15 @@ static void free_bus_bandwidth(struct us
/**
* Sets the final status of an URB and returns it to the device driver. Any
@ -2694,7 +2654,7 @@ index e4787f5..ee8eec9 100644
if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) {
DWC_PRINTF("%s: urb %p, device %d, ep %d %s, status=%d\n",
__func__, urb, usb_pipedevice(urb->pipe),
@@ -279,7 +287,7 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle,
@@ -279,7 +287,7 @@ static int _complete(dwc_otg_hcd_t * hcd
}
}
}
@ -2703,7 +2663,7 @@ index e4787f5..ee8eec9 100644
urb->actual_length = dwc_otg_hcd_urb_get_actual_length(dwc_otg_urb);
/* Convert status value. */
switch (status) {
@@ -301,6 +309,9 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle,
@@ -301,6 +309,9 @@ static int _complete(dwc_otg_hcd_t * hcd
case -DWC_E_OVERFLOW:
status = -EOVERFLOW;
break;
@ -2713,7 +2673,7 @@ index e4787f5..ee8eec9 100644
default:
if (status) {
DWC_PRINTF("Uknown urb status %d\n", status);
@@ -342,18 +353,33 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle,
@@ -342,18 +353,33 @@ static int _complete(dwc_otg_hcd_t * hcd
}
DWC_FREE(dwc_otg_urb);
@ -2754,7 +2714,7 @@ index e4787f5..ee8eec9 100644
return 0;
}
@@ -366,6 +392,16 @@ static struct dwc_otg_hcd_function_ops hcd_fops = {
@@ -366,6 +392,16 @@ static struct dwc_otg_hcd_function_ops h
.get_b_hnp_enable = _get_b_hnp_enable,
};
@ -2831,7 +2791,7 @@ index e4787f5..ee8eec9 100644
/* Initialize the DWC OTG HCD. */
dwc_otg_hcd = dwc_otg_hcd_alloc_hcd();
if (!dwc_otg_hcd) {
@@ -607,9 +682,7 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
@@ -607,9 +682,7 @@ static int dwc_otg_urb_enqueue(struct us
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)
struct usb_host_endpoint *ep = urb->ep;
#endif
@ -2841,7 +2801,7 @@ index e4787f5..ee8eec9 100644
void **ref_ep_hcpriv = &ep->hcpriv;
dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);
dwc_otg_hcd_urb_t *dwc_otg_urb;
@@ -661,9 +734,8 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
@@ -661,9 +734,8 @@ static int dwc_otg_urb_enqueue(struct us
if(dwc_otg_urb == NULL)
return -ENOMEM;
@ -2853,7 +2813,7 @@ index e4787f5..ee8eec9 100644
dwc_otg_hcd_urb_set_pipeinfo(dwc_otg_urb, usb_pipedevice(urb->pipe),
usb_pipeendpoint(urb->pipe), ep_type,
@@ -703,37 +775,42 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
@@ -703,37 +775,42 @@ static int dwc_otg_urb_enqueue(struct us
iso_frame_desc[i].length);
}
@ -2897,13 +2857,14 @@ index e4787f5..ee8eec9 100644
- DWC_SPINLOCK_IRQSAVE(dwc_otg_hcd->lock, &irqflags);
- usb_hcd_unlink_urb_from_ep(hcd, urb);
- DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, irqflags);
+ usb_hcd_unlink_urb_from_ep(hcd, urb);
#endif
-#endif
- if (retval == -DWC_E_NO_DEVICE) {
- retval = -ENODEV;
- }
- }
- }
+ usb_hcd_unlink_urb_from_ep(hcd, urb);
+#endif
+ DWC_FREE(dwc_otg_urb);
+ urb->hcpriv = NULL;
+ if (retval == -DWC_E_NO_DEVICE)
@ -2921,7 +2882,7 @@ index e4787f5..ee8eec9 100644
return retval;
}
@@ -777,6 +854,8 @@ static int dwc_otg_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
@@ -777,6 +854,8 @@ static int dwc_otg_urb_dequeue(struct us
usb_hcd_unlink_urb_from_ep(hcd, urb);
#endif
DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, flags);
@ -2930,8 +2891,6 @@ index e4787f5..ee8eec9 100644
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
usb_hcd_giveback_urb(hcd, urb);
#else
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
index 0a1cbb7..5c22b6c 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -41,6 +41,7 @@
@ -2942,7 +2901,7 @@ index 0a1cbb7..5c22b6c 100644
extern bool microframe_schedule;
@@ -182,6 +183,7 @@ void qh_init(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, dwc_otg_hcd_urb_t * urb)
@@ -182,6 +183,7 @@ void qh_init(dwc_otg_hcd_t * hcd, dwc_ot
if (microframe_schedule)
qh->speed = dev_speed;
@ -2950,7 +2909,7 @@ index 0a1cbb7..5c22b6c 100644
if (((dev_speed == USB_SPEED_LOW) ||
(dev_speed == USB_SPEED_FULL)) &&
@@ -191,6 +193,7 @@ void qh_init(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, dwc_otg_hcd_urb_t * urb)
@@ -191,6 +193,7 @@ void qh_init(dwc_otg_hcd_t * hcd, dwc_ot
dwc_otg_hcd_get_ep_num(&urb->pipe_info), hub_addr,
hub_port);
qh->do_split = 1;
@ -2958,7 +2917,7 @@ index 0a1cbb7..5c22b6c 100644
}
if (qh->ep_type == UE_INTERRUPT || qh->ep_type == UE_ISOCHRONOUS) {
@@ -573,6 +576,9 @@ static int check_max_xfer_size(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -573,6 +576,9 @@ static int check_max_xfer_size(dwc_otg_h
return status;
}
@ -2968,7 +2927,7 @@ index 0a1cbb7..5c22b6c 100644
/**
* Schedules an interrupt or isochronous transfer in the periodic schedule.
*
@@ -631,8 +637,13 @@ static int schedule_periodic(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -631,8 +637,13 @@ static int schedule_periodic(dwc_otg_hcd
DWC_LIST_INSERT_TAIL(&hcd->periodic_sched_ready, &qh->qh_list_entry);
}
else {
@ -2984,7 +2943,7 @@ index 0a1cbb7..5c22b6c 100644
}
if (!microframe_schedule) {
@@ -646,6 +657,7 @@ static int schedule_periodic(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -646,6 +657,7 @@ static int schedule_periodic(dwc_otg_hcd
return status;
}
@ -2992,7 +2951,7 @@ index 0a1cbb7..5c22b6c 100644
/**
* This function adds a QH to either the non periodic or periodic schedule if
* it is not already in the schedule. If the QH is already in the schedule, no
@@ -668,6 +680,7 @@ int dwc_otg_hcd_qh_add(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -668,6 +680,7 @@ int dwc_otg_hcd_qh_add(dwc_otg_hcd_t * h
/* Always start in the inactive schedule. */
DWC_LIST_INSERT_TAIL(&hcd->non_periodic_sched_inactive,
&qh->qh_list_entry);
@ -3000,7 +2959,7 @@ index 0a1cbb7..5c22b6c 100644
} else {
status = schedule_periodic(hcd, qh);
if ( !hcd->periodic_qh_count ) {
@@ -727,6 +740,9 @@ void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -727,6 +740,9 @@ void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t
hcd->non_periodic_qh_ptr->next;
}
DWC_LIST_REMOVE_INIT(&qh->qh_list_entry);
@ -3010,7 +2969,7 @@ index 0a1cbb7..5c22b6c 100644
} else {
deschedule_periodic(hcd, qh);
hcd->periodic_qh_count--;
@@ -755,6 +771,24 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh,
@@ -755,6 +771,24 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_h
int sched_next_periodic_split)
{
if (dwc_qh_is_non_per(qh)) {
@ -3035,7 +2994,7 @@ index 0a1cbb7..5c22b6c 100644
dwc_otg_hcd_qh_remove(hcd, qh);
if (!DWC_CIRCLEQ_EMPTY(&qh->qtd_list)) {
/* Add back to inactive non-periodic schedule. */
@@ -768,6 +802,7 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh,
@@ -768,6 +802,7 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_h
if (sched_next_periodic_split) {
qh->sched_frame = frame_number;
@ -3043,7 +3002,7 @@ index 0a1cbb7..5c22b6c 100644
if (dwc_frame_num_le(frame_number,
dwc_frame_num_inc
(qh->start_split_frame,
@@ -816,6 +851,11 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh,
@@ -816,6 +851,11 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_h
DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_ready,
&qh->qh_list_entry);
} else {
@ -3055,7 +3014,7 @@ index 0a1cbb7..5c22b6c 100644
DWC_LIST_MOVE_HEAD
(&hcd->periodic_sched_inactive,
&qh->qh_list_entry);
@@ -880,6 +920,7 @@ void dwc_otg_hcd_qtd_init(dwc_otg_qtd_t * qtd, dwc_otg_hcd_urb_t * urb)
@@ -880,6 +920,7 @@ void dwc_otg_hcd_qtd_init(dwc_otg_qtd_t
* QH to place the QTD into. If it does not find a QH, then it will create a
* new QH. If the QH to which the QTD is added is not currently scheduled, it
* is placed into the proper schedule based on its EP type.
@ -3063,7 +3022,7 @@ index 0a1cbb7..5c22b6c 100644
*
* @param[in] qtd The QTD to add
* @param[in] hcd The DWC HCD structure
@@ -892,8 +933,6 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
@@ -892,8 +933,6 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
dwc_otg_hcd_t * hcd, dwc_otg_qh_t ** qh, int atomic_alloc)
{
int retval = 0;
@ -3072,7 +3031,7 @@ index 0a1cbb7..5c22b6c 100644
dwc_otg_hcd_urb_t *urb = qtd->urb;
/*
@@ -903,18 +942,16 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
@@ -903,18 +942,16 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
if (*qh == NULL) {
*qh = dwc_otg_hcd_qh_create(hcd, urb, atomic_alloc);
if (*qh == NULL) {
@ -3093,9 +3052,6 @@ index 0a1cbb7..5c22b6c 100644
done:
return retval;
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c
new file mode 100755
index 0000000..50b94a8
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c
@@ -0,0 +1,113 @@
@ -3212,9 +3168,6 @@ index 0000000..50b94a8
+
+ return;
+}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
new file mode 100755
index 0000000..ca17379
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
@@ -0,0 +1,48 @@
@ -3266,8 +3219,6 @@ index 0000000..ca17379
+extern bool fiq_fix_enable, nak_holdoff_enable, fiq_split_enable;
+
+#endif
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h b/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
index e46d9bb..6b2c7d0 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
@@ -97,6 +97,9 @@ typedef struct os_dependent {
@ -3280,8 +3231,6 @@ index e46d9bb..6b2c7d0 100644
#ifdef LM_INTERFACE
struct lm_device *lmdev;
#elif defined(PCI_INTERFACE)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
index 1b1f83c..c8590b5 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
@@ -4276,7 +4276,7 @@ do { \
@ -3293,6 +3242,3 @@ index 1b1f83c..c8590b5 100644
out_desc_addr->status.d32;
if (status.b.sr) {
--
1.8.3.2

View File

@ -121,11 +121,9 @@ fiq_fsm: Enable by default
delete mode 100755 drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c
delete mode 100755 drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index dc59a6b..a740344 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -330,22 +330,13 @@ static struct resource bcm2708_usb_resources[] = {
@@ -330,22 +330,13 @@ static struct resource bcm2708_usb_resou
.end = IRQ_HOSTPORT,
.flags = IORESOURCE_IRQ,
},
@ -165,11 +163,9 @@ index dc59a6b..a740344 100644
bcm_register_device(&bcm2708_usb_device);
bcm_register_device(&bcm2708_uart1_device);
bcm_register_device(&bcm2708_powerman_device);
diff --git a/drivers/usb/host/dwc_otg/Makefile b/drivers/usb/host/dwc_otg/Makefile
index a56f193..e7bdd12 100644
--- a/drivers/usb/host/dwc_otg/Makefile
+++ b/drivers/usb/host/dwc_otg/Makefile
@@ -36,7 +36,8 @@ dwc_otg-objs += dwc_otg_cil.o dwc_otg_cil_intr.o
@@ -36,7 +36,8 @@ dwc_otg-objs += dwc_otg_cil.o dwc_otg_ci
dwc_otg-objs += dwc_otg_pcd_linux.o dwc_otg_pcd.o dwc_otg_pcd_intr.o
dwc_otg-objs += dwc_otg_hcd.o dwc_otg_hcd_linux.o dwc_otg_hcd_intr.o dwc_otg_hcd_queue.o dwc_otg_hcd_ddma.o
dwc_otg-objs += dwc_otg_adp.o
@ -179,8 +175,6 @@ index a56f193..e7bdd12 100644
ifneq ($(CFI),)
dwc_otg-objs += dwc_otg_cfi.o
endif
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
index 2f8b3bd..065807f 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
@@ -45,7 +45,6 @@
@ -191,7 +185,7 @@ index 2f8b3bd..065807f 100644
#ifdef DEBUG
inline const char *op_state_str(dwc_otg_core_if_t * core_if)
@@ -1319,7 +1318,7 @@ static int32_t dwc_otg_handle_lpm_intr(dwc_otg_core_if_t * core_if)
@@ -1319,7 +1318,7 @@ static int32_t dwc_otg_handle_lpm_intr(d
/**
* This function returns the Core Interrupt register.
*/
@ -200,7 +194,7 @@ index 2f8b3bd..065807f 100644
{
gahbcfg_data_t gahbcfg = {.d32 = 0 };
gintsts_data_t gintsts;
@@ -1345,16 +1344,15 @@ static inline uint32_t dwc_otg_read_common_intr(dwc_otg_core_if_t * core_if, gin
@@ -1345,16 +1344,15 @@ static inline uint32_t dwc_otg_read_comm
}
gintsts.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintsts);
gintmsk.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintmsk);
@ -225,7 +219,7 @@ index 2f8b3bd..065807f 100644
}
gahbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gahbcfg);
@@ -1366,13 +1364,15 @@ static inline uint32_t dwc_otg_read_common_intr(dwc_otg_core_if_t * core_if, gin
@@ -1366,13 +1364,15 @@ static inline uint32_t dwc_otg_read_comm
gintsts.d32, gintmsk.d32);
}
#endif
@ -244,7 +238,7 @@ index 2f8b3bd..065807f 100644
return ((gintsts.d32 & gintmsk.d32) & gintmsk_common.d32);
}
@@ -1406,7 +1406,7 @@ int32_t dwc_otg_handle_common_intr(void *dev)
@@ -1406,7 +1406,7 @@ int32_t dwc_otg_handle_common_intr(void
{
int retval = 0;
gintsts_data_t gintsts;
@ -253,7 +247,7 @@ index 2f8b3bd..065807f 100644
gpwrdn_data_t gpwrdn = {.d32 = 0 };
dwc_otg_device_t *otg_dev = dev;
dwc_otg_core_if_t *core_if = otg_dev->core_if;
@@ -1428,7 +1428,10 @@ int32_t dwc_otg_handle_common_intr(void *dev)
@@ -1428,7 +1428,10 @@ int32_t dwc_otg_handle_common_intr(void
}
if (core_if->hibernation_suspend <= 0) {
@ -265,7 +259,7 @@ index 2f8b3bd..065807f 100644
if (gintsts.b.modemismatch) {
retval |= dwc_otg_handle_mode_mismatch_intr(core_if);
@@ -1525,11 +1528,16 @@ int32_t dwc_otg_handle_common_intr(void *dev)
@@ -1525,11 +1528,16 @@ int32_t dwc_otg_handle_common_intr(void
gintsts.b.portintr = 1;
DWC_WRITE_REG32(&core_if->core_global_regs->gintsts,gintsts.d32);
retval |= 1;
@ -285,15 +279,13 @@ index 2f8b3bd..065807f 100644
} else {
DWC_DEBUGPL(DBG_ANY, "gpwrdn=%08x\n", gpwrdn.d32);
@@ -1583,6 +1591,5 @@ int32_t dwc_otg_handle_common_intr(void *dev)
@@ -1583,6 +1591,5 @@ int32_t dwc_otg_handle_common_intr(void
}
if (core_if->lock)
DWC_SPINUNLOCK(core_if->lock);
-
return retval;
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.c b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
index f06c3d22..dc7cd32 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_driver.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
@@ -56,6 +56,7 @@
@ -312,7 +304,7 @@ index f06c3d22..dc7cd32 100644
extern int pcd_init(
#ifdef LM_INTERFACE
@@ -240,13 +240,14 @@ static struct dwc_otg_driver_module_params dwc_otg_module_params = {
@@ -240,13 +240,14 @@ static struct dwc_otg_driver_module_para
.adp_enable = -1,
};
@ -361,7 +353,7 @@ index f06c3d22..dc7cd32 100644
#endif
DWC_DEBUGPL(DBG_CIL, "registering (common) handler for irq%d\n",
devirq);
@@ -1071,9 +1071,9 @@ static int __init dwc_otg_driver_init(void)
@@ -1071,9 +1071,9 @@ static int __init dwc_otg_driver_init(vo
int error;
struct device_driver *drv;
@ -374,7 +366,7 @@ index f06c3d22..dc7cd32 100644
}
printk(KERN_INFO "%s: version %s (%s bus)\n", dwc_driver_name,
@@ -1095,9 +1095,9 @@ static int __init dwc_otg_driver_init(void)
@@ -1095,9 +1095,9 @@ static int __init dwc_otg_driver_init(vo
printk(KERN_ERR "%s retval=%d\n", __func__, retval);
return retval;
}
@ -387,7 +379,7 @@ index f06c3d22..dc7cd32 100644
error = driver_create_file(drv, &driver_attr_version);
#ifdef DEBUG
@@ -1378,12 +1378,19 @@ MODULE_PARM_DESC(otg_ver, "OTG revision supported 0=OTG 1.3 1=OTG 2.0");
@@ -1378,12 +1378,19 @@ MODULE_PARM_DESC(otg_ver, "OTG revision
module_param(microframe_schedule, bool, 0444);
MODULE_PARM_DESC(microframe_schedule, "Enable the microframe scheduler");
@ -413,9 +405,6 @@ index f06c3d22..dc7cd32 100644
/** @page "Module Parameters"
*
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
new file mode 100644
index 0000000..1be6e71
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
@@ -0,0 +1,1290 @@
@ -1709,9 +1698,6 @@ index 0000000..1be6e71
+ state->fiq_done++;
+ mb();
+}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
new file mode 100644
index 0000000..5c7707f
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
@@ -0,0 +1,353 @@
@ -2068,9 +2054,6 @@ index 0000000..5c7707f
+extern void dwc_otg_fiq_nop(struct fiq_state *state);
+
+#endif /* DWC_OTG_FIQ_FSM_H_ */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S b/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S
new file mode 100644
index 0000000..ffa8d21
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S
@@ -0,0 +1,80 @@
@ -2154,8 +2137,6 @@ index 0000000..ffa8d21
+ subs pc, lr, #4;
+_dwc_otg_fiq_stub_end:
+END(_dwc_otg_fiq_stub)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 986d361..130096b 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -45,9 +45,10 @@
@ -2171,7 +2152,7 @@ index 986d361..130096b 100644
//#define DEBUG_HOST_CHANNELS
#ifdef DEBUG_HOST_CHANNELS
@@ -57,12 +58,6 @@ static int last_sel_trans_num_avail_hc_at_start = 0;
@@ -57,12 +58,6 @@ static int last_sel_trans_num_avail_hc_a
static int last_sel_trans_num_avail_hc_at_end = 0;
#endif /* DEBUG_HOST_CHANNELS */
@ -2184,7 +2165,7 @@ index 986d361..130096b 100644
dwc_otg_hcd_t *dwc_otg_hcd_alloc_hcd(void)
{
@@ -295,7 +290,7 @@ static int32_t dwc_otg_hcd_disconnect_cb(void *p)
@@ -295,7 +290,7 @@ static int32_t dwc_otg_hcd_disconnect_cb
*/
dwc_otg_hcd->flags.b.port_connect_status_change = 1;
dwc_otg_hcd->flags.b.port_connect_status = 0;
@ -2193,7 +2174,7 @@ index 986d361..130096b 100644
local_fiq_disable();
/*
* Shutdown any transfers in process by clearing the Tx FIFO Empty
@@ -392,20 +387,15 @@ static int32_t dwc_otg_hcd_disconnect_cb(void *p)
@@ -392,20 +387,15 @@ static int32_t dwc_otg_hcd_disconnect_cb
channel->qh = NULL;
}
}
@ -2216,7 +2197,7 @@ index 986d361..130096b 100644
local_fiq_enable();
if (dwc_otg_hcd->fops->disconnect) {
@@ -542,7 +532,7 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
@@ -542,7 +532,7 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
}
#endif
intr_mask.d32 = DWC_READ_REG32(&hcd->core_if->core_global_regs->gintmsk);
@ -2225,7 +2206,7 @@ index 986d361..130096b 100644
if((((dwc_otg_qh_t *)ep_handle)->ep_type == UE_BULK) && !(qtd->urb->flags & URB_GIVEBACK_ASAP))
/* Do not schedule SG transactions until qtd has URB_GIVEBACK_ASAP set */
needs_scheduling = 0;
@@ -613,6 +603,7 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * hcd,
@@ -613,6 +603,7 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_
if (urb_qtd->in_process && qh->channel) {
/* The QTD is in process (it has been assigned to a channel). */
if (hcd->flags.b.port_connect_status) {
@ -2233,7 +2214,7 @@ index 986d361..130096b 100644
/*
* If still connected (i.e. in host mode), halt the
* channel so it can be used for other transfers. If
@@ -620,10 +611,16 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * hcd,
@@ -620,10 +611,16 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_
* written to halt the channel since the core is in
* device mode.
*/
@ -2254,7 +2235,7 @@ index 986d361..130096b 100644
}
}
@@ -759,7 +756,6 @@ static void completion_tasklet_func(void *ptr)
@@ -759,7 +756,6 @@ static void completion_tasklet_func(void
usb_hcd_giveback_urb(hcd->priv, urb, urb->status);
@ -2297,7 +2278,7 @@ index 986d361..130096b 100644
/**
* Frees secondary storage associated with the dwc_otg_hcd structure contained
* in the struct usb_hcd field.
@@ -907,6 +931,7 @@ static void dwc_otg_hcd_free(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -907,6 +931,7 @@ static void dwc_otg_hcd_free(dwc_otg_hcd
DWC_TIMER_FREE(dwc_otg_hcd->conn_timer);
DWC_TASK_FREE(dwc_otg_hcd->reset_tasklet);
DWC_TASK_FREE(dwc_otg_hcd->completion_tasklet);
@ -2305,7 +2286,7 @@ index 986d361..130096b 100644
#ifdef DWC_DEV_SRPCAP
if (dwc_otg_hcd->core_if->power_down == 2 &&
@@ -984,6 +1009,59 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
@@ -984,6 +1009,59 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
channel);
}
@ -2365,7 +2346,7 @@ index 986d361..130096b 100644
/* Initialize the Connection timeout timer. */
hcd->conn_timer = DWC_TIMER_ALLOC("Connection timer",
dwc_otg_hcd_connect_timeout, 0);
@@ -1181,7 +1259,8 @@ static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -1181,7 +1259,8 @@ static void assign_and_init_hc(dwc_otg_h
hc->do_split = 1;
hc->xact_pos = qtd->isoc_split_pos;
/* We don't need to do complete splits anymore */
@ -2375,7 +2356,7 @@ index 986d361..130096b 100644
hc->complete_split = qtd->complete_split = 0;
else
hc->complete_split = qtd->complete_split;
@@ -1332,62 +1411,487 @@ static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -1332,62 +1411,487 @@ static void assign_and_init_hc(dwc_otg_h
hc->qh = qh;
}
@ -2468,7 +2449,8 @@ index 986d361..130096b 100644
+ dwc_hc_t *hc = qh->channel;
+ struct fiq_dma_blob *blob;
+ struct dwc_otg_hcd_iso_packet_desc *frame_desc;
+
- hcd->fops->hub_info(hcd, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->priv, &hub_addr, &port_addr);
+ for (i = 0; i < 6; i++) {
+ st->dma_info.slot_len[i] = 255;
+ }
@ -2494,24 +2476,23 @@ index 986d361..130096b 100644
+ } else {
+ if (qh->ep_type == UE_ISOCHRONOUS) {
- hcd->fops->hub_info(hcd, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->priv, &hub_addr, &port_addr);
+ dwc_otg_qtd_t *qtd = DWC_CIRCLEQ_FIRST(&qh->qtd_list);
- if(hcd->hub_port[hub_addr] & (1 << port_addr))
- {
- fiq_print(FIQDBG_PORTHUB, "H%dP%d:S%02d", hub_addr, port_addr, qh->skip_count);
+ frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index];
+ frame_length = frame_desc->length;
+ dwc_otg_qtd_t *qtd = DWC_CIRCLEQ_FIRST(&qh->qtd_list);
- qh->skip_count++;
+ /* Virtual address for bounce buffers */
+ blob = hcd->fiq_dmab;
+ frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index];
+ frame_length = frame_desc->length;
- if(qh->skip_count > 40000)
- {
- printk_once(KERN_ERR "Error: Having to skip port allocation");
- local_fiq_disable();
- BUG();
+ /* Virtual address for bounce buffers */
+ blob = hcd->fiq_dmab;
+
+ ptr = qtd->urb->buf + frame_desc->offset;
+ if (frame_length == 0) {
+ /*
@ -2706,7 +2687,8 @@ index 986d361..130096b 100644
+ if (st->fsm != FIQ_PASSTHROUGH)
+ return 0;
+ st->nr_errors = 0;
+
- hcd->fops->hub_info(hcd, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->priv, &hub_addr, &port_addr);
+ st->hcchar_copy.d32 = 0;
+ st->hcchar_copy.b.mps = hc->max_packet;
+ st->hcchar_copy.b.epdir = hc->ep_is_in;
@ -2725,7 +2707,12 @@ index 986d361..130096b 100644
+ }
+ st->hcchar_copy.b.lspddev = (hc->speed == DWC_OTG_EP_SPEED_LOW) ? 1 : 0;
+ /* Enable the channel later as a final register write. */
+
- hcd->hub_port[hub_addr] &= ~(1 << port_addr);
-#ifdef FIQ_DEBUG
- hcd->hub_port_alloc[hub_addr * 16 + port_addr] = -1;
-#endif
- fiq_print(FIQDBG_PORTHUB, "H%dP%d:RO%d", hub_addr, port_addr, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->pipe_info.ep_num);
+ st->hcsplt_copy.d32 = 0;
+ if(qh->do_split) {
+ hcd->fops->hub_info(hcd, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->priv, &hub_addr, &port_addr);
@ -2747,17 +2734,11 @@ index 986d361..130096b 100644
+ st->hub_addr = hub_addr;
+ st->port_addr = port_addr;
+ }
- hcd->fops->hub_info(hcd, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->priv, &hub_addr, &port_addr);
+
+ st->hctsiz_copy.d32 = 0;
+ st->hctsiz_copy.b.dopng = 0;
+ st->hctsiz_copy.b.pid = hc->data_pid_start;
- hcd->hub_port[hub_addr] &= ~(1 << port_addr);
-#ifdef FIQ_DEBUG
- hcd->hub_port_alloc[hub_addr * 16 + port_addr] = -1;
-#endif
- fiq_print(FIQDBG_PORTHUB, "H%dP%d:RO%d", hub_addr, port_addr, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->pipe_info.ep_num);
+
+ if (hc->ep_is_in || (hc->xfer_len > hc->max_packet)) {
+ hc->xfer_len = hc->max_packet;
+ } else if (!hc->ep_is_in && (hc->xfer_len > 188)) {
@ -2902,7 +2883,7 @@ index 986d361..130096b 100644
}
@@ -1404,16 +1908,11 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1404,16 +1908,11 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
{
dwc_list_link_t *qh_ptr;
dwc_otg_qh_t *qh;
@ -2919,7 +2900,7 @@ index 986d361..130096b 100644
#ifdef DEBUG_HOST_CHANNELS
last_sel_trans_num_per_scheduled = 0;
last_sel_trans_num_nonper_scheduled = 0;
@@ -1428,26 +1927,11 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1428,26 +1927,11 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry);
@ -2946,7 +2927,7 @@ index 986d361..130096b 100644
break;
}
hcd->available_host_channels--;
@@ -1483,27 +1967,24 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1483,27 +1967,24 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
!DWC_CIRCLEQ_EMPTY(&hcd->free_hc_list)) {
qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry);
@ -2987,7 +2968,7 @@ index 986d361..130096b 100644
}
}
@@ -1532,12 +2013,31 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
@@ -1532,12 +2013,31 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
&qh->qh_list_entry);
DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags);
@ -3021,7 +3002,7 @@ index 986d361..130096b 100644
if(!DWC_LIST_EMPTY(&hcd->periodic_sched_assigned))
ret_val |= DWC_OTG_TRANSACTION_PERIODIC;
@@ -1582,6 +2082,12 @@ static int queue_transaction(dwc_otg_hcd_t * hcd,
@@ -1582,6 +2082,12 @@ static int queue_transaction(dwc_otg_hcd
hc->qh->ping_state = 0;
}
} else if (!hc->xfer_started) {
@ -3034,7 +3015,7 @@ index 986d361..130096b 100644
dwc_otg_hc_start_transfer(hcd->core_if, hc);
hc->qh->ping_state = 0;
}
@@ -1634,7 +2140,7 @@ static void process_periodic_channels(dwc_otg_hcd_t * hcd)
@@ -1634,7 +2140,7 @@ static void process_periodic_channels(dw
hptxsts_data_t tx_status;
dwc_list_link_t *qh_ptr;
dwc_otg_qh_t *qh;
@ -3043,7 +3024,7 @@ index 986d361..130096b 100644
int no_queue_space = 0;
int no_fifo_space = 0;
@@ -1663,27 +2169,34 @@ static void process_periodic_channels(dwc_otg_hcd_t * hcd)
@@ -1663,27 +2169,34 @@ static void process_periodic_channels(dw
// Do not send a split start transaction any later than frame .6
// Note, we have to schedule a periodic in .5 to make it go in .6
@ -3094,7 +3075,7 @@ index 986d361..130096b 100644
}
/*
@@ -1800,25 +2313,19 @@ static void process_non_periodic_channels(dwc_otg_hcd_t * hcd)
@@ -1800,25 +2313,19 @@ static void process_non_periodic_channel
qh = DWC_LIST_ENTRY(hcd->non_periodic_qh_ptr, dwc_otg_qh_t,
qh_list_entry);
@ -3105,16 +3086,16 @@ index 986d361..130096b 100644
- g_next_sched_frame = dwc_otg_hcd_get_frame_number(hcd) | 7;
- break;
- }
-
- status =
- queue_transaction(hcd, qh->channel,
- tx_status.b.nptxfspcavail);
+ if(fiq_fsm_enable && fiq_fsm_transaction_suitable(qh)) {
+ fiq_fsm_queue_split_transaction(hcd, qh);
+ } else {
+ status = queue_transaction(hcd, qh->channel,
+ tx_status.b.nptxfspcavail);
- status =
- queue_transaction(hcd, qh->channel,
- tx_status.b.nptxfspcavail);
-
- if (status > 0) {
- more_to_do = 1;
- } else if (status < 0) {
@ -3131,8 +3112,6 @@ index 986d361..130096b 100644
/* Advance to next QH, skipping start-of-list entry. */
hcd->non_periodic_qh_ptr = hcd->non_periodic_qh_ptr->next;
if (hcd->non_periodic_qh_ptr == &hcd->non_periodic_sched_active) {
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
index 0007fa1..43dbed9 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -40,6 +40,8 @@
@ -3157,7 +3136,7 @@ index 0007fa1..43dbed9 100644
#ifdef DEBUG
uint32_t frrem_samples;
uint64_t frrem_accum;
@@ -615,6 +623,9 @@ extern void dwc_otg_hcd_queue_transactions(dwc_otg_hcd_t * hcd,
@@ -615,6 +623,9 @@ extern void dwc_otg_hcd_queue_transactio
int dwc_otg_hcd_allocate_port(dwc_otg_hcd_t * hcd, dwc_otg_qh_t *qh);
void dwc_otg_hcd_release_port(dwc_otg_hcd_t * dwc_otg_hcd, dwc_otg_qh_t *qh);
@ -3167,8 +3146,6 @@ index 0007fa1..43dbed9 100644
/** @} */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
index 64d33a5..4195ff2 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -34,7 +34,6 @@
@ -3213,7 +3190,7 @@ index 64d33a5..4195ff2 100644
#ifdef FIQ_DEBUG
char buffer[1000*16];
int wptr;
@@ -83,12 +57,10 @@ void notrace _fiq_print(FIQDBG_T dbg_lvl, char *fmt, ...)
@@ -83,12 +57,10 @@ void notrace _fiq_print(FIQDBG_T dbg_lvl
va_list args;
char text[17];
hfnum_data_t hfnum = { .d32 = FIQ_READ(dwc_regs_base + 0x408) };
@ -3227,7 +3204,7 @@ index 64d33a5..4195ff2 100644
snprintf(text, 9, "%4d%d:%d ", hfnum.b.frnum/8, hfnum.b.frnum%8, 8 - hfnum.b.frrem/937);
va_start(args, fmt);
vsnprintf(text+8, 9, fmt, args);
@@ -96,410 +68,21 @@ void notrace _fiq_print(FIQDBG_T dbg_lvl, char *fmt, ...)
@@ -96,410 +68,21 @@ void notrace _fiq_print(FIQDBG_T dbg_lvl
memcpy(buffer + wptr, text, 16);
wptr = (wptr + 16) % sizeof(buffer);
@ -3640,7 +3617,7 @@ index 64d33a5..4195ff2 100644
#ifdef DEBUG
dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs;
@@ -516,15 +99,29 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -516,15 +99,29 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
DWC_SPINLOCK(dwc_otg_hcd->lock);
/* Check if HOST Mode */
if (dwc_otg_is_host_mode(core_if)) {
@ -3676,7 +3653,7 @@ index 64d33a5..4195ff2 100644
#ifdef DEBUG
// We should be OK doing this because the common interrupts should already have been serviced
@@ -544,12 +141,7 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -544,12 +141,7 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
gintsts.d32, core_if);
#endif
hfnum.d32 = DWC_READ_REG32(&dwc_otg_hcd->core_if->host_if->host_global_regs->hfnum);
@ -3690,7 +3667,7 @@ index 64d33a5..4195ff2 100644
retval |= dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd);
}
@@ -604,37 +196,43 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -604,37 +196,43 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
}
exit_handler_routine:
@ -3715,12 +3692,17 @@ index 64d33a5..4195ff2 100644
- mphi_int_count = 0;
- }
- int_done++;
- }
-
- // Unmask handled interrupts
- FIQ_WRITE(dwc_regs_base + 0x18, gintmsk.d32);
- //DWC_MODIFY_REG32((uint32_t *)IO_ADDRESS(USB_BASE + 0x8), 0 , 1);
+ gintmsk_new.d32 = *(volatile uint32_t *)&dwc_otg_hcd->fiq_state->gintmsk_saved.d32;
+ if(fiq_fsm_enable)
+ haintmsk_new.d32 = *(volatile uint32_t *)&dwc_otg_hcd->fiq_state->haintmsk_saved.d32;
+ else
+ haintmsk_new.d32 = 0x0000FFFF;
+
+ /* The FIQ could have sneaked another interrupt in. If so, don't clear MPHI */
+ if ((gintmsk_new.d32 == ~0) && (haintmsk_new.d32 == 0x0000FFFF)) {
+ DWC_WRITE_REG32(dwc_otg_hcd->fiq_state->mphi_regs.intstat, (1<<16));
@ -3733,12 +3715,7 @@ index 64d33a5..4195ff2 100644
+ dwc_otg_hcd->fiq_state->mphi_int_count = 0;
+ }
+ int_done++;
}
-
- // Unmask handled interrupts
- FIQ_WRITE(dwc_regs_base + 0x18, gintmsk.d32);
- //DWC_MODIFY_REG32((uint32_t *)IO_ADDRESS(USB_BASE + 0x8), 0 , 1);
-
+ }
+ haintmsk.d32 = DWC_READ_REG32(&core_if->host_if->host_global_regs->haintmsk);
+ /* Re-enable interrupts that the FIQ masked (first time round) */
+ FIQ_WRITE(dwc_otg_hcd->fiq_state->dwc_regs_base + GINTMSK, gintmsk.d32);
@ -3759,7 +3736,7 @@ index 64d33a5..4195ff2 100644
}
}
@@ -686,6 +284,7 @@ static inline void track_missed_sofs(uint16_t curr_frame_number)
@@ -686,6 +284,7 @@ static inline void track_missed_sofs(uin
int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd)
{
hfnum_data_t hfnum;
@ -3767,7 +3744,7 @@ index 64d33a5..4195ff2 100644
dwc_list_link_t *qh_entry;
dwc_otg_qh_t *qh;
dwc_otg_transaction_type_e tr_type;
@@ -732,8 +331,8 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd)
@@ -732,8 +331,8 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_
}
}
}
@ -3778,7 +3755,7 @@ index 64d33a5..4195ff2 100644
tr_type = dwc_otg_hcd_select_transactions(hcd);
if (tr_type != DWC_OTG_TRANSACTION_NONE) {
@@ -741,10 +340,11 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd)
@@ -741,10 +340,11 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_
did_something = 1;
}
@ -3794,7 +3771,7 @@ index 64d33a5..4195ff2 100644
return 1;
}
@@ -1020,19 +620,21 @@ int32_t dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -1020,19 +620,21 @@ int32_t dwc_otg_hcd_handle_hc_intr(dwc_o
{
int i;
int retval = 0;
@ -3821,7 +3798,7 @@ index 64d33a5..4195ff2 100644
local_fiq_enable();
}
@@ -1076,9 +678,7 @@ static uint32_t get_actual_xfer_length(dwc_hc_t * hc,
@@ -1076,9 +678,7 @@ static uint32_t get_actual_xfer_length(d
*short_read = (hctsiz.b.xfersize != 0);
}
} else if (hc->qh->do_split) {
@ -3832,7 +3809,7 @@ index 64d33a5..4195ff2 100644
length = qtd->ssplit_out_xfer_count;
} else {
length = hc->xfer_len;
@@ -1325,19 +925,17 @@ static void release_channel(dwc_otg_hcd_t * hcd,
@@ -1325,19 +925,17 @@ static void release_channel(dwc_otg_hcd_
int free_qtd;
dwc_irqflags_t flags;
dwc_spinlock_t *channel_lock = hcd->channel_lock;
@ -3893,7 +3870,7 @@ index 64d33a5..4195ff2 100644
/* Try to queue more transfers now that there's a free channel. */
tr_type = dwc_otg_hcd_select_transactions(hcd);
if (tr_type != DWC_OTG_TRANSACTION_NONE) {
@@ -1858,7 +1441,7 @@ static int32_t handle_hc_nak_intr(dwc_otg_hcd_t * hcd,
@@ -1858,7 +1441,7 @@ static int32_t handle_hc_nak_intr(dwc_ot
switch(dwc_otg_hcd_get_pipe_type(&qtd->urb->pipe_info)) {
case UE_BULK:
case UE_CONTROL:
@ -3902,7 +3879,7 @@ index 64d33a5..4195ff2 100644
hc->qh->nak_frame = dwc_otg_hcd_get_frame_number(hcd);
}
@@ -2074,7 +1657,7 @@ static int32_t handle_hc_nyet_intr(dwc_otg_hcd_t * hcd,
@@ -2074,7 +1657,7 @@ static int32_t handle_hc_nyet_intr(dwc_o
// With the FIQ running we only ever see the failed NYET
if (dwc_full_frame_num(frnum) !=
dwc_full_frame_num(hc->qh->sched_frame) ||
@ -3911,7 +3888,7 @@ index 64d33a5..4195ff2 100644
/*
* No longer in the same full speed frame.
* Treat this as a transaction error.
@@ -2460,12 +2043,11 @@ static inline int halt_status_ok(dwc_otg_hcd_t * hcd,
@@ -2460,12 +2043,11 @@ static inline int halt_status_ok(dwc_otg
static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
dwc_hc_t * hc,
dwc_otg_hc_regs_t * hc_regs,
@ -3927,7 +3904,7 @@ index 64d33a5..4195ff2 100644
/* For core with OUT NAK enhancement, the flow for high-
* speed CONTROL/BULK OUT is handled a little differently.
*/
@@ -2495,11 +2077,9 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
@@ -2495,11 +2077,9 @@ static void handle_hc_chhltd_intr_dma(dw
}
/* Read the HCINTn register to determine the cause for the halt. */
@ -3942,7 +3919,7 @@ index 64d33a5..4195ff2 100644
if (hcint.b.xfercomp) {
/** @todo This is here because of a possible hardware bug. Spec
@@ -2624,15 +2204,13 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
@@ -2624,15 +2204,13 @@ static void handle_hc_chhltd_intr_dma(dw
static int32_t handle_hc_chhltd_intr(dwc_otg_hcd_t * hcd,
dwc_hc_t * hc,
dwc_otg_hc_regs_t * hc_regs,
@ -3960,7 +3937,7 @@ index 64d33a5..4195ff2 100644
} else {
#ifdef DEBUG
if (!halt_status_ok(hcd, hc, hc_regs, qtd)) {
@@ -2645,11 +2223,372 @@ static int32_t handle_hc_chhltd_intr(dwc_otg_hcd_t * hcd,
@@ -2645,11 +2223,372 @@ static int32_t handle_hc_chhltd_intr(dwc
return 1;
}
@ -4334,7 +4311,7 @@ index 64d33a5..4195ff2 100644
hcintmsk_data_t hcintmsk;
dwc_hc_t *hc;
dwc_otg_hc_regs_t *hc_regs;
@@ -2668,24 +2607,32 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
@@ -2668,24 +2607,32 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
}
qtd = DWC_CIRCLEQ_FIRST(&hc->qh->qtd_list);
@ -4382,7 +4359,7 @@ index 64d33a5..4195ff2 100644
if (!dwc_otg_hcd->core_if->dma_enable) {
if (hcint.b.chhltd && hcint.d32 != 0x2) {
hcint.b.chhltd = 0;
@@ -2703,7 +2650,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
@@ -2703,7 +2650,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
hcint.b.nyet = 0;
}
if (hcint.b.chhltd) {
@ -4391,8 +4368,6 @@ index 64d33a5..4195ff2 100644
}
if (hcint.b.ahberr) {
retval |= handle_hc_ahberr_intr(dwc_otg_hcd, hc, hc_regs, qtd);
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
index ee8eec9..98e1dc5 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -58,6 +58,7 @@
@ -4422,7 +4397,7 @@ index ee8eec9..98e1dc5 100644
/** @name Linux HC Driver API Functions */
/** @{ */
@@ -351,7 +353,6 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle,
@@ -351,7 +353,6 @@ static int _complete(dwc_otg_hcd_t * hcd
urb);
}
}
@ -4430,7 +4405,7 @@ index ee8eec9..98e1dc5 100644
DWC_FREE(dwc_otg_urb);
if (!new_entry) {
DWC_ERROR("dwc_otg_hcd: complete: cannot allocate URB TQ entry\n");
@@ -395,13 +396,9 @@ static struct dwc_otg_hcd_function_ops hcd_fops = {
@@ -395,13 +396,9 @@ static struct dwc_otg_hcd_function_ops h
static struct fiq_handler fh = {
.name = "usb_fiq",
};
@ -4582,8 +4557,6 @@ index ee8eec9..98e1dc5 100644
}
#ifdef DEBUG
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
index 5c22b6c..17d3030 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -41,7 +41,6 @@
@ -4594,7 +4567,7 @@ index 5c22b6c..17d3030 100644
extern bool microframe_schedule;
@@ -577,7 +576,6 @@ static int check_max_xfer_size(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -577,7 +576,6 @@ static int check_max_xfer_size(dwc_otg_h
}
@ -4602,7 +4575,7 @@ index 5c22b6c..17d3030 100644
/**
* Schedules an interrupt or isochronous transfer in the periodic schedule.
@@ -637,9 +635,9 @@ static int schedule_periodic(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -637,9 +635,9 @@ static int schedule_periodic(dwc_otg_hcd
DWC_LIST_INSERT_TAIL(&hcd->periodic_sched_ready, &qh->qh_list_entry);
}
else {
@ -4614,7 +4587,7 @@ index 5c22b6c..17d3030 100644
}
/* Always start in the inactive schedule. */
@@ -680,7 +678,7 @@ int dwc_otg_hcd_qh_add(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -680,7 +678,7 @@ int dwc_otg_hcd_qh_add(dwc_otg_hcd_t * h
/* Always start in the inactive schedule. */
DWC_LIST_INSERT_TAIL(&hcd->non_periodic_sched_inactive,
&qh->qh_list_entry);
@ -4623,7 +4596,7 @@ index 5c22b6c..17d3030 100644
} else {
status = schedule_periodic(hcd, qh);
if ( !hcd->periodic_qh_count ) {
@@ -740,13 +738,12 @@ void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -740,13 +738,12 @@ void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t
hcd->non_periodic_qh_ptr->next;
}
DWC_LIST_REMOVE_INIT(&qh->qh_list_entry);
@ -4640,7 +4613,7 @@ index 5c22b6c..17d3030 100644
intr_mask.b.sofintr = 1;
DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk,
intr_mask.d32, 0);
@@ -771,28 +768,11 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh,
@@ -771,28 +768,11 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_h
int sched_next_periodic_split)
{
if (dwc_qh_is_non_per(qh)) {
@ -4670,7 +4643,7 @@ index 5c22b6c..17d3030 100644
}
} else {
uint16_t frame_number = dwc_otg_hcd_get_frame_number(hcd);
@@ -851,9 +831,9 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh,
@@ -851,9 +831,9 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_h
DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_ready,
&qh->qh_list_entry);
} else {
@ -4682,7 +4655,7 @@ index 5c22b6c..17d3030 100644
}
DWC_LIST_MOVE_HEAD
@@ -944,6 +924,9 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
@@ -944,6 +924,9 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
if (*qh == NULL) {
retval = -DWC_E_NO_MEMORY;
goto done;
@ -4692,9 +4665,6 @@ index 5c22b6c..17d3030 100644
}
}
retval = dwc_otg_hcd_qh_add(hcd, *qh);
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c
deleted file mode 100755
index 50b94a8..0000000
--- a/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c
+++ /dev/null
@@ -1,113 +0,0 @@
@ -4811,9 +4781,6 @@ index 50b94a8..0000000
-
- return;
-}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
deleted file mode 100755
index ca17379..0000000
--- a/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
+++ /dev/null
@@ -1,48 +0,0 @@
@ -4865,8 +4832,6 @@ index ca17379..0000000
-extern bool fiq_fix_enable, nak_holdoff_enable, fiq_split_enable;
-
-#endif
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
index 5d310df..4b32941 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
@@ -59,6 +59,8 @@
@ -4895,6 +4860,3 @@ index 5d310df..4b32941 100644
free_wrapper(gadget_wrapper);
return -EBUSY;
}
--
1.8.3.2

View File

@ -46,9 +46,6 @@ Signed-off-by: Luke Diamand <luked@broadcom.com>
create mode 100644 drivers/media/platform/bcm2835/mmal-vchiq.c
create mode 100644 drivers/media/platform/bcm2835/mmal-vchiq.h
diff --git a/Documentation/video4linux/bcm2835-v4l2.txt b/Documentation/video4linux/bcm2835-v4l2.txt
new file mode 100644
index 0000000..c585a8f
--- /dev/null
+++ b/Documentation/video4linux/bcm2835-v4l2.txt
@@ -0,0 +1,60 @@
@ -112,8 +109,6 @@ index 0000000..c585a8f
+List of available formats:
+
+$ v4l2-ctl --list-formats
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 3aac88f..9bc18aa 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -126,6 +126,7 @@ config VIDEO_S3C_CAMIF
@ -124,20 +119,15 @@ index 3aac88f..9bc18aa 100644
endif # V4L_PLATFORM_DRIVERS
diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile
index 579046b..9c9cb34 100644
--- a/drivers/media/platform/Makefile
+++ b/drivers/media/platform/Makefile
@@ -49,4 +49,6 @@ obj-$(CONFIG_VIDEO_RENESAS_VSP1) += vsp1/
@@ -49,4 +49,6 @@ obj-$(CONFIG_VIDEO_RENESAS_VSP1) += vsp1
obj-y += omap/
+obj-$(CONFIG_VIDEO_BCM2835) += bcm2835/
+
ccflags-y += -I$(srctree)/drivers/media/i2c
diff --git a/drivers/media/platform/bcm2835/Kconfig b/drivers/media/platform/bcm2835/Kconfig
new file mode 100644
index 0000000..a8fd172
--- /dev/null
+++ b/drivers/media/platform/bcm2835/Kconfig
@@ -0,0 +1,25 @@
@ -166,9 +156,6 @@ index 0000000..a8fd172
+
+
+endif # VIDEO_BM2835
diff --git a/drivers/media/platform/bcm2835/Makefile b/drivers/media/platform/bcm2835/Makefile
new file mode 100644
index 0000000..f17c79c
--- /dev/null
+++ b/drivers/media/platform/bcm2835/Makefile
@@ -0,0 +1,5 @@
@ -177,9 +164,6 @@ index 0000000..f17c79c
+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 --git a/drivers/media/platform/bcm2835/bcm2835-camera.c b/drivers/media/platform/bcm2835/bcm2835-camera.c
new file mode 100644
index 0000000..1c9d9d5
--- /dev/null
+++ b/drivers/media/platform/bcm2835/bcm2835-camera.c
@@ -0,0 +1,1476 @@
@ -1659,9 +1643,6 @@ index 0000000..1c9d9d5
+
+module_init(bm2835_mmal_init);
+module_exit(bm2835_mmal_exit);
diff --git a/drivers/media/platform/bcm2835/bcm2835-camera.h b/drivers/media/platform/bcm2835/bcm2835-camera.h
new file mode 100644
index 0000000..883eab7
--- /dev/null
+++ b/drivers/media/platform/bcm2835/bcm2835-camera.h
@@ -0,0 +1,113 @@
@ -1778,9 +1759,6 @@ index 0000000..883eab7
+ (pix_fmt)->pixelformat, (pix_fmt)->bytesperline, \
+ (pix_fmt)->sizeimage, (pix_fmt)->colorspace, (pix_fmt)->priv); \
+}
diff --git a/drivers/media/platform/bcm2835/controls.c b/drivers/media/platform/bcm2835/controls.c
new file mode 100644
index 0000000..d1408e5
--- /dev/null
+++ b/drivers/media/platform/bcm2835/controls.c
@@ -0,0 +1,725 @@
@ -2509,9 +2487,6 @@ index 0000000..d1408e5
+
+ return 0;
+}
diff --git a/drivers/media/platform/bcm2835/mmal-common.h b/drivers/media/platform/bcm2835/mmal-common.h
new file mode 100644
index 0000000..84abbb3
--- /dev/null
+++ b/drivers/media/platform/bcm2835/mmal-common.h
@@ -0,0 +1,51 @@
@ -2566,9 +2541,6 @@ index 0000000..84abbb3
+ u32 u;
+ u32 v;
+};
diff --git a/drivers/media/platform/bcm2835/mmal-encodings.h b/drivers/media/platform/bcm2835/mmal-encodings.h
new file mode 100644
index 0000000..856e80e
--- /dev/null
+++ b/drivers/media/platform/bcm2835/mmal-encodings.h
@@ -0,0 +1,93 @@
@ -2665,9 +2637,6 @@ index 0000000..856e80e
+#define MMAL_ENCODING_VARIANT_H264_AVC1 MMAL_FOURCC('A', 'V', 'C', '1')
+/** Implicitly delineated NAL units without emulation prevention */
+#define MMAL_ENCODING_VARIANT_H264_RAW MMAL_FOURCC('R', 'A', 'W', ' ')
diff --git a/drivers/media/platform/bcm2835/mmal-msg-common.h b/drivers/media/platform/bcm2835/mmal-msg-common.h
new file mode 100644
index 0000000..66e8a6e
--- /dev/null
+++ b/drivers/media/platform/bcm2835/mmal-msg-common.h
@@ -0,0 +1,50 @@
@ -2721,9 +2690,6 @@ index 0000000..66e8a6e
+};
+
+#endif /* MMAL_MSG_COMMON_H */
diff --git a/drivers/media/platform/bcm2835/mmal-msg-format.h b/drivers/media/platform/bcm2835/mmal-msg-format.h
new file mode 100644
index 0000000..123d86e
--- /dev/null
+++ b/drivers/media/platform/bcm2835/mmal-msg-format.h
@@ -0,0 +1,81 @@
@ -2808,9 +2774,6 @@ index 0000000..123d86e
+};
+
+#endif /* MMAL_MSG_FORMAT_H */
diff --git a/drivers/media/platform/bcm2835/mmal-msg-port.h b/drivers/media/platform/bcm2835/mmal-msg-port.h
new file mode 100644
index 0000000..a55c1ea
--- /dev/null
+++ b/drivers/media/platform/bcm2835/mmal-msg-port.h
@@ -0,0 +1,107 @@
@ -2921,9 +2884,6 @@ index 0000000..a55c1ea
+ */
+
+};
diff --git a/drivers/media/platform/bcm2835/mmal-msg.h b/drivers/media/platform/bcm2835/mmal-msg.h
new file mode 100644
index 0000000..67b1076
--- /dev/null
+++ b/drivers/media/platform/bcm2835/mmal-msg.h
@@ -0,0 +1,404 @@
@ -3331,9 +3291,6 @@ index 0000000..67b1076
+ u8 payload[MMAL_MSG_MAX_PAYLOAD];
+ } u;
+};
diff --git a/drivers/media/platform/bcm2835/mmal-parameters.h b/drivers/media/platform/bcm2835/mmal-parameters.h
new file mode 100644
index 0000000..c611b58
--- /dev/null
+++ b/drivers/media/platform/bcm2835/mmal-parameters.h
@@ -0,0 +1,539 @@
@ -3876,9 +3833,6 @@ index 0000000..c611b58
+ u32 num_effect_params;
+ u32 effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS];
+};
diff --git a/drivers/media/platform/bcm2835/mmal-vchiq.c b/drivers/media/platform/bcm2835/mmal-vchiq.c
new file mode 100644
index 0000000..a06fb44
--- /dev/null
+++ b/drivers/media/platform/bcm2835/mmal-vchiq.c
@@ -0,0 +1,1916 @@
@ -5798,9 +5752,6 @@ index 0000000..a06fb44
+ kfree(instance);
+ return -ENODEV;
+}
diff --git a/drivers/media/platform/bcm2835/mmal-vchiq.h b/drivers/media/platform/bcm2835/mmal-vchiq.h
new file mode 100644
index 0000000..9d1d11e
--- /dev/null
+++ b/drivers/media/platform/bcm2835/mmal-vchiq.h
@@ -0,0 +1,178 @@
@ -5982,6 +5933,3 @@ index 0000000..9d1d11e
+ struct mmal_buffer *buf);
+
+#endif /* MMAL_VCHIQ_H */
--
1.8.3.2

View File

@ -232,8 +232,6 @@ bcm2835-camera: stop_streaming now has a void return
drivers/media/platform/bcm2835/mmal-vchiq.c | 4 +-
8 files changed, 1300 insertions(+), 187 deletions(-)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 897616c..3f99687 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -708,6 +708,9 @@ CONFIG_DVB_AS102=m
@ -246,8 +244,6 @@ index 897616c..3f99687 100644
CONFIG_RADIO_SI470X=y
CONFIG_USB_SI470X=m
CONFIG_I2C_SI470X=m
diff --git a/drivers/media/platform/bcm2835/bcm2835-camera.c b/drivers/media/platform/bcm2835/bcm2835-camera.c
index 1c9d9d5..e5a0010 100644
--- a/drivers/media/platform/bcm2835/bcm2835-camera.c
+++ b/drivers/media/platform/bcm2835/bcm2835-camera.c
@@ -36,7 +36,8 @@
@ -415,7 +411,7 @@ index 1c9d9d5..e5a0010 100644
};
static struct mmal_fmt *get_format(struct v4l2_format *f)
@@ -229,7 +336,8 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
@@ -229,7 +336,8 @@ static void buffer_cb(struct vchiq_mmal_
}
} else {
if (dev->capture.frame_count) {
@ -425,7 +421,7 @@ index 1c9d9d5..e5a0010 100644
s64 runtime_us = pts -
dev->capture.vc_start_timestamp;
u32 div = 0;
@@ -250,7 +358,7 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
@@ -250,7 +358,7 @@ static void buffer_cb(struct vchiq_mmal_
USEC_PER_SEC;
}
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
@ -434,7 +430,7 @@ index 1c9d9d5..e5a0010 100644
"with offset %llu to %d.%06d\n",
(int)dev->capture.kernel_start_ts.
tv_sec,
@@ -425,7 +533,15 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
@@ -425,7 +533,15 @@ static int start_streaming(struct vb2_qu
vchiq_mmal_port_enable(dev->instance, dev->capture.port, buffer_cb);
if (ret) {
v4l2_err(&dev->v4l2_dev,
@ -451,7 +447,7 @@ index 1c9d9d5..e5a0010 100644
return -1;
}
@@ -439,7 +555,7 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
@@ -439,7 +555,7 @@ static int start_streaming(struct vb2_qu
}
/* abort streaming and wait for last buffer */
@ -460,7 +456,7 @@ index 1c9d9d5..e5a0010 100644
{
int ret;
struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq);
@@ -451,8 +567,11 @@ static int stop_streaming(struct vb2_queue *vq)
@@ -451,8 +567,11 @@ static int stop_streaming(struct vb2_que
dev->capture.frame_count = 0;
/* ensure a format has actually been set */
@ -474,7 +470,7 @@ index 1c9d9d5..e5a0010 100644
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, "stopping capturing\n");
@@ -483,12 +602,8 @@ static int stop_streaming(struct vb2_queue *vq)
@@ -483,12 +602,8 @@ static int stop_streaming(struct vb2_que
ret);
}
@ -489,7 +485,7 @@ index 1c9d9d5..e5a0010 100644
}
static void bm2835_mmal_lock(struct vb2_queue *vq)
@@ -530,6 +645,7 @@ static int vidioc_enum_fmt_vid_overlay(struct file *file, void *priv,
@@ -530,6 +645,7 @@ static int vidioc_enum_fmt_vid_overlay(s
strlcpy(f->description, fmt->name, sizeof(f->description));
f->pixelformat = fmt->fourcc;
@ -497,7 +493,7 @@ index 1c9d9d5..e5a0010 100644
return 0;
}
@@ -647,10 +763,18 @@ static int vidioc_g_fbuf(struct file *file, void *fh,
@@ -647,10 +763,18 @@ static int vidioc_g_fbuf(struct file *fi
{
/* The video overlay must stay within the framebuffer and can't be
positioned independently. */
@ -519,7 +515,7 @@ index 1c9d9d5..e5a0010 100644
return 0;
}
@@ -717,6 +841,8 @@ static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
@@ -717,6 +841,8 @@ static int vidioc_enum_fmt_vid_cap(struc
strlcpy(f->description, fmt->name, sizeof(f->description));
f->pixelformat = fmt->fourcc;
@ -528,7 +524,7 @@ index 1c9d9d5..e5a0010 100644
return 0;
}
@@ -729,20 +855,13 @@ static int vidioc_g_fmt_vid_cap(struct file *file, void *priv,
@@ -729,20 +855,13 @@ static int vidioc_g_fmt_vid_cap(struct f
f->fmt.pix.height = dev->capture.height;
f->fmt.pix.field = V4L2_FIELD_NONE;
f->fmt.pix.pixelformat = dev->capture.fmt->fourcc;
@ -554,7 +550,7 @@ index 1c9d9d5..e5a0010 100644
f->fmt.pix.priv = 0;
v4l2_dump_pix_format(1, bcm2835_v4l2_debug, &dev->v4l2_dev, &f->fmt.pix,
@@ -766,21 +885,35 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
@@ -766,21 +885,35 @@ static int vidioc_try_fmt_vid_cap(struct
}
f->fmt.pix.field = V4L2_FIELD_NONE;
@ -600,7 +596,7 @@ index 1c9d9d5..e5a0010 100644
v4l2_dump_pix_format(1, bcm2835_v4l2_debug, &dev->v4l2_dev, &f->fmt.pix,
__func__);
return 0;
@@ -818,8 +951,8 @@ static int mmal_setup_components(struct bm2835_mmal_dev *dev,
@@ -818,8 +951,8 @@ static int mmal_setup_components(struct
switch (mfmt->mmal_component) {
case MMAL_COMPONENT_CAMERA:
/* Make a further decision on port based on resolution */
@ -611,7 +607,7 @@ index 1c9d9d5..e5a0010 100644
camera_port = port =
&dev->component[MMAL_COMPONENT_CAMERA]->
output[MMAL_CAMERA_PORT_VIDEO];
@@ -861,8 +994,9 @@ static int mmal_setup_components(struct bm2835_mmal_dev *dev,
@@ -861,8 +994,9 @@ static int mmal_setup_components(struct
camera_port->es.video.crop.y = 0;
camera_port->es.video.crop.width = f->fmt.pix.width;
camera_port->es.video.crop.height = f->fmt.pix.height;
@ -622,7 +618,7 @@ index 1c9d9d5..e5a0010 100644
ret = vchiq_mmal_port_set_format(dev->instance, camera_port);
@@ -896,8 +1030,10 @@ static int mmal_setup_components(struct bm2835_mmal_dev *dev,
@@ -896,8 +1030,10 @@ static int mmal_setup_components(struct
preview_port->es.video.crop.y = 0;
preview_port->es.video.crop.width = f->fmt.pix.width;
preview_port->es.video.crop.height = f->fmt.pix.height;
@ -635,7 +631,7 @@ index 1c9d9d5..e5a0010 100644
ret = vchiq_mmal_port_set_format(dev->instance, preview_port);
if (overlay_enabled) {
ret = vchiq_mmal_port_connect_tunnel(
@@ -913,7 +1049,9 @@ static int mmal_setup_components(struct bm2835_mmal_dev *dev,
@@ -913,7 +1049,9 @@ static int mmal_setup_components(struct
if (ret) {
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
@ -646,7 +642,7 @@ index 1c9d9d5..e5a0010 100644
/* ensure capture is not going to be tried */
dev->capture.port = NULL;
} else {
@@ -927,69 +1065,91 @@ static int mmal_setup_components(struct bm2835_mmal_dev *dev,
@@ -927,69 +1065,91 @@ static int mmal_setup_components(struct
camera_port->current_buffer.num =
camera_port->recommended_buffer.num;
@ -792,7 +788,7 @@ index 1c9d9d5..e5a0010 100644
}
} else {
/* configure buffering */
@@ -1001,13 +1161,20 @@ static int mmal_setup_components(struct bm2835_mmal_dev *dev,
@@ -1001,13 +1161,20 @@ static int mmal_setup_components(struct
if (!ret) {
dev->capture.fmt = mfmt;
dev->capture.stride = f->fmt.pix.bytesperline;
@ -815,7 +811,7 @@ index 1c9d9d5..e5a0010 100644
}
}
@@ -1048,14 +1215,115 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
@@ -1048,14 +1215,115 @@ static int vidioc_s_fmt_vid_cap(struct f
}
ret = mmal_setup_components(dev, f);
@ -932,7 +928,7 @@ index 1c9d9d5..e5a0010 100644
static const struct v4l2_ioctl_ops camera0_ioctl_ops = {
/* overlay */
.vidioc_enum_fmt_vid_overlay = vidioc_enum_fmt_vid_overlay,
@@ -1084,6 +1352,51 @@ static const struct v4l2_ioctl_ops camera0_ioctl_ops = {
@@ -1084,6 +1352,51 @@ static const struct v4l2_ioctl_ops camer
.vidioc_querybuf = vb2_ioctl_querybuf,
.vidioc_qbuf = vb2_ioctl_qbuf,
.vidioc_dqbuf = vb2_ioctl_dqbuf,
@ -984,7 +980,7 @@ index 1c9d9d5..e5a0010 100644
.vidioc_streamon = vb2_ioctl_streamon,
.vidioc_streamoff = vb2_ioctl_streamoff,
@@ -1122,8 +1435,10 @@ static int set_camera_parameters(struct vchiq_mmal_instance *instance,
@@ -1122,8 +1435,10 @@ static int set_camera_parameters(struct
.max_stills_h = MAX_HEIGHT,
.stills_yuv422 = 1,
.one_shot_stills = 1,
@ -997,7 +993,7 @@ index 1c9d9d5..e5a0010 100644
.num_preview_video_frames = 3,
.stills_capture_circular_buffer_height = 0,
.fast_preview_resume = 0,
@@ -1141,6 +1456,7 @@ static int __init mmal_init(struct bm2835_mmal_dev *dev)
@@ -1141,6 +1456,7 @@ static int __init mmal_init(struct bm283
{
int ret;
struct mmal_es_format *format;
@ -1005,7 +1001,7 @@ index 1c9d9d5..e5a0010 100644
ret = vchiq_mmal_init(&dev->instance);
if (ret < 0)
@@ -1176,8 +1492,8 @@ static int __init mmal_init(struct bm2835_mmal_dev *dev)
@@ -1176,8 +1492,8 @@ static int __init mmal_init(struct bm283
format->es->video.crop.y = 0;
format->es->video.crop.width = 1024;
format->es->video.crop.height = 768;
@ -1016,7 +1012,7 @@ index 1c9d9d5..e5a0010 100644
format =
&dev->component[MMAL_COMPONENT_CAMERA]->
@@ -1192,8 +1508,14 @@ static int __init mmal_init(struct bm2835_mmal_dev *dev)
@@ -1192,8 +1508,14 @@ static int __init mmal_init(struct bm283
format->es->video.crop.y = 0;
format->es->video.crop.width = 1024;
format->es->video.crop.height = 768;
@ -1033,7 +1029,7 @@ index 1c9d9d5..e5a0010 100644
format =
&dev->component[MMAL_COMPONENT_CAMERA]->
@@ -1207,13 +1529,22 @@ static int __init mmal_init(struct bm2835_mmal_dev *dev)
@@ -1207,13 +1529,22 @@ static int __init mmal_init(struct bm283
format->es->video.crop.y = 0;
format->es->video.crop.width = 2592;
format->es->video.crop.height = 1944;
@ -1057,7 +1053,7 @@ index 1c9d9d5..e5a0010 100644
/* get the preview component ready */
ret = vchiq_mmal_component_init(
@@ -1260,6 +1591,14 @@ static int __init mmal_init(struct bm2835_mmal_dev *dev)
@@ -1260,6 +1591,14 @@ static int __init mmal_init(struct bm283
}
{
@ -1072,7 +1068,7 @@ index 1c9d9d5..e5a0010 100644
unsigned int enable = 1;
vchiq_mmal_port_parameter_set(
dev->instance,
@@ -1312,6 +1651,11 @@ static int __init bm2835_mmal_init_device(struct bm2835_mmal_dev *dev,
@@ -1312,6 +1651,11 @@ static int __init bm2835_mmal_init_devic
int ret;
*vfd = vdev_template;
@ -1084,7 +1080,7 @@ index 1c9d9d5..e5a0010 100644
vfd->v4l2_dev = &dev->v4l2_dev;
@@ -1326,8 +1670,9 @@ static int __init bm2835_mmal_init_device(struct bm2835_mmal_dev *dev,
@@ -1326,8 +1670,9 @@ static int __init bm2835_mmal_init_devic
if (ret < 0)
return ret;
@ -1096,7 +1092,7 @@ index 1c9d9d5..e5a0010 100644
return 0;
}
@@ -1335,9 +1680,9 @@ static int __init bm2835_mmal_init_device(struct bm2835_mmal_dev *dev,
@@ -1335,9 +1680,9 @@ static int __init bm2835_mmal_init_devic
static struct v4l2_format default_v4l2_format = {
.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG,
.fmt.pix.width = 1024,
@ -1118,8 +1114,6 @@ index 1c9d9d5..e5a0010 100644
ret = mmal_setup_components(dev, &default_v4l2_format);
if (ret < 0) {
v4l2_err(&dev->v4l2_dev,
diff --git a/drivers/media/platform/bcm2835/bcm2835-camera.h b/drivers/media/platform/bcm2835/bcm2835-camera.h
index 883eab7..7fe9f65 100644
--- a/drivers/media/platform/bcm2835/bcm2835-camera.h
+++ b/drivers/media/platform/bcm2835/bcm2835-camera.h
@@ -15,7 +15,7 @@
@ -1189,8 +1183,6 @@ index 883eab7..7fe9f65 100644
/* Debug helpers */
diff --git a/drivers/media/platform/bcm2835/controls.c b/drivers/media/platform/bcm2835/controls.c
index d1408e5..3017b94 100644
--- a/drivers/media/platform/bcm2835/controls.c
+++ b/drivers/media/platform/bcm2835/controls.c
@@ -30,11 +30,23 @@
@ -1249,7 +1241,7 @@ index d1408e5..3017b94 100644
};
struct v4l2_to_mmal_effects_setting {
@@ -126,6 +145,25 @@ static const struct v4l2_to_mmal_effects_setting
@@ -126,6 +145,25 @@ static const struct v4l2_to_mmal_effects
1, 1, 0, 0, 0, {0, 0, 0, 0, 0} }
};
@ -1275,7 +1267,7 @@ index d1408e5..3017b94 100644
/* control handlers*/
@@ -133,10 +171,7 @@ static int ctrl_set_rational(struct bm2835_mmal_dev *dev,
@@ -133,10 +171,7 @@ static int ctrl_set_rational(struct bm28
struct v4l2_ctrl *ctrl,
const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl)
{
@ -1287,7 +1279,7 @@ index d1408e5..3017b94 100644
struct vchiq_mmal_port *control;
control = &dev->component[MMAL_COMPONENT_CAMERA]->control;
@@ -166,6 +201,41 @@ static int ctrl_set_value(struct bm2835_mmal_dev *dev,
@@ -166,6 +201,41 @@ static int ctrl_set_value(struct bm2835_
&u32_value, sizeof(u32_value));
}
@ -1329,7 +1321,7 @@ index d1408e5..3017b94 100644
static int ctrl_set_rotate(struct bm2835_mmal_dev *dev,
struct v4l2_ctrl *ctrl,
const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl)
@@ -245,37 +315,97 @@ static int ctrl_set_exposure(struct bm2835_mmal_dev *dev,
@@ -245,37 +315,97 @@ static int ctrl_set_exposure(struct bm28
struct v4l2_ctrl *ctrl,
const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl)
{
@ -1439,7 +1431,7 @@ index d1408e5..3017b94 100644
struct v4l2_ctrl *ctrl,
const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl)
{
@@ -285,24 +415,18 @@ static int ctrl_set_metering_mode(struct bm2835_mmal_dev *dev,
@@ -285,24 +415,18 @@ static int ctrl_set_metering_mode(struct
control = &dev->component[MMAL_COMPONENT_CAMERA]->control;
switch (ctrl->val) {
@ -1472,7 +1464,7 @@ index d1408e5..3017b94 100644
}
return vchiq_mmal_port_parameter_set(dev->instance, control,
@@ -367,6 +491,29 @@ static int ctrl_set_awb_mode(struct bm2835_mmal_dev *dev,
@@ -367,6 +491,29 @@ static int ctrl_set_awb_mode(struct bm28
&u32_value, sizeof(u32_value));
}
@ -1502,7 +1494,7 @@ index d1408e5..3017b94 100644
static int ctrl_set_image_effect(struct bm2835_mmal_dev *dev,
struct v4l2_ctrl *ctrl,
const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl)
@@ -443,8 +590,8 @@ static int ctrl_set_colfx(struct bm2835_mmal_dev *dev,
@@ -443,8 +590,8 @@ static int ctrl_set_colfx(struct bm2835_
&dev->colourfx, sizeof(dev->colourfx));
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
@ -1513,7 +1505,7 @@ index d1408e5..3017b94 100644
(ret == 0 ? 0 : -EINVAL));
return (ret == 0 ? 0 : EINVAL);
}
@@ -494,7 +641,7 @@ static int ctrl_set_bitrate_mode(struct bm2835_mmal_dev *dev,
@@ -494,7 +641,7 @@ static int ctrl_set_bitrate_mode(struct
return 0;
}
@ -1522,7 +1514,7 @@ index d1408e5..3017b94 100644
struct v4l2_ctrl *ctrl,
const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl)
{
@@ -510,12 +657,247 @@ static int ctrl_set_q_factor(struct bm2835_mmal_dev *dev,
@@ -510,12 +657,247 @@ static int ctrl_set_q_factor(struct bm28
&u32_value, sizeof(u32_value));
}
@ -1770,7 +1762,7 @@ index d1408e5..3017b94 100644
if ((mmal_ctrl == NULL) ||
(mmal_ctrl->id != ctrl->id) ||
@@ -524,7 +906,13 @@ static int bm2835_mmal_s_ctrl(struct v4l2_ctrl *ctrl)
@@ -524,7 +906,13 @@ static int bm2835_mmal_s_ctrl(struct v4l
return -EINVAL;
}
@ -1785,7 +1777,7 @@ index d1408e5..3017b94 100644
}
static const struct v4l2_ctrl_ops bm2835_mmal_ctrl_ops = {
@@ -537,40 +925,54 @@ static const struct bm2835_mmal_v4l2_ctrl v4l2_ctrls[V4L2_CTRL_COUNT] = {
@@ -537,40 +925,54 @@ static const struct bm2835_mmal_v4l2_ctr
{
V4L2_CID_SATURATION, MMAL_CONTROL_TYPE_STD,
-100, 100, 0, 1, NULL,
@ -1849,7 +1841,7 @@ index d1408e5..3017b94 100644
},
/* todo this needs mixing in with set exposure
{
@@ -578,83 +980,258 @@ static const struct bm2835_mmal_v4l2_ctrl v4l2_ctrls[V4L2_CTRL_COUNT] = {
@@ -578,83 +980,258 @@ static const struct bm2835_mmal_v4l2_ctr
},
*/
{
@ -2123,7 +2115,7 @@ index d1408e5..3017b94 100644
int bm2835_mmal_init_controls(struct bm2835_mmal_dev *dev,
struct v4l2_ctrl_handler *hdl)
{
@@ -674,10 +1251,30 @@ int bm2835_mmal_init_controls(struct bm2835_mmal_dev *dev,
@@ -674,10 +1251,30 @@ int bm2835_mmal_init_controls(struct bm2
break;
case MMAL_CONTROL_TYPE_STD_MENU:
@ -2155,8 +2147,6 @@ index d1408e5..3017b94 100644
case MMAL_CONTROL_TYPE_INT_MENU:
dev->ctrls[c] = v4l2_ctrl_new_int_menu(hdl,
diff --git a/drivers/media/platform/bcm2835/mmal-common.h b/drivers/media/platform/bcm2835/mmal-common.h
index 84abbb3..35698c8 100644
--- a/drivers/media/platform/bcm2835/mmal-common.h
+++ b/drivers/media/platform/bcm2835/mmal-common.h
@@ -26,6 +26,7 @@
@ -2167,8 +2157,6 @@ index 84abbb3..35698c8 100644
u32 mmal;
int depth;
u32 mmal_component; /* MMAL component index to be used to encode */
diff --git a/drivers/media/platform/bcm2835/mmal-encodings.h b/drivers/media/platform/bcm2835/mmal-encodings.h
index 856e80e..024d620 100644
--- a/drivers/media/platform/bcm2835/mmal-encodings.h
+++ b/drivers/media/platform/bcm2835/mmal-encodings.h
@@ -12,6 +12,8 @@
@ -2223,8 +2211,6 @@ index 856e80e..024d620 100644
+/* @} MmalColorSpace List */
+
+#endif /* MMAL_ENCODINGS_H */
diff --git a/drivers/media/platform/bcm2835/mmal-parameters.h b/drivers/media/platform/bcm2835/mmal-parameters.h
index c611b58..aa0fd18 100644
--- a/drivers/media/platform/bcm2835/mmal-parameters.h
+++ b/drivers/media/platform/bcm2835/mmal-parameters.h
@@ -57,7 +57,8 @@ enum mmal_parameter_common_type {
@ -2251,7 +2237,7 @@ index c611b58..aa0fd18 100644
};
enum mmal_parameter_camera_config_timestamp_mode {
@@ -176,6 +184,14 @@ enum mmal_parameter_camera_config_timestamp_mode {
@@ -176,6 +184,14 @@ enum mmal_parameter_camera_config_timest
*/
};
@ -2390,11 +2376,9 @@ index c611b58..aa0fd18 100644
};
/** Valid mirror modes */
diff --git a/drivers/media/platform/bcm2835/mmal-vchiq.c b/drivers/media/platform/bcm2835/mmal-vchiq.c
index a06fb44..76f249e 100644
--- a/drivers/media/platform/bcm2835/mmal-vchiq.c
+++ b/drivers/media/platform/bcm2835/mmal-vchiq.c
@@ -742,7 +742,7 @@ static int send_synchronous_mmal_msg(struct vchiq_mmal_instance *instance,
@@ -742,7 +742,7 @@ static int send_synchronous_mmal_msg(str
return ret;
}
@ -2403,7 +2387,7 @@ index a06fb44..76f249e 100644
if (ret <= 0) {
pr_err("error %d waiting for sync completion\n", ret);
if (ret == 0)
@@ -1326,7 +1326,7 @@ static int port_parameter_get(struct vchiq_mmal_instance *instance,
@@ -1326,7 +1326,7 @@ static int port_parameter_get(struct vch
memcpy(value, &rmsg->u.port_parameter_get_reply.value,
rmsg->u.port_parameter_get_reply.size);
@ -2412,6 +2396,3 @@ index a06fb44..76f249e 100644
ret, port->component->handle, port->handle, parameter_id);
release_msg:
--
1.8.3.2

View File

@ -20,11 +20,9 @@ DMA: fix cyclic LITE length overflow bug
5 files changed, 1066 insertions(+), 1 deletion(-)
create mode 100644 drivers/dma/bcm2708-dmaengine.c
diff --git a/arch/arm/mach-bcm2708/dma.c b/arch/arm/mach-bcm2708/dma.c
index 1da2413..a5e58d1 100644
--- a/arch/arm/mach-bcm2708/dma.c
+++ b/arch/arm/mach-bcm2708/dma.c
@@ -156,6 +156,8 @@ static void vc_dmaman_init(struct vc_dmaman *dmaman, void __iomem *dma_base,
@@ -156,6 +156,8 @@ static void vc_dmaman_init(struct vc_dma
dmaman->chan_available = chans_available;
dmaman->has_feature[BCM_DMA_FEATURE_FAST_ORD] = 0x0c; /* chans 2 & 3 */
dmaman->has_feature[BCM_DMA_FEATURE_BULK_ORD] = 0x01; /* chan 0 */
@ -33,11 +31,9 @@ index 1da2413..a5e58d1 100644
}
static int vc_dmaman_chan_alloc(struct vc_dmaman *dmaman,
diff --git a/arch/arm/mach-bcm2708/include/mach/dma.h b/arch/arm/mach-bcm2708/include/mach/dma.h
index a4aac4c..d03e7b5 100644
--- a/arch/arm/mach-bcm2708/include/mach/dma.h
+++ b/arch/arm/mach-bcm2708/include/mach/dma.h
@@ -77,9 +77,13 @@ extern int /*rc*/ bcm_dma_abort(void __iomem *dma_chan_base);
@@ -77,9 +77,13 @@ extern int /*rc*/ bcm_dma_abort(void __i
those with higher priority smaller ordinal numbers */
#define BCM_DMA_FEATURE_FAST_ORD 0
#define BCM_DMA_FEATURE_BULK_ORD 1
@ -52,8 +48,6 @@ index a4aac4c..d03e7b5 100644
/* return channel no or -ve error */
extern int bcm_dma_chan_alloc(unsigned preferred_feature_set,
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index de46982..c9b8eb5 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -330,6 +330,12 @@ config DMA_BCM2835
@ -69,8 +63,6 @@ index de46982..c9b8eb5 100644
config TI_CPPI41
tristate "AM33xx CPPI41 DMA support"
depends on ARCH_OMAP
diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
index cb626c1..d3c4a82 100644
--- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile
@@ -38,6 +38,7 @@ obj-$(CONFIG_DMA_SA11X0) += sa11x0-dma.o
@ -81,9 +73,6 @@ index cb626c1..d3c4a82 100644
obj-$(CONFIG_MMP_PDMA) += mmp_pdma.o
obj-$(CONFIG_DMA_JZ4740) += dma-jz4740.o
obj-$(CONFIG_TI_CPPI41) += cppi41.o
diff --git a/drivers/dma/bcm2708-dmaengine.c b/drivers/dma/bcm2708-dmaengine.c
new file mode 100644
index 0000000..10463db
--- /dev/null
+++ b/drivers/dma/bcm2708-dmaengine.c
@@ -0,0 +1,1052 @@
@ -1139,6 +1128,3 @@ index 0000000..10463db
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_AUTHOR("Gellert Weisz <gellert@raspberrypi.org>");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

View File

@ -56,8 +56,6 @@ to avoid the name clash when registering debugfs entries.
create mode 100644 sound/soc/bcm/bcm2708-i2s.c
create mode 100644 sound/soc/bcm/bcm2708-i2s.h
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
index 6a834e1..7e5b945 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
@@ -7,3 +7,14 @@ config SND_BCM2835_SOC_I2S
@ -75,11 +73,9 @@ index 6a834e1..7e5b945 100644
+ Say Y or M if you want to add support for codecs attached to
+ the BCM2708 I2S interface. You will also need
+ to select the audio interfaces to support below.
diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
index bc816b7..f8bbe1f 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
@@ -3,3 +3,7 @@ snd-soc-bcm2835-i2s-objs := bcm2835-i2s.o
@@ -3,3 +3,7 @@ snd-soc-bcm2835-i2s-objs := bcm2835-i2s.
obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o
@ -87,9 +83,6 @@ index bc816b7..f8bbe1f 100644
+snd-soc-bcm2708-i2s-objs := bcm2708-i2s.o
+
+obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd-soc-bcm2708-i2s.o
diff --git a/sound/soc/bcm/bcm2708-i2s.c b/sound/soc/bcm/bcm2708-i2s.c
new file mode 100644
index 0000000..0b5322a
--- /dev/null
+++ b/sound/soc/bcm/bcm2708-i2s.c
@@ -0,0 +1,998 @@
@ -1091,9 +1084,6 @@ index 0000000..0b5322a
+MODULE_DESCRIPTION("BCM2708 I2S interface");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/bcm/bcm2708-i2s.h b/sound/soc/bcm/bcm2708-i2s.h
new file mode 100644
index 0000000..6fdcbc1
--- /dev/null
+++ b/sound/soc/bcm/bcm2708-i2s.h
@@ -0,0 +1,35 @@
@ -1132,6 +1122,3 @@ index 0000000..6fdcbc1
+extern void bcm2708_i2s_set_gpio(int gpio);
+
+#endif
--
1.8.3.2

View File

@ -14,8 +14,6 @@ Signed-off-by: Florian Meier <florian.meier@koalo.de>
3 files changed, 69 insertions(+)
create mode 100644 sound/soc/codecs/pcm5102a.c
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index a68d173..0ef8bb7 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -80,6 +80,7 @@ config SND_SOC_ALL_CODECS
@ -36,11 +34,9 @@ index a68d173..0ef8bb7 100644
config SND_SOC_RT5631
tristate
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index 5dce451..7b606e6 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -74,6 +74,7 @@ snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o
@@ -74,6 +74,7 @@ snd-soc-pcm512x-i2c-objs := pcm512x-i2c.
snd-soc-pcm512x-spi-objs := pcm512x-spi.o
snd-soc-rl6231-objs := rl6231.o
snd-soc-rt286-objs := rt286.o
@ -48,7 +44,7 @@ index 5dce451..7b606e6 100644
snd-soc-rt5631-objs := rt5631.o
snd-soc-rt5640-objs := rt5640.o
snd-soc-rt5645-objs := rt5645.o
@@ -250,6 +251,7 @@ obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o
@@ -250,6 +251,7 @@ obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd
obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o
obj-$(CONFIG_SND_SOC_RL6231) += snd-soc-rl6231.o
obj-$(CONFIG_SND_SOC_RT286) += snd-soc-rt286.o
@ -56,9 +52,6 @@ index 5dce451..7b606e6 100644
obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o
obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o
obj-$(CONFIG_SND_SOC_RT5645) += snd-soc-rt5645.o
diff --git a/sound/soc/codecs/pcm5102a.c b/sound/soc/codecs/pcm5102a.c
new file mode 100644
index 0000000..126f1e9
--- /dev/null
+++ b/sound/soc/codecs/pcm5102a.c
@@ -0,0 +1,63 @@
@ -125,6 +118,3 @@ index 0000000..126f1e9
+MODULE_DESCRIPTION("ASoC PCM5102A codec driver");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

View File

@ -11,11 +11,9 @@ Signed-off-by: Florian Meier <florian.meier@koalo.de>
arch/arm/mach-bcm2708/bcm2708.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index a740344..dca28ad 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -587,6 +587,28 @@ static struct platform_device bcm2835_thermal_device = {
@@ -587,6 +587,28 @@ static struct platform_device bcm2835_th
.name = "bcm2835_thermal",
};
@ -55,6 +53,3 @@ index a740344..dca28ad 100644
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
amba_device_register(d, &iomem_resource);
--
1.8.3.2

View File

@ -15,8 +15,6 @@ Signed-off-by: Florian Meier <florian.meier@koalo.de>
3 files changed, 112 insertions(+)
create mode 100644 sound/soc/bcm/hifiberry_dac.c
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
index 7e5b945..b36a62f 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
@@ -18,3 +18,10 @@ config SND_BCM2708_SOC_I2S
@ -30,11 +28,9 @@ index 7e5b945..b36a62f 100644
+ select SND_SOC_PCM5102A
+ help
+ Say Y or M if you want to add support for HifiBerry DAC.
diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
index f8bbe1f..be90a49cb 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
@@ -7,3 +7,8 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o
@@ -7,3 +7,8 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd
snd-soc-bcm2708-i2s-objs := bcm2708-i2s.o
obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd-soc-bcm2708-i2s.o
@ -43,9 +39,6 @@ index f8bbe1f..be90a49cb 100644
+snd-soc-hifiberry-dac-objs := hifiberry_dac.o
+
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o
diff --git a/sound/soc/bcm/hifiberry_dac.c b/sound/soc/bcm/hifiberry_dac.c
new file mode 100644
index 0000000..4b70b45
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_dac.c
@@ -0,0 +1,100 @@
@ -149,6 +142,3 @@ index 0000000..4b70b45
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

View File

@ -11,11 +11,9 @@ Signed-off-by: Florian Meier <florian.meier@koalo.de>
arch/arm/mach-bcm2708/bcm2708.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index dca28ad..50d4991 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -609,6 +609,20 @@ static struct platform_device bcm2708_i2s_device = {
@@ -609,6 +609,20 @@ static struct platform_device bcm2708_i2
};
#endif
@ -48,6 +46,3 @@ index dca28ad..50d4991 100644
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
amba_device_register(d, &iomem_resource);
--
1.8.3.2

View File

@ -11,8 +11,6 @@ Signed-off-by: Florian Meier <florian.meier@koalo.de>
arch/arm/configs/bcmrpi_defconfig | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 3f99687..dfd98df 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -753,6 +753,10 @@ CONFIG_SND_USB_UA101=m
@ -35,6 +33,3 @@ index 3f99687..dfd98df 100644
CONFIG_UIO=m
CONFIG_UIO_PDRV_GENIRQ=m
CONFIG_STAGING=y
--
1.8.3.2

View File

@ -19,8 +19,6 @@ Signed-off-by: Florian Meier <florian.meier@koalo.de>
create mode 100644 sound/soc/bcm/rpi-dac.c
create mode 100644 sound/soc/codecs/pcm1794a.c
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index dfd98df..f688da5 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -756,6 +756,7 @@ CONFIG_SND_USB_6FIRE=m
@ -31,11 +29,9 @@ index dfd98df..f688da5 100644
CONFIG_SND_SIMPLE_CARD=m
CONFIG_SOUND_PRIME=m
CONFIG_HIDRAW=y
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 50d4991..100c223 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -623,6 +623,20 @@ static struct platform_device snd_pcm5102a_codec_device = {
@@ -623,6 +623,20 @@ static struct platform_device snd_pcm510
};
#endif
@ -68,8 +64,6 @@ index 50d4991..100c223 100644
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
amba_device_register(d, &iomem_resource);
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
index b36a62f..714841d 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
@@ -25,3 +25,10 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC
@ -83,11 +77,9 @@ index b36a62f..714841d 100644
+ select SND_SOC_PCM1794A
+ help
+ Say Y or M if you want to add support for RPi-DAC.
diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
index be90a49cb..ccc9809 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
@@ -10,5 +10,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd-soc-bcm2708-i2s.o
@@ -10,5 +10,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd
# BCM2708 Machine Support
snd-soc-hifiberry-dac-objs := hifiberry_dac.o
@ -95,9 +87,6 @@ index be90a49cb..ccc9809 100644
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o
+obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
diff --git a/sound/soc/bcm/rpi-dac.c b/sound/soc/bcm/rpi-dac.c
new file mode 100644
index 0000000..6d6e0ba
--- /dev/null
+++ b/sound/soc/bcm/rpi-dac.c
@@ -0,0 +1,97 @@
@ -198,8 +187,6 @@ index 0000000..6d6e0ba
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for RPi-DAC");
+MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index 0ef8bb7..3c236a6 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -81,6 +81,7 @@ config SND_SOC_ALL_CODECS
@ -220,11 +207,9 @@ index 0ef8bb7..3c236a6 100644
config SND_SOC_PCM5102A
tristate
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index 7b606e6..2a7f823 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -74,6 +74,7 @@ snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o
@@ -74,6 +74,7 @@ snd-soc-pcm512x-i2c-objs := pcm512x-i2c.
snd-soc-pcm512x-spi-objs := pcm512x-spi.o
snd-soc-rl6231-objs := rl6231.o
snd-soc-rt286-objs := rt286.o
@ -232,7 +217,7 @@ index 7b606e6..2a7f823 100644
snd-soc-pcm5102a-objs := pcm5102a.o
snd-soc-rt5631-objs := rt5631.o
snd-soc-rt5640-objs := rt5640.o
@@ -251,6 +252,7 @@ obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o
@@ -251,6 +252,7 @@ obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd
obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o
obj-$(CONFIG_SND_SOC_RL6231) += snd-soc-rl6231.o
obj-$(CONFIG_SND_SOC_RT286) += snd-soc-rt286.o
@ -240,9 +225,6 @@ index 7b606e6..2a7f823 100644
obj-$(CONFIG_SND_SOC_PCM5102A) += snd-soc-pcm5102a.o
obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o
obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o
diff --git a/sound/soc/codecs/pcm1794a.c b/sound/soc/codecs/pcm1794a.c
new file mode 100644
index 0000000..b4eaa44
--- /dev/null
+++ b/sound/soc/codecs/pcm1794a.c
@@ -0,0 +1,62 @@
@ -308,6 +290,3 @@ index 0000000..b4eaa44
+MODULE_DESCRIPTION("ASoC PCM1794A codec driver");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

View File

@ -19,11 +19,9 @@ Signed-off-by: Daniel Matuschek <daniel@matuschek.net>
sound/soc/codecs/wm8804.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c
index 3addc5f..d060b23 100644
--- a/sound/soc/codecs/wm8804.c
+++ b/sound/soc/codecs/wm8804.c
@@ -278,6 +278,7 @@ static int wm8804_hw_params(struct snd_pcm_substream *substream,
@@ -278,6 +278,7 @@ static int wm8804_hw_params(struct snd_p
blen = 0x1;
break;
case 24:
@ -31,7 +29,7 @@ index 3addc5f..d060b23 100644
blen = 0x2;
break;
default:
@@ -624,7 +625,7 @@ static const struct snd_soc_dai_ops wm8804_dai_ops = {
@@ -624,7 +625,7 @@ static const struct snd_soc_dai_ops wm88
};
#define WM8804_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
@ -40,6 +38,3 @@ index 3addc5f..d060b23 100644
#define WM8804_RATES (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_64000 | \
--
1.8.3.2

View File

@ -12,8 +12,6 @@ Signed-off-by: Daniel Matuschek <daniel@matuschek.net>
3 files changed, 162 insertions(+)
create mode 100644 sound/soc/bcm/hifiberry_digi.c
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
index 714841d..e563dbc 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
@@ -26,6 +26,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC
@ -30,11 +28,9 @@ index 714841d..e563dbc 100644
config SND_BCM2708_SOC_RPI_DAC
tristate "Support for RPi-DAC"
depends on SND_BCM2708_SOC_I2S
diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
index ccc9809..826df7d 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
@@ -10,7 +10,9 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd-soc-bcm2708-i2s.o
@@ -10,7 +10,9 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd
# BCM2708 Machine Support
snd-soc-hifiberry-dac-objs := hifiberry_dac.o
@ -44,9 +40,6 @@ index ccc9809..826df7d 100644
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
diff --git a/sound/soc/bcm/hifiberry_digi.c b/sound/soc/bcm/hifiberry_digi.c
new file mode 100644
index 0000000..e4f769d
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_digi.c
@@ -0,0 +1,153 @@
@ -203,6 +196,3 @@ index 0000000..e4f769d
+MODULE_AUTHOR("Daniel Matuschek <info@crazy-audio.com>");
+MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

View File

@ -9,11 +9,9 @@ Signed-off-by: Daniel Matuschek <daniel@matuschek.net>
arch/arm/mach-bcm2708/bcm2708.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 100c223..a57cb85 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -623,6 +623,21 @@ static struct platform_device snd_pcm5102a_codec_device = {
@@ -623,6 +623,21 @@ static struct platform_device snd_pcm510
};
#endif
@ -47,6 +45,3 @@ index 100c223..a57cb85 100644
#if defined(CONFIG_SND_BCM2708_SOC_RPI_DAC) || defined(CONFIG_SND_BCM2708_SOC_RPI_DAC_MODULE)
bcm_register_device(&snd_rpi_dac_device);
bcm_register_device(&snd_pcm1794a_codec_device);
--
1.8.3.2

View File

@ -10,8 +10,6 @@ Signed-off-by: Daniel Matuschek <daniel@matuschek.net>
arch/arm/configs/bcmrpi_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index f688da5..c9d3fac 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -756,6 +756,7 @@ CONFIG_SND_USB_6FIRE=m
@ -22,6 +20,3 @@ index f688da5..c9d3fac 100644
CONFIG_SND_BCM2708_SOC_RPI_DAC=m
CONFIG_SND_SIMPLE_CARD=m
CONFIG_SOUND_PRIME=m
--
1.8.3.2

View File

@ -9,11 +9,9 @@ Signed-off-by: Daniel Matuschek <daniel@matuschek.net>
sound/soc/codecs/wm8804.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c
index d060b23..d486a9d 100644
--- a/sound/soc/codecs/wm8804.c
+++ b/sound/soc/codecs/wm8804.c
@@ -656,7 +656,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8804 = {
@@ -656,7 +656,7 @@ static struct snd_soc_codec_driver soc_c
.probe = wm8804_probe,
.remove = wm8804_remove,
.set_bias_level = wm8804_set_bias_level,
@ -22,6 +20,3 @@ index d060b23..d486a9d 100644
.controls = wm8804_snd_controls,
.num_controls = ARRAY_SIZE(wm8804_snd_controls),
--
1.8.3.2

View File

@ -12,8 +12,6 @@ Subject: [PATCH 042/114] Add IQaudIO Sound Card support for Raspberry Pi
5 files changed, 143 insertions(+)
create mode 100644 sound/soc/bcm/iqaudio-dac.c
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index c9d3fac..f15a4b9 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -758,6 +758,7 @@ CONFIG_SND_BCM2708_SOC_I2S=m
@ -24,11 +22,9 @@ index c9d3fac..f15a4b9 100644
CONFIG_SND_SIMPLE_CARD=m
CONFIG_SOUND_PRIME=m
CONFIG_HIDRAW=y
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index a57cb85..633be19 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -652,6 +652,22 @@ static struct platform_device snd_pcm1794a_codec_device = {
@@ -652,6 +652,22 @@ static struct platform_device snd_pcm179
};
#endif
@ -64,8 +60,6 @@ index a57cb85..633be19 100644
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
amba_device_register(d, &iomem_resource);
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
index e563dbc..c621a5e 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
@@ -39,3 +39,10 @@ config SND_BCM2708_SOC_RPI_DAC
@ -79,11 +73,9 @@ index e563dbc..c621a5e 100644
+ select SND_SOC_PCM512x_I2C
+ help
+ Say Y or M if you want to add support for IQaudIO-DAC.
diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
index 826df7d..d597fb0 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
@@ -12,7 +12,9 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd-soc-bcm2708-i2s.o
@@ -12,7 +12,9 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd
snd-soc-hifiberry-dac-objs := hifiberry_dac.o
snd-soc-hifiberry-digi-objs := hifiberry_digi.o
snd-soc-rpi-dac-objs := rpi-dac.o
@ -93,9 +85,6 @@ index 826df7d..d597fb0 100644
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
+obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
diff --git a/sound/soc/bcm/iqaudio-dac.c b/sound/soc/bcm/iqaudio-dac.c
new file mode 100644
index 0000000..8d0e2ae
--- /dev/null
+++ b/sound/soc/bcm/iqaudio-dac.c
@@ -0,0 +1,111 @@
@ -210,6 +199,3 @@ index 0000000..8d0e2ae
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

View File

@ -10,11 +10,9 @@ DAC ouput stages.
sound/soc/codecs/pcm512x.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c
index 640c991..b405719 100644
--- a/sound/soc/codecs/pcm512x.c
+++ b/sound/soc/codecs/pcm512x.c
@@ -259,8 +259,8 @@ static const struct soc_enum pcm512x_veds =
@@ -259,8 +259,8 @@ static const struct soc_enum pcm512x_ved
pcm512x_ramp_step_text);
static const struct snd_kcontrol_new pcm512x_controls[] = {
@ -25,6 +23,3 @@ index 640c991..b405719 100644
SOC_DOUBLE_TLV("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,
--
1.8.3.2

View File

@ -11,11 +11,9 @@ http://www.spinics.net/lists/linux-mm/msg72236.html
include/linux/vmstat.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
index 82e7db7..f87d16d 100644
--- a/include/linux/vmstat.h
+++ b/include/linux/vmstat.h
@@ -241,7 +241,11 @@ static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
@@ -241,7 +241,11 @@ static inline void __inc_zone_state(stru
static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
{
atomic_long_dec(&zone->vm_stat[item]);
@ -27,6 +25,3 @@ index 82e7db7..f87d16d 100644
}
static inline void __inc_zone_page_state(struct page *page,
--
1.8.3.2

View File

@ -14,11 +14,9 @@ Fix a few thinkos with the transaction error passthrough for fiq_fsm.
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 2 +-
3 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
index 065807f..96c76e3 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
@@ -1348,10 +1348,9 @@ static inline uint32_t dwc_otg_read_common_intr(dwc_otg_core_if_t * core_if, gin
@@ -1348,10 +1348,9 @@ static inline uint32_t dwc_otg_read_comm
local_fiq_disable();
/* Pull in the interrupts that the FIQ has masked */
gintmsk.d32 |= ~(hcd->fiq_state->gintmsk_saved.d32);
@ -31,7 +29,7 @@ index 065807f..96c76e3 100644
local_fiq_enable();
}
@@ -1535,7 +1534,7 @@ int32_t dwc_otg_handle_common_intr(void *dev)
@@ -1535,7 +1534,7 @@ int32_t dwc_otg_handle_common_intr(void
// fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "CILOUT %1d", retval);
// fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "%08x", gintsts.d32);
// fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "%08x", gintmsk_reenable.d32);
@ -40,11 +38,9 @@ index 065807f..96c76e3 100644
DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, gintmsk_reenable.d32);
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
index 1be6e71..284f902 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
@@ -696,7 +696,11 @@ static int notrace noinline fiq_fsm_do_hcintr(struct fiq_state *state, int num_c
@@ -696,7 +696,11 @@ static int notrace noinline fiq_fsm_do_h
fiq_print(FIQDBG_ERR, state, "ERRST %02d", n);
if (hcint_probe.b.nak || hcint_probe.b.ack || hcint_probe.b.datatglerr) {
fiq_print(FIQDBG_ERR, state, "RESET %02d", n);
@ -57,11 +53,9 @@ index 1be6e71..284f902 100644
hcintmsk.b.nak = 0;
hcintmsk.b.ack = 0;
hcintmsk.b.datatglerr = 0;
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
index 4195ff2..a5566bc 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -2619,7 +2619,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
@@ -2619,7 +2619,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
case FIQ_PASSTHROUGH_ERRORSTATE:
/* Hook into the error count */
fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "HCDERR%02d", num);
@ -70,6 +64,3 @@ index 4195ff2..a5566bc 100644
qtd->error_count = 0;
fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "RESET ");
}
--
1.8.3.2

View File

@ -19,11 +19,9 @@ Original idea by Hans Petter Selasky @ FreeBSD.org.
drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 32 ++++++++++++++++++++++++++------
1 file changed, 26 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 130096b..68d4f3b 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -1055,10 +1055,11 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
@@ -1055,10 +1055,11 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
for (i=0; i < hcd->core_if->core_params->host_channels; i++) {
dwc_otg_cleanup_fiq_channel(hcd, i);
}
@ -37,7 +35,7 @@ index 130096b..68d4f3b 100644
}
}
@@ -1789,6 +1790,20 @@ int fiq_fsm_queue_split_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)
@@ -1789,6 +1790,20 @@ int fiq_fsm_queue_split_transaction(dwc_
st->hcintmsk_copy.b.chhltd = 1;
st->hcintmsk_copy.b.ahberr = 1;
@ -58,7 +56,7 @@ index 130096b..68d4f3b 100644
DWC_WRITE_REG32(&hc_regs->hcdma, st->hcdma_copy.d32);
DWC_WRITE_REG32(&hc_regs->hctsiz, st->hctsiz_copy.d32);
DWC_WRITE_REG32(&hc_regs->hcsplt, st->hcsplt_copy.d32);
@@ -1842,6 +1857,9 @@ int fiq_fsm_queue_split_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)
@@ -1842,6 +1857,9 @@ int fiq_fsm_queue_split_transaction(dwc_
}
}
}
@ -68,7 +66,7 @@ index 130096b..68d4f3b 100644
fiq_print(FIQDBG_INT, hcd->fiq_state, "FSMQ %01d %01d", hc->hc_num, start_immediate);
fiq_print(FIQDBG_INT, hcd->fiq_state, "%08d", hfnum.b.frrem);
//fiq_print(FIQDBG_INT, hcd->fiq_state, "H:%02dP:%02d", hub_addr, port_addr);
@@ -1873,11 +1891,13 @@ int fiq_fsm_queue_split_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)
@@ -1873,11 +1891,13 @@ int fiq_fsm_queue_split_transaction(dwc_
}
break;
case UE_INTERRUPT:
@ -86,6 +84,3 @@ index 130096b..68d4f3b 100644
default:
break;
}
--
1.8.3.2

View File

@ -15,11 +15,9 @@ Signed-off-by: Noralf Tronnes <notro@tronnes.org>
drivers/spi/spi-bcm2708.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c
index b04a57d..349d21f 100644
--- a/drivers/spi/spi-bcm2708.c
+++ b/drivers/spi/spi-bcm2708.c
@@ -545,7 +545,7 @@ static int bcm2708_spi_probe(struct platform_device *pdev)
@@ -545,7 +545,7 @@ static int bcm2708_spi_probe(struct plat
}
/* initialise the hardware */
@ -28,7 +26,7 @@ index b04a57d..349d21f 100644
bcm2708_wr(bs, SPI_CS, SPI_CS_REN | SPI_CS_CLEAR_RX | SPI_CS_CLEAR_TX);
err = spi_register_master(master);
@@ -561,6 +561,7 @@ static int bcm2708_spi_probe(struct platform_device *pdev)
@@ -561,6 +561,7 @@ static int bcm2708_spi_probe(struct plat
out_free_irq:
free_irq(bs->irq, master);
@ -36,7 +34,7 @@ index b04a57d..349d21f 100644
out_workqueue:
destroy_workqueue(bs->workq);
out_iounmap:
@@ -585,7 +586,7 @@ static int bcm2708_spi_remove(struct platform_device *pdev)
@@ -585,7 +586,7 @@ static int bcm2708_spi_remove(struct pla
flush_work(&bs->work);
@ -45,6 +43,3 @@ index b04a57d..349d21f 100644
clk_put(bs->clk);
free_irq(bs->irq, master);
iounmap(bs->base);
--
1.8.3.2

View File

@ -21,8 +21,6 @@ Signed-off-by: Noralf Tronnes <notro@tronnes.org>
delete mode 100644 arch/arm/mach-bcm2708/clock.c
delete mode 100644 arch/arm/mach-bcm2708/clock.h
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index ba9c18e..0f2287f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -385,11 +385,10 @@ config ARCH_BCM2708
@ -38,8 +36,6 @@ index ba9c18e..0f2287f 100644
select ARCH_HAS_CPUFREQ
select GENERIC_CLOCKEVENTS
select ARM_ERRATA_411920
diff --git a/arch/arm/mach-bcm2708/Makefile b/arch/arm/mach-bcm2708/Makefile
index a722f3f..21e3521 100644
--- a/arch/arm/mach-bcm2708/Makefile
+++ b/arch/arm/mach-bcm2708/Makefile
@@ -2,6 +2,6 @@
@ -50,8 +46,6 @@ index a722f3f..21e3521 100644
+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 --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 633be19..ef12cb8 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -27,6 +27,8 @@
@ -80,7 +74,7 @@ index 633be19..ef12cb8 100644
static unsigned disk_led_gpio = 16;
static unsigned disk_led_active_low = 1;
static unsigned reboot_part = 0;
@@ -196,51 +197,39 @@ static void __init bcm2708_clocksource_init(void)
@@ -196,51 +197,39 @@ static void __init bcm2708_clocksource_i
}
}
@ -173,9 +167,6 @@ index 633be19..ef12cb8 100644
bcm_register_device(&bcm2708_dmaman_device);
bcm_register_device(&bcm2708_vcio_device);
diff --git a/arch/arm/mach-bcm2708/clock.c b/arch/arm/mach-bcm2708/clock.c
deleted file mode 100644
index 4fc556e..0000000
--- a/arch/arm/mach-bcm2708/clock.c
+++ /dev/null
@@ -1,61 +0,0 @@
@ -240,9 +231,6 @@ index 4fc556e..0000000
- return -EIO;
-}
-EXPORT_SYMBOL(clk_set_rate);
diff --git a/arch/arm/mach-bcm2708/clock.h b/arch/arm/mach-bcm2708/clock.h
deleted file mode 100644
index 5f9d725..0000000
--- a/arch/arm/mach-bcm2708/clock.h
+++ /dev/null
@@ -1,24 +0,0 @@
@ -270,6 +258,3 @@ index 5f9d725..0000000
-struct clk {
- unsigned long rate;
-};
--
1.8.3.2

View File

@ -24,11 +24,9 @@ Signed-off-by: Noralf Tronnes notro@tronnes.org
create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts
create mode 100644 arch/arm/boot/dts/bcm2708.dtsi
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 38c89ca..c727f71 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -53,6 +53,7 @@ dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4ek.dtb
@@ -53,6 +53,7 @@ dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4e
dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb
dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb
@ -36,9 +34,6 @@ index 38c89ca..c727f71 100644
dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb
dtb-$(CONFIG_ARCH_BCM_63XX) += bcm963138dvt.dtb
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
new file mode 100644
index 0000000..e319c8e
--- /dev/null
+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
@@ -0,0 +1,8 @@
@ -50,9 +45,6 @@ index 0000000..e319c8e
+ compatible = "brcm,bcm2708";
+ model = "Raspberry Pi";
+};
diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
new file mode 100644
index 0000000..50da059
--- /dev/null
+++ b/arch/arm/boot/dts/bcm2708.dtsi
@@ -0,0 +1,27 @@
@ -83,8 +75,6 @@ index 0000000..50da059
+ #size-cells = <0>;
+ };
+};
diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig
index e151ed4..182e7ba 100644
--- a/arch/arm/mach-bcm2708/Kconfig
+++ b/arch/arm/mach-bcm2708/Kconfig
@@ -9,6 +9,14 @@ config MACH_BCM2708
@ -102,8 +92,6 @@ index e151ed4..182e7ba 100644
config BCM2708_GPIO
bool "BCM2708 gpio support"
depends on MACH_BCM2708
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index ef12cb8..747e27a 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -33,6 +33,7 @@
@ -165,6 +153,3 @@ index ef12cb8..747e27a 100644
MACHINE_END
module_param(boardrev, uint, 0644);
--
1.8.3.2

View File

@ -23,8 +23,6 @@ Signed-off-by: Noralf Tronnes <notro@tronnes.org>
arch/arm/mach-bcm2708/armctrl.c | 96 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 105 insertions(+)
diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
index 50da059..a06f5b8 100644
--- a/arch/arm/boot/dts/bcm2708.dtsi
+++ b/arch/arm/boot/dts/bcm2708.dtsi
@@ -4,6 +4,8 @@
@ -50,8 +48,6 @@ index 50da059..a06f5b8 100644
};
clocks {
diff --git a/arch/arm/mach-bcm2708/armctrl.c b/arch/arm/mach-bcm2708/armctrl.c
index 96fa9b9..74bacb3 100644
--- a/arch/arm/mach-bcm2708/armctrl.c
+++ b/arch/arm/mach-bcm2708/armctrl.c
@@ -23,6 +23,8 @@
@ -63,7 +59,7 @@ index 96fa9b9..74bacb3 100644
#include <asm/mach/irq.h>
#include <mach/hardware.h>
@@ -79,6 +81,99 @@ static void armctrl_unmask_irq(struct irq_data *d)
@@ -79,6 +81,99 @@ static void armctrl_unmask_irq(struct ir
}
}
@ -163,13 +159,10 @@ index 96fa9b9..74bacb3 100644
#if defined(CONFIG_PM)
/* for kernels 3.xx use the new syscore_ops apis but for older kernels use the sys dev class */
@@ -215,5 +310,6 @@ int __init armctrl_init(void __iomem * base, unsigned int irq_start,
@@ -215,5 +310,6 @@ int __init armctrl_init(void __iomem * b
armctrl_pm_register(base, irq_start, resume_sources);
init_FIQ(FIQ_START);
+ armctrl_dt_init();
return 0;
}
--
1.8.3.2

View File

@ -14,8 +14,6 @@ Signed-off-by: Noralf Tronnes <notro@tronnes.org>
drivers/pinctrl/pinctrl-bcm2835.c | 2 +-
4 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
index a06f5b8..b2920c8 100644
--- a/arch/arm/boot/dts/bcm2708.dtsi
+++ b/arch/arm/boot/dts/bcm2708.dtsi
@@ -26,6 +26,18 @@
@ -37,8 +35,6 @@ index a06f5b8..b2920c8 100644
};
clocks {
diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig
index 182e7ba..4cfae55 100644
--- a/arch/arm/mach-bcm2708/Kconfig
+++ b/arch/arm/mach-bcm2708/Kconfig
@@ -14,6 +14,9 @@ config BCM2708_DT
@ -51,8 +47,6 @@ index 182e7ba..4cfae55 100644
help
Enable Device Tree support for BCM2708
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 747e27a..0e5bd43 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -767,7 +767,7 @@ void __init bcm2708_init(void)
@ -64,11 +58,9 @@ index 747e27a..0e5bd43 100644
#endif
#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
w1_gpio_pdata.pin = w1_gpio_pin;
diff --git a/drivers/pinctrl/pinctrl-bcm2835.c b/drivers/pinctrl/pinctrl-bcm2835.c
index eabba02..962e180 100644
--- a/drivers/pinctrl/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/pinctrl-bcm2835.c
@@ -382,7 +382,7 @@ static struct gpio_chip bcm2835_gpio_chip = {
@@ -382,7 +382,7 @@ static struct gpio_chip bcm2835_gpio_chi
.get = bcm2835_gpio_get,
.set = bcm2835_gpio_set,
.to_irq = bcm2835_gpio_to_irq,
@ -77,6 +69,3 @@ index eabba02..962e180 100644
.ngpio = BCM2835_NUM_GPIOS,
.can_sleep = false,
};
--
1.8.3.2

View File

@ -31,8 +31,6 @@ bcm2708: Remove the prohibition on mixing SPIDEV and DT
drivers/spi/spi-bcm2708.c | 8 ++++++++
5 files changed, 75 insertions(+), 4 deletions(-)
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
index e319c8e..30107fb 100644
--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
@@ -5,4 +5,36 @@
@ -72,8 +70,6 @@ index e319c8e..30107fb 100644
+ spi-max-frequency = <500000>;
+ };
};
diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
index b2920c8..e90bf4c 100644
--- a/arch/arm/boot/dts/bcm2708.dtsi
+++ b/arch/arm/boot/dts/bcm2708.dtsi
@@ -38,11 +38,29 @@
@ -106,11 +102,9 @@ index b2920c8..e90bf4c 100644
+ };
};
};
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 0e5bd43..a2069f8 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -486,6 +486,7 @@ static struct platform_device bcm2708_alsa_devices[] = {
@@ -486,6 +486,7 @@ static struct platform_device bcm2708_al
},
};
@ -118,7 +112,7 @@ index 0e5bd43..a2069f8 100644
static struct resource bcm2708_spi_resources[] = {
{
.start = SPI0_BASE,
@@ -509,6 +510,7 @@ static struct platform_device bcm2708_spi_device = {
@@ -509,6 +510,7 @@ static struct platform_device bcm2708_sp
.dma_mask = &bcm2708_spi_dmamask,
.coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON)},
};
@ -126,7 +120,7 @@ index 0e5bd43..a2069f8 100644
#ifdef CONFIG_BCM2708_SPIDEV
static struct spi_board_info bcm2708_spi_devices[] = {
@@ -670,6 +672,16 @@ int __init bcm_register_device(struct platform_device *pdev)
@@ -670,6 +672,16 @@ int __init bcm_register_device(struct pl
return ret;
}
@ -164,8 +158,6 @@ index 0e5bd43..a2069f8 100644
#endif
}
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index 71b4741..a5238ab 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -77,7 +77,7 @@ config SPI_ATMEL
@ -177,11 +169,9 @@ index 71b4741..a5238ab 100644
help
This selects a driver for the Broadcom BCM2835 SPI master.
diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c
index 349d21f..041b5e2 100644
--- a/drivers/spi/spi-bcm2708.c
+++ b/drivers/spi/spi-bcm2708.c
@@ -512,6 +512,7 @@ static int bcm2708_spi_probe(struct platform_device *pdev)
@@ -512,6 +512,7 @@ static int bcm2708_spi_probe(struct plat
master->setup = bcm2708_spi_setup;
master->transfer = bcm2708_spi_transfer;
master->cleanup = bcm2708_spi_cleanup;
@ -189,7 +179,7 @@ index 349d21f..041b5e2 100644
platform_set_drvdata(pdev, master);
bs = spi_master_get_devdata(master);
@@ -596,10 +597,17 @@ static int bcm2708_spi_remove(struct platform_device *pdev)
@@ -596,10 +597,17 @@ static int bcm2708_spi_remove(struct pla
return 0;
}
@ -207,6 +197,3 @@ index 349d21f..041b5e2 100644
},
.probe = bcm2708_spi_probe,
.remove = bcm2708_spi_remove,
--
1.8.3.2

View File

@ -29,8 +29,6 @@ Signed-off-by: Noralf Tronnes <notro@tronnes.org>
drivers/i2c/busses/i2c-bcm2708.c | 24 ++++++++++++++++++++++++
5 files changed, 80 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
index 30107fb..5893122 100644
--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
@@ -8,6 +8,8 @@
@ -75,8 +73,6 @@ index 30107fb..5893122 100644
+ pinctrl-0 = <&i2c1_pins>;
+ clock-frequency = <100000>;
+};
diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
index e90bf4c..2ca6d63 100644
--- a/arch/arm/boot/dts/bcm2708.dtsi
+++ b/arch/arm/boot/dts/bcm2708.dtsi
@@ -48,6 +48,26 @@
@ -120,11 +116,9 @@ index e90bf4c..2ca6d63 100644
clk_spi: clock@2 {
compatible = "fixed-clock";
reg = <2>;
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index a2069f8..b45f327 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -532,6 +532,7 @@ static struct spi_board_info bcm2708_spi_devices[] = {
@@ -532,6 +532,7 @@ static struct spi_board_info bcm2708_spi
};
#endif
@ -132,7 +126,7 @@ index a2069f8..b45f327 100644
static struct resource bcm2708_bsc0_resources[] = {
{
.start = BSC0_BASE,
@@ -570,6 +571,7 @@ static struct platform_device bcm2708_bsc1_device = {
@@ -570,6 +571,7 @@ static struct platform_device bcm2708_bs
.num_resources = ARRAY_SIZE(bcm2708_bsc1_resources),
.resource = bcm2708_bsc1_resources,
};
@ -151,8 +145,6 @@ index a2069f8..b45f327 100644
bcm_register_device(&bcm2835_hwmon_device);
bcm_register_device(&bcm2835_thermal_device);
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 3d3db41..d30a986 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -361,7 +361,7 @@ config I2C_AXXIA
@ -164,8 +156,6 @@ index 3d3db41..d30a986 100644
help
If you say yes to this option, support will be included for the
BCM2835 I2C controller.
diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c
index 7d385a3..526129b 100644
--- a/drivers/i2c/busses/i2c-bcm2708.c
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -26,6 +26,7 @@
@ -176,7 +166,7 @@ index 7d385a3..526129b 100644
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/slab.h>
@@ -303,6 +304,21 @@ static int bcm2708_i2c_probe(struct platform_device *pdev)
@@ -303,6 +304,21 @@ static int bcm2708_i2c_probe(struct plat
unsigned long bus_hz;
u32 cdiv;
@ -198,7 +188,7 @@ index 7d385a3..526129b 100644
regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!regs) {
dev_err(&pdev->dev, "could not get IO memory\n");
@@ -336,6 +352,7 @@ static int bcm2708_i2c_probe(struct platform_device *pdev)
@@ -336,6 +352,7 @@ static int bcm2708_i2c_probe(struct plat
adap->dev.parent = &pdev->dev;
adap->nr = pdev->id;
strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name));
@ -206,7 +196,7 @@ index 7d385a3..526129b 100644
switch (pdev->id) {
case 0:
@@ -416,10 +433,17 @@ static int bcm2708_i2c_remove(struct platform_device *pdev)
@@ -416,10 +433,17 @@ static int bcm2708_i2c_remove(struct pla
return 0;
}
@ -224,6 +214,3 @@ index 7d385a3..526129b 100644
},
.probe = bcm2708_i2c_probe,
.remove = bcm2708_i2c_remove,
--
1.8.3.2

View File

@ -8,8 +8,6 @@ Reduces overhead when using X
drivers/hid/usbhid/hid-core.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index ca6849a..4671921 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -49,7 +49,7 @@
@ -21,7 +19,7 @@ index ca6849a..4671921 100644
module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
MODULE_PARM_DESC(mousepoll, "Polling interval of mice");
@@ -1079,8 +1079,12 @@ static int usbhid_start(struct hid_device *hid)
@@ -1079,8 +1079,12 @@ static int usbhid_start(struct hid_devic
}
/* Change the polling interval of mice. */
@ -36,6 +34,3 @@ index ca6849a..4671921 100644
ret = -ENOMEM;
if (usb_endpoint_dir_in(endpoint)) {
--
1.8.3.2

View File

@ -8,11 +8,9 @@ Hub overcurrent messages are more serious than "debug". Increase loglevel.
drivers/usb/core/hub.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index b649fef..5f8d914 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4923,7 +4923,7 @@ static void port_event(struct usb_hub *hub, int port1)
@@ -4923,7 +4923,7 @@ static void port_event(struct usb_hub *h
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
u16 status = 0, unused;
@ -21,6 +19,3 @@ index b649fef..5f8d914 100644
usb_clear_port_feature(hdev, port1,
USB_PORT_FEAT_C_OVER_CURRENT);
msleep(100); /* Cool down */
--
1.8.3.2

View File

@ -43,9 +43,6 @@ config: Disable VC_SM for now to fix hang with cutdown kernel
create mode 100644 drivers/char/broadcom/vc_sm/vc_vchi_sm.c
create mode 100644 drivers/char/broadcom/vc_sm/vmcs_sm.c
diff --git a/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h b/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h
new file mode 100644
index 0000000..c4d5ff7
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h
@@ -0,0 +1,181 @@
@ -230,9 +227,6 @@ index 0000000..c4d5ff7
+} VC_SM_MSG_UNION_T;
+
+#endif /* __VC_SM_DEFS_H__INCLUDED__ */
diff --git a/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h b/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h
new file mode 100644
index 0000000..965f9a2
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h
@@ -0,0 +1,55 @@
@ -291,9 +285,6 @@ index 0000000..965f9a2
+ long unsigned int *data);
+
+#endif /* __VC_SM_KNL_H__INCLUDED__ */
diff --git a/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h b/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h
new file mode 100644
index 0000000..5e279f5
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h
@@ -0,0 +1,82 @@
@ -379,9 +370,6 @@ index 0000000..5e279f5
+ VC_SM_ACTION_CLEAN_T *action_clean);
+
+#endif /* __VC_VCHI_SM_H__INCLUDED__ */
diff --git a/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h b/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h
new file mode 100644
index 0000000..42d0eb0
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h
@@ -0,0 +1,233 @@
@ -618,8 +606,6 @@ index 0000000..42d0eb0
+/* ---- Function Prototypes ---------------------------------------------- */
+
+#endif /* __VMCS_SM_IOCTL_H__INCLUDED__ */
diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig
index 2d8bd6e..d4eb46d 100644
--- a/drivers/char/broadcom/Kconfig
+++ b/drivers/char/broadcom/Kconfig
@@ -13,3 +13,10 @@ config BCM_VC_CMA
@ -633,16 +619,11 @@ index 2d8bd6e..d4eb46d 100644
+ help
+ Support for the VC shared memory on the Broadcom reference
+ design. Uses the VCHIQ stack.
diff --git a/drivers/char/broadcom/Makefile b/drivers/char/broadcom/Makefile
index 13c5bca..0bf7fdf 100644
--- a/drivers/char/broadcom/Makefile
+++ b/drivers/char/broadcom/Makefile
@@ -1 +1,2 @@
obj-$(CONFIG_BCM_VC_CMA) += vc_cma/
+obj-$(CONFIG_BCM_VC_SM) += vc_sm/
diff --git a/drivers/char/broadcom/vc_sm/Makefile b/drivers/char/broadcom/vc_sm/Makefile
new file mode 100644
index 0000000..924a66b
--- /dev/null
+++ b/drivers/char/broadcom/vc_sm/Makefile
@@ -0,0 +1,21 @@
@ -667,9 +648,6 @@ index 0000000..924a66b
+vc-sm-objs := \
+ vmcs_sm.o \
+ vc_vchi_sm.o
diff --git a/drivers/char/broadcom/vc_sm/vc_vchi_sm.c b/drivers/char/broadcom/vc_sm/vc_vchi_sm.c
new file mode 100644
index 0000000..7c6ba1a
--- /dev/null
+++ b/drivers/char/broadcom/vc_sm/vc_vchi_sm.c
@@ -0,0 +1,492 @@
@ -1165,9 +1143,6 @@ index 0000000..7c6ba1a
+ return vc_vchi_sm_send_msg(handle, VC_SM_MSG_TYPE_ACTION_CLEAN,
+ msg, sizeof(*msg), 0, 0, 0, 0);
+}
diff --git a/drivers/char/broadcom/vc_sm/vmcs_sm.c b/drivers/char/broadcom/vc_sm/vmcs_sm.c
new file mode 100644
index 0000000..da1c523
--- /dev/null
+++ b/drivers/char/broadcom/vc_sm/vmcs_sm.c
@@ -0,0 +1,3163 @@
@ -4334,6 +4309,3 @@ index 0000000..da1c523
+MODULE_AUTHOR("Broadcom");
+MODULE_DESCRIPTION("VideoCore SharedMemory Driver");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

View File

@ -9,11 +9,9 @@ This reverts commit 6ce0d20016925d031f1e24d64302e4c976d7cec6.
arch/arm/include/asm/dma-mapping.h | 18 +-----------------
1 file changed, 1 insertion(+), 17 deletions(-)
diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h
index 85738b2..9477f09 100644
--- a/arch/arm/include/asm/dma-mapping.h
+++ b/arch/arm/include/asm/dma-mapping.h
@@ -58,37 +58,21 @@ static inline int dma_set_mask(struct device *dev, u64 mask)
@@ -58,37 +58,21 @@ static inline int dma_set_mask(struct de
#ifndef __arch_pfn_to_dma
static inline dma_addr_t pfn_to_dma(struct device *dev, unsigned long pfn)
{
@ -52,6 +50,3 @@ index 85738b2..9477f09 100644
return (dma_addr_t)__virt_to_bus((unsigned long)(addr));
}
--
1.8.3.2

View File

@ -12,8 +12,6 @@ Subject: [PATCH 058/114] MMC: added alternative MMC driver
5 files changed, 1620 insertions(+), 11 deletions(-)
create mode 100644 drivers/mmc/host/bcm2835-mmc.c
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index f15a4b9..c363a10 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -908,6 +908,8 @@ CONFIG_MMC=y
@ -25,11 +23,9 @@ index f15a4b9..c363a10 100644
CONFIG_MMC_SPI=m
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index b45f327..5ff1299 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -414,6 +414,34 @@ static struct platform_device bcm2708_systemtimer_device = {
@@ -414,6 +414,34 @@ static struct platform_device bcm2708_sy
},
};
@ -74,8 +70,6 @@ index b45f327..5ff1299 100644
bcm2708_init_led();
for (i = 0; i < ARRAY_SIZE(bcm2708_alsa_devices); i++)
bcm_register_device(&bcm2708_alsa_devices[i]);
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 1386065..977aeef 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -281,17 +281,6 @@ config MMC_SDHCI_BCM_KONA
@ -132,11 +126,9 @@ index 1386065..977aeef 100644
config MMC_OMAP
tristate "TI OMAP Multimedia Card Interface support"
depends on ARCH_OMAP
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index b09ecfb..7b17387 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -17,6 +17,7 @@ obj-$(CONFIG_MMC_SDHCI_PXAV2) += sdhci-pxav2.o
@@ -17,6 +17,7 @@ obj-$(CONFIG_MMC_SDHCI_PXAV2) += sdhci-p
obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o
obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci-sirf.o
obj-$(CONFIG_MMC_SDHCI_SPEAR) += sdhci-spear.o
@ -144,9 +136,6 @@ index b09ecfb..7b17387 100644
obj-$(CONFIG_MMC_WBSD) += wbsd.o
obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
obj-$(CONFIG_MMC_OMAP) += omap.o
diff --git a/drivers/mmc/host/bcm2835-mmc.c b/drivers/mmc/host/bcm2835-mmc.c
new file mode 100644
index 0000000..cefba7c
--- /dev/null
+++ b/drivers/mmc/host/bcm2835-mmc.c
@@ -0,0 +1,1557 @@
@ -1707,6 +1696,3 @@ index 0000000..cefba7c
+MODULE_DESCRIPTION("BCM2835 SDHCI driver");
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Gellert Weisz");
--
1.8.3.2

View File

@ -12,11 +12,9 @@ Reported/Tested-by: Gellert Weisz <gellert@raspberrypi.org>
drivers/mmc/core/quirks.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/mmc/core/quirks.c b/drivers/mmc/core/quirks.c
index dd1d1e0..f472082 100644
--- a/drivers/mmc/core/quirks.c
+++ b/drivers/mmc/core/quirks.c
@@ -95,5 +95,9 @@ void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table)
@@ -95,5 +95,9 @@ void mmc_fixup_device(struct mmc_card *c
f->vendor_fixup(card, f->data);
}
}
@ -26,6 +24,3 @@ index dd1d1e0..f472082 100644
+ card->quirks |= MMC_QUIRK_BLK_NO_CMD23;
}
EXPORT_SYMBOL(mmc_fixup_device);
--
1.8.3.2

View File

@ -14,8 +14,6 @@ a different codec chip (PCM5122), therefore a new driver is necessary.
5 files changed, 148 insertions(+)
create mode 100644 sound/soc/bcm/hifiberry_dacplus.c
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index c363a10..28547eb 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -756,6 +756,7 @@ CONFIG_SND_USB_6FIRE=m
@ -26,11 +24,9 @@ index c363a10..28547eb 100644
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
CONFIG_SND_BCM2708_SOC_RPI_DAC=m
CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 5ff1299..aa62e55 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -645,6 +645,20 @@ static struct platform_device snd_pcm5102a_codec_device = {
@@ -645,6 +645,20 @@ static struct platform_device snd_pcm510
};
#endif
@ -63,8 +59,6 @@ index 5ff1299..aa62e55 100644
#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI_MODULE)
bcm_register_device(&snd_hifiberry_digi_device);
i2c_register_board_info(1, snd_wm8804_i2c_devices, ARRAY_SIZE(snd_wm8804_i2c_devices));
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
index c621a5e..926a82b 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
@@ -26,6 +26,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC
@ -81,11 +75,9 @@ index c621a5e..926a82b 100644
config SND_BCM2708_SOC_HIFIBERRY_DIGI
tristate "Support for HifiBerry Digi"
depends on SND_BCM2708_SOC_I2S
diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
index d597fb0..c02e3a2 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
@@ -10,11 +10,13 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd-soc-bcm2708-i2s.o
@@ -10,11 +10,13 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd
# BCM2708 Machine Support
snd-soc-hifiberry-dac-objs := hifiberry_dac.o
@ -99,9 +91,6 @@ index d597fb0..c02e3a2 100644
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
diff --git a/sound/soc/bcm/hifiberry_dacplus.c b/sound/soc/bcm/hifiberry_dacplus.c
new file mode 100644
index 0000000..c63387b
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_dacplus.c
@@ -0,0 +1,119 @@
@ -224,6 +213,3 @@ index 0000000..c63387b
+MODULE_AUTHOR("Daniel Matuschek <daniel@hifiberry.com>");
+MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+");
+MODULE_LICENSE("GPL v2");
--
1.8.3.2

View File

@ -20,8 +20,6 @@ drivers for the Raspberry Pi I2S subsystem.
create mode 100644 sound/soc/codecs/tas5713.c
create mode 100644 sound/soc/codecs/tas5713.h
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 28547eb..997e1f3 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -758,6 +758,7 @@ CONFIG_SND_BCM2708_SOC_I2S=m
@ -32,11 +30,9 @@ index 28547eb..997e1f3 100644
CONFIG_SND_BCM2708_SOC_RPI_DAC=m
CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
CONFIG_SND_SIMPLE_CARD=m
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index aa62e55..5f6a1fa 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -674,6 +674,20 @@ static struct i2c_board_info __initdata snd_wm8804_i2c_devices[] = {
@@ -674,6 +674,20 @@ static struct i2c_board_info __initdata
#endif
@ -70,8 +66,6 @@ index aa62e55..5f6a1fa 100644
#if defined(CONFIG_SND_BCM2708_SOC_RPI_DAC) || defined(CONFIG_SND_BCM2708_SOC_RPI_DAC_MODULE)
bcm_register_device(&snd_rpi_dac_device);
bcm_register_device(&snd_pcm1794a_codec_device);
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
index 926a82b..a562ddf 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
@@ -40,6 +40,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DIGI
@ -88,11 +82,9 @@ index 926a82b..a562ddf 100644
config SND_BCM2708_SOC_RPI_DAC
tristate "Support for RPi-DAC"
depends on SND_BCM2708_SOC_I2S
diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
index c02e3a2..17ea2b0 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
@@ -12,11 +12,13 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd-soc-bcm2708-i2s.o
@@ -12,11 +12,13 @@ obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd
snd-soc-hifiberry-dac-objs := hifiberry_dac.o
snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o
snd-soc-hifiberry-digi-objs := hifiberry_digi.o
@ -106,9 +98,6 @@ index c02e3a2..17ea2b0 100644
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o
obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
diff --git a/sound/soc/bcm/hifiberry_amp.c b/sound/soc/bcm/hifiberry_amp.c
new file mode 100644
index 0000000..1e87ee0
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_amp.c
@@ -0,0 +1,106 @@
@ -218,8 +207,6 @@ index 0000000..1e87ee0
+MODULE_AUTHOR("Sebastian Eickhoff <basti.eickhoff@googlemail.com>");
+MODULE_DESCRIPTION("ASoC driver for HiFiBerry-AMP");
+MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index 3c236a6..83c55f8 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -105,6 +105,7 @@ config SND_SOC_ALL_CODECS
@ -240,8 +227,6 @@ index 3c236a6..83c55f8 100644
config SND_SOC_TLV320AIC23
tristate
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index 2a7f823..ca76a2b 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -103,6 +103,7 @@ snd-soc-sta350-objs := sta350.o
@ -252,7 +237,7 @@ index 2a7f823..ca76a2b 100644
snd-soc-tlv320aic23-objs := tlv320aic23.o
snd-soc-tlv320aic23-i2c-objs := tlv320aic23-i2c.o
snd-soc-tlv320aic23-spi-objs := tlv320aic23-spi.o
@@ -278,6 +279,7 @@ obj-$(CONFIG_SND_SOC_STA529) += snd-soc-sta529.o
@@ -278,6 +279,7 @@ obj-$(CONFIG_SND_SOC_STA529) += snd-so
obj-$(CONFIG_SND_SOC_STAC9766) += snd-soc-stac9766.o
obj-$(CONFIG_SND_SOC_TAS2552) += snd-soc-tas2552.o
obj-$(CONFIG_SND_SOC_TAS5086) += snd-soc-tas5086.o
@ -260,9 +245,6 @@ index 2a7f823..ca76a2b 100644
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 --git a/sound/soc/codecs/tas5713.c b/sound/soc/codecs/tas5713.c
new file mode 100644
index 0000000..a24c1da
--- /dev/null
+++ b/sound/soc/codecs/tas5713.c
@@ -0,0 +1,362 @@
@ -628,9 +610,6 @@ index 0000000..a24c1da
+MODULE_AUTHOR("Sebastian Eickhoff <basti.eickhoff@googlemail.com>");
+MODULE_DESCRIPTION("ASoC driver for TAS5713");
+MODULE_LICENSE("GPL v2");
diff --git a/sound/soc/codecs/tas5713.h b/sound/soc/codecs/tas5713.h
new file mode 100644
index 0000000..8f019e0
--- /dev/null
+++ b/sound/soc/codecs/tas5713.h
@@ -0,0 +1,210 @@
@ -844,6 +823,3 @@ index 0000000..8f019e0
+
+
+#endif /* _TAS5713_H */
--
1.8.3.2

View File

@ -28,11 +28,9 @@ optimised memcpy/memmove/memcmp/memset implementations.
create mode 100644 arch/arm/lib/memmove_rpi.S
create mode 100644 arch/arm/lib/memset_rpi.S
diff --git a/arch/arm/include/asm/string.h b/arch/arm/include/asm/string.h
index cf4f3aa..9fe7780 100644
--- a/arch/arm/include/asm/string.h
+++ b/arch/arm/include/asm/string.h
@@ -24,6 +24,11 @@ extern void * memchr(const void *, int, __kernel_size_t);
@@ -24,6 +24,11 @@ extern void * memchr(const void *, int,
#define __HAVE_ARCH_MEMSET
extern void * memset(void *, int, __kernel_size_t);
@ -44,8 +42,6 @@ index cf4f3aa..9fe7780 100644
extern void __memzero(void *ptr, __kernel_size_t n);
#define memset(p,v,n) \
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
index 4767eb9..bcd43de 100644
--- a/arch/arm/include/asm/uaccess.h
+++ b/arch/arm/include/asm/uaccess.h
@@ -475,6 +475,7 @@ do { \
@ -56,8 +52,6 @@ index 4767eb9..bcd43de 100644
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 --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 0573faa..498f5dd 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -6,15 +6,24 @@
@ -88,9 +82,6 @@ index 0573faa..498f5dd 100644
mmu-y := clear_user.o copy_page.o getuser.o putuser.o
# the code in uaccess.S is not preemption safe and
diff --git a/arch/arm/lib/arm-mem.h b/arch/arm/lib/arm-mem.h
new file mode 100644
index 0000000..5d4bda1
--- /dev/null
+++ b/arch/arm/lib/arm-mem.h
@@ -0,0 +1,159 @@
@ -253,8 +244,6 @@ index 0000000..5d4bda1
+ .endif
+92:
+.endm
diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S
index 66a477a..3faddf7 100644
--- a/arch/arm/lib/copy_from_user.S
+++ b/arch/arm/lib/copy_from_user.S
@@ -84,11 +84,13 @@
@ -272,9 +261,6 @@ index 66a477a..3faddf7 100644
.pushsection .fixup,"ax"
.align 0
diff --git a/arch/arm/lib/exports_rpi.c b/arch/arm/lib/exports_rpi.c
new file mode 100644
index 0000000..1f82604
--- /dev/null
+++ b/arch/arm/lib/exports_rpi.c
@@ -0,0 +1,37 @@
@ -315,9 +301,6 @@ index 0000000..1f82604
+#include <linux/module.h>
+
+EXPORT_SYMBOL(memcmp);
diff --git a/arch/arm/lib/memcmp_rpi.S b/arch/arm/lib/memcmp_rpi.S
new file mode 100644
index 0000000..bf6e4ed
--- /dev/null
+++ b/arch/arm/lib/memcmp_rpi.S
@@ -0,0 +1,285 @@
@ -606,9 +589,6 @@ index 0000000..bf6e4ed
+ .unreq DAT7
+ .unreq OFF
+ENDPROC(memcmp)
diff --git a/arch/arm/lib/memcpy_rpi.S b/arch/arm/lib/memcpy_rpi.S
new file mode 100644
index 0000000..15ff2bd
--- /dev/null
+++ b/arch/arm/lib/memcpy_rpi.S
@@ -0,0 +1,59 @@
@ -671,9 +651,6 @@ index 0000000..15ff2bd
+ENTRY(memcpy)
+ memcpy 0
+ENDPROC(memcpy)
diff --git a/arch/arm/lib/memcpymove.h b/arch/arm/lib/memcpymove.h
new file mode 100644
index 0000000..d8be584
--- /dev/null
+++ b/arch/arm/lib/memcpymove.h
@@ -0,0 +1,506 @@
@ -1183,9 +1160,6 @@ index 0000000..d8be584
+ .unreq LAST
+ .unreq OFF
+.endm
diff --git a/arch/arm/lib/memmove_rpi.S b/arch/arm/lib/memmove_rpi.S
new file mode 100644
index 0000000..8b0760c
--- /dev/null
+++ b/arch/arm/lib/memmove_rpi.S
@@ -0,0 +1,61 @@
@ -1250,9 +1224,6 @@ index 0000000..8b0760c
+ bpl memcpy /* pl works even over -1 - 0 and 0x7fffffff - 0x80000000 boundaries */
+ memcpy 1
+ENDPROC(memmove)
diff --git a/arch/arm/lib/memset_rpi.S b/arch/arm/lib/memset_rpi.S
new file mode 100644
index 0000000..2cde883
--- /dev/null
+++ b/arch/arm/lib/memset_rpi.S
@@ -0,0 +1,121 @@
@ -1377,8 +1348,6 @@ index 0000000..2cde883
+ .unreq DAT2
+ .unreq DAT3
+ENDPROC(memset)
diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
index 3e58d71..0622891 100644
--- a/arch/arm/lib/uaccess_with_memcpy.c
+++ b/arch/arm/lib/uaccess_with_memcpy.c
@@ -22,6 +22,14 @@
@ -1396,7 +1365,7 @@ index 3e58d71..0622891 100644
static int
pin_page_for_write(const void __user *_addr, pte_t **ptep, spinlock_t **ptlp)
{
@@ -85,7 +93,44 @@ pin_page_for_write(const void __user *_addr, pte_t **ptep, spinlock_t **ptlp)
@@ -85,7 +93,44 @@ pin_page_for_write(const void __user *_a
return 1;
}
@ -1497,7 +1466,7 @@ index 3e58d71..0622891 100644
unsigned long
__copy_to_user(void __user *to, const void *from, unsigned long n)
{
@@ -145,10 +238,25 @@ __copy_to_user(void __user *to, const void *from, unsigned long n)
@@ -145,10 +238,25 @@ __copy_to_user(void __user *to, const vo
* With frame pointer disabled, tail call optimization kicks in
* as well making this test almost invisible.
*/
@ -1524,6 +1493,3 @@ index 3e58d71..0622891 100644
static unsigned long noinline
__clear_user_memset(void __user *addr, unsigned long n)
--
1.8.3.2

View File

@ -18,8 +18,6 @@ support code with each new device.
sound/soc/bcm/bcm2835-i2s.c | 1 +
6 files changed, 80 insertions(+), 64 deletions(-)
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 5f6a1fa..2c6a29d 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -35,6 +35,7 @@
@ -39,7 +37,7 @@ index 5f6a1fa..2c6a29d 100644
static void __init bcm2708_init_led(void);
void __init bcm2708_init_irq(void)
@@ -514,7 +517,6 @@ static struct platform_device bcm2708_alsa_devices[] = {
@@ -514,7 +517,6 @@ static struct platform_device bcm2708_al
},
};
@ -47,7 +45,7 @@ index 5f6a1fa..2c6a29d 100644
static struct resource bcm2708_spi_resources[] = {
{
.start = SPI0_BASE,
@@ -538,7 +540,6 @@ static struct platform_device bcm2708_spi_device = {
@@ -538,7 +540,6 @@ static struct platform_device bcm2708_sp
.dma_mask = &bcm2708_spi_dmamask,
.coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON)},
};
@ -55,7 +53,7 @@ index 5f6a1fa..2c6a29d 100644
#ifdef CONFIG_BCM2708_SPIDEV
static struct spi_board_info bcm2708_spi_devices[] = {
@@ -560,7 +561,6 @@ static struct spi_board_info bcm2708_spi_devices[] = {
@@ -560,7 +561,6 @@ static struct spi_board_info bcm2708_spi
};
#endif
@ -63,7 +61,7 @@ index 5f6a1fa..2c6a29d 100644
static struct resource bcm2708_bsc0_resources[] = {
{
.start = BSC0_BASE,
@@ -599,7 +599,6 @@ static struct platform_device bcm2708_bsc1_device = {
@@ -599,7 +599,6 @@ static struct platform_device bcm2708_bs
.num_resources = ARRAY_SIZE(bcm2708_bsc1_resources),
.resource = bcm2708_bsc1_resources,
};
@ -71,7 +69,7 @@ index 5f6a1fa..2c6a29d 100644
static struct platform_device bcm2835_hwmon_device = {
.name = "bcm2835_hwmon",
@@ -609,7 +608,7 @@ static struct platform_device bcm2835_thermal_device = {
@@ -609,7 +608,7 @@ static struct platform_device bcm2835_th
.name = "bcm2835_thermal",
};
@ -80,7 +78,7 @@ index 5f6a1fa..2c6a29d 100644
static struct resource bcm2708_i2s_resources[] = {
{
.start = I2S_BASE,
@@ -731,14 +730,14 @@ int __init bcm_register_device(struct platform_device *pdev)
@@ -731,14 +730,14 @@ int __init bcm_register_device(struct pl
}
/*
@ -186,7 +184,7 @@ index 5f6a1fa..2c6a29d 100644
#endif
@@ -1041,9 +1041,9 @@ static struct platform_device bcm2708_led_device = {
@@ -1041,9 +1041,9 @@ static struct platform_device bcm2708_le
static void __init bcm2708_init_led(void)
{
@ -199,8 +197,6 @@ index 5f6a1fa..2c6a29d 100644
}
#else
static inline void bcm2708_init_led(void)
diff --git a/drivers/dma/bcm2708-dmaengine.c b/drivers/dma/bcm2708-dmaengine.c
index 10463db..3f9be02 100644
--- a/drivers/dma/bcm2708-dmaengine.c
+++ b/drivers/dma/bcm2708-dmaengine.c
@@ -42,7 +42,7 @@
@ -212,7 +208,7 @@ index 10463db..3f9be02 100644
/* dma manager */
#include <mach/dma.h>
@@ -721,7 +721,7 @@ static int bcm2835_dma_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
@@ -721,7 +721,7 @@ static int bcm2835_dma_control(struct dm
}
}
@ -221,7 +217,7 @@ index 10463db..3f9be02 100644
static int bcm2835_dma_chan_init(struct bcm2835_dmadev *d, int chan_id, int irq)
{
struct bcm2835_chan *c;
@@ -784,7 +784,7 @@ static const struct of_device_id bcm2835_dma_of_match[] = {
@@ -784,7 +784,7 @@ static const struct of_device_id bcm2835
};
MODULE_DEVICE_TABLE(of, bcm2835_dma_of_match);
@ -230,7 +226,7 @@ index 10463db..3f9be02 100644
static struct dma_chan *bcm2835_dma_xlate(struct of_phandle_args *spec,
struct of_dma *ofdma)
{
@@ -817,7 +817,7 @@ static int bcm2835_dma_device_slave_caps(struct dma_chan *dchan,
@@ -817,7 +817,7 @@ static int bcm2835_dma_device_slave_caps
static int bcm2835_dma_probe(struct platform_device *pdev)
{
struct bcm2835_dmadev *od;
@ -239,7 +235,7 @@ index 10463db..3f9be02 100644
struct resource *res;
void __iomem *base;
uint32_t chans_available;
@@ -830,10 +830,10 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
@@ -830,10 +830,10 @@ static int bcm2835_dma_probe(struct plat
if (!pdev->dev.dma_mask)
pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask;
@ -252,7 +248,7 @@ index 10463db..3f9be02 100644
rc = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
if (rc)
@@ -987,7 +987,7 @@ static int bcm2835_dma_remove(struct platform_device *pdev)
@@ -987,7 +987,7 @@ static int bcm2835_dma_remove(struct pla
return 0;
}
@ -261,8 +257,6 @@ index 10463db..3f9be02 100644
static struct platform_driver bcm2835_dma_driver = {
diff --git a/drivers/mmc/host/bcm2835-mmc.c b/drivers/mmc/host/bcm2835-mmc.c
index cefba7c..34d6167 100644
--- a/drivers/mmc/host/bcm2835-mmc.c
+++ b/drivers/mmc/host/bcm2835-mmc.c
@@ -42,7 +42,7 @@
@ -274,7 +268,7 @@ index cefba7c..34d6167 100644
#define BCM2835_CLOCK_FREQ 250000000
#endif
@@ -662,7 +662,7 @@ void bcm2835_mmc_send_command(struct bcm2835_host *host, struct mmc_command *cmd
@@ -662,7 +662,7 @@ void bcm2835_mmc_send_command(struct bcm
}
timeout = jiffies;
@ -283,7 +277,7 @@ index cefba7c..34d6167 100644
if (!cmd->data && cmd->busy_timeout > 9000)
timeout += DIV_ROUND_UP(cmd->busy_timeout, 1000) * HZ + HZ;
else
@@ -962,7 +962,7 @@ static irqreturn_t bcm2835_mmc_irq(int irq, void *dev_id)
@@ -962,7 +962,7 @@ static irqreturn_t bcm2835_mmc_irq(int i
struct bcm2835_host *host = dev_id;
u32 intmask, mask, unexpected = 0;
int max_loops = 16;
@ -292,7 +286,7 @@ index cefba7c..34d6167 100644
int cardint = 0;
#endif
@@ -993,7 +993,7 @@ static irqreturn_t bcm2835_mmc_irq(int irq, void *dev_id)
@@ -993,7 +993,7 @@ static irqreturn_t bcm2835_mmc_irq(int i
mmc_hostname(host->mmc));
if (intmask & SDHCI_INT_CARD_INT) {
@ -319,7 +313,7 @@ index cefba7c..34d6167 100644
static irqreturn_t bcm2835_mmc_thread_irq(int irq, void *dev_id)
{
struct bcm2835_host *host = dev_id;
@@ -1288,7 +1288,7 @@ int bcm2835_mmc_add_host(struct bcm2835_host *host)
@@ -1288,7 +1288,7 @@ int bcm2835_mmc_add_host(struct bcm2835_
/* SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK */
host->timeout_clk = mmc->f_max / 1000;
@ -328,7 +322,7 @@ index cefba7c..34d6167 100644
mmc->max_busy_timeout = (1 << 27) / host->timeout_clk;
#endif
/* host controller capabilities */
@@ -1345,7 +1345,7 @@ int bcm2835_mmc_add_host(struct bcm2835_host *host)
@@ -1345,7 +1345,7 @@ int bcm2835_mmc_add_host(struct bcm2835_
init_waitqueue_head(&host->buf_ready_int);
bcm2835_mmc_init(host, 0);
@ -346,7 +340,7 @@ index cefba7c..34d6167 100644
struct device_node *node = dev->of_node;
struct clk *clk;
#endif
@@ -1383,7 +1383,7 @@ static int bcm2835_mmc_probe(struct platform_device *pdev)
@@ -1383,7 +1383,7 @@ static int bcm2835_mmc_probe(struct plat
int ret;
struct mmc_host *mmc;
@ -355,7 +349,7 @@ index cefba7c..34d6167 100644
dma_cap_mask_t mask;
#endif
@@ -1408,7 +1408,7 @@ static int bcm2835_mmc_probe(struct platform_device *pdev)
@@ -1408,7 +1408,7 @@ static int bcm2835_mmc_probe(struct plat
host->phys_addr = iomem->start + BCM2835_VCMMU_SHIFT;
@ -364,7 +358,7 @@ index cefba7c..34d6167 100644
#ifndef FORCE_PIO
dma_cap_zero(mask);
/* we don't care about the channel, any would work */
@@ -1458,7 +1458,7 @@ static int bcm2835_mmc_probe(struct platform_device *pdev)
@@ -1458,7 +1458,7 @@ static int bcm2835_mmc_probe(struct plat
}
@ -373,11 +367,9 @@ index cefba7c..34d6167 100644
mmc->caps |= MMC_CAP_4_BIT_DATA;
#else
mmc_of_parse(mmc);
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index d134710..2e2b6d0 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -1083,8 +1083,12 @@ static struct debugfs_blob_wrapper flat_dt_blob;
@@ -1086,8 +1086,12 @@ static struct debugfs_blob_wrapper flat_
static int __init of_flat_dt_debugfs_export_fdt(void)
{
@ -391,11 +383,9 @@ index d134710..2e2b6d0 100644
if (!d)
return -ENOENT;
diff --git a/sound/soc/bcm/bcm2708-i2s.c b/sound/soc/bcm/bcm2708-i2s.c
index 0b5322a..a3b65dc 100644
--- a/sound/soc/bcm/bcm2708-i2s.c
+++ b/sound/soc/bcm/bcm2708-i2s.c
@@ -493,15 +493,19 @@ static int bcm2708_i2s_hw_params(struct snd_pcm_substream *substream,
@@ -493,15 +493,19 @@ static int bcm2708_i2s_hw_params(struct
divf = dividend & BCM2708_CLK_DIVF_MASK;
}
@ -424,7 +414,7 @@ index 0b5322a..a3b65dc 100644
/* Setup the frame format */
format = BCM2708_I2S_CHEN;
@@ -981,12 +985,19 @@ static int bcm2708_i2s_remove(struct platform_device *pdev)
@@ -981,12 +985,19 @@ static int bcm2708_i2s_remove(struct pla
return 0;
}
@ -444,11 +434,9 @@ index 0b5322a..a3b65dc 100644
},
};
diff --git a/sound/soc/bcm/bcm2835-i2s.c b/sound/soc/bcm/bcm2835-i2s.c
index 2685fe4..e2c61d1 100644
--- a/sound/soc/bcm/bcm2835-i2s.c
+++ b/sound/soc/bcm/bcm2835-i2s.c
@@ -861,6 +861,7 @@ static const struct of_device_id bcm2835_i2s_of_match[] = {
@@ -861,6 +861,7 @@ static const struct of_device_id bcm2835
{ .compatible = "brcm,bcm2835-i2s", },
{},
};
@ -456,6 +444,3 @@ index 2685fe4..e2c61d1 100644
static struct platform_driver bcm2835_i2s_driver = {
.probe = bcm2835_i2s_probe,
--
1.8.3.2

View File

@ -26,11 +26,9 @@ Subject: [PATCH 064/114] Adding Device Tree support for some RPi audio cards
create mode 100644 arch/arm/boot/dts/iqaudio-dac-overlay.dts
create mode 100644 arch/arm/boot/dts/iqaudio-dacplus-overlay.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index c727f71..adaebbb 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -54,6 +54,7 @@ dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4ek.dtb
@@ -54,6 +54,7 @@ dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4e
dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb
dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb
dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb
@ -38,7 +36,7 @@ index c727f71..adaebbb 100644
dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb
dtb-$(CONFIG_ARCH_BCM_63XX) += bcm963138dvt.dtb
@@ -520,6 +521,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt6589-aquaris5.dtb
@@ -520,6 +521,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt6589-aq
targets += dtbs dtbs_install
targets += $(dtb-y)
@ -46,9 +44,6 @@ index c727f71..adaebbb 100644
endif
# *.dtb used to be generated in the directory above. Clean out the
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
new file mode 100644
index 0000000..983c23f
--- /dev/null
+++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
@@ -0,0 +1,81 @@
@ -133,8 +128,6 @@ index 0000000..983c23f
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2s_pins>;
+};
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
index 5893122..d8c6d15 100644
--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
@@ -4,12 +4,18 @@
@ -179,8 +172,6 @@ index 5893122..d8c6d15 100644
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2s_pins>;
+};
diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
index 2ca6d63..6b36128 100644
--- a/arch/arm/boot/dts/bcm2708.dtsi
+++ b/arch/arm/boot/dts/bcm2708.dtsi
@@ -7,11 +7,8 @@
@ -215,9 +206,6 @@ index 2ca6d63..6b36128 100644
spi0: spi@7e204000 {
compatible = "brcm,bcm2708-spi";
reg = <0x7e204000 0x1000>;
diff --git a/arch/arm/boot/dts/hifiberry-dac-overlay.dts b/arch/arm/boot/dts/hifiberry-dac-overlay.dts
new file mode 100644
index 0000000..5e7633a
--- /dev/null
+++ b/arch/arm/boot/dts/hifiberry-dac-overlay.dts
@@ -0,0 +1,34 @@
@ -255,9 +243,6 @@ index 0000000..5e7633a
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts b/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts
new file mode 100644
index 0000000..deb9c62
--- /dev/null
+++ b/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts
@@ -0,0 +1,39 @@
@ -300,9 +285,6 @@ index 0000000..deb9c62
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/hifiberry-digi-overlay.dts b/arch/arm/boot/dts/hifiberry-digi-overlay.dts
new file mode 100644
index 0000000..d0e0d8a
--- /dev/null
+++ b/arch/arm/boot/dts/hifiberry-digi-overlay.dts
@@ -0,0 +1,39 @@
@ -345,9 +327,6 @@ index 0000000..d0e0d8a
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/iqaudio-dac-overlay.dts b/arch/arm/boot/dts/iqaudio-dac-overlay.dts
new file mode 100644
index 0000000..ea8173e
--- /dev/null
+++ b/arch/arm/boot/dts/iqaudio-dac-overlay.dts
@@ -0,0 +1,39 @@
@ -390,9 +369,6 @@ index 0000000..ea8173e
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts b/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts
new file mode 100644
index 0000000..735d8ab
--- /dev/null
+++ b/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts
@@ -0,0 +1,39 @@
@ -435,11 +411,9 @@ index 0000000..735d8ab
+ };
+ };
+};
diff --git a/sound/soc/bcm/hifiberry_dac.c b/sound/soc/bcm/hifiberry_dac.c
index 4b70b45..3ab0f47 100644
--- a/sound/soc/bcm/hifiberry_dac.c
+++ b/sound/soc/bcm/hifiberry_dac.c
@@ -72,6 +72,21 @@ static int snd_rpi_hifiberry_dac_probe(struct platform_device *pdev)
@@ -72,6 +72,21 @@ static int snd_rpi_hifiberry_dac_probe(s
int ret = 0;
snd_rpi_hifiberry_dac.dev = &pdev->dev;
@ -461,7 +435,7 @@ index 4b70b45..3ab0f47 100644
ret = snd_soc_register_card(&snd_rpi_hifiberry_dac);
if (ret)
dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret);
@@ -84,10 +99,17 @@ static int snd_rpi_hifiberry_dac_remove(struct platform_device *pdev)
@@ -84,10 +99,17 @@ static int snd_rpi_hifiberry_dac_remove(
return snd_soc_unregister_card(&snd_rpi_hifiberry_dac);
}
@ -479,11 +453,9 @@ index 4b70b45..3ab0f47 100644
},
.probe = snd_rpi_hifiberry_dac_probe,
.remove = snd_rpi_hifiberry_dac_remove,
diff --git a/sound/soc/bcm/hifiberry_dacplus.c b/sound/soc/bcm/hifiberry_dacplus.c
index c63387b..11e4f39 100644
--- a/sound/soc/bcm/hifiberry_dacplus.c
+++ b/sound/soc/bcm/hifiberry_dacplus.c
@@ -90,6 +90,21 @@ static int snd_rpi_hifiberry_dacplus_probe(struct platform_device *pdev)
@@ -90,6 +90,21 @@ static int snd_rpi_hifiberry_dacplus_pro
int ret = 0;
snd_rpi_hifiberry_dacplus.dev = &pdev->dev;
@ -505,7 +477,7 @@ index c63387b..11e4f39 100644
ret = snd_soc_register_card(&snd_rpi_hifiberry_dacplus);
if (ret)
dev_err(&pdev->dev,
@@ -103,10 +118,17 @@ static int snd_rpi_hifiberry_dacplus_remove(struct platform_device *pdev)
@@ -103,10 +118,17 @@ static int snd_rpi_hifiberry_dacplus_rem
return snd_soc_unregister_card(&snd_rpi_hifiberry_dacplus);
}
@ -523,11 +495,9 @@ index c63387b..11e4f39 100644
},
.probe = snd_rpi_hifiberry_dacplus_probe,
.remove = snd_rpi_hifiberry_dacplus_remove,
diff --git a/sound/soc/bcm/hifiberry_digi.c b/sound/soc/bcm/hifiberry_digi.c
index e4f769d..76af8a6 100644
--- a/sound/soc/bcm/hifiberry_digi.c
+++ b/sound/soc/bcm/hifiberry_digi.c
@@ -125,6 +125,21 @@ static int snd_rpi_hifiberry_digi_probe(struct platform_device *pdev)
@@ -125,6 +125,21 @@ static int snd_rpi_hifiberry_digi_probe(
int ret = 0;
snd_rpi_hifiberry_digi.dev = &pdev->dev;
@ -549,7 +519,7 @@ index e4f769d..76af8a6 100644
ret = snd_soc_register_card(&snd_rpi_hifiberry_digi);
if (ret)
dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret);
@@ -137,10 +152,17 @@ static int snd_rpi_hifiberry_digi_remove(struct platform_device *pdev)
@@ -137,10 +152,17 @@ static int snd_rpi_hifiberry_digi_remove
return snd_soc_unregister_card(&snd_rpi_hifiberry_digi);
}
@ -567,11 +537,9 @@ index e4f769d..76af8a6 100644
},
.probe = snd_rpi_hifiberry_digi_probe,
.remove = snd_rpi_hifiberry_digi_remove,
diff --git a/sound/soc/bcm/iqaudio-dac.c b/sound/soc/bcm/iqaudio-dac.c
index 8d0e2ae..ee8cd6e 100644
--- a/sound/soc/bcm/iqaudio-dac.c
+++ b/sound/soc/bcm/iqaudio-dac.c
@@ -76,6 +76,21 @@ static int snd_rpi_iqaudio_dac_probe(struct platform_device *pdev)
@@ -76,6 +76,21 @@ static int snd_rpi_iqaudio_dac_probe(str
int ret = 0;
snd_rpi_iqaudio_dac.dev = &pdev->dev;
@ -593,7 +561,7 @@ index 8d0e2ae..ee8cd6e 100644
ret = snd_soc_register_card(&snd_rpi_iqaudio_dac);
if (ret)
dev_err(&pdev->dev,
@@ -93,6 +108,7 @@ static const struct of_device_id iqaudio_of_match[] = {
@@ -93,6 +108,7 @@ static const struct of_device_id iqaudio
{ .compatible = "iqaudio,iqaudio-dac", },
{},
};
@ -601,11 +569,9 @@ index 8d0e2ae..ee8cd6e 100644
static struct platform_driver snd_rpi_iqaudio_dac_driver = {
.driver = {
diff --git a/sound/soc/codecs/pcm5102a.c b/sound/soc/codecs/pcm5102a.c
index 126f1e9..7c6598e 100644
--- a/sound/soc/codecs/pcm5102a.c
+++ b/sound/soc/codecs/pcm5102a.c
@@ -47,12 +47,19 @@ static int pcm5102a_remove(struct platform_device *pdev)
@@ -47,12 +47,19 @@ static int pcm5102a_remove(struct platfo
return 0;
}
@ -625,6 +591,3 @@ index 126f1e9..7c6598e 100644
},
};
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 65/99] fdt: Add support for the CONFIG_CMDLINE_EXTEND option
drivers/of/fdt.c | 29 ++++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 2e2b6d0..badc6a3 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -901,22 +901,38 @@ int __init early_init_dt_scan_chosen(uns
@ -58,6 +56,3 @@ index 2e2b6d0..badc6a3 100644
#endif /* CONFIG_CMDLINE */
pr_debug("Command line is: %s\n", (char*)data);
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 066/114] config: Enable device tree
arch/arm/configs/bcmrpi_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 997e1f3..2cd8227 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -39,6 +39,7 @@ CONFIG_PARTITION_ADVANCED=y
@ -19,6 +17,3 @@ index 997e1f3..2cd8227 100644
CONFIG_PREEMPT=y
CONFIG_AEABI=y
CONFIG_CLEANCACHE=y
--
1.8.3.2

View File

@ -8,8 +8,6 @@ Subject: [PATCH 067/114] DT: Add overrides to enable i2c0, i2c1, spi and i2s
arch/arm/boot/dts/bcm2708-rpi-b.dts | 10 ++++++++++
2 files changed, 20 insertions(+)
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
index 983c23f..d9886c3 100644
--- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
+++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
@@ -79,3 +79,13 @@
@ -26,8 +24,6 @@ index 983c23f..d9886c3 100644
+ i2c1 = <&i2c1>,"status";
+ };
+};
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
index d8c6d15..167b22b 100644
--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
@@ -79,3 +79,13 @@
@ -44,6 +40,3 @@ index d8c6d15..167b22b 100644
+ i2c1 = <&i2c1>,"status";
+ };
+};
--
1.8.3.2

View File

@ -15,9 +15,6 @@ lirc-rpi: Also support pinctrl-bcm2835 in non-DT mode
2 files changed, 183 insertions(+), 28 deletions(-)
create mode 100644 arch/arm/boot/dts/lirc-rpi-overlay.dts
diff --git a/arch/arm/boot/dts/lirc-rpi-overlay.dts b/arch/arm/boot/dts/lirc-rpi-overlay.dts
new file mode 100644
index 0000000..7d5d82b
--- /dev/null
+++ b/arch/arm/boot/dts/lirc-rpi-overlay.dts
@@ -0,0 +1,57 @@
@ -78,8 +75,6 @@ index 0000000..7d5d82b
+ debug = <&lirc_rpi>,"rpi,debug:0";
+ };
+};
diff --git a/drivers/staging/media/lirc/lirc_rpi.c b/drivers/staging/media/lirc/lirc_rpi.c
index c688364..cd66ca2 100644
--- a/drivers/staging/media/lirc/lirc_rpi.c
+++ b/drivers/staging/media/lirc/lirc_rpi.c
@@ -40,6 +40,7 @@
@ -90,7 +85,7 @@ index c688364..cd66ca2 100644
#include <linux/platform_data/bcm2708.h>
@@ -295,32 +296,117 @@ static int is_right_chip(struct gpio_chip *chip, void *data)
@@ -295,32 +296,117 @@ static int is_right_chip(struct gpio_chi
return 0;
}
@ -175,13 +170,8 @@ index c688364..cd66ca2 100644
+ read_bool_property(node, "rpi,invert", &invert);
+
+ read_bool_property(node, "rpi,debug", &debug);
- if (gpio_request(gpio_out_pin, LIRC_DRIVER_NAME " ir/out")) {
- printk(KERN_ALERT LIRC_DRIVER_NAME
- ": cant claim gpio pin %d\n", gpio_out_pin);
- ret = -ENODEV;
- goto exit_init_port;
}
+
+ }
+ else
+ {
+ if (gpio_in_pin >= BCM2708_NR_GPIOS ||
@ -191,12 +181,7 @@ index c688364..cd66ca2 100644
+ ": invalid GPIO pin(s) specified!\n");
+ goto exit_init_port;
+ }
- if (gpio_request(gpio_in_pin, LIRC_DRIVER_NAME " ir/in")) {
- printk(KERN_ALERT LIRC_DRIVER_NAME
- ": cant claim gpio pin %d\n", gpio_in_pin);
- ret = -ENODEV;
- goto exit_gpio_free_out_pin;
+
+ if (gpio_request(gpio_out_pin, LIRC_DRIVER_NAME " ir/out")) {
+ printk(KERN_ALERT LIRC_DRIVER_NAME
+ ": cant claim gpio pin %d\n", gpio_out_pin);
@ -214,8 +199,22 @@ index c688364..cd66ca2 100644
+ bcm2708_gpio_setpull(gpiochip, gpio_in_pin, gpio_in_pull);
+ gpiochip->direction_input(gpiochip, gpio_in_pin);
+ gpiochip->direction_output(gpiochip, gpio_out_pin, 1);
}
+ }
- if (gpio_request(gpio_out_pin, LIRC_DRIVER_NAME " ir/out")) {
- printk(KERN_ALERT LIRC_DRIVER_NAME
- ": cant claim gpio pin %d\n", gpio_out_pin);
- ret = -ENODEV;
- goto exit_init_port;
- }
-
- if (gpio_request(gpio_in_pin, LIRC_DRIVER_NAME " ir/in")) {
- printk(KERN_ALERT LIRC_DRIVER_NAME
- ": cant claim gpio pin %d\n", gpio_in_pin);
- ret = -ENODEV;
- goto exit_gpio_free_out_pin;
- }
-
- bcm2708_gpio_setpull(gpiochip, gpio_in_pin, gpio_in_pull);
- gpiochip->direction_input(gpiochip, gpio_in_pin);
- gpiochip->direction_output(gpiochip, gpio_out_pin, 1);
@ -254,25 +253,26 @@ index c688364..cd66ca2 100644
- if (!lirc_rpi_dev) {
- result = -ENOMEM;
- goto exit_driver_unregister;
- }
+ node = of_find_compatible_node(NULL, NULL,
+ lirc_rpi_of_match[0].compatible);
+
- result = platform_device_add(lirc_rpi_dev);
- if (result)
- goto exit_device_put;
+ if (node) {
+ /* DT-enabled */
+ lirc_rpi_dev = of_find_device_by_node(node);
+ WARN_ON(lirc_rpi_dev->dev.of_node != node);
+ of_node_put(node);
}
+ }
+ else {
+ lirc_rpi_dev = platform_device_alloc(LIRC_DRIVER_NAME, 0);
+ if (!lirc_rpi_dev) {
+ result = -ENOMEM;
+ goto exit_driver_unregister;
+ }
- result = platform_device_add(lirc_rpi_dev);
- if (result)
- goto exit_device_put;
+
+ result = platform_device_add(lirc_rpi_dev);
+ if (result)
+ goto exit_device_put;
@ -280,7 +280,7 @@ index c688364..cd66ca2 100644
return 0;
@@ -577,13 +682,6 @@ static int __init lirc_rpi_init_module(void)
@@ -577,13 +682,6 @@ static int __init lirc_rpi_init_module(v
if (result)
return result;
@ -294,6 +294,3 @@ index c688364..cd66ca2 100644
result = init_port();
if (result < 0)
goto exit_rpi;
--
1.8.3.2

View File

@ -17,8 +17,6 @@ Issue: linux #757
arch/arm/boot/dts/bcm2708.dtsi | 11 ++++++++++-
3 files changed, 38 insertions(+), 9 deletions(-)
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
index d9886c3..95f03ba 100644
--- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
+++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
@@ -7,11 +7,14 @@
@ -60,8 +58,6 @@ index d9886c3..95f03ba 100644
+ act_led_trigger = <&act_led>,"linux,default-trigger";
};
};
diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
index 167b22b..0631f45 100644
--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
@@ -7,11 +7,14 @@
@ -103,8 +99,6 @@ index 167b22b..0631f45 100644
+ act_led_trigger = <&act_led>,"linux,default-trigger";
};
};
diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
index 6b36128..1b56cb5 100644
--- a/arch/arm/boot/dts/bcm2708.dtsi
+++ b/arch/arm/boot/dts/bcm2708.dtsi
@@ -11,7 +11,7 @@
@ -132,6 +126,3 @@ index 6b36128..1b56cb5 100644
};
clocks {
--
1.8.3.2

View File

@ -22,9 +22,6 @@ w1-gpio-pullup-overlay:
create mode 100644 arch/arm/boot/dts/w1-gpio-overlay.dts
create mode 100644 arch/arm/boot/dts/w1-gpio-pullup-overlay.dts
diff --git a/arch/arm/boot/dts/w1-gpio-overlay.dts b/arch/arm/boot/dts/w1-gpio-overlay.dts
new file mode 100644
index 0000000..b2c5ee2
--- /dev/null
+++ b/arch/arm/boot/dts/w1-gpio-overlay.dts
@@ -0,0 +1,37 @@
@ -65,9 +62,6 @@ index 0000000..b2c5ee2
+ <&w1_pins>,"brcm,pins:0";
+ };
+};
diff --git a/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts b/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts
new file mode 100644
index 0000000..b3e97c2
--- /dev/null
+++ b/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts
@@ -0,0 +1,39 @@
@ -110,6 +104,3 @@ index 0000000..b3e97c2
+ <&w1_pins>,"brcm,pins:4";
+ };
+};
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 071/114] config: Enable CONFIG_PPS
arch/arm/configs/bcmrpi_defconfig | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 2cd8227..36aca2b 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -544,6 +544,9 @@ CONFIG_I2C_BCM2708=m
@ -21,6 +19,3 @@ index 2cd8227..36aca2b 100644
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_ARIZONA=m
CONFIG_W1=m
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 072/114] config: Add CONFIG_IP_NF options
arch/arm/configs/bcmrpi_defconfig | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 36aca2b..665b01e 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -208,13 +208,16 @@ CONFIG_IP_VS_NQ=m
@ -47,6 +45,3 @@ index 36aca2b..665b01e 100644
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 073/114] config: Restore some missing options
arch/arm/configs/bcmrpi_defconfig | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 665b01e..41b90b4 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -484,6 +484,8 @@ CONFIG_AR5523=m
@ -85,6 +83,3 @@ index 665b01e..41b90b4 100644
CONFIG_CRYPTO_SHA1_ARM=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_TGR192=m
--
1.8.3.2

View File

@ -11,11 +11,9 @@ reported correctly by a non-zero return code.
sound/soc/codecs/tas5713.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/sound/soc/codecs/tas5713.c b/sound/soc/codecs/tas5713.c
index a24c1da..9b27138 100644
--- a/sound/soc/codecs/tas5713.c
+++ b/sound/soc/codecs/tas5713.c
@@ -182,33 +182,40 @@ static int tas5713_probe(struct snd_soc_codec *codec)
@@ -182,33 +182,40 @@ static int tas5713_probe(struct snd_soc_
// Reset error
ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00);
@ -58,7 +56,7 @@ index a24c1da..9b27138 100644
if (ret < 0) {
printk(KERN_INFO "TAS5713 CODEC PROBE: InitSeq returns: %d\n", ret);
}
@@ -216,7 +223,7 @@ static int tas5713_probe(struct snd_soc_codec *codec)
@@ -216,7 +223,7 @@ static int tas5713_probe(struct snd_soc_
// Unmute
ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00);
@ -67,6 +65,3 @@ index a24c1da..9b27138 100644
return 0;
}
--
1.8.3.2

View File

@ -25,8 +25,6 @@ Subject: [PATCH 075/114] scripts/dtc: Update to upstream version with overlay
scripts/dtc/version_gen.h | 2 +-
18 files changed, 1697 insertions(+), 1479 deletions(-)
diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c
index ee96a25..27f45f1 100644
--- a/scripts/dtc/checks.c
+++ b/scripts/dtc/checks.c
@@ -53,7 +53,7 @@ struct check {
@ -38,7 +36,7 @@ index ee96a25..27f45f1 100644
int num_prereqs;
struct check **prereq;
};
@@ -113,6 +113,7 @@ static inline void check_msg(struct check *c, const char *fmt, ...)
@@ -113,6 +113,7 @@ static inline void check_msg(struct chec
vfprintf(stderr, fmt, ap);
fprintf(stderr, "\n");
}
@ -46,7 +44,7 @@ index ee96a25..27f45f1 100644
}
#define FAIL(c, ...) \
@@ -141,9 +142,9 @@ static void check_nodes_props(struct check *c, struct node *dt, struct node *nod
@@ -141,9 +142,9 @@ static void check_nodes_props(struct che
check_nodes_props(c, dt, child);
}
@ -58,7 +56,7 @@ index ee96a25..27f45f1 100644
int i;
assert(!c->inprogress);
@@ -151,11 +152,11 @@ static int run_check(struct check *c, struct node *dt)
@@ -151,11 +152,11 @@ static int run_check(struct check *c, st
if (c->status != UNCHECKED)
goto out;
@ -72,7 +70,7 @@ index ee96a25..27f45f1 100644
if (prq->status != PASSED) {
c->status = PREREQ;
check_msg(c, "Failed prerequisite '%s'",
@@ -177,9 +178,9 @@ static int run_check(struct check *c, struct node *dt)
@@ -177,9 +178,9 @@ static int run_check(struct check *c, st
TRACE(c, "\tCompleted, status %d", c->status);
out:
@ -84,7 +82,7 @@ index ee96a25..27f45f1 100644
return error;
}
@@ -457,22 +458,93 @@ static void fixup_phandle_references(struct check *c, struct node *dt,
@@ -457,22 +458,93 @@ static void fixup_phandle_references(str
struct node *node, struct property *prop)
{
struct marker *m = prop->val.markers;
@ -182,7 +180,7 @@ index ee96a25..27f45f1 100644
}
ERROR(phandle_references, NULL, NULL, fixup_phandle_references, NULL,
&duplicate_node_names, &explicit_phandles);
@@ -624,11 +696,11 @@ static void check_avoid_default_addr_size(struct check *c, struct node *dt,
@@ -624,11 +696,11 @@ static void check_avoid_default_addr_siz
if (!reg && !ranges)
return;
@ -196,7 +194,7 @@ index ee96a25..27f45f1 100644
FAIL(c, "Relying on default #size-cells value for %s",
node->fullpath);
}
@@ -651,6 +723,45 @@ static void check_obsolete_chosen_interrupt_controller(struct check *c,
@@ -651,6 +723,45 @@ static void check_obsolete_chosen_interr
}
TREE_WARNING(obsolete_chosen_interrupt_controller, NULL);
@ -251,7 +249,7 @@ index ee96a25..27f45f1 100644
&always_fail,
};
@@ -706,15 +819,15 @@ static void disable_warning_error(struct check *c, bool warn, bool error)
@@ -706,15 +819,15 @@ static void disable_warning_error(struct
c->error = c->error && !error;
}
@ -272,7 +270,7 @@ index ee96a25..27f45f1 100644
enable = false;
}
@@ -733,7 +846,7 @@ void parse_checks_option(bool warn, bool error, const char *optarg)
@@ -733,7 +846,7 @@ void parse_checks_option(bool warn, bool
die("Unrecognized check name \"%s\"\n", name);
}
@ -281,11 +279,9 @@ index ee96a25..27f45f1 100644
{
struct node *dt = bi->dt;
int i;
diff --git a/scripts/dtc/data.c b/scripts/dtc/data.c
index 4a40c5b..8cae237 100644
--- a/scripts/dtc/data.c
+++ b/scripts/dtc/data.c
@@ -74,7 +74,7 @@ struct data data_copy_escape_string(const char *s, int len)
@@ -74,7 +74,7 @@ struct data data_copy_escape_string(cons
struct data d;
char *q;
@ -294,7 +290,7 @@ index 4a40c5b..8cae237 100644
q = d.val;
while (i < len) {
@@ -250,20 +250,20 @@ struct data data_add_marker(struct data d, enum markertype type, char *ref)
@@ -250,20 +250,20 @@ struct data data_add_marker(struct data
return data_append_markers(d, m);
}
@ -320,8 +316,6 @@ index 4a40c5b..8cae237 100644
- return 1;
+ return true;
}
diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l
index 3b41bfc..dd44ba2 100644
--- a/scripts/dtc/dtc-lexer.l
+++ b/scripts/dtc/dtc-lexer.l
@@ -20,7 +20,6 @@
@ -433,7 +427,7 @@ index 3b41bfc..dd44ba2 100644
yytext[yyleng-1] = '\0';
DPRINT("Ref: %s\n", yytext+2);
yylval.labelref = xstrdup(yytext+2);
@@ -238,13 +271,24 @@ static void push_input_file(const char *filename)
@@ -238,13 +271,24 @@ static void push_input_file(const char *
}
@ -461,11 +455,9 @@ index 3b41bfc..dd44ba2 100644
+
+ treesource_error = true;
}
diff --git a/scripts/dtc/dtc-lexer.lex.c_shipped b/scripts/dtc/dtc-lexer.lex.c_shipped
index 2d30f41..1518525 100644
--- a/scripts/dtc/dtc-lexer.lex.c_shipped
+++ b/scripts/dtc/dtc-lexer.lex.c_shipped
@@ -372,8 +372,8 @@ static void yy_fatal_error (yyconst char msg[] );
@@ -372,8 +372,8 @@ static void yy_fatal_error (yyconst char
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
@ -900,7 +892,7 @@ index 2d30f41..1518525 100644
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -937,7 +940,7 @@ do_action: /* This label is used only to access EOF actions. */
@@ -937,7 +940,7 @@ do_action: /* This label is used only to
case 1:
/* rule 1 can match eol */
YY_RULE_SETUP
@ -1290,7 +1282,7 @@ index 2d30f41..1518525 100644
@@ -2182,14 +2219,25 @@ static void push_input_file(const char *filename)
@@ -2182,14 +2219,25 @@ static void push_input_file(const char *
}
@ -1319,8 +1311,6 @@ index 2d30f41..1518525 100644
+ treesource_error = true;
}
diff --git a/scripts/dtc/dtc-parser.tab.c_shipped b/scripts/dtc/dtc-parser.tab.c_shipped
index c8769d5..1938d20 100644
--- a/scripts/dtc/dtc-parser.tab.c_shipped
+++ b/scripts/dtc/dtc-parser.tab.c_shipped
@@ -1,19 +1,19 @@
@ -1414,7 +1404,7 @@ index c8769d5..1938d20 100644
# endif
# endif
@@ -105,7 +103,7 @@ static unsigned char eval_char_literal(const char *s);
@@ -105,7 +103,7 @@ static unsigned char eval_char_literal(c
by #include "dtc-parser.tab.h". */
#ifndef YY_YY_DTC_PARSER_TAB_H_INCLUDED
# define YY_YY_DTC_PARSER_TAB_H_INCLUDED
@ -1423,7 +1413,7 @@ index c8769d5..1938d20 100644
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
@@ -113,48 +111,45 @@ static unsigned char eval_char_literal(const char *s);
@@ -113,48 +111,45 @@ static unsigned char eval_char_literal(c
extern int yydebug;
#endif
@ -1620,7 +1610,7 @@ index c8769d5..1938d20 100644
# endif
#endif
@@ -276,25 +286,26 @@ typedef short int yytype_int16;
@@ -276,24 +286,25 @@ typedef short int yytype_int16;
# define YYUSE(E) /* empty */
#endif
@ -1653,15 +1643,14 @@ index c8769d5..1938d20 100644
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
+#endif
+
#if ! defined yyoverflow || YYERROR_VERBOSE
/* The parser invokes alloca or malloc; define the necessary symbols. */
@@ -312,8 +323,7 @@ YYID (yyi)
# define alloca _alloca
# else
@ -1710,7 +1699,7 @@ index c8769d5..1938d20 100644
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
@@ -368,13 +376,15 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
@@ -368,13 +376,15 @@ void free (void *); /* INFRINGES ON USER
#if (! defined yyoverflow \
&& (! defined __cplusplus \
@ -1810,7 +1799,7 @@ index c8769d5..1938d20 100644
static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -481,63 +493,18 @@ static const yytype_uint8 yytranslate[] =
@@ -481,63 +493,18 @@ static const yytype_uint8 yytranslate[]
};
#if YYDEBUG
@ -2245,7 +2234,7 @@ index c8769d5..1938d20 100644
#define YYRECOVERING() (!!yyerrstatus)
@@ -768,27 +725,41 @@ do \
@@ -768,27 +725,41 @@ do
else \
{ \
yyerror (YY_("syntax error: cannot back up")); \
@ -2259,15 +2248,13 @@ index c8769d5..1938d20 100644
/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
-
-
+#define YYTERROR 1
+#define YYERRCODE 256
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
@ -2312,12 +2299,7 @@ index c8769d5..1938d20 100644
- if (yydebug) \
- YYFPRINTF Args; \
-} while (YYID (0))
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
@ -2328,16 +2310,19 @@ index c8769d5..1938d20 100644
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (YYID (0))
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
+#ifndef YY_LOCATION_PRINT
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
@ -2350,6 +2335,9 @@ index c8769d5..1938d20 100644
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
+#ifndef YY_LOCATION_PRINT
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+
+/* Print *YYLOCP on YYO. Private, do not rely on its existence. */
+
+YY_ATTRIBUTE_UNUSED
@ -2419,7 +2407,7 @@ index c8769d5..1938d20 100644
# endif
YYUSE (yytype);
}
@@ -851,24 +856,15 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
@@ -851,24 +856,15 @@ yy_symbol_value_print (yyoutput, yytype,
| Print this symbol on YYOUTPUT. |
`--------------------------------*/
@ -2450,7 +2438,7 @@ index c8769d5..1938d20 100644
YYFPRINTF (yyoutput, ")");
}
@@ -877,16 +873,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
@@ -877,16 +873,8 @@ yy_symbol_print (yyoutput, yytype, yyval
| TOP (included). |
`------------------------------------------------------------------*/
@ -2489,10 +2477,10 @@ index c8769d5..1938d20 100644
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
-static void
static void
-yy_reduce_print (yyvsp, yyrule)
- YYSTYPE *yyvsp;
- int yyrule;
@ -2576,7 +2564,7 @@ index c8769d5..1938d20 100644
{
char *yyd = yydest;
const char *yys = yysrc;
@@ -1039,27 +1005,27 @@ yytnamerr (char *yyres, const char *yystr)
@@ -1039,27 +1005,27 @@ yytnamerr (char *yyres, const char *yyst
char const *yyp = yystr;
for (;;)
@ -2639,7 +2627,7 @@ index c8769d5..1938d20 100644
/* Arguments of yyformat. */
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
/* Number of reported tokens (one for the "unexpected", one per
@@ -1094,10 +1060,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
@@ -1094,10 +1060,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c
int yycount = 0;
/* There are many possibilities here to consider:
@ -2650,7 +2638,7 @@ index c8769d5..1938d20 100644
- If this state is a consistent state with a default action, then
the only way this function was invoked is if the default action
is an error action. In that case, don't check for expected
@@ -1147,7 +1109,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
@@ -1147,7 +1109,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c
}
yyarg[yycount++] = yytname[yyx];
{
@ -2659,17 +2647,17 @@ index c8769d5..1938d20 100644
if (! (yysize <= yysize1
&& yysize1 <= YYSTACK_ALLOC_MAXIMUM))
return 2;
@@ -1214,26 +1176,18 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
@@ -1214,26 +1176,18 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, c
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static void
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
static void
-yydestruct (yymsg, yytype, yyvaluep)
- const char *yymsg;
- int yytype;
@ -3310,7 +3298,8 @@ index c8769d5..1938d20 100644
{
- (yyval.array).data = empty_data;
- (yyval.array).bits = eval_literal((yyvsp[(2) - (3)].literal), 0, 7);
-
+ unsigned long long bits;
- if (((yyval.array).bits != 8) &&
- ((yyval.array).bits != 16) &&
- ((yyval.array).bits != 32) &&
@ -3319,8 +3308,6 @@ index c8769d5..1938d20 100644
- print_error("Only 8, 16, 32 and 64-bit elements"
- " are currently supported");
- (yyval.array).bits = 32;
+ unsigned long long bits;
+
+ bits = (yyvsp[-1].integer);
+
+ if ((bits != 8) && (bits != 16) &&
@ -3754,9 +3741,7 @@ index c8769d5..1938d20 100644
+ }
+#line 2010 "dtc-parser.tab.c" /* yacc.c:1646 */
+ break;
-/* Line 1787 of yacc.c */
-#line 2073 "dtc-parser.tab.c"
+
+ case 81:
+#line 471 "dtc-parser.y" /* yacc.c:1646 */
+ {
@ -3765,7 +3750,9 @@ index c8769d5..1938d20 100644
+ }
+#line 2019 "dtc-parser.tab.c" /* yacc.c:1646 */
+ break;
+
-/* Line 1787 of yacc.c */
-#line 2073 "dtc-parser.tab.c"
+
+#line 2023 "dtc-parser.tab.c" /* yacc.c:1646 */
default: break;
@ -3934,7 +3921,8 @@ index c8769d5..1938d20 100644
-
-
-void print_error(char const *fmt, ...)
-{
+void yyerror(char const *s)
{
- va_list va;
-
- va_start(va, fmt);
@ -3969,8 +3957,7 @@ index c8769d5..1938d20 100644
-}
-
-static unsigned char eval_char_literal(const char *s)
+void yyerror(char const *s)
{
-{
- int i = 1;
- char c = s[0];
-
@ -3995,8 +3982,6 @@ index c8769d5..1938d20 100644
- return c;
+ ERROR(&yylloc, "%s", s);
}
diff --git a/scripts/dtc/dtc-parser.tab.h_shipped b/scripts/dtc/dtc-parser.tab.h_shipped
index b2e7a86..b497956 100644
--- a/scripts/dtc/dtc-parser.tab.h_shipped
+++ b/scripts/dtc/dtc-parser.tab.h_shipped
@@ -1,19 +1,19 @@
@ -4170,8 +4155,6 @@ index b2e7a86..b497956 100644
-#endif /* ! YYPARSE_PARAM */
#endif /* !YY_YY_DTC_PARSER_TAB_H_INCLUDED */
diff --git a/scripts/dtc/dtc-parser.y b/scripts/dtc/dtc-parser.y
index f412460..687ccad 100644
--- a/scripts/dtc/dtc-parser.y
+++ b/scripts/dtc/dtc-parser.y
@@ -17,31 +17,28 @@
@ -4213,7 +4196,7 @@ index f412460..687ccad 100644
uint8_t byte;
struct data data;
@@ -56,18 +53,19 @@ static unsigned char eval_char_literal(const char *s);
@@ -56,18 +53,19 @@ static unsigned char eval_char_literal(c
struct node *nodelist;
struct reserve_info *re;
uint64_t integer;
@ -4236,7 +4219,7 @@ index f412460..687ccad 100644
%token <byte> DT_BYTE
%token <data> DT_STRING
%token <labelref> DT_LABEL
@@ -76,6 +74,7 @@ static unsigned char eval_char_literal(const char *s);
@@ -76,6 +74,7 @@ static unsigned char eval_char_literal(c
%type <data> propdata
%type <data> propdataprefix
@ -4244,7 +4227,7 @@ index f412460..687ccad 100644
%type <re> memreserve
%type <re> memreserves
%type <array> arrayprefix
@@ -106,10 +105,23 @@ static unsigned char eval_char_literal(const char *s);
@@ -106,10 +105,23 @@ static unsigned char eval_char_literal(c
%%
sourcefile:
@ -4314,7 +4297,8 @@ index f412460..687ccad 100644
{
- $$.data = empty_data;
- $$.bits = eval_literal($2, 0, 7);
-
+ unsigned long long bits;
- if (($$.bits != 8) &&
- ($$.bits != 16) &&
- ($$.bits != 32) &&
@ -4323,8 +4307,6 @@ index f412460..687ccad 100644
- print_error("Only 8, 16, 32 and 64-bit elements"
- " are currently supported");
- $$.bits = 32;
+ unsigned long long bits;
+
+ bits = $2;
+
+ if ((bits != 8) && (bits != 16) &&
@ -4388,7 +4370,8 @@ index f412460..687ccad 100644
%%
-void print_error(char const *fmt, ...)
-{
+void yyerror(char const *s)
{
- va_list va;
-
- va_start(va, fmt);
@ -4423,8 +4406,7 @@ index f412460..687ccad 100644
-}
-
-static unsigned char eval_char_literal(const char *s)
+void yyerror(char const *s)
{
-{
- int i = 1;
- char c = s[0];
-
@ -4449,11 +4431,9 @@ index f412460..687ccad 100644
- return c;
+ ERROR(&yylloc, "%s", s);
}
diff --git a/scripts/dtc/dtc.c b/scripts/dtc/dtc.c
index e3c9653..0cbb14c 100644
--- a/scripts/dtc/dtc.c
+++ b/scripts/dtc/dtc.c
@@ -29,6 +29,7 @@ int reservenum; /* Number of memory reservation slots */
@@ -29,6 +29,7 @@ int reservenum; /* Number of memory res
int minsize; /* Minimum blob size */
int padsize; /* Additional padding to blob */
int phandle_format = PHANDLE_BOTH; /* Use linux,phandle or phandle properties */
@ -4461,7 +4441,7 @@ index e3c9653..0cbb14c 100644
static void fill_fullpaths(struct node *tree, const char *prefix)
{
@@ -48,8 +49,10 @@ static void fill_fullpaths(struct node *tree, const char *prefix)
@@ -48,8 +49,10 @@ static void fill_fullpaths(struct node *
}
/* Usage related data. */
@ -4473,7 +4453,7 @@ index e3c9653..0cbb14c 100644
static struct option const usage_long_opts[] = {
{"quiet", no_argument, NULL, 'q'},
{"in-format", a_argument, NULL, 'I'},
@@ -67,6 +70,7 @@ static struct option const usage_long_opts[] = {
@@ -67,6 +70,7 @@ static struct option const usage_long_op
{"phandle", a_argument, NULL, 'H'},
{"warning", a_argument, NULL, 'W'},
{"error", a_argument, NULL, 'E'},
@ -4481,7 +4461,7 @@ index e3c9653..0cbb14c 100644
{"help", no_argument, NULL, 'h'},
{"version", no_argument, NULL, 'v'},
{NULL, no_argument, NULL, 0x0},
@@ -82,9 +86,9 @@ static const char * const usage_opts_help[] = {
@@ -82,9 +86,9 @@ static const char * const usage_opts_hel
"\t\tdts - device tree source text\n"
"\t\tdtb - device tree blob\n"
"\t\tasm - assembler source",
@ -4493,7 +4473,7 @@ index e3c9653..0cbb14c 100644
"\n\tMake the blob at least <bytes> long (extra space)",
"\n\tAdd padding to the blob of <bytes> long (extra space)",
"\n\tSet the physical boot cpu",
@@ -97,6 +101,7 @@ static const char * const usage_opts_help[] = {
@@ -97,6 +101,7 @@ static const char * const usage_opts_hel
"\t\tboth - Both \"linux,phandle\" and \"phandle\" properties",
"\n\tEnable/disable warnings (prefix with \"no-\")",
"\n\tEnable/disable errors (prefix with \"no-\")",
@ -4548,8 +4528,6 @@ index e3c9653..0cbb14c 100644
if (! outf)
die("Couldn't open output file %s: %s\n",
outname, strerror(errno));
diff --git a/scripts/dtc/dtc.h b/scripts/dtc/dtc.h
index 264a20c..fe45748 100644
--- a/scripts/dtc/dtc.h
+++ b/scripts/dtc/dtc.h
@@ -38,9 +38,9 @@
@ -4564,7 +4542,7 @@ index 264a20c..fe45748 100644
#endif
@@ -54,6 +54,7 @@ extern int reservenum; /* Number of memory reservation slots */
@@ -54,6 +54,7 @@ extern int reservenum; /* Number of mem
extern int minsize; /* Minimum blob size */
extern int padsize; /* Additional padding to blob */
extern int phandle_format; /* Use linux,phandle or phandle properties */
@ -4581,7 +4559,7 @@ index 264a20c..fe45748 100644
#define for_each_marker(m) \
for (; (m); (m) = (m)->next)
@@ -118,7 +119,7 @@ struct data data_append_align(struct data d, int align);
@@ -118,7 +119,7 @@ struct data data_append_align(struct dat
struct data data_add_marker(struct data d, enum markertype type, char *ref);
@ -4677,11 +4655,9 @@ index 264a20c..fe45748 100644
/* Flattened trees */
diff --git a/scripts/dtc/flattree.c b/scripts/dtc/flattree.c
index 665dad7..f439b40 100644
--- a/scripts/dtc/flattree.c
+++ b/scripts/dtc/flattree.c
@@ -261,7 +261,13 @@ static void flatten_tree(struct node *tree, struct emitter *emit,
@@ -261,7 +261,13 @@ static void flatten_tree(struct node *tr
{
struct property *prop;
struct node *child;
@ -4696,7 +4672,7 @@ index 665dad7..f439b40 100644
if (tree->deleted)
return;
@@ -276,10 +282,8 @@ static void flatten_tree(struct node *tree, struct emitter *emit,
@@ -276,10 +282,8 @@ static void flatten_tree(struct node *tr
emit->align(etarget, sizeof(cell_t));
for_each_property(tree, prop) {
@ -4708,7 +4684,7 @@ index 665dad7..f439b40 100644
nameoff = stringtable_insert(strbuf, prop->name);
@@ -310,6 +314,139 @@ static void flatten_tree(struct node *tree, struct emitter *emit,
@@ -310,6 +314,139 @@ static void flatten_tree(struct node *tr
flatten_tree(child, emit, etarget, strbuf, vi);
}
@ -4848,11 +4824,9 @@ index 665dad7..f439b40 100644
emit->endnode(etarget, tree->labels);
}
diff --git a/scripts/dtc/fstree.c b/scripts/dtc/fstree.c
index e464727..6e5878a 100644
--- a/scripts/dtc/fstree.c
+++ b/scripts/dtc/fstree.c
@@ -37,26 +37,26 @@ static struct node *read_fstree(const char *dirname)
@@ -37,26 +37,26 @@ static struct node *read_fstree(const ch
tree = build_node(NULL, NULL);
while ((de = readdir(d)) != NULL) {
@ -4885,7 +4859,7 @@ index e464727..6e5878a 100644
} else {
prop = build_property(xstrdup(de->d_name),
data_copy_file(pfile,
@@ -67,12 +67,12 @@ static struct node *read_fstree(const char *dirname)
@@ -67,12 +67,12 @@ static struct node *read_fstree(const ch
} else if (S_ISDIR(st.st_mode)) {
struct node *newchild;
@ -4900,11 +4874,9 @@ index e464727..6e5878a 100644
}
closedir(d);
diff --git a/scripts/dtc/livetree.c b/scripts/dtc/livetree.c
index b61465f..e229b84 100644
--- a/scripts/dtc/livetree.c
+++ b/scripts/dtc/livetree.c
@@ -511,7 +511,9 @@ struct node *get_node_by_phandle(struct node *tree, cell_t phandle)
@@ -511,7 +511,9 @@ struct node *get_node_by_phandle(struct
struct node *get_node_by_ref(struct node *tree, const char *ref)
{
@ -4915,8 +4887,6 @@ index b61465f..e229b84 100644
return get_node_by_path(tree, ref);
else
return get_node_by_label(tree, ref);
diff --git a/scripts/dtc/srcpos.c b/scripts/dtc/srcpos.c
index c20bc53..f534c22 100644
--- a/scripts/dtc/srcpos.c
+++ b/scripts/dtc/srcpos.c
@@ -34,7 +34,7 @@ struct search_path {
@ -4928,7 +4898,7 @@ index c20bc53..f534c22 100644
{
const char *slash = strrchr(path, '/');
@@ -77,7 +77,7 @@ static char *try_open(const char *dirname, const char *fname, FILE **fp)
@@ -77,7 +77,7 @@ static char *try_open(const char *dirnam
else
fullname = join_path(dirname, fname);
@ -5019,8 +4989,6 @@ index c20bc53..f534c22 100644
va_end(va);
}
diff --git a/scripts/dtc/srcpos.h b/scripts/dtc/srcpos.h
index 93a2712..f81827b 100644
--- a/scripts/dtc/srcpos.h
+++ b/scripts/dtc/srcpos.h
@@ -21,6 +21,7 @@
@ -5031,7 +4999,7 @@ index 93a2712..f81827b 100644
struct srcfile_state {
FILE *f;
@@ -55,7 +56,7 @@ extern struct srcfile_state *current_srcfile; /* = NULL */
@@ -55,7 +56,7 @@ extern struct srcfile_state *current_src
FILE *srcfile_relative_open(const char *fname, char **fullnamep);
void srcfile_push(const char *fname);
@ -5040,7 +5008,7 @@ index 93a2712..f81827b 100644
/**
* Add a new directory to the search path for input files
@@ -106,12 +107,12 @@ extern struct srcpos *srcpos_copy(struct srcpos *pos);
@@ -106,12 +107,12 @@ extern struct srcpos *srcpos_copy(struct
extern char *srcpos_string(struct srcpos *pos);
extern void srcpos_dump(struct srcpos *pos);
@ -5059,8 +5027,6 @@ index 93a2712..f81827b 100644
extern void srcpos_set_line(char *f, int l);
diff --git a/scripts/dtc/treesource.c b/scripts/dtc/treesource.c
index 5740e69..a146f2d 100644
--- a/scripts/dtc/treesource.c
+++ b/scripts/dtc/treesource.c
@@ -26,12 +26,12 @@ extern int yyparse(void);
@ -5078,7 +5044,7 @@ index 5740e69..a146f2d 100644
srcfile_push(fname);
yyin = current_srcfile->f;
@@ -54,9 +54,9 @@ static void write_prefix(FILE *f, int level)
@@ -54,9 +54,9 @@ static void write_prefix(FILE *f, int le
fputc('\t', f);
}
@ -5090,7 +5056,7 @@ index 5740e69..a146f2d 100644
|| (c == '\0')
|| strchr("\a\b\t\n\v\f\r", c));
}
@@ -109,7 +109,7 @@ static void write_propval_string(FILE *f, struct data val)
@@ -109,7 +109,7 @@ static void write_propval_string(FILE *f
break;
case '\0':
fprintf(f, "\", ");
@ -5099,7 +5065,7 @@ index 5740e69..a146f2d 100644
if (m->type == LABEL) {
assert(m->offset == (i+1));
fprintf(f, "%s: ", m->ref);
@@ -119,7 +119,7 @@ static void write_propval_string(FILE *f, struct data val)
@@ -119,7 +119,7 @@ static void write_propval_string(FILE *f
fprintf(f, "\"");
break;
default:
@ -5108,7 +5074,7 @@ index 5740e69..a146f2d 100644
fprintf(f, "%c", c);
else
fprintf(f, "\\x%02hhx", c);
@@ -178,7 +178,7 @@ static void write_propval_bytes(FILE *f, struct data val)
@@ -178,7 +178,7 @@ static void write_propval_bytes(FILE *f,
m = m->next;
}
@ -5117,8 +5083,6 @@ index 5740e69..a146f2d 100644
if ((const void *)bp >= propend)
break;
fprintf(f, " ");
diff --git a/scripts/dtc/util.c b/scripts/dtc/util.c
index 3055c16..9d65226 100644
--- a/scripts/dtc/util.c
+++ b/scripts/dtc/util.c
@@ -39,11 +39,11 @@
@ -5136,7 +5100,7 @@ index 3055c16..9d65226 100644
}
char *join_path(const char *path, const char *name)
@@ -70,7 +70,7 @@ char *join_path(const char *path, const char *name)
@@ -70,7 +70,7 @@ char *join_path(const char *path, const
return str;
}
@ -5145,7 +5109,7 @@ index 3055c16..9d65226 100644
{
const char *s = data;
const char *ss, *se;
@@ -87,7 +87,7 @@ int util_is_printable_string(const void *data, int len)
@@ -87,7 +87,7 @@ int util_is_printable_string(const void
while (s < se) {
ss = s;
@ -5154,7 +5118,7 @@ index 3055c16..9d65226 100644
s++;
/* not zero, or not done yet */
@@ -219,10 +219,6 @@ int utilfdt_read_err_len(const char *filename, char **buffp, off_t *len)
@@ -219,10 +219,6 @@ int utilfdt_read_err_len(const char *fil
if (offset == bufsize) {
bufsize *= 2;
buf = xrealloc(buf, bufsize);
@ -5165,7 +5129,7 @@ index 3055c16..9d65226 100644
}
ret = read(fd, &buf[offset], bufsize - offset);
@@ -375,9 +371,9 @@ void utilfdt_print_data(const char *data, int len)
@@ -375,9 +371,9 @@ void utilfdt_print_data(const char *data
const uint32_t *cell = (const uint32_t *)data;
printf(" = <");
@ -5177,8 +5141,6 @@ index 3055c16..9d65226 100644
printf(">");
} else {
printf(" = [");
diff --git a/scripts/dtc/util.h b/scripts/dtc/util.h
index 8f40b44..f800b60 100644
--- a/scripts/dtc/util.h
+++ b/scripts/dtc/util.h
@@ -2,6 +2,7 @@
@ -5189,7 +5151,7 @@ index 8f40b44..f800b60 100644
#include <getopt.h>
/*
@@ -33,6 +34,7 @@ static inline void __attribute__((noreturn)) die(const char *str, ...)
@@ -33,6 +34,7 @@ static inline void __attribute__((noretu
va_start(ap, str);
fprintf(stderr, "FATAL ERROR: ");
vfprintf(stderr, str, ap);
@ -5197,7 +5159,7 @@ index 8f40b44..f800b60 100644
exit(1);
}
@@ -68,7 +70,7 @@ extern char *join_path(const char *path, const char *name);
@@ -68,7 +70,7 @@ extern char *join_path(const char *path,
* @param len The string length including terminator
* @return 1 if a valid printable string, 0 if not
*/
@ -5206,13 +5168,8 @@ index 8f40b44..f800b60 100644
/*
* Parse an escaped character starting at index i in string s. The resulting
diff --git a/scripts/dtc/version_gen.h b/scripts/dtc/version_gen.h
index 54d4e90..d644002 100644
--- a/scripts/dtc/version_gen.h
+++ b/scripts/dtc/version_gen.h
@@ -1 +1 @@
-#define DTC_VERSION "DTC 1.4.0-dirty"
+#define DTC_VERSION "DTC 1.4.1-g36c70742"
--
1.8.3.2

View File

@ -7,11 +7,9 @@ Subject: [PATCH 076/114] BCM2708_DT: Build the overlays as well
arch/arm/boot/dts/Makefile | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index adaebbb..3c7f539 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -55,6 +55,14 @@ dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb
@@ -55,6 +55,14 @@ dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.
dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb
dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb
dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b-plus.dtb
@ -38,6 +36,3 @@ index adaebbb..3c7f539 100644
# *.dtb used to be generated in the directory above. Clean out the
# old build results so people don't accidentally use them.
dtbs: $(addprefix $(obj)/, $(dtb-y))
--
1.8.3.2

View File

@ -10,11 +10,9 @@ This patch add the missing device tree file for the HiFiBerry Amp and Amp+ board
2 files changed, 40 insertions(+)
create mode 100644 arch/arm/boot/dts/hifiberry-amp-overlay.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 3c7f539..4e1ec2d 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -58,6 +58,7 @@ dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b-plus.dtb
@@ -58,6 +58,7 @@ dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-
dtb-$(CONFIG_BCM2708_DT) += hifiberry-dac-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += hifiberry-dacplus-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += hifiberry-digi-overlay.dtb
@ -22,9 +20,6 @@ index 3c7f539..4e1ec2d 100644
dtb-$(CONFIG_BCM2708_DT) += iqaudio-dac-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += iqaudio-dacplus-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += lirc-rpi-overlay.dtb
diff --git a/arch/arm/boot/dts/hifiberry-amp-overlay.dts b/arch/arm/boot/dts/hifiberry-amp-overlay.dts
new file mode 100644
index 0000000..2c81448
--- /dev/null
+++ b/arch/arm/boot/dts/hifiberry-amp-overlay.dts
@@ -0,0 +1,39 @@
@ -67,6 +62,3 @@ index 0000000..2c81448
+ };
+ };
+};
--
1.8.3.2

View File

@ -11,11 +11,9 @@ Parameters:
2 files changed, 35 insertions(+)
create mode 100644 arch/arm/boot/dts/pps-gpio-overlay.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 4e1ec2d..4d1224b 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -62,6 +62,7 @@ dtb-$(CONFIG_BCM2708_DT) += hifiberry-amp-overlay.dtb
@@ -62,6 +62,7 @@ dtb-$(CONFIG_BCM2708_DT) += hifiberry-am
dtb-$(CONFIG_BCM2708_DT) += iqaudio-dac-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += iqaudio-dacplus-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += lirc-rpi-overlay.dtb
@ -23,9 +21,6 @@ index 4e1ec2d..4d1224b 100644
dtb-$(CONFIG_BCM2708_DT) += w1-gpio-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += w1-gpio-pullup-overlay.dtb
dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
diff --git a/arch/arm/boot/dts/pps-gpio-overlay.dts b/arch/arm/boot/dts/pps-gpio-overlay.dts
new file mode 100644
index 0000000..40bf0e1
--- /dev/null
+++ b/arch/arm/boot/dts/pps-gpio-overlay.dts
@@ -0,0 +1,34 @@
@ -63,6 +58,3 @@ index 0000000..40bf0e1
+ <&pps_pins>,"brcm,pins:0";
+ };
+};
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 079/114] config: Remove STRICT_DEVMEM
arch/arm/configs/bcmrpi_defconfig | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 41b90b4..fd7c022 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -1124,7 +1124,6 @@ CONFIG_FUNCTION_PROFILER=y
@ -19,6 +17,3 @@ index 41b90b4..fd7c022 100644
CONFIG_CRYPTO_USER=m
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_CRYPTD=m
--
1.8.3.2

View File

@ -8,8 +8,6 @@ Subject: [PATCH 080/114] I2C: Only register the I2C device for the current
arch/arm/mach-bcm2708/bcm2708.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 2c6a29d..b36037b 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -93,6 +93,7 @@ static unsigned disk_led_active_low = 1;
@ -38,12 +36,9 @@ index 2c6a29d..b36037b 100644
#if defined(CONFIG_SND_BCM2708_SOC_I2S) || defined(CONFIG_SND_BCM2708_SOC_I2S_MODULE)
bcm_register_device_dt(&bcm2708_i2s_device);
@@ -1093,3 +1101,5 @@ module_param(disk_led_active_low, uint, 0644);
@@ -1093,3 +1101,5 @@ module_param(disk_led_active_low, uint,
module_param(reboot_part, uint, 0644);
module_param(w1_gpio_pin, uint, 0644);
module_param(w1_gpio_pullup, uint, 0644);
+module_param(vc_i2c_override, bool, 0644);
+MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral.");
--
1.8.3.2

View File

@ -9,8 +9,6 @@ Subject: [PATCH 081/114] Added support to reserve/enable a GPIO pin to be used
arch/arm/mach-bcm2708/bcm2708.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index b36037b..762e17c 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -37,6 +37,7 @@
@ -29,7 +27,7 @@ index b36037b..762e17c 100644
static bool vc_i2c_override = false;
static unsigned use_dt = 0;
@@ -274,6 +276,19 @@ static struct platform_device w1_device = {
@@ -274,6 +276,19 @@ static struct platform_device w1_device
};
#endif
@ -66,7 +64,7 @@ index b36037b..762e17c 100644
#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
w1_gpio_pdata.pin = w1_gpio_pin;
w1_gpio_pdata.ext_pullup_enable_pin = w1_gpio_pullup;
@@ -1101,5 +1126,7 @@ module_param(disk_led_active_low, uint, 0644);
@@ -1101,5 +1126,7 @@ module_param(disk_led_active_low, uint,
module_param(reboot_part, uint, 0644);
module_param(w1_gpio_pin, uint, 0644);
module_param(w1_gpio_pullup, uint, 0644);
@ -74,6 +72,3 @@ index b36037b..762e17c 100644
+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.");
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 082/114] BCM2708_DT: Correct length of the peripheral space
arch/arm/boot/dts/bcm2708.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi
index 1b56cb5..d879316 100644
--- a/arch/arm/boot/dts/bcm2708.dtsi
+++ b/arch/arm/boot/dts/bcm2708.dtsi
@@ -15,7 +15,7 @@
@ -20,6 +18,3 @@ index 1b56cb5..d879316 100644
intc: interrupt-controller {
compatible = "brcm,bcm2708-armctrl-ic";
--
1.8.3.2

View File

@ -9,11 +9,9 @@ Subject: [PATCH 083/114] BCM2708_DT: Add pcf8523-rtc overlay
2 files changed, 23 insertions(+)
create mode 100644 arch/arm/boot/dts/pcf8523-rtc-overlay.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 4d1224b..86c6190 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -62,6 +62,7 @@ dtb-$(CONFIG_BCM2708_DT) += hifiberry-amp-overlay.dtb
@@ -62,6 +62,7 @@ dtb-$(CONFIG_BCM2708_DT) += hifiberry-am
dtb-$(CONFIG_BCM2708_DT) += iqaudio-dac-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += iqaudio-dacplus-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += lirc-rpi-overlay.dtb
@ -21,9 +19,6 @@ index 4d1224b..86c6190 100644
dtb-$(CONFIG_BCM2708_DT) += pps-gpio-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += w1-gpio-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += w1-gpio-pullup-overlay.dtb
diff --git a/arch/arm/boot/dts/pcf8523-rtc-overlay.dts b/arch/arm/boot/dts/pcf8523-rtc-overlay.dts
new file mode 100644
index 0000000..0071f62
--- /dev/null
+++ b/arch/arm/boot/dts/pcf8523-rtc-overlay.dts
@@ -0,0 +1,22 @@
@ -49,6 +44,3 @@ index 0000000..0071f62
+ };
+ };
+};
--
1.8.3.2

View File

@ -11,8 +11,6 @@ is set to 1, the SPDIF oputput will shutdown if no stream is playing.
sound/soc/bcm/hifiberry_digi.c | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/sound/soc/bcm/hifiberry_digi.c b/sound/soc/bcm/hifiberry_digi.c
index 76af8a6..b0e3d28 100644
--- a/sound/soc/bcm/hifiberry_digi.c
+++ b/sound/soc/bcm/hifiberry_digi.c
@@ -26,6 +26,11 @@
@ -27,7 +25,7 @@ index 76af8a6..b0e3d28 100644
static int samplerate=44100;
static int snd_rpi_hifiberry_digi_init(struct snd_soc_pcm_runtime *rtd)
@@ -38,6 +43,25 @@ static int snd_rpi_hifiberry_digi_init(struct snd_soc_pcm_runtime *rtd)
@@ -38,6 +43,25 @@ static int snd_rpi_hifiberry_digi_init(s
return 0;
}
@ -53,7 +51,7 @@ index 76af8a6..b0e3d28 100644
static int snd_rpi_hifiberry_digi_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
{
@@ -70,7 +94,8 @@ static int snd_rpi_hifiberry_digi_hw_params(struct snd_pcm_substream *substream,
@@ -70,7 +94,8 @@ static int snd_rpi_hifiberry_digi_hw_par
break;
default:
dev_err(substream->pcm->dev,
@ -63,7 +61,7 @@ index 76af8a6..b0e3d28 100644
}
snd_soc_dai_set_clkdiv(codec_dai, WM8804_MCLK_DIV, mclk_div);
@@ -96,6 +121,8 @@ static int snd_rpi_hifiberry_digi_hw_params(struct snd_pcm_substream *substream,
@@ -96,6 +121,8 @@ static int snd_rpi_hifiberry_digi_hw_par
/* machine stream operations */
static struct snd_soc_ops snd_rpi_hifiberry_digi_ops = {
.hw_params = snd_rpi_hifiberry_digi_hw_params,
@ -72,6 +70,3 @@ index 76af8a6..b0e3d28 100644
};
static struct snd_soc_dai_link snd_rpi_hifiberry_digi_dai[] = {
--
1.8.3.2

View File

@ -7,11 +7,9 @@ Subject: [PATCH 085/114] bugfix for 32kHz sample rate, was missing
sound/soc/bcm/hifiberry_digi.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/sound/soc/bcm/hifiberry_digi.c b/sound/soc/bcm/hifiberry_digi.c
index b0e3d28..133d51b 100644
--- a/sound/soc/bcm/hifiberry_digi.c
+++ b/sound/soc/bcm/hifiberry_digi.c
@@ -80,6 +80,7 @@ static int snd_rpi_hifiberry_digi_hw_params(struct snd_pcm_substream *substream,
@@ -80,6 +80,7 @@ static int snd_rpi_hifiberry_digi_hw_par
samplerate = params_rate(params);
switch (samplerate) {
@ -19,6 +17,3 @@ index b0e3d28..133d51b 100644
case 44100:
case 48000:
case 88200:
--
1.8.3.2

View File

@ -8,11 +8,9 @@ Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
drivers/rtc/rtc-ds1307.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
index bb43cf7..dadd4fb 100644
--- a/drivers/rtc/rtc-ds1307.c
+++ b/drivers/rtc/rtc-ds1307.c
@@ -1241,6 +1241,14 @@ static int ds1307_remove(struct i2c_client *client)
@@ -1241,6 +1241,14 @@ static int ds1307_remove(struct i2c_clie
return 0;
}
@ -27,6 +25,3 @@ index bb43cf7..dadd4fb 100644
static struct i2c_driver ds1307_driver = {
.driver = {
.name = "rtc-ds1307",
--
1.8.3.2

View File

@ -10,11 +10,9 @@ Signed-off-by: Ryan Coe <bluemrp9@gmail.com>
2 files changed, 23 insertions(+)
create mode 100644 arch/arm/boot/dts/ds1307-rtc-overlay.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 86c6190..1b66478 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -64,6 +64,7 @@ dtb-$(CONFIG_BCM2708_DT) += iqaudio-dacplus-overlay.dtb
@@ -64,6 +64,7 @@ dtb-$(CONFIG_BCM2708_DT) += iqaudio-dacp
dtb-$(CONFIG_BCM2708_DT) += lirc-rpi-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += pcf8523-rtc-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += pps-gpio-overlay.dtb
@ -22,9 +20,6 @@ index 86c6190..1b66478 100644
dtb-$(CONFIG_BCM2708_DT) += w1-gpio-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += w1-gpio-pullup-overlay.dtb
dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
diff --git a/arch/arm/boot/dts/ds1307-rtc-overlay.dts b/arch/arm/boot/dts/ds1307-rtc-overlay.dts
new file mode 100644
index 0000000..7d27044
--- /dev/null
+++ b/arch/arm/boot/dts/ds1307-rtc-overlay.dts
@@ -0,0 +1,22 @@
@ -50,6 +45,3 @@ index 0000000..7d27044
+ };
+ };
+};
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 088/114] config: Add DVB_USB_DVBSKY
arch/arm/configs/bcmrpi_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index fd7c022..0453a38 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -715,6 +715,7 @@ CONFIG_DVB_USB_GL861=m
@ -19,6 +17,3 @@ index fd7c022..0453a38 100644
CONFIG_SMS_USB_DRV=m
CONFIG_DVB_B2C2_FLEXCOP_USB=m
CONFIG_DVB_AS102=m
--
1.8.3.2

View File

@ -118,8 +118,6 @@ Subject: [PATCH 089/114] Add 2709 platform for Raspberry Pi 2
create mode 100755 arch/arm/mach-bcm2709/vc_support.c
create mode 100644 arch/arm/mach-bcm2709/vcio.c
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 0f2287f..1faad0d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -803,6 +803,26 @@ config ARCH_OMAP1
@ -157,11 +155,9 @@ index 0f2287f..1faad0d 100644
source "arch/arm/mach-zynq/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index fea9213..2f1376e 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -147,6 +147,7 @@ machine-$(CONFIG_ARCH_AT91) += at91
@@ -152,6 +152,7 @@ machine-$(CONFIG_ARCH_AT91) += at91
machine-$(CONFIG_ARCH_AXXIA) += axxia
machine-$(CONFIG_ARCH_BCM) += bcm
machine-$(CONFIG_ARCH_BCM2708) += bcm2708
@ -169,11 +165,9 @@ index fea9213..2f1376e 100644
machine-$(CONFIG_ARCH_BERLIN) += berlin
machine-$(CONFIG_ARCH_CLPS711X) += clps711x
machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 1b66478..605ed38 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -53,6 +53,14 @@ dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4ek.dtb
@@ -53,6 +53,14 @@ dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4e
dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb
dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb
@ -188,7 +182,7 @@ index 1b66478..605ed38 100644
dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb
dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b-plus.dtb
dtb-$(CONFIG_BCM2708_DT) += hifiberry-dac-overlay.dtb
@@ -68,6 +76,7 @@ dtb-$(CONFIG_BCM2708_DT) += ds1307-rtc-overlay.dtb
@@ -68,6 +76,7 @@ dtb-$(CONFIG_BCM2708_DT) += ds1307-rtc-o
dtb-$(CONFIG_BCM2708_DT) += w1-gpio-overlay.dtb
dtb-$(CONFIG_BCM2708_DT) += w1-gpio-pullup-overlay.dtb
dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
@ -205,9 +199,6 @@ index 1b66478..605ed38 100644
DTC_FLAGS ?= -@
endif
diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
new file mode 100644
index 0000000..0cdff31
--- /dev/null
+++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
@@ -0,0 +1,101 @@
@ -312,9 +303,6 @@ index 0000000..0cdff31
+ act_led_trigger = <&act_led>,"linux,default-trigger";
+ };
+};
diff --git a/arch/arm/boot/dts/bcm2709.dtsi b/arch/arm/boot/dts/bcm2709.dtsi
new file mode 100644
index 0000000..c7e975c
--- /dev/null
+++ b/arch/arm/boot/dts/bcm2709.dtsi
@@ -0,0 +1,159 @@
@ -477,9 +465,6 @@ index 0000000..c7e975c
+ <&v7_cpu3>, "clock-frequency:0";
+ };
+};
diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig
new file mode 100644
index 0000000..70b175c
--- /dev/null
+++ b/arch/arm/configs/bcm2709_defconfig
@@ -0,0 +1,1149 @@
@ -1632,9 +1617,6 @@ index 0000000..70b175c
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
diff --git a/arch/arm/configs/bcm2709_sdcard_defconfig b/arch/arm/configs/bcm2709_sdcard_defconfig
new file mode 100644
index 0000000..287b15d
--- /dev/null
+++ b/arch/arm/configs/bcm2709_sdcard_defconfig
@@ -0,0 +1,129 @@
@ -1767,9 +1749,6 @@ index 0000000..287b15d
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
+CONFIG_AVERAGE=y
diff --git a/arch/arm/configs/bcm2709_small_defconfig b/arch/arm/configs/bcm2709_small_defconfig
new file mode 100644
index 0000000..9974a9d
--- /dev/null
+++ b/arch/arm/configs/bcm2709_small_defconfig
@@ -0,0 +1,61 @@
@ -1834,9 +1813,6 @@ index 0000000..9974a9d
+CONFIG_EARLY_PRINTK=y
+CONFIG_CRC16=y
+CONFIG_CRC_ITU_T=y
diff --git a/arch/arm/configs/bcm2835_sdcard_defconfig b/arch/arm/configs/bcm2835_sdcard_defconfig
new file mode 100644
index 0000000..987471b
--- /dev/null
+++ b/arch/arm/configs/bcm2835_sdcard_defconfig
@@ -0,0 +1,176 @@
@ -2016,9 +1992,6 @@ index 0000000..987471b
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
diff --git a/arch/arm/configs/bcmrpi_sdcard_defconfig b/arch/arm/configs/bcmrpi_sdcard_defconfig
new file mode 100644
index 0000000..fef887a
--- /dev/null
+++ b/arch/arm/configs/bcmrpi_sdcard_defconfig
@@ -0,0 +1,176 @@
@ -2198,9 +2171,6 @@ index 0000000..fef887a
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
diff --git a/arch/arm/configs/bcmrpi_small_defconfig b/arch/arm/configs/bcmrpi_small_defconfig
new file mode 100644
index 0000000..3f6e378
--- /dev/null
+++ b/arch/arm/configs/bcmrpi_small_defconfig
@@ -0,0 +1,103 @@
@ -2307,8 +2277,6 @@ index 0000000..3f6e378
+CONFIG_CRC16=y
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index 664eee8..e1885fa 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -673,6 +673,14 @@ ARM_BE8(rev16 ip, ip)
@ -2326,9 +2294,6 @@ index 664eee8..e1885fa 100644
#endif
ENDPROC(__fixup_a_pv_table)
diff --git a/arch/arm/mach-bcm2709/Kconfig b/arch/arm/mach-bcm2709/Kconfig
new file mode 100644
index 0000000..4fb6e1b
--- /dev/null
+++ b/arch/arm/mach-bcm2709/Kconfig
@@ -0,0 +1,49 @@
@ -2381,9 +2346,6 @@ index 0000000..4fb6e1b
+ help
+ Binds spidev driver to the SPI0 master
+endmenu
diff --git a/arch/arm/mach-bcm2709/Makefile b/arch/arm/mach-bcm2709/Makefile
new file mode 100644
index 0000000..2a803bb
--- /dev/null
+++ b/arch/arm/mach-bcm2709/Makefile
@@ -0,0 +1,7 @@
@ -2394,18 +2356,12 @@ index 0000000..2a803bb
+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 --git a/arch/arm/mach-bcm2709/Makefile.boot b/arch/arm/mach-bcm2709/Makefile.boot
new file mode 100644
index 0000000..67039c3
--- /dev/null
+++ b/arch/arm/mach-bcm2709/Makefile.boot
@@ -0,0 +1,3 @@
+ zreladdr-y := 0x00008000
+params_phys-y := 0x00000100
+initrd_phys-y := 0x00800000
diff --git a/arch/arm/mach-bcm2709/armctrl.c b/arch/arm/mach-bcm2709/armctrl.c
new file mode 100644
index 0000000..8e69a813
--- /dev/null
+++ b/arch/arm/mach-bcm2709/armctrl.c
@@ -0,0 +1,357 @@
@ -2766,9 +2722,6 @@ index 0000000..8e69a813
+ armctrl_dt_init();
+ return 0;
+}
diff --git a/arch/arm/mach-bcm2709/armctrl.h b/arch/arm/mach-bcm2709/armctrl.h
new file mode 100644
index 0000000..0aa916e
--- /dev/null
+++ b/arch/arm/mach-bcm2709/armctrl.h
@@ -0,0 +1,27 @@
@ -2799,9 +2752,6 @@ index 0000000..0aa916e
+ u32 armctrl_sources, u32 resume_sources);
+
+#endif
diff --git a/arch/arm/mach-bcm2709/bcm2708_gpio.c b/arch/arm/mach-bcm2709/bcm2708_gpio.c
new file mode 100644
index 0000000..c1e9254
--- /dev/null
+++ b/arch/arm/mach-bcm2709/bcm2708_gpio.c
@@ -0,0 +1,426 @@
@ -3231,9 +3181,6 @@ index 0000000..c1e9254
+
+MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c
new file mode 100644
index 0000000..a1058ad
--- /dev/null
+++ b/arch/arm/mach-bcm2709/bcm2709.c
@@ -0,0 +1,1237 @@
@ -4474,9 +4421,6 @@ index 0000000..a1058ad
+module_param(reboot_part, uint, 0644);
+module_param(w1_gpio_pin, uint, 0644);
+module_param(w1_gpio_pullup, uint, 0644);
diff --git a/arch/arm/mach-bcm2709/bcm2709.h b/arch/arm/mach-bcm2709/bcm2709.h
new file mode 100644
index 0000000..e339a93
--- /dev/null
+++ b/arch/arm/mach-bcm2709/bcm2709.h
@@ -0,0 +1,49 @@
@ -4529,9 +4473,6 @@ index 0000000..e339a93
+}
+
+#endif
diff --git a/arch/arm/mach-bcm2709/clock.c b/arch/arm/mach-bcm2709/clock.c
new file mode 100644
index 0000000..4fc556e
--- /dev/null
+++ b/arch/arm/mach-bcm2709/clock.c
@@ -0,0 +1,61 @@
@ -4596,9 +4537,6 @@ index 0000000..4fc556e
+ return -EIO;
+}
+EXPORT_SYMBOL(clk_set_rate);
diff --git a/arch/arm/mach-bcm2709/clock.h b/arch/arm/mach-bcm2709/clock.h
new file mode 100644
index 0000000..5f9d725
--- /dev/null
+++ b/arch/arm/mach-bcm2709/clock.h
@@ -0,0 +1,24 @@
@ -4626,9 +4564,6 @@ index 0000000..5f9d725
+struct clk {
+ unsigned long rate;
+};
diff --git a/arch/arm/mach-bcm2709/delay.S b/arch/arm/mach-bcm2709/delay.S
new file mode 100644
index 0000000..06f4780
--- /dev/null
+++ b/arch/arm/mach-bcm2709/delay.S
@@ -0,0 +1,21 @@
@ -4653,9 +4588,6 @@ index 0000000..06f4780
+ bhi bcm2708_delay
+ mov pc, lr
+ENDPROC(bcm2708_delay)
diff --git a/arch/arm/mach-bcm2709/dma.c b/arch/arm/mach-bcm2709/dma.c
new file mode 100644
index 0000000..a5e58d1
--- /dev/null
+++ b/arch/arm/mach-bcm2709/dma.c
@@ -0,0 +1,409 @@
@ -5068,9 +5000,6 @@ index 0000000..a5e58d1
+MODULE_LICENSE("GPL");
+
+MODULE_PARM_DESC(dmachans, "Bitmap of DMA channels available to the ARM");
diff --git a/arch/arm/mach-bcm2709/dmaer.c b/arch/arm/mach-bcm2709/dmaer.c
new file mode 100755
index 0000000..5b0f0ff
--- /dev/null
+++ b/arch/arm/mach-bcm2709/dmaer.c
@@ -0,0 +1,886 @@
@ -5960,9 +5889,6 @@ index 0000000..5b0f0ff
+MODULE_AUTHOR("Simon Hall");
+module_init(dmaer_init);
+module_exit(dmaer_exit);
diff --git a/arch/arm/mach-bcm2709/include/mach/arm_control.h b/arch/arm/mach-bcm2709/include/mach/arm_control.h
new file mode 100644
index 0000000..e346caf
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/arm_control.h
@@ -0,0 +1,493 @@
@ -6459,9 +6385,6 @@ index 0000000..e346caf
+#define ARM_LOCAL_MAILBOX3_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0FC)
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/arm_power.h b/arch/arm/mach-bcm2709/include/mach/arm_power.h
new file mode 100644
index 0000000..d3bf245
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/arm_power.h
@@ -0,0 +1,62 @@
@ -6527,18 +6450,12 @@ index 0000000..d3bf245
+};
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/barriers.h b/arch/arm/mach-bcm2709/include/mach/barriers.h
new file mode 100644
index 0000000..723cdad
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/barriers.h
@@ -0,0 +1,3 @@
+#define mb() dsb()
+#define rmb() dsb()
+#define wmb() mb()
diff --git a/arch/arm/mach-bcm2709/include/mach/clkdev.h b/arch/arm/mach-bcm2709/include/mach/clkdev.h
new file mode 100644
index 0000000..04b37a8
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/clkdev.h
@@ -0,0 +1,7 @@
@ -6549,9 +6466,6 @@ index 0000000..04b37a8
+#define __clk_put(clk) do { } while (0)
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/debug-macro.S b/arch/arm/mach-bcm2709/include/mach/debug-macro.S
new file mode 100644
index 0000000..b24304a
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/debug-macro.S
@@ -0,0 +1,22 @@
@ -6577,9 +6491,6 @@ index 0000000..b24304a
+ .endm
+
+#include <debug/pl01x.S>
diff --git a/arch/arm/mach-bcm2709/include/mach/dma.h b/arch/arm/mach-bcm2709/include/mach/dma.h
new file mode 100644
index 0000000..d03e7b5
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/dma.h
@@ -0,0 +1,94 @@
@ -6677,9 +6588,6 @@ index 0000000..d03e7b5
+
+
+#endif /* _MACH_BCM2708_DMA_H */
diff --git a/arch/arm/mach-bcm2709/include/mach/entry-macro.S b/arch/arm/mach-bcm2709/include/mach/entry-macro.S
new file mode 100644
index 0000000..d08591b
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/entry-macro.S
@@ -0,0 +1,123 @@
@ -6806,9 +6714,6 @@ index 0000000..d08591b
+ dsb
+1030: @ EQ will be set if no irqs pending
+ .endm
diff --git a/arch/arm/mach-bcm2709/include/mach/frc.h b/arch/arm/mach-bcm2709/include/mach/frc.h
new file mode 100644
index 0000000..dd51e07
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/frc.h
@@ -0,0 +1,38 @@
@ -6850,9 +6755,6 @@ index 0000000..dd51e07
+extern unsigned long long frc_clock_ticks63(void);
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/gpio.h b/arch/arm/mach-bcm2709/include/mach/gpio.h
new file mode 100644
index 0000000..7965a97
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/gpio.h
@@ -0,0 +1,17 @@
@ -6873,9 +6775,6 @@ index 0000000..7965a97
+#define irq_to_gpio(x) ((x) - GPIO_IRQ_START)
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/hardware.h b/arch/arm/mach-bcm2709/include/mach/hardware.h
new file mode 100644
index 0000000..c2954e8
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/hardware.h
@@ -0,0 +1,28 @@
@ -6907,9 +6806,6 @@ index 0000000..c2954e8
+#include <mach/platform.h>
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/io.h b/arch/arm/mach-bcm2709/include/mach/io.h
new file mode 100644
index 0000000..e6eb84d
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/io.h
@@ -0,0 +1,27 @@
@ -6940,9 +6836,6 @@ index 0000000..e6eb84d
+#define __io(a) __typesafe_io(a)
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/irqs.h b/arch/arm/mach-bcm2709/include/mach/irqs.h
new file mode 100644
index 0000000..3a883d2
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/irqs.h
@@ -0,0 +1,225 @@
@ -7171,9 +7064,6 @@ index 0000000..3a883d2
+#define NR_IRQS (BCM2708_ALLOC_IRQS+FREE_IRQS)
+
+#endif /* _BCM2708_IRQS_H_ */
diff --git a/arch/arm/mach-bcm2709/include/mach/memory.h b/arch/arm/mach-bcm2709/include/mach/memory.h
new file mode 100644
index 0000000..7548a52
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/memory.h
@@ -0,0 +1,57 @@
@ -7234,9 +7124,6 @@ index 0000000..7548a52
+#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET))
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/platform.h b/arch/arm/mach-bcm2709/include/mach/platform.h
new file mode 100644
index 0000000..7157f38
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/platform.h
@@ -0,0 +1,225 @@
@ -7465,9 +7352,6 @@ index 0000000..7157f38
+#endif
+
+/* END */
diff --git a/arch/arm/mach-bcm2709/include/mach/power.h b/arch/arm/mach-bcm2709/include/mach/power.h
new file mode 100644
index 0000000..52b3b02
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/power.h
@@ -0,0 +1,26 @@
@ -7497,9 +7381,6 @@ index 0000000..52b3b02
+extern int bcm_power_close(BCM_POWER_HANDLE_T handle);
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/system.h b/arch/arm/mach-bcm2709/include/mach/system.h
new file mode 100644
index 0000000..2d0b821
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/system.h
@@ -0,0 +1,38 @@
@ -7541,9 +7422,6 @@ index 0000000..2d0b821
+}
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/timex.h b/arch/arm/mach-bcm2709/include/mach/timex.h
new file mode 100644
index 0000000..64a660c
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/timex.h
@@ -0,0 +1,23 @@
@ -7570,9 +7448,6 @@ index 0000000..64a660c
+ */
+
+#define CLOCK_TICK_RATE (1000000)
diff --git a/arch/arm/mach-bcm2709/include/mach/uncompress.h b/arch/arm/mach-bcm2709/include/mach/uncompress.h
new file mode 100644
index 0000000..d634813
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/uncompress.h
@@ -0,0 +1,84 @@
@ -7660,9 +7535,6 @@ index 0000000..d634813
+ * nothing to do
+ */
+#define arch_decomp_wdog()
diff --git a/arch/arm/mach-bcm2709/include/mach/vc_mem.h b/arch/arm/mach-bcm2709/include/mach/vc_mem.h
new file mode 100644
index 0000000..4a4a338
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/vc_mem.h
@@ -0,0 +1,35 @@
@ -7701,9 +7573,6 @@ index 0000000..4a4a338
+#endif
+
+#endif /* VC_MEM_H */
diff --git a/arch/arm/mach-bcm2709/include/mach/vc_support.h b/arch/arm/mach-bcm2709/include/mach/vc_support.h
new file mode 100755
index 0000000..70e809f
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/vc_support.h
@@ -0,0 +1,69 @@
@ -7776,9 +7645,6 @@ index 0000000..70e809f
+ unsigned int r0, unsigned int r1, unsigned int r2, unsigned int r3, unsigned int r4, unsigned int r5);
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/vcio.h b/arch/arm/mach-bcm2709/include/mach/vcio.h
new file mode 100644
index 0000000..8e11d67
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/vcio.h
@@ -0,0 +1,165 @@
@ -7947,9 +7813,6 @@ index 0000000..8e11d67
+#define DEVICE_FILE_NAME "vcio"
+
+#endif
diff --git a/arch/arm/mach-bcm2709/include/mach/vmalloc.h b/arch/arm/mach-bcm2709/include/mach/vmalloc.h
new file mode 100644
index 0000000..6aa6826
--- /dev/null
+++ b/arch/arm/mach-bcm2709/include/mach/vmalloc.h
@@ -0,0 +1,20 @@
@ -7973,9 +7836,6 @@ index 0000000..6aa6826
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#define VMALLOC_END (0xff000000)
diff --git a/arch/arm/mach-bcm2709/power.c b/arch/arm/mach-bcm2709/power.c
new file mode 100644
index 0000000..3421057
--- /dev/null
+++ b/arch/arm/mach-bcm2709/power.c
@@ -0,0 +1,195 @@
@ -8174,9 +8034,6 @@ index 0000000..3421057
+MODULE_AUTHOR("Phil Elwell");
+MODULE_DESCRIPTION("Interface to BCM2708 power management");
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-bcm2709/vc_mem.c b/arch/arm/mach-bcm2709/vc_mem.c
new file mode 100644
index 0000000..ac578db
--- /dev/null
+++ b/arch/arm/mach-bcm2709/vc_mem.c
@@ -0,0 +1,431 @@
@ -8611,9 +8468,6 @@ index 0000000..ac578db
+module_param(phys_addr, uint, 0644);
+module_param(mem_size, uint, 0644);
+module_param(mem_base, uint, 0644);
diff --git a/arch/arm/mach-bcm2709/vc_support.c b/arch/arm/mach-bcm2709/vc_support.c
new file mode 100755
index 0000000..0bc41c4
--- /dev/null
+++ b/arch/arm/mach-bcm2709/vc_support.c
@@ -0,0 +1,318 @@
@ -8935,9 +8789,6 @@ index 0000000..0bc41c4
+ return 1;
+ }
+}
diff --git a/arch/arm/mach-bcm2709/vcio.c b/arch/arm/mach-bcm2709/vcio.c
new file mode 100644
index 0000000..5e43e85
--- /dev/null
+++ b/arch/arm/mach-bcm2709/vcio.c
@@ -0,0 +1,474 @@
@ -9415,8 +9266,6 @@ index 0000000..5e43e85
+MODULE_DESCRIPTION("ARM I/O to VideoCore processor");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:bcm-mbox");
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
index 22ac2a6..eec2825 100644
--- a/arch/arm/mm/proc-v7.S
+++ b/arch/arm/mm/proc-v7.S
@@ -441,6 +441,7 @@ __v7_setup:
@ -9427,11 +9276,9 @@ index 22ac2a6..eec2825 100644
ENDPROC(__v7_setup)
.align 2
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index c9ddd87..bfc397c 100644
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -523,6 +523,7 @@ prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB 3103
@@ -523,6 +523,7 @@ prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB
paz00 MACH_PAZ00 PAZ00 3128
acmenetusfoxg20 MACH_ACMENETUSFOXG20 ACMENETUSFOXG20 3129
bcm2708 MACH_BCM2708 BCM2708 3138
@ -9439,8 +9286,6 @@ index c9ddd87..bfc397c 100644
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 --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index 0d2ca0d..77eb7a8 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -322,7 +322,7 @@ config HW_RANDOM_TPM
@ -9452,11 +9297,9 @@ index 0d2ca0d..77eb7a8 100644
---help---
This driver provides the kernel-side support for the BCM2708 hardware.
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
index 84b4c8b..8253434 100644
--- a/drivers/clocksource/arm_arch_timer.c
+++ b/drivers/clocksource/arm_arch_timer.c
@@ -795,3 +795,39 @@ static void __init arch_timer_mem_init(struct device_node *np)
@@ -795,3 +795,39 @@ static void __init arch_timer_mem_init(s
}
CLOCKSOURCE_OF_DECLARE(armv7_arch_timer_mem, "arm,armv7-timer-mem",
arch_timer_mem_init);
@ -9496,8 +9339,6 @@ index 84b4c8b..8253434 100644
+ arch_timer_common_init();
+ return 0;
+}
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index c9b8eb5..5965795 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -332,7 +332,7 @@ config DMA_BCM2835
@ -9509,8 +9350,6 @@ index c9b8eb5..5965795 100644
select DMA_ENGINE
select DMA_VIRTUAL_CHANNELS
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index d30a986..d181d7f 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -361,7 +361,7 @@ config I2C_AXXIA
@ -9531,8 +9370,6 @@ index d30a986..d181d7f 100644
help
Enabling this option will add BSC (Broadcom Serial Controller)
support for the BCM2708. BSC is a Broadcom proprietary bus compatible
diff --git a/drivers/media/platform/bcm2835/Kconfig b/drivers/media/platform/bcm2835/Kconfig
index a8fd172..2cb1a68 100644
--- a/drivers/media/platform/bcm2835/Kconfig
+++ b/drivers/media/platform/bcm2835/Kconfig
@@ -2,7 +2,7 @@
@ -9544,8 +9381,6 @@ index a8fd172..2cb1a68 100644
---help---
Say Y here to enable camera host interface devices for
Broadcom BCM2835 SoC. This operates over the VCHIQ interface
diff --git a/drivers/misc/vc04_services/Kconfig b/drivers/misc/vc04_services/Kconfig
index 2663933..b94e6cd 100644
--- a/drivers/misc/vc04_services/Kconfig
+++ b/drivers/misc/vc04_services/Kconfig
@@ -1,6 +1,6 @@
@ -9556,8 +9391,6 @@ index 2663933..b94e6cd 100644
default y
help
Kernel to VideoCore communication interface for the
diff --git a/drivers/misc/vc04_services/Makefile b/drivers/misc/vc04_services/Makefile
index 0c82520..8d038fe 100644
--- a/drivers/misc/vc04_services/Makefile
+++ b/drivers/misc/vc04_services/Makefile
@@ -1,5 +1,3 @@
@ -9571,8 +9404,6 @@ index 0c82520..8d038fe 100644
ccflags-y += -DVCOS_VERIFY_BKPTS=1 -Idrivers/misc/vc04_services -DUSE_VCHIQ_ARM -D__VCCOREVER__=0x04000000
-endif
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 977aeef..b049c15 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -304,7 +304,7 @@ config MMC_SDHCI_ST
@ -9584,8 +9415,6 @@ index 977aeef..b049c15 100644
help
This selects the MMC Interface on BCM2835.
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index a5238ab..ea70ef0 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -77,7 +77,7 @@ config SPI_ATMEL
@ -9606,8 +9435,6 @@ index a5238ab..ea70ef0 100644
help
This selects a driver for the Broadcom BCM2708 SPI master (SPI0). This
driver is not compatible with the "Universal SPI Master" or the SPI slave
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index ff56894..4bcc3b2 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -454,7 +454,7 @@ config RETU_WATCHDOG
@ -9619,8 +9446,6 @@ index ff56894..4bcc3b2 100644
help
Enables BCM2708 watchdog support.
diff --git a/sound/arm/Kconfig b/sound/arm/Kconfig
index f7ceafd..ada7ba2 100644
--- a/sound/arm/Kconfig
+++ b/sound/arm/Kconfig
@@ -41,7 +41,7 @@ config SND_PXA2XX_AC97
@ -9632,8 +9457,6 @@ index f7ceafd..ada7ba2 100644
select SND_PCM
help
Say Y or M if you want to support BCM2835 Alsa pcm card driver
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
index a562ddf..40d27c1 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
@@ -10,7 +10,7 @@ config SND_BCM2835_SOC_I2S
@ -9645,6 +9468,3 @@ index a562ddf..40d27c1 100644
select REGMAP_MMIO
select SND_SOC_DMAENGINE_PCM
select SND_SOC_GENERIC_DMAENGINE_PCM
--
1.8.3.2

View File

@ -8,8 +8,6 @@ Subject: [PATCH 090/114] bcm2709: Simplify and strip down IRQ handler
arch/arm/mach-bcm2709/include/mach/entry-macro.S | 169 +++++++++++------------
2 files changed, 85 insertions(+), 86 deletions(-)
diff --git a/arch/arm/include/asm/entry-macro-multi.S b/arch/arm/include/asm/entry-macro-multi.S
index 469a2b3..9c0a7eb 100644
--- a/arch/arm/include/asm/entry-macro-multi.S
+++ b/arch/arm/include/asm/entry-macro-multi.S
@@ -1,5 +1,6 @@
@ -27,8 +25,6 @@ index 469a2b3..9c0a7eb 100644
.macro arch_irq_handler, symbol_name
.align 5
diff --git a/arch/arm/mach-bcm2709/include/mach/entry-macro.S b/arch/arm/mach-bcm2709/include/mach/entry-macro.S
index d08591b..101d9f1 100644
--- a/arch/arm/mach-bcm2709/include/mach/entry-macro.S
+++ b/arch/arm/mach-bcm2709/include/mach/entry-macro.S
@@ -22,102 +22,99 @@
@ -43,23 +39,15 @@ index d08591b..101d9f1 100644
- .macro get_irqnr_preamble, base, tmp
- ldr \base, =IO_ADDRESS(ARMCTRL_IC_BASE)
- .endm
+ .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
-
- .macro arch_ret_to_user, tmp1, tmp2
- .endm
+ /* get core number */
+ mrc p15, 0, \base, c0, c0, 5
+ ubfx \base, \base, #0, #2
-
- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
- /* get core number */
- mrc p15, 0, \tmp, c0, c0, 5
- ubfx \tmp, \tmp, #0, #2
+ /* get core's local interrupt controller */
+ ldr \irqstat, = __io_address(ARM_LOCAL_IRQ_PENDING0) @ local interrupt source
+ add \irqstat, \irqstat, \base, lsl #2
+ ldr \tmp, [\irqstat]
-
- /* get core's local interrupt controller */
- ldr \irqstat, = __io_address(ARM_LOCAL_IRQ_PENDING0) @ local interrupt source
- add \irqstat, \irqstat, \tmp, lsl #2
@ -69,10 +57,7 @@ index d08591b..101d9f1 100644
- /* ignore mailbox interrupts */
- bics \tmp, #0xf0
- beq 1005f
+ /* test for mailbox0 (IPI) interrupt */
+ tst \tmp, #0x10
+ beq 1030f
-
- @ For non-zero x, LSB(x) = 31 - CLZ(x^(x-1))
- @ N.B. CLZ is an ARM5 instruction.
- mov \irqnr, #(ARM_IRQ_LOCAL_BASE + 31)
@ -85,31 +70,14 @@ index d08591b..101d9f1 100644
- /* get core number */
- mrc p15, 0, \tmp, c0, c0, 5
- ubfx \tmp, \tmp, #0, #2
+ /* get core's mailbox interrupt control */
+ ldr \irqstat, = __io_address(ARM_LOCAL_MAILBOX0_CLR0) @ mbox_clr
+ add \irqstat, \irqstat, \base, lsl #4
+ ldr \tmp, [\irqstat]
+ clz \tmp, \tmp
+ rsb \irqnr, \tmp, #31
+ mov \tmp, #1
+ lsl \tmp, \irqnr
+ str \tmp, [\irqstat] @ clear interrupt source
+ dsb
+ mov r1, sp
+ adr lr, BSYM(1b)
+ b do_IPI
-
- cmp \tmp, #1
- beq 1020f
- cmp \tmp, #2
- beq 1020f
- cmp \tmp, #3
- beq 1020f
+1030:
+ /* check gpu interrupt */
+ tst \tmp, #0x100
+ beq 1040f
-
- /* get masked status */
- ldr \irqstat, [\base, #(ARM_IRQ_PEND0 - ARMCTRL_IC_BASE)]
- mov \irqnr, #(ARM_IRQ0_BASE + 31)
@ -117,15 +85,7 @@ index d08591b..101d9f1 100644
- /* clear bits 8 and 9, and test */
- bics \irqstat, \irqstat, #0x300
- bne 1010f
+ ldr \base, =IO_ADDRESS(ARMCTRL_IC_BASE)
+ /* get masked status */
+ ldr \irqstat, [\base, #(ARM_IRQ_PEND0 - ARMCTRL_IC_BASE)]
+ mov \irqnr, #(ARM_IRQ0_BASE + 31)
+ and \tmp, \irqstat, #0x300 @ save bits 8 and 9
+ /* clear bits 8 and 9, and test */
+ bics \irqstat, \irqstat, #0x300
+ bne 1010f
-
- tst \tmp, #0x100
- ldrne \irqstat, [\base, #(ARM_IRQ_PEND1 - ARMCTRL_IC_BASE)]
- movne \irqnr, #(ARM_IRQ1_BASE + 31)
@ -141,6 +101,49 @@ index d08591b..101d9f1 100644
- bicne \irqstat, #((1<<21) | (1<<22) | (1<<23) | (1<<24) | (1<<25))
- bicne \irqstat, #((1<<30))
- beq 1020f
+ .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
+ /* get core number */
+ mrc p15, 0, \base, c0, c0, 5
+ ubfx \base, \base, #0, #2
+
+ /* get core's local interrupt controller */
+ ldr \irqstat, = __io_address(ARM_LOCAL_IRQ_PENDING0) @ local interrupt source
+ add \irqstat, \irqstat, \base, lsl #2
+ ldr \tmp, [\irqstat]
+
+ /* test for mailbox0 (IPI) interrupt */
+ tst \tmp, #0x10
+ beq 1030f
+
+ /* get core's mailbox interrupt control */
+ ldr \irqstat, = __io_address(ARM_LOCAL_MAILBOX0_CLR0) @ mbox_clr
+ add \irqstat, \irqstat, \base, lsl #4
+ ldr \tmp, [\irqstat]
+ clz \tmp, \tmp
+ rsb \irqnr, \tmp, #31
+ mov \tmp, #1
+ lsl \tmp, \irqnr
+ str \tmp, [\irqstat] @ clear interrupt source
+ dsb
+ mov r1, sp
+ adr lr, BSYM(1b)
+ b do_IPI
+
+1030:
+ /* check gpu interrupt */
+ tst \tmp, #0x100
+ beq 1040f
+
+ ldr \base, =IO_ADDRESS(ARMCTRL_IC_BASE)
+ /* get masked status */
+ ldr \irqstat, [\base, #(ARM_IRQ_PEND0 - ARMCTRL_IC_BASE)]
+ mov \irqnr, #(ARM_IRQ0_BASE + 31)
+ and \tmp, \irqstat, #0x300 @ save bits 8 and 9
+ /* clear bits 8 and 9, and test */
+ bics \irqstat, \irqstat, #0x300
+ bne 1010f
+
+ tst \tmp, #0x100
+ ldrne \irqstat, [\base, #(ARM_IRQ_PEND1 - ARMCTRL_IC_BASE)]
+ movne \irqnr, #(ARM_IRQ1_BASE + 31)
@ -148,7 +151,7 @@ index d08591b..101d9f1 100644
+ bicne \irqstat, #((1<<7) | (1<<9) | (1<<10))
+ bicne \irqstat, #((1<<18) | (1<<19))
+ bne 1010f
+
+ tst \tmp, #0x200
+ ldrne \irqstat, [\base, #(ARM_IRQ_PEND2 - ARMCTRL_IC_BASE)]
+ movne \irqnr, #(ARM_IRQ2_BASE + 31)
@ -172,8 +175,7 @@ index d08591b..101d9f1 100644
+1040:
+ cmp \tmp, #0
+ beq 1020f
-1020: @ EQ will be set if no irqs pending
+
+ /* handle local (e.g. timer) interrupts */
+ @ For non-zero x, LSB(x) = 31 - CLZ(x^(x-1))
+ mov \irqnr, #(ARM_IRQ_LOCAL_BASE + 31)
@ -189,10 +191,11 @@ index d08591b..101d9f1 100644
+ adr lr, BSYM(1b)
+ b asm_do_IRQ
- .endm
+1020: @ EQ will be set if no irqs pending
1020: @ EQ will be set if no irqs pending
+ .endm
- .endm
-
- .macro test_for_ipi, irqnr, irqstat, base, tmp
- /* get core number */
- mrc p15, 0, \tmp, c0, c0, 5
@ -217,6 +220,3 @@ index d08591b..101d9f1 100644
+ .macro arch_irq_handler_default
+1: get_irqnr_and_base r0, r2, r6, lr
+ .endm
--
1.8.3.2

View File

@ -8,8 +8,6 @@ Subject: [PATCH 091/114] dwc_otg: FIQ support on SMP. Set up FIQ stack and
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 96 ++++++++++++++--------------
1 file changed, 49 insertions(+), 47 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
index 98e1dc5..4d8dd95 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -397,7 +397,55 @@ static struct fiq_handler fh = {
@ -39,12 +37,12 @@ index 98e1dc5..4d8dd95 100644
+ } else {
+ regs.ARM_fp = (long) dwc_otg_fiq_nop;
+ }
+
+ regs.ARM_sp = (long) dwc_otg_hcd->fiq_stack + (sizeof(struct fiq_stack) - 4);
+
+// __show_regs(&regs);
+ set_fiq_regs(&regs);
+
+ //Set the mphi periph to the required registers
+ dwc_otg_hcd->fiq_state->mphi_regs.base = otg_dev->os_dep.mphi_base;
+ dwc_otg_hcd->fiq_state->mphi_regs.ctrl = otg_dev->os_dep.mphi_base + 0x4c;
@ -130,6 +128,3 @@ index 98e1dc5..4d8dd95 100644
otg_dev->hcd->otg_dev = otg_dev;
--
1.8.3.2

View File

@ -19,11 +19,9 @@ cores.
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 9 ++++-
6 files changed, 88 insertions(+), 22 deletions(-)
diff --git a/drivers/usb/host/dwc_common_port/dwc_common_linux.c b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
index 5c50a8b..b802042 100644
--- a/drivers/usb/host/dwc_common_port/dwc_common_linux.c
+++ b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
@@ -580,13 +580,7 @@ void DWC_WRITE_REG64(uint64_t volatile *reg, uint64_t value)
@@ -580,13 +580,7 @@ void DWC_WRITE_REG64(uint64_t volatile *
void DWC_MODIFY_REG32(uint32_t volatile *reg, uint32_t clear_mask, uint32_t set_mask)
{
@ -37,11 +35,9 @@ index 5c50a8b..b802042 100644
}
#if 0
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil.c b/drivers/usb/host/dwc_otg/dwc_otg_cil.c
index 6a32c5c..e40060f 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_cil.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil.c
@@ -2244,9 +2244,7 @@ void dwc_otg_core_host_init(dwc_otg_core_if_t * core_if)
@@ -2244,9 +2244,7 @@ void dwc_otg_core_host_init(dwc_otg_core
*/
void dwc_otg_hc_init(dwc_otg_core_if_t * core_if, dwc_hc_t * hc)
{
@ -51,7 +47,7 @@ index 6a32c5c..e40060f 100644
hcchar_data_t hcchar;
hcsplt_data_t hcsplt;
@@ -2348,14 +2346,6 @@ void dwc_otg_hc_init(dwc_otg_core_if_t * core_if, dwc_hc_t * hc)
@@ -2348,14 +2346,6 @@ void dwc_otg_hc_init(dwc_otg_core_if_t *
}
DWC_WRITE_REG32(&hc_regs->hcintmsk, hc_intr_mask.d32);
@ -66,11 +62,9 @@ index 6a32c5c..e40060f 100644
/*
* Program the HCCHARn register with the endpoint characteristics for
* the current transfer.
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
index 284f902..84618a5 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
@@ -75,6 +75,46 @@ void notrace _fiq_print(enum fiq_debug_level dbg_lvl, volatile struct fiq_state
@@ -75,6 +75,46 @@ void notrace _fiq_print(enum fiq_debug_l
}
/**
@ -117,7 +111,7 @@ index 284f902..84618a5 100644
* fiq_fsm_restart_channel() - Poke channel enable bit for a split transaction
* @channel: channel to re-enable
*/
@@ -1142,6 +1182,7 @@ void notrace dwc_otg_fiq_fsm(struct fiq_state *state, int num_channels)
@@ -1142,6 +1182,7 @@ void notrace dwc_otg_fiq_fsm(struct fiq_
gintsts_handled.d32 = 0;
haint_handled.d32 = 0;
@ -125,7 +119,7 @@ index 284f902..84618a5 100644
gintsts.d32 = FIQ_READ(state->dwc_regs_base + GINTSTS);
gintmsk.d32 = FIQ_READ(state->dwc_regs_base + GINTMSK);
gintsts.d32 &= gintmsk.d32;
@@ -1231,7 +1272,7 @@ void notrace dwc_otg_fiq_fsm(struct fiq_state *state, int num_channels)
@@ -1231,7 +1272,7 @@ void notrace dwc_otg_fiq_fsm(struct fiq_
}
state->fiq_done++;
@ -134,7 +128,7 @@ index 284f902..84618a5 100644
}
@@ -1253,6 +1294,7 @@ void notrace dwc_otg_fiq_nop(struct fiq_state *state)
@@ -1253,6 +1294,7 @@ void notrace dwc_otg_fiq_nop(struct fiq_
gintmsk_data_t gintmsk;
hfnum_data_t hfnum;
@ -142,15 +136,13 @@ index 284f902..84618a5 100644
hfnum.d32 = FIQ_READ(state->dwc_regs_base + HFNUM);
gintsts.d32 = FIQ_READ(state->dwc_regs_base + GINTSTS);
gintmsk.d32 = FIQ_READ(state->dwc_regs_base + GINTMSK);
@@ -1290,5 +1332,5 @@ void notrace dwc_otg_fiq_nop(struct fiq_state *state)
@@ -1290,5 +1332,5 @@ void notrace dwc_otg_fiq_nop(struct fiq_
}
state->fiq_done++;
- mb();
+ fiq_fsm_spin_unlock(&state->lock);
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
index 5c7707f..8455324 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
@@ -120,7 +120,6 @@ typedef struct {
@ -197,11 +189,9 @@ index 5c7707f..8455324 100644
extern int fiq_fsm_too_late(struct fiq_state *st, int n);
extern int fiq_fsm_tt_in_use(struct fiq_state *st, int num_channels, int n);
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 68d4f3b..124ac16 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -1184,6 +1184,9 @@ static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -1184,6 +1184,9 @@ static void assign_and_init_hc(dwc_otg_h
dwc_otg_qtd_t *qtd;
dwc_otg_hcd_urb_t *urb;
void* ptr = NULL;
@ -211,7 +201,7 @@ index 68d4f3b..124ac16 100644
qtd = DWC_CIRCLEQ_FIRST(&qh->qtd_list);
@@ -1409,6 +1412,20 @@ static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
@@ -1409,6 +1412,20 @@ static void assign_and_init_hc(dwc_otg_h
hc->desc_list_addr = qh->desc_list_dma;
dwc_otg_hc_init(hcd->core_if, hc);
@ -232,7 +222,7 @@ index 68d4f3b..124ac16 100644
hc->qh = qh;
}
@@ -1659,6 +1676,7 @@ int fiq_fsm_queue_isoc_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)
@@ -1659,6 +1676,7 @@ int fiq_fsm_queue_isoc_transaction(dwc_o
fiq_print(FIQDBG_INT, hcd->fiq_state, "%08x", st->hcdma_copy.d32);
hfnum.d32 = DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hfnum);
local_fiq_disable();
@ -240,7 +230,7 @@ index 68d4f3b..124ac16 100644
DWC_WRITE_REG32(&hc_regs->hctsiz, st->hctsiz_copy.d32);
DWC_WRITE_REG32(&hc_regs->hcsplt, st->hcsplt_copy.d32);
DWC_WRITE_REG32(&hc_regs->hcdma, st->hcdma_copy.d32);
@@ -1676,6 +1694,7 @@ int fiq_fsm_queue_isoc_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)
@@ -1676,6 +1694,7 @@ int fiq_fsm_queue_isoc_transaction(dwc_o
}
mb();
st->hcchar_copy.b.chen = 0;
@ -248,7 +238,7 @@ index 68d4f3b..124ac16 100644
local_fiq_enable();
return 0;
}
@@ -1811,7 +1830,7 @@ int fiq_fsm_queue_split_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)
@@ -1811,7 +1830,7 @@ int fiq_fsm_queue_split_transaction(dwc_
DWC_WRITE_REG32(&hc_regs->hcintmsk, st->hcintmsk_copy.d32);
local_fiq_disable();
@ -257,7 +247,7 @@ index 68d4f3b..124ac16 100644
if (hc->ep_type & 0x1) {
hfnum.d32 = DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hfnum);
@@ -1909,7 +1928,7 @@ int fiq_fsm_queue_split_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)
@@ -1909,7 +1928,7 @@ int fiq_fsm_queue_split_transaction(dwc_
st->hcchar_copy.b.chen = 1;
DWC_WRITE_REG32(&hc_regs->hcchar, st->hcchar_copy.d32);
}
@ -266,11 +256,9 @@ index 68d4f3b..124ac16 100644
local_fiq_enable();
return 0;
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
index a5566bc..ee35196 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -101,6 +101,7 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -101,6 +101,7 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
if (dwc_otg_is_host_mode(core_if)) {
if (fiq_enable) {
local_fiq_disable();
@ -278,7 +266,7 @@ index a5566bc..ee35196 100644
/* Pull in from the FIQ's disabled mask */
gintmsk.d32 = gintmsk.d32 | ~(dwc_otg_hcd->fiq_state->gintmsk_saved.d32);
dwc_otg_hcd->fiq_state->gintmsk_saved.d32 = ~0;
@@ -116,8 +117,10 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -116,8 +117,10 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
}
gintsts.d32 &= gintmsk.d32;
@ -306,7 +294,7 @@ index a5566bc..ee35196 100644
local_fiq_enable();
if ((jiffies / HZ) > last_time) {
@@ -633,8 +638,10 @@ int32_t dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd_t * dwc_otg_hcd)
@@ -633,8 +638,10 @@ int32_t dwc_otg_hcd_handle_hc_intr(dwc_o
{
/* check the mask? */
local_fiq_disable();
@ -317,6 +305,3 @@ index a5566bc..ee35196 100644
local_fiq_enable();
}
--
1.8.3.2

View File

@ -7,11 +7,9 @@ Subject: [PATCH 093/114] fiq_fsm: fix build on bcm2708 and bcm2709 platforms
drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
index 84618a5..0d2b04e 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
@@ -78,6 +78,7 @@ void notrace _fiq_print(enum fiq_debug_level dbg_lvl, volatile struct fiq_state
@@ -78,6 +78,7 @@ void notrace _fiq_print(enum fiq_debug_l
* fiq_fsm_spin_lock() - ARMv6+ bare bones spinlock
* Must be called with local interrupts and FIQ disabled.
*/
@ -19,7 +17,7 @@ index 84618a5..0d2b04e 100644
inline void fiq_fsm_spin_lock(fiq_lock_t *lock)
{
unsigned long tmp;
@@ -103,16 +104,23 @@ inline void fiq_fsm_spin_lock(fiq_lock_t *lock)
@@ -103,16 +104,23 @@ inline void fiq_fsm_spin_lock(fiq_lock_t
}
smp_mb();
}
@ -43,6 +41,3 @@ index 84618a5..0d2b04e 100644
/**
* fiq_fsm_restart_channel() - Poke channel enable bit for a split transaction
--
1.8.3.2

View File

@ -9,11 +9,9 @@ Subject: [PATCH 094/114] dwc_otg: put some barriers back where they should be
drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 1 +
2 files changed, 3 insertions(+)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
index 0d2b04e..276ad0c7 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
@@ -1280,6 +1280,7 @@ void notrace dwc_otg_fiq_fsm(struct fiq_state *state, int num_channels)
@@ -1280,6 +1280,7 @@ void notrace dwc_otg_fiq_fsm(struct fiq_
}
state->fiq_done++;
@ -21,18 +19,16 @@ index 0d2b04e..276ad0c7 100644
fiq_fsm_spin_unlock(&state->lock);
}
@@ -1340,5 +1341,6 @@ void notrace dwc_otg_fiq_nop(struct fiq_state *state)
@@ -1340,5 +1341,6 @@ void notrace dwc_otg_fiq_nop(struct fiq_
}
state->fiq_done++;
+ mb();
fiq_fsm_spin_unlock(&state->lock);
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 124ac16..ac70f1d 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -1928,6 +1928,7 @@ int fiq_fsm_queue_split_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)
@@ -1928,6 +1928,7 @@ int fiq_fsm_queue_split_transaction(dwc_
st->hcchar_copy.b.chen = 1;
DWC_WRITE_REG32(&hc_regs->hcchar, st->hcchar_copy.d32);
}
@ -40,6 +36,3 @@ index 124ac16..ac70f1d 100644
fiq_fsm_spin_unlock(&hcd->fiq_state->lock);
local_fiq_enable();
return 0;
--
1.8.3.2

View File

@ -7,11 +7,9 @@ Subject: [PATCH 095/114] mach_bcm2709: Add Mailbox resources to USB driver
arch/arm/mach-bcm2709/bcm2709.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c
index a1058ad..5d73b73 100644
--- a/arch/arm/mach-bcm2709/bcm2709.c
+++ b/arch/arm/mach-bcm2709/bcm2709.c
@@ -338,6 +338,16 @@ static struct resource bcm2708_usb_resources[] = {
@@ -338,6 +338,16 @@ static struct resource bcm2708_usb_resou
.end = IRQ_USB,
.flags = IORESOURCE_IRQ,
},
@ -28,6 +26,3 @@ index a1058ad..5d73b73 100644
};
--
1.8.3.2

View File

@ -9,11 +9,9 @@ Subject: [PATCH 096/114] bcm2709/dwc_otg: Setup FIQ on core 1 if >1 core
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 15 +++++++++++----
2 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/arch/arm/mach-bcm2709/armctrl.c b/arch/arm/mach-bcm2709/armctrl.c
index 8e69a813..6e3f0f2 100644
--- a/arch/arm/mach-bcm2709/armctrl.c
+++ b/arch/arm/mach-bcm2709/armctrl.c
@@ -89,7 +89,15 @@ static void armctrl_unmask_irq(struct irq_data *d)
@@ -89,7 +89,15 @@ static void armctrl_unmask_irq(struct ir
};
int i;
if (d->irq >= FIQ_START) {
@ -30,8 +28,6 @@ index 8e69a813..6e3f0f2 100644
writel(0x80 | data, __io_address(ARM_IRQ_FAST));
} else if (d->irq >= IRQ_ARM_LOCAL_CNTPSIRQ && d->irq < IRQ_ARM_LOCAL_CNTPSIRQ + 4) {
#if 1
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
index 4d8dd95..1d28459 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -407,7 +407,9 @@ static void hcd_init_fiq(void *cookie)
@ -63,6 +59,3 @@ index 4d8dd95..1d28459 100644
otg_dev->hcd->otg_dev = otg_dev;
hcd->self.otg_port = dwc_otg_hcd_otg_port(dwc_otg_hcd);
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 097/114] bcm2709: Port pps-gpio and i2c patches
arch/arm/mach-bcm2709/bcm2709.c | 41 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 39 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c
index 5d73b73..f009aeb 100644
--- a/arch/arm/mach-bcm2709/bcm2709.c
+++ b/arch/arm/mach-bcm2709/bcm2709.c
@@ -37,6 +37,7 @@
@ -28,7 +26,7 @@ index 5d73b73..f009aeb 100644
static unsigned use_dt = 0;
@@ -283,6 +286,19 @@ static struct platform_device w1_device = {
@@ -283,6 +286,19 @@ static struct platform_device w1_device
};
#endif
@ -83,7 +81,7 @@ index 5d73b73..f009aeb 100644
#if defined(CONFIG_SND_BCM2708_SOC_I2S) || defined(CONFIG_SND_BCM2708_SOC_I2S_MODULE)
bcm_register_device_dt(&bcm2708_i2s_device);
@@ -1245,3 +1278,7 @@ module_param(disk_led_active_low, uint, 0644);
@@ -1245,3 +1278,7 @@ module_param(disk_led_active_low, uint,
module_param(reboot_part, uint, 0644);
module_param(w1_gpio_pin, uint, 0644);
module_param(w1_gpio_pullup, uint, 0644);
@ -91,6 +89,3 @@ index 5d73b73..f009aeb 100644
+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.");
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 098/114] bcm2709: Also accept the 2708 machine ID
arch/arm/mach-bcm2709/bcm2709.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c
index f009aeb..7e3affd 100644
--- a/arch/arm/mach-bcm2709/bcm2709.c
+++ b/arch/arm/mach-bcm2709/bcm2709.c
@@ -1270,6 +1270,19 @@ MACHINE_START(BCM2709, "BCM2709")
@ -31,6 +29,3 @@ index f009aeb..7e3affd 100644
module_param(boardrev, uint, 0644);
module_param(serial, uint, 0644);
module_param(uart_clock, uint, 0644);
--
1.8.3.2

View File

@ -7,8 +7,6 @@ Subject: [PATCH 099/114] BCM2709_DT: Fix bad merge
arch/arm/boot/dts/Makefile | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 605ed38..8f76444 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -63,18 +63,19 @@ ifeq ($(CONFIG_BCM2709_DT),y)
@ -43,6 +41,3 @@ index 605ed38..8f76444 100644
dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb
--
1.8.3.2

View File

@ -8,11 +8,9 @@ Some code to load the driver based on device-tree-overlays was missing. This is
sound/soc/bcm/hifiberry_amp.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/sound/soc/bcm/hifiberry_amp.c b/sound/soc/bcm/hifiberry_amp.c
index 1e87ee0..5903915 100644
--- a/sound/soc/bcm/hifiberry_amp.c
+++ b/sound/soc/bcm/hifiberry_amp.c
@@ -65,6 +65,12 @@ static struct snd_soc_card snd_rpi_hifiberry_amp = {
@@ -65,6 +65,12 @@ static struct snd_soc_card snd_rpi_hifib
.num_links = ARRAY_SIZE(snd_rpi_hifiberry_amp_dai),
};
@ -25,7 +23,7 @@ index 1e87ee0..5903915 100644
static int snd_rpi_hifiberry_amp_probe(struct platform_device *pdev)
{
@@ -72,6 +78,20 @@ static int snd_rpi_hifiberry_amp_probe(struct platform_device *pdev)
@@ -72,6 +78,20 @@ static int snd_rpi_hifiberry_amp_probe(s
snd_rpi_hifiberry_amp.dev = &pdev->dev;
@ -46,7 +44,7 @@ index 1e87ee0..5903915 100644
ret = snd_soc_register_card(&snd_rpi_hifiberry_amp);
if (ret != 0) {
@@ -92,6 +112,7 @@ static struct platform_driver snd_rpi_hifiberry_amp_driver = {
@@ -92,6 +112,7 @@ static struct platform_driver snd_rpi_hi
.driver = {
.name = "snd-hifiberry-amp",
.owner = THIS_MODULE,
@ -54,6 +52,3 @@ index 1e87ee0..5903915 100644
},
.probe = snd_rpi_hifiberry_amp_probe,
.remove = snd_rpi_hifiberry_amp_remove,
--
1.8.3.2

Some files were not shown because too many files have changed in this diff Show More