brcm2708: update 3.10 patches with raspberrypi/rpi-3.10.y of 27 Apr. 2014

Update the 3.10 rasperry patches by rebasing raspberry/rpi-3.10-y
against linux-stable/v3.10.49.

Signed-off-by: Florian Fainelli <florian@openwrt.org>

SVN-Revision: 42678
This commit is contained in:
Florian Fainelli 2014-09-27 19:10:51 +00:00
parent ff6b0d57b8
commit 6918ea2484
195 changed files with 12447 additions and 8152 deletions

View file

@ -1,7 +1,7 @@
From 47ecfc09ad3289994f80bd3dcaec876ac536d884 Mon Sep 17 00:00:00 2001
From 8775cd3a02a2eb38e20465b0ca5db05de1f75125 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sun, 12 May 2013 12:24:19 +0100
Subject: [PATCH 001/174] Main bcm2708 linux port
Subject: [PATCH 001/196] Main bcm2708 linux port
Signed-off-by: popcornmix <popcornmix@gmail.com>
---
@ -95,6 +95,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
create mode 100644 arch/arm/mach-bcm2708/vcio.c
create mode 100644 drivers/mmc/host/sdhci-bcm2708.c
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 18a9f5e..eb291c7 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -361,6 +361,21 @@ config ARCH_AT91
@ -127,6 +129,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
source "arch/arm/mach-zynq/Kconfig"
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 1d41908..52377c9 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -519,6 +519,14 @@ choice
@ -144,9 +148,11 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
endchoice
config DEBUG_EXYNOS_UART
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 1ba358b..fb73cf0 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -144,6 +144,7 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x0020
@@ -139,6 +139,7 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
# by CONFIG_* macro name.
machine-$(CONFIG_ARCH_AT91) += at91
machine-$(CONFIG_ARCH_BCM) += bcm
@ -154,6 +160,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
machine-$(CONFIG_ARCH_BCM2835) += bcm2835
machine-$(CONFIG_ARCH_CLPS711X) += clps711x
machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx
diff --git a/arch/arm/configs/bcmrpi_cutdown_defconfig b/arch/arm/configs/bcmrpi_cutdown_defconfig
new file mode 100644
index 0000000..74f2dc9
--- /dev/null
+++ b/arch/arm/configs/bcmrpi_cutdown_defconfig
@@ -0,0 +1,474 @@
@ -631,6 +640,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
new file mode 100644
index 0000000..339aabf
--- /dev/null
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -0,0 +1,510 @@
@ -1144,6 +1156,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
diff --git a/arch/arm/configs/bcmrpi_emergency_defconfig b/arch/arm/configs/bcmrpi_emergency_defconfig
new file mode 100644
index 0000000..3b40c49
--- /dev/null
+++ b/arch/arm/configs/bcmrpi_emergency_defconfig
@@ -0,0 +1,532 @@
@ -1679,6 +1694,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+# 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 ac4c2e5..d3a6810 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -174,7 +174,7 @@ void arch_cpu_idle(void)
@ -1690,6 +1707,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
int __init reboot_setup(char *str)
{
diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig
new file mode 100644
index 0000000..63bb76c
--- /dev/null
+++ b/arch/arm/mach-bcm2708/Kconfig
@@ -0,0 +1,34 @@
@ -1727,6 +1747,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..164ecb2
--- /dev/null
+++ b/arch/arm/mach-bcm2708/Makefile
@@ -0,0 +1,8 @@
@ -1738,12 +1761,18 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+obj-$(CONFIG_BCM2708_GPIO) += bcm2708_gpio.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..da18725
--- /dev/null
+++ b/arch/arm/mach-bcm2708/armctrl.c
@@ -0,0 +1,208 @@
@ -1955,6 +1984,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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 @@
@ -1985,6 +2017,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..64a2783
--- /dev/null
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -0,0 +1,695 @@
@ -2683,6 +2718,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+module_param(serial, uint, 0644);
+module_param(uart_clock, 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..dfe8700
--- /dev/null
+++ b/arch/arm/mach-bcm2708/bcm2708.h
@@ -0,0 +1,51 @@
@ -2737,6 +2775,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#endif
diff --git a/arch/arm/mach-bcm2708/bcm2708_gpio.c b/arch/arm/mach-bcm2708/bcm2708_gpio.c
new file mode 100644
index 0000000..d0339eb
--- /dev/null
+++ b/arch/arm/mach-bcm2708/bcm2708_gpio.c
@@ -0,0 +1,339 @@
@ -3079,6 +3120,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver");
+MODULE_LICENSE("GPL");
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 @@
@ -3143,6 +3187,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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 @@
@ -3170,6 +3217,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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 @@
@ -3572,6 +3622,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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 @@
@ -3994,6 +4047,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..aae9136
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/arm_power.h
@@ -0,0 +1,60 @@
@ -4057,6 +4113,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+};
+
+#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 @@
@ -4067,6 +4126,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..2d0dc1c
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/debug-macro.S
@@ -0,0 +1,22 @@
@ -4092,6 +4154,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ .endm
+
+#include <asm/hardware/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..ac7a4a0
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/dma.h
@@ -0,0 +1,86 @@
@ -4181,6 +4246,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+
+#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 @@
@ -4253,6 +4321,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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 @@
@ -4294,6 +4365,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+extern unsigned long long frc_clock_ticks63(void);
+
+#endif
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..f600bc7
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/gpio.h
@@ -0,0 +1,18 @@
@ -4315,6 +4389,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#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 @@
@ -4346,6 +4423,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -4376,6 +4456,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..e8bb068
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/irqs.h
@@ -0,0 +1,196 @@
@ -4575,6 +4658,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+
+#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..521540d
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/memory.h
@@ -0,0 +1,57 @@
@ -4635,6 +4721,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - 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..110ce07
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/platform.h
@@ -0,0 +1,220 @@
@ -4858,6 +4947,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -4887,6 +4979,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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 @@
@ -4928,6 +5023,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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 @@
@ -4954,6 +5052,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ */
+
+#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..6ff8f94
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/uncompress.h
@@ -0,0 +1,85 @@
@ -5042,6 +5143,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ */
+#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..d29125b
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vc_mem.h
@@ -0,0 +1,36 @@
@ -5081,6 +5185,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#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..b522ba9
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vcio.h
@@ -0,0 +1,141 @@
@ -5225,6 +5332,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#define DEVICE_FILE_NAME "char_dev"
+
+#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 @@
@ -5248,6 +5358,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ * 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..256bf1a
--- /dev/null
+++ b/arch/arm/mach-bcm2708/power.c
@@ -0,0 +1,194 @@
@ -5445,6 +5558,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..aeae4d5
--- /dev/null
+++ b/arch/arm/mach-bcm2708/vc_mem.c
@@ -0,0 +1,462 @@
@ -5910,6 +6026,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..599eb63
--- /dev/null
+++ b/arch/arm/mach-bcm2708/vcio.c
@@ -0,0 +1,474 @@
@ -6387,6 +6506,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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 c21082d..6ae2668 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -358,7 +358,7 @@ config CPU_PJ4B
@ -6398,6 +6519,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
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 d073528..223fc69 100644
--- a/arch/arm/mm/proc-v6.S
+++ b/arch/arm/mm/proc-v6.S
@@ -73,10 +73,19 @@ ENDPROC(cpu_v6_reset)
@ -6423,6 +6546,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
mov pc, 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
@ -6433,6 +6558,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
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/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 9ab8f8d..74e7543 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -249,6 +249,27 @@ config MMC_SDHCI_S3C_DMA
@ -6463,9 +6590,11 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
config MMC_SDHCI_BCM2835
tristate "SDHCI platform support for the BCM2835 SD/MMC Controller"
depends on ARCH_BCM2835
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index cd32280..6a7b985 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_MMC_SDHCI_PXAV2) += sdhci-p
@@ -15,6 +15,7 @@ obj-$(CONFIG_MMC_SDHCI_PXAV2) += sdhci-pxav2.o
obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o
obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci-sirf.o
obj-$(CONFIG_MMC_SDHCI_SPEAR) += sdhci-spear.o
@ -6473,6 +6602,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
obj-$(CONFIG_MMC_WBSD) += wbsd.o
obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
obj-$(CONFIG_MMC_OMAP) += omap.o
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
new file mode 100644
index 0000000..e79723d
--- /dev/null
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -0,0 +1,1425 @@
@ -7901,6 +8033,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:"DRIVER_NAME);
+
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 2ea429c..179e83e 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -28,6 +28,7 @@
@ -7911,7 +8045,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
#include <linux/mmc/slot-gpio.h>
#include "sdhci.h"
@@ -315,7 +316,7 @@ static void sdhci_read_block_pio(struct
@@ -315,7 +316,7 @@ static void sdhci_read_block_pio(struct sdhci_host *host)
u32 uninitialized_var(scratch);
u8 *buf;
@ -7920,7 +8054,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
blksize = host->data->blksz;
chunk = 0;
@@ -360,7 +361,7 @@ static void sdhci_write_block_pio(struct
@@ -360,7 +361,7 @@ static void sdhci_write_block_pio(struct sdhci_host *host)
u32 scratch;
u8 *buf;
@ -7929,7 +8063,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
blksize = host->data->blksz;
chunk = 0;
@@ -399,19 +400,28 @@ static void sdhci_write_block_pio(struct
@@ -399,19 +400,28 @@ static void sdhci_write_block_pio(struct sdhci_host *host)
local_irq_restore(flags);
}
@ -7961,7 +8095,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
/*
* Some controllers (JMicron JMB38x) mess up the buffer bits
@@ -422,7 +432,7 @@ static void sdhci_transfer_pio(struct sd
@@ -422,7 +432,7 @@ static void sdhci_transfer_pio(struct sdhci_host *host)
(host->data->blocks == 1))
mask = ~0;
@ -7970,7 +8104,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
if (host->quirks & SDHCI_QUIRK_PIO_NEEDS_DELAY)
udelay(100);
@@ -434,9 +444,11 @@ static void sdhci_transfer_pio(struct sd
@@ -434,9 +444,11 @@ static void sdhci_transfer_pio(struct sdhci_host *host)
host->blocks--;
if (host->blocks == 0)
break;
@ -7983,7 +8117,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
}
static char *sdhci_kmap_atomic(struct scatterlist *sg, unsigned long *flags)
@@ -709,7 +721,9 @@ static void sdhci_set_transfer_irqs(stru
@@ -709,7 +721,9 @@ static void sdhci_set_transfer_irqs(struct sdhci_host *host)
u32 pio_irqs = SDHCI_INT_DATA_AVAIL | SDHCI_INT_SPACE_AVAIL;
u32 dma_irqs = SDHCI_INT_DMA_END | SDHCI_INT_ADMA_ERROR;
@ -7994,7 +8128,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
sdhci_clear_set_irqs(host, pio_irqs, dma_irqs);
else
sdhci_clear_set_irqs(host, dma_irqs, pio_irqs);
@@ -741,44 +755,25 @@ static void sdhci_prepare_data(struct sd
@@ -741,44 +755,25 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd)
host->data_early = 0;
host->data->bytes_xfered = 0;
@ -8047,7 +8181,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
int broken, i;
struct scatterlist *sg;
@@ -837,7 +832,8 @@ static void sdhci_prepare_data(struct sd
@@ -837,7 +832,8 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd)
*/
WARN_ON(1);
host->flags &= ~SDHCI_REQ_USE_DMA;
@ -8057,7 +8191,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
WARN_ON(sg_cnt != 1);
sdhci_writel(host, sg_dma_address(data->sg),
SDHCI_DMA_ADDRESS);
@@ -853,11 +849,13 @@ static void sdhci_prepare_data(struct sd
@@ -853,11 +849,13 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd)
if (host->version >= SDHCI_SPEC_200) {
ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
ctrl &= ~SDHCI_CTRL_DMA_MASK;
@ -8071,7 +8205,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
}
@@ -909,7 +907,8 @@ static void sdhci_set_transfer_mode(stru
@@ -909,7 +907,8 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host,
if (data->flags & MMC_DATA_READ)
mode |= SDHCI_TRNS_READ;
@ -8081,7 +8215,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
mode |= SDHCI_TRNS_DMA;
sdhci_writew(host, mode, SDHCI_TRANSFER_MODE);
@@ -925,13 +924,16 @@ static void sdhci_finish_data(struct sdh
@@ -925,13 +924,16 @@ static void sdhci_finish_data(struct sdhci_host *host)
host->data = NULL;
if (host->flags & SDHCI_REQ_USE_DMA) {
@ -8102,7 +8236,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
}
/*
@@ -984,6 +986,12 @@ static void sdhci_send_command(struct sd
@@ -984,6 +986,12 @@ static void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
if ((cmd->data != NULL) || (cmd->flags & MMC_RSP_BUSY))
mask |= SDHCI_DATA_INHIBIT;
@ -8115,7 +8249,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
/* We shouldn't wait for data inihibit for stop commands, even
though they might use busy signaling */
if (host->mrq->data && (cmd == host->mrq->data->stop))
@@ -1001,10 +1009,16 @@ static void sdhci_send_command(struct sd
@@ -1001,10 +1009,16 @@ static void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
timeout--;
mdelay(1);
}
@ -8132,7 +8266,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
sdhci_prepare_data(host, cmd);
@@ -1470,7 +1484,7 @@ static void sdhci_do_set_ios(struct sdhc
@@ -1470,7 +1484,7 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
else
ctrl &= ~SDHCI_CTRL_HISPD;
@ -8141,7 +8275,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
u16 clk, ctrl_2;
/* In case of UHS-I modes, set High Speed Enable */
@@ -2164,7 +2178,7 @@ static void sdhci_timeout_timer(unsigned
@@ -2164,7 +2178,7 @@ static void sdhci_timeout_timer(unsigned long data)
if (host->mrq) {
pr_err("%s: Timeout waiting for hardware "
@ -8150,7 +8284,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
sdhci_dumpregs(host);
if (host->data) {
@@ -2209,10 +2223,13 @@ static void sdhci_cmd_irq(struct sdhci_h
@@ -2209,10 +2223,13 @@ static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask)
BUG_ON(intmask == 0);
if (!host->cmd) {
@ -8164,7 +8298,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
return;
}
@@ -2282,6 +2299,19 @@ static void sdhci_show_adma_error(struct
@@ -2282,6 +2299,19 @@ static void sdhci_show_adma_error(struct sdhci_host *host)
static void sdhci_show_adma_error(struct sdhci_host *host) { }
#endif
@ -8184,7 +8318,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
{
u32 command;
@@ -2311,23 +2341,39 @@ static void sdhci_data_irq(struct sdhci_
@@ -2311,23 +2341,39 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
}
}
@ -8228,7 +8362,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
pr_err("%s: ADMA error\n", mmc_hostname(host->mmc));
sdhci_show_adma_error(host);
host->data->error = -EIO;
@@ -2335,11 +2381,18 @@ static void sdhci_data_irq(struct sdhci_
@@ -2335,11 +2381,18 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
host->ops->adma_workaround(host, intmask);
}
@ -8251,7 +8385,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
/*
* We currently don't do anything fancy with DMA
@@ -2368,18 +2421,8 @@ static void sdhci_data_irq(struct sdhci_
@@ -2368,18 +2421,8 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
sdhci_writel(host, dmanow, SDHCI_DMA_ADDRESS);
}
@ -8310,7 +8444,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
if (intmask & SDHCI_INT_BUS_POWER) {
pr_err("%s: Card is consuming too much power!\n",
@@ -2569,7 +2634,8 @@ int sdhci_resume_host(struct sdhci_host
@@ -2569,7 +2634,8 @@ int sdhci_resume_host(struct sdhci_host *host)
{
int ret;
@ -8320,7 +8454,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
if (host->ops->enable_dma)
host->ops->enable_dma(host);
}
@@ -2785,14 +2851,16 @@ int sdhci_add_host(struct sdhci_host *ho
@@ -2785,14 +2851,16 @@ int sdhci_add_host(struct sdhci_host *host)
host->flags &= ~SDHCI_USE_ADMA;
}
@ -8339,7 +8473,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
}
}
}
@@ -3080,6 +3148,12 @@ int sdhci_add_host(struct sdhci_host *ho
@@ -3080,6 +3148,12 @@ int sdhci_add_host(struct sdhci_host *host)
SDHCI_MAX_CURRENT_MULTIPLIER;
}
@ -8352,7 +8486,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
mmc->ocr_avail = ocr_avail;
mmc->ocr_avail_sdio = ocr_avail;
if (host->ocr_avail_sdio)
@@ -3210,6 +3284,7 @@ int sdhci_add_host(struct sdhci_host *ho
@@ -3210,6 +3284,7 @@ int sdhci_add_host(struct sdhci_host *host)
pr_info("%s: SDHCI controller on %s [%s] using %s\n",
mmc_hostname(mmc), host->hw_name, dev_name(mmc_dev(mmc)),
@ -8360,6 +8494,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
(host->flags & SDHCI_USE_ADMA) ? "ADMA" :
(host->flags & SDHCI_USE_SDMA) ? "DMA" : "PIO");
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 379e09d..f90574e 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -289,6 +289,20 @@ struct sdhci_ops {
@ -8383,7 +8519,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
void (*hw_reset)(struct sdhci_host *host);
void (*platform_suspend)(struct sdhci_host *host);
void (*platform_resume)(struct sdhci_host *host);
@@ -399,6 +413,29 @@ extern int sdhci_resume_host(struct sdhc
@@ -399,6 +413,29 @@ extern int sdhci_resume_host(struct sdhci_host *host);
extern void sdhci_enable_irq_wakeups(struct sdhci_host *host);
#endif
@ -8413,6 +8549,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
#ifdef CONFIG_PM_RUNTIME
extern int sdhci_runtime_suspend_host(struct sdhci_host *host);
extern int sdhci_runtime_resume_host(struct sdhci_host *host);
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h
index b838ffc..f3a39c1 100644
--- a/include/linux/mmc/sdhci.h
+++ b/include/linux/mmc/sdhci.h
@@ -128,6 +128,7 @@ struct sdhci_host {
@ -8431,3 +8569,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
struct mmc_data *data; /* Current data request */
unsigned int data_early:1; /* Data finished before cmd */
--
1.9.1

View file

@ -1,7 +1,7 @@
From ee24f1f0affd88d3e101a7e66c5ebfd8e582b868 Mon Sep 17 00:00:00 2001
From 344d6f31638c96846ac26f40a74ee1cc495f421e Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 1 May 2013 19:46:17 +0100
Subject: [PATCH 002/174] Add dwc_otg driver
Subject: [PATCH 002/196] Add dwc_otg driver
Signed-off-by: popcornmix <popcornmix@gmail.com>
---
@ -129,6 +129,8 @@ Signed-off-by: popcornmix <popcornmix@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 c41feba..0b5c606 100644
--- a/drivers/usb/Makefile
+++ b/drivers/usb/Makefile
@@ -23,6 +23,7 @@ obj-$(CONFIG_USB_U132_HCD) += host/
@ -139,9 +141,11 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
obj-$(CONFIG_USB_IMX21_HCD) += host/
obj-$(CONFIG_USB_FSL_MPH_DR_OF) += host/
diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c
index acbfeb0..7d675c8 100644
--- a/drivers/usb/core/generic.c
+++ b/drivers/usb/core/generic.c
@@ -152,6 +152,7 @@ int usb_choose_configuration(struct usb_
@@ -152,6 +152,7 @@ int usb_choose_configuration(struct usb_device *udev)
dev_warn(&udev->dev,
"no configuration chosen from %d choice%s\n",
num_configs, plural(num_configs));
@ -149,6 +153,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
}
return i;
}
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 444d30e..3ff77fa 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -1875,6 +1875,85 @@ free_interfaces:
@ -237,6 +243,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
/* 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 e8cdce5..3a0da17 100644
--- a/drivers/usb/core/otg_whitelist.h
+++ b/drivers/usb/core/otg_whitelist.h
@@ -19,33 +19,82 @@
@ -328,20 +336,14 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
static int is_targeted(struct usb_device *dev)
{
struct usb_device_id *id = whitelist_table;
@@ -55,58 +104,83 @@ static int is_targeted(struct usb_device
@@ -55,58 +104,83 @@ static int is_targeted(struct usb_device *dev)
return 1;
/* HNP test device is _never_ targeted (see OTG spec 6.6.6) */
- if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1a0a &&
- le16_to_cpu(dev->descriptor.idProduct) == 0xbadd))
- return 0;
+ if (dev->descriptor.idVendor == 0x1a0a &&
+ dev->descriptor.idProduct == 0xbadd) {
+ return 0;
+ } else if (!enable_whitelist) {
+ return 1;
+ } else {
-
- /* NOTE: can't use usb_match_id() since interface caches
- * aren't set up yet. this is cut/paste from that code.
- */
@ -375,6 +377,13 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
- (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol))
- continue;
+ if (dev->descriptor.idVendor == 0x1a0a &&
+ dev->descriptor.idProduct == 0xbadd) {
+ return 0;
+ } else if (!enable_whitelist) {
+ return 1;
+ } else {
+
+#ifdef DEBUG
+ dev_dbg(&dev->dev, "device V:%04x P:%04x DC:%04x SC:%04x PR:%04x \n",
+ dev->descriptor.idVendor,
@ -454,6 +463,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
#endif
}
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 @@
@ -4133,6 +4145,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ kref_put(&fsg->ref, fsg_release);
+}
+module_exit(fsg_cleanup);
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 344d5e2..0937bde 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -663,6 +663,19 @@ config USB_HWA_HCD
@ -4155,6 +4169,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
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 4fb73c1..76d97de 100644
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
@@ -47,6 +47,8 @@ obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o
@ -4166,6 +4182,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
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..63e3485
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/Makefile
@@ -0,0 +1,58 @@
@ -4227,6 +4246,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+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 @@
@ -4247,6 +4269,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..961df3f
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/Makefile.linux
@@ -0,0 +1,49 @@
@ -4299,6 +4324,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+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 @@
@ -4476,6 +4504,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..605b9dab
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/doc/doxygen.cfg
@@ -0,0 +1,270 @@
@ -4749,6 +4780,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+# 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..613c901
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_cc.c
@@ -0,0 +1,532 @@
@ -5284,6 +5318,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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..6b2bbaf
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_cc.h
@@ -0,0 +1,225 @@
@ -5512,6 +5549,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#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 @@
@ -6823,6 +6863,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+{
+ 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..f00a9ff
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
@@ -0,0 +1,1421 @@
@ -8247,6 +8290,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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 @@
@ -9525,6 +9571,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+{
+ 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 @@
@ -9836,6 +9885,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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 @@
@ -9950,6 +10002,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..997f753
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_dh.c
@@ -0,0 +1,291 @@
@ -10244,6 +10299,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -10353,6 +10411,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -10950,6 +11011,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -11198,6 +11262,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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..b7c456b
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_modpow.c
@@ -0,0 +1,636 @@
@ -11837,6 +11904,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -11874,6 +11944,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -12196,6 +12269,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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 @@
@ -12321,6 +12397,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..308ddd5
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_os.h
@@ -0,0 +1,1260 @@
@ -13584,6 +13663,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -14533,6 +14615,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..c4c6e4e
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/Makefile
@@ -0,0 +1,80 @@
@ -14616,6 +14701,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..537c676
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/doc/doxygen.cfg
@@ -0,0 +1,224 @@
@ -14843,6 +14931,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+# 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..530ac8b
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dummy_audio.c
@@ -0,0 +1,1575 @@
@ -16421,6 +16512,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..be56af4
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_cfi_common.h
@@ -0,0 +1,142 @@
@ -16566,6 +16660,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..0877472
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_adp.c
@@ -0,0 +1,854 @@
@ -17423,6 +17520,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..d8c3f85
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_adp.h
@@ -0,0 +1,80 @@
@ -17506,6 +17606,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..95eb7f8
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
@@ -0,0 +1,1210 @@
@ -18719,6 +18822,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..fc14d94
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_attr.h
@@ -0,0 +1,89 @@
@ -18811,6 +18917,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..a9878d6
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cfi.c
@@ -0,0 +1,1876 @@
@ -20690,6 +20799,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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..cbccdab
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cfi.h
@@ -0,0 +1,320 @@
@ -21013,6 +21125,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..9b67537
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil.c
@@ -0,0 +1,7151 @@
@ -28167,6 +28282,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..d367cd1
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil.h
@@ -0,0 +1,1464 @@
@ -29634,6 +29752,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+//////////////////////////////////////////////////////////////////////
+
+#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..21804c4
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
@@ -0,0 +1,1563 @@
@ -31200,6 +31321,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+ 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..10b68c4
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_core_if.h
@@ -0,0 +1,705 @@
@ -31908,6 +32032,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+/** @} */
+
+#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..8681aa9
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
@@ -0,0 +1,116 @@
@ -32027,6 +32154,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#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..e7f99e1
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
@@ -0,0 +1,1700 @@
@ -33730,6 +33860,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ </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..8a0e41b
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.h
@@ -0,0 +1,86 @@
@ -33819,6 +33952,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..434d0c4
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -0,0 +1,3473 @@
@ -37295,6 +37431,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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..8075595
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -0,0 +1,824 @@
@ -38122,6 +38261,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..d0d5fa1
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
@@ -0,0 +1,1133 @@
@ -39258,6 +39400,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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..b3dc806
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
@@ -0,0 +1,412 @@
@ -39673,6 +39818,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#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..63c1b55
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -0,0 +1,2106 @@
@ -41782,6 +41930,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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..4a985a6
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -0,0 +1,893 @@
@ -42678,6 +42829,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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..08c1669
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -0,0 +1,922 @@
@ -43603,6 +43757,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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..a7e9076
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
@@ -0,0 +1,185 @@
@ -43791,6 +43948,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+
+#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..c97d65c
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd.c
@@ -0,0 +1,2708 @@
@ -46502,6 +46662,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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 @@
@ -46771,6 +46934,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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 @@
@ -47134,6 +47300,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..27061d3
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
@@ -0,0 +1,5147 @@
@ -52284,6 +52453,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+}
+
+#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..a591d89
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
@@ -0,0 +1,1358 @@
@ -53645,6 +53817,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..0572642
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_regs.h
@@ -0,0 +1,2550 @@
@ -56198,6 +56373,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+} 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 @@
@ -56217,6 +56395,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..233b04a
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm
@@ -0,0 +1,337 @@
@ -56557,6 +56738,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+);
+
+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..e887dce
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/test_mod_param.pl
@@ -0,0 +1,133 @@
@ -56693,6 +56877,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+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..abcf284
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/test_sysfs.pl
@@ -0,0 +1,193 @@
@ -56889,3 +57076,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+test_main();
+0;
--
1.9.1

View file

@ -1,7 +1,7 @@
From dd611b3364087514ef5fc59c6106d8924d2a2a30 Mon Sep 17 00:00:00 2001
From 34844524c88edbb0fd75339fd655f6b69b221b0a Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 1 May 2013 19:54:32 +0100
Subject: [PATCH 003/174] bcm2708 watchdog driver
Subject: [PATCH 003/196] bcm2708 watchdog driver
Signed-off-by: popcornmix <popcornmix@gmail.com>
---
@ -11,6 +11,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
3 files changed, 392 insertions(+)
create mode 100644 drivers/watchdog/bcm2708_wdog.c
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index e89fc31..60ca320 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -391,6 +391,12 @@ config RETU_WATCHDOG
@ -26,9 +28,11 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
# AVR32 Architecture
config AT32AP700X_WDT
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index a300b94..0e357711 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -54,6 +54,7 @@ obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_
@@ -54,6 +54,7 @@ obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o
obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o
obj-$(CONFIG_UX500_WATCHDOG) += ux500_wdt.o
obj-$(CONFIG_RETU_WATCHDOG) += retu_wdt.o
@ -36,6 +40,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
# AVR32 Architecture
obj-$(CONFIG_AT32AP700X_WDT) += at32ap700x_wdt.o
diff --git a/drivers/watchdog/bcm2708_wdog.c b/drivers/watchdog/bcm2708_wdog.c
new file mode 100644
index 0000000..dd33c35
--- /dev/null
+++ b/drivers/watchdog/bcm2708_wdog.c
@@ -0,0 +1,385 @@
@ -424,3 +431,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+MODULE_ALIAS_MISCDEV(TEMP_MINOR);
+MODULE_LICENSE("GPL");
+
--
1.9.1

View file

@ -1,7 +1,7 @@
From c9fbd3932a41a14af51d04fb6f43c45d60e66f8c Mon Sep 17 00:00:00 2001
From db56ac21f4312a9cf97d4f9f35ff2593b5b81f7d Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 1 May 2013 19:55:09 +0100
Subject: [PATCH 004/174] bcm2708 framebuffer driver
Subject: [PATCH 004/196] bcm2708 framebuffer driver
Signed-off-by: popcornmix <popcornmix@gmail.com>
---
@ -12,6 +12,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
4 files changed, 1387 insertions(+), 1602 deletions(-)
create mode 100644 drivers/video/bcm2708_fb.c
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 2e937bd..9f4c58f 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -310,6 +310,20 @@ config FB_PM2_FIFO_DISCONNECT
@ -35,9 +37,11 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
config FB_ARMCLCD
tristate "ARM PrimeCell PL110 support"
depends on FB && ARM && ARM_AMBA
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index e8bae8d..032f386 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -100,6 +100,7 @@ obj-$(CONFIG_FB_PVR2) += pvr
@@ -100,6 +100,7 @@ obj-$(CONFIG_FB_PVR2) += pvr2fb.o
obj-$(CONFIG_FB_VOODOO1) += sstfb.o
obj-$(CONFIG_FB_ARMCLCD) += amba-clcd.o
obj-$(CONFIG_FB_GOLDFISH) += goldfishfb.o
@ -45,6 +49,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
obj-$(CONFIG_FB_68328) += 68328fb.o
obj-$(CONFIG_FB_GBE) += gbefb.o
obj-$(CONFIG_FB_CIRRUS) += cirrusfb.o
diff --git a/drivers/video/bcm2708_fb.c b/drivers/video/bcm2708_fb.c
new file mode 100644
index 0000000..08d9238
--- /dev/null
+++ b/drivers/video/bcm2708_fb.c
@@ -0,0 +1,491 @@
@ -539,6 +546,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+MODULE_PARM_DESC(fbwidth, "Width of ARM Framebuffer");
+MODULE_PARM_DESC(fbheight, "Height of ARM Framebuffer");
+MODULE_PARM_DESC(fbdepth, "Bit depth of ARM Framebuffer");
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 @@
@ -3027,3 +3036,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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.9.1

View file

@ -1,7 +1,7 @@
From 2fdd1c3ab61a7a58a3ef3bc5b3d1504202bbc108 Mon Sep 17 00:00:00 2001
From 8edd8c6dbdb6a5288c7116ea6e9dc59705b15a6a Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 2 Jul 2013 23:42:01 +0100
Subject: [PATCH 005/174] bcm2708 vchiq driver
Subject: [PATCH 005/196] bcm2708 vchiq driver
Signed-off-by: popcornmix <popcornmix@gmail.com>
---
@ -71,6 +71,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
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 c002d86..84d3100 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -536,4 +536,6 @@ source "drivers/misc/carma/Kconfig"
@ -80,6 +82,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+source "drivers/misc/vc04_services/Kconfig"
endmenu
+
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index c235d5b..d72aaf2 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -53,3 +53,4 @@ obj-$(CONFIG_INTEL_MEI) += mei/
@ -87,6 +91,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o
obj-$(CONFIG_SRAM) += sram.o
+obj-y += vc04_services/
diff --git a/drivers/misc/vc04_services/Kconfig b/drivers/misc/vc04_services/Kconfig
new file mode 100644
index 0000000..b48a3f3
--- /dev/null
+++ b/drivers/misc/vc04_services/Kconfig
@@ -0,0 +1,10 @@
@ -100,6 +107,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..1aeb20a
--- /dev/null
+++ b/drivers/misc/vc04_services/Makefile
@@ -0,0 +1,18 @@
@ -121,6 +131,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+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 @@
@ -452,6 +465,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -659,6 +675,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..cee5291
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchi/vchi.h
@@ -0,0 +1,373 @@
@ -1035,6 +1054,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -1262,6 +1284,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -1336,6 +1361,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+//#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..9e6c00e
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchi/vchi_common.h
@@ -0,0 +1,163 @@
@ -1502,6 +1530,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+
+#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 @@
@ -1547,6 +1578,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..f87dcbd
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h
@@ -0,0 +1,41 @@
@ -1591,6 +1625,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#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 @@
@ -1636,6 +1673,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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..2b5fa56
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
@@ -0,0 +1,538 @@
@ -2177,6 +2217,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+ 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..f44d4b4
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -0,0 +1,2813 @@
@ -4993,6 +5036,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..75ad4c6
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h
@@ -0,0 +1,212 @@
@ -5208,6 +5254,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+
+#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 @@
@ -5248,6 +5297,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..493c86c
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h
@@ -0,0 +1,60 @@
@ -5311,6 +5363,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#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 @@
@ -5433,6 +5488,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..e4cfdcc
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h
@@ -0,0 +1,51 @@
@ -5487,6 +5545,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#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..f35ed4f
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
@@ -0,0 +1,3824 @@
@ -9314,6 +9375,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..47cdf27
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h
@@ -0,0 +1,706 @@
@ -10023,6 +10087,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ size_t numBytes);
+
+#endif
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..77dd613
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion
@@ -0,0 +1,89 @@
@ -10115,6 +10182,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+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..50359b0
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h
@@ -0,0 +1,188 @@
@ -10306,6 +10376,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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..e248037
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h
@@ -0,0 +1,129 @@
@ -10438,6 +10511,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+#define VCHIQ_IOC_MAX 15
+
+#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 @@
@ -10897,6 +10973,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+ 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 @@
@ -10971,6 +11050,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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 @@
@ -11032,6 +11114,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+} FRAGMENTS_T;
+
+#endif /* VCHIQ_PAGELIST_H */
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c
new file mode 100644
index 0000000..dc3bdda
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c
@@ -0,0 +1,254 @@
@ -11289,6 +11374,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#endif
+
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..f752f8d
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
@@ -0,0 +1,815 @@
@ -12107,6 +12195,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ 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 @@
@ -12261,6 +12352,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+ 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..7c4bf7c
--- /dev/null
+++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h
@@ -0,0 +1,82 @@
@ -12346,6 +12440,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#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 @@
@ -12408,3 +12505,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+{
+ return vchiq_build_time;
+}
--
1.9.1

View file

@ -1,7 +1,7 @@
From ff28398a53a45795382bdb25db71f2a8b3394dab Mon Sep 17 00:00:00 2001
From 15b3faf99f1b16184620bc89be78a5f205acbe92 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 00:31:47 +0100
Subject: [PATCH 006/174] cma: Add vc_cma driver to enable use of CMA
Subject: [PATCH 006/196] cma: Add vc_cma driver to enable use of CMA
Signed-off-by: popcornmix <popcornmix@gmail.com>
---
@ -20,6 +20,8 @@ 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 3bb6fa3..022b91c 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -586,6 +586,8 @@ config DEVPORT
@ -31,6 +33,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
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 7ff1d0d..c594502 100644
--- a/drivers/char/Makefile
+++ b/drivers/char/Makefile
@@ -62,3 +62,6 @@ obj-$(CONFIG_JS_RTC) += js-rtc.o
@ -40,6 +44,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/
+
diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig
new file mode 100644
index 0000000..e23b440
--- /dev/null
+++ b/drivers/char/broadcom/Kconfig
@@ -0,0 +1,16 @@
@ -59,11 +66,17 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+ help
+ Helper for videocore CMA access.
+
diff --git a/drivers/char/broadcom/Makefile b/drivers/char/broadcom/Makefile
new file mode 100644
index 0000000..c8574c8
--- /dev/null
+++ b/drivers/char/broadcom/Makefile
@@ -0,0 +1,2 @@
+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..ae71918
--- /dev/null
+++ b/drivers/char/broadcom/vc_cma/Makefile
@@ -0,0 +1,15 @@
@ -82,6 +95,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+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..fe80887
--- /dev/null
+++ b/drivers/char/broadcom/vc_cma/vc_cma.c
@@ -0,0 +1,1143 @@
@ -1228,6 +1244,8 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+module_exit(vc_cma_exit);
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Broadcom Corporation");
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index d72aaf2..24b40c3 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -53,4 +53,4 @@ obj-$(CONFIG_INTEL_MEI) += mei/
@ -1236,6 +1254,9 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
obj-$(CONFIG_SRAM) += sram.o
-obj-y += vc04_services/
+obj-$(CONFIG_BCM2708_VCHIQ) += vc04_services/
diff --git a/include/linux/broadcom/vc_cma.h b/include/linux/broadcom/vc_cma.h
new file mode 100644
index 0000000..bdc9d79
--- /dev/null
+++ b/include/linux/broadcom/vc_cma.h
@@ -0,0 +1,30 @@
@ -1269,3 +1290,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
+
+#endif /* VC_CMA_H */
+
--
1.9.1

View file

@ -1,7 +1,7 @@
From 7868fb252f8846b21a00b9a42a8bfa10f1c969ee Mon Sep 17 00:00:00 2001
From f99826368eeb17ddaf6b9459f577356c0387f365 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 26 Mar 2012 22:15:50 +0100
Subject: [PATCH 007/174] bcm2708: alsa sound driver
Subject: [PATCH 007/196] bcm2708: alsa sound driver
Signed-off-by: popcornmix <popcornmix@gmail.com>
---
@ -24,6 +24,8 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
create mode 100755 sound/arm/bcm2835.h
create mode 100644 sound/arm/vc_vchi_audioserv_defs.h
diff --git a/arch/arm/configs/bcmrpi_cutdown_defconfig b/arch/arm/configs/bcmrpi_cutdown_defconfig
index 74f2dc9..e519412 100644
--- a/arch/arm/configs/bcmrpi_cutdown_defconfig
+++ b/arch/arm/configs/bcmrpi_cutdown_defconfig
@@ -208,6 +208,26 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
@ -53,6 +55,8 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
CONFIG_HID_PID=y
CONFIG_USB_HIDDEV=y
CONFIG_HID_A4TECH=m
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 339aabf..df947e5 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -225,6 +225,26 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
@ -82,9 +86,11 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
CONFIG_HID_PID=y
CONFIG_USB_HIDDEV=y
CONFIG_HID_A4TECH=m
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 64a2783..67f3608 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -424,6 +424,16 @@ struct platform_device bcm2708_powerman_
@@ -424,6 +424,16 @@ struct platform_device bcm2708_powerman_device = {
.coherent_dma_mask = 0xffffffffUL},
};
@ -110,6 +116,8 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
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
@ -125,9 +133,11 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
+
endif # SND_ARM
diff --git a/sound/arm/Makefile b/sound/arm/Makefile
index 8c0c851..181cb57 100644
--- a/sound/arm/Makefile
+++ b/sound/arm/Makefile
@@ -14,3 +14,9 @@ snd-pxa2xx-lib-$(CONFIG_SND_PXA2XX_LIB_A
@@ -14,3 +14,9 @@ snd-pxa2xx-lib-$(CONFIG_SND_PXA2XX_LIB_AC97) += pxa2xx-ac97-lib.o
obj-$(CONFIG_SND_PXA2XX_AC97) += snd-pxa2xx-ac97.o
snd-pxa2xx-ac97-objs := pxa2xx-ac97.o
@ -137,6 +147,9 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
+
+EXTRA_CFLAGS += -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..c3e0f7a
--- /dev/null
+++ b/sound/arm/bcm2835-ctl.c
@@ -0,0 +1,200 @@
@ -340,6 +353,9 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
+ }
+ return 0;
+}
diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c
new file mode 100755
index 0000000..4206b7e
--- /dev/null
+++ b/sound/arm/bcm2835-pcm.c
@@ -0,0 +1,409 @@
@ -752,6 +768,9 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
+
+ return 0;
+}
diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c
new file mode 100755
index 0000000..9ecb2d6
--- /dev/null
+++ b/sound/arm/bcm2835-vchiq.c
@@ -0,0 +1,844 @@
@ -1599,6 +1618,9 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
+
+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..e5ac894
--- /dev/null
+++ b/sound/arm/bcm2835.c
@@ -0,0 +1,413 @@
@ -2015,6 +2037,9 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
+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..b966e28
--- /dev/null
+++ b/sound/arm/bcm2835.h
@@ -0,0 +1,155 @@
@ -2173,6 +2198,9 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
+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 @@
@ -2292,3 +2320,6 @@ Subject: [PATCH 007/174] bcm2708: alsa sound driver
+} VC_AUDIO_MSG_T;
+
+#endif // _VC_AUDIO_DEFS_H_
--
1.9.1

View file

@ -1,13 +1,15 @@
From bd5ea6c71eb31d1c65f718a2938ea9a4272c8b8e Mon Sep 17 00:00:00 2001
From 6bcf2da9cea3a1565a87f848f4e17bc634bb160c Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 26 Mar 2013 17:26:38 +0000
Subject: [PATCH 008/174] Allow mac address to be set in smsc95xx
Subject: [PATCH 008/196] Allow mac address to be set in smsc95xx
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 9375b8c..f024562 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -61,6 +61,7 @@
@ -29,7 +31,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data, int in_pm)
{
@@ -765,8 +770,59 @@ static int smsc95xx_ioctl(struct net_dev
@@ -765,8 +770,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL);
}
@ -89,3 +91,6 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
/* try reading mac address from EEPROM */
if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
dev->net->dev_addr) == 0) {
--
1.9.1

View file

@ -1,15 +1,17 @@
From f7ea3b11c29f79b86cbb2e25fa4cd1598a4350e3 Mon Sep 17 00:00:00 2001
From ea8076fd5bc2996fbc04cc54178bb1f113ee0ccc Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 8 May 2012 23:12:13 +0100
Subject: [PATCH 009/174] possible fix for sdcard missing status. Thank naren
Subject: [PATCH 009/196] possible fix for sdcard missing status. Thank naren
---
drivers/mmc/host/sdhci-bcm2708.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index e79723d..a405114 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -1173,6 +1173,14 @@ static unsigned int sdhci_bcm2708_uhs_br
@@ -1173,6 +1173,14 @@ static unsigned int sdhci_bcm2708_uhs_broken(struct sdhci_host *host)
return 1;
}
@ -24,7 +26,7 @@ Subject: [PATCH 009/174] possible fix for sdcard missing status. Thank naren
/***************************************************************************** \
* *
* Device ops *
@@ -1206,6 +1214,7 @@ static struct sdhci_ops sdhci_bcm2708_op
@@ -1206,6 +1214,7 @@ static struct sdhci_ops sdhci_bcm2708_ops = {
.spurious_crc_acmd51 = sdhci_bcm2708_quirk_spurious_crc,
.voltage_broken = sdhci_bcm2708_quirk_voltage_broken,
.uhs_broken = sdhci_bcm2708_uhs_broken,
@ -32,3 +34,6 @@ Subject: [PATCH 009/174] possible fix for sdcard missing status. Thank naren
};
/*****************************************************************************\
--
1.9.1

View file

@ -1,15 +1,17 @@
From 7063eab83522ea1f24934b971418bfdd4c5578f1 Mon Sep 17 00:00:00 2001
From c655ceea69b95ccf2cc486a83048e41c3f664d1f Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Thu, 17 May 2012 14:44:19 +0100
Subject: [PATCH 010/174] sdcard patch improvements from naren
Subject: [PATCH 010/196] sdcard patch improvements from naren
---
drivers/mmc/host/sdhci-bcm2708.c | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index a405114..ae8edf7 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -886,8 +886,7 @@ static void sdhci_bcm2708_dma_complete_i
@@ -886,8 +886,7 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
We get CRC and DEND errors unless we wait for
the SD controller to finish reading/writing to the card. */
u32 state_mask;
@ -19,7 +21,7 @@ Subject: [PATCH 010/174] sdcard patch improvements from naren
DBG("PDMA over - sync card\n");
if (data->flags & MMC_DATA_READ)
@@ -895,17 +894,12 @@ static void sdhci_bcm2708_dma_complete_i
@@ -895,17 +894,12 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
else
state_mask = SDHCI_DOING_WRITE;
@ -42,7 +44,7 @@ Subject: [PATCH 010/174] sdcard patch improvements from naren
if (timeout <= 0)
printk(KERN_ERR"%s: final %s to SD card still "
"running\n",
@@ -1175,10 +1169,7 @@ static unsigned int sdhci_bcm2708_uhs_br
@@ -1175,10 +1169,7 @@ static unsigned int sdhci_bcm2708_uhs_broken(struct sdhci_host *host)
static unsigned int sdhci_bcm2708_missing_status(struct sdhci_host *host)
{
@ -54,3 +56,6 @@ Subject: [PATCH 010/174] sdcard patch improvements from naren
}
/***************************************************************************** \
--
1.9.1

View file

@ -1,7 +1,7 @@
From e38d3d05747f6877a2ad1a7af1ac26e6a48a8be3 Mon Sep 17 00:00:00 2001
From 07947cfde701f7ba29b06574e9533bd6459da8ad Mon Sep 17 00:00:00 2001
From: Grigori Goronzy <greg@blackbox>
Date: Mon, 4 Jun 2012 04:27:48 +0200
Subject: [PATCH 011/174] sdhci-bcm2708: speed up DMA sync
Subject: [PATCH 011/196] sdhci-bcm2708: speed up DMA sync
Experiments show that it doesn't really take that long to sync, so we
can reduce the poll interval slightly. Might improve performance a bit.
@ -9,9 +9,11 @@ can reduce the poll interval slightly. Might improve performance a bit.
drivers/mmc/host/sdhci-bcm2708.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index ae8edf7..a6bdc25 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -897,7 +897,7 @@ static void sdhci_bcm2708_dma_complete_i
@@ -897,7 +897,7 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
while (0 != (sdhci_bcm2708_raw_readl(host, SDHCI_PRESENT_STATE)
& state_mask) && --timeout > 0)
{
@ -20,3 +22,6 @@ can reduce the poll interval slightly. Might improve performance a bit.
continue;
}
if (timeout <= 0)
--
1.9.1

View file

@ -1,7 +1,7 @@
From 3f65aaaabc3ddc09bacf06bb608f8bab5671fb18 Mon Sep 17 00:00:00 2001
From d63cca1d57881d931236d101fe16fd249d91b060 Mon Sep 17 00:00:00 2001
From: Grigori Goronzy <greg@blackbox>
Date: Mon, 11 Jun 2012 18:52:04 +0200
Subject: [PATCH 012/174] sdhci-bcm2708: remove custom clock handling
Subject: [PATCH 012/196] sdhci-bcm2708: remove custom clock handling
The custom clock handling code is redundant and buggy. The MMC/SDHCI
subsystem does a better job than it, so remove it for good.
@ -9,9 +9,11 @@ subsystem does a better job than it, so remove it for good.
drivers/mmc/host/sdhci-bcm2708.c | 65 +---------------------------------------
1 file changed, 1 insertion(+), 64 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index a6bdc25..0ed4d85 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -353,68 +353,9 @@ void sdhci_bcm2708_writeb(struct sdhci_h
@@ -353,68 +353,9 @@ void sdhci_bcm2708_writeb(struct sdhci_host *host, u8 val, int reg)
static unsigned int sdhci_bcm2708_get_max_clock(struct sdhci_host *host)
{
@ -81,7 +83,7 @@ subsystem does a better job than it, so remove it for good.
/*****************************************************************************\
* *
* DMA Operation *
@@ -1189,11 +1130,7 @@ static struct sdhci_ops sdhci_bcm2708_op
@@ -1189,11 +1130,7 @@ static struct sdhci_ops sdhci_bcm2708_ops = {
#else
#error The BCM2708 SDHCI driver needs CONFIG_MMC_SDHCI_IO_ACCESSORS to be set
#endif
@ -93,3 +95,6 @@ subsystem does a better job than it, so remove it for good.
#ifdef CONFIG_MMC_SDHCI_BCM2708_DMA
// Platform DMA operations
--
1.9.1

View file

@ -1,7 +1,7 @@
From b567bbb9b16e9c860c8d7a4f2c6cf44c66533dfa Mon Sep 17 00:00:00 2001
From fa0e27879ec0fc9034eca320e4055539a1b97797 Mon Sep 17 00:00:00 2001
From: Grigori Goronzy <greg@blackbox>
Date: Mon, 11 Jun 2012 18:53:59 +0200
Subject: [PATCH 013/174] sdhci-bcm2708: add additional quirks
Subject: [PATCH 013/196] sdhci-bcm2708: add additional quirks
Some additional quirks are needed for correct operation.
There's no SDHCI capabilities register documented, and it always reads
@ -12,9 +12,11 @@ high-speed mode, so add it as well.
drivers/mmc/host/sdhci-bcm2708.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 0ed4d85..3001836 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -1189,7 +1189,9 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1189,7 +1189,9 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
host->quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION |
SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
SDHCI_QUIRK_BROKEN_TIMEOUT_VAL |
@ -25,3 +27,6 @@ high-speed mode, so add it as well.
#ifdef CONFIG_MMC_SDHCI_BCM2708_DMA
host->flags = SDHCI_USE_PLATDMA;
#endif
--
1.9.1

View file

@ -1,7 +1,7 @@
From f779191cd42376e2b1f555be1b2c486dd99b2fef Mon Sep 17 00:00:00 2001
From 06d314090d1c837d5f2c42c9686c8e8fa7db7370 Mon Sep 17 00:00:00 2001
From: Grigori Goronzy <greg@blackbox>
Date: Mon, 11 Jun 2012 18:57:13 +0200
Subject: [PATCH 014/174] sdhci-bcm2708: add allow_highspeed parameter
Subject: [PATCH 014/196] sdhci-bcm2708: add allow_highspeed parameter
Add a parameter to disable high-speed mode for the few cards that
still might have problems. High-speed mode is enabled by default.
@ -9,9 +9,11 @@ still might have problems. High-speed mode is enabled by default.
drivers/mmc/host/sdhci-bcm2708.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 3001836..c64de21 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -129,6 +129,8 @@ static inline unsigned long int since_ns
@@ -129,6 +129,8 @@ static inline unsigned long int since_ns(hptime_t t)
return (unsigned long)((hptime() - t) * HPTIME_CLK_NS);
}
@ -20,7 +22,7 @@ still might have problems. High-speed mode is enabled by default.
#if 0
static void hptime_test(void)
{
@@ -1254,7 +1256,8 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1254,7 +1256,8 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
host_priv->dma_chan, host_priv->dma_chan_base,
host_priv->dma_irq);
@ -43,3 +45,6 @@ still might have problems. High-speed mode is enabled by default.
+MODULE_PARM_DESC(allow_highspeed, "Allow high speed transfers modes");
+
--
1.9.1

View file

@ -1,7 +1,7 @@
From 55ed27d2c44fcf2e808ba26cc2a1c9c4041500da Mon Sep 17 00:00:00 2001
From 4e5732952c3c2f14058bd7dbcba67d911d77bd39 Mon Sep 17 00:00:00 2001
From: Grigori Goronzy <greg@blackbox>
Date: Mon, 11 Jun 2012 18:58:40 +0200
Subject: [PATCH 015/174] sdhci-bcm2708: assume 50 MHz eMMC clock
Subject: [PATCH 015/196] sdhci-bcm2708: assume 50 MHz eMMC clock
80 MHz clock isnt't suited well to be dividable to get SD clocks of 25
MHz (default mode) or 50 MHz (high speed mode). 50 MHz are perfect to
@ -10,6 +10,8 @@ drive the SD interface at ideal frequencies.
drivers/mmc/host/sdhci-bcm2708.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index c64de21..d174938 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -73,7 +73,7 @@
@ -21,3 +23,6 @@ drive the SD interface at ideal frequencies.
/*****************************************************************************\
* *
--
1.9.1

View file

@ -1,16 +1,18 @@
From 9227615100c139c48fbbf39312b38c4430eac00d Mon Sep 17 00:00:00 2001
From f3cbdb41b8e7194b03523eceed5dd8b488f93909 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 16 Jun 2012 22:31:55 +0100
Subject: [PATCH 016/174] Allow emmc clock to be specified as command line
Subject: [PATCH 016/196] Allow emmc clock to be specified as command line
parameter
---
drivers/mmc/host/sdhci-bcm2708.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index d174938..0ee983c 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -130,6 +130,7 @@ static inline unsigned long int since_ns
@@ -130,6 +130,7 @@ static inline unsigned long int since_ns(hptime_t t)
}
static bool allow_highspeed = 1;
@ -18,7 +20,7 @@ Subject: [PATCH 016/174] Allow emmc clock to be specified as command line
#if 0
static void hptime_test(void)
@@ -355,7 +356,7 @@ void sdhci_bcm2708_writeb(struct sdhci_h
@@ -355,7 +356,7 @@ void sdhci_bcm2708_writeb(struct sdhci_host *host, u8 val, int reg)
static unsigned int sdhci_bcm2708_get_max_clock(struct sdhci_host *host)
{
@ -42,3 +44,6 @@ Subject: [PATCH 016/174] Allow emmc clock to be specified as command line
+MODULE_PARM_DESC(emmc_clock_freq, "Specify the speed of emmc clock");
+
--
1.9.1

View file

@ -1,7 +1,7 @@
From a6544a62be8711e727a0d774b55c5edeec12e531 Mon Sep 17 00:00:00 2001
From 93ad4d743dfa8a5f6bb1d7abf739c7149012099b Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 16 Jun 2012 22:35:38 +0100
Subject: [PATCH 017/174] sdhci-bcm2708: raise DMA sync timeout
Subject: [PATCH 017/196] sdhci-bcm2708: raise DMA sync timeout
Commit d64b84c by accident reduced the maximum overall DMA sync
timeout. The maximum overall timeout was reduced from 100ms to 30ms,
@ -14,9 +14,11 @@ enough for most cards.
drivers/mmc/host/sdhci-bcm2708.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 0ee983c..b0cdd7d 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -830,7 +830,7 @@ static void sdhci_bcm2708_dma_complete_i
@@ -830,7 +830,7 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
We get CRC and DEND errors unless we wait for
the SD controller to finish reading/writing to the card. */
u32 state_mask;
@ -25,3 +27,6 @@ enough for most cards.
DBG("PDMA over - sync card\n");
if (data->flags & MMC_DATA_READ)
--
1.9.1

View file

@ -1,15 +1,17 @@
From a56370b5a103f3949c5ed2997a971e1949a15132 Mon Sep 17 00:00:00 2001
From 3755210aaea18a4531069911f36a4771339565c4 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 22 Jun 2012 12:57:42 +0100
Subject: [PATCH 018/174] Use ndelay rather than udelay. Thanks lb
Subject: [PATCH 018/196] Use ndelay rather than udelay. Thanks lb
---
drivers/mmc/host/sdhci-bcm2708.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index b0cdd7d..7bba950 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -249,14 +249,14 @@ static void sdhci_bcm2708_raw_writel(str
@@ -249,14 +249,14 @@ static void sdhci_bcm2708_raw_writel(struct sdhci_host *host, u32 val, int reg)
if (now == last_write_hpt || now == last_write_hpt+1) {
/* we can't guarantee any significant time has
* passed - we'll have to wait anyway ! */
@ -26,7 +28,7 @@ Subject: [PATCH 018/174] Use ndelay rather than udelay. Thanks lb
}
last_write_hpt = now;
}
@@ -272,13 +272,13 @@ static void sdhci_bcm2708_raw_writel(str
@@ -272,13 +272,13 @@ static void sdhci_bcm2708_raw_writel(struct sdhci_host *host, u32 val, int reg)
ier &= ~SDHCI_INT_DATA_TIMEOUT;
writel(ier, host->ioaddr + SDHCI_SIGNAL_ENABLE);
timeout_disabled = true;
@ -42,3 +44,6 @@ Subject: [PATCH 018/174] Use ndelay rather than udelay. Thanks lb
}
#endif
writel(val, host->ioaddr + reg);
--
1.9.1

View file

@ -1,7 +1,7 @@
From 5a3b6667524d9164140077cfadf61b165f0950ec Mon Sep 17 00:00:00 2001
From eb8655fe20ef40189e9cda1441d488c5a23c89f2 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 00:41:10 +0100
Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
Subject: [PATCH 019/196] Backport of Chris Boot's i2c and spi drivers.
---
arch/arm/configs/bcmrpi_cutdown_defconfig | 10 +
@ -19,6 +19,8 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
create mode 100644 drivers/i2c/busses/i2c-bcm2708.c
create mode 100644 drivers/spi/spi-bcm2708.c
diff --git a/arch/arm/configs/bcmrpi_cutdown_defconfig b/arch/arm/configs/bcmrpi_cutdown_defconfig
index e519412..a61a915 100644
--- a/arch/arm/configs/bcmrpi_cutdown_defconfig
+++ b/arch/arm/configs/bcmrpi_cutdown_defconfig
@@ -492,3 +492,13 @@ CONFIG_CRYPTO_DEFLATE=m
@ -35,6 +37,8 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_BCM2708=m
+
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index df947e5..6219df3 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -214,6 +214,11 @@ CONFIG_SERIAL_AMBA_PL011=y
@ -49,6 +53,8 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
CONFIG_GPIO_SYSFS=y
# CONFIG_HWMON is not set
CONFIG_WATCHDOG=y
diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig
index 63bb76c..a35ff89 100644
--- a/arch/arm/mach-bcm2708/Kconfig
+++ b/arch/arm/mach-bcm2708/Kconfig
@@ -31,4 +31,11 @@ config BCM2708_NOL2CACHE
@ -63,6 +69,8 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
+ 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 67f3608..03b8ec5 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -31,6 +31,7 @@
@ -105,7 +113,7 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
}
};
@@ -434,6 +442,89 @@ static struct platform_device bcm2708_al
@@ -434,6 +442,89 @@ static struct platform_device bcm2708_alsa_devices[] = {
},
};
@ -217,6 +225,8 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
}
static void timer_set_mode(enum clock_event_mode mode,
diff --git a/arch/arm/mach-bcm2708/include/mach/platform.h b/arch/arm/mach-bcm2708/include/mach/platform.h
index 110ce07..4d3c15d 100644
--- a/arch/arm/mach-bcm2708/include/mach/platform.h
+++ b/arch/arm/mach-bcm2708/include/mach/platform.h
@@ -63,9 +63,12 @@
@ -232,9 +242,11 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
#define USB_BASE (BCM2708_PERI_BASE + 0x980000) /* DTC_OTG USB controller */
#define MCORE_BASE (BCM2708_PERI_BASE + 0x0000) /* Fake frame buffer device (actually the multicore sync block*/
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index d4fe13e..290aee4 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -345,6 +345,14 @@ config I2C_BCM2835
@@ -347,6 +347,14 @@ config I2C_BCM2835
This support is also available as a module. If so, the module
will be called i2c-bcm2835.
@ -249,9 +261,11 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
config I2C_BLACKFIN_TWI
tristate "Blackfin TWI I2C support"
depends on BLACKFIN
diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
index 8f4fc23..ef26c38 100644
--- a/drivers/i2c/busses/Makefile
+++ b/drivers/i2c/busses/Makefile
@@ -32,6 +32,7 @@ obj-$(CONFIG_I2C_POWERMAC) += i2c-powerm
@@ -32,6 +32,7 @@ obj-$(CONFIG_I2C_POWERMAC) += i2c-powermac.o
obj-$(CONFIG_I2C_AT91) += i2c-at91.o
obj-$(CONFIG_I2C_AU1550) += i2c-au1550.o
obj-$(CONFIG_I2C_BCM2835) += i2c-bcm2835.o
@ -259,6 +273,9 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
obj-$(CONFIG_I2C_BLACKFIN_TWI) += i2c-bfin-twi.o
obj-$(CONFIG_I2C_CBUS_GPIO) += i2c-cbus-gpio.o
obj-$(CONFIG_I2C_CPM) += i2c-cpm.o
diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c
new file mode 100644
index 0000000..7cae615
--- /dev/null
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -0,0 +1,396 @@
@ -658,6 +675,8 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
+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 92a9345..f0a2a9f 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -86,6 +86,14 @@ config SPI_BCM2835
@ -675,9 +694,11 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
config SPI_BFIN5XX
tristate "SPI controller driver for ADI Blackfin5xx"
depends on BLACKFIN
diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
index 33f9c09..17b4737 100644
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -17,6 +17,7 @@ obj-$(CONFIG_SPI_AU1550) += spi-au1550.
@@ -17,6 +17,7 @@ obj-$(CONFIG_SPI_AU1550) += spi-au1550.o
obj-$(CONFIG_SPI_BCM2835) += spi-bcm2835.o
obj-$(CONFIG_SPI_BCM63XX) += spi-bcm63xx.o
obj-$(CONFIG_SPI_BFIN5XX) += spi-bfin5xx.o
@ -685,6 +706,9 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
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..9f1580e
--- /dev/null
+++ b/drivers/spi/spi-bcm2708.c
@@ -0,0 +1,594 @@
@ -1282,3 +1306,6 @@ Subject: [PATCH 019/174] Backport of Chris Boot's i2c and spi drivers.
+MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" DRV_NAME);
--
1.9.1

View file

@ -1,12 +1,14 @@
From 9e42f33f4f80999a2c65a50b2a7ac6562ca194f5 Mon Sep 17 00:00:00 2001
From a30b981976f90774867ec2a60bac86ebe7244d9a Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 17 Jul 2012 00:48:27 +0100
Subject: [PATCH 020/174] Add sync_after_dma module parameter
Subject: [PATCH 020/196] Add sync_after_dma module parameter
---
drivers/mmc/host/sdhci-bcm2708.c | 60 +++++++++++++++++++++-------------------
1 file changed, 32 insertions(+), 28 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 7bba950..3792b9f 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -51,7 +51,6 @@
@ -17,7 +19,7 @@ Subject: [PATCH 020/174] Add sync_after_dma module parameter
#ifdef CONFIG_MMC_SDHCI_BCM2708_DMA
/* #define CHECK_DMA_USE */
#endif
@@ -131,6 +130,7 @@ static inline unsigned long int since_ns
@@ -131,6 +130,7 @@ static inline unsigned long int since_ns(hptime_t t)
static bool allow_highspeed = 1;
static int emmc_clock_freq = BCM2708_EMMC_CLOCK_FREQ;
@ -25,7 +27,7 @@ Subject: [PATCH 020/174] Add sync_after_dma module parameter
#if 0
static void hptime_test(void)
@@ -822,34 +822,34 @@ static void sdhci_bcm2708_dma_complete_i
@@ -822,34 +822,34 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
SDHCI_INT_SPACE_AVAIL);
}
} else {
@ -38,6 +40,12 @@ Subject: [PATCH 020/174] Add sync_after_dma module parameter
- the SD controller to finish reading/writing to the card. */
- u32 state_mask;
- int timeout=5000;
-
- DBG("PDMA over - sync card\n");
- if (data->flags & MMC_DATA_READ)
- state_mask = SDHCI_DOING_READ;
- else
- state_mask = SDHCI_DOING_WRITE;
+ if (sync_after_dma) {
+ /* On the Arasan controller the stop command (which will be
+ scheduled after this completes) does not seem to work
@ -47,12 +55,7 @@ Subject: [PATCH 020/174] Add sync_after_dma module parameter
+ the SD controller to finish reading/writing to the card. */
+ u32 state_mask;
+ int timeout=30*5000;
- DBG("PDMA over - sync card\n");
- if (data->flags & MMC_DATA_READ)
- state_mask = SDHCI_DOING_READ;
- else
- state_mask = SDHCI_DOING_WRITE;
+
+ DBG("PDMA over - sync card\n");
+ if (data->flags & MMC_DATA_READ)
+ state_mask = SDHCI_DOING_READ;
@ -85,7 +88,7 @@ Subject: [PATCH 020/174] Add sync_after_dma module parameter
if (host_priv->complete) {
(*host_priv->complete)(host);
DBG("PDMA %s complete\n",
@@ -1193,7 +1193,9 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1193,7 +1193,9 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
SDHCI_QUIRK_BROKEN_TIMEOUT_VAL |
SDHCI_QUIRK_MISSING_CAPS |
@ -111,3 +114,6 @@ Subject: [PATCH 020/174] Add sync_after_dma module parameter
+MODULE_PARM_DESC(sync_after_dma, "Block in driver until dma complete");
--
1.9.1

View file

@ -1,7 +1,7 @@
From 3e9891e91d7dda096ab1cc2518830938ad69880d Mon Sep 17 00:00:00 2001
From b802bfd3bb337e92226bd521f8ebbbcfc6642333 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sun, 12 May 2013 12:25:52 +0100
Subject: [PATCH 021/174] sdhci-bcm2708: use extension FIFO to buffer DMA
Subject: [PATCH 021/196] sdhci-bcm2708: use extension FIFO to buffer DMA
transfers
The additional FIFO might speed up transfers in some cases.
@ -9,6 +9,8 @@ The additional FIFO might speed up transfers in some cases.
drivers/mmc/host/sdhci-bcm2708.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 3792b9f..326b962 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -74,6 +74,9 @@
@ -21,7 +23,7 @@ The additional FIFO might speed up transfers in some cases.
/*****************************************************************************\
* *
* Debug *
@@ -957,10 +960,12 @@ static ssize_t attr_dma_store(struct dev
@@ -957,10 +960,12 @@ static ssize_t attr_dma_store(struct device *_dev,
int on = simple_strtol(buf, NULL, 0);
if (on) {
host->flags |= SDHCI_USE_PLATDMA;
@ -34,7 +36,7 @@ The additional FIFO might speed up transfers in some cases.
printk(KERN_INFO "%s: DMA disabled\n",
mmc_hostname(host->mmc));
}
@@ -1272,6 +1277,12 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1272,6 +1277,12 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
ret = device_create_file(&pdev->dev, &dev_attr_dma_wait);
ret = device_create_file(&pdev->dev, &dev_attr_status);
@ -47,3 +49,6 @@ The additional FIFO might speed up transfers in some cases.
printk(KERN_INFO "%s: BCM2708 SDHC host at 0x%08llx DMA %d IRQ %d\n",
mmc_hostname(host->mmc), (unsigned long long)iomem->start,
host_priv->dma_chan, host_priv->dma_irq);
--
1.9.1

View file

@ -1,7 +1,7 @@
From 9f5c2a77277b99949398e97cc753074d1b8e9521 Mon Sep 17 00:00:00 2001
From d91049bd18e847ba86d661889b92a25cd7ce53cc Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 00:42:49 +0100
Subject: [PATCH 022/174] sdhci-bcm2708: use multiblock-type transfers for
Subject: [PATCH 022/196] sdhci-bcm2708: use multiblock-type transfers for
single blocks
There are issues with both single block reads (missed completion)
@ -14,9 +14,11 @@ adds a quirk for this and uses it.
include/linux/mmc/host.h | 1 +
3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 9aca946..0d0c4ad 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -1333,7 +1333,7 @@ static void mmc_blk_rw_rq_prep(struct mm
@@ -1333,7 +1333,7 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
brq->data.blocks = 1;
}
@ -25,9 +27,11 @@ adds a quirk for this and uses it.
/* SPI multiblock writes terminate using a special
* token, not a STOP_TRANSMISSION request.
*/
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 326b962..c6d6bb0 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -1266,6 +1266,9 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1266,6 +1266,9 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
if (allow_highspeed)
host->mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
@ -37,6 +41,8 @@ adds a quirk for this and uses it.
#endif
ret = sdhci_add_host(host);
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index e326ae2..70020e3 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -281,6 +281,7 @@ struct mmc_host {
@ -47,3 +53,6 @@ adds a quirk for this and uses it.
mmc_pm_flag_t pm_caps; /* supported pm features */
--
1.9.1

View file

@ -1,16 +1,18 @@
From 4548721c4c1b160a8b5702b6226c5b6403b3df8b Mon Sep 17 00:00:00 2001
From 9572b1f23fb60dc2c55bde196a7070f57fc20a92 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 1 Aug 2012 19:02:14 +0100
Subject: [PATCH 023/174] Add module parameter for missing_status quirk.
Subject: [PATCH 023/196] Add module parameter for missing_status quirk.
sdhci-bcm2708.missing_status=0 may improve interrupt latency
---
drivers/mmc/host/sdhci-bcm2708.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index c6d6bb0..8243593 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -134,6 +134,7 @@ static inline unsigned long int since_ns
@@ -134,6 +134,7 @@ static inline unsigned long int since_ns(hptime_t t)
static bool allow_highspeed = 1;
static int emmc_clock_freq = BCM2708_EMMC_CLOCK_FREQ;
static bool sync_after_dma = 1;
@ -18,7 +20,7 @@ Subject: [PATCH 023/174] Add module parameter for missing_status quirk.
#if 0
static void hptime_test(void)
@@ -1150,7 +1151,6 @@ static struct sdhci_ops sdhci_bcm2708_op
@@ -1150,7 +1151,6 @@ static struct sdhci_ops sdhci_bcm2708_ops = {
.spurious_crc_acmd51 = sdhci_bcm2708_quirk_spurious_crc,
.voltage_broken = sdhci_bcm2708_quirk_voltage_broken,
.uhs_broken = sdhci_bcm2708_uhs_broken,
@ -26,7 +28,7 @@ Subject: [PATCH 023/174] Add module parameter for missing_status quirk.
};
/*****************************************************************************\
@@ -1189,6 +1189,9 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1189,6 +1189,9 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
ret = PTR_ERR(host);
goto err;
}
@ -51,3 +53,6 @@ Subject: [PATCH 023/174] Add module parameter for missing_status quirk.
+MODULE_PARM_DESC(missing_status, "Use the missing status quirk");
--
1.9.1

View file

@ -1,12 +1,14 @@
From bd9a95701602937c6e402a4fc6786d1675431117 Mon Sep 17 00:00:00 2001
From 24ecdf1266c6dd4213f7fc5e2a01c3b661877c81 Mon Sep 17 00:00:00 2001
From: ddv2005 <ddv@abinet.com>
Date: Sun, 5 Aug 2012 10:42:12 -0400
Subject: [PATCH 024/174] Fix spinlock recursion in sdhci-bcm2708.c
Subject: [PATCH 024/196] Fix spinlock recursion in sdhci-bcm2708.c
---
drivers/mmc/host/sdhci-bcm2708.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 8243593..7a703c2 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -643,11 +643,11 @@ void
@ -23,7 +25,7 @@ Subject: [PATCH 024/174] Fix spinlock recursion in sdhci-bcm2708.c
if (host_priv->dma_wanted) {
if (NULL == data) {
@@ -727,7 +727,7 @@ sdhci_bcm2708_platdma_reset(struct sdhci
@@ -727,7 +727,7 @@ sdhci_bcm2708_platdma_reset(struct sdhci_host *host, struct mmc_data *data)
#endif
}
@ -32,7 +34,7 @@ Subject: [PATCH 024/174] Fix spinlock recursion in sdhci-bcm2708.c
}
@@ -740,11 +740,11 @@ static void sdhci_bcm2708_dma_complete_i
@@ -740,11 +740,11 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
int sg_len;
int sg_ix;
int sg_todo;
@ -46,7 +48,7 @@ Subject: [PATCH 024/174] Fix spinlock recursion in sdhci-bcm2708.c
data = host->data;
#ifdef CHECK_DMA_USE
@@ -769,7 +769,7 @@ static void sdhci_bcm2708_dma_complete_i
@@ -769,7 +769,7 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
if (NULL == data) {
DBG("PDMA unused completion - status 0x%X\n", dma_cs);
@ -55,7 +57,7 @@ Subject: [PATCH 024/174] Fix spinlock recursion in sdhci-bcm2708.c
return;
}
sg = data->sg;
@@ -862,7 +862,7 @@ static void sdhci_bcm2708_dma_complete_i
@@ -862,7 +862,7 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
SDHCI_INT_SPACE_AVAIL);
}
}
@ -64,3 +66,6 @@ Subject: [PATCH 024/174] Fix spinlock recursion in sdhci-bcm2708.c
}
static irqreturn_t sdhci_bcm2708_dma_irq(int irq, void *dev_id)
--
1.9.1

View file

@ -1,13 +1,15 @@
From d3ea04a7506cca51d1e154cde5bcc7063595c98c Mon Sep 17 00:00:00 2001
From b0ffe239799004245e53a998216d361f6ab67f96 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 8 May 2013 11:46:50 +0100
Subject: [PATCH 025/174] enabling the realtime clock 1-wire chip DS1307 and
Subject: [PATCH 025/196] enabling the realtime clock 1-wire chip DS1307 and
1-wire on GPIO4 (as a module)
---
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 03b8ec5..18f7ede 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -32,6 +32,7 @@
@ -28,7 +30,7 @@ Subject: [PATCH 025/174] enabling the realtime clock 1-wire chip DS1307 and
/* command line parameters */
static unsigned boardrev, serial;
static unsigned uart_clock;
@@ -251,6 +255,19 @@ static struct platform_device bcm2708_dm
@@ -251,6 +255,19 @@ static struct platform_device bcm2708_dmaman_device = {
.num_resources = ARRAY_SIZE(bcm2708_dmaman_resources),
};
@ -58,3 +60,6 @@ Subject: [PATCH 025/174] enabling the realtime clock 1-wire chip DS1307 and
bcm_register_device(&bcm2708_systemtimer_device);
bcm_register_device(&bcm2708_fb_device);
bcm_register_device(&bcm2708_usb_device);
--
1.9.1

View file

@ -1,7 +1,7 @@
From fc153c5cb49f20f5e9644d92b8be064ed9159a16 Mon Sep 17 00:00:00 2001
From 4ec6de1f59d1f0b5ed9cfebf3c1b4080d7215dc2 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sun, 12 May 2013 12:27:48 +0100
Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
Subject: [PATCH 026/196] Add low-latency mode to sdcard driver. Disable with
sdhci-bcm2708.enable_llm=0. Thanks ddv2005.
---
@ -11,6 +11,8 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
include/linux/mmc/sdhci.h | 1 +
4 files changed, 145 insertions(+), 44 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 7a703c2..7ce2829 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -135,6 +135,7 @@ static bool allow_highspeed = 1;
@ -21,7 +23,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
#if 0
static void hptime_test(void)
@@ -871,12 +872,11 @@ static irqreturn_t sdhci_bcm2708_dma_irq
@@ -871,12 +872,11 @@ static irqreturn_t sdhci_bcm2708_dma_irq(int irq, void *dev_id)
struct sdhci_host *host = dev_id;
struct sdhci_bcm2708_priv *host_priv = SDHCI_HOST_PRIV(host);
u32 dma_cs; /* control and status register */
@ -35,7 +37,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
dma_cs = readl(host_priv->dma_chan_base + BCM2708_DMA_CS);
@@ -917,8 +917,7 @@ static irqreturn_t sdhci_bcm2708_dma_irq
@@ -917,8 +917,7 @@ static irqreturn_t sdhci_bcm2708_dma_irq(int irq, void *dev_id)
result = IRQ_HANDLED;
}
@ -45,7 +47,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
return result;
}
@@ -1193,9 +1192,12 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1193,9 +1192,12 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
sdhci_bcm2708_ops.missing_status = sdhci_bcm2708_missing_status;
}
@ -58,7 +60,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
host->quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION |
SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
@@ -1256,12 +1258,13 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1256,12 +1258,13 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
}
host_priv->dma_chan = ret;
@ -74,7 +76,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
DBG("DMA CBs %p handle %08X DMA%d %p DMA IRQ %d\n",
host_priv->cb_base, (unsigned)host_priv->cb_handle,
host_priv->dma_chan, host_priv->dma_chan_base,
@@ -1384,6 +1387,7 @@ module_param(allow_highspeed, bool, 0444
@@ -1384,6 +1387,7 @@ module_param(allow_highspeed, bool, 0444);
module_param(emmc_clock_freq, int, 0444);
module_param(sync_after_dma, bool, 0444);
module_param(missing_status, bool, 0444);
@ -82,16 +84,18 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
MODULE_DESCRIPTION("Secure Digital Host Controller Interface platform driver");
MODULE_AUTHOR("Broadcom <info@broadcom.com>");
@@ -1394,5 +1398,6 @@ MODULE_PARM_DESC(allow_highspeed, "Allow
@@ -1394,5 +1398,6 @@ MODULE_PARM_DESC(allow_highspeed, "Allow high speed transfers modes");
MODULE_PARM_DESC(emmc_clock_freq, "Specify the speed of emmc clock");
MODULE_PARM_DESC(sync_after_dma, "Block in driver until dma complete");
MODULE_PARM_DESC(missing_status, "Use the missing status quirk");
+MODULE_PARM_DESC(enable_llm, "Enable low-latency mode");
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 179e83e..470860b 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -124,6 +124,91 @@ static void sdhci_dumpregs(struct sdhci_
@@ -124,6 +124,91 @@ static void sdhci_dumpregs(struct sdhci_host *host)
* Low level functions *
* *
\*****************************************************************************/
@ -183,7 +187,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
static void sdhci_clear_set_irqs(struct sdhci_host *host, u32 clear, u32 set)
{
@@ -289,7 +374,7 @@ static void sdhci_led_control(struct led
@@ -289,7 +374,7 @@ static void sdhci_led_control(struct led_classdev *led,
struct sdhci_host *host = container_of(led, struct sdhci_host, led);
unsigned long flags;
@ -192,7 +196,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
if (host->runtime_suspended)
goto out;
@@ -299,7 +384,7 @@ static void sdhci_led_control(struct led
@@ -299,7 +384,7 @@ static void sdhci_led_control(struct led_classdev *led,
else
sdhci_activate_led(host);
out:
@ -201,7 +205,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
#endif
@@ -1007,7 +1092,9 @@ static void sdhci_send_command(struct sd
@@ -1007,7 +1092,9 @@ static void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
return;
}
timeout--;
@ -221,7 +225,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
clk |= SDHCI_CLOCK_CARD_EN;
@@ -1330,7 +1419,7 @@ static void sdhci_request(struct mmc_hos
@@ -1330,7 +1419,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
sdhci_runtime_pm_get(host);
@ -230,7 +234,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
WARN_ON(host->mrq != NULL);
@@ -1388,9 +1477,9 @@ static void sdhci_request(struct mmc_hos
@@ -1388,9 +1477,9 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
mmc->card->type == MMC_TYPE_MMC ?
MMC_SEND_TUNING_BLOCK_HS200 :
MMC_SEND_TUNING_BLOCK;
@ -242,7 +246,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
/* Restore original mmc_request structure */
host->mrq = mrq;
@@ -1404,7 +1493,7 @@ static void sdhci_request(struct mmc_hos
@@ -1404,7 +1493,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
}
mmiowb();
@ -251,7 +255,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
@@ -1413,10 +1502,10 @@ static void sdhci_do_set_ios(struct sdhc
@@ -1413,10 +1502,10 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
int vdd_bit = -1;
u8 ctrl;
@ -264,7 +268,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
if (host->vmmc && ios->power_mode == MMC_POWER_OFF)
mmc_regulator_set_ocr(host->mmc, host->vmmc, 0);
return;
@@ -1443,9 +1532,9 @@ static void sdhci_do_set_ios(struct sdhc
@@ -1443,9 +1532,9 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
vdd_bit = sdhci_set_power(host, ios->vdd);
if (host->vmmc && vdd_bit != -1) {
@ -276,7 +280,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
if (host->ops->platform_send_init_74_clocks)
@@ -1583,7 +1672,7 @@ static void sdhci_do_set_ios(struct sdhc
@@ -1583,7 +1672,7 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
sdhci_reset(host, SDHCI_RESET_CMD | SDHCI_RESET_DATA);
mmiowb();
@ -285,7 +289,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
@@ -1631,7 +1720,7 @@ static int sdhci_check_ro(struct sdhci_h
@@ -1631,7 +1720,7 @@ static int sdhci_check_ro(struct sdhci_host *host)
unsigned long flags;
int is_readonly;
@ -294,7 +298,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
if (host->flags & SDHCI_DEVICE_DEAD)
is_readonly = 0;
@@ -1641,7 +1730,7 @@ static int sdhci_check_ro(struct sdhci_h
@@ -1641,7 +1730,7 @@ static int sdhci_check_ro(struct sdhci_host *host)
is_readonly = !(sdhci_readl(host, SDHCI_PRESENT_STATE)
& SDHCI_WRITE_PROTECT);
@ -303,7 +307,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
/* This quirk needs to be replaced by a callback-function later */
return host->quirks & SDHCI_QUIRK_INVERTED_WRITE_PROTECT ?
@@ -1714,9 +1803,9 @@ static void sdhci_enable_sdio_irq(struct
@@ -1714,9 +1803,9 @@ static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
struct sdhci_host *host = mmc_priv(mmc);
unsigned long flags;
@ -315,7 +319,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
static int sdhci_do_start_signal_voltage_switch(struct sdhci_host *host,
@@ -2060,7 +2149,7 @@ static void sdhci_card_event(struct mmc_
@@ -2060,7 +2149,7 @@ static void sdhci_card_event(struct mmc_host *mmc)
struct sdhci_host *host = mmc_priv(mmc);
unsigned long flags;
@ -324,7 +328,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
/* Check host->mrq first in case we are runtime suspended */
if (host->mrq &&
@@ -2077,7 +2166,7 @@ static void sdhci_card_event(struct mmc_
@@ -2077,7 +2166,7 @@ static void sdhci_card_event(struct mmc_host *mmc)
tasklet_schedule(&host->finish_tasklet);
}
@ -333,7 +337,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
static const struct mmc_host_ops sdhci_ops = {
@@ -2116,14 +2205,14 @@ static void sdhci_tasklet_finish(unsigne
@@ -2116,14 +2205,14 @@ static void sdhci_tasklet_finish(unsigned long param)
host = (struct sdhci_host*)param;
@ -350,7 +354,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
return;
}
@@ -2161,7 +2250,7 @@ static void sdhci_tasklet_finish(unsigne
@@ -2161,7 +2250,7 @@ static void sdhci_tasklet_finish(unsigned long param)
#endif
mmiowb();
@ -359,7 +363,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
mmc_request_done(host->mmc, mrq);
sdhci_runtime_pm_put(host);
@@ -2174,7 +2263,7 @@ static void sdhci_timeout_timer(unsigned
@@ -2174,7 +2263,7 @@ static void sdhci_timeout_timer(unsigned long data)
host = (struct sdhci_host*)data;
@ -368,7 +372,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
if (host->mrq) {
pr_err("%s: Timeout waiting for hardware "
@@ -2195,7 +2284,7 @@ static void sdhci_timeout_timer(unsigned
@@ -2195,7 +2284,7 @@ static void sdhci_timeout_timer(unsigned long data)
}
mmiowb();
@ -377,7 +381,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
static void sdhci_tuning_timer(unsigned long data)
@@ -2205,11 +2294,11 @@ static void sdhci_tuning_timer(unsigned
@@ -2205,11 +2294,11 @@ static void sdhci_tuning_timer(unsigned long data)
host = (struct sdhci_host *)data;
@ -391,7 +395,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
/*****************************************************************************\
@@ -2433,10 +2522,10 @@ static irqreturn_t sdhci_irq(int irq, vo
@@ -2433,10 +2522,10 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
u32 intmask, unexpected = 0;
int cardint = 0, max_loops = 16;
@ -413,7 +417,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
if (unexpected) {
pr_err("%s: Unexpected interrupt 0x%08x.\n",
@@ -2702,15 +2791,15 @@ int sdhci_runtime_suspend_host(struct sd
@@ -2702,15 +2791,15 @@ int sdhci_runtime_suspend_host(struct sdhci_host *host)
host->flags &= ~SDHCI_NEEDS_RETUNING;
}
@ -433,7 +437,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
return ret;
}
@@ -2736,16 +2825,16 @@ int sdhci_runtime_resume_host(struct sdh
@@ -2736,16 +2825,16 @@ int sdhci_runtime_resume_host(struct sdhci_host *host)
sdhci_do_start_signal_voltage_switch(host, &host->mmc->ios);
if ((host_flags & SDHCI_PV_ENABLED) &&
!(host->quirks2 & SDHCI_QUIRK2_PRESET_VALUE_BROKEN)) {
@ -453,7 +457,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
host->runtime_suspended = false;
@@ -2756,7 +2845,7 @@ int sdhci_runtime_resume_host(struct sdh
@@ -2756,7 +2845,7 @@ int sdhci_runtime_resume_host(struct sdhci_host *host)
/* Enable Card Detection */
sdhci_enable_card_detection(host);
@ -462,7 +466,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
return ret;
}
@@ -3248,7 +3337,7 @@ int sdhci_add_host(struct sdhci_host *ho
@@ -3248,7 +3337,7 @@ int sdhci_add_host(struct sdhci_host *host)
host->tuning_timer.function = sdhci_tuning_timer;
}
@ -471,7 +475,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
mmc_hostname(mmc), host);
if (ret) {
pr_err("%s: Failed to request IRQ %d: %d\n",
@@ -3312,7 +3401,7 @@ void sdhci_remove_host(struct sdhci_host
@@ -3312,7 +3401,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead)
unsigned long flags;
if (dead) {
@ -480,7 +484,7 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
host->flags |= SDHCI_DEVICE_DEAD;
@@ -3324,7 +3413,7 @@ void sdhci_remove_host(struct sdhci_host
@@ -3324,7 +3413,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead)
tasklet_schedule(&host->finish_tasklet);
}
@ -489,9 +493,11 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
}
sdhci_disable_card_detection(host);
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index f90574e..cc393af 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -441,4 +441,10 @@ extern int sdhci_runtime_suspend_host(st
@@ -441,4 +441,10 @@ extern int sdhci_runtime_suspend_host(struct sdhci_host *host);
extern int sdhci_runtime_resume_host(struct sdhci_host *host);
#endif
@ -502,6 +508,8 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
+
+
#endif /* __SDHCI_HW_H */
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h
index f3a39c1..58bfab0 100644
--- a/include/linux/mmc/sdhci.h
+++ b/include/linux/mmc/sdhci.h
@@ -97,6 +97,7 @@ struct sdhci_host {
@ -512,3 +520,6 @@ Subject: [PATCH 026/174] Add low-latency mode to sdcard driver. Disable with
void __iomem *ioaddr; /* Mapped address */
const struct sdhci_ops *ops; /* Low level hw interface */
--
1.9.1

View file

@ -1,7 +1,7 @@
From c80392fbbb9a09f035f66a7d2a9fed2469373210 Mon Sep 17 00:00:00 2001
From 5e4c6e64d0c5fd6adc6c68cc1366f0f7c0ad84ba Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 00:46:42 +0100
Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
Subject: [PATCH 027/196] Add FIQ patch to dwc_otg driver. Enable with
dwc_otg.fiq_fix_enable=1. Should give about 10% more ARM performance. Thanks
to Gordon and Costas
@ -31,6 +31,8 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
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 eb291c7..5468f1f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -373,6 +373,7 @@ config ARCH_BCM2708
@ -41,6 +43,8 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
help
This enables support for Broadcom BCM2708 boards.
diff --git a/arch/arm/include/asm/fiq.h b/arch/arm/include/asm/fiq.h
index d493d0b..f1a131b 100644
--- a/arch/arm/include/asm/fiq.h
+++ b/arch/arm/include/asm/fiq.h
@@ -42,6 +42,7 @@ extern void disable_fiq(int fiq);
@ -51,9 +55,11 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
static inline void set_fiq_regs(struct pt_regs const *regs)
{
diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c
index 25442f4..74ff4ba 100644
--- a/arch/arm/kernel/fiq.c
+++ b/arch/arm/kernel/fiq.c
@@ -141,6 +141,7 @@ void disable_fiq(int fiq)
@@ -145,6 +145,7 @@ void disable_fiq(int fiq)
EXPORT_SYMBOL(set_fiq_handler);
EXPORT_SYMBOL(__set_fiq_regs); /* defined in fiqasm.S */
EXPORT_SYMBOL(__get_fiq_regs); /* defined in fiqasm.S */
@ -61,6 +67,8 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
EXPORT_SYMBOL(claim_fiq);
EXPORT_SYMBOL(release_fiq);
EXPORT_SYMBOL(enable_fiq);
diff --git a/arch/arm/kernel/fiqasm.S b/arch/arm/kernel/fiqasm.S
index 207f9d6..93eddfe 100644
--- a/arch/arm/kernel/fiqasm.S
+++ b/arch/arm/kernel/fiqasm.S
@@ -25,6 +25,9 @@
@ -81,9 +89,11 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
+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 da18725..274aa30 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_
@@ -52,8 +52,12 @@ static void armctrl_mask_irq(struct irq_data *d)
0
};
@ -98,7 +108,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
}
static void armctrl_unmask_irq(struct irq_data *d)
@@ -65,8 +69,14 @@ static void armctrl_unmask_irq(struct ir
@@ -65,8 +69,14 @@ static void armctrl_unmask_irq(struct irq_data *d)
0
};
@ -115,16 +125,18 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
}
#if defined(CONFIG_PM)
@@ -204,5 +214,6 @@ int __init armctrl_init(void __iomem * b
@@ -204,5 +214,6 @@ int __init armctrl_init(void __iomem * base, unsigned int irq_start,
}
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 18f7ede..b9aa2de 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -309,12 +309,32 @@ static struct resource bcm2708_usb_resou
@@ -309,12 +309,32 @@ static struct resource bcm2708_usb_resources[] = {
.flags = IORESOURCE_MEM,
},
[1] = {
@ -171,6 +183,8 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
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 e8bb068..9aaedf1 100644
--- a/arch/arm/mach-bcm2708/include/mach/irqs.h
+++ b/arch/arm/mach-bcm2708/include/mach/irqs.h
@@ -106,91 +106,94 @@
@ -246,17 +260,6 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
-#define FIQ_RNG INT_RNG
-#define FIQ_ARASANSDIO INT_ARASANSDIO
-#define FIQ_AVSPMON INT_AVSPMON
-
-#define FIQ_ARM_TIMER INT_ARM_TIMER
-#define FIQ_ARM_MAILBOX INT_ARM_MAILBOX
-#define FIQ_ARM_DOORBELL_0 INT_ARM_DOORBELL_0
-#define FIQ_ARM_DOORBELL_1 INT_ARM_DOORBELL_1
-#define FIQ_VPU0_HALTED INT_VPU0_HALTED
-#define FIQ_VPU1_HALTED INT_VPU1_HALTED
-#define FIQ_ILLEGAL_TYPE0 INT_ILLEGAL_TYPE0
-#define FIQ_ILLEGAL_TYPE1 INT_ILLEGAL_TYPE1
-#define FIQ_PENDING1 INT_PENDING1
-#define FIQ_PENDING2 INT_PENDING2
+#define FIQ_TIMER0 (FIQ_START+INTERRUPT_TIMER0)
+#define FIQ_TIMER1 (FIQ_START+INTERRUPT_TIMER1)
+#define FIQ_TIMER2 (FIQ_START+INTERRUPT_TIMER2)
@ -321,7 +324,17 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
+#define FIQ_RNG (FIQ_START+INTERRUPT_RNG)
+#define FIQ_ARASANSDIO (FIQ_START+INTERRUPT_ARASANSDIO)
+#define FIQ_AVSPMON (FIQ_START+INTERRUPT_AVSPMON)
+
-#define FIQ_ARM_TIMER INT_ARM_TIMER
-#define FIQ_ARM_MAILBOX INT_ARM_MAILBOX
-#define FIQ_ARM_DOORBELL_0 INT_ARM_DOORBELL_0
-#define FIQ_ARM_DOORBELL_1 INT_ARM_DOORBELL_1
-#define FIQ_VPU0_HALTED INT_VPU0_HALTED
-#define FIQ_VPU1_HALTED INT_VPU1_HALTED
-#define FIQ_ILLEGAL_TYPE0 INT_ILLEGAL_TYPE0
-#define FIQ_ILLEGAL_TYPE1 INT_ILLEGAL_TYPE1
-#define FIQ_PENDING1 INT_PENDING1
-#define FIQ_PENDING2 INT_PENDING2
+#define FIQ_ARM_TIMER (FIQ_START+INTERRUPT_ARM_TIMER)
+#define FIQ_ARM_MAILBOX (FIQ_START+INTERRUPT_ARM_MAILBOX)
+#define FIQ_ARM_DOORBELL_0 (FIQ_START+INTERRUPT_ARM_DOORBELL_0)
@ -347,6 +360,8 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
#endif /* _BCM2708_IRQS_H_ */
diff --git a/arch/arm/mach-bcm2708/include/mach/platform.h b/arch/arm/mach-bcm2708/include/mach/platform.h
index 4d3c15d..89e72d1 100644
--- a/arch/arm/mach-bcm2708/include/mach/platform.h
+++ b/arch/arm/mach-bcm2708/include/mach/platform.h
@@ -56,7 +56,9 @@
@ -359,9 +374,11 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
#define DMA_BASE (BCM2708_PERI_BASE + 0x7000) /* DMA controller */
#define ARM_BASE (BCM2708_PERI_BASE + 0xB000) /* BCM2708 ARM control block */
#define PM_BASE (BCM2708_PERI_BASE + 0x100000) /* Power Management, Reset controller and Watchdog registers */
diff --git a/drivers/usb/host/dwc_otg/Makefile b/drivers/usb/host/dwc_otg/Makefile
index c4c6e4e..6bd6a2e 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_ci
@@ -36,6 +36,7 @@ dwc_otg-objs += dwc_otg_cil.o dwc_otg_cil_intr.o
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
@ -369,6 +386,8 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
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 21804c4..b861b55 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,9 @@
@ -381,7 +400,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
#ifdef DEBUG
inline const char *op_state_str(dwc_otg_core_if_t * core_if)
@@ -1351,10 +1354,15 @@ static inline uint32_t dwc_otg_read_comm
@@ -1351,10 +1354,15 @@ static inline uint32_t dwc_otg_read_common_intr(dwc_otg_core_if_t * core_if)
gintsts.d32, gintmsk.d32);
}
#endif
@ -400,9 +419,11 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_dbg.h b/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
index 8681aa9..2ff1532 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(c
@@ -49,6 +49,7 @@ static inline uint32_t SET_DEBUG_LEVEL(const uint32_t new)
return old;
}
@ -410,6 +431,8 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
/** 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 e7f99e1..3ac720b 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;
@ -421,7 +444,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
extern int pcd_init(
#ifdef LM_INTERFACE
struct lm_device *_dev
@@ -238,6 +240,10 @@ static struct dwc_otg_driver_module_para
@@ -238,6 +240,10 @@ static struct dwc_otg_driver_module_params dwc_otg_module_params = {
.adp_enable = -1,
};
@ -471,7 +494,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
#else
{
struct map_desc desc = {
@@ -1063,6 +1085,7 @@ static int __init dwc_otg_driver_init(vo
@@ -1063,6 +1085,7 @@ static int __init dwc_otg_driver_init(void)
printk(KERN_ERR "%s retval=%d\n", __func__, retval);
return retval;
}
@ -479,7 +502,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
error = driver_create_file(drv, &driver_attr_version);
#ifdef DEBUG
@@ -1343,6 +1366,10 @@ MODULE_PARM_DESC(otg_ver, "OTG revision
@@ -1343,6 +1366,10 @@ MODULE_PARM_DESC(otg_ver, "OTG revision supported 0=OTG 1.3 1=OTG 2.0");
module_param(microframe_schedule, bool, 0444);
MODULE_PARM_DESC(microframe_schedule, "Enable the microframe scheduler");
@ -490,9 +513,11 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
/** @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 434d0c4..20f989e 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -53,6 +53,8 @@ static int last_sel_trans_num_avail_hc_a
@@ -53,6 +53,8 @@ static int last_sel_trans_num_avail_hc_at_start = 0;
static int last_sel_trans_num_avail_hc_at_end = 0;
#endif /* DEBUG_HOST_CHANNELS */
@ -509,7 +534,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
/**
* HCD Callback function for Remote Wakeup.
*
@@ -1330,6 +1333,8 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1330,6 +1333,8 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
&qh->qh_list_entry);
DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags);
@ -518,9 +543,11 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
if (ret_val == DWC_OTG_TRANSACTION_NONE) {
ret_val = DWC_OTG_TRANSACTION_NON_PERIODIC;
} else {
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
index 8075595..dd30f47 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -594,7 +594,7 @@ extern void dwc_otg_hcd_queue_transactio
@@ -594,7 +594,7 @@ extern void dwc_otg_hcd_queue_transactions(dwc_otg_hcd_t * hcd,
/** @name Interrupt Handler Functions */
/** @{ */
extern int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd);
@ -529,9 +556,11 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
extern int32_t dwc_otg_hcd_handle_rx_status_q_level_intr(dwc_otg_hcd_t *
dwc_otg_hcd);
extern int32_t dwc_otg_hcd_handle_np_tx_fifo_empty_intr(dwc_otg_hcd_t *
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 b3dc806..04ca4c2 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_h
@@ -113,6 +113,11 @@ extern void dwc_otg_hcd_remove(dwc_otg_hcd_t * hcd);
*/
extern int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd);
@ -543,6 +572,8 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
/**
* 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 63c1b55..f1658fa 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,11 @@
@ -673,7 +704,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
}
#ifdef DEBUG
/* Don't print debug message in the interrupt handler on SOF */
@@ -88,9 +162,14 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
@@ -88,9 +162,14 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
"DWC OTG HCD Interrupt Detected gintsts&gintmsk=0x%08x core_if=%p\n",
gintsts.d32, core_if);
#endif
@ -691,7 +722,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
}
if (gintsts.b.rxstsqlvl) {
retval |=
@@ -138,11 +217,37 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
@@ -138,11 +217,37 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
#endif
}
@ -729,7 +760,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
#warning Compiling code to track missed SOFs
#define FRAME_NUM_ARRAY_SIZE 1000
/**
@@ -182,13 +287,15 @@ static inline void track_missed_sofs(uin
@@ -182,13 +287,15 @@ static inline void track_missed_sofs(uint16_t curr_frame_number)
* (micro)frame. Periodic transactions may be queued to the controller for the
* next (micro)frame.
*/
@ -746,7 +777,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
hfnum.d32 =
DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hfnum);
@@ -218,12 +325,30 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_
@@ -218,12 +325,30 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd)
*/
DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_ready,
&qh->qh_list_entry);
@ -777,12 +808,14 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
/* Clear interrupt */
gintsts.b.sofintr = 1;
@@ -2102,5 +2227,4 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
@@ -2102,5 +2227,4 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
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 4a985a6..9702f81 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 @@
@ -816,7 +849,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
/** @name Linux HC Driver API Functions */
/** @{ */
/* manage i/o requests, device state */
@@ -366,6 +372,12 @@ static struct dwc_otg_hcd_function_ops h
@@ -366,6 +372,12 @@ static struct dwc_otg_hcd_function_ops hcd_fops = {
.get_b_hnp_enable = _get_b_hnp_enable,
};
@ -883,9 +916,11 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
/* Initialize the DWC OTG HCD. */
dwc_otg_hcd = dwc_otg_hcd_alloc_hcd();
if (!dwc_otg_hcd) {
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 08c1669..ac10323 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -572,6 +572,9 @@ static int check_max_xfer_size(dwc_otg_h
@@ -572,6 +572,9 @@ static int check_max_xfer_size(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
return status;
}
@ -895,7 +930,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
/**
* Schedules an interrupt or isochronous transfer in the periodic schedule.
*
@@ -630,8 +633,13 @@ static int schedule_periodic(dwc_otg_hcd
@@ -630,8 +633,13 @@ static int schedule_periodic(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
DWC_LIST_INSERT_TAIL(&hcd->periodic_sched_ready, &qh->qh_list_entry);
}
else {
@ -911,7 +946,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
}
if (!microframe_schedule) {
@@ -645,6 +653,7 @@ static int schedule_periodic(dwc_otg_hcd
@@ -645,6 +653,7 @@ static int schedule_periodic(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
return status;
}
@ -919,7 +954,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
/**
* 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
@@ -667,6 +676,7 @@ int dwc_otg_hcd_qh_add(dwc_otg_hcd_t * h
@@ -667,6 +676,7 @@ int dwc_otg_hcd_qh_add(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
/* Always start in the inactive schedule. */
DWC_LIST_INSERT_TAIL(&hcd->non_periodic_sched_inactive,
&qh->qh_list_entry);
@ -927,7 +962,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
} else {
status = schedule_periodic(hcd, qh);
if ( !hcd->periodic_qh_count ) {
@@ -767,6 +777,7 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_h
@@ -767,6 +777,7 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh,
if (sched_next_periodic_split) {
qh->sched_frame = frame_number;
@ -935,7 +970,7 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
if (dwc_frame_num_le(frame_number,
dwc_frame_num_inc
(qh->start_split_frame,
@@ -815,6 +826,11 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_h
@@ -815,6 +826,11 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh,
DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_ready,
&qh->qh_list_entry);
} else {
@ -947,6 +982,9 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
DWC_LIST_MOVE_HEAD
(&hcd->periodic_sched_inactive,
&qh->qh_list_entry);
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..b70ca68
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c
@@ -0,0 +1,113 @@
@ -1063,6 +1101,9 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
+
+ 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..22f28e1
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
@@ -0,0 +1,36 @@
@ -1102,6 +1143,8 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
+#endif
+
+#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 a7e9076..bb1c42d 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 {
@ -1114,3 +1157,6 @@ Subject: [PATCH 027/174] Add FIQ patch to dwc_otg driver. Enable with
#ifdef LM_INTERFACE
struct lm_device *lmdev;
#elif defined(PCI_INTERFACE)
--
1.9.1

View file

@ -1,13 +1,15 @@
From dae7c3832370e9a807907128ce37070f40fbb882 Mon Sep 17 00:00:00 2001
From 74275981ae08b9a054457568070c1f9aef2dc594 Mon Sep 17 00:00:00 2001
From: Jo Are By <grimjoey@gmail.com>
Date: Sun, 17 Mar 2013 17:45:41 +0100
Subject: [PATCH 029/174] Add device ID (330d)
Subject: [PATCH 029/196] Add device ID (330d)
---
drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c | 2 ++
drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c | 1 +
2 files changed, 3 insertions(+)
diff --git a/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c b/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c
index eb5ea29..6cac2d5 100644
--- a/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c
+++ b/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c
@@ -3786,6 +3786,8 @@ _ReadIDs(
@ -19,9 +21,11 @@ Subject: [PATCH 029/174] Add device ID (330d)
break;
case EEPROM_CID_WHQL:
/*
diff --git a/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c b/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
index 134acdc..9d303f4 100644
--- a/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
+++ b/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
@@ -137,6 +137,7 @@ static struct usb_device_id rtw_usb_id_t
@@ -137,6 +137,7 @@ static struct usb_device_id rtw_usb_id_tbl[] ={
{USB_DEVICE(0x2001, 0x3307)},//D-Link - Cameo
{USB_DEVICE(0x2001, 0x330A)},//D-Link - Alpha
{USB_DEVICE(0x2001, 0x3309)},//D-Link - Alpha
@ -29,3 +33,6 @@ Subject: [PATCH 029/174] Add device ID (330d)
{USB_DEVICE(0x0586, 0x341F)},//Zyxel - Abocom
{USB_DEVICE(0x7392, 0x7822)},//Edimax - Edimax
{USB_DEVICE(0x2019, 0xAB2B)},//Planex - Abocom
--
1.9.1

View file

@ -1,7 +1,7 @@
From f56b0b76fdd4b17bd359536ae926c4cb04706e54 Mon Sep 17 00:00:00 2001
From f97cc1b1a4c868500cee6b016f54d78bdd3cdc26 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 8 Sep 2012 15:17:53 +0100
Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
Subject: [PATCH 030/196] Avoid dynamic memory allocation for channel lock in
USB driver. Thanks ddv2005.
---
@ -11,9 +11,11 @@ Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 3 +--
4 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 20f989e..0ce7e46 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -822,6 +822,7 @@ static void dwc_otg_hcd_free(dwc_otg_hcd
@@ -822,6 +822,7 @@ static void dwc_otg_hcd_free(dwc_otg_hcd_t * dwc_otg_hcd)
} else if (dwc_otg_hcd->status_buf != NULL) {
DWC_FREE(dwc_otg_hcd->status_buf);
}
@ -21,7 +23,7 @@ Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
DWC_SPINLOCK_FREE(dwc_otg_hcd->lock);
/* Set core_if's lock pointer to NULL */
dwc_otg_hcd->core_if->lock = NULL;
@@ -848,6 +849,7 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
@@ -848,6 +849,7 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
dwc_hc_t *channel;
hcd->lock = DWC_SPINLOCK_ALLOC();
@ -29,7 +31,7 @@ Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
DWC_DEBUGPL(DBG_HCDV, "init of HCD %p given core_if %p\n",
hcd, core_if);
if (!hcd->lock) {
@@ -1248,7 +1250,7 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1248,7 +1250,7 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
dwc_otg_qh_t *qh;
int num_channels;
dwc_irqflags_t flags;
@ -38,7 +40,7 @@ Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
dwc_otg_transaction_type_e ret_val = DWC_OTG_TRANSACTION_NONE;
#ifdef DEBUG_SOF
@@ -1348,8 +1350,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1348,8 +1350,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
#ifdef DEBUG_HOST_CHANNELS
last_sel_trans_num_avail_hc_at_end = hcd->available_host_channels;
#endif /* DEBUG_HOST_CHANNELS */
@ -47,6 +49,8 @@ Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
return ret_val;
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
index dd30f47..6d82127 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -548,7 +548,7 @@ struct dwc_otg_hcd {
@ -58,9 +62,11 @@ Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
/**
* Private data that could be used by OS wrapper.
*/
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 d0d5fa1..a2ceb77 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;
@ -69,7 +75,7 @@ Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
dwc_hc_t *hc = qh->channel;
if (dwc_qh_is_non_per(qh)) {
@@ -306,7 +306,6 @@ static void release_channel_ddma(dwc_otg
@@ -306,7 +306,6 @@ static void release_channel_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
dwc_memset(qh->desc_list, 0x00,
sizeof(dwc_otg_host_dma_desc_t) * max_desc_num(qh));
}
@ -77,9 +83,11 @@ Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
}
/**
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 f1658fa..21e8f09 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -922,7 +922,7 @@ static void release_channel(dwc_otg_hcd_
@@ -922,7 +922,7 @@ static void release_channel(dwc_otg_hcd_t * hcd,
dwc_otg_transaction_type_e tr_type;
int free_qtd;
dwc_irqflags_t flags;
@ -96,3 +104,6 @@ Subject: [PATCH 030/174] Avoid dynamic memory allocation for channel lock in
}
/**
--
1.9.1

View file

@ -1,7 +1,7 @@
From d19db6057337b577baab7766718781d55c402fbb Mon Sep 17 00:00:00 2001
From 083183f7770ae4fb6f23c99a64a3c5058b9b3b40 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 2 Nov 2013 22:44:41 +0000
Subject: [PATCH 031/174] Add cpufreq driver
Subject: [PATCH 031/196] Add cpufreq driver
---
arch/arm/Kconfig | 1 +
@ -11,6 +11,8 @@ Subject: [PATCH 031/174] Add cpufreq driver
4 files changed, 249 insertions(+)
create mode 100755 drivers/cpufreq/bcm2835-cpufreq.c
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 5468f1f..4e36ccd 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -369,6 +369,7 @@ config ARCH_BCM2708
@ -21,6 +23,8 @@ Subject: [PATCH 031/174] Add cpufreq driver
select GENERIC_CLOCKEVENTS
select ARM_ERRATA_411920
select MACH_BCM2708
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
index 6e57543..bf40783 100644
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
@@ -150,3 +150,11 @@ config ARM_SPEAR_CPUFREQ
@ -35,9 +39,11 @@ Subject: [PATCH 031/174] Add cpufreq driver
+ This adds the CPUFreq driver for BCM2835
+
+ If in doubt, say N.
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
index 3b95322..3a30bab 100644
--- a/drivers/cpufreq/Makefile
+++ b/drivers/cpufreq/Makefile
@@ -72,6 +72,7 @@ obj-$(CONFIG_ARM_SA1100_CPUFREQ) += sa11
@@ -72,6 +72,7 @@ obj-$(CONFIG_ARM_SA1100_CPUFREQ) += sa1100-cpufreq.o
obj-$(CONFIG_ARM_SA1110_CPUFREQ) += sa1110-cpufreq.o
obj-$(CONFIG_ARM_SPEAR_CPUFREQ) += spear-cpufreq.o
obj-$(CONFIG_ARCH_TEGRA) += tegra-cpufreq.o
@ -45,6 +51,9 @@ Subject: [PATCH 031/174] Add cpufreq driver
##################################################################################
# PowerPC platform drivers
diff --git a/drivers/cpufreq/bcm2835-cpufreq.c b/drivers/cpufreq/bcm2835-cpufreq.c
new file mode 100755
index 0000000..822139a
--- /dev/null
+++ b/drivers/cpufreq/bcm2835-cpufreq.c
@@ -0,0 +1,239 @@
@ -287,3 +296,6 @@ Subject: [PATCH 031/174] Add cpufreq driver
+module_init(bcm2835_cpufreq_module_init);
+module_exit(bcm2835_cpufreq_module_exit);
+
--
1.9.1

View file

@ -1,7 +1,7 @@
From 99e6d36a5f752bb0237a61143bea29c93e6da22c Mon Sep 17 00:00:00 2001
From 56822de577325e209a9ecfcf3e62d8bb70c2f2cc Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 8 Apr 2013 21:12:48 +0100
Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
Subject: [PATCH 032/196] Add NAK holdoff scheme. Enabled by default, disable
with dwc_otg.nak_holdoff_enable=0. Thanks gsh
---
@ -12,9 +12,11 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c | 19 +++++++++++++++++++
5 files changed, 70 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.c b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
index 3ac720b..d353a9a 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_driver.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
@@ -243,6 +243,9 @@ static struct dwc_otg_driver_module_para
@@ -243,6 +243,9 @@ static struct dwc_otg_driver_module_params dwc_otg_module_params = {
//Global variable to switch the fiq fix on or off (declared in bcm2708.c)
extern bool fiq_fix_enable;
@ -24,7 +26,7 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
/**
* This function shows the Driver Version.
@@ -1086,6 +1089,7 @@ static int __init dwc_otg_driver_init(vo
@@ -1086,6 +1089,7 @@ static int __init dwc_otg_driver_init(void)
return retval;
}
printk(KERN_DEBUG "dwc_otg: FIQ %s\n", fiq_fix_enable ? "enabled":"disabled");
@ -32,7 +34,7 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
error = driver_create_file(drv, &driver_attr_version);
#ifdef DEBUG
@@ -1366,9 +1370,10 @@ MODULE_PARM_DESC(otg_ver, "OTG revision
@@ -1366,9 +1370,10 @@ MODULE_PARM_DESC(otg_ver, "OTG revision supported 0=OTG 1.3 1=OTG 2.0");
module_param(microframe_schedule, bool, 0444);
MODULE_PARM_DESC(microframe_schedule, "Enable the microframe scheduler");
@ -44,9 +46,11 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
/** @page "Module Parameters"
*
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 0ce7e46..2b7945a 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -527,6 +527,8 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_
@@ -527,6 +527,8 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * hcd,
{
dwc_otg_qh_t *qh;
dwc_otg_qtd_t *urb_qtd;
@ -55,7 +59,7 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
#ifdef DEBUG /* integrity checks (Broadcom) */
@@ -543,14 +545,17 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_
@@ -543,14 +545,17 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * hcd,
return -DWC_E_INVALID;
}
urb_qtd = dwc_otg_urb->qtd;
@ -73,7 +77,7 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) {
if (urb_qtd->in_process) {
dump_channel_info(hcd, qh);
@@ -1309,6 +1314,22 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1309,6 +1314,22 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
num_channels - hcd->periodic_channels) &&
!DWC_CIRCLEQ_EMPTY(&hcd->free_hc_list)) {
@ -96,7 +100,7 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
if (microframe_schedule) {
DWC_SPINLOCK_IRQSAVE(channel_lock, &flags);
if (hcd->available_host_channels < 1) {
@@ -1321,7 +1342,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1321,7 +1342,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
last_sel_trans_num_nonper_scheduled++;
#endif /* DEBUG_HOST_CHANNELS */
}
@ -104,6 +108,8 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
assign_and_init_hc(hcd, qh);
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
index 6d82127..45e44ea 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -321,6 +321,11 @@ typedef struct dwc_otg_qh {
@ -118,6 +124,8 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
/** (micro)frame at which last start split was initialized. */
uint16_t start_split_frame;
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 21e8f09..3e762e2 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -56,7 +56,12 @@ int fiq_done, int_done;
@ -143,7 +151,7 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
if((jiffies / HZ) > last_time)
{
/* Once a second output the fiq and irq numbers, useful for debug */
@@ -1419,6 +1424,18 @@ static int32_t handle_hc_nak_intr(dwc_ot
@@ -1419,6 +1424,18 @@ static int32_t handle_hc_nak_intr(dwc_otg_hcd_t * hcd,
"NAK Received--\n", hc->hc_num);
/*
@ -162,9 +170,11 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
* Handle NAK for IN/OUT SSPLIT/CSPLIT transfers, bulk, control, and
* interrupt. Re-start the SSPLIT transfer.
*/
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 ac10323..e6b2a7b 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -181,6 +181,7 @@ void qh_init(dwc_otg_hcd_t * hcd, dwc_ot
@@ -181,6 +181,7 @@ void qh_init(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, dwc_otg_hcd_urb_t * urb)
if (microframe_schedule)
qh->speed = dev_speed;
@ -172,7 +182,7 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
if (((dev_speed == USB_SPEED_LOW) ||
(dev_speed == USB_SPEED_FULL)) &&
@@ -764,6 +765,24 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_h
@@ -764,6 +765,24 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh,
int sched_next_periodic_split)
{
if (dwc_qh_is_non_per(qh)) {
@ -197,3 +207,6 @@ Subject: [PATCH 032/174] Add NAK holdoff scheme. Enabled by default, disable
dwc_otg_hcd_qh_remove(hcd, qh);
if (!DWC_CIRCLEQ_EMPTY(&qh->qtd_list)) {
/* Add back to inactive non-periodic schedule. */
--
1.9.1

View file

@ -1,7 +1,7 @@
From 40934fa5ae748fab27146883be929d4190b35c16 Mon Sep 17 00:00:00 2001
From 4c7d4bffe1986d856b37460f87950dabe29c616e Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 26 Mar 2013 19:24:24 +0000
Subject: [PATCH 033/174] Added hwmon/thermal driver for reporting core
Subject: [PATCH 033/196] Added hwmon/thermal driver for reporting core
temperature. Thanks Dorian
---
@ -16,9 +16,11 @@ Subject: [PATCH 033/174] Added hwmon/thermal driver for reporting core
create mode 100644 drivers/hwmon/bcm2835-hwmon.c
create mode 100644 drivers/thermal/bcm2835-thermal.c
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -562,6 +562,14 @@ static struct platform_device bcm2708_bs
Index: linux-3.10.49/arch/arm/mach-bcm2708/bcm2708.c
===================================================================
--- linux-3.10.49.orig/arch/arm/mach-bcm2708/bcm2708.c 2014-09-27 11:40:40.999449257 -0700
+++ linux-3.10.49/arch/arm/mach-bcm2708/bcm2708.c 2014-09-27 11:40:40.979449258 -0700
@@ -562,6 +562,14 @@
.resource = bcm2708_bsc1_resources,
};
@ -33,7 +35,7 @@ Subject: [PATCH 033/174] Added hwmon/thermal driver for reporting core
int __init bcm_register_device(struct platform_device *pdev)
{
int ret;
@@ -682,6 +690,9 @@ void __init bcm2708_init(void)
@@ -682,6 +690,9 @@
bcm_register_device(&bcm2708_bsc0_device);
bcm_register_device(&bcm2708_bsc1_device);
@ -43,9 +45,11 @@ Subject: [PATCH 033/174] Added hwmon/thermal driver for reporting core
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
amba_device_register(d, &iomem_resource);
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1537,6 +1537,16 @@ config SENSORS_MC13783_ADC
Index: linux-3.10.49/drivers/hwmon/Kconfig
===================================================================
--- linux-3.10.49.orig/drivers/hwmon/Kconfig 2014-09-27 11:40:40.999449257 -0700
+++ linux-3.10.49/drivers/hwmon/Kconfig 2014-09-27 11:40:40.979449258 -0700
@@ -1537,6 +1537,16 @@
help
Support for the A/D converter on MC13783 and MC13892 PMIC.
@ -62,8 +66,10 @@ Subject: [PATCH 033/174] Added hwmon/thermal driver for reporting core
if ACPI
comment "ACPI drivers"
--- /dev/null
+++ b/drivers/hwmon/bcm2835-hwmon.c
Index: linux-3.10.49/drivers/hwmon/bcm2835-hwmon.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-3.10.49/drivers/hwmon/bcm2835-hwmon.c 2014-09-27 11:40:40.979449258 -0700
@@ -0,0 +1,219 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@ -284,9 +290,11 @@ Subject: [PATCH 033/174] Added hwmon/thermal driver for reporting core
+MODULE_DESCRIPTION("HW Monitor driver for bcm2835 chip");
+
+module_platform_driver(bcm2835_hwmon_driver);
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -169,4 +169,11 @@ config INTEL_POWERCLAMP
Index: linux-3.10.49/drivers/thermal/Kconfig
===================================================================
--- linux-3.10.49.orig/drivers/thermal/Kconfig 2014-09-27 11:40:40.999449257 -0700
+++ linux-3.10.49/drivers/thermal/Kconfig 2014-09-27 11:40:40.983449258 -0700
@@ -169,4 +169,11 @@
enforce idle time which results in more package C-state residency. The
user interface is exposed via generic thermal framework.
@ -298,16 +306,20 @@ Subject: [PATCH 033/174] Added hwmon/thermal driver for reporting core
+
endif
+
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -23,4 +23,5 @@ obj-$(CONFIG_DB8500_THERMAL) += db8500_t
Index: linux-3.10.49/drivers/thermal/Makefile
===================================================================
--- linux-3.10.49.orig/drivers/thermal/Makefile 2014-09-27 11:40:40.999449257 -0700
+++ linux-3.10.49/drivers/thermal/Makefile 2014-09-27 11:40:40.983449258 -0700
@@ -23,4 +23,5 @@
obj-$(CONFIG_ARMADA_THERMAL) += armada_thermal.o
obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o
obj-$(CONFIG_INTEL_POWERCLAMP) += intel_powerclamp.o
+obj-$(CONFIG_THERMAL_BCM2835) += bcm2835-thermal.o
--- /dev/null
+++ b/drivers/thermal/bcm2835-thermal.c
Index: linux-3.10.49/drivers/thermal/bcm2835-thermal.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-3.10.49/drivers/thermal/bcm2835-thermal.c 2014-09-27 11:40:40.983449258 -0700
@@ -0,0 +1,208 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.

View file

@ -1,13 +1,15 @@
From dc54a9801e33f0e7c0685f0535b90237ab3d4837 Mon Sep 17 00:00:00 2001
From f9fb4aaaf959dc36b36a7ee1734fada2d68da15f Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Thu, 19 Jul 2012 16:00:28 +0100
Subject: [PATCH 034/174] config: add missing options from 3.6.y kernel
Subject: [PATCH 034/196] config: add missing options from 3.6.y kernel
---
arch/arm/configs/bcmrpi_defconfig | 653 ++++++++++++++++++++++++++-----
drivers/net/wireless/ath/ath9k/hif_usb.c | 2 +
2 files changed, 564 insertions(+), 91 deletions(-)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 6219df3..36fcd49 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -1,11 +1,17 @@
@ -927,9 +929,11 @@ Subject: [PATCH 034/174] config: add missing options from 3.6.y kernel
# CONFIG_CRYPTO_ANSI_CPRNG is not set
# CONFIG_CRYPTO_HW is not set
CONFIG_CRC_ITU_T=y
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
index 75a6376..8cb8d8d 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
@@ -37,9 +37,11 @@ static struct usb_device_id ath9k_hif_us
@@ -37,9 +37,11 @@ static struct usb_device_id ath9k_hif_usb_ids[] = {
{ USB_DEVICE(0x13D3, 0x3350) }, /* Azurewave */
{ USB_DEVICE(0x04CA, 0x4605) }, /* Liteon */
{ USB_DEVICE(0x040D, 0x3801) }, /* VIA */
@ -941,3 +945,6 @@ Subject: [PATCH 034/174] config: add missing options from 3.6.y kernel
{ USB_DEVICE(0x0cf3, 0x7015),
.driver_info = AR9287_USB }, /* Atheros */
--
1.9.1

View file

@ -1,15 +1,17 @@
From 10a2ded6cbf58da71121f0c7a35462f52f49dfae Mon Sep 17 00:00:00 2001
From 2be2a87be13a5e4df2e3afb13a6089fcd7073906 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 17 Apr 2013 12:16:36 +0100
Subject: [PATCH 035/174] Enable multiple ALSA channels
Subject: [PATCH 035/196] Enable multiple ALSA channels
---
arch/arm/mach-bcm2708/bcm2708.c | 54 ++++++++++++++++++++++++++++++++++++-----
1 file changed, 48 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index ab8bac6..5a7437b 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -471,12 +471,54 @@ struct platform_device bcm2708_powerman_
@@ -471,12 +471,54 @@ struct platform_device bcm2708_powerman_device = {
static struct platform_device bcm2708_alsa_devices[] = {
@ -70,3 +72,6 @@ Subject: [PATCH 035/174] Enable multiple ALSA channels
};
static struct resource bcm2708_spi_resources[] = {
--
1.9.1

View file

@ -1,7 +1,7 @@
From 17bb1be5d09fe58cd14084c5eac0052f03d6d71f Mon Sep 17 00:00:00 2001
From ec78c7da4fe9f7289cdc3e948b70a43c900f2be4 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Oct 2012 20:08:19 +0100
Subject: [PATCH 036/174] set i2c speed via module-parameter or menuconfig.
Subject: [PATCH 036/196] set i2c speed via module-parameter or menuconfig.
Thanks FrankBoesing
---
@ -9,9 +9,11 @@ Subject: [PATCH 036/174] set i2c speed via module-parameter or menuconfig.
drivers/i2c/busses/i2c-bcm2708.c | 12 ++++++++----
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 290aee4..abaff1a 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -353,6 +353,17 @@ config I2C_BCM2708
@@ -355,6 +355,17 @@ config I2C_BCM2708
support for the BCM2708. BSC is a Broadcom proprietary bus compatible
with I2C/TWI/SMBus.
@ -29,6 +31,8 @@ Subject: [PATCH 036/174] set i2c speed via module-parameter or menuconfig.
config I2C_BLACKFIN_TWI
tristate "Blackfin TWI I2C support"
depends on BLACKFIN
diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c
index 7cae615..3391889 100644
--- a/drivers/i2c/busses/i2c-bcm2708.c
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -66,11 +66,15 @@
@ -48,7 +52,7 @@ Subject: [PATCH 036/174] set i2c speed via module-parameter or menuconfig.
struct bcm2708_i2c {
struct i2c_adapter adapter;
@@ -148,7 +152,7 @@ static inline void bcm2708_bsc_setup(str
@@ -148,7 +152,7 @@ static inline void bcm2708_bsc_setup(struct bcm2708_i2c *bi)
u32 c = BSC_C_I2CEN | BSC_C_INTD | BSC_C_ST | BSC_C_CLEAR_1;
bus_hz = clk_get_rate(bi->clk);
@ -57,7 +61,7 @@ Subject: [PATCH 036/174] set i2c speed via module-parameter or menuconfig.
if (bi->msg->flags & I2C_M_RD)
c |= BSC_C_INTR | BSC_C_READ;
@@ -331,8 +335,8 @@ static int bcm2708_i2c_probe(struct plat
@@ -331,8 +335,8 @@ static int bcm2708_i2c_probe(struct platform_device *pdev)
goto out_free_irq;
}
@ -68,3 +72,6 @@ Subject: [PATCH 036/174] set i2c speed via module-parameter or menuconfig.
return 0;
--
1.9.1

View file

@ -1,7 +1,7 @@
From addefb978a42b1699979ef8ecef08a01977dfd7d Mon Sep 17 00:00:00 2001
From 674d82a3db9b47a7772ac732a560979ea22d5c3d Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Oct 2012 21:31:48 +0100
Subject: [PATCH 037/174] Allow the number of cycles delay between sdcard
Subject: [PATCH 037/196] Allow the number of cycles delay between sdcard
peripheral writes to be specified on command line with
sdhci-bcm2708.cycle_delay
@ -9,6 +9,8 @@ Subject: [PATCH 037/174] Allow the number of cycles delay between sdcard
drivers/mmc/host/sdhci-bcm2708.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 7ce2829..ffd7310 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -77,6 +77,8 @@
@ -20,7 +22,7 @@ Subject: [PATCH 037/174] Allow the number of cycles delay between sdcard
/*****************************************************************************\
* *
* Debug *
@@ -249,7 +251,7 @@ static void sdhci_bcm2708_raw_writel(str
@@ -249,7 +251,7 @@ static void sdhci_bcm2708_raw_writel(struct sdhci_host *host, u32 val, int reg)
/* host->clock is the clock freq in Hz */
static hptime_t last_write_hpt;
hptime_t now = hptime();
@ -29,7 +31,7 @@ Subject: [PATCH 037/174] Allow the number of cycles delay between sdcard
if (now == last_write_hpt || now == last_write_hpt+1) {
/* we can't guarantee any significant time has
@@ -1388,6 +1390,7 @@ module_param(emmc_clock_freq, int, 0444)
@@ -1388,6 +1390,7 @@ module_param(emmc_clock_freq, int, 0444);
module_param(sync_after_dma, bool, 0444);
module_param(missing_status, bool, 0444);
module_param(enable_llm, bool, 0444);
@ -37,3 +39,6 @@ Subject: [PATCH 037/174] Allow the number of cycles delay between sdcard
MODULE_DESCRIPTION("Secure Digital Host Controller Interface platform driver");
MODULE_AUTHOR("Broadcom <info@broadcom.com>");
--
1.9.1

View file

@ -1,7 +1,7 @@
From d6442f505a7bf1bebe9bd4689d021f007a269cd6 Mon Sep 17 00:00:00 2001
From d94e2bd60b27f2ff7d6e9ff7ee43848bb2090c06 Mon Sep 17 00:00:00 2001
From: dero <de@ro>
Date: Mon, 19 Nov 2012 12:46:06 +0100
Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
Subject: [PATCH 038/196] Lazy CRC quirk: Implemented retrying mechanisms for
SD SSR and SCR, disabled missing_status and spurious CRC ACMD51 quirks by
default (should be fixed by the retrying-mechanishm)
@ -10,6 +10,8 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
drivers/mmc/host/sdhci-bcm2708.c | 11 +++-
2 files changed, 108 insertions(+), 18 deletions(-)
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 9e645e1..1ee6cf3 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -13,6 +13,8 @@
@ -21,7 +23,7 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
#include <linux/mmc/host.h>
#include <linux/mmc/card.h>
@@ -58,6 +60,15 @@ static const unsigned int tacc_mant[] =
@@ -58,6 +60,15 @@ static const unsigned int tacc_mant[] = {
__res & __mask; \
})
@ -37,7 +39,7 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
/*
* Given the decoded CSD structure, decode the raw CID to our CID structure.
*/
@@ -210,12 +221,62 @@ static int mmc_decode_scr(struct mmc_car
@@ -210,12 +221,62 @@ static int mmc_decode_scr(struct mmc_card *card)
}
/*
@ -102,7 +104,7 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
u32 *ssr;
if (!(card->csd.cmdclass & CCC_APP_SPEC)) {
@@ -227,15 +288,41 @@ static int mmc_read_ssr(struct mmc_card
@@ -227,15 +288,41 @@ static int mmc_read_ssr(struct mmc_card *card)
ssr = kmalloc(64, GFP_KERNEL);
if (!ssr)
return -ENOMEM;
@ -150,7 +152,7 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
for (i = 0; i < 16; i++)
ssr[i] = be32_to_cpu(ssr[i]);
@@ -808,15 +895,11 @@ int mmc_sd_setup_card(struct mmc_host *h
@@ -808,15 +895,11 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card,
if (!reinit) {
/*
@ -170,6 +172,8 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
/*
* Fetch and process SD Status register.
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index ffd7310..3556ed3 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -137,6 +137,7 @@ static bool allow_highspeed = 1;
@ -180,7 +184,7 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
bool enable_llm = 1;
#if 0
@@ -1103,7 +1104,7 @@ static unsigned int sdhci_bcm2708_quirk_
@@ -1103,7 +1104,7 @@ static unsigned int sdhci_bcm2708_quirk_extra_ints(struct sdhci_host *host)
return 1;
}
@ -189,7 +193,7 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
{
return 1;
}
@@ -1149,7 +1150,6 @@ static struct sdhci_ops sdhci_bcm2708_op
@@ -1149,7 +1150,6 @@ static struct sdhci_ops sdhci_bcm2708_ops = {
.pdma_reset = sdhci_bcm2708_platdma_reset,
#endif
.extra_ints = sdhci_bcm2708_quirk_extra_ints,
@ -197,7 +201,7 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
.voltage_broken = sdhci_bcm2708_quirk_voltage_broken,
.uhs_broken = sdhci_bcm2708_uhs_broken,
};
@@ -1194,6 +1194,11 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1194,6 +1194,11 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
sdhci_bcm2708_ops.missing_status = sdhci_bcm2708_missing_status;
}
@ -209,7 +213,7 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
printk("sdhci: %s low-latency mode\n",enable_llm?"Enable":"Disable");
host->hw_name = "BCM2708_Arasan";
@@ -1389,6 +1394,7 @@ module_param(allow_highspeed, bool, 0444
@@ -1389,6 +1394,7 @@ module_param(allow_highspeed, bool, 0444);
module_param(emmc_clock_freq, int, 0444);
module_param(sync_after_dma, bool, 0444);
module_param(missing_status, bool, 0444);
@ -217,7 +221,7 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
module_param(enable_llm, bool, 0444);
module_param(cycle_delay, int, 0444);
@@ -1401,6 +1407,7 @@ MODULE_PARM_DESC(allow_highspeed, "Allow
@@ -1401,6 +1407,7 @@ MODULE_PARM_DESC(allow_highspeed, "Allow high speed transfers modes");
MODULE_PARM_DESC(emmc_clock_freq, "Specify the speed of emmc clock");
MODULE_PARM_DESC(sync_after_dma, "Block in driver until dma complete");
MODULE_PARM_DESC(missing_status, "Use the missing status quirk");
@ -225,3 +229,6 @@ Subject: [PATCH 038/174] Lazy CRC quirk: Implemented retrying mechanisms for
MODULE_PARM_DESC(enable_llm, "Enable low-latency mode");
--
1.9.1

View file

@ -1,12 +1,14 @@
From bf571a571b090c16cd49458126e996243d8a2626 Mon Sep 17 00:00:00 2001
From 4998fad71d9539a6f6e28c7ad54142950c85cbe5 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Thu, 28 Mar 2013 00:10:32 +0000
Subject: [PATCH 039/174] bcm2708: Add vc_cma driver to enable use of CMA
Subject: [PATCH 039/196] bcm2708: Add vc_cma driver to enable use of CMA
---
arch/arm/mach-bcm2708/bcm2708.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index 5a7437b..13b91de 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -60,6 +60,11 @@
@ -53,3 +55,6 @@ Subject: [PATCH 039/174] bcm2708: Add vc_cma driver to enable use of CMA
MACHINE_END
module_param(boardrev, uint, 0644);
--
1.9.1

View file

@ -1,12 +1,14 @@
From c7502584abba164c1cda1378c86e95cd879e1e1a Mon Sep 17 00:00:00 2001
From 6b194b997f5deb970901d3aaabd9effe4a5d5071 Mon Sep 17 00:00:00 2001
From: Gordon Hollingworth <gordon@holliweb.co.uk>
Date: Sun, 4 Nov 2012 15:55:01 +0000
Subject: [PATCH 040/174] Make sure we wait for the reset to finish
Subject: [PATCH 040/196] Make sure we wait for the reset to finish
---
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 2 ++
1 file changed, 2 insertions(+)
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 3e762e2..e8c91e7 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -232,6 +232,8 @@ exit_handler_routine:
@ -18,3 +20,6 @@ Subject: [PATCH 040/174] Make sure we wait for the reset to finish
DWC_WRITE_REG32(c_mphi_regs.ctrl, (1<<31));
mphi_int_count = 0;
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From 87b48ac64b6b2aeb97b53eee080e74cb83ff25fe Mon Sep 17 00:00:00 2001
From ed83da894caf28e267eab3a01ef037a7198391a1 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 19 Nov 2012 18:27:05 +0000
Subject: [PATCH 041/174] Add Simon Hall's dma helper module, useful in future
Subject: [PATCH 041/196] Add Simon Hall's dma helper module, useful in future
for X acceleration
---
@ -15,6 +15,8 @@ Subject: [PATCH 041/174] Add Simon Hall's dma helper module, useful in future
create mode 100755 arch/arm/mach-bcm2708/include/mach/vc_support.h
create mode 100755 arch/arm/mach-bcm2708/vc_support.c
diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig
index a35ff89..b85bb8d 100644
--- a/arch/arm/mach-bcm2708/Kconfig
+++ b/arch/arm/mach-bcm2708/Kconfig
@@ -38,4 +38,12 @@ config BCM2708_SPIDEV
@ -30,15 +32,20 @@ Subject: [PATCH 041/174] Add Simon Hall's dma helper module, useful in future
+ Enable DMA helper for accelerating X composition
+
endmenu
diff --git a/arch/arm/mach-bcm2708/Makefile b/arch/arm/mach-bcm2708/Makefile
index 164ecb2..0da162c 100644
--- a/arch/arm/mach-bcm2708/Makefile
+++ b/arch/arm/mach-bcm2708/Makefile
@@ -6,3 +6,6 @@ obj-$(CONFIG_MACH_BCM2708) += clock.o b
@@ -6,3 +6,6 @@ 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
+obj-$(CONFIG_BCM2708_DMAER) += dmaer_master.o
+dmaer_master-objs := dmaer.o vc_support.o
+
diff --git a/arch/arm/mach-bcm2708/dmaer.c b/arch/arm/mach-bcm2708/dmaer.c
new file mode 100755
index 0000000..d1bc0fa
--- /dev/null
+++ b/arch/arm/mach-bcm2708/dmaer.c
@@ -0,0 +1,887 @@
@ -929,6 +936,9 @@ Subject: [PATCH 041/174] Add Simon Hall's dma helper module, useful in future
+module_init(dmaer_init);
+module_exit(dmaer_exit);
+
diff --git a/arch/arm/mach-bcm2708/include/mach/vc_support.h b/arch/arm/mach-bcm2708/include/mach/vc_support.h
new file mode 100755
index 0000000..70e809f
--- /dev/null
+++ b/arch/arm/mach-bcm2708/include/mach/vc_support.h
@@ -0,0 +1,69 @@
@ -1001,6 +1011,9 @@ Subject: [PATCH 041/174] Add Simon Hall's dma helper module, useful in future
+ unsigned int r0, unsigned int r1, unsigned int r2, unsigned int r3, unsigned int r4, unsigned int r5);
+
+#endif
diff --git a/arch/arm/mach-bcm2708/vc_support.c b/arch/arm/mach-bcm2708/vc_support.c
new file mode 100755
index 0000000..5cb1335
--- /dev/null
+++ b/arch/arm/mach-bcm2708/vc_support.c
@@ -0,0 +1,319 @@
@ -1323,3 +1336,6 @@ Subject: [PATCH 041/174] Add Simon Hall's dma helper module, useful in future
+ }
+}
+
--
1.9.1

View file

@ -1,7 +1,7 @@
From b7496d2df33f324ee6854c600944b50a011d95e0 Mon Sep 17 00:00:00 2001
From d00af9c32e369be7d5f270cc18cbc10950213727 Mon Sep 17 00:00:00 2001
From: Aron Szabo <aron@aron.ws>
Date: Sat, 16 Jun 2012 12:15:55 +0200
Subject: [PATCH 042/174] lirc: added support for RaspberryPi GPIO
Subject: [PATCH 042/196] lirc: added support for RaspberryPi GPIO
---
drivers/staging/media/lirc/Kconfig | 6 +
@ -10,6 +10,8 @@ Subject: [PATCH 042/174] lirc: added support for RaspberryPi GPIO
3 files changed, 694 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
@ -25,6 +27,8 @@ Subject: [PATCH 042/174] lirc: added support for RaspberryPi GPIO
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
@ -35,6 +39,9 @@ Subject: [PATCH 042/174] lirc: added support for RaspberryPi GPIO
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..96acab0
--- /dev/null
+++ b/drivers/staging/media/lirc/lirc_rpi.c
@@ -0,0 +1,687 @@
@ -725,3 +732,6 @@ Subject: [PATCH 042/174] lirc: added support for RaspberryPi GPIO
+
+module_param(debug, bool, S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(debug, "Enable debugging messages");
--
1.9.1

View file

@ -1,15 +1,17 @@
From 2a720d265e89fc6145b87420c4cefec1582afa80 Mon Sep 17 00:00:00 2001
From c634eb696026a3e9d36f2604d6d117ba6af9ceeb Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 11 Dec 2012 18:23:03 +0000
Subject: [PATCH 043/174] Default to dwc_otp.lpm_enable=0
Subject: [PATCH 043/196] Default to dwc_otp.lpm_enable=0
---
drivers/usb/host/dwc_otg/dwc_otg_driver.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.c b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
index d353a9a..cea8fcb 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_driver.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
@@ -228,7 +228,7 @@ static struct dwc_otg_driver_module_para
@@ -228,7 +228,7 @@ static struct dwc_otg_driver_module_params dwc_otg_module_params = {
.rx_thr_length = -1,
.pti_enable = -1,
.mpi_enable = -1,
@ -18,3 +20,6 @@ Subject: [PATCH 043/174] Default to dwc_otp.lpm_enable=0
.ic_usb_cap = -1,
.ahb_thr_ratio = -1,
.power_down = -1,
--
1.9.1

View file

@ -1,7 +1,7 @@
From 17b1eb8e7fdbca81bc6d74c003b02ca3b08f1fa4 Mon Sep 17 00:00:00 2001
From 9ffc237e5d245d9eda21b10b82dab448ec920620 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Wed, 9 Jan 2013 16:12:04 +0000
Subject: [PATCH 044/174] dwc_otg: fix bug in dwc_otg_hcd.c resulting in silent
Subject: [PATCH 044/196] dwc_otg: fix bug in dwc_otg_hcd.c resulting in silent
kernel memory corruption, escalating to OOPS under high USB load.
---
@ -9,9 +9,11 @@ Subject: [PATCH 044/174] dwc_otg: fix bug in dwc_otg_hcd.c resulting in silent
drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c | 1 +
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 2b7945a..d5c94f4 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -500,8 +500,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
@@ -500,8 +500,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
DWC_ERROR("DWC OTG HCD URB Enqueue failed adding QTD. "
"Error status %d\n", retval);
dwc_otg_hcd_qtd_free(qtd);
@ -20,9 +22,11 @@ Subject: [PATCH 044/174] dwc_otg: fix bug in dwc_otg_hcd.c resulting in silent
}
intr_mask.d32 = DWC_READ_REG32(&hcd->core_if->core_global_regs->gintmsk);
if (!intr_mask.b.sofintr && retval == 0) {
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
index e6b2a7b..b337e1b 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -946,6 +946,7 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
@@ -946,6 +946,7 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
if (retval == 0) {
DWC_CIRCLEQ_INSERT_TAIL(&((*qh)->qtd_list), qtd,
qtd_list_entry);
@ -30,3 +34,6 @@ Subject: [PATCH 044/174] dwc_otg: fix bug in dwc_otg_hcd.c resulting in silent
}
DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags);
--
1.9.1

View file

@ -1,16 +1,18 @@
From 96bf154aade59a5527611b93bdc3ff5faf8ecc10 Mon Sep 17 00:00:00 2001
From 3edf2fdaaf5c1b126e3e93519dcc1fea2e7954c5 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 21 Jan 2013 23:03:53 +0000
Subject: [PATCH 045/174] Return error value from bcm2708_setup_state. Thanks
Subject: [PATCH 045/196] Return error value from bcm2708_setup_state. Thanks
notro
---
drivers/spi/spi-bcm2708.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c
index 9f1580e..8513704 100644
--- a/drivers/spi/spi-bcm2708.c
+++ b/drivers/spi/spi-bcm2708.c
@@ -378,6 +378,7 @@ static int bcm2708_spi_setup(struct spi_
@@ -378,6 +378,7 @@ static int bcm2708_spi_setup(struct spi_device *spi)
if (ret < 0) {
kfree(state);
spi->controller_state = NULL;
@ -18,3 +20,6 @@ Subject: [PATCH 045/174] Return error value from bcm2708_setup_state. Thanks
}
dev_dbg(&spi->dev,
--
1.9.1

View file

@ -1,7 +1,7 @@
From 444149f35455bfe551ce9dfa21d00b5b34ffb04f Mon Sep 17 00:00:00 2001
From 78948302252dcffa18716390f784ba03e4320c67 Mon Sep 17 00:00:00 2001
From: Kamal Mostafa <kamal@whence.com>
Date: Mon, 22 Oct 2012 15:52:44 -0700
Subject: [PATCH 046/174] spi/spi-bcm2708: respect per-transfer SPI clock
Subject: [PATCH 046/196] spi/spi-bcm2708: respect per-transfer SPI clock
speed_hz value
The bcm2708 SPI driver's bcm2708_process_transfer() was ignoring the
@ -17,9 +17,11 @@ Signed-off-by: Kamal Mostafa <kamal@whence.com>
drivers/spi/spi-bcm2708.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c
index 8513704..b74aa32 100644
--- a/drivers/spi/spi-bcm2708.c
+++ b/drivers/spi/spi-bcm2708.c
@@ -259,6 +259,10 @@ static int bcm2708_setup_state(struct sp
@@ -259,6 +259,10 @@ static int bcm2708_setup_state(struct spi_master *master,
if (state) {
state->cs = cs;
state->cdiv = cdiv;
@ -30,7 +32,7 @@ Signed-off-by: Kamal Mostafa <kamal@whence.com>
}
return 0;
@@ -277,7 +281,8 @@ static int bcm2708_process_transfer(stru
@@ -277,7 +281,8 @@ static int bcm2708_process_transfer(struct bcm2708_spi *bs,
if (xfer->bits_per_word || xfer->speed_hz) {
ret = bcm2708_setup_state(spi->master, &spi->dev, &state,
@ -40,3 +42,6 @@ Signed-off-by: Kamal Mostafa <kamal@whence.com>
spi->bits_per_word);
if (ret)
return ret;
--
1.9.1

View file

@ -1,7 +1,7 @@
From 8a467ffd4cdce4f87c363c24be193b99b2688126 Mon Sep 17 00:00:00 2001
From 1ecfdf8a7a08d52d238dc132c85d37966ca58737 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 00:51:55 +0100
Subject: [PATCH 047/174] Add hwrng (hardware random number generator) driver
Subject: [PATCH 047/196] Add hwrng (hardware random number generator) driver
---
arch/arm/mach-bcm2708/include/mach/platform.h | 1 +
@ -11,6 +11,8 @@ Subject: [PATCH 047/174] Add hwrng (hardware random number generator) driver
4 files changed, 131 insertions(+)
create mode 100755 drivers/char/hw_random/bcm2708-rng.c
diff --git a/arch/arm/mach-bcm2708/include/mach/platform.h b/arch/arm/mach-bcm2708/include/mach/platform.h
index 89e72d1..992a630 100644
--- a/arch/arm/mach-bcm2708/include/mach/platform.h
+++ b/arch/arm/mach-bcm2708/include/mach/platform.h
@@ -62,6 +62,7 @@
@ -21,6 +23,8 @@ Subject: [PATCH 047/174] Add hwrng (hardware random number generator) driver
#define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) /* GPIO */
#define UART0_BASE (BCM2708_PERI_BASE + 0x201000) /* Uart 0 */
#define MMCI0_BASE (BCM2708_PERI_BASE + 0x202000) /* MMC interface */
diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index 2f9dbf7..d725a53 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -314,3 +314,15 @@ config HW_RANDOM_TPM
@ -39,13 +43,18 @@ Subject: [PATCH 047/174] Add hwrng (hardware random number generator) driver
+
+ If unsure, say N.
+
diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
index bed467c..18fc4d4 100644
--- a/drivers/char/hw_random/Makefile
+++ b/drivers/char/hw_random/Makefile
@@ -27,3 +27,4 @@ obj-$(CONFIG_HW_RANDOM_PSERIES) += pseri
@@ -27,3 +27,4 @@ obj-$(CONFIG_HW_RANDOM_PSERIES) += pseries-rng.o
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
diff --git a/drivers/char/hw_random/bcm2708-rng.c b/drivers/char/hw_random/bcm2708-rng.c
new file mode 100755
index 0000000..1ffa7d7
--- /dev/null
+++ b/drivers/char/hw_random/bcm2708-rng.c
@@ -0,0 +1,117 @@
@ -166,3 +175,6 @@ Subject: [PATCH 047/174] Add hwrng (hardware random number generator) driver
+
+MODULE_DESCRIPTION("BCM2708 H/W Random Number Generator (RNG) driver");
+MODULE_LICENSE("GPL and additional rights");
--
1.9.1

View file

@ -1,7 +1,7 @@
From 2d37b2d242b41270a7ae1aeccfe06fc253e8d180 Mon Sep 17 00:00:00 2001
From 054157625ec6b69ba0f66d4337986122ce9e8d82 Mon Sep 17 00:00:00 2001
From: Technion <Technion>
Date: Mon, 11 Feb 2013 22:08:53 +1100
Subject: [PATCH 048/174] Changed wording on logging. Previously, we received
Subject: [PATCH 048/196] Changed wording on logging. Previously, we received
errors like this: mmc0: could read SD Status register (SSR) at the 3th
attempt A more sensible response is now returned. A typo also fixed in
comments.
@ -10,9 +10,11 @@ Subject: [PATCH 048/174] Changed wording on logging. Previously, we received
drivers/mmc/core/sd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 1ee6cf3..90228f9 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -238,7 +238,7 @@ static int mmc_read_scr(struct mmc_card
@@ -238,7 +238,7 @@ static int mmc_read_scr(struct mmc_card *card)
err = mmc_app_send_scr(card, card->raw_scr);
if( !err )
@ -21,7 +23,7 @@ Subject: [PATCH 048/174] Changed wording on logging. Previously, we received
touch_nmi_watchdog(); // we are still alive!
@@ -320,7 +320,7 @@ static int mmc_read_ssr(struct mmc_card
@@ -320,7 +320,7 @@ static int mmc_read_ssr(struct mmc_card *card)
if( tries > 1 )
{
@ -30,3 +32,6 @@ Subject: [PATCH 048/174] Changed wording on logging. Previously, we received
}
for (i = 0; i < 16; i++)
--
1.9.1

View file

@ -1,7 +1,7 @@
From 08e3e98d28e32852e43bf25fb3e64bb3f5e6af4d Mon Sep 17 00:00:00 2001
From 1ef8aaf1ef348a22b72ba4367c5e2e5727542f59 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Fri, 15 Feb 2013 22:36:47 +0000
Subject: [PATCH 049/174] dwc_otg: Fix unsafe access of QTD during URB enqueue
Subject: [PATCH 049/196] dwc_otg: Fix unsafe access of QTD during URB enqueue
In dwc_otg_hcd_urb_enqueue during qtd creation, it was possible that the
transaction could complete almost immediately after the qtd was assigned
@ -17,9 +17,11 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c | 2 +-
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index d5c94f4..e653d84 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -462,6 +462,8 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
@@ -462,6 +462,8 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
{
dwc_irqflags_t flags;
int retval = 0;
@ -28,7 +30,7 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
dwc_otg_qtd_t *qtd;
gintmsk_data_t intr_mask = {.d32 = 0 };
@@ -493,22 +495,22 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
@@ -493,22 +495,22 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
return -DWC_E_NO_MEMORY;
}
#endif
@ -61,7 +63,7 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags);
tr_type = dwc_otg_hcd_select_transactions(hcd);
if (tr_type != DWC_OTG_TRANSACTION_NONE) {
@@ -516,7 +518,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
@@ -516,7 +518,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
}
DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags);
}
@ -69,9 +71,11 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
return retval;
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
index b337e1b..b3e6e52 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -937,7 +937,7 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
@@ -937,7 +937,7 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
if (*qh == NULL) {
*qh = dwc_otg_hcd_qh_create(hcd, urb, atomic_alloc);
if (*qh == NULL) {
@ -80,3 +84,6 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
goto done;
}
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From e3e9b6dbd5507ea5e571acae3ef6ed2e2d5dadcf Mon Sep 17 00:00:00 2001
From 65eba02bb428a4c572b5d3109e939a5e84a54747 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Fri, 15 Feb 2013 22:38:40 +0000
Subject: [PATCH 050/174] dwc_otg: Fix incorrect URB allocation error handling
Subject: [PATCH 050/196] dwc_otg: Fix incorrect URB allocation error handling
If the memory allocation for a dwc_otg_urb failed, the kernel would OOPS
because for some reason a member of the *unallocated* struct was set to
@ -10,9 +10,11 @@ zero. Error handling changed to fail correctly.
drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index e653d84..fcec97f 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -3136,17 +3136,13 @@ dwc_otg_hcd_urb_t *dwc_otg_hcd_urb_alloc
@@ -3136,17 +3136,13 @@ dwc_otg_hcd_urb_t *dwc_otg_hcd_urb_alloc(dwc_otg_hcd_t * hcd,
else
dwc_otg_urb = DWC_ALLOC(size);
@ -36,3 +38,6 @@ zero. Error handling changed to fail correctly.
return dwc_otg_urb;
}
--
1.9.1

View file

@ -1,12 +1,14 @@
From f1f13a6b3798161ccc3852320bd2184b85c9209b Mon Sep 17 00:00:00 2001
From 09eb4e8210da3acb95f874f3ed2292f13e1f6ad3 Mon Sep 17 00:00:00 2001
From: pjennings <pjennings-git@pjennings.net>
Date: Wed, 20 Feb 2013 17:51:43 -0600
Subject: [PATCH 051/174] Added inverted transmitter support
Subject: [PATCH 051/196] Added inverted transmitter support
---
drivers/staging/media/lirc/lirc_rpi.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/drivers/staging/media/lirc/lirc_rpi.c b/drivers/staging/media/lirc/lirc_rpi.c
index 96acab0..5bb0dfe 100644
--- a/drivers/staging/media/lirc/lirc_rpi.c
+++ b/drivers/staging/media/lirc/lirc_rpi.c
@@ -68,6 +68,8 @@ static int debug;
@ -18,7 +20,7 @@ Subject: [PATCH 051/174] Added inverted transmitter support
struct gpio_chip *gpiochip;
struct irq_chip *irqchip;
@@ -135,10 +137,10 @@ static long send_pulse_softcarrier(unsig
@@ -135,10 +137,10 @@ static long send_pulse_softcarrier(unsigned long length)
actual = 0; target = 0; flag = 0;
while (actual < length) {
if (flag) {
@ -31,7 +33,7 @@ Subject: [PATCH 051/174] Added inverted transmitter support
target += pulse_width;
}
d = (target - actual -
@@ -162,7 +164,7 @@ static long send_pulse(unsigned long len
@@ -162,7 +164,7 @@ static long send_pulse(unsigned long length)
if (softcarrier) {
return send_pulse_softcarrier(length);
} else {
@ -40,7 +42,7 @@ Subject: [PATCH 051/174] Added inverted transmitter support
safe_udelay(length);
return 0;
}
@@ -170,7 +172,7 @@ static long send_pulse(unsigned long len
@@ -170,7 +172,7 @@ static long send_pulse(unsigned long length)
static void send_space(long length)
{
@ -58,7 +60,7 @@ Subject: [PATCH 051/174] Added inverted transmitter support
irq = gpiochip->to_irq(gpiochip, gpio_in_pin);
dprintk("to_irq %d\n", irq);
@@ -457,7 +459,7 @@ static ssize_t lirc_write(struct file *f
@@ -457,7 +459,7 @@ static ssize_t lirc_write(struct file *file, const char *buf,
else
delta = send_pulse(wbuf[i]);
}
@ -67,7 +69,7 @@ Subject: [PATCH 051/174] Added inverted transmitter support
spin_unlock_irqrestore(&lock, flags);
kfree(wbuf);
@@ -683,5 +685,8 @@ MODULE_PARM_DESC(sense, "Override autode
@@ -683,5 +685,8 @@ MODULE_PARM_DESC(sense, "Override autodetection of IR receiver circuit"
module_param(softcarrier, bool, S_IRUGO);
MODULE_PARM_DESC(softcarrier, "Software carrier (0 = off, 1 = on, default on)");
@ -76,3 +78,6 @@ Subject: [PATCH 051/174] Added inverted transmitter support
+
module_param(debug, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(debug, "Enable debugging messages");
--
1.9.1

View file

@ -1,12 +1,14 @@
From 2e7a6ee154b800b1e749e99d20a29673eea70aa1 Mon Sep 17 00:00:00 2001
From 1234701636ab3dca340a336aa9ddfadd64914e58 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sun, 24 Feb 2013 16:30:57 +0000
Subject: [PATCH 052/174] Add retry on error and tidy of temperature driver
Subject: [PATCH 052/196] Add retry on error and tidy of temperature driver
---
drivers/thermal/bcm2835-thermal.c | 78 ++++++++++++++-------------------------
1 file changed, 27 insertions(+), 51 deletions(-)
diff --git a/drivers/thermal/bcm2835-thermal.c b/drivers/thermal/bcm2835-thermal.c
index 3f9a733..85fceb5 100644
--- a/drivers/thermal/bcm2835-thermal.c
+++ b/drivers/thermal/bcm2835-thermal.c
@@ -33,7 +33,6 @@
@ -30,7 +32,7 @@ Subject: [PATCH 052/174] Add retry on error and tidy of temperature driver
/* --- GLOBALS --- */
static struct bcm2835_thermal_data bcm2835_data;
@@ -79,64 +72,47 @@ static struct bcm2835_thermal_data bcm28
@@ -79,64 +72,47 @@ static struct bcm2835_thermal_data bcm2835_data;
static struct thermal_zone_device_ops ops;
/* --- FUNCTIONS --- */
@ -122,3 +124,6 @@ Subject: [PATCH 052/174] Add retry on error and tidy of temperature driver
static int bcm2835_get_trip_type(struct thermal_zone_device * thermal_dev, int trip_num, enum thermal_trip_type *trip_type)
{
--
1.9.1

View file

@ -1,7 +1,7 @@
From 51d7ae6f936ea32dedbe423fab97e3281994fe82 Mon Sep 17 00:00:00 2001
From 898039471876ec67191d7afcabea38ac5e90285a Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Thu, 28 Feb 2013 16:52:51 +0000
Subject: [PATCH 053/174] dwc_otg: fix potential use-after-free case in
Subject: [PATCH 053/196] dwc_otg: fix potential use-after-free case in
interrupt handler
If a transaction had previously aborted, certain interrupts are
@ -15,9 +15,11 @@ the QTD memory space with a 1-byte length being overwritten to
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
index e8c91e7..0c81a64 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -2223,7 +2223,8 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
@@ -2223,7 +2223,8 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
retval |= handle_hc_nak_intr(dwc_otg_hcd, hc, hc_regs, qtd);
}
if (hcint.b.ack) {
@ -27,3 +29,6 @@ the QTD memory space with a 1-byte length being overwritten to
}
if (hcint.b.nyet) {
retval |= handle_hc_nyet_intr(dwc_otg_hcd, hc, hc_regs, qtd);
--
1.9.1

View file

@ -1,7 +1,7 @@
From f90755cd13b722cd3ea79bee92c29d2828b3905f Mon Sep 17 00:00:00 2001
From 70303c1e07d940f6f0b2b8b9359930be1c0f566e Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Sun, 3 Mar 2013 14:45:53 +0000
Subject: [PATCH 054/174] dwc_otg: add handling of SPLIT transaction data
Subject: [PATCH 054/196] dwc_otg: add handling of SPLIT transaction data
toggle errors
Previously a data toggle error on packets from a USB1.1 device behind
@ -13,9 +13,11 @@ for devices that have a broken initial toggle state (FT8U232/FT232BM).
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
index 0c81a64..16e8c6c 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -1921,13 +1921,20 @@ static int32_t handle_hc_datatglerr_intr
@@ -1921,13 +1921,20 @@ static int32_t handle_hc_datatglerr_intr(dwc_otg_hcd_t * hcd,
dwc_otg_qtd_t * qtd)
{
DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: "
@ -41,7 +43,7 @@ for devices that have a broken initial toggle state (FT8U232/FT232BM).
}
disable_hc_int(hc_regs, datatglerr);
@@ -2080,6 +2087,8 @@ static void handle_hc_chhltd_intr_dma(dw
@@ -2080,6 +2087,8 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
handle_hc_babble_intr(hcd, hc, hc_regs, qtd);
} else if (hcint.b.frmovrun) {
handle_hc_frmovrun_intr(hcd, hc, hc_regs, qtd);
@ -50,3 +52,6 @@ for devices that have a broken initial toggle state (FT8U232/FT232BM).
} else if (!out_nak_enh) {
if (hcint.b.nyet) {
/*
--
1.9.1

View file

@ -1,7 +1,7 @@
From 28ca85a46bbdae4152b48a669872ac205d053856 Mon Sep 17 00:00:00 2001
From 0a2fa5a85c2ed9599acb2215f24e06db0379a133 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 1 May 2013 21:14:28 +0100
Subject: [PATCH 055/174] Add bitbanging pullups, use them for w1-gpio
Subject: [PATCH 055/196] Add bitbanging pullups, use them for w1-gpio
Allows parasite power to work, uses module option pullup=1
---
@ -11,6 +11,8 @@ Allows parasite power to work, uses module option pullup=1
drivers/w1/w1_io.c | 18 +++++++++++++++---
4 files changed, 50 insertions(+), 10 deletions(-)
diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c
index 46d9701..f615f80 100644
--- a/drivers/w1/masters/w1-gpio.c
+++ b/drivers/w1/masters/w1-gpio.c
@@ -23,6 +23,9 @@
@ -40,7 +42,7 @@ Allows parasite power to work, uses module option pullup=1
#if defined(CONFIG_OF)
static struct of_device_id w1_gpio_dt_ids[] = {
{ .compatible = "w1-gpio" },
@@ -133,6 +146,13 @@ static int w1_gpio_probe(struct platform
@@ -133,6 +146,13 @@ static int w1_gpio_probe(struct platform_device *pdev)
master->write_bit = w1_gpio_write_bit_dir;
}
@ -54,6 +56,8 @@ Allows parasite power to work, uses module option pullup=1
err = w1_add_master_device(master);
if (err) {
dev_err(&pdev->dev, "w1_add_master device failed\n");
diff --git a/drivers/w1/w1.h b/drivers/w1/w1.h
index 45908e5..0ba75f6 100644
--- a/drivers/w1/w1.h
+++ b/drivers/w1/w1.h
@@ -148,6 +148,12 @@ struct w1_bus_master
@ -69,9 +73,11 @@ Allows parasite power to work, uses module option pullup=1
/** Really nice hardware can handles the different types of ROM search
* w1_master* is passed to the slave found callback.
*/
diff --git a/drivers/w1/w1_int.c b/drivers/w1/w1_int.c
index 5a98649..a4d69b6 100644
--- a/drivers/w1/w1_int.c
+++ b/drivers/w1/w1_int.c
@@ -117,19 +117,21 @@ int w1_add_master_device(struct w1_bus_m
@@ -117,19 +117,21 @@ int w1_add_master_device(struct w1_bus_master *master)
printk(KERN_ERR "w1_add_master_device: invalid function set\n");
return(-EINVAL);
}
@ -100,9 +106,11 @@ Allows parasite power to work, uses module option pullup=1
/* Lock until the device is added (or not) to w1_masters. */
mutex_lock(&w1_mlock);
/* Search for the first available id (starting at 1). */
diff --git a/drivers/w1/w1_io.c b/drivers/w1/w1_io.c
index e10acc2..667fdd5 100644
--- a/drivers/w1/w1_io.c
+++ b/drivers/w1/w1_io.c
@@ -127,10 +127,22 @@ static void w1_pre_write(struct w1_maste
@@ -127,10 +127,22 @@ static void w1_pre_write(struct w1_master *dev)
static void w1_post_write(struct w1_master *dev)
{
if (dev->pullup_duration) {
@ -117,14 +125,17 @@ Allows parasite power to work, uses module option pullup=1
+ } 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.9.1

View file

@ -1,15 +1,17 @@
From 75c9b03f90ca974cb072d96f423884b773ca5425 Mon Sep 17 00:00:00 2001
From 4b64ce34aaf88c2869c74efad7cbe5167920625b Mon Sep 17 00:00:00 2001
From: notro <notro@tronnes.org>
Date: Sat, 26 Jan 2013 20:38:03 +0100
Subject: [PATCH 056/174] spi-bcm2708: add 9-bit support using LoSSI mode
Subject: [PATCH 056/196] spi-bcm2708: add 9-bit support using LoSSI mode
---
drivers/spi/spi-bcm2708.c | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/spi-bcm2708.c b/drivers/spi/spi-bcm2708.c
index b74aa32..abaa5a6 100644
--- a/drivers/spi/spi-bcm2708.c
+++ b/drivers/spi/spi-bcm2708.c
@@ -146,10 +146,31 @@ static inline void bcm2708_rd_fifo(struc
@@ -146,10 +146,31 @@ static inline void bcm2708_rd_fifo(struct bcm2708_spi *bs, int len)
static inline void bcm2708_wr_fifo(struct bcm2708_spi *bs, int len)
{
u8 byte;
@ -41,7 +43,7 @@ Subject: [PATCH 056/174] spi-bcm2708: add 9-bit support using LoSSI mode
while (len--) {
byte = bs->tx_buf ? *bs->tx_buf++ : 0;
bcm2708_wr(bs, SPI_FIFO, byte);
@@ -234,8 +255,12 @@ static int bcm2708_setup_state(struct sp
@@ -234,8 +255,12 @@ static int bcm2708_setup_state(struct spi_master *master,
switch (bpw) {
case 8:
break;
@ -55,7 +57,7 @@ Subject: [PATCH 056/174] spi-bcm2708: add 9-bit support using LoSSI mode
bpw);
return -EINVAL;
}
@@ -283,7 +308,8 @@ static int bcm2708_process_transfer(stru
@@ -283,7 +308,8 @@ static int bcm2708_process_transfer(struct bcm2708_spi *bs,
ret = bcm2708_setup_state(spi->master, &spi->dev, &state,
xfer->speed_hz ? xfer->speed_hz : spi->max_speed_hz,
spi->chip_select, spi->mode,
@ -65,3 +67,6 @@ Subject: [PATCH 056/174] spi-bcm2708: add 9-bit support using LoSSI mode
if (ret)
return ret;
--
1.9.1

View file

@ -1,7 +1,7 @@
From 71109f7d314b6205259d5cecf8314708f84fb9e6 Mon Sep 17 00:00:00 2001
From f5908d1de6a9231622ebe7ae174749305a69878f Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Thu, 21 Mar 2013 19:36:17 +0000
Subject: [PATCH 057/174] dwc_otg: implement tasklet for returning URBs to
Subject: [PATCH 057/196] dwc_otg: implement tasklet for returning URBs to
usbcore hcd layer
The dwc_otg driver interrupt handler for transfer completion will spend
@ -25,9 +25,11 @@ devices are active at once.
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 25 ++++++++++------
6 files changed, 73 insertions(+), 17 deletions(-)
diff --git a/drivers/usb/host/dwc_common_port/dwc_common_linux.c b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
index f00a9ff..6814e51 100644
--- a/drivers/usb/host/dwc_common_port/dwc_common_linux.c
+++ b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
@@ -991,6 +991,11 @@ void DWC_TASK_SCHEDULE(dwc_tasklet_t *ta
@@ -991,6 +991,11 @@ void DWC_TASK_SCHEDULE(dwc_tasklet_t *task)
tasklet_schedule(&task->t);
}
@ -39,6 +41,8 @@ devices are active at once.
/* 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 { \
@ -66,9 +70,11 @@ devices are active at once.
/*
* Tail queue functions.
diff --git a/drivers/usb/host/dwc_common_port/dwc_os.h b/drivers/usb/host/dwc_common_port/dwc_os.h
index 308ddd5..8eb24ea 100644
--- a/drivers/usb/host/dwc_common_port/dwc_os.h
+++ b/drivers/usb/host/dwc_common_port/dwc_os.h
@@ -981,6 +981,8 @@ extern void DWC_TASK_FREE(dwc_tasklet_t
@@ -981,6 +981,8 @@ extern void DWC_TASK_FREE(dwc_tasklet_t *task);
extern void DWC_TASK_SCHEDULE(dwc_tasklet_t *task);
#define dwc_task_schedule DWC_TASK_SCHEDULE
@ -77,6 +83,8 @@ devices are active at once.
/** @name Timer
*
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index fcec97f..91eefec 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -40,6 +40,9 @@
@ -89,7 +97,7 @@ devices are active at once.
#include "dwc_otg_hcd.h"
#include "dwc_otg_regs.h"
@@ -694,6 +697,31 @@ static void reset_tasklet_func(void *dat
@@ -694,6 +697,31 @@ static void reset_tasklet_func(void *data)
dwc_otg_hcd->flags.b.port_reset_change = 1;
}
@ -121,7 +129,7 @@ devices are active at once.
static void qh_list_free(dwc_otg_hcd_t * hcd, dwc_list_link_t * qh_list)
{
dwc_list_link_t *item;
@@ -833,6 +861,7 @@ static void dwc_otg_hcd_free(dwc_otg_hcd
@@ -833,6 +861,7 @@ static void dwc_otg_hcd_free(dwc_otg_hcd_t * dwc_otg_hcd)
DWC_TIMER_FREE(dwc_otg_hcd->conn_timer);
DWC_TASK_FREE(dwc_otg_hcd->reset_tasklet);
@ -129,7 +137,7 @@ devices are active at once.
#ifdef DWC_DEV_SRPCAP
if (dwc_otg_hcd->core_if->power_down == 2 &&
@@ -877,7 +906,7 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
@@ -877,7 +906,7 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
DWC_LIST_INIT(&hcd->periodic_sched_ready);
DWC_LIST_INIT(&hcd->periodic_sched_assigned);
DWC_LIST_INIT(&hcd->periodic_sched_queued);
@ -138,7 +146,7 @@ devices are active at once.
/*
* Create a host channel descriptor for each host channel implemented
* in the controller. Initialize the channel descriptor array.
@@ -915,6 +944,9 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
@@ -915,6 +944,9 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
/* Initialize reset tasklet. */
hcd->reset_tasklet = DWC_TASK_ALLOC("reset_tasklet", reset_tasklet_func, hcd);
@ -148,6 +156,8 @@ devices are active at once.
#ifdef DWC_DEV_SRPCAP
if (hcd->core_if->power_down == 2) {
/* Initialize Power on timer for Host power up in case hibernation */
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
index 45e44ea..0493dbf 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -374,6 +374,13 @@ typedef struct dwc_otg_qh {
@ -174,9 +184,11 @@ devices are active at once.
/* */
dwc_spinlock_t *lock;
dwc_spinlock_t *channel_lock;
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
index 9702f81..7bb133a 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -271,7 +271,7 @@ static int _complete(dwc_otg_hcd_t * hcd
@@ -271,7 +271,7 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle,
dwc_otg_hcd_urb_t * dwc_otg_urb, int32_t status)
{
struct urb *urb = (struct urb *)urb_handle;
@ -185,7 +197,7 @@ devices are active at once.
if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) {
DWC_PRINTF("%s: urb %p, device %d, ep %d %s, status=%d\n",
__func__, urb, usb_pipedevice(urb->pipe),
@@ -285,7 +285,7 @@ static int _complete(dwc_otg_hcd_t * hcd
@@ -285,7 +285,7 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle,
}
}
}
@ -194,7 +206,7 @@ devices are active at once.
urb->actual_length = dwc_otg_hcd_urb_get_actual_length(dwc_otg_urb);
/* Convert status value. */
switch (status) {
@@ -348,18 +348,25 @@ static int _complete(dwc_otg_hcd_t * hcd
@@ -348,18 +348,25 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle,
}
DWC_FREE(dwc_otg_urb);
@ -227,3 +239,6 @@ devices are active at once.
return 0;
}
--
1.9.1

View file

@ -1,15 +1,17 @@
From 4013559fb9dca2beff1fa59a87ac1d1578408ad0 Mon Sep 17 00:00:00 2001
From a7f5e84afb763c30050797fb4cd01d536dbb7c11 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 00:54:08 +0100
Subject: [PATCH 058/174] Added Device IDs for August DVB-T 205
Subject: [PATCH 058/196] 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 2cc8ec7..25e8553 100644
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
@@ -1408,6 +1408,10 @@ static const struct usb_device_id rtl28x
@@ -1408,6 +1408,10 @@ static const struct usb_device_id rtl28xxu_id_table[] = {
&rtl2832u_props, "Compro VideoMate U620F", NULL) },
{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394,
&rtl2832u_props, "MaxMedia HU394-T", NULL) },
@ -20,3 +22,6 @@ Subject: [PATCH 058/174] Added Device IDs for August DVB-T 205
{ }
};
MODULE_DEVICE_TABLE(usb, rtl28xxu_id_table);
--
1.9.1

View file

@ -1,13 +1,15 @@
From f7d501dfb97c2af4dd1f60f85e94bf110f69834c Mon Sep 17 00:00:00 2001
From b9155aba8ba7b46ee8cc96c6479adf01b1e0e849 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 16 Apr 2013 15:36:01 +0100
Subject: [PATCH 059/174] Add v6wbi_flush_kern_tlb_range to allow zsmalloc to
Subject: [PATCH 059/196] Add v6wbi_flush_kern_tlb_range to allow zsmalloc to
be built as a module
---
arch/arm/kernel/armksyms.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
index 60d3b73..cba4d28 100644
--- a/arch/arm/kernel/armksyms.c
+++ b/arch/arm/kernel/armksyms.c
@@ -156,3 +156,7 @@ EXPORT_SYMBOL(__gnu_mcount_nc);
@ -18,3 +20,6 @@ Subject: [PATCH 059/174] Add v6wbi_flush_kern_tlb_range to allow zsmalloc to
+extern void v6wbi_flush_kern_tlb_range(void);
+EXPORT_SYMBOL(v6wbi_flush_kern_tlb_range);
+
--
1.9.1

View file

@ -1,7 +1,7 @@
From 370cbdb4a5ec521d9312b02bbaf269ed520b1451 Mon Sep 17 00:00:00 2001
From 3cb2c23c6dba5ae74976e85329b880876fadd787 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Mon, 22 Apr 2013 00:08:36 +0100
Subject: [PATCH 060/174] dwc_otg: fix NAK holdoff and allow on split
Subject: [PATCH 060/196] dwc_otg: fix NAK holdoff and allow on split
transactions only
This corrects a bug where if a single active non-periodic endpoint
@ -18,6 +18,8 @@ only split transactions get held off.
drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 91eefec..eaa8f38 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -46,7 +46,7 @@
@ -29,7 +31,7 @@ only split transactions get held off.
//#define DEBUG_HOST_CHANNELS
#ifdef DEBUG_HOST_CHANNELS
@@ -1349,18 +1349,26 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1349,18 +1349,26 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
/*
* Check to see if this is a NAK'd retransmit, in which case ignore for retransmission
@ -65,3 +67,6 @@ only split transactions get held off.
if (microframe_schedule) {
DWC_SPINLOCK_IRQSAVE(channel_lock, &flags);
if (hcd->available_host_channels < 1) {
--
1.9.1

View file

@ -1,7 +1,7 @@
From 5d42dfcf42ba987a03d8b5f2dfa30e9cb2dc4721 Mon Sep 17 00:00:00 2001
From 46b48162ae7d5323a73eea61c29f3f1e18e12b0c Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 26 Apr 2013 10:08:31 -0700
Subject: [PATCH 061/174] Merge pull request #286 from
Subject: [PATCH 061/196] Merge pull request #286 from
martinezjavier/rpi-3.6.y-dev
add mmap support and some cleanups to bcm2835 ALSA driver
@ -12,6 +12,8 @@ add mmap support and some cleanups to bcm2835 ALSA driver
sound/arm/bcm2835.h | 2 ++
4 files changed, 124 insertions(+), 70 deletions(-)
diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c
index 4206b7e..21e435b 100755
--- a/sound/arm/bcm2835-pcm.c
+++ b/sound/arm/bcm2835-pcm.c
@@ -19,7 +19,8 @@
@ -24,7 +26,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
.formats = SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE,
.rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_8000_48000,
.rate_min = 8000,
@@ -251,6 +252,12 @@ static int snd_bcm2835_pcm_prepare(struc
@@ -251,6 +252,12 @@ static int snd_bcm2835_pcm_prepare(struct snd_pcm_substream *substream)
audio_info(" .. IN\n");
@ -37,7 +39,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
alsa_stream->buffer_size = snd_pcm_lib_buffer_bytes(substream);
alsa_stream->period_size = snd_pcm_lib_period_bytes(substream);
alsa_stream->pos = 0;
@@ -263,6 +270,32 @@ static int snd_bcm2835_pcm_prepare(struc
@@ -263,6 +270,32 @@ static int snd_bcm2835_pcm_prepare(struct snd_pcm_substream *substream)
return 0;
}
@ -70,7 +72,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
/* trigger callback */
static int snd_bcm2835_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
{
@@ -279,6 +312,11 @@ static int snd_bcm2835_pcm_trigger(struc
@@ -279,6 +312,11 @@ static int snd_bcm2835_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
if (!alsa_stream->running) {
err = bcm2835_audio_start(alsa_stream);
if (err == 0) {
@ -82,7 +84,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
alsa_stream->running = 1;
alsa_stream->draining = 1;
} else {
@@ -327,30 +365,9 @@ snd_bcm2835_pcm_pointer(struct snd_pcm_s
@@ -327,30 +365,9 @@ snd_bcm2835_pcm_pointer(struct snd_pcm_substream *substream)
alsa_stream->pos);
audio_info(" .. OUT\n");
@ -116,7 +118,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
}
static int snd_bcm2835_pcm_lib_ioctl(struct snd_pcm_substream *substream,
@@ -372,7 +389,7 @@ static struct snd_pcm_ops snd_bcm2835_pl
@@ -372,7 +389,7 @@ static struct snd_pcm_ops snd_bcm2835_playback_ops = {
.prepare = snd_bcm2835_pcm_prepare,
.trigger = snd_bcm2835_pcm_trigger,
.pointer = snd_bcm2835_pcm_pointer,
@ -125,6 +127,8 @@ add mmap support and some cleanups to bcm2835 ALSA driver
};
/* create a pcm device */
diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c
index 9ecb2d6..169d899 100755
--- a/sound/arm/bcm2835-vchiq.c
+++ b/sound/arm/bcm2835-vchiq.c
@@ -27,6 +27,7 @@
@ -197,7 +201,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
break;
}
kfree((void *)work);
@@ -107,7 +120,7 @@ int bcm2835_audio_start(bcm2835_alsa_str
@@ -107,7 +120,7 @@ int bcm2835_audio_start(bcm2835_alsa_stream_t * alsa_stream)
if (work) {
INIT_WORK((struct work_struct *)work, my_wq_function);
work->alsa_stream = alsa_stream;
@ -206,7 +210,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
if (queue_work
(alsa_stream->my_wq, (struct work_struct *)work))
ret = 0;
@@ -128,7 +141,31 @@ int bcm2835_audio_stop(bcm2835_alsa_stre
@@ -128,7 +141,31 @@ int bcm2835_audio_stop(bcm2835_alsa_stream_t * alsa_stream)
if (work) {
INIT_WORK((struct work_struct *)work, my_wq_function);
work->alsa_stream = alsa_stream;
@ -239,7 +243,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
if (queue_work
(alsa_stream->my_wq, (struct work_struct *)work))
ret = 0;
@@ -178,7 +215,7 @@ static void audio_vchi_callback(void *pa
@@ -178,7 +215,7 @@ static void audio_vchi_callback(void *param,
(" .. instance=%p, m.type=VC_AUDIO_MSG_TYPE_RESULT, success=%d\n",
instance, m.u.result.success);
instance->result = m.u.result.success;
@ -248,7 +252,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
} else if (m.type == VC_AUDIO_MSG_TYPE_COMPLETE) {
irq_handler_t callback = (irq_handler_t) m.u.complete.callback;
LOG_DBG
@@ -435,8 +472,8 @@ static int bcm2835_audio_set_ctls_chan(b
@@ -435,8 +472,8 @@ static int bcm2835_audio_set_ctls_chan(bcm2835_alsa_stream_t * alsa_stream,
m.u.control.dest = chip->dest;
m.u.control.volume = chip->volume;
@ -259,7 +263,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
/* Send the message to the videocore */
success = vchi_msg_queue(instance->vchi_handle[0],
@@ -452,11 +489,10 @@ static int bcm2835_audio_set_ctls_chan(b
@@ -452,11 +489,10 @@ static int bcm2835_audio_set_ctls_chan(bcm2835_alsa_stream_t * alsa_stream,
}
/* We are expecting a reply from the videocore */
@ -273,7 +277,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
goto unlock;
}
@@ -539,8 +575,8 @@ int bcm2835_audio_set_params(bcm2835_als
@@ -539,8 +575,8 @@ int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream,
m.u.config.samplerate = samplerate;
m.u.config.bps = bps;
@ -284,7 +288,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
/* Send the message to the videocore */
success = vchi_msg_queue(instance->vchi_handle[0],
@@ -556,11 +592,10 @@ int bcm2835_audio_set_params(bcm2835_als
@@ -556,11 +592,10 @@ int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream,
}
/* We are expecting a reply from the videocore */
@ -298,7 +302,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
goto unlock;
}
@@ -688,8 +723,8 @@ int bcm2835_audio_close(bcm2835_alsa_str
@@ -688,8 +723,8 @@ int bcm2835_audio_close(bcm2835_alsa_stream_t * alsa_stream)
m.type = VC_AUDIO_MSG_TYPE_CLOSE;
@ -309,7 +313,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
/* Send the message to the videocore */
success = vchi_msg_queue(instance->vchi_handle[0],
@@ -702,11 +737,11 @@ int bcm2835_audio_close(bcm2835_alsa_str
@@ -702,11 +737,11 @@ int bcm2835_audio_close(bcm2835_alsa_stream_t * alsa_stream)
ret = -1;
goto unlock;
}
@ -335,9 +339,11 @@ add mmap support and some cleanups to bcm2835 ALSA driver
{
VC_AUDIO_MSG_T m;
AUDIO_INSTANCE_T *instance = alsa_stream->instance;
diff --git a/sound/arm/bcm2835.c b/sound/arm/bcm2835.c
index e5ac894..d5ad830 100755
--- a/sound/arm/bcm2835.c
+++ b/sound/arm/bcm2835.c
@@ -110,20 +110,20 @@ static int snd_bcm2835_alsa_probe(struct
@@ -110,20 +110,20 @@ static int snd_bcm2835_alsa_probe(struct platform_device *pdev)
err = snd_bcm2835_create(g_card, pdev, &chip);
if (err < 0) {
@ -394,7 +400,7 @@ add mmap support and some cleanups to bcm2835 ALSA driver
return err;
}
@@ -326,49 +326,49 @@ static int bcm2835_alsa_device_init(void
@@ -326,49 +326,49 @@ static int bcm2835_alsa_device_init(void)
int err;
err = platform_driver_register(&bcm2835_alsa0_driver);
if (err) {
@ -452,6 +458,8 @@ add mmap support and some cleanups to bcm2835 ALSA driver
goto unregister_6;
}
diff --git a/sound/arm/bcm2835.h b/sound/arm/bcm2835.h
index b966e28..08c763d 100755
--- a/sound/arm/bcm2835.h
+++ b/sound/arm/bcm2835.h
@@ -23,6 +23,7 @@
@ -470,3 +478,6 @@ add mmap support and some cleanups to bcm2835 ALSA driver
struct semaphore buffers_update_sem;
struct semaphore control_sem;
--
1.9.1

View file

@ -1,7 +1,7 @@
From 353d37b0b26870a4bfd3e0cac6e535895ba4a01e Mon Sep 17 00:00:00 2001
From b339e078538e1470dc5d88a34f927ec1dd44151f Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 7 May 2013 22:20:24 +0100
Subject: [PATCH 062/174] Add quick config.
Subject: [PATCH 062/196] Add quick config.
This is designed for quick compiling when developing.
No modules are needed and it includes all Pi specific drivers
@ -10,6 +10,9 @@ 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 @@
@ -210,3 +213,6 @@ No modules are needed and it includes all Pi specific drivers
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
--
1.9.1

View file

@ -1,13 +1,15 @@
From dfe5d158300e7500873f1f81d89a05842460befc Mon Sep 17 00:00:00 2001
From c20b5189fa65427d6a9f2e70f7f8f2c485d21296 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 10 May 2013 19:42:38 +0100
Subject: [PATCH 063/174] mmc: suppress sdcard warnings we are happy about by
Subject: [PATCH 063/196] mmc: suppress sdcard warnings we are happy about by
default
---
drivers/mmc/host/sdhci-bcm2708.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 3556ed3..c2409b9 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -139,6 +139,7 @@ static bool sync_after_dma = 1;
@ -18,7 +20,7 @@ Subject: [PATCH 063/174] mmc: suppress sdcard warnings we are happy about by
#if 0
static void hptime_test(void)
@@ -672,13 +673,16 @@ sdhci_bcm2708_platdma_reset(struct sdhci
@@ -672,13 +673,16 @@ sdhci_bcm2708_platdma_reset(struct sdhci_host *host, struct mmc_data *data)
cs = readl(host_priv->dma_chan_base + BCM2708_DMA_CS);
if (!(BCM2708_DMA_ACTIVE & cs))
@ -36,7 +38,7 @@ Subject: [PATCH 063/174] mmc: suppress sdcard warnings we are happy about by
else
printk(KERN_INFO "%s: resetting ongoing cmd %d"
"DMA before %d/%d [%d]/[%d] complete\n",
@@ -903,7 +907,8 @@ static irqreturn_t sdhci_bcm2708_dma_irq
@@ -903,7 +907,8 @@ static irqreturn_t sdhci_bcm2708_dma_irq(int irq, void *dev_id)
if (!host_priv->dma_wanted) {
/* ignore this interrupt - it was reset */
@ -46,7 +48,7 @@ Subject: [PATCH 063/174] mmc: suppress sdcard warnings we are happy about by
"results were reset\n",
mmc_hostname(host->mmc), dma_cs);
#ifdef CHECK_DMA_USE
@@ -1397,6 +1402,7 @@ module_param(missing_status, bool, 0444)
@@ -1397,6 +1402,7 @@ module_param(missing_status, bool, 0444);
module_param(spurious_crc_acmd51, bool, 0444);
module_param(enable_llm, bool, 0444);
module_param(cycle_delay, int, 0444);
@ -54,10 +56,13 @@ Subject: [PATCH 063/174] mmc: suppress sdcard warnings we are happy about by
MODULE_DESCRIPTION("Secure Digital Host Controller Interface platform driver");
MODULE_AUTHOR("Broadcom <info@broadcom.com>");
@@ -1409,5 +1415,6 @@ MODULE_PARM_DESC(sync_after_dma, "Block
@@ -1409,5 +1415,6 @@ MODULE_PARM_DESC(sync_after_dma, "Block in driver until dma complete");
MODULE_PARM_DESC(missing_status, "Use the missing status quirk");
MODULE_PARM_DESC(spurious_crc_acmd51, "Use the spurious crc quirk for reading SCR (ACMD51)");
MODULE_PARM_DESC(enable_llm, "Enable low-latency mode");
+MODULE_PARM_DESC(extra_messages, "Enable more sdcard warning messages");
--
1.9.1

View file

@ -1,15 +1,17 @@
From b74d345f074c12d21e8dda2807750e8559588822 Mon Sep 17 00:00:00 2001
From c8b4c6968c3a8c1b195de2dc522268e0ce81b6c7 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 17 May 2013 15:19:49 +0100
Subject: [PATCH 064/174] Add missing ids for Netgear WNA1000N and D-Link Alpha
Subject: [PATCH 064/196] Add missing ids for Netgear WNA1000N and D-Link Alpha
---
drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c b/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
index 9d303f4..2e54e74 100644
--- a/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
+++ b/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
@@ -114,6 +114,7 @@ static struct usb_device_id rtw_usb_id_t
@@ -114,6 +114,7 @@ static struct usb_device_id rtw_usb_id_tbl[] ={
{USB_DEVICE(0x4856, 0x0091)},//NetweeN - Feixun
{USB_DEVICE(0x2019, 0x4902)},//Planex - Etop
{USB_DEVICE(0x2019, 0xAB2E)},//SW-WF02-AD15 -Abocom
@ -17,3 +19,6 @@ Subject: [PATCH 064/174] Add missing ids for Netgear WNA1000N and D-Link Alpha
/****** 8188 RU ********/
{USB_DEVICE(0x0BDA, 0x317F)},//Netcore,Netcore
--
1.9.1

View file

@ -1,13 +1,15 @@
From 2d491bef93b86787eb5b5e83c46d1f4d87edf84f Mon Sep 17 00:00:00 2001
From 0ff0d5f9c59d1d9cde9bcc56f6bfa163fd1b15a3 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 31 May 2013 14:50:09 +0100
Subject: [PATCH 065/174] rtl8192cu: select required config options to allow
Subject: [PATCH 065/196] rtl8192cu: select required config options to allow
builds without other wifi modules. Thanks UrsusArctos
---
drivers/net/wireless/rtl8192cu/Kconfig | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/rtl8192cu/Kconfig b/drivers/net/wireless/rtl8192cu/Kconfig
index bee5ed6..ef46361 100644
--- a/drivers/net/wireless/rtl8192cu/Kconfig
+++ b/drivers/net/wireless/rtl8192cu/Kconfig
@@ -1,6 +1,8 @@
@ -20,3 +22,6 @@ Subject: [PATCH 065/174] rtl8192cu: select required config options to allow
- Help message of RTL8192CU
+ Enable wireless network adapters based on Realtek RTL8192C chipset family, such as EDUP nano series
--
1.9.1

View file

@ -1,12 +1,14 @@
From 7776b6ebf1063d2f9fac33313c8d049b424fce46 Mon Sep 17 00:00:00 2001
From f038d0681b072b929bb026bbb539cc8575d30c4f Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 8 Jun 2013 22:14:13 +0100
Subject: [PATCH 066/174] Only init gpio pins of selected i2c bus
Subject: [PATCH 066/196] Only init gpio pins of selected i2c bus
---
drivers/i2c/busses/i2c-bcm2708.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c
index 3391889..edc90c0 100644
--- a/drivers/i2c/busses/i2c-bcm2708.c
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -97,7 +97,7 @@ struct bcm2708_i2c {
@ -18,7 +20,7 @@ Subject: [PATCH 066/174] Only init gpio pins of selected i2c bus
{
#define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3))
#define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3))
@@ -105,8 +105,10 @@ static void bcm2708_i2c_init_pinmode(voi
@@ -105,8 +105,10 @@ static void bcm2708_i2c_init_pinmode(void)
int pin;
u32 *gpio = ioremap(0x20200000, SZ_16K);
@ -30,7 +32,7 @@ Subject: [PATCH 066/174] Only init gpio pins of selected i2c bus
INP_GPIO(pin); /* set mode to GPIO input first */
SET_GPIO_ALT(pin, 0); /* set mode to ALT 0 */
}
@@ -279,7 +281,7 @@ static int bcm2708_i2c_probe(struct plat
@@ -279,7 +281,7 @@ static int bcm2708_i2c_probe(struct platform_device *pdev)
return PTR_ERR(clk);
}
@ -39,3 +41,6 @@ Subject: [PATCH 066/174] Only init gpio pins of selected i2c bus
bi = kzalloc(sizeof(*bi), GFP_KERNEL);
if (!bi)
--
1.9.1

View file

@ -1,15 +1,17 @@
From 03f44ba654e40b60ffcec14030abf35152d0b639 Mon Sep 17 00:00:00 2001
From ed5a728f2593fbd3950c5c17ab7143bafc295e57 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Thu, 13 Jun 2013 16:46:54 +0100
Subject: [PATCH 067/174] Avoid responding to unexpected I2C interrupts
Subject: [PATCH 067/196] Avoid responding to unexpected I2C interrupts
---
drivers/i2c/busses/i2c-bcm2708.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c
index edc90c0..33f4e7d 100644
--- a/drivers/i2c/busses/i2c-bcm2708.c
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -175,6 +175,11 @@ static irqreturn_t bcm2708_i2c_interrupt
@@ -175,6 +175,11 @@ static irqreturn_t bcm2708_i2c_interrupt(int irq, void *dev_id)
spin_lock(&bi->lock);
@ -21,7 +23,7 @@ Subject: [PATCH 067/174] Avoid responding to unexpected I2C interrupts
s = bcm2708_rd(bi, BSC_S);
if (s & (BSC_S_CLKT | BSC_S_ERR)) {
@@ -208,6 +213,7 @@ static irqreturn_t bcm2708_i2c_interrupt
@@ -208,6 +213,7 @@ static irqreturn_t bcm2708_i2c_interrupt(int irq, void *dev_id)
handled = false;
}
@ -29,3 +31,6 @@ Subject: [PATCH 067/174] Avoid responding to unexpected I2C interrupts
spin_unlock(&bi->lock);
return handled ? IRQ_HANDLED : IRQ_NONE;
--
1.9.1

View file

@ -1,7 +1,7 @@
From 42b4a831d77ee33f67142882b2b68e4138cbf13e Mon Sep 17 00:00:00 2001
From aad790d20f7b2f9a90716b33181e8554de10b6a0 Mon Sep 17 00:00:00 2001
From: Harm Hanemaaijer <fgenfb@yahoo.com>
Date: Thu, 20 Jun 2013 20:21:39 +0200
Subject: [PATCH 068/174] Speed up console framebuffer imageblit function
Subject: [PATCH 068/196] Speed up console framebuffer imageblit function
Especially on platforms with a slower CPU but a relatively high
framebuffer fill bandwidth, like current ARM devices, the existing
@ -32,6 +32,8 @@ Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>
drivers/video/cfbimgblt.c | 152 ++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 147 insertions(+), 5 deletions(-)
diff --git a/drivers/video/cfbimgblt.c b/drivers/video/cfbimgblt.c
index baed57d..ce91bf2 100644
--- a/drivers/video/cfbimgblt.c
+++ b/drivers/video/cfbimgblt.c
@@ -28,6 +28,11 @@
@ -46,7 +48,7 @@ Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>
*/
#include <linux/module.h>
#include <linux/string.h>
@@ -262,6 +267,133 @@ static inline void fast_imageblit(const
@@ -262,6 +267,133 @@ static inline void fast_imageblit(const struct fb_image *image, struct fb_info *
}
}
@ -180,7 +182,7 @@ Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>
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, co
@@ -294,11 +426,21 @@ void cfb_imageblit(struct fb_info *p, const struct fb_image *image)
bgcolor = image->bg_color;
}
@ -207,3 +209,6 @@ Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>
slow_imageblit(image, p, dst1, fgcolor, bgcolor,
start_index, pitch_index);
} else
--
1.9.1

View file

@ -1,7 +1,7 @@
From bae48dcebc8f847977f6077910afb93f754708d6 Mon Sep 17 00:00:00 2001
From 422d5162d6b4e5cd8f7a9470b128577d1b826bdd Mon Sep 17 00:00:00 2001
From: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon, 17 Jun 2013 13:32:11 +0300
Subject: [PATCH 069/174] fbdev: add FBIOCOPYAREA ioctl
Subject: [PATCH 069/196] fbdev: add FBIOCOPYAREA ioctl
Based on the patch authored by Ali Gholami Rudi at
https://lkml.org/lkml/2009/7/13/153
@ -15,9 +15,11 @@ 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/fbmem.c b/drivers/video/fbmem.c
index 098bfc6..da8e53b 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1074,6 +1074,25 @@ fb_blank(struct fb_info *info, int blank
@@ -1074,6 +1074,25 @@ fb_blank(struct fb_info *info, int blank)
return ret;
}
@ -43,7 +45,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
unsigned long arg)
{
@@ -1084,6 +1103,7 @@ static long do_fb_ioctl(struct fb_info *
@@ -1084,6 +1103,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
struct fb_cmap cmap_from;
struct fb_cmap_user cmap;
struct fb_event event;
@ -51,7 +53,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
void __user *argp = (void __user *)arg;
long ret = 0;
@@ -1193,6 +1213,15 @@ static long do_fb_ioctl(struct fb_info *
@@ -1193,6 +1213,15 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
console_unlock();
unlock_fb_info(info);
break;
@ -67,7 +69,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
default:
if (!lock_fb_info(info))
return -ENODEV;
@@ -1345,6 +1374,7 @@ static long fb_compat_ioctl(struct file
@@ -1345,6 +1374,7 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd,
case FBIOPAN_DISPLAY:
case FBIOGET_CON2FBMAP:
case FBIOPUT_CON2FBMAP:
@ -75,6 +77,8 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
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 @@
@ -89,3 +93,6 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */
#define FB_TYPE_PLANES 1 /* Non interleaved planes */
--
1.9.1

View file

@ -1,7 +1,7 @@
From ba65074e39e6aee492bd3c077f640b29a0a89c05 Mon Sep 17 00:00:00 2001
From 370c8243ec8e7f3abd8171b7d2dde170f4c5e63a Mon Sep 17 00:00:00 2001
From: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon, 17 Jun 2013 16:00:25 +0300
Subject: [PATCH 070/174] bcm2708_fb: DMA acceleration for fb_copyarea
Subject: [PATCH 070/196] bcm2708_fb: DMA acceleration for fb_copyarea
Based on http://www.raspberrypi.org/phpBB3/viewtopic.php?p=62425#p62425
Also used Simon's dmaer_master module as a reference for tweaking DMA
@ -23,6 +23,8 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
drivers/video/bcm2708_fb.c | 162 ++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 159 insertions(+), 3 deletions(-)
diff --git a/drivers/video/bcm2708_fb.c b/drivers/video/bcm2708_fb.c
index 08d9238..c10c5ee 100644
--- a/drivers/video/bcm2708_fb.c
+++ b/drivers/video/bcm2708_fb.c
@@ -28,6 +28,7 @@
@ -45,7 +47,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
};
#define to_bcm2708(info) container_of(info, struct bcm2708_fb, fb)
@@ -312,11 +318,133 @@ static void bcm2708_fb_fillrect(struct f
@@ -312,11 +318,133 @@ static void bcm2708_fb_fillrect(struct fb_info *info,
cfb_fillrect(info, rect);
}
@ -181,7 +183,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
}
static void bcm2708_fb_imageblit(struct fb_info *info,
@@ -359,7 +487,7 @@ static int bcm2708_fb_register(struct bc
@@ -359,7 +487,7 @@ static int bcm2708_fb_register(struct bcm2708_fb *fb)
fb->dma = dma;
}
fb->fb.fbops = &bcm2708_fb_ops;
@ -190,7 +192,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
fb->fb.pseudo_palette = fb->cmap;
strncpy(fb->fb.fix.id, bcm2708_name, sizeof(fb->fb.fix.id));
@@ -424,6 +552,28 @@ static int bcm2708_fb_probe(struct platf
@@ -424,6 +552,28 @@ static int bcm2708_fb_probe(struct platform_device *dev)
}
memset(fb, 0, sizeof(struct bcm2708_fb));
@ -219,7 +221,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
fb->dev = dev;
ret = bcm2708_fb_register(fb);
@@ -432,6 +582,9 @@ static int bcm2708_fb_probe(struct platf
@@ -432,6 +582,9 @@ static int bcm2708_fb_probe(struct platform_device *dev)
goto out;
}
@ -229,7 +231,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
kfree(fb);
free_region:
dev_err(&dev->dev, "probe failed, err %d\n", ret);
@@ -449,6 +602,9 @@ static int bcm2708_fb_remove(struct plat
@@ -449,6 +602,9 @@ static int bcm2708_fb_remove(struct platform_device *dev)
iounmap(fb->fb.screen_base);
unregister_framebuffer(&fb->fb);
@ -239,3 +241,6 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
dma_free_coherent(NULL, PAGE_ALIGN(sizeof(*fb->info)), (void *)fb->info,
fb->dma);
kfree(fb);
--
1.9.1

View file

@ -1,7 +1,7 @@
From 9b8c30f46a381533c92a6424ff25f9014d8802b0 Mon Sep 17 00:00:00 2001
From f017dca7748948138205b11490d0b345602ce4db Mon Sep 17 00:00:00 2001
From: Mike Bradley <mike.bradley@incanetworks.com>
Date: Mon, 17 Jun 2013 11:31:42 -0700
Subject: [PATCH 071/174] dwc_otg: Call usb_hcd_unlink_urb_from_ep with lock
Subject: [PATCH 071/196] dwc_otg: Call usb_hcd_unlink_urb_from_ep with lock
held in completion handler
usb_hcd_unlink_urb_from_ep must be called with the HCD lock held. Calling it
@ -22,9 +22,11 @@ eliminated.
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 18 ++++++++++++++----
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index eaa8f38..9c2e71a 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -704,6 +704,7 @@ static void completion_tasklet_func(void
@@ -704,6 +704,7 @@ static void completion_tasklet_func(void *ptr)
urb_tq_entry_t *item;
dwc_irqflags_t flags;
@ -32,7 +34,7 @@ eliminated.
DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags);
while (!DWC_TAILQ_EMPTY(&hcd->completed_urb_list)) {
item = DWC_TAILQ_FIRST(&hcd->completed_urb_list);
@@ -713,7 +714,6 @@ static void completion_tasklet_func(void
@@ -713,7 +714,6 @@ static void completion_tasklet_func(void *ptr)
DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags);
DWC_FREE(item);
@ -40,9 +42,11 @@ eliminated.
usb_hcd_giveback_urb(hcd->priv, urb, urb->status);
DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags);
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 7bb133a..fef557d 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -265,13 +265,15 @@ static void free_bus_bandwidth(struct us
@@ -265,13 +265,15 @@ static void free_bus_bandwidth(struct usb_hcd *hcd, uint32_t bw,
/**
* Sets the final status of an URB and returns it to the device driver. Any
@ -59,7 +63,7 @@ eliminated.
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),
@@ -363,9 +365,17 @@ static int _complete(dwc_otg_hcd_t * hcd
@@ -363,9 +365,17 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle,
#endif
} else {
new_entry->urb = urb;
@ -80,3 +84,6 @@ eliminated.
}
return 0;
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From d0f04f1be88d3ad42f3c875f9ab45a1cdb2129bd Mon Sep 17 00:00:00 2001
From 0b8275da8346466af37b50d5ba687a386df9b0f4 Mon Sep 17 00:00:00 2001
From: Gordon Hollingworth <gordon@holliweb.co.uk>
Date: Thu, 4 Apr 2013 11:05:21 +0100
Subject: [PATCH 072/174] USB fix using a FIQ to implement split transactions
Subject: [PATCH 072/196] USB fix using a FIQ to implement split transactions
This commit adds a FIQ implementaion that schedules
the split transactions using a FIQ so we don't get
@ -19,9 +19,11 @@ held off by the interrupt latency of Linux
drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c | 2 +-
10 files changed, 696 insertions(+), 114 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 6814e51..0812d3a 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,12 @@ void DWC_WRITE_REG64(uint64_t volatile *
@@ -580,7 +580,12 @@ void DWC_WRITE_REG64(uint64_t volatile *reg, uint64_t value)
void DWC_MODIFY_REG32(uint32_t volatile *reg, uint32_t clear_mask, uint32_t set_mask)
{
@ -43,6 +45,8 @@ held off by the interrupt latency of Linux
EXPORT_SYMBOL(__DWC_DMA_ALLOC_ATOMIC);
EXPORT_SYMBOL(__DWC_DMA_FREE);
EXPORT_SYMBOL(__DWC_ALLOC);
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 b861b55..b5a007d 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
@@ -47,8 +47,6 @@
@ -54,7 +58,7 @@ held off by the interrupt latency of Linux
#ifdef DEBUG
inline const char *op_state_str(dwc_otg_core_if_t * core_if)
{
@@ -1321,7 +1319,7 @@ static int32_t dwc_otg_handle_lpm_intr(d
@@ -1321,7 +1319,7 @@ static int32_t dwc_otg_handle_lpm_intr(dwc_otg_core_if_t * core_if)
/**
* This function returns the Core Interrupt register.
*/
@ -63,7 +67,7 @@ held off by the interrupt latency of Linux
{
gahbcfg_data_t gahbcfg = {.d32 = 0 };
gintsts_data_t gintsts;
@@ -1338,19 +1336,33 @@ static inline uint32_t dwc_otg_read_comm
@@ -1338,19 +1336,33 @@ static inline uint32_t dwc_otg_read_common_intr(dwc_otg_core_if_t * core_if)
gintmsk_common.b.lpmtranrcvd = 1;
#endif
gintmsk_common.b.restoredone = 1;
@ -103,7 +107,7 @@ held off by the interrupt latency of Linux
gintsts.d32, gintmsk.d32);
}
#endif
@@ -1394,6 +1406,7 @@ int32_t dwc_otg_handle_common_intr(void
@@ -1394,6 +1406,7 @@ int32_t dwc_otg_handle_common_intr(void *dev)
{
int retval = 0;
gintsts_data_t gintsts;
@ -111,7 +115,7 @@ held off by the interrupt latency of Linux
gpwrdn_data_t gpwrdn = {.d32 = 0 };
dwc_otg_device_t *otg_dev = dev;
dwc_otg_core_if_t *core_if = otg_dev->core_if;
@@ -1415,7 +1428,7 @@ int32_t dwc_otg_handle_common_intr(void
@@ -1415,7 +1428,7 @@ int32_t dwc_otg_handle_common_intr(void *dev)
}
if (core_if->hibernation_suspend <= 0) {
@ -120,7 +124,7 @@ held off by the interrupt latency of Linux
if (gintsts.b.modemismatch) {
retval |= dwc_otg_handle_mode_mismatch_intr(core_if);
@@ -1512,8 +1525,12 @@ int32_t dwc_otg_handle_common_intr(void
@@ -1512,8 +1525,12 @@ int32_t dwc_otg_handle_common_intr(void *dev)
gintsts.b.portintr = 1;
DWC_WRITE_REG32(&core_if->core_global_regs->gintsts,gintsts.d32);
retval |= 1;
@ -133,9 +137,11 @@ held off by the interrupt latency of Linux
} else {
DWC_DEBUGPL(DBG_ANY, "gpwrdn=%08x\n", gpwrdn.d32);
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.c b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
index cea8fcb..6c89a69 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_driver.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
@@ -242,7 +242,8 @@ static struct dwc_otg_driver_module_para
@@ -242,7 +242,8 @@ static struct dwc_otg_driver_module_params dwc_otg_module_params = {
//Global variable to switch the fiq fix on or off (declared in bcm2708.c)
extern bool fiq_fix_enable;
@ -145,7 +151,7 @@ held off by the interrupt latency of Linux
//Global variable to switch the nak holdoff on or off
bool nak_holdoff_enable = true;
@@ -1090,6 +1091,7 @@ static int __init dwc_otg_driver_init(vo
@@ -1090,6 +1091,7 @@ static int __init dwc_otg_driver_init(void)
}
printk(KERN_DEBUG "dwc_otg: FIQ %s\n", fiq_fix_enable ? "enabled":"disabled");
printk(KERN_DEBUG "dwc_otg: NAK holdoff %s\n", nak_holdoff_enable ? "enabled":"disabled");
@ -153,7 +159,7 @@ held off by the interrupt latency of Linux
error = driver_create_file(drv, &driver_attr_version);
#ifdef DEBUG
@@ -1374,6 +1376,8 @@ module_param(fiq_fix_enable, bool, 0444)
@@ -1374,6 +1376,8 @@ module_param(fiq_fix_enable, bool, 0444);
MODULE_PARM_DESC(fiq_fix_enable, "Enable the fiq fix");
module_param(nak_holdoff_enable, bool, 0444);
MODULE_PARM_DESC(nak_holdoff_enable, "Enable the NAK holdoff");
@ -162,6 +168,8 @@ held off by the interrupt latency of Linux
/** @page "Module Parameters"
*
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 9c2e71a..af9108c 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -45,6 +45,7 @@
@ -172,7 +180,7 @@ held off by the interrupt latency of Linux
extern bool microframe_schedule, nak_holdoff_enable;
@@ -581,6 +582,8 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_
@@ -581,6 +582,8 @@ int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * hcd,
*/
dwc_otg_hc_halt(hcd->core_if, qh->channel,
DWC_OTG_HC_XFER_URB_DEQUEUE);
@ -181,7 +189,7 @@ held off by the interrupt latency of Linux
}
}
@@ -716,6 +719,8 @@ static void completion_tasklet_func(void
@@ -716,6 +719,8 @@ static void completion_tasklet_func(void *ptr)
usb_hcd_giveback_urb(hcd->priv, urb, urb->status);
@ -190,7 +198,7 @@ held off by the interrupt latency of Linux
DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags);
}
DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags);
@@ -979,6 +984,10 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
@@ -979,6 +984,10 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
hcd->frame_list = NULL;
hcd->frame_list_dma = 0;
hcd->periodic_qh_count = 0;
@ -201,7 +209,7 @@ held off by the interrupt latency of Linux
out:
return retval;
}
@@ -1124,7 +1133,12 @@ static void assign_and_init_hc(dwc_otg_h
@@ -1124,7 +1133,12 @@ static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
uint32_t hub_addr, port_addr;
hc->do_split = 1;
hc->xact_pos = qtd->isoc_split_pos;
@ -215,7 +223,7 @@ held off by the interrupt latency of Linux
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;
@@ -1271,6 +1285,62 @@ static void assign_and_init_hc(dwc_otg_h
@@ -1271,6 +1285,62 @@ static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
hc->qh = qh;
}
@ -278,7 +286,7 @@ held off by the interrupt latency of Linux
/**
* This function selects transactions from the HCD transfer schedule and
* assigns them to available host channels. It is called from HCD interrupt
@@ -1304,11 +1374,22 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1304,11 +1374,22 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
while (qh_ptr != &hcd->periodic_sched_ready &&
!DWC_CIRCLEQ_EMPTY(&hcd->free_hc_list)) {
@ -301,7 +309,7 @@ held off by the interrupt latency of Linux
break;
}
hcd->available_host_channels--;
@@ -1329,8 +1410,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1329,8 +1410,6 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_assigned,
&qh->qh_list_entry);
DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags);
@ -310,7 +318,7 @@ held off by the interrupt latency of Linux
}
/*
@@ -1369,10 +1448,19 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1369,10 +1448,19 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
qh->nak_frame = 0xffff;
}
}
@ -330,7 +338,7 @@ held off by the interrupt latency of Linux
break;
}
hcd->available_host_channels--;
@@ -1396,16 +1484,17 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1396,16 +1484,17 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
g_np_sent++;
@ -354,7 +362,7 @@ held off by the interrupt latency of Linux
#ifdef DEBUG_HOST_CHANNELS
last_sel_trans_num_avail_hc_at_end = hcd->available_host_channels;
#endif /* DEBUG_HOST_CHANNELS */
@@ -1522,6 +1611,15 @@ static void process_periodic_channels(dw
@@ -1522,6 +1611,15 @@ static void process_periodic_channels(dwc_otg_hcd_t * hcd)
qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry);
@ -370,7 +378,7 @@ held off by the interrupt latency of Linux
/*
* Set a flag if we're queuing high-bandwidth in slave mode.
* The flag prevents any halts to get into the request queue in
@@ -1651,6 +1749,15 @@ static void process_non_periodic_channel
@@ -1651,6 +1749,15 @@ static void process_non_periodic_channels(dwc_otg_hcd_t * hcd)
qh = DWC_LIST_ENTRY(hcd->non_periodic_qh_ptr, dwc_otg_qh_t,
qh_list_entry);
@ -386,6 +394,8 @@ held off by the interrupt latency of Linux
status =
queue_transaction(hcd, qh->channel,
tx_status.b.nptxfspcavail);
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
index 0493dbf..d3d6e997 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 {
@ -423,7 +433,7 @@ held off by the interrupt latency of Linux
/** Frame List DMA address */
dma_addr_t frame_list_dma;
@@ -604,12 +610,16 @@ extern dwc_otg_transaction_type_e dwc_ot
@@ -604,12 +610,16 @@ extern dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t
extern void dwc_otg_hcd_queue_transactions(dwc_otg_hcd_t * hcd,
dwc_otg_transaction_type_e tr_type);
@ -441,6 +451,8 @@ held off by the interrupt latency of Linux
extern int32_t dwc_otg_hcd_handle_rx_status_q_level_intr(dwc_otg_hcd_t *
dwc_otg_hcd);
extern int32_t dwc_otg_hcd_handle_np_tx_fifo_empty_intr(dwc_otg_hcd_t *
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 16e8c6c..e8b4d35 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -38,6 +38,7 @@
@ -752,7 +764,7 @@ held off by the interrupt latency of Linux
/* entry takes care to store registers we will be treading on here */
asm __volatile__ (
@@ -74,43 +349,112 @@ void __attribute__ ((naked)) dwc_otg_hcd
@@ -74,43 +349,112 @@ void __attribute__ ((naked)) dwc_otg_hcd_handle_fiq(void)
/* stash FIQ and normal regs */
"stmdb sp!, {r0-r12, lr};"
/* !! THIS SETS THE FRAME, adjust to > sizeof locals */
@ -888,7 +900,7 @@ held off by the interrupt latency of Linux
mb();
/* exit back to normal mode restoring everything */
@@ -133,6 +477,7 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
@@ -133,6 +477,7 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
dwc_otg_core_if_t *core_if = dwc_otg_hcd->core_if;
gintsts_data_t gintsts;
@ -896,7 +908,7 @@ held off by the interrupt latency of Linux
hfnum_data_t hfnum;
#ifdef DEBUG
@@ -140,6 +485,9 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
@@ -140,6 +485,9 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
#endif
@ -906,7 +918,7 @@ held off by the interrupt latency of Linux
/* Exit from ISR if core is hibernated */
if (core_if->hibernation_suspend == 1) {
goto exit_handler_routine;
@@ -147,11 +495,18 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
@@ -147,11 +495,18 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
DWC_SPINLOCK(dwc_otg_hcd->lock);
/* Check if HOST Mode */
if (dwc_otg_is_host_mode(core_if)) {
@ -926,7 +938,7 @@ held off by the interrupt latency of Linux
/* Don't print debug message in the interrupt handler on SOF */
#ifndef DEBUG_SOF
if (gintsts.d32 != DWC_SOF_INTR_MASK)
@@ -171,11 +526,12 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
@@ -171,11 +526,12 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
if (gintsts.b.sofintr && g_np_count == g_np_sent && dwc_frame_num_gt(g_next_sched_frame, hfnum.b.frnum))
{
/* Note, we should never get here if the FIQ is doing it's job properly*/
@ -941,7 +953,7 @@ held off by the interrupt latency of Linux
if (gintsts.b.rxstsqlvl) {
retval |=
dwc_otg_hcd_handle_rx_status_q_level_intr
@@ -190,7 +546,10 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_
@@ -190,7 +546,10 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd)
/** @todo Implement i2cintr handler. */
}
if (gintsts.b.portintr) {
@ -1000,7 +1012,7 @@ held off by the interrupt latency of Linux
}
DWC_SPINUNLOCK(dwc_otg_hcd->lock);
@@ -294,13 +662,12 @@ static inline void track_missed_sofs(uin
@@ -294,13 +662,12 @@ static inline void track_missed_sofs(uint16_t curr_frame_number)
* (micro)frame. Periodic transactions may be queued to the controller for the
* next (micro)frame.
*/
@ -1015,7 +1027,7 @@ held off by the interrupt latency of Linux
int did_something = 0;
int32_t next_sched_frame = -1;
@@ -326,6 +693,7 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_
@@ -326,6 +693,7 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd, int32_t work_expected)
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)) {
@ -1023,7 +1035,7 @@ held off by the interrupt latency of Linux
/*
* Move QH to the ready list to be executed next
* (micro)frame.
@@ -351,15 +719,10 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_
@@ -351,15 +719,10 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd, int32_t work_expected)
dwc_otg_hcd_queue_transactions(hcd, tr_type);
did_something = 1;
}
@ -1041,7 +1053,7 @@ held off by the interrupt latency of Linux
return 1;
}
@@ -643,6 +1006,15 @@ int32_t dwc_otg_hcd_handle_hc_intr(dwc_o
@@ -643,6 +1006,15 @@ int32_t dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd_t * dwc_otg_hcd)
haint.d32 = dwc_otg_read_host_all_channels_intr(dwc_otg_hcd->core_if);
@ -1057,7 +1069,7 @@ held off by the interrupt latency of Linux
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);
@@ -683,7 +1055,10 @@ static uint32_t get_actual_xfer_length(d
@@ -683,7 +1055,10 @@ static uint32_t get_actual_xfer_length(dwc_hc_t * hc,
*short_read = (hctsiz.b.xfersize != 0);
}
} else if (hc->qh->do_split) {
@ -1069,7 +1081,7 @@ held off by the interrupt latency of Linux
} else {
length = hc->xfer_len;
}
@@ -727,7 +1102,6 @@ static int update_urb_state_xfer_comp(dw
@@ -727,7 +1102,6 @@ static int update_urb_state_xfer_comp(dwc_hc_t * hc,
DWC_OTG_HC_XFER_COMPLETE,
&short_read);
@ -1077,7 +1089,7 @@ held off by the interrupt latency of Linux
/* 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,
@@ -930,6 +1304,9 @@ static void release_channel(dwc_otg_hcd_
@@ -930,6 +1304,9 @@ static void release_channel(dwc_otg_hcd_t * hcd,
int free_qtd;
dwc_irqflags_t flags;
dwc_spinlock_t *channel_lock = hcd->channel_lock;
@ -1112,7 +1124,7 @@ held off by the interrupt latency of Linux
/* 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) {
@@ -1633,8 +2025,10 @@ static int32_t handle_hc_nyet_intr(dwc_o
@@ -1633,8 +2025,10 @@ static int32_t handle_hc_nyet_intr(dwc_otg_hcd_t * hcd,
hc->ep_type == DWC_OTG_EP_TYPE_ISOC) {
int frnum = dwc_otg_hcd_get_frame_number(hcd);
@ -1124,7 +1136,7 @@ held off by the interrupt latency of Linux
/*
* No longer in the same full speed frame.
* Treat this as a transaction error.
@@ -2012,10 +2406,10 @@ static inline int halt_status_ok(dwc_otg
@@ -2012,10 +2406,10 @@ static inline int halt_status_ok(dwc_otg_hcd_t * hcd,
static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
dwc_hc_t * hc,
dwc_otg_hc_regs_t * hc_regs,
@ -1138,7 +1150,7 @@ held off by the interrupt latency of Linux
int out_nak_enh = 0;
/* For core with OUT NAK enhancement, the flow for high-
@@ -2047,8 +2441,11 @@ static void handle_hc_chhltd_intr_dma(dw
@@ -2047,8 +2441,11 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
}
/* Read the HCINTn register to determine the cause for the halt. */
@ -1152,7 +1164,7 @@ held off by the interrupt latency of Linux
if (hcint.b.xfercomp) {
/** @todo This is here because of a possible hardware bug. Spec
@@ -2161,13 +2558,15 @@ static void handle_hc_chhltd_intr_dma(dw
@@ -2161,13 +2558,15 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
static int32_t handle_hc_chhltd_intr(dwc_otg_hcd_t * hcd,
dwc_hc_t * hc,
dwc_otg_hc_regs_t * hc_regs,
@ -1170,7 +1182,7 @@ held off by the interrupt latency of Linux
} else {
#ifdef DEBUG
if (!halt_status_ok(hcd, hc, hc_regs, qtd)) {
@@ -2184,7 +2583,7 @@ static int32_t handle_hc_chhltd_intr(dwc
@@ -2184,7 +2583,7 @@ static int32_t handle_hc_chhltd_intr(dwc_otg_hcd_t * hcd,
int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
{
int retval = 0;
@ -1179,7 +1191,7 @@ held off by the interrupt latency of Linux
hcintmsk_data_t hcintmsk;
dwc_hc_t *hc;
dwc_otg_hc_regs_t *hc_regs;
@@ -2197,12 +2596,23 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
@@ -2197,12 +2596,23 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
qtd = DWC_CIRCLEQ_FIRST(&hc->qh->qtd_list);
hcint.d32 = DWC_READ_REG32(&hc_regs->hcint);
@ -1203,7 +1215,7 @@ held off by the interrupt latency of Linux
if (!dwc_otg_hcd->core_if->dma_enable) {
if (hcint.b.chhltd && hcint.d32 != 0x2) {
hcint.b.chhltd = 0;
@@ -2220,7 +2630,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
@@ -2220,7 +2630,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
hcint.b.nyet = 0;
}
if (hcint.b.chhltd) {
@ -1212,9 +1224,11 @@ held off by the interrupt latency of Linux
}
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 fef557d..0d6f5f4 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -392,7 +392,11 @@ static struct dwc_otg_hcd_function_ops h
@@ -392,7 +392,11 @@ static struct dwc_otg_hcd_function_ops hcd_fops = {
static struct fiq_handler fh = {
.name = "usb_fiq",
};
@ -1259,7 +1273,7 @@ held off by the interrupt latency of Linux
//Enable mphi peripheral
writel((1<<31),c_mphi_regs.ctrl);
#ifdef DEBUG
@@ -839,6 +849,8 @@ static int dwc_otg_urb_dequeue(struct us
@@ -839,6 +849,8 @@ static int dwc_otg_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
usb_hcd_unlink_urb_from_ep(hcd, urb);
#endif
DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, flags);
@ -1268,6 +1282,8 @@ held off by the interrupt latency of Linux
#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 b3e6e52..8125307 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 @@
@ -1278,7 +1294,7 @@ held off by the interrupt latency of Linux
extern bool microframe_schedule;
@@ -191,6 +192,7 @@ void qh_init(dwc_otg_hcd_t * hcd, dwc_ot
@@ -191,6 +192,7 @@ void qh_init(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, dwc_otg_hcd_urb_t * urb)
dwc_otg_hcd_get_ep_num(&urb->pipe_info), hub_addr,
hub_port);
qh->do_split = 1;
@ -1286,7 +1302,7 @@ held off by the interrupt latency of Linux
}
if (qh->ep_type == UE_INTERRUPT || qh->ep_type == UE_ISOCHRONOUS) {
@@ -737,6 +739,9 @@ void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t
@@ -737,6 +739,9 @@ void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh)
hcd->non_periodic_qh_ptr->next;
}
DWC_LIST_REMOVE_INIT(&qh->qh_list_entry);
@ -1296,7 +1312,7 @@ held off by the interrupt latency of Linux
} else {
deschedule_periodic(hcd, qh);
hcd->periodic_qh_count--;
@@ -766,21 +771,21 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_h
@@ -766,21 +771,21 @@ void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh,
{
if (dwc_qh_is_non_per(qh)) {
@ -1331,6 +1347,8 @@ held off by the interrupt latency of Linux
dwc_otg_hcd_qh_remove(hcd, qh);
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
index 22f28e1..ca17379 100755
--- a/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h
@@ -1,10 +1,7 @@
@ -1362,19 +1380,19 @@ held off by the interrupt latency of Linux
#ifdef DEBUG
#define DWC_DBG_PRINT_CORE_INT(_arg_) dwc_debug_print_core_int_reg(_arg_,__func__)
@@ -30,7 +27,22 @@ void dwc_debug_otg_int(gotgint_data_t go
@@ -30,7 +27,22 @@ void dwc_debug_otg_int(gotgint_data_t gotgint, const char* function_name);
#define DWC_DBG_PRINT_CORE_INT_MASK(_arg_)
#define DWC_DBG_PRINT_OTG_INT(_arg_)
+#endif
+
+typedef enum {
+ FIQDBG_SCHED = (1 << 0),
+ FIQDBG_INT = (1 << 1),
+ FIQDBG_ERR = (1 << 2),
+ FIQDBG_PORTHUB = (1 << 3),
+} FIQDBG_T;
+
+void _fiq_print(FIQDBG_T dbg_lvl, char *fmt, ...);
+#ifdef FIQ_DEBUG
+#define fiq_print _fiq_print
@ -1385,6 +1403,8 @@ held off by the interrupt latency of Linux
+extern bool fiq_fix_enable, nak_holdoff_enable, fiq_split_enable;
+
#endif
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 27061d3..9720937 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 { \
@ -1396,3 +1416,6 @@ held off by the interrupt latency of Linux
out_desc_addr->status.d32;
if (status.b.sr) {
--
1.9.1

View file

@ -1,16 +1,18 @@
From 7653ccf871836bc9a49f55df82d7f14596115146 Mon Sep 17 00:00:00 2001
From 7f68345942e44b3ff6b922d00d9650abae485eac Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 11:39:46 +0100
Subject: [PATCH 073/174] dwc_otg: fix device attributes and avoid kernel
Subject: [PATCH 073/196] dwc_otg: fix device attributes and avoid kernel
warnings on boot
---
drivers/usb/host/dwc_otg/dwc_otg_attr.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_attr.c b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
index 95eb7f8..9602fda 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 devic
@@ -909,7 +909,7 @@ static ssize_t regdump_show(struct device *_dev,
return sprintf(buf, "Register Dump\n");
}
@ -19,7 +21,7 @@ Subject: [PATCH 073/174] dwc_otg: fix device attributes and avoid kernel
/**
* Dump global registers and either host or device registers (depending on the
@@ -925,7 +925,7 @@ static ssize_t spramdump_show(struct dev
@@ -925,7 +925,7 @@ static ssize_t spramdump_show(struct device *_dev,
return sprintf(buf, "SPRAM Dump\n");
}
@ -28,7 +30,7 @@ Subject: [PATCH 073/174] dwc_otg: fix device attributes and avoid kernel
/**
* Dump the current hcd state.
@@ -940,7 +940,7 @@ static ssize_t hcddump_show(struct devic
@@ -940,7 +940,7 @@ static ssize_t hcddump_show(struct device *_dev,
return sprintf(buf, "HCD Dump\n");
}
@ -37,7 +39,7 @@ Subject: [PATCH 073/174] dwc_otg: fix device attributes and avoid kernel
/**
* Dump the average frame remaining at SOF. This can be used to
@@ -958,7 +958,7 @@ static ssize_t hcd_frrem_show(struct dev
@@ -958,7 +958,7 @@ static ssize_t hcd_frrem_show(struct device *_dev,
return sprintf(buf, "HCD Dump Frame Remaining\n");
}
@ -46,7 +48,7 @@ Subject: [PATCH 073/174] dwc_otg: fix device attributes and avoid kernel
/**
* Displays the time required to read the GNPTXFSIZ register many times (the
@@ -986,7 +986,7 @@ static ssize_t rd_reg_test_show(struct d
@@ -986,7 +986,7 @@ static ssize_t rd_reg_test_show(struct device *_dev,
RW_REG_COUNT, time * MSEC_PER_JIFFIE, time);
}
@ -55,7 +57,7 @@ Subject: [PATCH 073/174] dwc_otg: fix device attributes and avoid kernel
/**
* Displays the time required to write the GNPTXFSIZ register many times (the
@@ -1014,7 +1014,7 @@ static ssize_t wr_reg_test_show(struct d
@@ -1014,7 +1014,7 @@ static ssize_t wr_reg_test_show(struct device *_dev,
RW_REG_COUNT, time * MSEC_PER_JIFFIE, time);
}
@ -64,3 +66,6 @@ Subject: [PATCH 073/174] dwc_otg: fix device attributes and avoid kernel
#ifdef CONFIG_USB_DWC_OTG_LPM
--
1.9.1

View file

@ -1,12 +1,14 @@
From a720faa00a378b304c7a24cbbde6d9bc98fb5c70 Mon Sep 17 00:00:00 2001
From 164e83a7e4182fb669437b456f173b7dfe0465a0 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 3 Jul 2013 13:55:00 +0100
Subject: [PATCH 074/174] hack: fix for incorrect uart fifo size detection
Subject: [PATCH 074/196] hack: fix for incorrect uart fifo size detection
---
drivers/tty/serial/amba-pl011.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index 7a55fe7..a1da63c 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -84,7 +84,7 @@ struct vendor_data {
@ -18,3 +20,6 @@ Subject: [PATCH 074/174] hack: fix for incorrect uart fifo size detection
return rev < 3 ? 16 : 32;
}
--
1.9.1

View file

@ -1,13 +1,15 @@
From 9fc9389ab723f75d183813ca8012b89a01a70a1a Mon Sep 17 00:00:00 2001
From 581798214a3fc7e7cd983e7b4f1bfa353ec3b9a3 Mon Sep 17 00:00:00 2001
From: Jonathan Bensen <cybertronic@gmail.com>
Date: Mon, 8 Jul 2013 09:49:56 -0700
Subject: [PATCH 075/174] Fix for deprecated/undefined create_proc_entry in
Subject: [PATCH 075/196] Fix for deprecated/undefined create_proc_entry in
RTL8192cu driver
---
drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c b/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c
index 8feb780..b88a5eb 100644
--- a/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c
+++ b/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c
@@ -255,6 +255,18 @@ static char rtw_proc_name[IFNAMSIZ];
@ -29,7 +31,7 @@ Subject: [PATCH 075/174] Fix for deprecated/undefined create_proc_entry in
void rtw_proc_init_one(struct net_device *dev)
{
struct proc_dir_entry *dir_dev = NULL;
@@ -525,6 +537,7 @@ void rtw_proc_remove_one(struct net_devi
@@ -525,6 +537,7 @@ void rtw_proc_remove_one(struct net_device *dev)
}
}
#endif
@ -37,3 +39,6 @@ Subject: [PATCH 075/174] Fix for deprecated/undefined create_proc_entry in
uint loadparam( _adapter *padapter, _nic_hdl pnetdev)
{
--
1.9.1

View file

@ -1,7 +1,7 @@
From a1cd8994c1f5d01f8932ad5d047677d6a264f711 Mon Sep 17 00:00:00 2001
From 702b7652ec63948bb7acc7c86641599b5b69404a Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 10 Jul 2013 23:53:31 +0100
Subject: [PATCH 076/174] sdhci-bcm2807: Increase sync_after_dma timeout
Subject: [PATCH 076/196] sdhci-bcm2807: Increase sync_after_dma timeout
The current timeout is being hit with some cards that complete successfully with a longer timeout.
The timeout is not handled well, and is believed to be a code path that causes corruption.
@ -10,9 +10,11 @@ The timeout is not handled well, and is believed to be a code path that causes c
drivers/mmc/host/sdhci-bcm2708.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index c2409b9..4770680 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -842,7 +842,7 @@ static void sdhci_bcm2708_dma_complete_i
@@ -842,7 +842,7 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
We get CRC and DEND errors unless we wait for
the SD controller to finish reading/writing to the card. */
u32 state_mask;
@ -21,3 +23,6 @@ The timeout is not handled well, and is believed to be a code path that causes c
DBG("PDMA over - sync card\n");
if (data->flags & MMC_DATA_READ)
--
1.9.1

View file

@ -1,7 +1,7 @@
From 9112b4c659edaf09792f1af02fe9e9c4753fb411 Mon Sep 17 00:00:00 2001
From 0b4709bfe4dc73b8e2923b7d8a6c29db8a5ce47f Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Mon, 15 Jul 2013 23:55:52 +0100
Subject: [PATCH 077/174] dcw_otg: avoid logging function that can cause panics
Subject: [PATCH 077/196] dcw_otg: avoid logging function that can cause panics
See: https://github.com/raspberrypi/firmware/issues/21
Thanks to cleverca22 for fix
@ -9,9 +9,11 @@ Thanks to cleverca22 for fix
drivers/usb/host/dwc_otg/dwc_otg_attr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_attr.c b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
index 9602fda..c6966af 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_attr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
@@ -920,7 +920,7 @@ static ssize_t spramdump_show(struct dev
@@ -920,7 +920,7 @@ static ssize_t spramdump_show(struct device *_dev,
{
dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev);
@ -20,3 +22,6 @@ Thanks to cleverca22 for fix
return sprintf(buf, "SPRAM Dump\n");
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From cb902630ae7ef709c8f40ca3f506cf5052077701 Mon Sep 17 00:00:00 2001
From 5608eaff0f301e9bf73998da020644f1673b66e4 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Sat, 13 Jul 2013 20:41:26 +0100
Subject: [PATCH 078/174] dwc_otg: mask correct interrupts after transaction
Subject: [PATCH 078/196] dwc_otg: mask correct interrupts after transaction
error recovery
The dwc_otg driver will unmask certain interrupts on a transaction
@ -17,9 +17,11 @@ from being generated if the FIQ is enabled.
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
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 e8b4d35..27b673f 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -1851,7 +1851,11 @@ static int32_t handle_hc_nak_intr(dwc_ot
@@ -1851,7 +1851,11 @@ static int32_t handle_hc_nak_intr(dwc_otg_hcd_t * hcd,
* transfers in DMA mode for the sole purpose of
* resetting the error count after a transaction error
* occurs. The core will continue transferring data.
@ -31,7 +33,7 @@ from being generated if the FIQ is enabled.
qtd->error_count = 0;
goto handle_nak_done;
}
@@ -1963,6 +1967,15 @@ static int32_t handle_hc_ack_intr(dwc_ot
@@ -1963,6 +1967,15 @@ static int32_t handle_hc_ack_intr(dwc_otg_hcd_t * hcd,
halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_ACK);
}
} else {
@ -47,7 +49,7 @@ from being generated if the FIQ is enabled.
qtd->error_count = 0;
if (hc->qh->ping_state) {
@@ -2328,6 +2341,14 @@ static int32_t handle_hc_datatglerr_intr
@@ -2328,6 +2341,14 @@ static int32_t handle_hc_datatglerr_intr(dwc_otg_hcd_t * hcd,
qtd->urb, qtd, DWC_OTG_HC_XFER_XACT_ERR);
halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR);
} else if (hc->ep_is_in) {
@ -62,3 +64,6 @@ from being generated if the FIQ is enabled.
qtd->error_count = 0;
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From 4d44d8447b13ded9c6931583938183c76b1846ed Mon Sep 17 00:00:00 2001
From 6a276a4e4878b5b3e92c8975a87eb641d57669c4 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Sat, 13 Jul 2013 21:48:41 +0100
Subject: [PATCH 079/174] dwc_otg: fiq: prevent FIQ thrash and incorrect state
Subject: [PATCH 079/196] dwc_otg: fiq: prevent FIQ thrash and incorrect state
passing to IRQ
In the case of a transaction to a device that had previously aborted
@ -22,9 +22,11 @@ it was possible to confuse the IRQ handler.
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
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 27b673f..d655363 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -324,6 +324,27 @@ int fiq_hcintr_handle(int channel, hfnum
@@ -324,6 +324,27 @@ int fiq_hcintr_handle(int channel, hfnum_data_t hfnum)
}
}
}
@ -52,3 +54,6 @@ it was possible to confuse the IRQ handler.
// Clear the interrupt, this will also clear the HAINT bit
FIQ_WRITE((dwc_regs_base + 0x500 + (channel * 0x20) + 0x8), hcint.d32);
--
1.9.1

View file

@ -1,12 +1,14 @@
From f7785b067f07e444934fe0e6c31fff36f5863079 Mon Sep 17 00:00:00 2001
From cf9f56af2d067396b32e65cf10b9d2b072d08033 Mon Sep 17 00:00:00 2001
From: Gordon Hollingworth <gordon@holliweb.co.uk>
Date: Mon, 8 Jul 2013 04:12:19 +0100
Subject: [PATCH 080/174] Fix function tracing
Subject: [PATCH 080/196] Fix function tracing
---
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
index d655363..765451b 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -77,7 +77,7 @@ int queued_port[MAX_EPS_CHANNELS];
@ -18,7 +20,7 @@ Subject: [PATCH 080/174] Fix function tracing
{
FIQDBG_T dbg_lvl_req = FIQDBG_PORTHUB;
va_list args;
@@ -101,7 +101,7 @@ void _fiq_print(FIQDBG_T dbg_lvl, char *
@@ -101,7 +101,7 @@ void _fiq_print(FIQDBG_T dbg_lvl, char *fmt, ...)
}
#endif
@ -60,3 +62,6 @@ Subject: [PATCH 080/174] Fix function tracing
{
/* entry takes care to store registers we will be treading on here */
--
1.9.1

View file

@ -1,15 +1,17 @@
From a7ae411621bcf80fcb2f920084183d98adb6213b Mon Sep 17 00:00:00 2001
From 2f244c31c0fdb6e02bd58dfbcca018d8e2366291 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Thu, 18 Jul 2013 16:32:41 +0100
Subject: [PATCH 081/174] dwc_otg: whitespace cleanup in dwc_otg_urb_enqueue
Subject: [PATCH 081/196] dwc_otg: whitespace cleanup in dwc_otg_urb_enqueue
---
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 59 ++++++++++++++--------------
1 file changed, 29 insertions(+), 30 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 0d6f5f4..0f72bd5 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -733,10 +733,10 @@ static int dwc_otg_urb_enqueue(struct us
@@ -733,10 +733,10 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
if(dwc_otg_urb == NULL)
return -ENOMEM;
@ -24,7 +26,7 @@ Subject: [PATCH 081/174] dwc_otg: whitespace cleanup in dwc_otg_urb_enqueue
dwc_otg_hcd_urb_set_pipeinfo(dwc_otg_urb, usb_pipedevice(urb->pipe),
usb_pipeendpoint(urb->pipe), ep_type,
usb_pipein(urb->pipe),
@@ -776,36 +776,35 @@ static int dwc_otg_urb_enqueue(struct us
@@ -776,36 +776,35 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
}
#if USB_URB_EP_LINKING
@ -86,3 +88,6 @@ Subject: [PATCH 081/174] dwc_otg: whitespace cleanup in dwc_otg_urb_enqueue
return retval;
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From dc570a70493daf0ec548ff57f1a1a9fb31caccb7 Mon Sep 17 00:00:00 2001
From 2e2f1ef719a2fa55fd1d95d9536fa8cca94459a4 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Thu, 18 Jul 2013 17:07:26 +0100
Subject: [PATCH 082/174] dwc_otg: prevent OOPSes during device disconnects
Subject: [PATCH 082/196] dwc_otg: prevent OOPSes during device disconnects
The dwc_otg_urb_enqueue function is thread-unsafe. In particular the
access of urb->hcpriv, usb_hcd_link_urb_to_ep, dwc_otg_urb->qtd and
@ -20,9 +20,11 @@ critical section.
drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c | 6 +-----
3 files changed, 6 insertions(+), 17 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index af9108c..a1970dc 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -464,7 +464,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
@@ -464,7 +464,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
dwc_otg_hcd_urb_t * dwc_otg_urb, void **ep_handle,
int atomic_alloc)
{
@ -30,7 +32,7 @@ critical section.
int retval = 0;
uint8_t needs_scheduling = 0;
dwc_otg_transaction_type_e tr_type;
@@ -515,12 +514,10 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
@@ -515,12 +514,10 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
}
if(needs_scheduling) {
@ -43,9 +45,11 @@ critical section.
}
return retval;
}
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 0f72bd5..ad03ff1 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -679,9 +679,7 @@ static int dwc_otg_urb_enqueue(struct us
@@ -679,9 +679,7 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)
struct usb_host_endpoint *ep = urb->ep;
#endif
@ -55,7 +59,7 @@ critical section.
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;
@@ -733,7 +731,6 @@ static int dwc_otg_urb_enqueue(struct us
@@ -733,7 +731,6 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
if(dwc_otg_urb == NULL)
return -ENOMEM;
@ -63,7 +67,7 @@ critical section.
if (!dwc_otg_urb && urb->number_of_packets)
return -ENOMEM;
@@ -775,10 +772,10 @@ static int dwc_otg_urb_enqueue(struct us
@@ -775,10 +772,10 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
iso_frame_desc[i].length);
}
@ -76,7 +80,7 @@ critical section.
if (0 == retval)
#endif
{
@@ -794,17 +791,16 @@ static int dwc_otg_urb_enqueue(struct us
@@ -794,17 +791,16 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
urb);
}
} else {
@ -97,9 +101,11 @@ critical section.
return retval;
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
index 8125307..5aed416 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -919,6 +919,7 @@ void dwc_otg_hcd_qtd_init(dwc_otg_qtd_t
@@ -919,6 +919,7 @@ void dwc_otg_hcd_qtd_init(dwc_otg_qtd_t * qtd, dwc_otg_hcd_urb_t * urb)
* 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.
@ -107,7 +113,7 @@ critical section.
*
* @param[in] qtd The QTD to add
* @param[in] hcd The DWC HCD structure
@@ -931,8 +932,6 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
@@ -931,8 +932,6 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
dwc_otg_hcd_t * hcd, dwc_otg_qh_t ** qh, int atomic_alloc)
{
int retval = 0;
@ -116,7 +122,7 @@ critical section.
dwc_otg_hcd_urb_t *urb = qtd->urb;
/*
@@ -946,15 +945,12 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
@@ -946,15 +945,12 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
goto done;
}
}
@ -132,3 +138,6 @@ critical section.
done:
return retval;
--
1.9.1

View file

@ -1,7 +1,7 @@
From 3c3c5a15a17649092ecf4c128478b267676c3353 Mon Sep 17 00:00:00 2001
From 14d8b16453f653003fd7d124f221082c53d56cf2 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Mon, 22 Jul 2013 14:08:26 +0100
Subject: [PATCH 083/174] dwc_otg: prevent BUG() in TT allocation if hub
Subject: [PATCH 083/196] dwc_otg: prevent BUG() in TT allocation if hub
address is > 16
A fixed-size array is used to track TT allocation. This was
@ -20,9 +20,11 @@ for debug only for tracking which frame an allocate happened in.
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 3 ++-
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index a1970dc..3c619b4 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -983,7 +983,9 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd
@@ -983,7 +983,9 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if)
hcd->periodic_qh_count = 0;
DWC_MEMSET(hcd->hub_port, 0, sizeof(hcd->hub_port));
@ -32,7 +34,7 @@ for debug only for tracking which frame an allocate happened in.
out:
return retval;
@@ -1317,7 +1319,9 @@ int dwc_otg_hcd_allocate_port(dwc_otg_hc
@@ -1317,7 +1319,9 @@ int dwc_otg_hcd_allocate_port(dwc_otg_hcd_t * hcd, dwc_otg_qh_t *qh)
qh->skip_count = 0;
hcd->hub_port[hub_addr] |= 1 << port_addr;
fiq_print(FIQDBG_PORTHUB, "H%dP%d:A %d", hub_addr, port_addr, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->pipe_info.ep_num);
@ -42,7 +44,7 @@ for debug only for tracking which frame an allocate happened in.
return 0;
}
}
@@ -1331,8 +1335,9 @@ void dwc_otg_hcd_release_port(dwc_otg_hc
@@ -1331,8 +1335,9 @@ void dwc_otg_hcd_release_port(dwc_otg_hcd_t * hcd, dwc_otg_qh_t *qh)
hcd->fops->hub_info(hcd, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->priv, &hub_addr, &port_addr);
hcd->hub_port[hub_addr] &= ~(1 << port_addr);
@ -53,6 +55,8 @@ for debug only for tracking which frame an allocate happened in.
fiq_print(FIQDBG_PORTHUB, "H%dP%d:RO%d", hub_addr, port_addr, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->pipe_info.ep_num);
}
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
index d3d6e997..80a3af2 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -577,8 +577,10 @@ struct dwc_otg_hcd {
@ -68,6 +72,8 @@ for debug only for tracking which frame an allocate happened in.
/** Frame List DMA address */
dma_addr_t frame_list_dma;
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 765451b..dbff763 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -1419,8 +1419,9 @@ cleanup:
@ -81,3 +87,6 @@ for debug only for tracking which frame an allocate happened in.
fiq_print(FIQDBG_PORTHUB, "H%dP%d:RR%d", hc->hub_addr, hc->port_addr, endp);
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From e2c9f557c5bff8c839704d0627d5dd108a0e14f2 Mon Sep 17 00:00:00 2001
From 6ecef9d4e6add518889432cc642a50e47ee3536b Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Tue, 23 Jul 2013 14:15:32 +0100
Subject: [PATCH 084/174] dwc_otg: make channel halts with unknown state less
Subject: [PATCH 084/196] dwc_otg: make channel halts with unknown state less
damaging
If the IRQ received a channel halt interrupt through the FIQ
@ -13,9 +13,11 @@ Add catchall handling to treat as a transaction error and retry.
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
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 dbff763..488defb 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -2578,12 +2578,24 @@ static void handle_hc_chhltd_intr_dma(dw
@@ -2578,12 +2578,24 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd,
DWC_READ_REG32(&hcd->
core_if->core_global_regs->
gintsts));
@ -40,3 +42,6 @@ Add catchall handling to treat as a transaction error and retry.
}
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From 2b66f2f4f07ed87db0e241489d4e93881fe50a85 Mon Sep 17 00:00:00 2001
From fa6cd2944967a33088bc4cb66d1dc0323665b7c6 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Tue, 30 Jul 2013 09:58:48 +0100
Subject: [PATCH 085/174] dwc_otg: fiq_split: use TTs with more granularity
Subject: [PATCH 085/196] dwc_otg: fiq_split: use TTs with more granularity
This fixes certain issues with split transaction scheduling.
@ -18,9 +18,11 @@ This commit will mainly affect USB audio playback.
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 20 ++++++++++++++++----
2 files changed, 29 insertions(+), 17 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index 3c619b4..c42172f 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -1356,6 +1356,7 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1356,6 +1356,7 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
{
dwc_list_link_t *qh_ptr;
dwc_otg_qh_t *qh;
@ -28,7 +30,7 @@ This commit will mainly affect USB audio playback.
int num_channels;
dwc_irqflags_t flags;
dwc_spinlock_t *channel_lock = hcd->channel_lock;
@@ -1379,11 +1380,18 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1379,11 +1380,18 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry);
@ -52,7 +54,7 @@ This commit will mainly affect USB audio playback.
}
if (microframe_schedule) {
@@ -1451,18 +1459,10 @@ dwc_otg_transaction_type_e dwc_otg_hcd_s
@@ -1451,18 +1459,10 @@ dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd)
}
}
@ -71,9 +73,11 @@ This commit will mainly affect USB audio playback.
break;
}
hcd->available_host_channels--;
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 488defb..7d521d9 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -1328,10 +1328,20 @@ static void release_channel(dwc_otg_hcd_
@@ -1328,10 +1328,20 @@ static void release_channel(dwc_otg_hcd_t * hcd,
#ifdef FIQ_DEBUG
int endp = qtd->urb ? qtd->urb->pipe_info.ep_num : 0;
#endif
@ -113,3 +117,6 @@ This commit will mainly affect USB audio playback.
}
/* Try to queue more transfers now that there's a free channel. */
--
1.9.1

View file

@ -1,7 +1,7 @@
From 445255441aa03cca3d1318d1e7ff58872c91c645 Mon Sep 17 00:00:00 2001
From ce5fb2face9a3974693b0f08ce226d7f0406541a Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Fri, 2 Aug 2013 10:04:18 +0100
Subject: [PATCH 086/174] dwc_otg: fix potential sleep while atomic during urb
Subject: [PATCH 086/196] dwc_otg: fix potential sleep while atomic during urb
enqueue
Fixes a regression introduced with eb1b482a. Kmalloc called from
@ -12,9 +12,11 @@ critical section.
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 3 +--
1 file changed, 1 insertion(+), 2 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 ad03ff1..80690f9 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -781,8 +781,7 @@ static int dwc_otg_urb_enqueue(struct us
@@ -781,8 +781,7 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
{
retval = dwc_otg_hcd_urb_enqueue(dwc_otg_hcd, dwc_otg_urb,
/*(dwc_otg_qh_t **)*/
@ -24,3 +26,6 @@ critical section.
if (0 == retval) {
if (alloc_bandwidth) {
allocate_bus_bandwidth(hcd,
--
1.9.1

View file

@ -1,7 +1,7 @@
From 635578168de091d59e7d1a837286cff86fb9badb Mon Sep 17 00:00:00 2001
From 53e5848c799c1fa6a7f6c3464d2bb2f5c85f555f Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Mon, 5 Aug 2013 11:42:12 +0100
Subject: [PATCH 087/174] dwc_otg: make fiq_split_enable imply fiq_fix_enable
Subject: [PATCH 087/196] dwc_otg: make fiq_split_enable imply fiq_fix_enable
Failing to set up the FIQ correctly would result in
"IRQ 32: nobody cared" errors in dmesg.
@ -9,9 +9,11 @@ Failing to set up the FIQ correctly would result in
drivers/usb/host/dwc_otg/dwc_otg_driver.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.c b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
index 6c89a69..4735f51 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_driver.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
@@ -1070,6 +1070,12 @@ static int __init dwc_otg_driver_init(vo
@@ -1070,6 +1070,12 @@ static int __init dwc_otg_driver_init(void)
int retval = 0;
int error;
struct device_driver *drv;
@ -24,3 +26,6 @@ Failing to set up the FIQ correctly would result in
printk(KERN_INFO "%s: version %s (%s bus)\n", dwc_driver_name,
DWC_DRIVER_VERSION,
#ifdef LM_INTERFACE
--
1.9.1

View file

@ -1,7 +1,7 @@
From afde583fbb644cff07984f2b47f75c0410d72205 Mon Sep 17 00:00:00 2001
From 53e5476701371e6f8b85cdeeb6099cdaea3872ce Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Mon, 5 Aug 2013 11:47:12 +0100
Subject: [PATCH 088/174] dwc_otg: prevent crashes on host port disconnects
Subject: [PATCH 088/196] dwc_otg: prevent crashes on host port disconnects
Fix several issues resulting in crashes or inconsistent state
if a Model A root port was disconnected.
@ -25,9 +25,11 @@ if a Model A root port was disconnected.
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 3 ++
3 files changed, 48 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 c42172f..be1d25b 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -59,6 +59,11 @@ static int last_sel_trans_num_avail_hc_a
@@ -59,6 +59,11 @@ static int last_sel_trans_num_avail_hc_at_end = 0;
extern int g_next_sched_frame, g_np_count, g_np_sent;
@ -39,7 +41,7 @@ if a Model A root port was disconnected.
dwc_otg_hcd_t *dwc_otg_hcd_alloc_hcd(void)
{
return DWC_ALLOC(sizeof(dwc_otg_hcd_t));
@@ -168,31 +173,43 @@ static void del_timers(dwc_otg_hcd_t * h
@@ -168,31 +173,43 @@ static void del_timers(dwc_otg_hcd_t * hcd)
/**
* Processes all the URBs in a single list of QHs. Completes them with
@ -88,7 +90,7 @@ if a Model A root port was disconnected.
* 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.
@@ -278,7 +295,8 @@ static int32_t dwc_otg_hcd_disconnect_cb
@@ -278,7 +295,8 @@ static int32_t dwc_otg_hcd_disconnect_cb(void *p)
*/
dwc_otg_hcd->flags.b.port_connect_status_change = 1;
dwc_otg_hcd->flags.b.port_connect_status = 0;
@ -98,7 +100,7 @@ if a Model A root port was disconnected.
/*
* Shutdown any transfers in process by clearing the Tx FIFO Empty
* interrupt mask and status bits and disabling subsequent host
@@ -374,8 +392,22 @@ static int32_t dwc_otg_hcd_disconnect_cb
@@ -374,8 +392,22 @@ static int32_t dwc_otg_hcd_disconnect_cb(void *p)
channel->qh = NULL;
}
}
@ -121,9 +123,11 @@ if a Model A root port was disconnected.
if (dwc_otg_hcd->fops->disconnect) {
dwc_otg_hcd->fops->disconnect(dwc_otg_hcd);
}
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 7d521d9..19abea0 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -2660,6 +2660,13 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc
@@ -2660,6 +2660,13 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num)
hc = dwc_otg_hcd->hc_ptr_array[num];
hc_regs = dwc_otg_hcd->core_if->host_if->hc_regs[num];
@ -137,9 +141,11 @@ if a Model A root port was disconnected.
qtd = DWC_CIRCLEQ_FIRST(&hc->qh->qtd_list);
hcint.d32 = DWC_READ_REG32(&hc_regs->hcint);
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 80690f9..0d49b50 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -309,6 +309,9 @@ static int _complete(dwc_otg_hcd_t * hcd
@@ -309,6 +309,9 @@ static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle,
case -DWC_E_OVERFLOW:
status = -EOVERFLOW;
break;
@ -149,3 +155,6 @@ if a Model A root port was disconnected.
default:
if (status) {
DWC_PRINTF("Uknown urb status %d\n", status);
--
1.9.1

View file

@ -1,7 +1,7 @@
From 42ed35f8f9c76ff56afdda9b0d3add958936bea6 Mon Sep 17 00:00:00 2001
From 53d7fd1afe9f150cbb97e6fe513aa2be32f30e1a Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Mon, 5 Aug 2013 13:17:58 +0100
Subject: [PATCH 089/174] dwc_otg: prevent leaking URBs during enqueue
Subject: [PATCH 089/196] dwc_otg: prevent leaking URBs during enqueue
A dwc_otg_urb would get leaked if the HCD enqueue function
failed for any reason. Free the URB at the appropriate points.
@ -9,9 +9,11 @@ failed for any reason. Free the URB at the appropriate points.
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 8 ++++++++
1 file changed, 8 insertions(+)
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 0d49b50..d3949da 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -797,11 +797,19 @@ static int dwc_otg_urb_enqueue(struct us
@@ -797,11 +797,19 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
#if USB_URB_EP_LINKING
usb_hcd_unlink_urb_from_ep(hcd, urb);
#endif
@ -31,3 +33,6 @@ failed for any reason. Free the URB at the appropriate points.
DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, irqflags);
return retval;
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From 3c174c25ed6ef1108d0a0f8c106c074225d7194b Mon Sep 17 00:00:00 2001
From cfd79481c07339df7d30fe15011dbfbf994c3503 Mon Sep 17 00:00:00 2001
From: Fabio Estevam <festevam@gmail.com>
Date: Fri, 16 Aug 2013 12:55:56 +0100
Subject: [PATCH 091/174] ARM: 7819/1: fiq: Cast the first argument of
Subject: [PATCH 091/196] ARM: 7819/1: fiq: Cast the first argument of
flush_icache_range()
Commit 2ba85e7af4 (ARM: Fix FIQ code on VIVT CPUs) causes the following build warning:
@ -16,9 +16,11 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/fiq.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c
index 9ac7935..aac11f8 100644
--- a/arch/arm/kernel/fiq.c
+++ b/arch/arm/kernel/fiq.c
@@ -89,7 +89,8 @@ void set_fiq_handler(void *start, unsign
@@ -89,7 +89,8 @@ void set_fiq_handler(void *start, unsigned int length)
memcpy(base + offset, start, length);
if (!cache_is_vipt_nonaliasing())
@ -28,3 +30,6 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
flush_icache_range(0xffff0000 + offset, 0xffff0000 + offset + length);
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From b735e5ba3039bbd89651b881705a6cb8d62882d6 Mon Sep 17 00:00:00 2001
From 813811ee8017fcb305e4296efa12fe8009d43278 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 7 Sep 2013 19:07:33 +0100
Subject: [PATCH 092/174] Support for cheap Ralink 3070 WiFi plug
Subject: [PATCH 092/196] Support for cheap Ralink 3070 WiFi plug
See: https://github.com/raspberrypi/linux/pull/321
---
@ -9,6 +9,8 @@ See: https://github.com/raspberrypi/linux/pull/321
drivers/net/wireless/rt2x00/rt2800lib.c | 6 ++++++
2 files changed, 7 insertions(+)
diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
index a7630d5..cbbcd35 100644
--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -70,6 +70,7 @@
@ -19,9 +21,11 @@ See: https://github.com/raspberrypi/linux/pull/321
#define RF3290 0x3290
#define RF5360 0x5360
#define RF5370 0x5370
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 12652d2..c5df041 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -2599,6 +2599,7 @@ static void rt2800_config_channel(struct
@@ -2599,6 +2599,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
break;
case RF5360:
case RF5370:
@ -29,7 +33,7 @@ See: https://github.com/raspberrypi/linux/pull/321
case RF5372:
case RF5390:
case RF5392:
@@ -2615,6 +2616,7 @@ static void rt2800_config_channel(struct
@@ -2615,6 +2616,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
rt2x00_rf(rt2x00dev, RF3322) ||
rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) ||
@ -37,7 +41,7 @@ See: https://github.com/raspberrypi/linux/pull/321
rt2x00_rf(rt2x00dev, RF5372) ||
rt2x00_rf(rt2x00dev, RF5390) ||
rt2x00_rf(rt2x00dev, RF5392)) {
@@ -3206,6 +3208,7 @@ void rt2800_vco_calibration(struct rt2x0
@@ -3206,6 +3208,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
case RF3290:
case RF5360:
case RF5370:
@ -45,7 +49,7 @@ See: https://github.com/raspberrypi/linux/pull/321
case RF5372:
case RF5390:
case RF5392:
@@ -5524,6 +5527,7 @@ static int rt2800_init_eeprom(struct rt2
@@ -5524,6 +5527,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
case RF3322:
case RF5360:
case RF5370:
@ -53,7 +57,7 @@ See: https://github.com/raspberrypi/linux/pull/321
case RF5372:
case RF5390:
case RF5392:
@@ -5979,6 +5983,7 @@ static int rt2800_probe_hw_mode(struct r
@@ -5979,6 +5983,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
rt2x00_rf(rt2x00dev, RF3322) ||
rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) ||
@ -61,7 +65,7 @@ See: https://github.com/raspberrypi/linux/pull/321
rt2x00_rf(rt2x00dev, RF5372) ||
rt2x00_rf(rt2x00dev, RF5390) ||
rt2x00_rf(rt2x00dev, RF5392)) {
@@ -6081,6 +6086,7 @@ static int rt2800_probe_hw_mode(struct r
@@ -6081,6 +6086,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
case RF3290:
case RF5360:
case RF5370:
@ -69,3 +73,6 @@ See: https://github.com/raspberrypi/linux/pull/321
case RF5372:
case RF5390:
case RF5392:
--
1.9.1

View file

@ -1,7 +1,7 @@
From 3d8a3a5cbcd4d36768cf53e778d8165aefabd5b0 Mon Sep 17 00:00:00 2001
From 2fb3834b3ce43c6320c8186795b86ffa2257bd21 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Fri, 20 Sep 2013 16:08:27 +0100
Subject: [PATCH 093/174] dwc_otg: Enable NAK holdoff for control split
Subject: [PATCH 093/196] dwc_otg: Enable NAK holdoff for control split
transactions
Certain low-speed devices take a very long time to complete a
@ -16,9 +16,11 @@ storm could cause SD card timeouts.
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
index 19abea0..509b629 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -1857,8 +1857,7 @@ static int32_t handle_hc_nak_intr(dwc_ot
@@ -1857,8 +1857,7 @@ static int32_t handle_hc_nak_intr(dwc_otg_hcd_t * hcd,
*/
switch(dwc_otg_hcd_get_pipe_type(&qtd->urb->pipe_info)) {
case UE_BULK:
@ -28,3 +30,6 @@ storm could cause SD card timeouts.
if (nak_holdoff_enable)
hc->qh->nak_frame = dwc_otg_hcd_get_frame_number(hcd);
}
--
1.9.1

View file

@ -1,16 +1,18 @@
From 4de1c90013a4ee22aa8250f455b1a6417e0d90fb Mon Sep 17 00:00:00 2001
From 33f352709fedc760be85adde5b834043a650f585 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 20 Sep 2013 19:07:56 +0100
Subject: [PATCH 094/174] dwc_otg: Fix for occasional lockup on boot when doing
Subject: [PATCH 094/196] dwc_otg: Fix for occasional lockup on boot when doing
a USB reset
---
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
index 509b629..57092d2 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -742,8 +742,8 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_
@@ -742,8 +742,8 @@ int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd)
}
/* Clear interrupt */
@ -21,3 +23,6 @@ Subject: [PATCH 094/174] dwc_otg: Fix for occasional lockup on boot when doing
return 1;
}
--
1.9.1

View file

@ -1,7 +1,7 @@
From 0dd387f3d3d1184fe45b57afbe73796e2ebe8d39 Mon Sep 17 00:00:00 2001
From 503ed51d257784037165695334e7a3d03d85d674 Mon Sep 17 00:00:00 2001
From: P33M <P33M@github.com>
Date: Fri, 27 Sep 2013 14:42:24 +0100
Subject: [PATCH 095/174] dwc_otg: Don't issue traffic to LS devices in FS mode
Subject: [PATCH 095/196] dwc_otg: Don't issue traffic to LS devices in FS mode
Issuing low-speed packets when the root port is in full-speed mode
causes the root port to stop responding. Explicitly fail when
@ -10,9 +10,11 @@ enqueuing URBs to a LS endpoint on a FS bus.
drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
index be1d25b..b3e1944 100644
--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -501,6 +501,7 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
@@ -501,6 +501,7 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
dwc_otg_transaction_type_e tr_type;
dwc_otg_qtd_t *qtd;
gintmsk_data_t intr_mask = {.d32 = 0 };
@ -20,7 +22,7 @@ enqueuing URBs to a LS endpoint on a FS bus.
#ifdef DEBUG /* integrity checks (Broadcom) */
if (NULL == hcd->core_if) {
@@ -515,6 +516,16 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
@@ -515,6 +516,16 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
return -DWC_E_NO_DEVICE;
}
@ -37,3 +39,6 @@ enqueuing URBs to a LS endpoint on a FS bus.
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");
--
1.9.1

View file

@ -1,7 +1,7 @@
From 062e7d1247624034c6b9ff1515245930baee8862 Mon Sep 17 00:00:00 2001
From f4ae99bfa423d21fa311ca21c360e9800dc86fb5 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 6 Nov 2013 12:08:46 +0000
Subject: [PATCH 096/174] config: enable BLK_DEV_SD statically. Add some
Subject: [PATCH 096/196] config: enable BLK_DEV_SD statically. Add some
DM_MIRROR raid options. Add ISCSI_TCP. Add R8712U
kernel: config: add missing PPP config options
@ -23,6 +23,8 @@ config: Set CONFIG_SPI_SPIDEV=y
arch/arm/configs/bcmrpi_defconfig | 93 +++++++++++++++++++++++++++++++++------
1 file changed, 80 insertions(+), 13 deletions(-)
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
index 36fcd49..20c1c4f 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
@@ -33,18 +33,21 @@ CONFIG_MODULES=y
@ -301,3 +303,6 @@ config: Set CONFIG_SPI_SPIDEV=y
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_ANSI_CPRNG is not set
--
1.9.1

View file

@ -1,7 +1,7 @@
From 1c4544175663c38eb22b9095ce75c31f2d6c6e18 Mon Sep 17 00:00:00 2001
From 0682247a80d24b2613d4a89b396371ac7fcf3214 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 9 Nov 2013 13:32:03 +0000
Subject: [PATCH 098/174] wifi: add patches from 3.6.y tree to make rtl8192cu
Subject: [PATCH 098/196] wifi: add patches from 3.6.y tree to make rtl8192cu
work
wifi: add missing patch from 3.6.y tree to disable debug
@ -13,6 +13,8 @@ wifi: add missing patch from 3.6.y tree to disable debug
drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c | 1 +
5 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/rtl8192cu/Kconfig b/drivers/net/wireless/rtl8192cu/Kconfig
index bee5ed6..ef46361 100644
--- a/drivers/net/wireless/rtl8192cu/Kconfig
+++ b/drivers/net/wireless/rtl8192cu/Kconfig
@@ -1,6 +1,8 @@
@ -25,6 +27,8 @@ wifi: add missing patch from 3.6.y tree to disable debug
- Help message of RTL8192CU
+ Enable wireless network adapters based on Realtek RTL8192C chipset family, such as EDUP nano series
diff --git a/drivers/net/wireless/rtl8192cu/Makefile b/drivers/net/wireless/rtl8192cu/Makefile
index c399011..f85c59f 100644
--- a/drivers/net/wireless/rtl8192cu/Makefile
+++ b/drivers/net/wireless/rtl8192cu/Makefile
@@ -38,7 +38,7 @@ CONFIG_RTL8192CU_REDEFINE_1X1 = n
@ -47,6 +51,8 @@ wifi: add missing patch from 3.6.y tree to disable debug
ifneq ($(USER_MODULE_NAME),)
MODULE_NAME := $(USER_MODULE_NAME)
endif
diff --git a/drivers/net/wireless/rtl8192cu/include/autoconf.h b/drivers/net/wireless/rtl8192cu/include/autoconf.h
index 12294df..1341ff0 100644
--- a/drivers/net/wireless/rtl8192cu/include/autoconf.h
+++ b/drivers/net/wireless/rtl8192cu/include/autoconf.h
@@ -296,7 +296,7 @@
@ -58,6 +64,8 @@ wifi: add missing patch from 3.6.y tree to disable debug
#define CONFIG_PROC_DEBUG 1
diff --git a/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c b/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c
index 82dee6d..b0bf0e9 100644
--- a/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c
+++ b/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c
@@ -277,6 +277,18 @@ static int rtw_proc_cnt = 0;
@ -79,7 +87,7 @@ wifi: add missing patch from 3.6.y tree to disable debug
void rtw_proc_init_one(struct net_device *dev)
{
struct proc_dir_entry *dir_dev = NULL;
@@ -751,6 +763,7 @@ void rtw_proc_remove_one(struct net_devi
@@ -751,6 +763,7 @@ void rtw_proc_remove_one(struct net_device *dev)
}
}
}
@ -87,9 +95,11 @@ wifi: add missing patch from 3.6.y tree to disable debug
#endif
uint loadparam( _adapter *padapter, _nic_hdl pnetdev);
diff --git a/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c b/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
index 4c1089a..baccb59 100644
--- a/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
+++ b/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c
@@ -138,6 +138,7 @@ static void rtw_dev_remove(struct usb_in
@@ -138,6 +138,7 @@ static void rtw_dev_remove(struct usb_interface *pusb_intf);
{USB_DEVICE(0x2001, 0x3307)},/* D-Link - Cameo */ \
{USB_DEVICE(0x2001, 0x330A)},/* D-Link - Alpha */ \
{USB_DEVICE(0x2001, 0x3309)},/* D-Link - Alpha */ \
@ -97,3 +107,6 @@ wifi: add missing patch from 3.6.y tree to disable debug
{USB_DEVICE(0x0586, 0x341F)},/* Zyxel - Abocom */ \
{USB_DEVICE(0x7392, 0x7822)},/* Edimax - Edimax */ \
{USB_DEVICE(0x2019, 0xAB2B)},/* Planex - Abocom */ \
--
1.9.1

View file

@ -1,7 +1,7 @@
From c24b41600f008f5662a467de17644d26a0c269fd Mon Sep 17 00:00:00 2001
From f88d56e9c6976ebd217993062e0e53d65877685b Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Sat, 9 Nov 2013 17:42:58 +0000
Subject: [PATCH 099/174] mmc: Report 3.3V support in caps
Subject: [PATCH 099/196] mmc: Report 3.3V support in caps
sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstream code
---
@ -9,9 +9,11 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
drivers/mmc/host/sdhci.c | 82 ++++++++++++++++++++++------------------
2 files changed, 47 insertions(+), 37 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 4770680..7fdd815 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -1282,6 +1282,8 @@ static int sdhci_bcm2708_probe(struct pl
@@ -1282,6 +1282,8 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev)
host_priv->dma_chan, host_priv->dma_chan_base,
host_priv->dma_irq);
@ -20,9 +22,11 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
if (allow_highspeed)
host->mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 470860b..13e4e11 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -210,6 +210,14 @@ static void sdhci_spin_disable_schedule(
@@ -210,6 +210,14 @@ static void sdhci_spin_disable_schedule(struct sdhci_host *host)
#endif
}
@ -37,7 +41,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
static void sdhci_clear_set_irqs(struct sdhci_host *host, u32 clear, u32 set)
{
u32 ier;
@@ -374,7 +382,7 @@ static void sdhci_led_control(struct led
@@ -374,7 +382,7 @@ static void sdhci_led_control(struct led_classdev *led,
struct sdhci_host *host = container_of(led, struct sdhci_host, led);
unsigned long flags;
@ -46,7 +50,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
if (host->runtime_suspended)
goto out;
@@ -384,7 +392,7 @@ static void sdhci_led_control(struct led
@@ -384,7 +392,7 @@ static void sdhci_led_control(struct led_classdev *led,
else
sdhci_activate_led(host);
out:
@ -55,7 +59,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
}
#endif
@@ -1419,7 +1427,7 @@ static void sdhci_request(struct mmc_hos
@@ -1419,7 +1427,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
sdhci_runtime_pm_get(host);
@ -64,7 +68,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
WARN_ON(host->mrq != NULL);
@@ -1477,9 +1485,9 @@ static void sdhci_request(struct mmc_hos
@@ -1477,9 +1485,9 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
mmc->card->type == MMC_TYPE_MMC ?
MMC_SEND_TUNING_BLOCK_HS200 :
MMC_SEND_TUNING_BLOCK;
@ -76,7 +80,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
/* Restore original mmc_request structure */
host->mrq = mrq;
@@ -1493,7 +1501,7 @@ static void sdhci_request(struct mmc_hos
@@ -1493,7 +1501,7 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
}
mmiowb();
@ -85,7 +89,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
}
static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
@@ -1502,10 +1510,10 @@ static void sdhci_do_set_ios(struct sdhc
@@ -1502,10 +1510,10 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
int vdd_bit = -1;
u8 ctrl;
@ -98,7 +102,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
if (host->vmmc && ios->power_mode == MMC_POWER_OFF)
mmc_regulator_set_ocr(host->mmc, host->vmmc, 0);
return;
@@ -1532,9 +1540,9 @@ static void sdhci_do_set_ios(struct sdhc
@@ -1532,9 +1540,9 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
vdd_bit = sdhci_set_power(host, ios->vdd);
if (host->vmmc && vdd_bit != -1) {
@ -110,7 +114,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
}
if (host->ops->platform_send_init_74_clocks)
@@ -1672,7 +1680,7 @@ static void sdhci_do_set_ios(struct sdhc
@@ -1672,7 +1680,7 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
sdhci_reset(host, SDHCI_RESET_CMD | SDHCI_RESET_DATA);
mmiowb();
@ -119,7 +123,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
}
static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
@@ -1720,7 +1728,7 @@ static int sdhci_check_ro(struct sdhci_h
@@ -1720,7 +1728,7 @@ static int sdhci_check_ro(struct sdhci_host *host)
unsigned long flags;
int is_readonly;
@ -128,7 +132,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
if (host->flags & SDHCI_DEVICE_DEAD)
is_readonly = 0;
@@ -1730,7 +1738,7 @@ static int sdhci_check_ro(struct sdhci_h
@@ -1730,7 +1738,7 @@ static int sdhci_check_ro(struct sdhci_host *host)
is_readonly = !(sdhci_readl(host, SDHCI_PRESENT_STATE)
& SDHCI_WRITE_PROTECT);
@ -137,7 +141,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
/* This quirk needs to be replaced by a callback-function later */
return host->quirks & SDHCI_QUIRK_INVERTED_WRITE_PROTECT ?
@@ -1803,9 +1811,9 @@ static void sdhci_enable_sdio_irq(struct
@@ -1803,9 +1811,9 @@ static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
struct sdhci_host *host = mmc_priv(mmc);
unsigned long flags;
@ -149,7 +153,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
}
static int sdhci_do_start_signal_voltage_switch(struct sdhci_host *host,
@@ -2149,7 +2157,7 @@ static void sdhci_card_event(struct mmc_
@@ -2149,7 +2157,7 @@ static void sdhci_card_event(struct mmc_host *mmc)
struct sdhci_host *host = mmc_priv(mmc);
unsigned long flags;
@ -158,7 +162,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
/* Check host->mrq first in case we are runtime suspended */
if (host->mrq &&
@@ -2166,7 +2174,7 @@ static void sdhci_card_event(struct mmc_
@@ -2166,7 +2174,7 @@ static void sdhci_card_event(struct mmc_host *mmc)
tasklet_schedule(&host->finish_tasklet);
}
@ -167,7 +171,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
}
static const struct mmc_host_ops sdhci_ops = {
@@ -2205,14 +2213,14 @@ static void sdhci_tasklet_finish(unsigne
@@ -2205,14 +2213,14 @@ static void sdhci_tasklet_finish(unsigned long param)
host = (struct sdhci_host*)param;
@ -184,7 +188,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
return;
}
@@ -2250,7 +2258,7 @@ static void sdhci_tasklet_finish(unsigne
@@ -2250,7 +2258,7 @@ static void sdhci_tasklet_finish(unsigned long param)
#endif
mmiowb();
@ -193,7 +197,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
mmc_request_done(host->mmc, mrq);
sdhci_runtime_pm_put(host);
@@ -2263,7 +2271,7 @@ static void sdhci_timeout_timer(unsigned
@@ -2263,7 +2271,7 @@ static void sdhci_timeout_timer(unsigned long data)
host = (struct sdhci_host*)data;
@ -202,7 +206,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
if (host->mrq) {
pr_err("%s: Timeout waiting for hardware "
@@ -2284,7 +2292,7 @@ static void sdhci_timeout_timer(unsigned
@@ -2284,7 +2292,7 @@ static void sdhci_timeout_timer(unsigned long data)
}
mmiowb();
@ -211,7 +215,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
}
static void sdhci_tuning_timer(unsigned long data)
@@ -2294,11 +2302,11 @@ static void sdhci_tuning_timer(unsigned
@@ -2294,11 +2302,11 @@ static void sdhci_tuning_timer(unsigned long data)
host = (struct sdhci_host *)data;
@ -225,7 +229,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
}
/*****************************************************************************\
@@ -2522,10 +2530,10 @@ static irqreturn_t sdhci_irq(int irq, vo
@@ -2522,10 +2530,10 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
u32 intmask, unexpected = 0;
int cardint = 0, max_loops = 16;
@ -247,7 +251,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
if (unexpected) {
pr_err("%s: Unexpected interrupt 0x%08x.\n",
@@ -2791,15 +2799,15 @@ int sdhci_runtime_suspend_host(struct sd
@@ -2791,15 +2799,15 @@ int sdhci_runtime_suspend_host(struct sdhci_host *host)
host->flags &= ~SDHCI_NEEDS_RETUNING;
}
@ -267,7 +271,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
return ret;
}
@@ -2825,16 +2833,16 @@ int sdhci_runtime_resume_host(struct sdh
@@ -2825,16 +2833,16 @@ int sdhci_runtime_resume_host(struct sdhci_host *host)
sdhci_do_start_signal_voltage_switch(host, &host->mmc->ios);
if ((host_flags & SDHCI_PV_ENABLED) &&
!(host->quirks2 & SDHCI_QUIRK2_PRESET_VALUE_BROKEN)) {
@ -287,7 +291,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
host->runtime_suspended = false;
@@ -2845,7 +2853,7 @@ int sdhci_runtime_resume_host(struct sdh
@@ -2845,7 +2853,7 @@ int sdhci_runtime_resume_host(struct sdhci_host *host)
/* Enable Card Detection */
sdhci_enable_card_detection(host);
@ -296,7 +300,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
return ret;
}
@@ -3401,7 +3409,7 @@ void sdhci_remove_host(struct sdhci_host
@@ -3401,7 +3409,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead)
unsigned long flags;
if (dead) {
@ -305,7 +309,7 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
host->flags |= SDHCI_DEVICE_DEAD;
@@ -3413,7 +3421,7 @@ void sdhci_remove_host(struct sdhci_host
@@ -3413,7 +3421,7 @@ void sdhci_remove_host(struct sdhci_host *host, int dead)
tasklet_schedule(&host->finish_tasklet);
}
@ -314,3 +318,6 @@ sdhci: Use macros for out spin lock/unlock functions to reduce diffs with upstre
}
sdhci_disable_card_detection(host);
--
1.9.1

View file

@ -1,7 +1,7 @@
From 45f717497730b7e98f3bd934ba09757748d8418d Mon Sep 17 00:00:00 2001
From 2b7ffec03e2dda5b3f78a354668e9bf1945f5805 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 12 Nov 2013 23:01:30 +0000
Subject: [PATCH 100/174] sdhci: sdhci_bcm2708_quirk_voltage_broken appears to
Subject: [PATCH 100/196] sdhci: sdhci_bcm2708_quirk_voltage_broken appears to
be a no-op
---
@ -10,9 +10,11 @@ Subject: [PATCH 100/174] sdhci: sdhci_bcm2708_quirk_voltage_broken appears to
drivers/mmc/host/sdhci.h | 1 -
3 files changed, 13 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index 7fdd815..c775666 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -1114,11 +1114,6 @@ static unsigned int sdhci_bcm2708_quirk_
@@ -1114,11 +1114,6 @@ static unsigned int sdhci_bcm2708_quirk_spurious_crc_acmd51(struct sdhci_host *h
return 1;
}
@ -24,7 +26,7 @@ Subject: [PATCH 100/174] sdhci: sdhci_bcm2708_quirk_voltage_broken appears to
static unsigned int sdhci_bcm2708_uhs_broken(struct sdhci_host *host)
{
return 1;
@@ -1155,7 +1150,6 @@ static struct sdhci_ops sdhci_bcm2708_op
@@ -1155,7 +1150,6 @@ static struct sdhci_ops sdhci_bcm2708_ops = {
.pdma_reset = sdhci_bcm2708_platdma_reset,
#endif
.extra_ints = sdhci_bcm2708_quirk_extra_ints,
@ -32,9 +34,11 @@ Subject: [PATCH 100/174] sdhci: sdhci_bcm2708_quirk_voltage_broken appears to
.uhs_broken = sdhci_bcm2708_uhs_broken,
};
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 13e4e11..237158c 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -3245,12 +3245,6 @@ int sdhci_add_host(struct sdhci_host *ho
@@ -3245,12 +3245,6 @@ int sdhci_add_host(struct sdhci_host *host)
SDHCI_MAX_CURRENT_MULTIPLIER;
}
@ -47,6 +51,8 @@ Subject: [PATCH 100/174] sdhci: sdhci_bcm2708_quirk_voltage_broken appears to
mmc->ocr_avail = ocr_avail;
mmc->ocr_avail_sdio = ocr_avail;
if (host->ocr_avail_sdio)
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index cc393af..fc6fcf3 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -299,7 +299,6 @@ struct sdhci_ops {
@ -57,3 +63,6 @@ Subject: [PATCH 100/174] sdhci: sdhci_bcm2708_quirk_voltage_broken appears to
unsigned int (*uhs_broken)(struct sdhci_host *host);
unsigned int (*missing_status)(struct sdhci_host *host);
--
1.9.1

View file

@ -1,7 +1,7 @@
From 68f187f8fa966229b9820edec5dda455bdff52ea Mon Sep 17 00:00:00 2001
From 84a69f4eea629347522bcb4e7fe6a04ed687686e Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Wed, 13 Nov 2013 11:40:56 +0000
Subject: [PATCH 101/174] sdhci: sdhci_bcm2708_uhs_broken should be handled
Subject: [PATCH 101/196] sdhci: sdhci_bcm2708_uhs_broken should be handled
through caps reported
---
@ -10,9 +10,11 @@ Subject: [PATCH 101/174] sdhci: sdhci_bcm2708_uhs_broken should be handled
drivers/mmc/host/sdhci.h | 1 -
3 files changed, 1 insertion(+), 8 deletions(-)
diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
index c775666..2797ae6 100644
--- a/drivers/mmc/host/sdhci-bcm2708.c
+++ b/drivers/mmc/host/sdhci-bcm2708.c
@@ -1114,11 +1114,6 @@ static unsigned int sdhci_bcm2708_quirk_
@@ -1114,11 +1114,6 @@ static unsigned int sdhci_bcm2708_quirk_spurious_crc_acmd51(struct sdhci_host *h
return 1;
}
@ -24,7 +26,7 @@ Subject: [PATCH 101/174] sdhci: sdhci_bcm2708_uhs_broken should be handled
static unsigned int sdhci_bcm2708_missing_status(struct sdhci_host *host)
{
return 1;
@@ -1150,7 +1145,6 @@ static struct sdhci_ops sdhci_bcm2708_op
@@ -1150,7 +1145,6 @@ static struct sdhci_ops sdhci_bcm2708_ops = {
.pdma_reset = sdhci_bcm2708_platdma_reset,
#endif
.extra_ints = sdhci_bcm2708_quirk_extra_ints,
@ -32,9 +34,11 @@ Subject: [PATCH 101/174] sdhci: sdhci_bcm2708_uhs_broken should be handled
};
/*****************************************************************************\
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 237158c..9c93e00 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1581,7 +1581,7 @@ static void sdhci_do_set_ios(struct sdhc
@@ -1581,7 +1581,7 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
else
ctrl &= ~SDHCI_CTRL_HISPD;
@ -43,6 +47,8 @@ Subject: [PATCH 101/174] sdhci: sdhci_bcm2708_uhs_broken should be handled
u16 clk, ctrl_2;
/* In case of UHS-I modes, set High Speed Enable */
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index fc6fcf3..9c3970b 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -299,7 +299,6 @@ struct sdhci_ops {
@ -53,3 +59,6 @@ Subject: [PATCH 101/174] sdhci: sdhci_bcm2708_uhs_broken should be handled
unsigned int (*missing_status)(struct sdhci_host *host);
void (*hw_reset)(struct sdhci_host *host);
--
1.9.1

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