Browse Source

usb: musb: pass platform_ops via platform_data

... then we don't need to export any symbols
from glue layer to musb_core.

Signed-off-by: Felipe Balbi <balbi@ti.com>
Felipe Balbi 14 years ago
parent
commit
f7ec94370f

+ 3 - 1
drivers/usb/musb/am35x.c

@@ -530,7 +530,7 @@ void musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst)
 	}
 	}
 }
 }
 
 
-const struct musb_platform_ops musb_ops = {
+static const struct musb_platform_ops am35x_ops = {
 	.init		= am35x_musb_init,
 	.init		= am35x_musb_init,
 	.exit		= am35x_musb_exit,
 	.exit		= am35x_musb_exit,
 
 
@@ -572,6 +572,8 @@ static int __init am35x_probe(struct platform_device *pdev)
 	glue->dev			= &pdev->dev;
 	glue->dev			= &pdev->dev;
 	glue->musb			= musb;
 	glue->musb			= musb;
 
 
+	pdata->platform_ops		= &am35x_ops;
+
 	platform_set_drvdata(pdev, glue);
 	platform_set_drvdata(pdev, glue);
 
 
 	ret = platform_device_add_resources(musb, pdev->resource,
 	ret = platform_device_add_resources(musb, pdev->resource,

+ 3 - 1
drivers/usb/musb/blackfin.c

@@ -436,7 +436,7 @@ static int bfin_musb_exit(struct musb *musb)
 	return 0;
 	return 0;
 }
 }
 
 
-const struct musb_platform_ops musb_ops = {
+static const struct musb_platform_ops bfin_ops = {
 	.init		= bfin_musb_init,
 	.init		= bfin_musb_init,
 	.exit		= bfin_musb_exit,
 	.exit		= bfin_musb_exit,
 
 
@@ -479,6 +479,8 @@ static int __init bfin_probe(struct platform_device *pdev)
 	glue->dev			= &pdev->dev;
 	glue->dev			= &pdev->dev;
 	glue->musb			= musb;
 	glue->musb			= musb;
 
 
+	pdata->platform_ops		= &bfin_ops;
+
 	platform_set_drvdata(pdev, glue);
 	platform_set_drvdata(pdev, glue);
 
 
 	ret = platform_device_add_resources(musb, pdev->resource,
 	ret = platform_device_add_resources(musb, pdev->resource,

+ 3 - 1
drivers/usb/musb/da8xx.c

@@ -475,7 +475,7 @@ static int da8xx_musb_exit(struct musb *musb)
 	return 0;
 	return 0;
 }
 }
 
 
-const struct musb_platform_ops musb_ops = {
+static const struct musb_platform_ops da8xx_ops = {
 	.init		= da8xx_musb_init,
 	.init		= da8xx_musb_init,
 	.exit		= da8xx_musb_exit,
 	.exit		= da8xx_musb_exit,
 
 
@@ -517,6 +517,8 @@ static int __init da8xx_probe(struct platform_device *pdev)
 	glue->dev			= &pdev->dev;
 	glue->dev			= &pdev->dev;
 	glue->musb			= musb;
 	glue->musb			= musb;
 
 
+	pdata->platform_ops		= &da8xx_ops;
+
 	platform_set_drvdata(pdev, glue);
 	platform_set_drvdata(pdev, glue);
 
 
 	ret = platform_device_add_resources(musb, pdev->resource,
 	ret = platform_device_add_resources(musb, pdev->resource,

+ 3 - 1
drivers/usb/musb/davinci.c

@@ -510,7 +510,7 @@ static int davinci_musb_exit(struct musb *musb)
 	return 0;
 	return 0;
 }
 }
 
 
-const struct musb_platform_ops musb_ops = {
+static const struct musb_platform_ops davinci_ops = {
 	.init		= davinci_musb_init,
 	.init		= davinci_musb_init,
 	.exit		= davinci_musb_exit,
 	.exit		= davinci_musb_exit,
 
 
@@ -551,6 +551,8 @@ static int __init davinci_probe(struct platform_device *pdev)
 	glue->dev			= &pdev->dev;
 	glue->dev			= &pdev->dev;
 	glue->musb			= musb;
 	glue->musb			= musb;
 
 
+	pdata->platform_ops		= &davinci_ops;
+
 	platform_set_drvdata(pdev, glue);
 	platform_set_drvdata(pdev, glue);
 
 
 	ret = platform_device_add_resources(musb, pdev->resource,
 	ret = platform_device_add_resources(musb, pdev->resource,

+ 1 - 1
drivers/usb/musb/musb_core.c

@@ -1897,7 +1897,6 @@ allocate_instance(struct device *dev,
 	}
 	}
 
 
 	musb->controller = dev;
 	musb->controller = dev;
-	musb->ops = &musb_ops;
 
 
 	return musb;
 	return musb;
 }
 }
@@ -1997,6 +1996,7 @@ bad_config:
 	musb->board_set_power = plat->set_power;
 	musb->board_set_power = plat->set_power;
 	musb->set_clock = plat->set_clock;
 	musb->set_clock = plat->set_clock;
 	musb->min_power = plat->min_power;
 	musb->min_power = plat->min_power;
+	musb->ops = plat->platform_ops;
 
 
 	/* Clock usage is chip-specific ... functional clock (DaVinci,
 	/* Clock usage is chip-specific ... functional clock (DaVinci,
 	 * OMAP2430), or PHY ref (some TUSB6010 boards).  All this core
 	 * OMAP2430), or PHY ref (some TUSB6010 boards).  All this core

+ 0 - 2
drivers/usb/musb/musb_core.h

@@ -281,8 +281,6 @@ struct musb_platform_ops {
 	void	(*set_vbus)(struct musb *musb, int on);
 	void	(*set_vbus)(struct musb *musb, int on);
 };
 };
 
 
-extern const struct musb_platform_ops musb_ops;
-
 /*
 /*
  * struct musb_hw_ep - endpoint hardware (bidirectional)
  * struct musb_hw_ep - endpoint hardware (bidirectional)
  *
  *

+ 3 - 1
drivers/usb/musb/omap2430.c

@@ -333,7 +333,7 @@ static int omap2430_musb_exit(struct musb *musb)
 	return 0;
 	return 0;
 }
 }
 
 
-const struct musb_platform_ops musb_ops = {
+static const struct musb_platform_ops omap2430_ops = {
 	.init		= omap2430_musb_init,
 	.init		= omap2430_musb_init,
 	.exit		= omap2430_musb_exit,
 	.exit		= omap2430_musb_exit,
 
 
@@ -378,6 +378,8 @@ static int __init omap2430_probe(struct platform_device *pdev)
 	glue->dev			= &pdev->dev;
 	glue->dev			= &pdev->dev;
 	glue->musb			= musb;
 	glue->musb			= musb;
 
 
+	pdata->platform_ops		= &omap2430_ops;
+
 	platform_set_drvdata(pdev, glue);
 	platform_set_drvdata(pdev, glue);
 
 
 	ret = platform_device_add_resources(musb, pdev->resource,
 	ret = platform_device_add_resources(musb, pdev->resource,

+ 3 - 1
drivers/usb/musb/tusb6010.c

@@ -1178,7 +1178,7 @@ static int tusb_musb_exit(struct musb *musb)
 	return 0;
 	return 0;
 }
 }
 
 
-const struct musb_platform_ops musb_ops = {
+static const struct musb_platform_ops tusb_ops = {
 	.init		= tusb_musb_init,
 	.init		= tusb_musb_init,
 	.exit		= tusb_musb_exit,
 	.exit		= tusb_musb_exit,
 
 
@@ -1221,6 +1221,8 @@ static int __init tusb_probe(struct platform_device *pdev)
 	glue->dev			= &pdev->dev;
 	glue->dev			= &pdev->dev;
 	glue->musb			= musb;
 	glue->musb			= musb;
 
 
+	pdata->platform_ops		= &tusb_ops;
+
 	platform_set_drvdata(pdev, glue);
 	platform_set_drvdata(pdev, glue);
 
 
 	ret = platform_device_add_resources(musb, pdev->resource,
 	ret = platform_device_add_resources(musb, pdev->resource,

+ 3 - 0
include/linux/usb/musb.h

@@ -126,6 +126,9 @@ struct musb_hdrc_platform_data {
 
 
 	/* Architecture specific board data	*/
 	/* Architecture specific board data	*/
 	void		*board_data;
 	void		*board_data;
+
+	/* Platform specific struct musb_ops pointer */
+	const void	*platform_ops;
 };
 };