From f5919b65d4c671fd5083838c7a445f319f9a13c8 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Sat, 10 Nov 2018 13:03:18 +0200 Subject: brcm2708: add kernel 4.14 support Patch generation process: - rebase rpi/rpi-4.14.y on v4.14.89 from linux-stable - git format-patch v4.14.89 Patches skipped during rebase: - lan78xx: Read MAC address from DT if present - lan78xx: Enable LEDs and auto-negotiation - Revert "softirq: Let ksoftirqd do its job" - sc16is7xx: Fix for multi-channel stall - lan78xx: Ignore DT MAC address if already valid - lan78xx: Simple patch to prevent some crashes - tcp_write_queue_purge clears all the SKBs in the write queue - Revert "lan78xx: Simple patch to prevent some crashes" - lan78xx: Connect phy early - Arm: mm: ftrace: Only set text back to ro after kernel has been marked ro - Revert "Revert "softirq: Let ksoftirqd do its job"" - ASoC: cs4265: SOC_SINGLE register value error fix - Revert "ASoC: cs4265: SOC_SINGLE register value error fix" - Revert "net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends" - Revert "Revert "net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends"" Patches dropped after rebase: - net: Add non-mainline source for rtl8192cu wlan - net: Fix rtl8192cu build errors on other platforms - brcm: adds support for BCM43341 wifi - brcmfmac: Mute expected startup 'errors' - ARM64: Fix build break for RTL8187/RTL8192CU wifi - ARM64: Enable RTL8187/RTL8192CU wifi in build config - This is the driver for Sony CXD2880 DVB-T2/T tuner + demodulator - brcmfmac: add CLM download support - brcmfmac: request_firmware_direct is quieter - Sets the BCDC priority to constant 0 - brcmfmac: Disable ARP offloading when promiscuous - brcmfmac: Avoid possible out-of-bounds read - brcmfmac: Delete redundant length check - net: rtl8192cu: Normalize indentation - net: rtl8192cu: Fix implicit fallthrough warnings - Revert "Sets the BCDC priority to constant 0" - media: cxd2880: Bump to match 4.18.y version - media: cxd2880-spi: Bump to match 4.18.y version - Revert "mm: alloc_contig: re-allow CMA to compact FS pages" - Revert "Revert "mm: alloc_contig: re-allow CMA to compact FS pages"" - cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 with MEDIA_SUBDRV_AUTOSELECT - 950-0421-HID-hid-bigbenff-driver-for-BigBen-Interactive-PS3OF.patch - 950-0453-Add-hid-bigbenff-to-list-of-have_special_driver-for-.patch Make I2C built-in instead of modular as in upstream defconfig; also the easiest way to get MFD_ARIZONA enabled, which is required by kmod-sound-soc-rpi-cirrus. Add missing compatible strings from 4.9/960-add-rasbperrypi-compatible.patch, using upstream names for compute modules. Add extra patch to enable the LEDs on lan78xx. Compile-tested: bcm2708, bcm2709, bcm2710 (with CONFIG_ALL_KMODS=y) Runtime-tested: bcm2708, bcm2710 Signed-off-by: Stijn Tintel --- ...4_services-no-need-to-check-debugfs-retur.patch | 217 +++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 target/linux/brcm2708/patches-4.14/950-0381-staging-vc04_services-no-need-to-check-debugfs-retur.patch (limited to 'target/linux/brcm2708/patches-4.14/950-0381-staging-vc04_services-no-need-to-check-debugfs-retur.patch') diff --git a/target/linux/brcm2708/patches-4.14/950-0381-staging-vc04_services-no-need-to-check-debugfs-retur.patch b/target/linux/brcm2708/patches-4.14/950-0381-staging-vc04_services-no-need-to-check-debugfs-retur.patch new file mode 100644 index 0000000000..1a8cfd1241 --- /dev/null +++ b/target/linux/brcm2708/patches-4.14/950-0381-staging-vc04_services-no-need-to-check-debugfs-retur.patch @@ -0,0 +1,217 @@ +From 5e4d56448e08a7f4bf39e1b3f4c43916ff74d337 Mon Sep 17 00:00:00 2001 +From: Greg Kroah-Hartman +Date: Fri, 1 Jun 2018 13:09:59 +0200 +Subject: [PATCH 381/454] staging: vc04_services: no need to check debugfs + return values + +commit 0723103f8ba15a019bbcaf6f130d73d05337332f upstream + +When calling debugfs functions, there is no need to ever check the +return value. The function can work or not, but the code logic should +never do something different based on this. + +Clean up the vchiq_arm code by not caring about the value of debugfs +calls. This ends up removing a number of lines of code that are not +needed. + +Cc: Stefan Wahren +Cc: Kees Cook +Cc: Dan Carpenter +Cc: Arnd Bergmann +Cc: Keerthi Reddy +Cc: linux-rpi-kernel@lists.infradead.org +Cc: linux-arm-kernel@lists.infradead.org +Reviewed-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman +--- + .../interface/vchiq_arm/vchiq_arm.c | 8 +- + .../interface/vchiq_arm/vchiq_debugfs.c | 73 +++---------------- + .../interface/vchiq_arm/vchiq_debugfs.h | 4 +- + 3 files changed, 15 insertions(+), 70 deletions(-) + +--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c ++++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +@@ -1753,7 +1753,7 @@ vchiq_open(struct inode *inode, struct f + instance->state = state; + instance->pid = current->tgid; + +- (void)vchiq_debugfs_add_instance(instance); ++ vchiq_debugfs_add_instance(instance); + + sema_init(&instance->insert_event, 0); + sema_init(&instance->remove_event, 0); +@@ -3437,9 +3437,7 @@ static int vchiq_probe(struct platform_d + goto failed_device_create; + + /* create debugfs entries */ +- err = vchiq_debugfs_init(); +- if (err != 0) +- goto failed_debugfs_init; ++ vchiq_debugfs_init(); + + vchiq_log_info(vchiq_arm_log_level, + "vchiq: initialised - version %d (min %d), device %d.%d", +@@ -3448,8 +3446,6 @@ static int vchiq_probe(struct platform_d + + return 0; + +-failed_debugfs_init: +- device_destroy(vchiq_class, vchiq_devid); + failed_device_create: + class_destroy(vchiq_class); + failed_class_create: +--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c ++++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.c +@@ -160,15 +160,12 @@ static const struct file_operations debu + }; + + /* create an entry under /vchiq/log for each log category */ +-static int vchiq_debugfs_create_log_entries(struct dentry *top) ++static void vchiq_debugfs_create_log_entries(struct dentry *top) + { + struct dentry *dir; + size_t i; +- int ret = 0; + + dir = debugfs_create_dir("log", vchiq_debugfs_top()); +- if (!dir) +- return -ENOMEM; + debugfs_info.log_categories = dir; + + for (i = 0; i < n_log_entries; i++) { +@@ -179,14 +176,8 @@ static int vchiq_debugfs_create_log_entr + debugfs_info.log_categories, + levp, + &debugfs_log_fops); +- if (!dir) { +- ret = -ENOMEM; +- break; +- } +- + vchiq_debugfs_log_entries[i].dir = dir; + } +- return ret; + } + + static int debugfs_usecount_show(struct seq_file *f, void *offset) +@@ -270,43 +261,22 @@ static const struct file_operations debu + }; + + /* add an instance (process) to the debugfs entries */ +-int vchiq_debugfs_add_instance(VCHIQ_INSTANCE_T instance) ++void vchiq_debugfs_add_instance(VCHIQ_INSTANCE_T instance) + { + char pidstr[16]; +- struct dentry *top, *use_count, *trace; ++ struct dentry *top; + struct dentry *clients = vchiq_clients_top(); + + snprintf(pidstr, sizeof(pidstr), "%d", + vchiq_instance_get_pid(instance)); + + top = debugfs_create_dir(pidstr, clients); +- if (!top) +- goto fail_top; + +- use_count = debugfs_create_file("use_count", +- 0444, top, +- instance, +- &debugfs_usecount_fops); +- if (!use_count) +- goto fail_use_count; +- +- trace = debugfs_create_file("trace", +- 0644, top, +- instance, +- &debugfs_trace_fops); +- if (!trace) +- goto fail_trace; ++ debugfs_create_file("use_count", 0444, top, instance, ++ &debugfs_usecount_fops); ++ debugfs_create_file("trace", 0644, top, instance, &debugfs_trace_fops); + + vchiq_instance_get_debugfs_node(instance)->dentry = top; +- +- return 0; +- +-fail_trace: +- debugfs_remove(use_count); +-fail_use_count: +- debugfs_remove(top); +-fail_top: +- return -ENOMEM; + } + + void vchiq_debugfs_remove_instance(VCHIQ_INSTANCE_T instance) +@@ -316,32 +286,13 @@ void vchiq_debugfs_remove_instance(VCHIQ + debugfs_remove_recursive(node->dentry); + } + +- +-int vchiq_debugfs_init(void) ++void vchiq_debugfs_init(void) + { +- BUG_ON(debugfs_info.vchiq_cfg_dir != NULL); +- + debugfs_info.vchiq_cfg_dir = debugfs_create_dir("vchiq", NULL); +- if (debugfs_info.vchiq_cfg_dir == NULL) +- goto fail; +- + debugfs_info.clients = debugfs_create_dir("clients", + vchiq_debugfs_top()); +- if (!debugfs_info.clients) +- goto fail; + +- if (vchiq_debugfs_create_log_entries(vchiq_debugfs_top()) != 0) +- goto fail; +- +- return 0; +- +-fail: +- vchiq_debugfs_deinit(); +- vchiq_log_error(vchiq_arm_log_level, +- "%s: failed to create debugfs directory", +- __func__); +- +- return -ENOMEM; ++ vchiq_debugfs_create_log_entries(vchiq_debugfs_top()); + } + + /* remove all the debugfs entries */ +@@ -363,18 +314,16 @@ static struct dentry *vchiq_debugfs_top( + + #else /* CONFIG_DEBUG_FS */ + +-int vchiq_debugfs_init(void) ++void vchiq_debugfs_init(void) + { +- return 0; + } + + void vchiq_debugfs_deinit(void) + { + } + +-int vchiq_debugfs_add_instance(VCHIQ_INSTANCE_T instance) ++void vchiq_debugfs_add_instance(VCHIQ_INSTANCE_T instance) + { +- return 0; + } + + void vchiq_debugfs_remove_instance(VCHIQ_INSTANCE_T instance) +--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h ++++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_debugfs.h +@@ -40,11 +40,11 @@ typedef struct vchiq_debugfs_node_struct + struct dentry *dentry; + } VCHIQ_DEBUGFS_NODE_T; + +-int vchiq_debugfs_init(void); ++void vchiq_debugfs_init(void); + + void vchiq_debugfs_deinit(void); + +-int vchiq_debugfs_add_instance(VCHIQ_INSTANCE_T instance); ++void vchiq_debugfs_add_instance(VCHIQ_INSTANCE_T instance); + + void vchiq_debugfs_remove_instance(VCHIQ_INSTANCE_T instance); + -- cgit v1.2.3