OpenWrt – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | From 51559154375fff4a94bbbc249fdd9248a80827b3 Mon Sep 17 00:00:00 2001 |
2 | From: Jonas Gorski <jonas.gorski@gmail.com> |
||
3 | Date: Tue, 18 Dec 2018 10:19:02 +0100 |
||
4 | Subject: [PATCH] MIPS: BCM63XX: drop unused and broken DSP platform device |
||
5 | |||
6 | Trying to register the DSP platform device results in a null pointer |
||
7 | access: |
||
8 | |||
9 | [ 0.124184] CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 804e305c, ra == 804e6f20 |
||
10 | [ 0.135208] Oops[#1]: |
||
11 | [ 0.137514] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.87 |
||
12 | ... |
||
13 | [ 0.197117] epc : 804e305c bcm63xx_dsp_register+0x80/0xa4 |
||
14 | [ 0.202838] ra : 804e6f20 board_register_devices+0x258/0x390 |
||
15 | ... |
||
16 | |||
17 | This happens because it tries to copy the passed platform data over the |
||
18 | platform_device's unpopulated platform_data. |
||
19 | |||
20 | Since this code has been broken since its submission, no driver was ever |
||
21 | submitted for it, and apparently nobody was using it, just remove it |
||
22 | instead of trying to fix it. |
||
23 | |||
24 | Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.") |
||
25 | Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> |
||
26 | --- |
||
27 | arch/mips/bcm63xx/Makefile | 6 +-- |
||
28 | arch/mips/bcm63xx/boards/board_bcm963xx.c | 20 -------- |
||
29 | arch/mips/bcm63xx/dev-dsp.c | 56 ---------------------- |
||
30 | .../include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h | 14 ------ |
||
31 | .../mips/include/asm/mach-bcm63xx/board_bcm963xx.h | 5 -- |
||
32 | 5 files changed, 3 insertions(+), 98 deletions(-) |
||
33 | delete mode 100644 arch/mips/bcm63xx/dev-dsp.c |
||
34 | delete mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h |
||
35 | |||
36 | --- a/arch/mips/bcm63xx/Makefile |
||
37 | +++ b/arch/mips/bcm63xx/Makefile |
||
38 | @@ -1,8 +1,8 @@ |
||
39 | # SPDX-License-Identifier: GPL-2.0 |
||
40 | obj-y += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o reset.o \ |
||
41 | - setup.o timer.o dev-dsp.o dev-enet.o dev-flash.o \ |
||
42 | - dev-pcmcia.o dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o \ |
||
43 | - dev-wdt.o dev-usb-usbd.o |
||
44 | + setup.o timer.o dev-enet.o dev-flash.o dev-pcmcia.o \ |
||
45 | + dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o dev-wdt.o \ |
||
46 | + dev-usb-usbd.o |
||
47 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o |
||
48 | |||
49 | obj-y += boards/ |
||
50 | --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c |
||
51 | +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c |
||
52 | @@ -23,7 +23,6 @@ |
||
53 | #include <bcm63xx_nvram.h> |
||
54 | #include <bcm63xx_dev_pci.h> |
||
55 | #include <bcm63xx_dev_enet.h> |
||
56 | -#include <bcm63xx_dev_dsp.h> |
||
57 | #include <bcm63xx_dev_flash.h> |
||
58 | #include <bcm63xx_dev_hsspi.h> |
||
59 | #include <bcm63xx_dev_pcmcia.h> |
||
60 | @@ -289,14 +288,6 @@ static struct board_info __initdata boar |
||
61 | .has_pccard = 1, |
||
62 | .has_ehci0 = 1, |
||
63 | |||
64 | - .has_dsp = 1, |
||
65 | - .dsp = { |
||
66 | - .gpio_rst = 6, |
||
67 | - .gpio_int = 34, |
||
68 | - .cs = 2, |
||
69 | - .ext_irq = 2, |
||
70 | - }, |
||
71 | - |
||
72 | .leds = { |
||
73 | { |
||
74 | .name = "adsl-fail", |
||
75 | @@ -401,14 +392,6 @@ static struct board_info __initdata boar |
||
76 | |||
77 | .has_ohci0 = 1, |
||
78 | |||
79 | - .has_dsp = 1, |
||
80 | - .dsp = { |
||
81 | - .gpio_rst = 6, |
||
82 | - .gpio_int = 34, |
||
83 | - .ext_irq = 2, |
||
84 | - .cs = 2, |
||
85 | - }, |
||
86 | - |
||
87 | .leds = { |
||
88 | { |
||
89 | .name = "adsl-fail", |
||
90 | @@ -898,9 +881,6 @@ int __init board_register_devices(void) |
||
91 | if (board.has_usbd) |
||
92 | bcm63xx_usbd_register(&board.usbd); |
||
93 | |||
94 | - if (board.has_dsp) |
||
95 | - bcm63xx_dsp_register(&board.dsp); |
||
96 | - |
||
97 | /* Generate MAC address for WLAN and register our SPROM, |
||
98 | * do this after registering enet devices |
||
99 | */ |
||
100 | --- a/arch/mips/bcm63xx/dev-dsp.c |
||
101 | +++ /dev/null |
||
102 | @@ -1,56 +0,0 @@ |
||
103 | -/* |
||
104 | - * Broadcom BCM63xx VoIP DSP registration |
||
105 | - * |
||
106 | - * This file is subject to the terms and conditions of the GNU General Public |
||
107 | - * License. See the file "COPYING" in the main directory of this archive |
||
108 | - * for more details. |
||
109 | - * |
||
110 | - * Copyright (C) 2009 Florian Fainelli <florian@openwrt.org> |
||
111 | - */ |
||
112 | - |
||
113 | -#include <linux/init.h> |
||
114 | -#include <linux/kernel.h> |
||
115 | -#include <linux/platform_device.h> |
||
116 | - |
||
117 | -#include <bcm63xx_cpu.h> |
||
118 | -#include <bcm63xx_dev_dsp.h> |
||
119 | -#include <bcm63xx_regs.h> |
||
120 | -#include <bcm63xx_io.h> |
||
121 | - |
||
122 | -static struct resource voip_dsp_resources[] = { |
||
123 | - { |
||
124 | - .start = -1, /* filled at runtime */ |
||
125 | - .end = -1, /* filled at runtime */ |
||
126 | - .flags = IORESOURCE_MEM, |
||
127 | - }, |
||
128 | - { |
||
129 | - .start = -1, /* filled at runtime */ |
||
130 | - .flags = IORESOURCE_IRQ, |
||
131 | - }, |
||
132 | -}; |
||
133 | - |
||
134 | -static struct platform_device bcm63xx_voip_dsp_device = { |
||
135 | - .name = "bcm63xx-voip-dsp", |
||
136 | - .id = -1, |
||
137 | - .num_resources = ARRAY_SIZE(voip_dsp_resources), |
||
138 | - .resource = voip_dsp_resources, |
||
139 | -}; |
||
140 | - |
||
141 | -int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd) |
||
142 | -{ |
||
143 | - struct bcm63xx_dsp_platform_data *dpd; |
||
144 | - u32 val; |
||
145 | - |
||
146 | - /* Get the memory window */ |
||
147 | - val = bcm_mpi_readl(MPI_CSBASE_REG(pd->cs - 1)); |
||
148 | - val &= MPI_CSBASE_BASE_MASK; |
||
149 | - voip_dsp_resources[0].start = val; |
||
150 | - voip_dsp_resources[0].end = val + 0xFFFFFFF; |
||
151 | - voip_dsp_resources[1].start = pd->ext_irq; |
||
152 | - |
||
153 | - /* copy given platform data */ |
||
154 | - dpd = bcm63xx_voip_dsp_device.dev.platform_data; |
||
155 | - memcpy(dpd, pd, sizeof (*pd)); |
||
156 | - |
||
157 | - return platform_device_register(&bcm63xx_voip_dsp_device); |
||
158 | -} |
||
159 | --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h |
||
160 | +++ /dev/null |
||
161 | @@ -1,14 +0,0 @@ |
||
162 | -/* SPDX-License-Identifier: GPL-2.0 */ |
||
163 | -#ifndef __BCM63XX_DSP_H |
||
164 | -#define __BCM63XX_DSP_H |
||
165 | - |
||
166 | -struct bcm63xx_dsp_platform_data { |
||
167 | - unsigned gpio_rst; |
||
168 | - unsigned gpio_int; |
||
169 | - unsigned cs; |
||
170 | - unsigned ext_irq; |
||
171 | -}; |
||
172 | - |
||
173 | -int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd); |
||
174 | - |
||
175 | -#endif /* __BCM63XX_DSP_H */ |
||
176 | --- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h |
||
177 | +++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h |
||
178 | @@ -7,7 +7,6 @@ |
||
179 | #include <linux/leds.h> |
||
180 | #include <bcm63xx_dev_enet.h> |
||
181 | #include <bcm63xx_dev_usb_usbd.h> |
||
182 | -#include <bcm63xx_dev_dsp.h> |
||
183 | |||
184 | /* |
||
185 | * flash mapping |
||
186 | @@ -31,7 +30,6 @@ struct board_info { |
||
187 | unsigned int has_ohci0:1; |
||
188 | unsigned int has_ehci0:1; |
||
189 | unsigned int has_usbd:1; |
||
190 | - unsigned int has_dsp:1; |
||
191 | unsigned int has_uart0:1; |
||
192 | unsigned int has_uart1:1; |
||
193 | |||
194 | @@ -43,9 +41,6 @@ struct board_info { |
||
195 | /* USB config */ |
||
196 | struct bcm63xx_usbd_platform_data usbd; |
||
197 | |||
198 | - /* DSP config */ |
||
199 | - struct bcm63xx_dsp_platform_data dsp; |
||
200 | - |
||
201 | /* GPIO LEDs */ |
||
202 | struct gpio_led leds[5]; |
||
203 |