MIPS: BCM63XX: drop unused and broken DSP platform device
authorJonas Gorski <jonas.gorski@gmail.com>
Sun, 30 Dec 2018 11:55:09 +0000 (12:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jan 2020 13:50:10 +0000 (14:50 +0100)
[ Upstream commit 682fee802843b332f9c51ffc8e062de5ff773f2e ]

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 <jonas.gorski@gmail.com>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Cc: linux-mips@linux-mips.org
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/mips/bcm63xx/Makefile
arch/mips/bcm63xx/boards/board_bcm963xx.c
arch/mips/bcm63xx/dev-dsp.c [deleted file]
arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h [deleted file]
arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h

index c69f297..d89651e 100644 (file)
@@ -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/
index b2097c0..36ec3dc 100644 (file)
@@ -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 board_96348gw_10 = {
        .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 board_96348gw = {
 
        .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
         */
diff --git a/arch/mips/bcm63xx/dev-dsp.c b/arch/mips/bcm63xx/dev-dsp.c
deleted file mode 100644 (file)
index 5bb5b15..0000000
+++ /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 <florian@openwrt.org>
- */
-
-#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);
-}
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
deleted file mode 100644 (file)
index 4e49707..0000000
+++ /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 */
index 5e5b1bc..830f53f 100644 (file)
@@ -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];