Re: linux-next: build failure after merge of the usb-gadget tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 17, 2013 at 10:10:32AM +1100, Stephen Rothwell wrote:
> Hi Felipe,
> 
> On Mon, 16 Dec 2013 13:41:13 -0600 Felipe Balbi <balbi@xxxxxx> wrote:
> >
> > On Mon, Dec 16, 2013 at 03:40:20PM +1100, Stephen Rothwell wrote:
> > > 
> > > After merging the usb-gadget tree, today's linux-next build (x86_64
> > > allmodconfig) failed like this:
> > > 
> > > drivers/usb/phy/phy-keystone.c: In function 'keystone_usbphy_probe':
> > > drivers/usb/phy/phy-keystone.c:96:4: warning: passing argument 3 of 'usb_phy_gen_create_phy' makes pointer from integer without a cast [enabled by default]
> > >     USB_PHY_TYPE_USB2, 0, false);
> > >     ^
> > > In file included from drivers/usb/phy/phy-keystone.c:25:0:
> > > drivers/usb/phy/phy-generic.h:18:5: note: expected 'struct usb_phy_gen_xceiv_platform_data *' but argument is of type 'int'
> > >  int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_gen_xceiv *nop,
> > >      ^
> > > drivers/usb/phy/phy-keystone.c:96:4: error: too many arguments to function 'usb_phy_gen_create_phy'
> > >     USB_PHY_TYPE_USB2, 0, false);
> > >     ^
> > > In file included from drivers/usb/phy/phy-keystone.c:25:0:
> > > drivers/usb/phy/phy-generic.h:18:5: note: declared here
> > >  int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_gen_xceiv *nop,
> > >      ^
> > > 
> > > Caused by commit 25acdd08fd71 ("usb: phy: add Keystone usb phy driver")
> > > interacting with commit bd27fa44e138 ("usb: phy: add Keystone usb phy
> > > driver") which was merged before v3.13-rc1 and is included in the
> > > usb-gadget tree.
> > 
> > I cannot see how those commits would cause the error above. I have
> > recompiled my tree with allmodconfig (x86 and ARM) config and
> > omap2plus_defconfig (adding COMPILE_TEST and enabling KEYSTONE PHY) and
> > cannot see this error.
> > 
> > Maybe someone applied a drivers/usb/phy/ patch ahead of me ?
> 
> That would be your patch (af9f51c5512f "usb: phy: generic: fix how we find
> out about our resources") that went into v3.13-rc4 ...
> 
> Can you send me a suitable merge fixup, please?

It's long, sorry, basically what I did was this:

-      ret = usb_phy_gen_create_phy(dev, &k_phy->usb_phy_gen,
-                      USB_PHY_TYPE_USB2, 0, false);
+      ret = usb_phy_gen_create_phy(dev, &k_phy->usb_phy_gen, NULL);

full commit:

commit 7df5cc5f4558955dcba46c328e68df5351f3c958
Merge: 319e2e3 f8800d4
Author: Felipe Balbi <balbi@xxxxxx>
Date:   Mon Dec 16 17:36:33 2013 -0600

    Merge branch 'next' into tmp-merge
    
    * next: (60 commits)
      usb: gadget: f_fs: fix sparse warning
      usb: gadget: FunctionFS: add configfs support
      usb: gadget: FunctionFS: Remove compatibility layer
      usb: gadget: g_ffs: convert to new interface of f_fs
      usb: gadget: FunctionFS: convert to new function interface with backward compatibility
      usb: gadget: FunctionFS: add devices management code
      usb: gadget: FunctionFS: create utility file
      usb: gadget: FunctionFS: Remove VLAIS usage from gadget code
      usb: gadget: rndis: merge u_rndis.ko with usb_f_rndis.ko
      usb: gadget: f_rndis: remove compatibility layer
      usb: gadget: g_ffs: convert to new interface of f_rndis
      usb: gadget: f_subset: remove compatibility layer
      usb: gadget: g_ffs: convert to new interface of f_subset
      usb: gadget: f_ecm: remove compatibility layer
      usb: gadget: g_ffs: convert to new interface of f_ecm
      usb: gadget: g_ffs: remove a reduntant gfs_ether_setup variable
      usb: gadget: configfs: allow setting function instance's name
      usb: gadget: s3c-hsotg: add flush TX FIFO when kill all requests
      usb: gadget: s3c-hsotg: fix maxpacket size in s3c_hsotg_irq_enumdone
      usb: phy: initialize the notifier when add a new phy
      ...
    
    Signed-off-by: Felipe Balbi <balbi@xxxxxx>

diff --cc drivers/usb/phy/phy-keystone.c
index 0000000,a04fb94..533db12
mode 000000,100644..100644
--- a/drivers/usb/phy/phy-keystone.c
+++ b/drivers/usb/phy/phy-keystone.c
@@@ -1,0 -1,142 +1,141 @@@
+ /*
+  * phy-keystone - USB PHY, talking to dwc3 controller in Keystone.
+  *
+  * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation; either version 2 of the License, or
+  * (at your option) any later version.
+  *
+  * Author: WingMan Kwok <w-kwok2@xxxxxx>
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  */
+ 
+ #include <linux/module.h>
+ #include <linux/platform_device.h>
+ #include <linux/usb/usb_phy_gen_xceiv.h>
+ #include <linux/io.h>
+ #include <linux/of.h>
+ 
+ #include "phy-generic.h"
+ 
+ /* USB PHY control register offsets */
+ #define USB_PHY_CTL_UTMI		0x0000
+ #define USB_PHY_CTL_PIPE		0x0004
+ #define USB_PHY_CTL_PARAM_1		0x0008
+ #define USB_PHY_CTL_PARAM_2		0x000c
+ #define USB_PHY_CTL_CLOCK		0x0010
+ #define USB_PHY_CTL_PLL			0x0014
+ 
+ #define PHY_REF_SSP_EN			BIT(29)
+ 
+ struct keystone_usbphy {
+ 	struct usb_phy_gen_xceiv	usb_phy_gen;
+ 	void __iomem			*phy_ctrl;
+ };
+ 
+ static inline u32 keystone_usbphy_readl(void __iomem *base, u32 offset)
+ {
+ 	return readl(base + offset);
+ }
+ 
+ static inline void keystone_usbphy_writel(void __iomem *base,
+ 					  u32 offset, u32 value)
+ {
+ 	writel(value, base + offset);
+ }
+ 
+ static int keystone_usbphy_init(struct usb_phy *phy)
+ {
+ 	struct keystone_usbphy *k_phy = dev_get_drvdata(phy->dev);
+ 	u32 val;
+ 
+ 	val  = keystone_usbphy_readl(k_phy->phy_ctrl, USB_PHY_CTL_CLOCK);
+ 	keystone_usbphy_writel(k_phy->phy_ctrl, USB_PHY_CTL_CLOCK,
+ 				val | PHY_REF_SSP_EN);
+ 	return 0;
+ }
+ 
+ static void keystone_usbphy_shutdown(struct usb_phy *phy)
+ {
+ 	struct keystone_usbphy *k_phy = dev_get_drvdata(phy->dev);
+ 	u32 val;
+ 
+ 	val  = keystone_usbphy_readl(k_phy->phy_ctrl, USB_PHY_CTL_CLOCK);
+ 	keystone_usbphy_writel(k_phy->phy_ctrl, USB_PHY_CTL_CLOCK,
+ 				val &= ~PHY_REF_SSP_EN);
+ }
+ 
+ static int keystone_usbphy_probe(struct platform_device *pdev)
+ {
+ 	struct device		*dev = &pdev->dev;
+ 	struct keystone_usbphy	*k_phy;
+ 	struct resource		*res;
+ 	int ret;
+ 
+ 	k_phy = devm_kzalloc(dev, sizeof(*k_phy), GFP_KERNEL);
+ 	if (!k_phy)
+ 		return -ENOMEM;
+ 
+ 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ 	if (!res) {
+ 		dev_err(dev, "missing usb phy resource\n");
+ 		return -EINVAL;
+ 	}
+ 
+ 	k_phy->phy_ctrl = devm_ioremap_resource(dev, res);
+ 	if (IS_ERR(k_phy->phy_ctrl))
+ 		return PTR_ERR(k_phy->phy_ctrl);
+ 
 -	ret = usb_phy_gen_create_phy(dev, &k_phy->usb_phy_gen,
 -			USB_PHY_TYPE_USB2, 0, false);
++	ret = usb_phy_gen_create_phy(dev, &k_phy->usb_phy_gen, NULL);
+ 	if (ret)
+ 		return ret;
+ 
+ 	k_phy->usb_phy_gen.phy.init = keystone_usbphy_init;
+ 	k_phy->usb_phy_gen.phy.shutdown = keystone_usbphy_shutdown;
+ 
+ 	platform_set_drvdata(pdev, k_phy);
+ 
+ 	ret = usb_add_phy_dev(&k_phy->usb_phy_gen.phy);
+ 	if (ret)
+ 		return ret;
+ 
+ 	return 0;
+ }
+ 
+ static int keystone_usbphy_remove(struct platform_device *pdev)
+ {
+ 	struct keystone_usbphy *k_phy = platform_get_drvdata(pdev);
+ 
+ 	usb_remove_phy(&k_phy->usb_phy_gen.phy);
+ 
+ 	return 0;
+ }
+ 
+ static const struct of_device_id keystone_usbphy_ids[] = {
+ 	{ .compatible = "ti,keystone-usbphy" },
+ 	{ }
+ };
+ MODULE_DEVICE_TABLE(of, keystone_usbphy_ids);
+ 
+ static struct platform_driver keystone_usbphy_driver = {
+ 	.probe          = keystone_usbphy_probe,
+ 	.remove         = keystone_usbphy_remove,
+ 	.driver         = {
+ 		.name   = "keystone-usbphy",
+ 		.owner  = THIS_MODULE,
+ 		.of_match_table = of_match_ptr(keystone_usbphy_ids),
+ 	},
+ };
+ 
+ module_platform_driver(keystone_usbphy_driver);
+ 
+ MODULE_ALIAS("platform:keystone-usbphy");
+ MODULE_AUTHOR("Texas Instruments Inc.");
+ MODULE_DESCRIPTION("Keystone USB phy driver");
+ MODULE_LICENSE("GPL v2");
diff --cc drivers/usb/phy/phy-mxs-usb.c
index 545844b,fa44c0f..b42897b
--- a/drivers/usb/phy/phy-mxs-usb.c
+++ b/drivers/usb/phy/phy-mxs-usb.c
@@@ -160,11 -167,9 +167,9 @@@ static int mxs_phy_probe(struct platfor
  	mxs_phy->phy.notify_disconnect	= mxs_phy_on_disconnect;
  	mxs_phy->phy.type		= USB_PHY_TYPE_USB2;
  
- 	ATOMIC_INIT_NOTIFIER_HEAD(&mxs_phy->phy.notifier);
- 
  	mxs_phy->clk = clk;
  
 -	platform_set_drvdata(pdev, &mxs_phy->phy);
 +	platform_set_drvdata(pdev, mxs_phy);
  
  	ret = usb_add_phy_dev(&mxs_phy->phy);
  	if (ret)

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Kernel]     [Linux USB Development]     [Yosemite News]     [Linux SCSI]

  Powered by Linux