mirror of https://github.com/hak5/openwrt.git
204 lines
5.8 KiB
Diff
204 lines
5.8 KiB
Diff
|
From 51559154375fff4a94bbbc249fdd9248a80827b3 Mon Sep 17 00:00:00 2001
|
||
|
From: Jonas Gorski <jonas.gorski@gmail.com>
|
||
|
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 <jonas.gorski@gmail.com>
|
||
|
---
|
||
|
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 <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);
|
||
|
-}
|
||
|
--- 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];
|
||
|
|