Re: [PATCH 8/8] usb: phy: generic: allow multiples calls to usb_phy_generic_register()

2014-04-18 Thread Leigh Brown

On 2014-04-16 22:26, Felipe Balbi wrote:

it's now very easy to return a platform_device pointer
and have the caller pass it as argument when calling
usb_phy_generic_unregister().

Signed-off-by: Felipe Balbi ba...@ti.com
---
 drivers/usb/musb/am35x.c| 12 +---
 drivers/usb/musb/blackfin.c | 10 --
 drivers/usb/musb/da8xx.c| 14 +++---
 drivers/usb/musb/tusb6010.c |  3 ++-
 drivers/usb/phy/phy-generic.c   | 19 +--
 include/linux/usb/usb_phy_generic.h |  8 
 6 files changed, 39 insertions(+), 27 deletions(-)

diff --git a/drivers/usb/musb/am35x.c b/drivers/usb/musb/am35x.c
index 05459b5..0a34dd8 100644
--- a/drivers/usb/musb/am35x.c
+++ b/drivers/usb/musb/am35x.c
@@ -85,6 +85,7 @@
 struct am35x_glue {
struct device   *dev;
struct platform_device  *musb;
+   struct platform_device  *phy;
struct clk  *phy_clk;
struct clk  *clk;
 };
@@ -503,7 +504,9 @@ static int am35x_probe(struct platform_device 
*pdev)


pdata-platform_ops  = am35x_ops;

-   usb_phy_generic_register();
+   glue-phy = usb_phy_generic_register();
+   if (IS_ERR(glue-phy))
+   goto err7;
platform_set_drvdata(pdev, glue);

pinfo = am35x_dev_info;
@@ -517,11 +520,14 @@ static int am35x_probe(struct platform_device 
*pdev)

if (IS_ERR(musb)) {
ret = PTR_ERR(musb);
dev_err(pdev-dev, failed to register musb device: %d\n, 
ret);
-   goto err7;
+   goto err8;
}

return 0;

+err8:
+   usb_phy_generic_unregister(glue-phy);
+
 err7:
clk_disable(clk);

@@ -546,7 +552,7 @@ static int am35x_remove(struct platform_device 
*pdev)

struct am35x_glue   *glue = platform_get_drvdata(pdev);

platform_device_unregister(glue-musb);
-   usb_phy_generic_unregister();
+   usb_phy_generic_unregister(glue-phy);
clk_disable(glue-clk);
clk_disable(glue-phy_clk);
clk_put(glue-clk);
diff --git a/drivers/usb/musb/blackfin.c b/drivers/usb/musb/blackfin.c
index 53acffe..d40d5f0 100644
--- a/drivers/usb/musb/blackfin.c
+++ b/drivers/usb/musb/blackfin.c
@@ -29,6 +29,7 @@
 struct bfin_glue {
struct device   *dev;
struct platform_device  *musb;
+   struct platform_device  *phy;
 };
 #define glue_to_musb(g)platform_get_drvdata(g-musb)

@@ -475,7 +476,9 @@ static int bfin_probe(struct platform_device *pdev)

pdata-platform_ops  = bfin_ops;

-   usb_phy_generic_register();
+   glue-phy = usb_phy_generic_register();
+   if (IS_ERR(glue-phy))
+   goto err2;
platform_set_drvdata(pdev, glue);

memset(musb_resources, 0x00, sizeof(*musb_resources) *
@@ -513,6 +516,9 @@ static int bfin_probe(struct platform_device *pdev)
return 0;

 err3:
+   usb_phy_generic_unregister(glue-phy);
+
+err2:
platform_device_put(musb);

 err1:
@@ -527,7 +533,7 @@ static int bfin_remove(struct platform_device 
*pdev)

struct bfin_glue*glue = platform_get_drvdata(pdev);

platform_device_unregister(glue-musb);
-   usb_phy_generic_unregister();
+   usb_phy_generic_unregister(glue-phy);
kfree(glue);

return 0;
diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
index 024751f..058775e 100644
--- a/drivers/usb/musb/da8xx.c
+++ b/drivers/usb/musb/da8xx.c
@@ -85,6 +85,7 @@
 struct da8xx_glue {
struct device   *dev;
struct platform_device  *musb;
+   struct platform_device  *phy;
struct clk  *clk;
 };

@@ -510,7 +511,11 @@ static int da8xx_probe(struct platform_device 
*pdev)


pdata-platform_ops  = da8xx_ops;

-   usb_phy_generic_register();
+   glue-phy = usb_phy_generic_register();
+   if (IS_ERR(glue-phy)) {
+   ret = PTR_ERR(glue-phy);
+   goto err5;
+   }
platform_set_drvdata(pdev, glue);

memset(musb_resources, 0x00, sizeof(*musb_resources) *
@@ -537,11 +542,14 @@ static int da8xx_probe(struct platform_device 
*pdev)

if (IS_ERR(musb)) {
ret = PTR_ERR(musb);
dev_err(pdev-dev, failed to register musb device: %d\n, 
ret);
-   goto err5;
+   goto err6;
}

return 0;

+err6:
+   usb_phy_generic_unregister(glue-phy);
+
 err5:
clk_disable(clk);

@@ -560,7 +568,7 @@ static int da8xx_remove(struct platform_device 
*pdev)

struct da8xx_glue   *glue = platform_get_drvdata(pdev);

platform_device_unregister(glue-musb);
-   usb_phy_generic_unregister();
+   usb_phy_generic_unregister(glue-phy);
clk_disable(glue-clk);
clk_put(glue-clk);
kfree(glue);
diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c

Re: [PATCH 8/8] usb: phy: generic: allow multiples calls to usb_phy_generic_register()

2014-04-18 Thread Felipe Balbi
On Fri, Apr 18, 2014 at 11:38:07AM +0100, Leigh Brown wrote:
 On 2014-04-16 22:26, Felipe Balbi wrote:
 it's now very easy to return a platform_device pointer
 and have the caller pass it as argument when calling
 usb_phy_generic_unregister().
 
 Signed-off-by: Felipe Balbi ba...@ti.com
 ---
  drivers/usb/musb/am35x.c| 12 +---
  drivers/usb/musb/blackfin.c | 10 --
  drivers/usb/musb/da8xx.c| 14 +++---
  drivers/usb/musb/tusb6010.c |  3 ++-
  drivers/usb/phy/phy-generic.c   | 19 +--
  include/linux/usb/usb_phy_generic.h |  8 
  6 files changed, 39 insertions(+), 27 deletions(-)
 
 diff --git a/drivers/usb/musb/am35x.c b/drivers/usb/musb/am35x.c
 index 05459b5..0a34dd8 100644
 --- a/drivers/usb/musb/am35x.c
 +++ b/drivers/usb/musb/am35x.c
 @@ -85,6 +85,7 @@
  struct am35x_glue {
  struct device   *dev;
  struct platform_device  *musb;
 +struct platform_device  *phy;
  struct clk  *phy_clk;
  struct clk  *clk;
  };
 @@ -503,7 +504,9 @@ static int am35x_probe(struct platform_device *pdev)
 
  pdata-platform_ops = am35x_ops;
 
 -usb_phy_generic_register();
 +glue-phy = usb_phy_generic_register();
 +if (IS_ERR(glue-phy))
 +goto err7;
  platform_set_drvdata(pdev, glue);
 
  pinfo = am35x_dev_info;
 @@ -517,11 +520,14 @@ static int am35x_probe(struct platform_device *pdev)
  if (IS_ERR(musb)) {
  ret = PTR_ERR(musb);
  dev_err(pdev-dev, failed to register musb device: %d\n, 
  ret);
 -goto err7;
 +goto err8;
  }
 
  return 0;
 
 +err8:
 +usb_phy_generic_unregister(glue-phy);
 +
  err7:
  clk_disable(clk);
 
 @@ -546,7 +552,7 @@ static int am35x_remove(struct platform_device *pdev)
  struct am35x_glue   *glue = platform_get_drvdata(pdev);
 
  platform_device_unregister(glue-musb);
 -usb_phy_generic_unregister();
 +usb_phy_generic_unregister(glue-phy);
  clk_disable(glue-clk);
  clk_disable(glue-phy_clk);
  clk_put(glue-clk);
 diff --git a/drivers/usb/musb/blackfin.c b/drivers/usb/musb/blackfin.c
 index 53acffe..d40d5f0 100644
 --- a/drivers/usb/musb/blackfin.c
 +++ b/drivers/usb/musb/blackfin.c
 @@ -29,6 +29,7 @@
  struct bfin_glue {
  struct device   *dev;
  struct platform_device  *musb;
 +struct platform_device  *phy;
  };
  #define glue_to_musb(g) platform_get_drvdata(g-musb)
 
 @@ -475,7 +476,9 @@ static int bfin_probe(struct platform_device *pdev)
 
  pdata-platform_ops = bfin_ops;
 
 -usb_phy_generic_register();
 +glue-phy = usb_phy_generic_register();
 +if (IS_ERR(glue-phy))
 +goto err2;
  platform_set_drvdata(pdev, glue);
 
  memset(musb_resources, 0x00, sizeof(*musb_resources) *
 @@ -513,6 +516,9 @@ static int bfin_probe(struct platform_device *pdev)
  return 0;
 
  err3:
 +usb_phy_generic_unregister(glue-phy);
 +
 +err2:
  platform_device_put(musb);
 
  err1:
 @@ -527,7 +533,7 @@ static int bfin_remove(struct platform_device *pdev)
  struct bfin_glue*glue = platform_get_drvdata(pdev);
 
  platform_device_unregister(glue-musb);
 -usb_phy_generic_unregister();
 +usb_phy_generic_unregister(glue-phy);
  kfree(glue);
 
  return 0;
 diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
 index 024751f..058775e 100644
 --- a/drivers/usb/musb/da8xx.c
 +++ b/drivers/usb/musb/da8xx.c
 @@ -85,6 +85,7 @@
  struct da8xx_glue {
  struct device   *dev;
  struct platform_device  *musb;
 +struct platform_device  *phy;
  struct clk  *clk;
  };
 
 @@ -510,7 +511,11 @@ static int da8xx_probe(struct platform_device *pdev)
 
  pdata-platform_ops = da8xx_ops;
 
 -usb_phy_generic_register();
 +glue-phy = usb_phy_generic_register();
 +if (IS_ERR(glue-phy)) {
 +ret = PTR_ERR(glue-phy);
 +goto err5;
 +}
  platform_set_drvdata(pdev, glue);
 
  memset(musb_resources, 0x00, sizeof(*musb_resources) *
 @@ -537,11 +542,14 @@ static int da8xx_probe(struct platform_device *pdev)
  if (IS_ERR(musb)) {
  ret = PTR_ERR(musb);
  dev_err(pdev-dev, failed to register musb device: %d\n, 
  ret);
 -goto err5;
 +goto err6;
  }
 
  return 0;
 
 +err6:
 +usb_phy_generic_unregister(glue-phy);
 +
  err5:
  clk_disable(clk);
 
 @@ -560,7 +568,7 @@ static int da8xx_remove(struct platform_device *pdev)
  struct da8xx_glue   *glue = platform_get_drvdata(pdev);
 
  platform_device_unregister(glue-musb);
 -usb_phy_generic_unregister();
 +usb_phy_generic_unregister(glue-phy);
  clk_disable(glue-clk);
  clk_put(glue-clk);
  kfree(glue);
 diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c
 index 

[PATCH 8/8] usb: phy: generic: allow multiples calls to usb_phy_generic_register()

2014-04-16 Thread Felipe Balbi
it's now very easy to return a platform_device pointer
and have the caller pass it as argument when calling
usb_phy_generic_unregister().

Signed-off-by: Felipe Balbi ba...@ti.com
---
 drivers/usb/musb/am35x.c| 12 +---
 drivers/usb/musb/blackfin.c | 10 --
 drivers/usb/musb/da8xx.c| 14 +++---
 drivers/usb/musb/tusb6010.c |  3 ++-
 drivers/usb/phy/phy-generic.c   | 19 +--
 include/linux/usb/usb_phy_generic.h |  8 
 6 files changed, 39 insertions(+), 27 deletions(-)

diff --git a/drivers/usb/musb/am35x.c b/drivers/usb/musb/am35x.c
index 05459b5..0a34dd8 100644
--- a/drivers/usb/musb/am35x.c
+++ b/drivers/usb/musb/am35x.c
@@ -85,6 +85,7 @@
 struct am35x_glue {
struct device   *dev;
struct platform_device  *musb;
+   struct platform_device  *phy;
struct clk  *phy_clk;
struct clk  *clk;
 };
@@ -503,7 +504,9 @@ static int am35x_probe(struct platform_device *pdev)
 
pdata-platform_ops = am35x_ops;
 
-   usb_phy_generic_register();
+   glue-phy = usb_phy_generic_register();
+   if (IS_ERR(glue-phy))
+   goto err7;
platform_set_drvdata(pdev, glue);
 
pinfo = am35x_dev_info;
@@ -517,11 +520,14 @@ static int am35x_probe(struct platform_device *pdev)
if (IS_ERR(musb)) {
ret = PTR_ERR(musb);
dev_err(pdev-dev, failed to register musb device: %d\n, 
ret);
-   goto err7;
+   goto err8;
}
 
return 0;
 
+err8:
+   usb_phy_generic_unregister(glue-phy);
+
 err7:
clk_disable(clk);
 
@@ -546,7 +552,7 @@ static int am35x_remove(struct platform_device *pdev)
struct am35x_glue   *glue = platform_get_drvdata(pdev);
 
platform_device_unregister(glue-musb);
-   usb_phy_generic_unregister();
+   usb_phy_generic_unregister(glue-phy);
clk_disable(glue-clk);
clk_disable(glue-phy_clk);
clk_put(glue-clk);
diff --git a/drivers/usb/musb/blackfin.c b/drivers/usb/musb/blackfin.c
index 53acffe..d40d5f0 100644
--- a/drivers/usb/musb/blackfin.c
+++ b/drivers/usb/musb/blackfin.c
@@ -29,6 +29,7 @@
 struct bfin_glue {
struct device   *dev;
struct platform_device  *musb;
+   struct platform_device  *phy;
 };
 #define glue_to_musb(g)platform_get_drvdata(g-musb)
 
@@ -475,7 +476,9 @@ static int bfin_probe(struct platform_device *pdev)
 
pdata-platform_ops = bfin_ops;
 
-   usb_phy_generic_register();
+   glue-phy = usb_phy_generic_register();
+   if (IS_ERR(glue-phy))
+   goto err2;
platform_set_drvdata(pdev, glue);
 
memset(musb_resources, 0x00, sizeof(*musb_resources) *
@@ -513,6 +516,9 @@ static int bfin_probe(struct platform_device *pdev)
return 0;
 
 err3:
+   usb_phy_generic_unregister(glue-phy);
+
+err2:
platform_device_put(musb);
 
 err1:
@@ -527,7 +533,7 @@ static int bfin_remove(struct platform_device *pdev)
struct bfin_glue*glue = platform_get_drvdata(pdev);
 
platform_device_unregister(glue-musb);
-   usb_phy_generic_unregister();
+   usb_phy_generic_unregister(glue-phy);
kfree(glue);
 
return 0;
diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
index 024751f..058775e 100644
--- a/drivers/usb/musb/da8xx.c
+++ b/drivers/usb/musb/da8xx.c
@@ -85,6 +85,7 @@
 struct da8xx_glue {
struct device   *dev;
struct platform_device  *musb;
+   struct platform_device  *phy;
struct clk  *clk;
 };
 
@@ -510,7 +511,11 @@ static int da8xx_probe(struct platform_device *pdev)
 
pdata-platform_ops = da8xx_ops;
 
-   usb_phy_generic_register();
+   glue-phy = usb_phy_generic_register();
+   if (IS_ERR(glue-phy)) {
+   ret = PTR_ERR(glue-phy);
+   goto err5;
+   }
platform_set_drvdata(pdev, glue);
 
memset(musb_resources, 0x00, sizeof(*musb_resources) *
@@ -537,11 +542,14 @@ static int da8xx_probe(struct platform_device *pdev)
if (IS_ERR(musb)) {
ret = PTR_ERR(musb);
dev_err(pdev-dev, failed to register musb device: %d\n, 
ret);
-   goto err5;
+   goto err6;
}
 
return 0;
 
+err6:
+   usb_phy_generic_unregister(glue-phy);
+
 err5:
clk_disable(clk);
 
@@ -560,7 +568,7 @@ static int da8xx_remove(struct platform_device *pdev)
struct da8xx_glue   *glue = platform_get_drvdata(pdev);
 
platform_device_unregister(glue-musb);
-   usb_phy_generic_unregister();
+   usb_phy_generic_unregister(glue-phy);
clk_disable(glue-clk);
clk_put(glue-clk);
kfree(glue);
diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c
index e1da199..f38a8db 100644