diff --git a/projects/RPi2/patches/linux/linux-000-3.18.6-revert.patch b/projects/RPi2/patches/linux/linux-000-3.18.6-revert.patch new file mode 100644 index 0000000000..8b216c93ca --- /dev/null +++ b/projects/RPi2/patches/linux/linux-000-3.18.6-revert.patch @@ -0,0 +1,29 @@ +diff -Naur linux-3.18.6/drivers/usb/core/otg_whitelist.h linux-3.18.6.patch/drivers/usb/core/otg_whitelist.h +--- linux-3.18.6/drivers/usb/core/otg_whitelist.h 2015-02-06 15:53:48.000000000 +0100 ++++ linux-3.18.6.patch/drivers/usb/core/otg_whitelist.h 2015-02-07 17:34:40.059601833 +0100 +@@ -55,11 +55,6 @@ + le16_to_cpu(dev->descriptor.idProduct) == 0xbadd)) + return 0; + +- /* OTG PET device is always targeted (see OTG 2.0 ECN 6.4.2) */ +- if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1a0a && +- le16_to_cpu(dev->descriptor.idProduct) == 0x0200)) +- return 1; +- + /* NOTE: can't use usb_match_id() since interface caches + * aren't set up yet. this is cut/paste from that code. + */ +diff -Naur linux-3.18.6/drivers/usb/core/quirks.c linux-3.18.6.patch/drivers/usb/core/quirks.c +--- linux-3.18.6/drivers/usb/core/quirks.c 2015-02-06 15:53:48.000000000 +0100 ++++ linux-3.18.6.patch/drivers/usb/core/quirks.c 2015-02-07 17:34:40.501602833 +0100 +@@ -179,10 +179,6 @@ + { USB_DEVICE(0x0b05, 0x17e0), .driver_info = + USB_QUIRK_IGNORE_REMOTE_WAKEUP }, + +- /* Protocol and OTG Electrical Test Device */ +- { USB_DEVICE(0x1a0a, 0x0200), .driver_info = +- USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL }, +- + { } /* terminating entry must be last */ + }; + diff --git a/projects/RPi2/patches/linux/linux-01-RPi_support.patch b/projects/RPi2/patches/linux/linux-01-RPi_support.patch index ddd2690079..1d3d8a440b 100644 --- a/projects/RPi2/patches/linux/linux-01-RPi_support.patch +++ b/projects/RPi2/patches/linux/linux-01-RPi_support.patch @@ -1,7 +1,7 @@ -From e577d95d6745f95c97e08b4fe3ee80262d32de5f Mon Sep 17 00:00:00 2001 +From 718c630d253ecc425ce28cebd3df3b35aa1ee3c8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 12 May 2013 12:24:19 +0100 -Subject: [PATCH 01/99] Main bcm2708 linux port +Subject: [PATCH 001/109] Main bcm2708 linux port Signed-off-by: popcornmix --- @@ -40,7 +40,7 @@ Signed-off-by: popcornmix arch/arm/mach-bcm2708/include/mach/vcio.h | 165 ++++++ arch/arm/mach-bcm2708/include/mach/vmalloc.h | 20 + arch/arm/mach-bcm2708/power.c | 197 +++++++ - arch/arm/mach-bcm2708/vc_mem.c | 432 +++++++++++++++ + arch/arm/mach-bcm2708/vc_mem.c | 431 +++++++++++++++ arch/arm/mach-bcm2708/vcio.c | 474 ++++++++++++++++ arch/arm/mm/Kconfig | 2 +- arch/arm/mm/proc-v6.S | 15 +- @@ -48,7 +48,7 @@ Signed-off-by: popcornmix drivers/tty/serial/amba-pl011.c | 2 +- include/linux/mmc/host.h | 1 + include/linux/mmc/sdhci.h | 1 + - 43 files changed, 4717 insertions(+), 5 deletions(-) + 43 files changed, 4716 insertions(+), 5 deletions(-) create mode 100644 arch/arm/configs/bcmrpi_defconfig create mode 100644 arch/arm/mach-bcm2708/Kconfig create mode 100644 arch/arm/mach-bcm2708/Makefile @@ -4116,10 +4116,10 @@ index 0000000..2696be9 +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..2adac12 +index 0000000..2982af7 --- /dev/null +++ b/arch/arm/mach-bcm2708/vc_mem.c -@@ -0,0 +1,432 @@ +@@ -0,0 +1,431 @@ +/***************************************************************************** +* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved. +* @@ -4551,7 +4551,6 @@ index 0000000..2adac12 +module_param(phys_addr, uint, 0644); +module_param(mem_size, uint, 0644); +module_param(mem_base, uint, 0644); -+ diff --git a/arch/arm/mach-bcm2708/vcio.c b/arch/arm/mach-bcm2708/vcio.c new file mode 100644 index 0000000..5e43e85 @@ -5122,10 +5121,10 @@ index dba793e..9300f87 100644 unsigned int version; /* SDHCI spec. version */ -From 5e6c5322f655f31f71bf1cf8b489b5d5e906831f Mon Sep 17 00:00:00 2001 +From 732b76077da4235ce744f07b7d5ae81534bd12c6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 8 Oct 2014 18:50:05 +0100 -Subject: [PATCH 02/99] Add bcm2708_gpio driver +Subject: [PATCH 002/109] Add bcm2708_gpio driver Signed-off-by: popcornmix @@ -5729,10 +5728,10 @@ index 0000000..fb69624 + +#endif -From 7684e59529556ab0ddeffdc2e65704b8c3ceefbd Mon Sep 17 00:00:00 2001 +From 2780b30c03ac8feb1e2240c29ef1f8a27caf1744 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 7 May 2013 22:20:24 +0100 -Subject: [PATCH 03/99] Add quick config. +Subject: [PATCH 003/109] Add quick config. This is designed for quick compiling when developing. No modules are needed and it includes all Pi specific drivers @@ -5945,10 +5944,10 @@ index 0000000..e5efe75 +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y -From 659de6a11893a77a79fa2bb713fe018832a6a3ee Mon Sep 17 00:00:00 2001 +From ed4dbfa6104c71164eff945093ff83c44fe31ceb Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:46:17 +0100 -Subject: [PATCH 04/99] Add dwc_otg driver +Subject: [PATCH 004/109] Add dwc_otg driver Signed-off-by: popcornmix @@ -63051,10 +63050,10 @@ index 0000000..cdc9963 +test_main(); +0; -From 7498fc1a7f7d82f8312a54f45e01fec1ace241ef Mon Sep 17 00:00:00 2001 +From 60d3eb6488418a775cacd85109fa285ff5aabe09 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:54:32 +0100 -Subject: [PATCH 05/99] bcm2708 watchdog driver +Subject: [PATCH 005/109] bcm2708 watchdog driver Signed-off-by: popcornmix --- @@ -63482,10 +63481,10 @@ index 0000000..8a27d68 +MODULE_ALIAS_MISCDEV(TEMP_MINOR); +MODULE_LICENSE("GPL"); -From 2d2dfc19aba5a0a9e7d666088f0b76ccedfa32ed Mon Sep 17 00:00:00 2001 +From 7b648059ffd124034ac2628bcab0b4b682e2049f Mon Sep 17 00:00:00 2001 From: Harm Hanemaaijer Date: Thu, 20 Jun 2013 20:21:39 +0200 -Subject: [PATCH 07/99] Speed up console framebuffer imageblit function +Subject: [PATCH 007/109] 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 @@ -63694,10 +63693,10 @@ index a2bb276..436494f 100644 start_index, pitch_index); } else -From 127d9819abd7bd303a39ed6662401d4264e31d52 Mon Sep 17 00:00:00 2001 +From ec9796cf0657b34cd4ef7d16df92a23e5f232e0a Mon Sep 17 00:00:00 2001 From: Siarhei Siamashka Date: Mon, 17 Jun 2013 13:32:11 +0300 -Subject: [PATCH 08/99] fbdev: add FBIOCOPYAREA ioctl +Subject: [PATCH 008/109] fbdev: add FBIOCOPYAREA ioctl Based on the patch authored by Ali Gholami Rudi at https://lkml.org/lkml/2009/7/13/153 @@ -63790,10 +63789,10 @@ index fb795c3..fa72af0 100644 #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ -From 98e91886cae6ab079cabc678cf8962093ec20724 Mon Sep 17 00:00:00 2001 +From 2011fa32f902650400ca278ed3fd88d236b2b769 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:55:09 +0100 -Subject: [PATCH 09/99] bcm2708 framebuffer driver +Subject: [PATCH 009/109] bcm2708 framebuffer driver Signed-off-by: popcornmix @@ -63923,7 +63922,7 @@ index 1979aff..57181ad 100644 obj-$(CONFIG_FB_CLPS711X) += clps711x-fb.o diff --git a/drivers/video/fbdev/bcm2708_fb.c b/drivers/video/fbdev/bcm2708_fb.c new file mode 100644 -index 0000000..a443666 +index 0000000..dcc4de2 --- /dev/null +++ b/drivers/video/fbdev/bcm2708_fb.c @@ -0,0 +1,818 @@ @@ -64306,7 +64305,7 @@ index 0000000..a443666 +{ + s32 result = -1; + u32 p[7]; -+ if ( (blank_mode == FB_BLANK_NORMAL) || ++ if ( (blank_mode == FB_BLANK_NORMAL) || + (blank_mode == FB_BLANK_UNBLANK)) { + + p[0] = 28; // size = sizeof u32 * length of p @@ -64316,9 +64315,9 @@ index 0000000..a443666 + p[4] = 4; // (size of the request data) + p[5] = blank_mode; + p[6] = VCMSG_PROPERTY_END; // end tag -+ ++ + bcm_mailbox_property(&p, p[0]); -+ ++ + if ( p[1] == VCMSG_REQUEST_SUCCESSFUL ) + result = 0; + else @@ -67236,10 +67235,10 @@ index 3c14e43..7626beb 100644 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 -From e67707119e9d991a710d7f2424f7b2968fc9c099 Mon Sep 17 00:00:00 2001 +From 38059eaf8bdfd36b33b338381e5aa14dcfd814d3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 2 Jul 2013 23:42:01 +0100 -Subject: [PATCH 10/99] bcm2708 vchiq driver +Subject: [PATCH 010/109] bcm2708 vchiq driver Signed-off-by: popcornmix @@ -80188,10 +80187,10 @@ index 0000000..b6bfa21 + return vchiq_build_time; +} -From bd3d331ca4dbd660cb6a15869a9cfa2e2a313a9b Mon Sep 17 00:00:00 2001 +From 2dcba919662022bbefe47589dfba4cbd30f4ab42 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 12 May 2014 15:12:02 +0100 -Subject: [PATCH 11/99] vchiq: Avoid high load when blocked and unkillable +Subject: [PATCH 011/109] vchiq: Avoid high load when blocked and unkillable vchiq: Include SIGSTOP and SIGCONT in list of signals not-masked by vchiq to allow gdb to work --- @@ -80353,22 +80352,22 @@ index c2eefef..05e7979 100644 static inline int is_pow2(int i) { -From 7269fbbe3c5efacdf2d6a7ec14acd7d4b69f944a Mon Sep 17 00:00:00 2001 +From b897cd7a1a06aa729fc7c78fdcd47df914139a95 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:31:47 +0100 -Subject: [PATCH 12/99] cma: Add vc_cma driver to enable use of CMA +Subject: [PATCH 012/109] cma: Add vc_cma driver to enable use of CMA Signed-off-by: popcornmix --- drivers/char/Kconfig | 2 + drivers/char/Makefile | 1 + - drivers/char/broadcom/Kconfig | 16 + + drivers/char/broadcom/Kconfig | 15 + drivers/char/broadcom/Makefile | 1 + drivers/char/broadcom/vc_cma/Makefile | 14 + drivers/char/broadcom/vc_cma/vc_cma.c | 1143 +++++++++++++++++++++++++++++++++ drivers/misc/Makefile | 2 +- include/linux/broadcom/vc_cma.h | 29 + - 8 files changed, 1207 insertions(+), 1 deletion(-) + 8 files changed, 1206 insertions(+), 1 deletion(-) create mode 100644 drivers/char/broadcom/Kconfig create mode 100644 drivers/char/broadcom/Makefile create mode 100644 drivers/char/broadcom/vc_cma/Makefile @@ -80399,10 +80398,10 @@ index d06cde26..a9f9daf 100644 +obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/ diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig new file mode 100644 -index 0000000..f089943 +index 0000000..2d8bd6e --- /dev/null +++ b/drivers/char/broadcom/Kconfig -@@ -0,0 +1,16 @@ +@@ -0,0 +1,15 @@ +# +# Broadcom char driver config +# @@ -80418,7 +80417,6 @@ index 0000000..f089943 + default n + help + Helper for videocore CMA access. -+ diff --git a/drivers/char/broadcom/Makefile b/drivers/char/broadcom/Makefile new file mode 100644 index 0000000..13c5bca @@ -81644,10 +81642,10 @@ index 0000000..5325832 + +#endif /* VC_CMA_H */ -From f5cca9230c7a1e0bb05eb8ff9c216375cca315d9 Mon Sep 17 00:00:00 2001 +From ce1ab9438f37ca5e202e0a5ec1195be3ea0d359f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 26 Mar 2012 22:15:50 +0100 -Subject: [PATCH 13/99] bcm2708: alsa sound driver +Subject: [PATCH 013/109] bcm2708: alsa sound driver Signed-off-by: popcornmix @@ -84410,10 +84408,10 @@ index 0000000..af3e6eb + +#endif // _VC_AUDIO_DEFS_H_ -From 7cabf5f63e7c5dd76d41a73c9847a64889e1a9f6 Mon Sep 17 00:00:00 2001 +From a262d8058c3619a91e185a873c5ac6b046ccc7c9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:51:55 +0100 -Subject: [PATCH 14/99] Add hwrng (hardware random number generator) driver +Subject: [PATCH 014/109] Add hwrng (hardware random number generator) driver --- drivers/char/hw_random/Kconfig | 11 ++++ @@ -84580,10 +84578,10 @@ index 0000000..340f004 +MODULE_DESCRIPTION("BCM2708 H/W Random Number Generator (RNG) driver"); +MODULE_LICENSE("GPL and additional rights"); -From 8a66a0bc2cb1ab3b81ff9842ded42bead94f125c Mon Sep 17 00:00:00 2001 +From f6421e1f7220873eb38f013d6cec1d2eac7b15b0 Mon Sep 17 00:00:00 2001 From: Aron Szabo Date: Sat, 16 Jun 2012 12:15:55 +0200 -Subject: [PATCH 15/99] lirc: added support for RaspberryPi GPIO +Subject: [PATCH 015/109] lirc: added support for RaspberryPi GPIO lirc_rpi: Use read_current_timer to determine transmitter delay. Thanks to jjmz and others See: https://github.com/raspberrypi/linux/issues/525 @@ -85315,10 +85313,10 @@ index 0000000..c688364 +module_param(debug, bool, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(debug, "Enable debugging messages"); -From 3e577f6ce5f46188b5db766b7cc65f55bbb4cca5 Mon Sep 17 00:00:00 2001 +From 877b7c2cdb93324c61f4f26d6b6827104687c920 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:49:20 +0100 -Subject: [PATCH 16/99] Add cpufreq driver +Subject: [PATCH 016/109] Add cpufreq driver --- arch/arm/Kconfig | 1 + @@ -85602,10 +85600,10 @@ index 0000000..447ca09 +module_init(bcm2835_cpufreq_module_init); +module_exit(bcm2835_cpufreq_module_exit); -From 82495ab0c5bf0947ef04e746b8e3b4d7d0429dce Mon Sep 17 00:00:00 2001 +From 3214c7b2717fa804c7a899c599a0b0bc367f7124 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 19:24:24 +0000 -Subject: [PATCH 17/99] Added hwmon/thermal driver for reporting core +Subject: [PATCH 017/109] Added hwmon/thermal driver for reporting core temperature. Thanks Dorian --- @@ -86127,10 +86125,10 @@ index 0000000..85fceb5 + +module_platform_driver(bcm2835_thermal_driver); -From 9d3faa76e32459506d4aa66ed0102804a69f3500 Mon Sep 17 00:00:00 2001 +From d0f290ce1ad432b5ff51e5abdff7ea1108b017d3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 17:26:38 +0000 -Subject: [PATCH 18/99] Allow mac address to be set in smsc95xx +Subject: [PATCH 018/109] Allow mac address to be set in smsc95xx Signed-off-by: popcornmix --- @@ -86221,10 +86219,10 @@ index d07bf4c..5ae60ab 100644 if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN, dev->net->dev_addr) == 0) { -From 8aaf6d1f7b1d8fa959a8a1e7f2125273a39b6eb6 Mon Sep 17 00:00:00 2001 +From 0e5334a9c2991f85a7e15445ac77d43d83a1a761 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 4 Nov 2013 18:56:10 +0000 -Subject: [PATCH 19/99] Add Chris Boot's i2c and spi drivers. +Subject: [PATCH 019/109] Add Chris Boot's i2c and spi drivers. i2c-bcm2708: fixed baudrate @@ -87571,10 +87569,10 @@ index 0000000..b04a57d +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -From a1d2e8271b96115d523beca0b0f3c44c9f060d63 Mon Sep 17 00:00:00 2001 +From 83381c26eeb87fc7c6efeb1f9a132e014b3f7f2b Mon Sep 17 00:00:00 2001 From: cbeytas Date: Mon, 24 Jun 2013 00:05:40 -0400 -Subject: [PATCH 20/99] Perform I2C combined transactions when possible +Subject: [PATCH 020/109] Perform I2C combined transactions when possible Perform I2C combined transactions whenever possible, within the restrictions of the Broadcomm Serial Controller. @@ -87646,10 +87644,10 @@ index 09203c0..7d385a3 100644 } -From 10362ecf6a49cba01deba2a9734b4a6c3dee1585 Mon Sep 17 00:00:00 2001 +From f131a7ec3ad8ccd6a1a2c0dd7a9145161e5b6812 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 8 May 2013 11:46:50 +0100 -Subject: [PATCH 21/99] enabling the realtime clock 1-wire chip DS1307 and +Subject: [PATCH 021/109] enabling the realtime clock 1-wire chip DS1307 and 1-wire on GPIO4 (as a module) 1-wire: Add support for configuring pin for w1-gpio kernel module @@ -87921,11 +87919,10 @@ index 2820924..fd0550f 100644 } } - -From 36f0b451baaf74e4825cd1f75cbf77748e2710e2 Mon Sep 17 00:00:00 2001 +From cdd53fe98ac52d35c9b92d9f7b1b498db00be115 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 12 Apr 2013 23:58:47 +0100 -Subject: [PATCH 23/99] config: add missing options from 3.6.y kernel +Subject: [PATCH 023/109] config: add missing options from 3.6.y kernel --- arch/arm/configs/bcmrpi_defconfig | 658 ++++++++++++++++++++++++++++++++++++-- @@ -88859,11 +88856,11 @@ index 6d2eae1..e2da9da 100644 # CONFIG_CRYPTO_HW is not set CONFIG_CRC_ITU_T=y -From 395d829a0d123d498dc29cb4d77c29917f2a36a9 Mon Sep 17 00:00:00 2001 +From d9c5e873df158599096f4c1f2ee5a7f22287483c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 18 Dec 2013 22:16:19 +0000 -Subject: [PATCH 24/99] config: Enable CONFIG_MEMCG, but leave it disabled (due - to memory cost). Enable with cgroup_enable=memory. +Subject: [PATCH 024/109] config: Enable CONFIG_MEMCG, but leave it disabled + (due to memory cost). Enable with cgroup_enable=memory. --- arch/arm/configs/bcmrpi_defconfig | 1 + @@ -88930,10 +88927,10 @@ index d6ac0e3..49f53b1 100644 #ifdef CONFIG_MEMCG_SWAP -From b1387847441d5ceadcb2c52c6b3ccc50b4afa68d Mon Sep 17 00:00:00 2001 +From b69128cc6d9915bcb430dd63b367f1179c18203d Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:46:42 +0100 -Subject: [PATCH 25/99] Add FIQ patch to dwc_otg driver. Enable with +Subject: [PATCH 025/109] 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 @@ -92226,10 +92223,10 @@ index 1b1f83c..c8590b5 100644 if (status.b.sr) { -From 8452eee79255eaee4a66eeb08e802a2c0f7ce88b Mon Sep 17 00:00:00 2001 +From 7db81325d20932a2e7f2b84e0b3c46fe09b5a74f Mon Sep 17 00:00:00 2001 From: P33M Date: Wed, 19 Mar 2014 12:58:23 +0000 -Subject: [PATCH 26/99] dwc_otg: fiq_fsm: Base commit for driver rewrite +Subject: [PATCH 026/109] dwc_otg: fiq_fsm: Base commit for driver rewrite This commit removes the previous FIQ fixes entirely and adds fiq_fsm. @@ -92333,7 +92330,7 @@ fiq_fsm: Enable by default drivers/usb/host/dwc_otg/dwc_otg_driver.c | 51 +- drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c | 1290 ++++++++++++++++++++++++++ drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h | 353 +++++++ - drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S | 81 ++ + drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S | 80 ++ drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 775 +++++++++++++--- drivers/usb/host/dwc_otg/dwc_otg_hcd.h | 11 + drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 999 ++++++++++---------- @@ -92342,7 +92339,7 @@ fiq_fsm: Enable by default drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.c | 113 --- drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h | 48 - drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c | 8 +- - 15 files changed, 2992 insertions(+), 965 deletions(-) + 15 files changed, 2991 insertions(+), 965 deletions(-) create mode 100644 drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c create mode 100644 drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h create mode 100644 drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S @@ -92643,7 +92640,7 @@ index f06c3d22..dc7cd32 100644 * diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c new file mode 100644 -index 0000000..7aad7f7 +index 0000000..1be6e71 --- /dev/null +++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c @@ -0,0 +1,1290 @@ @@ -92730,17 +92727,17 @@ index 0000000..7aad7f7 +static void fiq_fsm_restart_channel(struct fiq_state *st, int n, int force) +{ + hcchar_data_t hcchar = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR) }; -+ ++ + hcchar.b.chen = 0; + if (st->channel[n].hcchar_copy.b.eptype & 0x1) { + hfnum_data_t hfnum = { .d32 = FIQ_READ(st->dwc_regs_base + HFNUM) }; + /* Hardware bug workaround: update the ssplit index */ + if (st->channel[n].hcsplt_copy.b.spltena) + st->channel[n].expected_uframe = (hfnum.b.frnum + 1) & 0x3FFF; -+ ++ + hcchar.b.oddfrm = (hfnum.b.frnum & 0x1) ? 0 : 1; + } -+ ++ + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR, hcchar.d32); + hcchar.d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR); + hcchar.b.chen = 1; @@ -92761,7 +92758,7 @@ index 0000000..7aad7f7 +{ + hcsplt_data_t hcsplt = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCSPLT) }; + hctsiz_data_t hctsiz = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ) }; -+ ++ + hcsplt.b.compsplt = 1; + if (st->channel[n].hcchar_copy.b.epdir == 1) { + // If IN, the CSPLIT result contains the data or a hub handshake. hctsiz = maxpacket. @@ -92779,7 +92776,7 @@ index 0000000..7aad7f7 +{ + /* The xfersize register is a bit wonky. For IN transfers, it decrements by the packet size. */ + hctsiz_data_t hctsiz = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ) }; -+ ++ + if (st->channel[n].hcchar_copy.b.epdir == 0) { + return st->channel[n].hctsiz_copy.b.xfersize; + } else { @@ -92842,7 +92839,7 @@ index 0000000..7aad7f7 + struct fiq_dma_blob *blob = (struct fiq_dma_blob *) st->dma_base; + int last = 0; + int i = st->channel[n].dma_info.index; -+ ++ + fiq_print(FIQDBG_INT, st, "ADV %01d %01d ", n, i); + i++; + if (i == 4) @@ -92863,7 +92860,7 @@ index 0000000..7aad7f7 + hctsiz.b.pktcnt = 1; + hctsiz.b.xfersize = st->channel[n].dma_info.slot_len[i]; + fiq_print(FIQDBG_INT, st, "%08x", hctsiz.d32); -+ ++ + st->channel[n].dma_info.index++; + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCSPLT, hcsplt.d32); + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ, hctsiz.d32); @@ -92873,7 +92870,7 @@ index 0000000..7aad7f7 + +/** + * fiq_fsm_tt_next_isoc() - queue next pending isochronous out start-split on a TT -+ * ++ * + * Despite the limitations of the DWC core, we can force a microframe pipeline of + * isochronous OUT start-split transactions while waiting for a corresponding other-type + * of endpoint to finish its CSPLITs. TTs have big periodic buffers therefore it @@ -93010,20 +93007,20 @@ index 0000000..7aad7f7 + *probably_last = 1; + } + -+ if (total_len >= st->hctsiz_copy.b.xfersize || ++ if (total_len >= st->hctsiz_copy.b.xfersize || + i == 6 || total_len == 0) + /* Note: due to bit stuffing it is possible to have > 6 CSPLITs for + * a single endpoint. Accepting more would completely break our scheduling mechanism though + * - in these extreme cases we will pass through a truncated packet. + */ -+ more_needed = 0; -+ ++ more_needed = 0; ++ + return more_needed; +} + +/** + * fiq_fsm_too_late() - Test transaction for lateness -+ * ++ * + * If a SSPLIT for a large IN transaction is issued too late in a frame, + * the hub will disable the port to the device and respond with ERR handshakes. + * The hub status endpoint will not reflect this change. @@ -93074,7 +93071,7 @@ index 0000000..7aad7f7 + for (n = 0; n < num_channels; n++) { + if (st->channel[n].fsm == FIQ_PER_ISO_OUT_PENDING) { + if (!fiq_fsm_tt_in_use(st, num_channels, n)) { -+ fiq_print(FIQDBG_INT, st, "NEXTISO "); ++ fiq_print(FIQDBG_INT, st, "NEXTISO "); + st->channel[n].fsm = FIQ_PER_ISO_OUT_ACTIVE; + fiq_fsm_restart_channel(st, n, 0); + break; @@ -93195,7 +93192,7 @@ index 0000000..7aad7f7 + case FIQ_PER_CSPLIT_NYET1: + case FIQ_PER_CSPLIT_POLL: + case FIQ_PER_CSPLIT_LAST: -+ /* Check if we are no longer in the same full-speed frame. */ ++ /* Check if we are no longer in the same full-speed frame. */ + if (((state->channel[n].expected_uframe & 0x3FFF) & ~0x7) < + (hfnum.b.frnum & ~0x7)) + state->channel[n].fsm = FIQ_PER_SPLIT_TIMEOUT; @@ -93208,18 +93205,18 @@ index 0000000..7aad7f7 + + for (n = 0; n < num_channels; n++) { + switch (state->channel[n].fsm) { -+ ++ + case FIQ_NP_SSPLIT_RETRY: + case FIQ_NP_IN_CSPLIT_RETRY: + case FIQ_NP_OUT_CSPLIT_RETRY: + fiq_fsm_restart_channel(state, n, 0); + break; -+ ++ + case FIQ_HS_ISOC_SLEEPING: + state->channel[n].fsm = FIQ_HS_ISOC_TURBO; + fiq_fsm_restart_channel(state, n, 0); + break; -+ ++ + case FIQ_PER_SSPLIT_QUEUED: + if ((hfnum.b.frnum & 0x7) == 5) + break; @@ -93237,7 +93234,7 @@ index 0000000..7aad7f7 + } + } + break; -+ ++ + case FIQ_PER_ISO_OUT_PENDING: + /* Ordinarily, this should be poked after the SSPLIT + * complete interrupt for a competing transfer on the same @@ -93269,10 +93266,10 @@ index 0000000..7aad7f7 + state->channel[n].fsm = FIQ_PER_CSPLIT_POLL; + fiq_fsm_restart_channel(state, n, 0); + fiq_fsm_start_next_periodic(state, num_channels); -+ ++ + } + break; -+ ++ + case FIQ_PER_SPLIT_TIMEOUT: + case FIQ_DEQUEUE_ISSUED: + /* Ugly: we have to force a HCD interrupt. @@ -93284,7 +93281,7 @@ index 0000000..7aad7f7 + FIQ_WRITE(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCINTMSK, 0); + kick_irq |= 1; + break; -+ ++ + default: + break; + } @@ -93303,7 +93300,7 @@ index 0000000..7aad7f7 + * @state: Pointer to the FIQ state struct + * @num_channels: Number of channels as per hardware config + * @n: channel for which HAINT(i) was raised -+ * ++ * + * An important property is that only the CHHLT interrupt is unmasked. Unfortunately, AHBerr is as well. + */ +static int notrace noinline fiq_fsm_do_hcintr(struct fiq_state *state, int num_channels, int n) @@ -93329,7 +93326,7 @@ index 0000000..7aad7f7 + } + + switch (st->fsm) { -+ ++ + case FIQ_PASSTHROUGH: + case FIQ_DEQUEUE_ISSUED: + /* doesn't belong to us, kick it upstairs */ @@ -93365,7 +93362,7 @@ index 0000000..7aad7f7 + /* Got a HCINT for a NP SSPLIT. Expected ACK / NAK / fail */ + if (hcint.b.ack) { + /* SSPLIT complete. For OUT, the data has been sent. For IN, the LS transaction -+ * will start shortly. SOF needs to kick the transaction to prevent a NYET flood. ++ * will start shortly. SOF needs to kick the transaction to prevent a NYET flood. + */ + if(st->hcchar_copy.b.epdir == 1) + st->fsm = FIQ_NP_IN_CSPLIT_RETRY; @@ -93394,10 +93391,10 @@ index 0000000..7aad7f7 + restart = 0; + } + break; -+ ++ + case FIQ_NP_IN_CSPLIT_RETRY: + /* Received a CSPLIT done interrupt. -+ * Expected Data/NAK/STALL/NYET for IN. ++ * Expected Data/NAK/STALL/NYET for IN. + */ + if (hcint.b.xfercomp) { + /* For IN, data is present. */ @@ -93428,7 +93425,7 @@ index 0000000..7aad7f7 + } else { + /* Hardware bug. It's possible in some cases to + * get a channel halt with nothing else set when -+ * the response was a NYET. Treat as local 3-strikes retry. ++ * the response was a NYET. Treat as local 3-strikes retry. + */ + hcint_data_t hcint_test = hcint; + hcint_test.b.chhltd = 0; @@ -93445,7 +93442,7 @@ index 0000000..7aad7f7 + } + } + break; -+ ++ + case FIQ_NP_OUT_CSPLIT_RETRY: + /* Received a CSPLIT done interrupt. + * Expected ACK/NAK/STALL/NYET/XFERCOMP for OUT.*/ @@ -93460,7 +93457,7 @@ index 0000000..7aad7f7 + handled = 1; + st->nr_errors = 0; + //restart = 1; -+ } else if (hcint.b.xacterr) { ++ } else if (hcint.b.xacterr) { + /* HS error. retry immediate */ + st->fsm = FIQ_NP_OUT_CSPLIT_RETRY; + st->nr_errors++; @@ -93470,11 +93467,11 @@ index 0000000..7aad7f7 + handled = 1; + restart = 1; + } -+ } else if (hcint.b.stall) { ++ } else if (hcint.b.stall) { + /* LS bus error or genuine stall */ + st->fsm = FIQ_NP_SPLIT_LS_ABORTED; + } else { -+ /* ++ /* + * Hardware bug. It's possible in some cases to get a + * channel halt with nothing else set when the response was a NYET. + * Treat as local 3-strikes retry. @@ -93494,7 +93491,7 @@ index 0000000..7aad7f7 + } + } + break; -+ ++ + /* Periodic split states (except isoc out) */ + case FIQ_PER_SSPLIT_STARTED: + /* Expect an ACK or failure for SSPLIT */ @@ -93529,7 +93526,7 @@ index 0000000..7aad7f7 + } + /* Danger will robinson: we are in a broken state. If our first interrupt after + * this is a NYET, it will be delayed by 1 uframe and result in an unrecoverable -+ * lag. Unmask the NYET interrupt. ++ * lag. Unmask the NYET interrupt. + */ + st->expected_uframe = (hfnum.b.frnum + 1) & 0x3FFF; + st->fsm = FIQ_PER_CSPLIT_BROKEN_NYET1; @@ -93549,7 +93546,7 @@ index 0000000..7aad7f7 + fiq_print(FIQDBG_INT, state, "NEXTISO "); + } + break; -+ ++ + case FIQ_PER_CSPLIT_NYET1: + /* First CSPLIT attempt was a NYET. If we get a subsequent NYET, + * we are too late and the TT has dropped its CSPLIT fifo. @@ -93580,13 +93577,13 @@ index 0000000..7aad7f7 + st->fsm = FIQ_PER_SPLIT_HS_ABORTED; + } + break; -+ ++ + case FIQ_PER_CSPLIT_BROKEN_NYET1: -+ /* ++ /* + * we got here because our host channel is in the delayed-interrupt + * state and we cannot take a NYET interrupt any later than when it + * occurred. Disable then re-enable the channel if this happens to force -+ * CSPLITs to occur at the right time. ++ * CSPLITs to occur at the right time. + */ + hfnum.d32 = FIQ_READ(state->dwc_regs_base + HFNUM); + hcchar.d32 = FIQ_READ(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR); @@ -93618,7 +93615,7 @@ index 0000000..7aad7f7 + st->fsm = FIQ_PER_SPLIT_HS_ABORTED; + } + break; -+ ++ + case FIQ_PER_CSPLIT_POLL: + hfnum.d32 = FIQ_READ(state->dwc_regs_base + HFNUM); + hcchar.d32 = FIQ_READ(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR); @@ -93661,7 +93658,7 @@ index 0000000..7aad7f7 + st->fsm = FIQ_PER_SPLIT_HS_ABORTED; + } + break; -+ ++ + case FIQ_HS_ISOC_TURBO: + if (fiq_fsm_update_hs_isoc(state, n, hcint)) { + /* more transactions to come */ @@ -93711,7 +93708,7 @@ index 0000000..7aad7f7 + restart = 1; + } + break; -+ ++ + case FIQ_PER_ISO_OUT_LAST: + if (hcint.b.ack) { + /* All done here */ @@ -93803,7 +93800,7 @@ index 0000000..7aad7f7 + */ + if (state->gintmsk_saved.b.sofintr == 1) + kick_irq |= 1; -+ state->gintmsk_saved.b.sofintr = 0; ++ state->gintmsk_saved.b.sofintr = 0; + } + gintsts_handled.b.sofintr = 1; + } @@ -93828,7 +93825,7 @@ index 0000000..7aad7f7 + } + } + } -+ ++ + if (haint_handled.b2.chint) { + FIQ_WRITE(state->dwc_regs_base + HAINT, haint_handled.d32); + } @@ -93939,7 +93936,7 @@ index 0000000..7aad7f7 +} diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h new file mode 100644 -index 0000000..7572958 +index 0000000..5c7707f --- /dev/null +++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h @@ -0,0 +1,353 @@ @@ -94012,14 +94009,14 @@ index 0000000..7572958 +do { \ + writel(1< 1, SOF wakes up the isochronous FSM */ @@ -94231,14 +94228,14 @@ index 0000000..7572958 + unsigned int port_addr; + /* Hardware bug workaround: sometimes channel halt interrupts are + * delayed until the next SOF. Keep track of when we expected to get interrupted. */ -+ unsigned int expected_uframe; ++ unsigned int expected_uframe; + /* in/out for communicating number of dma buffers used, or number of ISOC to do */ + unsigned int nrpackets; + struct fiq_dma_info dma_info; + struct fiq_hs_isoc_info hs_isoc_info; + /* Copies of HC registers - in/out communication from/to IRQ handler + * and for ease of channel setup. A bit of mungeing is performed - for -+ * example the hctsiz.b.maxp is _always_ the max packet size of the endpoint. ++ * example the hctsiz.b.maxp is _always_ the max packet size of the endpoint. + */ + hcchar_data_t hcchar_copy; + hcsplt_data_t hcsplt_copy; @@ -94298,10 +94295,10 @@ index 0000000..7572958 +#endif /* DWC_OTG_FIQ_FSM_H_ */ diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S b/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S new file mode 100644 -index 0000000..8cfe364 +index 0000000..ffa8d21 --- /dev/null +++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S -@@ -0,0 +1,81 @@ +@@ -0,0 +1,80 @@ +/* + * dwc_otg_fiq_fsm.S - assembly stub for the FSM FIQ + * @@ -94382,9 +94379,8 @@ index 0000000..8cfe364 + subs pc, lr, #4; +_dwc_otg_fiq_stub_end: +END(_dwc_otg_fiq_stub) -+ diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c -index 986d361..ebc3553 100644 +index 986d361..130096b 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c @@ -45,9 +45,10 @@ @@ -94769,7 +94765,7 @@ index 986d361..ebc3553 100644 + /* Point the HC at the DMA address of the bounce buffers */ + blob = (struct fiq_dma_blob *) hcd->fiq_state->dma_base; + st->hcdma_copy.d32 = (uint32_t) &blob->channel[hc->hc_num].index[0].buf[0]; -+ ++ + /* fixup xfersize to the actual packet size */ + st->hctsiz_copy.b.pid = 0; + st->hctsiz_copy.b.xfersize = st->dma_info.slot_len[0]; @@ -95361,7 +95357,7 @@ index 986d361..ebc3553 100644 hcd->non_periodic_qh_ptr = hcd->non_periodic_qh_ptr->next; if (hcd->non_periodic_qh_ptr == &hcd->non_periodic_sched_active) { diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h -index 0007fa1..da2986244 100644 +index 0007fa1..43dbed9 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h @@ -40,6 +40,8 @@ @@ -95379,10 +95375,10 @@ index 0007fa1..da2986244 100644 + struct fiq_stack *fiq_stack; + struct fiq_state *fiq_state; -+ ++ + /** Virtual address for split transaction DMA bounce buffers */ + struct fiq_dma_blob *fiq_dmab; -+ ++ #ifdef DEBUG uint32_t frrem_samples; uint64_t frrem_accum; @@ -95397,7 +95393,7 @@ index 0007fa1..da2986244 100644 /** @} */ diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c -index 64d33a5..d3e2035 100644 +index 64d33a5..4195ff2 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c @@ -34,7 +34,6 @@ @@ -95894,7 +95890,7 @@ index 64d33a5..d3e2035 100644 + gintsts.b.sofintr = 1; + } + gintsts.d32 &= gintmsk.d32; -+ ++ + if (fiq_enable) + local_fiq_enable(); + @@ -96621,7 +96617,7 @@ index 64d33a5..d3e2035 100644 if (hcint.b.ahberr) { retval |= handle_hc_ahberr_intr(dwc_otg_hcd, hc, hc_regs, qtd); diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c -index ee8eec9..07b1808 100644 +index ee8eec9..98e1dc5 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c @@ -58,6 +58,7 @@ @@ -96791,7 +96787,7 @@ index ee8eec9..07b1808 100644 + retval = usb_add_hcd(hcd, platform_get_irq(_dev, fiq_enable ? 0 : 1), IRQF_SHARED | IRQF_DISABLED); #else - retval = usb_add_hcd(hcd, _dev->irq, IRQF_SHARED | IRQF_DISABLED); -+ retval = usb_add_hcd(hcd, _dev->irq, IRQF_SHARED | IRQF_DISABLED); ++ retval = usb_add_hcd(hcd, _dev->irq, IRQF_SHARED | IRQF_DISABLED); #endif if (retval < 0) { goto error2; @@ -97125,10 +97121,10 @@ index 5d310df..4b32941 100644 return -EBUSY; } -From df66dca4c3e8c05a3d8a4b8ff14f033efa3ec5ed Mon Sep 17 00:00:00 2001 +From a4b26820f7b0e344f980f39da3a097ec363f7912 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 30 Jan 2013 12:45:18 +0000 -Subject: [PATCH 27/99] bcm2835: add v4l2 camera device +Subject: [PATCH 027/109] bcm2835: add v4l2 camera device - Supports raw YUV capture, preview, JPEG and H264. - Uses videobuf2 for data transfer, using dma_buf. @@ -97147,7 +97143,7 @@ Signed-off-by: Luke Diamand drivers/media/platform/bcm2835/bcm2835-camera.c | 1476 +++++++++++++++++ drivers/media/platform/bcm2835/bcm2835-camera.h | 113 ++ drivers/media/platform/bcm2835/controls.c | 725 ++++++++ - drivers/media/platform/bcm2835/mmal-common.h | 52 + + drivers/media/platform/bcm2835/mmal-common.h | 51 + drivers/media/platform/bcm2835/mmal-encodings.h | 93 ++ drivers/media/platform/bcm2835/mmal-msg-common.h | 50 + drivers/media/platform/bcm2835/mmal-msg-format.h | 81 + @@ -97156,7 +97152,7 @@ Signed-off-by: Luke Diamand drivers/media/platform/bcm2835/mmal-parameters.h | 539 ++++++ drivers/media/platform/bcm2835/mmal-vchiq.c | 1916 ++++++++++++++++++++++ drivers/media/platform/bcm2835/mmal-vchiq.h | 178 ++ - 17 files changed, 5827 insertions(+) + 17 files changed, 5826 insertions(+) create mode 100644 Documentation/video4linux/bcm2835-v4l2.txt create mode 100644 drivers/media/platform/bcm2835/Kconfig create mode 100644 drivers/media/platform/bcm2835/Makefile @@ -99638,10 +99634,10 @@ index 0000000..d1408e5 +} diff --git a/drivers/media/platform/bcm2835/mmal-common.h b/drivers/media/platform/bcm2835/mmal-common.h new file mode 100644 -index 0000000..602b4a7 +index 0000000..84abbb3 --- /dev/null +++ b/drivers/media/platform/bcm2835/mmal-common.h -@@ -0,0 +1,52 @@ +@@ -0,0 +1,51 @@ +/* + * Broadcom BM2835 V4L2 driver + * @@ -99693,7 +99689,6 @@ index 0000000..602b4a7 + u32 u; + u32 v; +}; -+ diff --git a/drivers/media/platform/bcm2835/mmal-encodings.h b/drivers/media/platform/bcm2835/mmal-encodings.h new file mode 100644 index 0000000..856e80e @@ -103111,10 +103106,10 @@ index 0000000..9d1d11e + +#endif /* MMAL_VCHIQ_H */ -From 1cd73279aa3160633aeef5c5af1264f766405aa5 Mon Sep 17 00:00:00 2001 +From 5fd6894c3ecb0e9015cccad36a3a32150ecdfde5 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 9 Dec 2013 10:58:01 +0000 -Subject: [PATCH 28/99] V4L2: Fixes from 6by9 +Subject: [PATCH 028/109] V4L2: Fixes from 6by9 V4L2: Fix EV values. Add manual shutter speed control @@ -105269,7 +105264,7 @@ index d1408e5..3017b94 100644 case MMAL_CONTROL_TYPE_INT_MENU: dev->ctrls[c] = v4l2_ctrl_new_int_menu(hdl, diff --git a/drivers/media/platform/bcm2835/mmal-common.h b/drivers/media/platform/bcm2835/mmal-common.h -index 602b4a7..076f9a8 100644 +index 84abbb3..35698c8 100644 --- a/drivers/media/platform/bcm2835/mmal-common.h +++ b/drivers/media/platform/bcm2835/mmal-common.h @@ -26,6 +26,7 @@ @@ -105526,10 +105521,10 @@ index a06fb44..76f249e 100644 release_msg: -From 65a3c30c15f32600565f0a393a3bbc3abd02802c Mon Sep 17 00:00:00 2001 +From 07d4a9c3de42521044c9e2a312f7883a32bfca88 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:22:53 +0100 -Subject: [PATCH 29/99] dmaengine: Add support for BCM2708 +Subject: [PATCH 029/109] dmaengine: Add support for BCM2708 Add support for DMA controller of BCM2708 as used in the Raspberry Pi. Currently it only supports cyclic DMA. @@ -106668,10 +106663,10 @@ index 0000000..10463db +MODULE_AUTHOR("Gellert Weisz "); +MODULE_LICENSE("GPL v2"); -From 64e847b353ab4b0003b9cfaef3d71a6e1d933e29 Mon Sep 17 00:00:00 2001 +From c01f4ab379cd69bcf21f6e365931a0c6c46ec8cb Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:33:38 +0100 -Subject: [PATCH 30/99] ASoC: Add support for BCM2708 +Subject: [PATCH 030/109] ASoC: Add support for BCM2708 This driver adds support for digital audio (I2S) for the BCM2708 SoC that is used by the @@ -106759,7 +106754,7 @@ index bc816b7..f8bbe1f 100644 +obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd-soc-bcm2708-i2s.o diff --git a/sound/soc/bcm/bcm2708-i2s.c b/sound/soc/bcm/bcm2708-i2s.c new file mode 100644 -index 0000000..3fcb740 +index 0000000..0b5322a --- /dev/null +++ b/sound/soc/bcm/bcm2708-i2s.c @@ -0,0 +1,998 @@ @@ -107116,7 +107111,7 @@ index 0000000..3fcb740 + + /* SPI is on different GPIOs on different boards */ + /* for Raspberry Pi B+, this is pin GPIO18-21, for original on 28-31 */ -+ if (bcm2708_i2s_gpio==BCM2708_I2S_GPIO_AUTO) { ++ if (bcm2708_i2s_gpio==BCM2708_I2S_GPIO_AUTO) { + if ((system_rev & 0xffffff) >= 0x10) { + /* Model B+ */ + pinconfig=BCM2708_I2S_GPIO_PIN18; @@ -107137,7 +107132,7 @@ index 0000000..3fcb740 + } else { + printk(KERN_INFO "Can't configure I2S GPIOs, unknown pin mode for I2S: %i\n",pinconfig); + return; -+ } ++ } + + /* configure I2S pins to correct ALT mode */ + for (pin = startpin; pin <= startpin+3; pin++) { @@ -107763,12 +107758,12 @@ index 0000000..3fcb740 +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/bcm/bcm2708-i2s.h b/sound/soc/bcm/bcm2708-i2s.h new file mode 100644 -index 0000000..94fed6a +index 0000000..6fdcbc1 --- /dev/null +++ b/sound/soc/bcm/bcm2708-i2s.h @@ -0,0 +1,35 @@ +/* -+ * I2S configuration for sound cards. ++ * I2S configuration for sound cards. + * + * Copyright (c) 2014 Daniel Matuschek + * @@ -107803,10 +107798,10 @@ index 0000000..94fed6a + +#endif -From a5525c890534b49f269ea952d62af2f904566b5f Mon Sep 17 00:00:00 2001 +From d7f459bb8f19edeefba16cb4aed8edc02ec07f06 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:59:51 +0100 -Subject: [PATCH 31/99] ASoC: Add support for PCM5102A codec +Subject: [PATCH 031/109] ASoC: Add support for PCM5102A codec Some definitions to support the PCM5102A codec by Texas Instruments. @@ -107931,10 +107926,10 @@ index 0000000..126f1e9 +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); -From 075ed2be75eb93a84bf3b7f1493af54c3bcd1268 Mon Sep 17 00:00:00 2001 +From 0b5206c5b336cd33b61286746db70473020b6f56 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:04:54 +0100 -Subject: [PATCH 32/99] BCM2708: Add I2S support to board file +Subject: [PATCH 032/109] BCM2708: Add I2S support to board file Adds the required initializations for I2S to the board file of mach-bcm2708. @@ -107989,10 +107984,10 @@ index a740344..dca28ad 100644 struct amba_device *d = amba_devs[i]; amba_device_register(d, &iomem_resource); -From 58b0989ddfac93b7cf3f95dbe1e84024788037d1 Mon Sep 17 00:00:00 2001 +From 3570950fd70f0a7b1fd3a79081ca09a7ea95ef7c Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:19:08 +0100 -Subject: [PATCH 33/99] ASoC: Add support for HifiBerry DAC +Subject: [PATCH 033/109] ASoC: Add support for HifiBerry DAC This adds a machine driver for the HifiBerry DAC. It is a sound card that can @@ -108141,10 +108136,10 @@ index 0000000..4b70b45 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC"); +MODULE_LICENSE("GPL v2"); -From a380952b23e922bef1992470bd564a1364acd42a Mon Sep 17 00:00:00 2001 +From 62e045cb65caae625290bea4cfa55179b98aac68 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:21:34 +0100 -Subject: [PATCH 34/99] BCM2708: Add HifiBerry DAC to board file +Subject: [PATCH 034/109] BCM2708: Add HifiBerry DAC to board file This adds the initalization of the HifiBerry DAC to the mach-bcm2708 board file. @@ -108192,10 +108187,10 @@ index dca28ad..50d4991 100644 struct amba_device *d = amba_devs[i]; amba_device_register(d, &iomem_resource); -From 79c7fb299789bece3b2580fa85044a772dd119c7 Mon Sep 17 00:00:00 2001 +From 0f03e0b76c6da7916e598bd595e8c51cfa6c2f96 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Mon, 2 Dec 2013 20:28:22 +0100 -Subject: [PATCH 35/99] BCM2708: Add I2S and DMA support to default config +Subject: [PATCH 035/109] BCM2708: Add I2S and DMA support to default config This commit adds several modules that are needed for I2S support for the Raspberry Pi to the defconfig. @@ -108230,10 +108225,10 @@ index 3f99687..dfd98df 100644 CONFIG_UIO_PDRV_GENIRQ=m CONFIG_STAGING=y -From abd258ab12a14a52e57c8929f23dcfbc49513862 Mon Sep 17 00:00:00 2001 +From cc54e35d35508a3e8b2936a2177998e1baa899f2 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 6 Dec 2013 20:50:28 +0100 -Subject: [PATCH 36/99] ASoC: BCM2708: Add support for RPi-DAC +Subject: [PATCH 036/109] ASoC: BCM2708: Add support for RPi-DAC This adds a machine driver for the RPi-DAC. @@ -108541,13 +108536,13 @@ index 0000000..b4eaa44 +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); -From 505d683898b1c908185dc776d6717b53dba41348 Mon Sep 17 00:00:00 2001 +From 3dc96e2beb119577b609af56b89dc70c64511167 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:41:23 +0100 -Subject: [PATCH 37/99] ASoC: wm8804: Implement MCLK configuration options, add - 32bit support WM8804 can run with PLL frequencies of 256xfs and 128xfs for - most sample rates. At 192kHz only 128xfs is supported. The existing driver - selects 128xfs automatically for some lower samples rates. By using an +Subject: [PATCH 037/109] ASoC: wm8804: Implement MCLK configuration options, + add 32bit support WM8804 can run with PLL frequencies of 256xfs and 128xfs + for most sample rates. At 192kHz only 128xfs is supported. The existing + driver selects 128xfs automatically for some lower samples rates. By using an additional mclk_div divider, it is now possible to control the behaviour. This allows using 256xfs PLL frequency on all sample rates up to 96kHz. It should allow lower jitter and better signal quality. The behavior has to be @@ -108584,10 +108579,10 @@ index 3addc5f..d060b23 100644 #define WM8804_RATES (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_64000 | \ -From a971db21e7581f118ba08a1c7cb4541bf3425515 Mon Sep 17 00:00:00 2001 +From 3cd7a57420dee71859823109abea5c537750951a Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:42:08 +0100 -Subject: [PATCH 38/99] ASoC: BCM:Add support for HiFiBerry Digi. Driver is +Subject: [PATCH 038/109] ASoC: BCM:Add support for HiFiBerry Digi. Driver is based on the patched WM8804 driver. Signed-off-by: Daniel Matuschek @@ -108790,10 +108785,10 @@ index 0000000..e4f769d +MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi"); +MODULE_LICENSE("GPL v2"); -From c264443081eb5de98acdb90e5b77006b516c5376 Mon Sep 17 00:00:00 2001 +From 04a554b7980a7e62853cc8d5592f6bef7b7785fc Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Thu, 16 Jan 2014 07:26:08 +0100 -Subject: [PATCH 39/99] BCM2708: Added support for HiFiBerry Digi board Board +Subject: [PATCH 039/109] BCM2708: Added support for HiFiBerry Digi board Board initalization by I2C Signed-off-by: Daniel Matuschek @@ -108840,10 +108835,10 @@ index 100c223..a57cb85 100644 bcm_register_device(&snd_rpi_dac_device); bcm_register_device(&snd_pcm1794a_codec_device); -From 632f1bbb1c5b0c33044919cdf3e58c3f68ddfdec Mon Sep 17 00:00:00 2001 +From a6d81ab1dc64822ece6d99ead437ded2eec745a5 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Thu, 16 Jan 2014 07:27:28 +0100 -Subject: [PATCH 40/99] BCM2708: Added HiFiBerry Digi configuration option It +Subject: [PATCH 040/109] BCM2708: Added HiFiBerry Digi configuration option It will be compiled as a module by default. This also includes the WM8804 driver. @@ -108865,11 +108860,11 @@ index f688da5..c9d3fac 100644 CONFIG_SND_SIMPLE_CARD=m CONFIG_SOUND_PRIME=m -From 292bb4969e667a3df1641c2bb11fb8d1db06df5e Mon Sep 17 00:00:00 2001 +From c1fa23995aeacad8846f0e8f25d6882dbac1c60e Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Thu, 16 Jan 2014 07:36:35 +0100 -Subject: [PATCH 41/99] ASoC: wm8804: Set idle_bias_off to false Idle bias has - been change to remove warning on driver startup +Subject: [PATCH 041/109] ASoC: wm8804: Set idle_bias_off to false Idle bias + has been change to remove warning on driver startup Signed-off-by: Daniel Matuschek --- @@ -108890,10 +108885,10 @@ index d060b23..d486a9d 100644 .controls = wm8804_snd_controls, .num_controls = ARRAY_SIZE(wm8804_snd_controls), -From 23c001b4d29eb64c39f63b4a540469a8fe2c1961 Mon Sep 17 00:00:00 2001 +From 4f223b8ac562096768cd289ba910f4bc3e31d25c Mon Sep 17 00:00:00 2001 From: Gordon Garrity Date: Sat, 8 Mar 2014 16:56:57 +0000 -Subject: [PATCH 42/99] Add IQaudIO Sound Card support for Raspberry Pi +Subject: [PATCH 042/109] Add IQaudIO Sound Card support for Raspberry Pi --- arch/arm/configs/bcmrpi_defconfig | 1 + @@ -109103,10 +109098,10 @@ index 0000000..8d0e2ae +MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC"); +MODULE_LICENSE("GPL v2"); -From f69ce6ed18a0867a6858c42253c1468bc2d90217 Mon Sep 17 00:00:00 2001 +From b470154a6064f054e5dbdbf6aeae958950957995 Mon Sep 17 00:00:00 2001 From: Howard Mitchell Date: Fri, 28 Mar 2014 16:40:31 +0000 -Subject: [PATCH 43/99] pcm512x: Use a range macro for Volume and rename to +Subject: [PATCH 043/109] pcm512x: Use a range macro for Volume and rename to PCM. This allows limiting the output gain to avoid clipping in the @@ -109131,10 +109126,10 @@ index 0c8aefa..8252e6d 100644 PCM512x_LAGN_SHIFT, PCM512x_RAGN_SHIFT, 1, 1, analog_tlv), SOC_DOUBLE_TLV("Playback Boost Volume", PCM512x_ANALOG_GAIN_BOOST, -From 94597f0620a102d170de58d6c6db3899ad4159b9 Mon Sep 17 00:00:00 2001 +From 5bc9d599d191376891a1097d4a272abebb74dade Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 18 Jun 2014 13:42:01 +0100 -Subject: [PATCH 44/99] vmstat: Workaround for issue where dirty page count +Subject: [PATCH 044/109] vmstat: Workaround for issue where dirty page count goes negative See: @@ -109161,10 +109156,10 @@ index 82e7db7..f87d16d 100644 static inline void __inc_zone_page_state(struct page *page, -From 2b4f5062c45553ab0703e5b1d3795cb615041571 Mon Sep 17 00:00:00 2001 +From 442419f416eebdb5545c64bd05eea9d23a4bc87f Mon Sep 17 00:00:00 2001 From: P33M Date: Fri, 20 Jun 2014 16:03:12 +0100 -Subject: [PATCH 45/99] dwc_otg: Fix various issues with root port and +Subject: [PATCH 045/109] dwc_otg: Fix various issues with root port and transaction errors Process the host port interrupts correctly (and don't trample them). @@ -109204,7 +109199,7 @@ index 065807f..96c76e3 100644 } diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c -index 7aad7f7..f9d65e7 100644 +index 1be6e71..284f902 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c @@ -696,7 +696,11 @@ static int notrace noinline fiq_fsm_do_hcintr(struct fiq_state *state, int num_c @@ -109221,7 +109216,7 @@ index 7aad7f7..f9d65e7 100644 hcintmsk.b.ack = 0; hcintmsk.b.datatglerr = 0; diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c -index d3e2035..6182d3e 100644 +index 4195ff2..a5566bc 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c @@ -2619,7 +2619,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num) @@ -109234,10 +109229,10 @@ index d3e2035..6182d3e 100644 fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "RESET "); } -From 982fe7b9bdd2d5be19703d91bdf7b57b1dcd067e Mon Sep 17 00:00:00 2001 +From 3ff4825df543f951019b90f24a0f25746d3a1aef Mon Sep 17 00:00:00 2001 From: P33M Date: Fri, 20 Jun 2014 17:23:20 +0100 -Subject: [PATCH 46/99] fiq_fsm: Implement hack for Split Interrupt +Subject: [PATCH 046/109] fiq_fsm: Implement hack for Split Interrupt transactions Hubs aren't too picky about which endpoint we send Control type split @@ -109256,7 +109251,7 @@ Original idea by Hans Petter Selasky @ FreeBSD.org. 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c -index ebc3553..c39ef31 100644 +index 130096b..68d4f3b 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c @@ -1055,10 +1055,11 @@ int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if) @@ -109300,7 +109295,7 @@ index ebc3553..c39ef31 100644 } + if ((fiq_fsm_mask & 0x8) && hc->ep_type == UE_INTERRUPT) + start_immediate = 1; -+ ++ fiq_print(FIQDBG_INT, hcd->fiq_state, "FSMQ %01d %01d", hc->hc_num, start_immediate); fiq_print(FIQDBG_INT, hcd->fiq_state, "%08d", hfnum.b.frrem); //fiq_print(FIQDBG_INT, hcd->fiq_state, "H:%02dP:%02d", hub_addr, port_addr); @@ -109323,10 +109318,10 @@ index ebc3553..c39ef31 100644 break; } -From 99ee14f56bf5d532414fd767876c2bf917ecf111 Mon Sep 17 00:00:00 2001 +From 4b700b1e3caf01400fb12fa4dbd0c46e2009eb30 Mon Sep 17 00:00:00 2001 From: notro Date: Sun, 6 Jul 2014 12:07:25 +0200 -Subject: [PATCH 47/99] spi-bcm2708: Prepare for Common Clock Framework +Subject: [PATCH 047/109] spi-bcm2708: Prepare for Common Clock Framework migration As part of migrating to use the Common Clock Framework, replace clk_enable() @@ -109371,10 +109366,10 @@ index b04a57d..349d21f 100644 free_irq(bs->irq, master); iounmap(bs->base); -From 0641b17fdd6da0a7627b1b4e69c80f2bb426ce28 Mon Sep 17 00:00:00 2001 +From 94e614a5d1dc19bfeaf72a83b2fb73bf6124c28d Mon Sep 17 00:00:00 2001 From: notro Date: Sun, 6 Jul 2014 12:09:30 +0200 -Subject: [PATCH 48/99] BCM2708: Migrate to the Common Clock Framework +Subject: [PATCH 048/109] BCM2708: Migrate to the Common Clock Framework As part of moving towards using Device Tree, the Common Clock Framework has to be used instead of the BCM2708 clock implementation. @@ -109644,10 +109639,10 @@ index 5f9d725..0000000 - unsigned long rate; -}; -From c2e0452425b7019d7a66c32ea1c1cfe8b90c5aa0 Mon Sep 17 00:00:00 2001 +From 52d2b379bec4a51116d8455e8ea9e48e111d8de3 Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:46:08 +0200 -Subject: [PATCH 49/99] BCM2708: Add core Device Tree support +Subject: [PATCH 049/109] BCM2708: Add core Device Tree support Add the bare minimum needed to boot BCM2708 from a Device Tree. @@ -109812,10 +109807,10 @@ index ef12cb8..747e27a 100644 module_param(boardrev, uint, 0644); -From 8e4509f2f08d41c5b6dffc36f94040f854d8d9cd Mon Sep 17 00:00:00 2001 +From cc22f22361c05de903d6832924279ee8da5007a7 Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:47:48 +0200 -Subject: [PATCH 50/99] BCM2708: armctrl: Add IRQ Device Tree support +Subject: [PATCH 050/109] BCM2708: armctrl: Add IRQ Device Tree support Add Device Tree IRQ support for BCM2708. Usage is the same as for irq-bcm2835. @@ -109985,10 +109980,10 @@ index 96fa9b9..74bacb3 100644 return 0; } -From f89d53cf876e9b3efac2b9682cc6b0e9f7802278 Mon Sep 17 00:00:00 2001 +From f2235fab907332d09ccde90ce35ee76eafe10d28 Mon Sep 17 00:00:00 2001 From: notro Date: Thu, 10 Jul 2014 13:59:47 +0200 -Subject: [PATCH 51/99] BCM2708: use pinctrl-bcm2835 +Subject: [PATCH 051/109] BCM2708: use pinctrl-bcm2835 Use pinctrl-bcm2835 instead of the pinctrl-bcm2708 and bcm2708_gpio combination. @@ -110065,10 +110060,10 @@ index eabba02..962e180 100644 .can_sleep = false, }; -From 80bb530404c705126c9bbca3727c6bb9a2081261 Mon Sep 17 00:00:00 2001 +From 5e5606236d3db5b0567bcd50cd34ccc0b75bed96 Mon Sep 17 00:00:00 2001 From: notro Date: Sun, 27 Jul 2014 20:12:58 +0200 -Subject: [PATCH 52/99] spi: bcm2708: add device tree support +Subject: [PATCH 052/109] spi: bcm2708: add device tree support Add DT support to driver and add to .dtsi file. Setup pins and spidev in .dts file. @@ -110275,10 +110270,10 @@ index 349d21f..041b5e2 100644 .probe = bcm2708_spi_probe, .remove = bcm2708_spi_remove, -From 3d254564984a973886725b6c1fecb55a2acdb061 Mon Sep 17 00:00:00 2001 +From 374ed3fee57c058955b72f7f9a6f6cc635f93dc6 Mon Sep 17 00:00:00 2001 From: notro Date: Tue, 29 Jul 2014 11:04:49 +0200 -Subject: [PATCH 53/99] i2c: bcm2708: add device tree support +Subject: [PATCH 053/109] i2c: bcm2708: add device tree support Add DT support to driver and add to .dtsi file. Setup pins in .dts file. @@ -110502,10 +110497,10 @@ index 7d385a3..526129b 100644 .probe = bcm2708_i2c_probe, .remove = bcm2708_i2c_remove, -From ad3588a25603170446a8f2b5afb8ce9c42e2cb3f Mon Sep 17 00:00:00 2001 +From f3065a19f54f133e25a49d4d72f31ca9ff84b7c1 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 14 Jul 2014 22:02:09 +0100 -Subject: [PATCH 54/99] hid: Reduce default mouse polling interval to 60Hz +Subject: [PATCH 054/109] hid: Reduce default mouse polling interval to 60Hz Reduces overhead when using X --- @@ -110541,10 +110536,10 @@ index ca6849a..4671921 100644 ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { -From 175cd45c41200a13c81562c496883245513cf526 Mon Sep 17 00:00:00 2001 +From d5a09b855d2b14e220f324235805339203bd93ca Mon Sep 17 00:00:00 2001 From: P33M Date: Thu, 24 Jul 2014 21:24:03 +0100 -Subject: [PATCH 55/99] usb: core: make overcurrent messages more prominent +Subject: [PATCH 055/109] usb: core: make overcurrent messages more prominent Hub overcurrent messages are more serious than "debug". Increase loglevel. --- @@ -110565,10 +110560,10 @@ index b649fef..5f8d914 100644 USB_PORT_FEAT_C_OVER_CURRENT); msleep(100); /* Cool down */ -From 2e03891eac163883d203aa364888e6ece8f0e908 Mon Sep 17 00:00:00 2001 +From 496121511a6edc019470e1ce4bb947c2f3896950 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Tue, 22 Jul 2014 15:41:04 +0100 -Subject: [PATCH 56/99] vcsm: VideoCore shared memory service for BCM2835 +Subject: [PATCH 056/109] vcsm: VideoCore shared memory service for BCM2835 Add experimental support for the VideoCore shared memory service. This allows user processes to allocate memory from VideoCore's @@ -110596,12 +110591,12 @@ config: Disable VC_SM for now to fix hang with cutdown kernel arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h | 55 + arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h | 82 + arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h | 233 ++ - drivers/char/broadcom/Kconfig | 6 + + drivers/char/broadcom/Kconfig | 7 + drivers/char/broadcom/Makefile | 1 + drivers/char/broadcom/vc_sm/Makefile | 21 + drivers/char/broadcom/vc_sm/vc_vchi_sm.c | 492 +++ drivers/char/broadcom/vc_sm/vmcs_sm.c | 3163 ++++++++++++++++++++ - 9 files changed, 4234 insertions(+) + 9 files changed, 4235 insertions(+) create mode 100644 arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h create mode 100644 arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h create mode 100644 arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h @@ -111186,13 +111181,14 @@ index 0000000..42d0eb0 + +#endif /* __VMCS_SM_IOCTL_H__INCLUDED__ */ diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig -index f089943..d4eb46d 100644 +index 2d8bd6e..d4eb46d 100644 --- a/drivers/char/broadcom/Kconfig +++ b/drivers/char/broadcom/Kconfig -@@ -14,3 +14,9 @@ config BCM_VC_CMA +@@ -13,3 +13,10 @@ config BCM_VC_CMA + default n help Helper for videocore CMA access. - ++ +config BCM_VC_SM + tristate "VMCS Shared Memory" + default n @@ -114901,10 +114897,10 @@ index 0000000..da1c523 +MODULE_DESCRIPTION("VideoCore SharedMemory Driver"); +MODULE_LICENSE("GPL v2"); -From 966292d5522d388cbf7f0fdd888f66f5a37ba0f4 Mon Sep 17 00:00:00 2001 +From 5b20b5f5dd8930488c70c2d6a45c04530d0387c8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 7 Aug 2014 02:03:50 +0100 -Subject: [PATCH 57/99] Revert "ARM: dma: Use dma_pfn_offset for dma address +Subject: [PATCH 057/109] Revert "ARM: dma: Use dma_pfn_offset for dma address translation" This reverts commit 6ce0d20016925d031f1e24d64302e4c976d7cec6. @@ -114956,10 +114952,10 @@ index 85738b2..9477f09 100644 } -From 8442254fd1354fed4857a232e1201bc00204cd2f Mon Sep 17 00:00:00 2001 +From 1b84c56b05d5be4456e92c8dd003bbb738c33145 Mon Sep 17 00:00:00 2001 From: gellert Date: Fri, 15 Aug 2014 16:35:06 +0100 -Subject: [PATCH 58/99] MMC: added alternative MMC driver +Subject: [PATCH 058/109] MMC: added alternative MMC driver --- arch/arm/configs/bcmrpi_defconfig | 2 + @@ -116666,10 +116662,10 @@ index 0000000..cefba7c +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Gellert Weisz"); -From 76f3be9070f06f9e5f1acd134659fb6af3c465e0 Mon Sep 17 00:00:00 2001 +From be512517bbd66959ff039769542c823fc1752e4c Mon Sep 17 00:00:00 2001 From: P33M Date: Tue, 13 Jan 2015 17:12:18 +0000 -Subject: [PATCH 59/99] mmc: Disable CMD23 transfers on all cards +Subject: [PATCH 059/109] mmc: Disable CMD23 transfers on all cards Pending wire-level investigation of these types of transfers and associated errors on bcm2835-mmc, disable for now. Fallback of @@ -116695,10 +116691,10 @@ index dd1d1e0..f472082 100644 } EXPORT_SYMBOL(mmc_fixup_device); -From 752368678e1164e5a53c9cb98a4cfee768bc8400 Mon Sep 17 00:00:00 2001 +From 4c8a252e05a08f3fdba75d149ff3c23c0ee1a513 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 10:06:56 +0200 -Subject: [PATCH 60/99] Added support for HiFiBerry DAC+ +Subject: [PATCH 060/109] Added support for HiFiBerry DAC+ The driver is based on the HiFiBerry DAC driver. However HiFiBerry DAC+ uses a different codec chip (PCM5122), therefore a new driver is necessary. @@ -116922,10 +116918,10 @@ index 0000000..c63387b +MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+"); +MODULE_LICENSE("GPL v2"); -From dd1a5d7b870e20b75e5551c03d7455f6e30ff974 Mon Sep 17 00:00:00 2001 +From 844e478d3417500d15a65ec683de0f1c5409ebbe Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 11:09:58 +0200 -Subject: [PATCH 61/99] Added driver for HiFiBerry Amp amplifier add-on board +Subject: [PATCH 061/109] Added driver for HiFiBerry Amp amplifier add-on board The driver contains a low-level hardware driver for the TAS5713 and the drivers for the Raspberry Pi I2S subsystem. @@ -117769,10 +117765,11 @@ index 0000000..8f019e0 + +#endif /* _TAS5713_H */ -From d39db20905c4f0edb81028b79aa94f79c34ebbd3 Mon Sep 17 00:00:00 2001 +From 68b605b4c63bdbf5f1339a2dba0f512bdbb29831 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Oct 2014 11:47:53 +0100 -Subject: [PATCH 62/99] Improve __copy_to_user and __copy_from_user performance +Subject: [PATCH 062/109] Improve __copy_to_user and __copy_from_user + performance Provide a __copy_from_user that uses memcpy. On BCM2708, use optimised memcpy/memmove/memcmp/memset implementations. @@ -119295,11 +119292,11 @@ index 3e58d71..0622891 100644 static unsigned long noinline __clear_user_memset(void __user *addr, unsigned long n) -From 40253f8d2c5fc144a09c2a9c7acdac3e8325e95a Mon Sep 17 00:00:00 2001 +From 94fce8f0385100ea6d95dcb74d60aafd3800b135 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 1 Sep 2014 16:35:56 +0100 -Subject: [PATCH 63/99] bcm2708: Allow option card devices to be configured via - DT +Subject: [PATCH 063/109] bcm2708: Allow option card devices to be configured + via DT If the kernel is built with Device Tree support, and if a DT blob is provided for the kernel at boot time, then the platform devices @@ -119689,7 +119686,7 @@ index d134710..2e2b6d0 100644 return -ENOENT; diff --git a/sound/soc/bcm/bcm2708-i2s.c b/sound/soc/bcm/bcm2708-i2s.c -index 3fcb740..7570e50 100644 +index 0b5322a..a3b65dc 100644 --- a/sound/soc/bcm/bcm2708-i2s.c +++ b/sound/soc/bcm/bcm2708-i2s.c @@ -493,15 +493,19 @@ static int bcm2708_i2s_hw_params(struct snd_pcm_substream *substream, @@ -119754,10 +119751,10 @@ index 2685fe4..e2c61d1 100644 static struct platform_driver bcm2835_i2s_driver = { .probe = bcm2835_i2s_probe, -From c56cc87eee3630c852bc69d05d70e810774a4456 Mon Sep 17 00:00:00 2001 +From b6d6d9e1fbf6c58b55a739983d9b56d14d4ea5f7 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 12 Nov 2014 17:07:02 +0000 -Subject: [PATCH 64/99] Adding Device Tree support for some RPi audio cards +Subject: [PATCH 064/109] Adding Device Tree support for some RPi audio cards --- arch/arm/boot/dts/Makefile | 2 + @@ -120382,10 +120379,10 @@ index 126f1e9..7c6598e 100644 }; -From b99050b7f7480499855dec85be2deac75db5fc62 Mon Sep 17 00:00:00 2001 +From 9419aea0df4f765c37f0db97d033b50fc4b96b70 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 5 Dec 2014 17:26:26 +0000 -Subject: [PATCH 65/99] fdt: Add support for the CONFIG_CMDLINE_EXTEND option +Subject: [PATCH 065/109] fdt: Add support for the CONFIG_CMDLINE_EXTEND option --- drivers/of/fdt.c | 29 ++++++++++++++++++++++++----- @@ -120440,10 +120437,10 @@ index 2e2b6d0..badc6a3 100644 pr_debug("Command line is: %s\n", (char*)data); -From a87ff3c90d72c04f2f9817da518346f9cab20dbb Mon Sep 17 00:00:00 2001 +From 8ca404489ca0b7771a6232e8dc478bf6c863e256 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 25 Nov 2014 13:39:03 +0000 -Subject: [PATCH 66/99] config: Enable device tree +Subject: [PATCH 066/109] config: Enable device tree --- arch/arm/configs/bcmrpi_defconfig | 1 + @@ -120462,10 +120459,10 @@ index 997e1f3..2cd8227 100644 CONFIG_AEABI=y CONFIG_CLEANCACHE=y -From d4c02060702b67323ab0b3e7560a7ec04ee4ed23 Mon Sep 17 00:00:00 2001 +From 567c62f176f898c10f91673330d1544507a31ef4 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 16 Dec 2014 10:23:48 +0000 -Subject: [PATCH 67/99] DT: Add overrides to enable i2c0, i2c1, spi and i2s +Subject: [PATCH 067/109] DT: Add overrides to enable i2c0, i2c1, spi and i2s --- arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 10 ++++++++++ @@ -120509,10 +120506,10 @@ index d8c6d15..167b22b 100644 + }; +}; -From aeae37a609c9e811fed6dab33be7a6885abfe455 Mon Sep 17 00:00:00 2001 +From 0282021217a5e134dad2cb10351e404150a7c00e Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 18 Dec 2014 16:48:32 +0000 -Subject: [PATCH 68/99] lirc-rpi: Add device tree support, and a suitable +Subject: [PATCH 068/109] lirc-rpi: Add device tree support, and a suitable overlay The overlay supports DT parameters that match the old module @@ -120806,10 +120803,10 @@ index c688364..cd66ca2 100644 if (result < 0) goto exit_rpi; -From 2d7d7d90f1506f412a893a4e38594c3d906cf1ca Mon Sep 17 00:00:00 2001 +From 665f5b0865b99919dbc7b95a2d44eddfd948040a Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 6 Jan 2015 12:06:55 +0000 -Subject: [PATCH 69/99] Fix the activity LED in DT mode +Subject: [PATCH 069/109] Fix the activity LED in DT mode Add a "leds" node to the base DTBs, and a subnode for the activity LED. You can change the LED function like this: @@ -120941,10 +120938,10 @@ index 6b36128..1b56cb5 100644 clocks { -From e096147c740cb9c72be6abdec1fa3fb1d0679da2 Mon Sep 17 00:00:00 2001 +From 9d28926d52c2624551d1b083dc43b11d342fb23e Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 15 Jan 2015 10:39:06 +0000 -Subject: [PATCH 70/99] Adding w1-gpio device tree overlays +Subject: [PATCH 070/109] Adding w1-gpio device tree overlays N.B. Requires firmware supporting multi-target overrides @@ -121054,10 +121051,10 @@ index 0000000..b3e97c2 + }; +}; -From 0e458e17798b06a4efd80ae8ae3d78ab8b998f6e Mon Sep 17 00:00:00 2001 +From 505331f6788d378171fbc9fc8fc2136876c9b862 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 21 Jan 2015 22:46:02 +0000 -Subject: [PATCH 71/99] config: Enable CONFIG_PPS +Subject: [PATCH 071/109] config: Enable CONFIG_PPS --- arch/arm/configs/bcmrpi_defconfig | 3 +++ @@ -121078,10 +121075,10 @@ index 2cd8227..36aca2b 100644 CONFIG_GPIO_ARIZONA=m CONFIG_W1=m -From edda1b0f0f6d708e31ceef0983c51ae21be5b234 Mon Sep 17 00:00:00 2001 +From 4db14ea0d1a5478a42481c32562775208cc84c7d Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 21 Jan 2015 23:47:33 +0000 -Subject: [PATCH 72/99] config: Add CONFIG_IP_NF options +Subject: [PATCH 072/109] config: Add CONFIG_IP_NF options --- arch/arm/configs/bcmrpi_defconfig | 9 +++++++-- @@ -121128,10 +121125,10 @@ index 36aca2b..665b01e 100644 CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m -From e9803f9355abb7ccb82556875ab9a72d27ce0462 Mon Sep 17 00:00:00 2001 +From e285723569b0c04f9552f8948ab955d76af817d4 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 23 Jan 2015 12:04:59 +0000 -Subject: [PATCH 73/99] config: Restore some missing options +Subject: [PATCH 073/109] config: Restore some missing options --- arch/arm/configs/bcmrpi_defconfig | 18 ++++++++++++++++-- @@ -121216,10 +121213,80 @@ index 665b01e..41b90b4 100644 CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_TGR192=m -From 4fc365d1f634d4531d103aa826e5e473b2972dae Mon Sep 17 00:00:00 2001 +From 9603373b33f6603f8e7b8b21d8a17a8b62c74a97 Mon Sep 17 00:00:00 2001 +From: Daniel Matuschek +Date: Fri, 23 Jan 2015 16:41:17 +0100 +Subject: [PATCH 074/109] TAS5713: return error if initialisation fails + +Existing TAS5713 driver logs errors during initialisation, but does not return +an error code. Therefore even if initialisation fails, the driver will still be +loaded, but won't work. This patch fixes this. I2C communication error will now +reported correctly by a non-zero return code. +--- + sound/soc/codecs/tas5713.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +diff --git a/sound/soc/codecs/tas5713.c b/sound/soc/codecs/tas5713.c +index a24c1da..9b27138 100644 +--- a/sound/soc/codecs/tas5713.c ++++ b/sound/soc/codecs/tas5713.c +@@ -182,33 +182,40 @@ static int tas5713_probe(struct snd_soc_codec *codec) + + // Reset error + ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00); ++ if (ret < 0) return ret; + + // Trim oscillator +- ret = snd_soc_write(codec, TAS5713_OSC_TRIM, 0x00); ++ ret = snd_soc_write(codec, TAS5713_OSC_TRIM, 0x00); ++ if (ret < 0) return ret; + msleep(1000); + + // Reset error + ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00); ++ if (ret < 0) return ret; + + // Clock mode: 44/48kHz, MCLK=64xfs + ret = snd_soc_write(codec, TAS5713_CLOCK_CTRL, 0x60); ++ if (ret < 0) return ret; + + // I2S 24bit + ret = snd_soc_write(codec, TAS5713_SERIAL_DATA_INTERFACE, 0x05); ++ if (ret < 0) return ret; + + // Unmute + ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00); ++ if (ret < 0) return ret; + ret = snd_soc_write(codec, TAS5713_SOFT_MUTE, 0x00); ++ if (ret < 0) return ret; + + // Set volume to 0db + ret = snd_soc_write(codec, TAS5713_VOL_MASTER, 0x00); ++ if (ret < 0) return ret; + + // Now start programming the default initialization sequence + for (i = 0; i < ARRAY_SIZE(tas5713_init_sequence); ++i) { + ret = i2c_master_send(i2c, + tas5713_init_sequence[i].data, + tas5713_init_sequence[i].size); +- + if (ret < 0) { + printk(KERN_INFO "TAS5713 CODEC PROBE: InitSeq returns: %d\n", ret); + } +@@ -216,7 +223,7 @@ static int tas5713_probe(struct snd_soc_codec *codec) + + // Unmute + ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00); +- ++ if (ret < 0) return ret; + + return 0; + } + +From fbd35d35e2d94bcabf7f988eee308484656b85a0 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 23 Jan 2015 14:48:55 +0000 -Subject: [PATCH 74/99] scripts/dtc: Update to upstream version with overlay +Subject: [PATCH 075/109] scripts/dtc: Update to upstream version with overlay patches --- @@ -126432,10 +126499,10 @@ index 54d4e90..d644002 100644 -#define DTC_VERSION "DTC 1.4.0-dirty" +#define DTC_VERSION "DTC 1.4.1-g36c70742" -From 403f2a6fb5158c675999d450c5d9b46d272f357e Mon Sep 17 00:00:00 2001 +From d0e177837d5f5d90531a5e41562ea22f8360b6c6 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 23 Jan 2015 15:18:03 +0000 -Subject: [PATCH 75/99] BCM2708_DT: Build the overlays as well +Subject: [PATCH 076/109] BCM2708_DT: Build the overlays as well --- arch/arm/boot/dts/Makefile | 13 +++++++++++++ @@ -126473,80 +126540,10 @@ index adaebbb..3c7f539 100644 # old build results so people don't accidentally use them. dtbs: $(addprefix $(obj)/, $(dtb-y)) -From 26390e6c55c204ad5ea8f0dc29aa641603092273 Mon Sep 17 00:00:00 2001 -From: Daniel Matuschek -Date: Fri, 23 Jan 2015 16:41:17 +0100 -Subject: [PATCH 76/99] TAS5713: return error if initialisation fails - -Existing TAS5713 driver logs errors during initialisation, but does not return -an error code. Therefore even if initialisation fails, the driver will still be -loaded, but won't work. This patch fixes this. I2C communication error will now -reported correctly by a non-zero return code. ---- - sound/soc/codecs/tas5713.c | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/sound/soc/codecs/tas5713.c b/sound/soc/codecs/tas5713.c -index a24c1da..9b27138 100644 ---- a/sound/soc/codecs/tas5713.c -+++ b/sound/soc/codecs/tas5713.c -@@ -182,33 +182,40 @@ static int tas5713_probe(struct snd_soc_codec *codec) - - // Reset error - ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00); -+ if (ret < 0) return ret; - - // Trim oscillator -- ret = snd_soc_write(codec, TAS5713_OSC_TRIM, 0x00); -+ ret = snd_soc_write(codec, TAS5713_OSC_TRIM, 0x00); -+ if (ret < 0) return ret; - msleep(1000); - - // Reset error - ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00); -+ if (ret < 0) return ret; - - // Clock mode: 44/48kHz, MCLK=64xfs - ret = snd_soc_write(codec, TAS5713_CLOCK_CTRL, 0x60); -+ if (ret < 0) return ret; - - // I2S 24bit - ret = snd_soc_write(codec, TAS5713_SERIAL_DATA_INTERFACE, 0x05); -+ if (ret < 0) return ret; - - // Unmute - ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00); -+ if (ret < 0) return ret; - ret = snd_soc_write(codec, TAS5713_SOFT_MUTE, 0x00); -+ if (ret < 0) return ret; - - // Set volume to 0db - ret = snd_soc_write(codec, TAS5713_VOL_MASTER, 0x00); -+ if (ret < 0) return ret; - - // Now start programming the default initialization sequence - for (i = 0; i < ARRAY_SIZE(tas5713_init_sequence); ++i) { - ret = i2c_master_send(i2c, - tas5713_init_sequence[i].data, - tas5713_init_sequence[i].size); -- - if (ret < 0) { - printk(KERN_INFO "TAS5713 CODEC PROBE: InitSeq returns: %d\n", ret); - } -@@ -216,7 +223,7 @@ static int tas5713_probe(struct snd_soc_codec *codec) - - // Unmute - ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00); -- -+ if (ret < 0) return ret; - - return 0; - } - -From 44bc76ebe12fbe2e69d6f55516a2d3e46c31570e Mon Sep 17 00:00:00 2001 +From 1e2ef39685c46e405f062f5e48a02b61dab5093c Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Sun, 25 Jan 2015 19:41:06 +0100 -Subject: [PATCH 77/99] Add device tree overlay for HiFiBerry Amp/Amp+ +Subject: [PATCH 077/109] Add device tree overlay for HiFiBerry Amp/Amp+ This patch add the missing device tree file for the HiFiBerry Amp and Amp+ boards. --- @@ -126613,10 +126610,10 @@ index 0000000..2c81448 + }; +}; -From f7f92de38c81f66e460518d9590a614dda3fc264 Mon Sep 17 00:00:00 2001 +From 8f8f71503a9dace397d0ab273349158985a8efb2 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Jan 2015 09:18:24 +0000 -Subject: [PATCH 78/99] Add pps-gpio DT overlay +Subject: [PATCH 078/109] Add pps-gpio DT overlay Parameters: gpiopin= // Default 18 @@ -126679,10 +126676,10 @@ index 0000000..40bf0e1 + }; +}; -From 54d33c74deecb9bc86ff9d2c8e532466b1690cda Mon Sep 17 00:00:00 2001 +From 44830787c031a76b535a153fe42943b3f68a6690 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 26 Jan 2015 14:32:18 +0000 -Subject: [PATCH 79/99] config: Remove STRICT_DEVMEM +Subject: [PATCH 079/109] config: Remove STRICT_DEVMEM --- arch/arm/configs/bcmrpi_defconfig | 1 - @@ -126701,11 +126698,11 @@ index 41b90b4..fd7c022 100644 CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_CRYPTD=m -From 9514f552622d2ba322c8393ebc76737a110a6d05 Mon Sep 17 00:00:00 2001 +From 948e2cbe2e26d7da6cb5e4f57d86f1b407b7c3f4 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Wed, 3 Sep 2014 14:44:22 +0100 -Subject: [PATCH 80/99] I2C: Only register the I2C device for the current board - revision +Subject: [PATCH 080/109] I2C: Only register the I2C device for the current + board revision --- arch/arm/mach-bcm2708/bcm2708.c | 14 ++++++++++++-- @@ -126748,10 +126745,10 @@ index 2c6a29d..b36037b 100644 +module_param(vc_i2c_override, bool, 0644); +MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral."); -From b189da6c489c55ffa8120b559932576f935065dc Mon Sep 17 00:00:00 2001 +From 24e8c1703614e6adc6fd5db652d347f62e4c24a2 Mon Sep 17 00:00:00 2001 From: Timo Kokkonen Date: Wed, 29 Oct 2014 23:30:30 -0700 -Subject: [PATCH 81/99] Added support to reserve/enable a GPIO pin to be used +Subject: [PATCH 081/109] Added support to reserve/enable a GPIO pin to be used from pps-gpio module (LinuxPPS). Enable PPS modules in default config for RPi. @@ -126825,10 +126822,10 @@ index b36037b..762e17c 100644 module_param(vc_i2c_override, bool, 0644); MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral."); -From af6e95fa26c77e19ca0e065bd063199bf6488a80 Mon Sep 17 00:00:00 2001 +From 0102244bfbc13cdeda512330b3fe230e94386882 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Jan 2015 15:26:10 +0000 -Subject: [PATCH 82/99] BCM2708_DT: Correct length of the peripheral space +Subject: [PATCH 082/109] BCM2708_DT: Correct length of the peripheral space --- arch/arm/boot/dts/bcm2708.dtsi | 2 +- @@ -126848,10 +126845,10 @@ index 1b56cb5..d879316 100644 intc: interrupt-controller { compatible = "brcm,bcm2708-armctrl-ic"; -From 16dc50d9c5a32ca79809388fae14f973a0d8a2f3 Mon Sep 17 00:00:00 2001 +From 6c984a9765c943ca92b5a3ab708244ed2e203927 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 28 Jan 2015 16:22:04 +0000 -Subject: [PATCH 83/99] BCM2708_DT: Add pcf8523-rtc overlay +Subject: [PATCH 083/109] BCM2708_DT: Add pcf8523-rtc overlay --- arch/arm/boot/dts/Makefile | 1 + @@ -126900,11 +126897,11 @@ index 0000000..0071f62 + }; +}; -From 734486f327fa774568849d9f2df7c43b9b014d48 Mon Sep 17 00:00:00 2001 +From 37279f2cd80b5f7cb911cb2bdadd1260102d55bf Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Sat, 31 Jan 2015 16:07:56 +0100 -Subject: [PATCH 84/99] Add a parameter to turn off SPDIF output if no audio is - playing +Subject: [PATCH 084/109] Add a parameter to turn off SPDIF output if no audio + is playing This patch adds the paramater auto_shutdown_output to the kernel module. Default behaviour of the module is the same, but when auto_shutdown_output @@ -126975,10 +126972,32 @@ index 76af8a6..b0e3d28 100644 static struct snd_soc_dai_link snd_rpi_hifiberry_digi_dai[] = { -From 5f382ee269ecea69b9c55ef5f34c128ddc5bc483 Mon Sep 17 00:00:00 2001 +From f279213d672f964b956bfe38893a1f20a18681d7 Mon Sep 17 00:00:00 2001 +From: Joerg Hohensohn +Date: Sun, 1 Feb 2015 22:08:03 +0100 +Subject: [PATCH 085/109] bugfix for 32kHz sample rate, was missing + +--- + sound/soc/bcm/hifiberry_digi.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/bcm/hifiberry_digi.c b/sound/soc/bcm/hifiberry_digi.c +index b0e3d28..133d51b 100644 +--- a/sound/soc/bcm/hifiberry_digi.c ++++ b/sound/soc/bcm/hifiberry_digi.c +@@ -80,6 +80,7 @@ static int snd_rpi_hifiberry_digi_hw_params(struct snd_pcm_substream *substream, + samplerate = params_rate(params); + + switch (samplerate) { ++ case 32000: + case 44100: + case 48000: + case 88200: + +From 1f67578de01ac10d66a24645091fc6efbba044dd Mon Sep 17 00:00:00 2001 From: Ryan Coe Date: Sat, 31 Jan 2015 18:25:49 -0700 -Subject: [PATCH 85/99] Update ds1307 driver for device-tree support +Subject: [PATCH 086/109] Update ds1307 driver for device-tree support Signed-off-by: Ryan Coe --- @@ -127005,10 +127024,10 @@ index bb43cf7..dadd4fb 100644 .driver = { .name = "rtc-ds1307", -From ef1021b8fb67f73d3e071944c7895e21851e0d51 Mon Sep 17 00:00:00 2001 +From 013375d159ffb94d902017b69a0936b999e6a2f3 Mon Sep 17 00:00:00 2001 From: Ryan Coe Date: Sat, 31 Jan 2015 18:26:03 -0700 -Subject: [PATCH 86/99] Add device-tree overlay for ds1307 +Subject: [PATCH 087/109] Add device-tree overlay for ds1307 Signed-off-by: Ryan Coe --- @@ -127058,32 +127077,10 @@ index 0000000..7d27044 + }; +}; -From de771e358ec3a7063d9462e715cbb580c02ea525 Mon Sep 17 00:00:00 2001 -From: Joerg Hohensohn -Date: Sun, 1 Feb 2015 22:08:03 +0100 -Subject: [PATCH 87/99] bugfix for 32kHz sample rate, was missing - ---- - sound/soc/bcm/hifiberry_digi.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/sound/soc/bcm/hifiberry_digi.c b/sound/soc/bcm/hifiberry_digi.c -index b0e3d28..133d51b 100644 ---- a/sound/soc/bcm/hifiberry_digi.c -+++ b/sound/soc/bcm/hifiberry_digi.c -@@ -80,6 +80,7 @@ static int snd_rpi_hifiberry_digi_hw_params(struct snd_pcm_substream *substream, - samplerate = params_rate(params); - - switch (samplerate) { -+ case 32000: - case 44100: - case 48000: - case 88200: - -From 2cbc0c036ef13f6a427cffec068397dbcc9e1d49 Mon Sep 17 00:00:00 2001 +From 6ae5cf63effc3ea8d58784d43b702366b2972d00 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 1 Feb 2015 12:10:25 +0000 -Subject: [PATCH 88/99] config: Add DVB_USB_DVBSKY +Subject: [PATCH 088/109] config: Add DVB_USB_DVBSKY --- arch/arm/configs/bcmrpi_defconfig | 1 + @@ -127102,10 +127099,10 @@ index fd7c022..0453a38 100644 CONFIG_DVB_B2C2_FLEXCOP_USB=m CONFIG_DVB_AS102=m -From e897b67baf446feb15f9b587cd6a048db3d6ec88 Mon Sep 17 00:00:00 2001 +From eecf55b1685e7d8e798ae51cc2fe701f5ec67df8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 7 May 2013 14:32:27 +0100 -Subject: [PATCH 89/99] Add 2709 platform for Raspberry Pi 2 +Subject: [PATCH 089/109] Add 2709 platform for Raspberry Pi 2 --- arch/arm/Kconfig | 21 + @@ -136750,10 +136747,10 @@ index a562ddf..40d27c1 100644 select SND_SOC_DMAENGINE_PCM select SND_SOC_GENERIC_DMAENGINE_PCM -From a4fe71876a30ee7bbf18a4ff94b1a78f1dc1b8c2 Mon Sep 17 00:00:00 2001 +From dc9ea5fea002a100d84e47df205104620deee948 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 20 Jun 2014 17:19:27 +0100 -Subject: [PATCH 90/99] bcm2709: Simplify and strip down IRQ handler +Subject: [PATCH 090/109] bcm2709: Simplify and strip down IRQ handler --- arch/arm/include/asm/entry-macro-multi.S | 2 + @@ -136970,10 +136967,10 @@ index d08591b..101d9f1 100644 +1: get_irqnr_and_base r0, r2, r6, lr + .endm -From eb227564217111a9d27319a0ba305996b2c7d3a8 Mon Sep 17 00:00:00 2001 +From 260334a0ccd6b16ec72d884cfc69fafcc6e41048 Mon Sep 17 00:00:00 2001 From: P33M Date: Wed, 24 Sep 2014 11:57:51 +0100 -Subject: [PATCH 91/99] dwc_otg: FIQ support on SMP. Set up FIQ stack and +Subject: [PATCH 091/109] dwc_otg: FIQ support on SMP. Set up FIQ stack and handler on Core 0 only. --- @@ -136981,7 +136978,7 @@ Subject: [PATCH 91/99] dwc_otg: FIQ support on SMP. Set up FIQ stack and 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c -index 07b1808..1cb223f 100644 +index 98e1dc5..4d8dd95 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c @@ -397,7 +397,55 @@ static struct fiq_handler fh = { @@ -137103,10 +137100,10 @@ index 07b1808..1cb223f 100644 otg_dev->hcd->otg_dev = otg_dev; -From 91b120598697cc923bea7618d353d79bcb0018d0 Mon Sep 17 00:00:00 2001 +From f4ac9ef02ce18d0703d7641f47c50309ee4ce9ba Mon Sep 17 00:00:00 2001 From: P33M Date: Fri, 26 Sep 2014 11:32:09 +0100 -Subject: [PATCH 92/99] dwc_otg: introduce fiq_fsm_spin(un|)lock() +Subject: [PATCH 092/109] dwc_otg: introduce fiq_fsm_spin(un|)lock() SMP safety for the FIQ relies on register read-modify write cycles being completed in the correct order. Several places in the DWC code modify @@ -137172,7 +137169,7 @@ index 6a32c5c..e40060f 100644 * Program the HCCHARn register with the endpoint characteristics for * the current transfer. diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c -index f9d65e7..c16df37 100644 +index 284f902..84618a5 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c @@ -75,6 +75,46 @@ void notrace _fiq_print(enum fiq_debug_level dbg_lvl, volatile struct fiq_state @@ -137255,7 +137252,7 @@ index f9d65e7..c16df37 100644 + fiq_fsm_spin_unlock(&state->lock); } diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h -index 7572958..3561012 100644 +index 5c7707f..8455324 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h +++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h @@ -120,7 +120,6 @@ typedef struct { @@ -137303,7 +137300,7 @@ index 7572958..3561012 100644 extern int fiq_fsm_tt_in_use(struct fiq_state *st, int num_channels, int n); diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c -index c39ef31..19019f8 100644 +index 68d4f3b..124ac16 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c @@ -1184,6 +1184,9 @@ static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) @@ -137372,7 +137369,7 @@ index c39ef31..19019f8 100644 return 0; } diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c -index 6182d3e..ffb9852 100644 +index a5566bc..ee35196 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c @@ -101,6 +101,7 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd) @@ -137386,7 +137383,7 @@ index 6182d3e..ffb9852 100644 @@ -116,8 +117,10 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd) } gintsts.d32 &= gintmsk.d32; - + - if (fiq_enable) + if (fiq_enable) { + fiq_fsm_spin_unlock(&dwc_otg_hcd->fiq_state->lock); @@ -137423,17 +137420,17 @@ index 6182d3e..ffb9852 100644 } -From 6b14908eb08e541448a2de54dc19f074e41b6565 Mon Sep 17 00:00:00 2001 +From 9703054f7886c575774ab8fbb19f54c30092319b Mon Sep 17 00:00:00 2001 From: P33M Date: Thu, 22 Jan 2015 11:59:41 +0000 -Subject: [PATCH 93/99] fiq_fsm: fix build on bcm2708 and bcm2709 platforms +Subject: [PATCH 093/109] fiq_fsm: fix build on bcm2708 and bcm2709 platforms --- drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c -index c16df37..374547c 100644 +index 84618a5..0d2b04e 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c @@ -78,6 +78,7 @@ void notrace _fiq_print(enum fiq_debug_level dbg_lvl, volatile struct fiq_state @@ -137469,10 +137466,10 @@ index c16df37..374547c 100644 /** * fiq_fsm_restart_channel() - Poke channel enable bit for a split transaction -From a9efdd70be42e6589688c9433b85bbf9ffe4d54f Mon Sep 17 00:00:00 2001 +From 8907a2b1f0994c4f111d1ff69ef336d3204c606b Mon Sep 17 00:00:00 2001 From: P33M Date: Thu, 22 Jan 2015 17:49:23 +0000 -Subject: [PATCH 94/99] dwc_otg: put some barriers back where they should be +Subject: [PATCH 094/109] dwc_otg: put some barriers back where they should be for UP --- @@ -137481,7 +137478,7 @@ Subject: [PATCH 94/99] dwc_otg: put some barriers back where they should be 2 files changed, 3 insertions(+) diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c -index 374547c..6933450 100644 +index 0d2b04e..276ad0c7 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c @@ -1280,6 +1280,7 @@ void notrace dwc_otg_fiq_fsm(struct fiq_state *state, int num_channels) @@ -137500,7 +137497,7 @@ index 374547c..6933450 100644 fiq_fsm_spin_unlock(&state->lock); } diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c -index 19019f8..a7815bd 100644 +index 124ac16..ac70f1d 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c @@ -1928,6 +1928,7 @@ int fiq_fsm_queue_split_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh) @@ -137512,10 +137509,10 @@ index 19019f8..a7815bd 100644 local_fiq_enable(); return 0; -From 8bc404e924e641b7a442f9355d6b0d5936bd4d44 Mon Sep 17 00:00:00 2001 +From 78134778791de26780df07fc43d013ca7da5735f Mon Sep 17 00:00:00 2001 From: P33M Date: Thu, 22 Jan 2015 18:02:44 +0000 -Subject: [PATCH 95/99] mach_bcm2709: Add Mailbox resources to USB driver +Subject: [PATCH 095/109] mach_bcm2709: Add Mailbox resources to USB driver --- arch/arm/mach-bcm2709/bcm2709.c | 10 ++++++++++ @@ -137543,10 +137540,11 @@ index a1058ad..5d73b73 100644 -From 1efe50a01868c427225f061c4151706acca7fbbc Mon Sep 17 00:00:00 2001 +From bea1fdbd603f87f24c8bc5a7679bc8e2b50af404 Mon Sep 17 00:00:00 2001 From: P33M Date: Thu, 22 Jan 2015 18:45:23 +0000 -Subject: [PATCH 96/99] bcm2709/dwc_otg: Setup FIQ on core 1 if >1 core active +Subject: [PATCH 096/109] bcm2709/dwc_otg: Setup FIQ on core 1 if >1 core + active --- arch/arm/mach-bcm2709/armctrl.c | 10 +++++++++- @@ -137575,7 +137573,7 @@ index 8e69a813..6e3f0f2 100644 } else if (d->irq >= IRQ_ARM_LOCAL_CNTPSIRQ && d->irq < IRQ_ARM_LOCAL_CNTPSIRQ + 4) { #if 1 diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c -index 1cb223f..9500cdb 100644 +index 4d8dd95..1d28459 100644 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c @@ -407,7 +407,9 @@ static void hcd_init_fiq(void *cookie) @@ -137608,10 +137606,10 @@ index 1cb223f..9500cdb 100644 otg_dev->hcd->otg_dev = otg_dev; hcd->self.otg_port = dwc_otg_hcd_otg_port(dwc_otg_hcd); -From db5821cd43f70ce3389699760e51212009f490ad Mon Sep 17 00:00:00 2001 +From 2c078fdc114dd9b5613e7be264c4536c5bc0ab1e Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 26 Jan 2015 17:40:22 +0000 -Subject: [PATCH 97/99] bcm2709: Port pps-gpio and i2c patches +Subject: [PATCH 097/109] bcm2709: Port pps-gpio and i2c patches --- arch/arm/mach-bcm2709/bcm2709.c | 41 +++++++++++++++++++++++++++++++++++++++-- @@ -137702,10 +137700,10 @@ index 5d73b73..f009aeb 100644 +module_param(vc_i2c_override, bool, 0644); +MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral."); -From 818ef1b85726c207fc5badb49ff70f8dab69bbe4 Mon Sep 17 00:00:00 2001 +From 3300c91b0c9326ebf9df9d41ac2c76b591f0f5ec Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 28 Jan 2015 17:57:23 +0000 -Subject: [PATCH 98/99] bcm2709: Also accept the 2708 machine ID +Subject: [PATCH 098/109] bcm2709: Also accept the 2708 machine ID --- arch/arm/mach-bcm2709/bcm2709.c | 13 +++++++++++++ @@ -137736,10 +137734,10 @@ index f009aeb..7e3affd 100644 module_param(serial, uint, 0644); module_param(uart_clock, uint, 0644); -From aa089b55d3805c84274dade0fcf9429d1b2de5d9 Mon Sep 17 00:00:00 2001 +From d8dad82d1b5b9cf96a49858abd0be7d85cfab875 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 2 Feb 2015 12:45:07 +0000 -Subject: [PATCH 99/99] BCM2709_DT: Fix bad merge +Subject: [PATCH 099/109] BCM2709_DT: Fix bad merge --- arch/arm/boot/dts/Makefile | 25 +++++++++++++------------ @@ -137781,3 +137779,664 @@ index 605ed38..8f76444 100644 dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb + +From e84183b60a54546a63387d2f179f02348e85cd19 Mon Sep 17 00:00:00 2001 +From: Daniel Matuschek +Date: Tue, 3 Feb 2015 07:15:19 +0100 +Subject: [PATCH 100/109] HiFiBerry Amp: fix device-tree problems + +Some code to load the driver based on device-tree-overlays was missing. This is added by this patch. +--- + sound/soc/bcm/hifiberry_amp.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/sound/soc/bcm/hifiberry_amp.c b/sound/soc/bcm/hifiberry_amp.c +index 1e87ee0..5903915 100644 +--- a/sound/soc/bcm/hifiberry_amp.c ++++ b/sound/soc/bcm/hifiberry_amp.c +@@ -65,6 +65,12 @@ static struct snd_soc_card snd_rpi_hifiberry_amp = { + .num_links = ARRAY_SIZE(snd_rpi_hifiberry_amp_dai), + }; + ++static const struct of_device_id snd_rpi_hifiberry_amp_of_match[] = { ++ { .compatible = "hifiberry,hifiberry-amp", }, ++ {}, ++}; ++MODULE_DEVICE_TABLE(of, snd_rpi_hifiberry_amp_of_match); ++ + + static int snd_rpi_hifiberry_amp_probe(struct platform_device *pdev) + { +@@ -72,6 +78,20 @@ static int snd_rpi_hifiberry_amp_probe(struct platform_device *pdev) + + snd_rpi_hifiberry_amp.dev = &pdev->dev; + ++ if (pdev->dev.of_node) { ++ struct device_node *i2s_node; ++ struct snd_soc_dai_link *dai = &snd_rpi_hifiberry_amp_dai[0]; ++ i2s_node = of_parse_phandle(pdev->dev.of_node, ++ "i2s-controller", 0); ++ ++ if (i2s_node) { ++ dai->cpu_dai_name = NULL; ++ dai->cpu_of_node = i2s_node; ++ dai->platform_name = NULL; ++ dai->platform_of_node = i2s_node; ++ } ++ } ++ + ret = snd_soc_register_card(&snd_rpi_hifiberry_amp); + + if (ret != 0) { +@@ -92,6 +112,7 @@ static struct platform_driver snd_rpi_hifiberry_amp_driver = { + .driver = { + .name = "snd-hifiberry-amp", + .owner = THIS_MODULE, ++ .of_match_table = snd_rpi_hifiberry_amp_of_match, + }, + .probe = snd_rpi_hifiberry_amp_probe, + .remove = snd_rpi_hifiberry_amp_remove, + +From 312667e42468e919564cbf4504c812ef2d261528 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 3 Feb 2015 11:41:38 +0000 +Subject: [PATCH 101/109] BCM270x_DT: Add i2c0_baudrate and i2c1_baudrate + parameters + +--- + arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 2 ++ + arch/arm/boot/dts/bcm2708-rpi-b.dts | 2 ++ + arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 2 ++ + 3 files changed, 6 insertions(+) + +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +index 95f03ba..6b9512b 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +@@ -93,6 +93,8 @@ + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; ++ i2c0_baudrate = <&i2c0>,"clock-frequency:0"; ++ i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts +index 0631f45..b8520b55 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts +@@ -93,6 +93,8 @@ + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; ++ i2c0_baudrate = <&i2c0>,"clock-frequency:0"; ++ i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; +diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +index 0cdff31..63d3da4 100644 +--- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts ++++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +@@ -93,6 +93,8 @@ + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; ++ i2c0_baudrate = <&i2c0>,"clock-frequency:0"; ++ i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + +From 401868bbe7a025663c18ca21b72682ed2b9f95e1 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 4 Feb 2015 10:02:24 +0000 +Subject: [PATCH 102/109] pinctrl-bcm2835: bcm2835_gpio_direction_output must + set the value + +--- + drivers/pinctrl/pinctrl-bcm2835.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/drivers/pinctrl/pinctrl-bcm2835.c b/drivers/pinctrl/pinctrl-bcm2835.c +index 962e180..42a4fd5 100644 +--- a/drivers/pinctrl/pinctrl-bcm2835.c ++++ b/drivers/pinctrl/pinctrl-bcm2835.c +@@ -355,7 +355,14 @@ static int bcm2835_gpio_get(struct gpio_chip *chip, unsigned offset) + static int bcm2835_gpio_direction_output(struct gpio_chip *chip, + unsigned offset, int value) + { +- return pinctrl_gpio_direction_output(chip->base + offset); ++ struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev); ++ int ret; ++ ++ ret = pinctrl_gpio_direction_output(chip->base + offset); ++ if (ret >= 0) ++ bcm2835_gpio_set_bit(pc, value ? GPSET0 : GPCLR0, offset); ++ ++ return ret; + } + + static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value) + +From 8329e96d6a2493fdecd8e63efe51a5b97faedc99 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 4 Feb 2015 12:59:36 +0000 +Subject: [PATCH 103/109] w1-gpio: Sort out the pullup/parasitic power tangle + +--- + arch/arm/boot/dts/w1-gpio-overlay.dts | 4 +++- + arch/arm/boot/dts/w1-gpio-pullup-overlay.dts | 6 +++-- + drivers/w1/masters/w1-gpio.c | 36 ++++++++++++++++++---------- + include/linux/w1-gpio.h | 1 + + 4 files changed, 32 insertions(+), 15 deletions(-) + +diff --git a/arch/arm/boot/dts/w1-gpio-overlay.dts b/arch/arm/boot/dts/w1-gpio-overlay.dts +index b2c5ee2..29a3b48 100644 +--- a/arch/arm/boot/dts/w1-gpio-overlay.dts ++++ b/arch/arm/boot/dts/w1-gpio-overlay.dts +@@ -1,4 +1,4 @@ +-// Definitions for lirc-rpi module ++// Definitions for w1-gpio module (without external pullup) + /dts-v1/; + /plugin/; + +@@ -14,6 +14,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&w1_pins>; + gpios = <&gpio 4 0>; ++ rpi,parasitic-power = <0>; + status = "okay"; + }; + }; +@@ -33,5 +34,6 @@ + __overrides__ { + gpiopin = <&w1>,"gpios:4", + <&w1_pins>,"brcm,pins:0"; ++ pullup = <&w1>,"rpi,parasitic-power:0"; + }; + }; +diff --git a/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts b/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts +index b3e97c2..66a98f6 100644 +--- a/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts ++++ b/arch/arm/boot/dts/w1-gpio-pullup-overlay.dts +@@ -1,4 +1,4 @@ +-// Definitions for lirc-rpi module ++// Definitions for w1-gpio module (with external pullup) + /dts-v1/; + /plugin/; + +@@ -14,6 +14,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&w1_pins>; + gpios = <&gpio 4 0>, <&gpio 5 1>; ++ rpi,parasitic-power = <0>; + status = "okay"; + }; + }; +@@ -33,7 +34,8 @@ + __overrides__ { + gpiopin = <&w1>,"gpios:4", + <&w1_pins>,"brcm,pins:0"; +- pullup = <&w1>,"gpios:16", ++ extpullup = <&w1>,"gpios:16", + <&w1_pins>,"brcm,pins:4"; ++ pullup = <&w1>,"rpi,parasitic-power:0"; + }; + }; +diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c +index 61be2cd..54c0313 100644 +--- a/drivers/w1/masters/w1-gpio.c ++++ b/drivers/w1/masters/w1-gpio.c +@@ -23,10 +23,14 @@ + #include "../w1.h" + #include "../w1_int.h" + +-static int w1_gpio_pullup = -1; +-static int w1_gpio_pullup_orig = -1; ++static int w1_gpio_pullup = 0; ++static int w1_gpio_pullup_orig = 0; + module_param_named(pullup, w1_gpio_pullup, int, 0); +-MODULE_PARM_DESC(pullup, "GPIO pin pullup number"); ++MODULE_PARM_DESC(pullup, "Enable parasitic power (power on data) mode"); ++static int w1_gpio_pullup_pin = -1; ++static int w1_gpio_pullup_pin_orig = -1; ++module_param_named(extpullup, w1_gpio_pullup_pin, int, 0); ++MODULE_PARM_DESC(extpullup, "GPIO external pullup pin number"); + static int w1_gpio_pin = -1; + static int w1_gpio_pin_orig = -1; + module_param_named(gpiopin, w1_gpio_pin, int, 0); +@@ -99,6 +103,7 @@ static int w1_gpio_probe_dt(struct platform_device *pdev) + struct w1_gpio_platform_data *pdata = dev_get_platdata(&pdev->dev); + struct device_node *np = pdev->dev.of_node; + int gpio; ++ u32 value; + + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) +@@ -107,6 +112,9 @@ static int w1_gpio_probe_dt(struct platform_device *pdev) + if (of_get_property(np, "linux,open-drain", NULL)) + pdata->is_open_drain = 1; + ++ if (of_property_read_u32(np, "rpi,parasitic-power", &value) == 0) ++ pdata->parasitic_power = (value != 0); ++ + gpio = of_get_gpio(np, 0); + if (gpio < 0) { + if (gpio != -EPROBE_DEFER) +@@ -122,7 +130,7 @@ static int w1_gpio_probe_dt(struct platform_device *pdev) + if (gpio == -EPROBE_DEFER) + return gpio; + /* ignore other errors as the pullup gpio is optional */ +- pdata->ext_pullup_enable_pin = gpio; ++ pdata->ext_pullup_enable_pin = (gpio >= 0) ? gpio : -1; + + pdev->dev.platform_data = pdata; + +@@ -158,17 +166,20 @@ static int w1_gpio_probe(struct platform_device *pdev) + } + + w1_gpio_pin_orig = pdata->pin; +- w1_gpio_pullup_orig = pdata->ext_pullup_enable_pin; ++ w1_gpio_pullup_pin_orig = pdata->ext_pullup_enable_pin; ++ w1_gpio_pullup_orig = pdata->parasitic_power; + + if(gpio_is_valid(w1_gpio_pin)) { + pdata->pin = w1_gpio_pin; + pdata->ext_pullup_enable_pin = -1; ++ pdata->parasitic_power = -1; + } +- if(gpio_is_valid(w1_gpio_pullup)) { +- pdata->ext_pullup_enable_pin = w1_gpio_pullup; ++ pdata->parasitic_power |= w1_gpio_pullup; ++ if(gpio_is_valid(w1_gpio_pullup_pin)) { ++ pdata->ext_pullup_enable_pin = w1_gpio_pullup_pin; + } + +- dev_info(&pdev->dev, "gpio pin %d, gpio pullup pin %d\n", pdata->pin, pdata->ext_pullup_enable_pin); ++ dev_info(&pdev->dev, "gpio pin %d, external pullup pin %d, parasitic power %d\n", pdata->pin, pdata->ext_pullup_enable_pin, pdata->parasitic_power); + + err = devm_gpio_request(&pdev->dev, pdata->pin, "w1"); + if (err) { +@@ -199,10 +210,10 @@ static int w1_gpio_probe(struct platform_device *pdev) + master->set_pullup = w1_gpio_set_pullup; + } + +- if (gpio_is_valid(w1_gpio_pullup)) { ++ if (pdata->parasitic_power) { + if (pdata->is_open_drain) +- printk(KERN_ERR "w1-gpio 'pullup' option " +- "doesn't work with open drain GPIO\n"); ++ printk(KERN_ERR "w1-gpio 'pullup'(parasitic power) " ++ "option doesn't work with open drain GPIO\n"); + else + master->bitbang_pullup = w1_gpio_bitbang_pullup; + } +@@ -238,7 +249,8 @@ static int w1_gpio_remove(struct platform_device *pdev) + w1_remove_master_device(master); + + pdata->pin = w1_gpio_pin_orig; +- pdata->ext_pullup_enable_pin = w1_gpio_pullup_orig; ++ pdata->ext_pullup_enable_pin = w1_gpio_pullup_pin_orig; ++ pdata->parasitic_power = w1_gpio_pullup_orig; + + return 0; + } +diff --git a/include/linux/w1-gpio.h b/include/linux/w1-gpio.h +index d58594a..feae942 100644 +--- a/include/linux/w1-gpio.h ++++ b/include/linux/w1-gpio.h +@@ -18,6 +18,7 @@ + struct w1_gpio_platform_data { + unsigned int pin; + unsigned int is_open_drain:1; ++ unsigned int parasitic_power:1; + void (*enable_external_pullup)(int enable); + unsigned int ext_pullup_enable_pin; + unsigned int pullup_duration; + +From 8c477685be4c7e680cdd629df069d5d0d71243d7 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Wed, 4 Feb 2015 20:35:02 +0000 +Subject: [PATCH 104/109] config: Add USBIP + +--- + arch/arm/configs/bcm2709_defconfig | 4 ++++ + arch/arm/configs/bcmrpi_defconfig | 3 +++ + 2 files changed, 7 insertions(+) + +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index 70b175c..b5bf4cb 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -722,6 +722,7 @@ CONFIG_DVB_USB_GL861=m + CONFIG_DVB_USB_LME2510=m + CONFIG_DVB_USB_MXL111SF=m + CONFIG_DVB_USB_RTL28XXU=m ++CONFIG_DVB_USB_DVBSKY=m + CONFIG_SMS_USB_DRV=m + CONFIG_DVB_B2C2_FLEXCOP_USB=m + CONFIG_DVB_AS102=m +@@ -864,6 +865,9 @@ CONFIG_USB_STORAGE_ENE_UB6250=m + CONFIG_USB_UAS=m + CONFIG_USB_MDC800=m + CONFIG_USB_MICROTEK=m ++CONFIG_USBIP_CORE=m ++CONFIG_USBIP_VHCI_HCD=m ++CONFIG_USBIP_HOST=m + CONFIG_USB_SERIAL=m + CONFIG_USB_SERIAL_GENERIC=y + CONFIG_USB_SERIAL_AIRCABLE=m +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 0453a38..81c4387 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -858,6 +858,9 @@ CONFIG_USB_STORAGE_ENE_UB6250=m + CONFIG_USB_UAS=m + CONFIG_USB_MDC800=m + CONFIG_USB_MICROTEK=m ++CONFIG_USBIP_CORE=m ++CONFIG_USBIP_VHCI_HCD=m ++CONFIG_USBIP_HOST=m + CONFIG_USB_SERIAL=m + CONFIG_USB_SERIAL_GENERIC=y + CONFIG_USB_SERIAL_AIRCABLE=m + +From 7f68dfb34b54489c5140b66054d7339ae0a49936 Mon Sep 17 00:00:00 2001 +From: P33M +Date: Wed, 4 Feb 2015 12:16:50 +0000 +Subject: [PATCH 105/109] dwc_otg: fixup read-modify-write in critical paths + +Be more careful about read-modify-write on registers that the FIQ +also touches. +--- + drivers/usb/host/dwc_otg/dwc_otg_hcd.c | 13 +++++++++--- + drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 30 +++++++++++++++++++++++++--- + drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c | 22 ++++++++++++++++---- + 3 files changed, 55 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 ac70f1d..1782d65 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +@@ -2447,9 +2447,16 @@ void dwc_otg_hcd_queue_transactions(dwc_otg_hcd_t * hcd, + */ + gintmsk_data_t gintmsk = {.d32 = 0 }; + gintmsk.b.nptxfempty = 1; +- DWC_MODIFY_REG32(&hcd->core_if-> +- core_global_regs->gintmsk, gintmsk.d32, +- 0); ++ ++ if (fiq_enable) { ++ local_fiq_disable(); ++ fiq_fsm_spin_lock(&hcd->fiq_state->lock); ++ DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, gintmsk.d32, 0); ++ fiq_fsm_spin_unlock(&hcd->fiq_state->lock); ++ local_fiq_enable(); ++ } else { ++ DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, gintmsk.d32, 0); ++ } + } + } + } +diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +index ee35196..6266661 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +@@ -165,7 +165,15 @@ int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd) + + gintmsk_data_t gintmsk = { .b.portintr = 1}; + retval |= dwc_otg_hcd_handle_port_intr(dwc_otg_hcd); +- DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, 0, gintmsk.d32); ++ if (fiq_enable) { ++ local_fiq_disable(); ++ fiq_fsm_spin_lock(&dwc_otg_hcd->fiq_state->lock); ++ DWC_MODIFY_REG32(&dwc_otg_hcd->core_if->core_global_regs->gintmsk, 0, gintmsk.d32); ++ fiq_fsm_spin_unlock(&dwc_otg_hcd->fiq_state->lock); ++ local_fiq_enable(); ++ } else { ++ DWC_MODIFY_REG32(&dwc_otg_hcd->core_if->core_global_regs->gintmsk, 0, gintmsk.d32); ++ } + } + if (gintsts.b.hcintr) { + retval |= dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd); +@@ -1069,7 +1077,15 @@ static void halt_channel(dwc_otg_hcd_t * hcd, + * be processed. + */ + gintmsk.b.nptxfempty = 1; +- DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); ++ if (fiq_enable) { ++ local_fiq_disable(); ++ fiq_fsm_spin_lock(&hcd->fiq_state->lock); ++ DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); ++ fiq_fsm_spin_unlock(&hcd->fiq_state->lock); ++ local_fiq_enable(); ++ } else { ++ DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); ++ } + } else { + /* + * Move the QH from the periodic queued schedule to +@@ -1086,7 +1102,15 @@ static void halt_channel(dwc_otg_hcd_t * hcd, + * processed. + */ + gintmsk.b.ptxfempty = 1; +- DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); ++ if (fiq_enable) { ++ local_fiq_disable(); ++ fiq_fsm_spin_lock(&hcd->fiq_state->lock); ++ DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); ++ fiq_fsm_spin_unlock(&hcd->fiq_state->lock); ++ local_fiq_enable(); ++ } else { ++ DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); ++ } + } + } + } +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 17d3030..acd0dd7 100644 +--- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c ++++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c +@@ -683,8 +683,15 @@ int dwc_otg_hcd_qh_add(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) + status = schedule_periodic(hcd, qh); + if ( !hcd->periodic_qh_count ) { + intr_mask.b.sofintr = 1; +- DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, +- intr_mask.d32, intr_mask.d32); ++ if (fiq_enable) { ++ local_fiq_disable(); ++ fiq_fsm_spin_lock(&hcd->fiq_state->lock); ++ DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, intr_mask.d32, intr_mask.d32); ++ fiq_fsm_spin_unlock(&hcd->fiq_state->lock); ++ local_fiq_enable(); ++ } else { ++ DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, intr_mask.d32, intr_mask.d32); ++ } + } + hcd->periodic_qh_count++; + } +@@ -745,8 +752,15 @@ void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) + hcd->periodic_qh_count--; + if( !hcd->periodic_qh_count && !fiq_fsm_enable ) { + intr_mask.b.sofintr = 1; +- DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, +- intr_mask.d32, 0); ++ if (fiq_enable) { ++ local_fiq_disable(); ++ fiq_fsm_spin_lock(&hcd->fiq_state->lock); ++ DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, intr_mask.d32, 0); ++ fiq_fsm_spin_unlock(&hcd->fiq_state->lock); ++ local_fiq_enable(); ++ } else { ++ DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, intr_mask.d32, 0); ++ } + } + } + } + +From 2dc96ff2ddd4bb754f39034ef0e0b6ed569c7bc7 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Thu, 5 Feb 2015 14:05:35 +0000 +Subject: [PATCH 106/109] BCM2709_DT: Set the "always-on" flag for the timer to + enable high res mode + +--- + arch/arm/boot/dts/bcm2709.dtsi | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm/boot/dts/bcm2709.dtsi b/arch/arm/boot/dts/bcm2709.dtsi +index c7e975c..220866e 100644 +--- a/arch/arm/boot/dts/bcm2709.dtsi ++++ b/arch/arm/boot/dts/bcm2709.dtsi +@@ -115,6 +115,7 @@ + <3 1>, // PHYS_NONSECURE_PPI + <3 3>, // VIRT_PPI + <3 2>; // HYP_PPI ++ always-on; + }; + + cpus: cpus { + +From fbd62b89136d8f1427d4ba558034e07d81ea5a08 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Thu, 5 Feb 2015 16:01:44 +0000 +Subject: [PATCH 107/109] i2c_bcm2708: Fix clock reference counting + +--- + drivers/i2c/busses/i2c-bcm2708.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c +index 526129b..fda59ba 100644 +--- a/drivers/i2c/busses/i2c-bcm2708.c ++++ b/drivers/i2c/busses/i2c-bcm2708.c +@@ -337,11 +337,17 @@ static int bcm2708_i2c_probe(struct platform_device *pdev) + return PTR_ERR(clk); + } + ++ err = clk_prepare_enable(clk); ++ if (err) { ++ dev_err(&pdev->dev, "could not enable clk: %d\n", err); ++ goto out_clk_put; ++ } ++ + bcm2708_i2c_init_pinmode(pdev->id); + + bi = kzalloc(sizeof(*bi), GFP_KERNEL); + if (!bi) +- goto out_clk_put; ++ goto out_clk_disable; + + platform_set_drvdata(pdev, bi); + +@@ -412,6 +418,8 @@ static int bcm2708_i2c_probe(struct platform_device *pdev) + iounmap(bi->base); + out_free_bi: + kfree(bi); ++out_clk_disable: ++ clk_disable_unprepare(clk); + out_clk_put: + clk_put(clk); + return err; +@@ -426,7 +434,7 @@ static int bcm2708_i2c_remove(struct platform_device *pdev) + i2c_del_adapter(&bi->adapter); + free_irq(bi->irq, bi); + iounmap(bi->base); +- clk_disable(bi->clk); ++ clk_disable_unprepare(bi->clk); + clk_put(bi->clk); + kfree(bi); + + +From f137a3e3ee843a3bcd0066b423ae3b594511110f Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Fri, 6 Feb 2015 09:06:55 +0000 +Subject: [PATCH 108/109] BCM270x_DT: Rename the activity LED back to the + prosaic "led0" + +--- + arch/arm/boot/dts/bcm2708.dtsi | 2 +- + arch/arm/boot/dts/bcm2709.dtsi | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi +index d879316..af6b1d9 100644 +--- a/arch/arm/boot/dts/bcm2708.dtsi ++++ b/arch/arm/boot/dts/bcm2708.dtsi +@@ -81,7 +81,7 @@ + compatible = "gpio-leds"; + + act_led: act { +- label = "ACT"; ++ label = "led0"; + linux,default-trigger = "mmc0"; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2709.dtsi b/arch/arm/boot/dts/bcm2709.dtsi +index 220866e..fee2053 100644 +--- a/arch/arm/boot/dts/bcm2709.dtsi ++++ b/arch/arm/boot/dts/bcm2709.dtsi +@@ -81,7 +81,7 @@ + compatible = "gpio-leds"; + + act_led: act { +- label = "ACT"; ++ label = "led0"; + linux,default-trigger = "mmc0"; + }; + }; + +From 5a37af9c13a8f3d878c8038061c23b24156ae079 Mon Sep 17 00:00:00 2001 +From: Byron Bradley +Date: Fri, 6 Feb 2015 14:19:41 +0000 +Subject: [PATCH 109/109] Add device-tree overlay for pcf2127 + +Signed-off-by: Byron Bradley +--- + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/pcf2127-rtc-overlay.dts | 22 ++++++++++++++++++++++ + 2 files changed, 23 insertions(+) + create mode 100644 arch/arm/boot/dts/pcf2127-rtc-overlay.dts + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index 8f76444..56830ef 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -72,6 +72,7 @@ dtb-$(RPI_DT_OVERLAYS) += hifiberry-amp-overlay.dtb + dtb-$(RPI_DT_OVERLAYS) += iqaudio-dac-overlay.dtb + dtb-$(RPI_DT_OVERLAYS) += iqaudio-dacplus-overlay.dtb + dtb-$(RPI_DT_OVERLAYS) += lirc-rpi-overlay.dtb ++dtb-$(RPI_DT_OVERLAYS) += pcf2127-rtc-overlay.dtb + dtb-$(RPI_DT_OVERLAYS) += pcf8523-rtc-overlay.dtb + dtb-$(RPI_DT_OVERLAYS) += pps-gpio-overlay.dtb + dtb-$(RPI_DT_OVERLAYS) += w1-gpio-overlay.dtb +diff --git a/arch/arm/boot/dts/pcf2127-rtc-overlay.dts b/arch/arm/boot/dts/pcf2127-rtc-overlay.dts +new file mode 100644 +index 0000000..01fc81d +--- /dev/null ++++ b/arch/arm/boot/dts/pcf2127-rtc-overlay.dts +@@ -0,0 +1,22 @@ ++// Definitions for PCF2127 Real Time Clock ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&i2c1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ pcf2127@51 { ++ compatible = "nxp,pcf2127"; ++ reg = <0x51>; ++ status = "okay"; ++ }; ++ }; ++ }; ++};