|
@@ -0,0 +1,203 @@
|
|
|
|
+From 51559154375fff4a94bbbc249fdd9248a80827b3 Mon Sep 17 00:00:00 2001
|
|
|
|
+From: Jonas Gorski <[email protected]>
|
|
|
|
+Date: Tue, 18 Dec 2018 10:19:02 +0100
|
|
|
|
+Subject: [PATCH] MIPS: BCM63XX: drop unused and broken DSP platform device
|
|
|
|
+
|
|
|
|
+Trying to register the DSP platform device results in a null pointer
|
|
|
|
+access:
|
|
|
|
+
|
|
|
|
+[ 0.124184] CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 804e305c, ra == 804e6f20
|
|
|
|
+[ 0.135208] Oops[#1]:
|
|
|
|
+[ 0.137514] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.87
|
|
|
|
+...
|
|
|
|
+[ 0.197117] epc : 804e305c bcm63xx_dsp_register+0x80/0xa4
|
|
|
|
+[ 0.202838] ra : 804e6f20 board_register_devices+0x258/0x390
|
|
|
|
+...
|
|
|
|
+
|
|
|
|
+This happens because it tries to copy the passed platform data over the
|
|
|
|
+platform_device's unpopulated platform_data.
|
|
|
|
+
|
|
|
|
+Since this code has been broken since its submission, no driver was ever
|
|
|
|
+submitted for it, and apparently nobody was using it, just remove it
|
|
|
|
+instead of trying to fix it.
|
|
|
|
+
|
|
|
|
+Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.")
|
|
|
|
+Signed-off-by: Jonas Gorski <[email protected]>
|
|
|
|
+---
|
|
|
|
+ arch/mips/bcm63xx/Makefile | 6 +--
|
|
|
|
+ arch/mips/bcm63xx/boards/board_bcm963xx.c | 20 --------
|
|
|
|
+ arch/mips/bcm63xx/dev-dsp.c | 56 ----------------------
|
|
|
|
+ .../include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h | 14 ------
|
|
|
|
+ .../mips/include/asm/mach-bcm63xx/board_bcm963xx.h | 5 --
|
|
|
|
+ 5 files changed, 3 insertions(+), 98 deletions(-)
|
|
|
|
+ delete mode 100644 arch/mips/bcm63xx/dev-dsp.c
|
|
|
|
+ delete mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
|
|
|
|
+
|
|
|
|
+--- a/arch/mips/bcm63xx/Makefile
|
|
|
|
++++ b/arch/mips/bcm63xx/Makefile
|
|
|
|
+@@ -1,8 +1,8 @@
|
|
|
|
+ # SPDX-License-Identifier: GPL-2.0
|
|
|
|
+ obj-y += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o reset.o \
|
|
|
|
+- setup.o timer.o dev-dsp.o dev-enet.o dev-flash.o \
|
|
|
|
+- dev-pcmcia.o dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o \
|
|
|
|
+- dev-wdt.o dev-usb-usbd.o
|
|
|
|
++ setup.o timer.o dev-enet.o dev-flash.o dev-pcmcia.o \
|
|
|
|
++ dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o dev-wdt.o \
|
|
|
|
++ dev-usb-usbd.o
|
|
|
|
+ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
|
|
|
|
+
|
|
|
|
+ obj-y += boards/
|
|
|
|
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
|
|
|
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
|
|
|
|
+@@ -23,7 +23,6 @@
|
|
|
|
+ #include <bcm63xx_nvram.h>
|
|
|
|
+ #include <bcm63xx_dev_pci.h>
|
|
|
|
+ #include <bcm63xx_dev_enet.h>
|
|
|
|
+-#include <bcm63xx_dev_dsp.h>
|
|
|
|
+ #include <bcm63xx_dev_flash.h>
|
|
|
|
+ #include <bcm63xx_dev_hsspi.h>
|
|
|
|
+ #include <bcm63xx_dev_pcmcia.h>
|
|
|
|
+@@ -289,14 +288,6 @@ static struct board_info __initdata boar
|
|
|
|
+ .has_pccard = 1,
|
|
|
|
+ .has_ehci0 = 1,
|
|
|
|
+
|
|
|
|
+- .has_dsp = 1,
|
|
|
|
+- .dsp = {
|
|
|
|
+- .gpio_rst = 6,
|
|
|
|
+- .gpio_int = 34,
|
|
|
|
+- .cs = 2,
|
|
|
|
+- .ext_irq = 2,
|
|
|
|
+- },
|
|
|
|
+-
|
|
|
|
+ .leds = {
|
|
|
|
+ {
|
|
|
|
+ .name = "adsl-fail",
|
|
|
|
+@@ -401,14 +392,6 @@ static struct board_info __initdata boar
|
|
|
|
+
|
|
|
|
+ .has_ohci0 = 1,
|
|
|
|
+
|
|
|
|
+- .has_dsp = 1,
|
|
|
|
+- .dsp = {
|
|
|
|
+- .gpio_rst = 6,
|
|
|
|
+- .gpio_int = 34,
|
|
|
|
+- .ext_irq = 2,
|
|
|
|
+- .cs = 2,
|
|
|
|
+- },
|
|
|
|
+-
|
|
|
|
+ .leds = {
|
|
|
|
+ {
|
|
|
|
+ .name = "adsl-fail",
|
|
|
|
+@@ -898,9 +881,6 @@ int __init board_register_devices(void)
|
|
|
|
+ if (board.has_usbd)
|
|
|
|
+ bcm63xx_usbd_register(&board.usbd);
|
|
|
|
+
|
|
|
|
+- if (board.has_dsp)
|
|
|
|
+- bcm63xx_dsp_register(&board.dsp);
|
|
|
|
+-
|
|
|
|
+ /* Generate MAC address for WLAN and register our SPROM,
|
|
|
|
+ * do this after registering enet devices
|
|
|
|
+ */
|
|
|
|
+--- a/arch/mips/bcm63xx/dev-dsp.c
|
|
|
|
++++ /dev/null
|
|
|
|
+@@ -1,56 +0,0 @@
|
|
|
|
+-/*
|
|
|
|
+- * Broadcom BCM63xx VoIP DSP registration
|
|
|
|
+- *
|
|
|
|
+- * This file is subject to the terms and conditions of the GNU General Public
|
|
|
|
+- * License. See the file "COPYING" in the main directory of this archive
|
|
|
|
+- * for more details.
|
|
|
|
+- *
|
|
|
|
+- * Copyright (C) 2009 Florian Fainelli <[email protected]>
|
|
|
|
+- */
|
|
|
|
+-
|
|
|
|
+-#include <linux/init.h>
|
|
|
|
+-#include <linux/kernel.h>
|
|
|
|
+-#include <linux/platform_device.h>
|
|
|
|
+-
|
|
|
|
+-#include <bcm63xx_cpu.h>
|
|
|
|
+-#include <bcm63xx_dev_dsp.h>
|
|
|
|
+-#include <bcm63xx_regs.h>
|
|
|
|
+-#include <bcm63xx_io.h>
|
|
|
|
+-
|
|
|
|
+-static struct resource voip_dsp_resources[] = {
|
|
|
|
+- {
|
|
|
|
+- .start = -1, /* filled at runtime */
|
|
|
|
+- .end = -1, /* filled at runtime */
|
|
|
|
+- .flags = IORESOURCE_MEM,
|
|
|
|
+- },
|
|
|
|
+- {
|
|
|
|
+- .start = -1, /* filled at runtime */
|
|
|
|
+- .flags = IORESOURCE_IRQ,
|
|
|
|
+- },
|
|
|
|
+-};
|
|
|
|
+-
|
|
|
|
+-static struct platform_device bcm63xx_voip_dsp_device = {
|
|
|
|
+- .name = "bcm63xx-voip-dsp",
|
|
|
|
+- .id = -1,
|
|
|
|
+- .num_resources = ARRAY_SIZE(voip_dsp_resources),
|
|
|
|
+- .resource = voip_dsp_resources,
|
|
|
|
+-};
|
|
|
|
+-
|
|
|
|
+-int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd)
|
|
|
|
+-{
|
|
|
|
+- struct bcm63xx_dsp_platform_data *dpd;
|
|
|
|
+- u32 val;
|
|
|
|
+-
|
|
|
|
+- /* Get the memory window */
|
|
|
|
+- val = bcm_mpi_readl(MPI_CSBASE_REG(pd->cs - 1));
|
|
|
|
+- val &= MPI_CSBASE_BASE_MASK;
|
|
|
|
+- voip_dsp_resources[0].start = val;
|
|
|
|
+- voip_dsp_resources[0].end = val + 0xFFFFFFF;
|
|
|
|
+- voip_dsp_resources[1].start = pd->ext_irq;
|
|
|
|
+-
|
|
|
|
+- /* copy given platform data */
|
|
|
|
+- dpd = bcm63xx_voip_dsp_device.dev.platform_data;
|
|
|
|
+- memcpy(dpd, pd, sizeof (*pd));
|
|
|
|
+-
|
|
|
|
+- return platform_device_register(&bcm63xx_voip_dsp_device);
|
|
|
|
+-}
|
|
|
|
+--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
|
|
|
|
++++ /dev/null
|
|
|
|
+@@ -1,14 +0,0 @@
|
|
|
|
+-/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
+-#ifndef __BCM63XX_DSP_H
|
|
|
|
+-#define __BCM63XX_DSP_H
|
|
|
|
+-
|
|
|
|
+-struct bcm63xx_dsp_platform_data {
|
|
|
|
+- unsigned gpio_rst;
|
|
|
|
+- unsigned gpio_int;
|
|
|
|
+- unsigned cs;
|
|
|
|
+- unsigned ext_irq;
|
|
|
|
+-};
|
|
|
|
+-
|
|
|
|
+-int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd);
|
|
|
|
+-
|
|
|
|
+-#endif /* __BCM63XX_DSP_H */
|
|
|
|
+--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
|
|
|
|
++++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
|
|
|
|
+@@ -7,7 +7,6 @@
|
|
|
|
+ #include <linux/leds.h>
|
|
|
|
+ #include <bcm63xx_dev_enet.h>
|
|
|
|
+ #include <bcm63xx_dev_usb_usbd.h>
|
|
|
|
+-#include <bcm63xx_dev_dsp.h>
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * flash mapping
|
|
|
|
+@@ -31,7 +30,6 @@ struct board_info {
|
|
|
|
+ unsigned int has_ohci0:1;
|
|
|
|
+ unsigned int has_ehci0:1;
|
|
|
|
+ unsigned int has_usbd:1;
|
|
|
|
+- unsigned int has_dsp:1;
|
|
|
|
+ unsigned int has_uart0:1;
|
|
|
|
+ unsigned int has_uart1:1;
|
|
|
|
+
|
|
|
|
+@@ -43,9 +41,6 @@ struct board_info {
|
|
|
|
+ /* USB config */
|
|
|
|
+ struct bcm63xx_usbd_platform_data usbd;
|
|
|
|
+
|
|
|
|
+- /* DSP config */
|
|
|
|
+- struct bcm63xx_dsp_platform_data dsp;
|
|
|
|
+-
|
|
|
|
+ /* GPIO LEDs */
|
|
|
|
+ struct gpio_led leds[5];
|
|
|
|
+
|