From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [sashal-linux-stable:queue-5.4 73/106] drivers/usb/musb/mediatek.c:202:18: error: implicit declaration of function 'musb_clearb'; did you mean
Date: Sat, 18 Jul 2020 08:39:38 +0800 [thread overview]
Message-ID: <202007180835.vQAM1mo6%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 11345 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git queue-5.4
head: 8fc787b62d0c673cca994da068df84905ddea333
commit: eec346066d383e736228ada2a0c24e6ac8369619 [73/106] usb: musb: Add support for MediaTek musb controller
config: alpha-allmodconfig (attached as .config)
compiler: alpha-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout eec346066d383e736228ada2a0c24e6ac8369619
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=alpha
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
drivers/usb/musb/mediatek.c: In function 'generic_interrupt':
>> drivers/usb/musb/mediatek.c:202:18: error: implicit declaration of function 'musb_clearb'; did you mean 'musb_readb'? [-Werror=implicit-function-declaration]
202 | musb->int_usb = musb_clearb(musb->mregs, MUSB_INTRUSB);
| ^~~~~~~~~~~
| musb_readb
>> drivers/usb/musb/mediatek.c:203:17: error: implicit declaration of function 'musb_clearw'; did you mean 'musb_readw'? [-Werror=implicit-function-declaration]
203 | musb->int_rx = musb_clearw(musb->mregs, MUSB_INTRRX);
| ^~~~~~~~~~~
| musb_readw
drivers/usb/musb/mediatek.c: At top level:
>> drivers/usb/musb/mediatek.c:392:3: error: 'const struct musb_platform_ops' has no member named 'get_toggle'
392 | .get_toggle = mtk_musb_get_toggle,
| ^~~~~~~~~~
>> drivers/usb/musb/mediatek.c:392:16: error: initialization of 'int (*)(struct musb *)' from incompatible pointer type 'u16 (*)(struct musb_qh *, int)' {aka 'short unsigned int (*)(struct musb_qh *, int)'} [-Werror=incompatible-pointer-types]
392 | .get_toggle = mtk_musb_get_toggle,
| ^~~~~~~~~~~~~~~~~~~
drivers/usb/musb/mediatek.c:392:16: note: (near initialization for 'mtk_musb_ops.exit')
>> drivers/usb/musb/mediatek.c:393:3: error: 'const struct musb_platform_ops' has no member named 'set_toggle'; did you mean 'set_mode'?
393 | .set_toggle = mtk_musb_set_toggle,
| ^~~~~~~~~~
| set_mode
>> drivers/usb/musb/mediatek.c:393:16: error: initialization of 'void (*)(struct musb *)' from incompatible pointer type 'u16 (*)(struct musb_qh *, int, struct urb *)' {aka 'short unsigned int (*)(struct musb_qh *, int, struct urb *)'} [-Werror=incompatible-pointer-types]
393 | .set_toggle = mtk_musb_set_toggle,
| ^~~~~~~~~~~~~~~~~~~
drivers/usb/musb/mediatek.c:393:16: note: (near initialization for 'mtk_musb_ops.enable')
>> drivers/usb/musb/mediatek.c:394:10: warning: initialized field overwritten [-Woverride-init]
394 | .exit = mtk_musb_exit,
| ^~~~~~~~~~~~~
drivers/usb/musb/mediatek.c:394:10: note: (near initialization for 'mtk_musb_ops.exit')
>> drivers/usb/musb/mediatek.c:399:3: error: 'const struct musb_platform_ops' has no member named 'clearb'
399 | .clearb = mtk_musb_clearb,
| ^~~~~~
>> drivers/usb/musb/mediatek.c:399:12: error: initialization of 'void (*)(struct musb *)' from incompatible pointer type 'u8 (*)(void *, unsigned int)' {aka 'unsigned char (*)(void *, unsigned int)'} [-Werror=incompatible-pointer-types]
399 | .clearb = mtk_musb_clearb,
| ^~~~~~~~~~~~~~~
drivers/usb/musb/mediatek.c:399:12: note: (near initialization for 'mtk_musb_ops.enable')
drivers/usb/musb/mediatek.c:399:12: warning: initialized field overwritten [-Woverride-init]
drivers/usb/musb/mediatek.c:399:12: note: (near initialization for 'mtk_musb_ops.enable')
>> drivers/usb/musb/mediatek.c:400:3: error: 'const struct musb_platform_ops' has no member named 'clearw'
400 | .clearw = mtk_musb_clearw,
| ^~~~~~
>> drivers/usb/musb/mediatek.c:400:12: error: initialization of 'void (*)(struct musb *)' from incompatible pointer type 'u16 (*)(void *, unsigned int)' {aka 'short unsigned int (*)(void *, unsigned int)'} [-Werror=incompatible-pointer-types]
400 | .clearw = mtk_musb_clearw,
| ^~~~~~~~~~~~~~~
drivers/usb/musb/mediatek.c:400:12: note: (near initialization for 'mtk_musb_ops.disable')
cc1: some warnings being treated as errors
vim +202 drivers/usb/musb/mediatek.c
194
195 static irqreturn_t generic_interrupt(int irq, void *__hci)
196 {
197 unsigned long flags;
198 irqreturn_t retval = IRQ_NONE;
199 struct musb *musb = __hci;
200
201 spin_lock_irqsave(&musb->lock, flags);
> 202 musb->int_usb = musb_clearb(musb->mregs, MUSB_INTRUSB);
> 203 musb->int_rx = musb_clearw(musb->mregs, MUSB_INTRRX);
204 musb->int_tx = musb_clearw(musb->mregs, MUSB_INTRTX);
205
206 if (musb->int_usb || musb->int_tx || musb->int_rx)
207 retval = musb_interrupt(musb);
208
209 spin_unlock_irqrestore(&musb->lock, flags);
210
211 return retval;
212 }
213
214 static irqreturn_t mtk_musb_interrupt(int irq, void *dev_id)
215 {
216 irqreturn_t retval = IRQ_NONE;
217 struct musb *musb = (struct musb *)dev_id;
218 u32 l1_ints;
219
220 l1_ints = musb_readl(musb->mregs, USB_L1INTS) &
221 musb_readl(musb->mregs, USB_L1INTM);
222
223 if (l1_ints & (TX_INT_STATUS | RX_INT_STATUS | USBCOM_INT_STATUS))
224 retval = generic_interrupt(irq, musb);
225
226 #if defined(CONFIG_USB_INVENTRA_DMA)
227 if (l1_ints & DMA_INT_STATUS)
228 retval = dma_controller_irq(irq, musb->dma_controller);
229 #endif
230 return retval;
231 }
232
233 static u32 mtk_musb_busctl_offset(u8 epnum, u16 offset)
234 {
235 return MTK_MUSB_TXFUNCADDR + offset + 8 * epnum;
236 }
237
238 static u8 mtk_musb_clearb(void __iomem *addr, unsigned int offset)
239 {
240 u8 data;
241
242 /* W1C */
243 data = musb_readb(addr, offset);
244 musb_writeb(addr, offset, data);
245 return data;
246 }
247
248 static u16 mtk_musb_clearw(void __iomem *addr, unsigned int offset)
249 {
250 u16 data;
251
252 /* W1C */
253 data = musb_readw(addr, offset);
254 musb_writew(addr, offset, data);
255 return data;
256 }
257
258 static int mtk_musb_set_mode(struct musb *musb, u8 mode)
259 {
260 struct device *dev = musb->controller;
261 struct mtk_glue *glue = dev_get_drvdata(dev->parent);
262 enum phy_mode new_mode;
263 enum usb_role new_role;
264
265 switch (mode) {
266 case MUSB_HOST:
267 new_mode = PHY_MODE_USB_HOST;
268 new_role = USB_ROLE_HOST;
269 break;
270 case MUSB_PERIPHERAL:
271 new_mode = PHY_MODE_USB_DEVICE;
272 new_role = USB_ROLE_DEVICE;
273 break;
274 case MUSB_OTG:
275 new_mode = PHY_MODE_USB_OTG;
276 new_role = USB_ROLE_NONE;
277 break;
278 default:
279 dev_err(glue->dev, "Invalid mode request\n");
280 return -EINVAL;
281 }
282
283 if (glue->phy_mode == new_mode)
284 return 0;
285
286 if (musb->port_mode != MUSB_OTG) {
287 dev_err(glue->dev, "Does not support changing modes\n");
288 return -EINVAL;
289 }
290
291 glue->role = new_role;
292 musb_usb_role_sx_set(dev, glue->role);
293 return 0;
294 }
295
296 static int mtk_musb_init(struct musb *musb)
297 {
298 struct device *dev = musb->controller;
299 struct mtk_glue *glue = dev_get_drvdata(dev->parent);
300 int ret;
301
302 glue->musb = musb;
303 musb->phy = glue->phy;
304 musb->xceiv = glue->xceiv;
305 musb->is_host = false;
306 musb->isr = mtk_musb_interrupt;
307
308 /* Set TX/RX toggle enable */
309 musb_writew(musb->mregs, MUSB_TXTOGEN, MTK_TOGGLE_EN);
310 musb_writew(musb->mregs, MUSB_RXTOGEN, MTK_TOGGLE_EN);
311
312 if (musb->port_mode == MUSB_OTG) {
313 ret = mtk_otg_switch_init(glue);
314 if (ret)
315 return ret;
316 }
317
318 ret = phy_init(glue->phy);
319 if (ret)
320 goto err_phy_init;
321
322 ret = phy_power_on(glue->phy);
323 if (ret)
324 goto err_phy_power_on;
325
326 phy_set_mode(glue->phy, glue->phy_mode);
327
328 #if defined(CONFIG_USB_INVENTRA_DMA)
329 musb_writel(musb->mregs, MUSB_HSDMA_INTR,
330 DMA_INTR_STATUS_MSK | DMA_INTR_UNMASK_SET_MSK);
331 #endif
332 musb_writel(musb->mregs, USB_L1INTM, TX_INT_STATUS | RX_INT_STATUS |
333 USBCOM_INT_STATUS | DMA_INT_STATUS);
334 return 0;
335
336 err_phy_power_on:
337 phy_exit(glue->phy);
338 err_phy_init:
339 mtk_otg_switch_exit(glue);
340 return ret;
341 }
342
343 static u16 mtk_musb_get_toggle(struct musb_qh *qh, int is_out)
344 {
345 struct musb *musb = qh->hw_ep->musb;
346 u8 epnum = qh->hw_ep->epnum;
347 u16 toggle;
348
349 toggle = musb_readw(musb->mregs, is_out ? MUSB_TXTOG : MUSB_RXTOG);
350 return toggle & (1 << epnum);
351 }
352
353 static u16 mtk_musb_set_toggle(struct musb_qh *qh, int is_out, struct urb *urb)
354 {
355 struct musb *musb = qh->hw_ep->musb;
356 u8 epnum = qh->hw_ep->epnum;
357 u16 value, toggle;
358
359 toggle = usb_gettoggle(urb->dev, qh->epnum, is_out);
360
361 if (is_out) {
362 value = musb_readw(musb->mregs, MUSB_TXTOG);
363 value |= toggle << epnum;
364 musb_writew(musb->mregs, MUSB_TXTOG, value);
365 } else {
366 value = musb_readw(musb->mregs, MUSB_RXTOG);
367 value |= toggle << epnum;
368 musb_writew(musb->mregs, MUSB_RXTOG, value);
369 }
370
371 return 0;
372 }
373
374 static int mtk_musb_exit(struct musb *musb)
375 {
376 struct device *dev = musb->controller;
377 struct mtk_glue *glue = dev_get_drvdata(dev->parent);
378
379 mtk_otg_switch_exit(glue);
380 phy_power_off(glue->phy);
381 phy_exit(glue->phy);
382 mtk_musb_clks_disable(glue);
383
384 pm_runtime_put_sync(dev);
385 pm_runtime_disable(dev);
386 return 0;
387 }
388
389 static const struct musb_platform_ops mtk_musb_ops = {
390 .quirks = MUSB_DMA_INVENTRA,
391 .init = mtk_musb_init,
> 392 .get_toggle = mtk_musb_get_toggle,
> 393 .set_toggle = mtk_musb_set_toggle,
> 394 .exit = mtk_musb_exit,
395 #ifdef CONFIG_USB_INVENTRA_DMA
396 .dma_init = musbhs_dma_controller_create_noirq,
397 .dma_exit = musbhs_dma_controller_destroy,
398 #endif
> 399 .clearb = mtk_musb_clearb,
> 400 .clearw = mtk_musb_clearw,
401 .busctl_offset = mtk_musb_busctl_offset,
402 .set_mode = mtk_musb_set_mode,
403 };
404
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 58974 bytes --]
reply other threads:[~2020-07-18 0:39 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202007180835.vQAM1mo6%lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.