| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- 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];
-
|