All of lore.kernel.org
 help / color / mirror / Atom feed
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.