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 <ba...@ti.com> 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 <ba...@ti.com>
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 <ba...@ti.com>

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-kw...@ti.com>
+  *
+  * 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

Reply via email to