Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9e8c85e authored by Felipe Balbi's avatar Felipe Balbi
Browse files

usb: musb: make modules behave better



There's really no point in doing all that
initcall trickery when we can safely let
udev handle module probing for us.

Remove all of that trickery, by moving everybody
to module_init() and making proper use of
platform_device_register() rather than
platform_device_probe().

Tested-by: default avatarRajashekhara, Sudhakar <sudhakar.raj@ti.com>
Tested-by: default avatarTasslehoff Kjappfot <tasskjapp@gmail.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent f5579787
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -456,7 +456,7 @@ static const struct musb_platform_ops am35x_ops = {

static u64 am35x_dmamask = DMA_BIT_MASK(32);

static int __init am35x_probe(struct platform_device *pdev)
static int __devinit am35x_probe(struct platform_device *pdev)
{
	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
	struct platform_device		*musb;
@@ -561,7 +561,7 @@ static int __init am35x_probe(struct platform_device *pdev)
	return ret;
}

static int __exit am35x_remove(struct platform_device *pdev)
static int __devexit am35x_remove(struct platform_device *pdev)
{
	struct am35x_glue	*glue = platform_get_drvdata(pdev);

@@ -630,7 +630,8 @@ static struct dev_pm_ops am35x_pm_ops = {
#endif

static struct platform_driver am35x_driver = {
	.remove		= __exit_p(am35x_remove),
	.probe		= am35x_probe,
	.remove		= __devexit_p(am35x_remove),
	.driver		= {
		.name	= "musb-am35x",
		.pm	= DEV_PM_OPS,
@@ -643,9 +644,9 @@ MODULE_LICENSE("GPL v2");

static int __init am35x_init(void)
{
	return platform_driver_probe(&am35x_driver, am35x_probe);
	return platform_driver_register(&am35x_driver);
}
subsys_initcall(am35x_init);
module_init(am35x_init);

static void __exit am35x_exit(void)
{
+5 −4
Original line number Diff line number Diff line
@@ -463,7 +463,7 @@ static const struct musb_platform_ops bfin_ops = {

static u64 bfin_dmamask = DMA_BIT_MASK(32);

static int __init bfin_probe(struct platform_device *pdev)
static int __devinit bfin_probe(struct platform_device *pdev)
{
	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
	struct platform_device		*musb;
@@ -525,7 +525,7 @@ static int __init bfin_probe(struct platform_device *pdev)
	return ret;
}

static int __exit bfin_remove(struct platform_device *pdev)
static int __devexit bfin_remove(struct platform_device *pdev)
{
	struct bfin_glue		*glue = platform_get_drvdata(pdev);

@@ -575,6 +575,7 @@ static struct dev_pm_ops bfin_pm_ops = {
#endif

static struct platform_driver bfin_driver = {
	.probe		= bfin_probe,
	.remove		= __exit_p(bfin_remove),
	.driver		= {
		.name	= "musb-blackfin",
@@ -588,9 +589,9 @@ MODULE_LICENSE("GPL v2");

static int __init bfin_init(void)
{
	return platform_driver_probe(&bfin_driver, bfin_probe);
	return platform_driver_register(&bfin_driver);
}
subsys_initcall(bfin_init);
module_init(bfin_init);

static void __exit bfin_exit(void)
{
+6 −5
Original line number Diff line number Diff line
@@ -478,7 +478,7 @@ static const struct musb_platform_ops da8xx_ops = {

static u64 da8xx_dmamask = DMA_BIT_MASK(32);

static int __init da8xx_probe(struct platform_device *pdev)
static int __devinit da8xx_probe(struct platform_device *pdev)
{
	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
	struct platform_device		*musb;
@@ -562,7 +562,7 @@ static int __init da8xx_probe(struct platform_device *pdev)
	return ret;
}

static int __exit da8xx_remove(struct platform_device *pdev)
static int __devexit da8xx_remove(struct platform_device *pdev)
{
	struct da8xx_glue		*glue = platform_get_drvdata(pdev);

@@ -576,7 +576,8 @@ static int __exit da8xx_remove(struct platform_device *pdev)
}

static struct platform_driver da8xx_driver = {
	.remove		= __exit_p(da8xx_remove),
	.probe		= da8xx_probe,
	.remove		= __devexit_p(da8xx_remove),
	.driver		= {
		.name	= "musb-da8xx",
	},
@@ -588,9 +589,9 @@ MODULE_LICENSE("GPL v2");

static int __init da8xx_init(void)
{
	return platform_driver_probe(&da8xx_driver, da8xx_probe);
	return platform_driver_register(&da8xx_driver);
}
subsys_initcall(da8xx_init);
module_init(da8xx_init);

static void __exit da8xx_exit(void)
{
+6 −5
Original line number Diff line number Diff line
@@ -514,7 +514,7 @@ static const struct musb_platform_ops davinci_ops = {

static u64 davinci_dmamask = DMA_BIT_MASK(32);

static int __init davinci_probe(struct platform_device *pdev)
static int __devinit davinci_probe(struct platform_device *pdev)
{
	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
	struct platform_device		*musb;
@@ -597,7 +597,7 @@ static int __init davinci_probe(struct platform_device *pdev)
	return ret;
}

static int __exit davinci_remove(struct platform_device *pdev)
static int __devexit davinci_remove(struct platform_device *pdev)
{
	struct davinci_glue		*glue = platform_get_drvdata(pdev);

@@ -611,7 +611,8 @@ static int __exit davinci_remove(struct platform_device *pdev)
}

static struct platform_driver davinci_driver = {
	.remove		= __exit_p(davinci_remove),
	.probe		= davinci_probe,
	.remove		= __devexit_p(davinci_remove),
	.driver		= {
		.name	= "musb-davinci",
	},
@@ -623,9 +624,9 @@ MODULE_LICENSE("GPL v2");

static int __init davinci_init(void)
{
	return platform_driver_probe(&davinci_driver, davinci_probe);
	return platform_driver_register(&davinci_driver);
}
subsys_initcall(davinci_init);
module_init(davinci_init);

static void __exit davinci_exit(void)
{
+23 −26
Original line number Diff line number Diff line
@@ -1014,12 +1014,12 @@ static void musb_shutdown(struct platform_device *pdev)
	|| defined(CONFIG_USB_MUSB_OMAP2PLUS_MODULE)	\
	|| defined(CONFIG_USB_MUSB_AM35X)		\
	|| defined(CONFIG_USB_MUSB_AM35X_MODULE)
static ushort __initdata fifo_mode = 4;
static ushort __devinitdata fifo_mode = 4;
#elif defined(CONFIG_USB_MUSB_UX500)			\
	|| defined(CONFIG_USB_MUSB_UX500_MODULE)
static ushort __initdata fifo_mode = 5;
static ushort __devinitdata fifo_mode = 5;
#else
static ushort __initdata fifo_mode = 2;
static ushort __devinitdata fifo_mode = 2;
#endif

/* "modprobe ... fifo_mode=1" etc */
@@ -1032,7 +1032,7 @@ MODULE_PARM_DESC(fifo_mode, "initial endpoint configuration");
 */

/* mode 0 - fits in 2KB */
static struct musb_fifo_cfg __initdata mode_0_cfg[] = {
static struct musb_fifo_cfg __devinitdata mode_0_cfg[] = {
{ .hw_ep_num = 1, .style = FIFO_TX,   .maxpacket = 512, },
{ .hw_ep_num = 1, .style = FIFO_RX,   .maxpacket = 512, },
{ .hw_ep_num = 2, .style = FIFO_RXTX, .maxpacket = 512, },
@@ -1041,7 +1041,7 @@ static struct musb_fifo_cfg __initdata mode_0_cfg[] = {
};

/* mode 1 - fits in 4KB */
static struct musb_fifo_cfg __initdata mode_1_cfg[] = {
static struct musb_fifo_cfg __devinitdata mode_1_cfg[] = {
{ .hw_ep_num = 1, .style = FIFO_TX,   .maxpacket = 512, .mode = BUF_DOUBLE, },
{ .hw_ep_num = 1, .style = FIFO_RX,   .maxpacket = 512, .mode = BUF_DOUBLE, },
{ .hw_ep_num = 2, .style = FIFO_RXTX, .maxpacket = 512, .mode = BUF_DOUBLE, },
@@ -1050,7 +1050,7 @@ static struct musb_fifo_cfg __initdata mode_1_cfg[] = {
};

/* mode 2 - fits in 4KB */
static struct musb_fifo_cfg __initdata mode_2_cfg[] = {
static struct musb_fifo_cfg __devinitdata mode_2_cfg[] = {
{ .hw_ep_num = 1, .style = FIFO_TX,   .maxpacket = 512, },
{ .hw_ep_num = 1, .style = FIFO_RX,   .maxpacket = 512, },
{ .hw_ep_num = 2, .style = FIFO_TX,   .maxpacket = 512, },
@@ -1060,7 +1060,7 @@ static struct musb_fifo_cfg __initdata mode_2_cfg[] = {
};

/* mode 3 - fits in 4KB */
static struct musb_fifo_cfg __initdata mode_3_cfg[] = {
static struct musb_fifo_cfg __devinitdata mode_3_cfg[] = {
{ .hw_ep_num = 1, .style = FIFO_TX,   .maxpacket = 512, .mode = BUF_DOUBLE, },
{ .hw_ep_num = 1, .style = FIFO_RX,   .maxpacket = 512, .mode = BUF_DOUBLE, },
{ .hw_ep_num = 2, .style = FIFO_TX,   .maxpacket = 512, },
@@ -1070,7 +1070,7 @@ static struct musb_fifo_cfg __initdata mode_3_cfg[] = {
};

/* mode 4 - fits in 16KB */
static struct musb_fifo_cfg __initdata mode_4_cfg[] = {
static struct musb_fifo_cfg __devinitdata mode_4_cfg[] = {
{ .hw_ep_num =  1, .style = FIFO_TX,   .maxpacket = 512, },
{ .hw_ep_num =  1, .style = FIFO_RX,   .maxpacket = 512, },
{ .hw_ep_num =  2, .style = FIFO_TX,   .maxpacket = 512, },
@@ -1101,7 +1101,7 @@ static struct musb_fifo_cfg __initdata mode_4_cfg[] = {
};

/* mode 5 - fits in 8KB */
static struct musb_fifo_cfg __initdata mode_5_cfg[] = {
static struct musb_fifo_cfg __devinitdata mode_5_cfg[] = {
{ .hw_ep_num =  1, .style = FIFO_TX,   .maxpacket = 512, },
{ .hw_ep_num =  1, .style = FIFO_RX,   .maxpacket = 512, },
{ .hw_ep_num =  2, .style = FIFO_TX,   .maxpacket = 512, },
@@ -1137,7 +1137,7 @@ static struct musb_fifo_cfg __initdata mode_5_cfg[] = {
 *
 * returns negative errno or offset for next fifo.
 */
static int __init
static int __devinit
fifo_setup(struct musb *musb, struct musb_hw_ep  *hw_ep,
		const struct musb_fifo_cfg *cfg, u16 offset)
{
@@ -1208,11 +1208,11 @@ fifo_setup(struct musb *musb, struct musb_hw_ep *hw_ep,
	return offset + (maxpacket << ((c_size & MUSB_FIFOSZ_DPB) ? 1 : 0));
}

static struct musb_fifo_cfg __initdata ep0_cfg = {
static struct musb_fifo_cfg __devinitdata ep0_cfg = {
	.style = FIFO_RXTX, .maxpacket = 64,
};

static int __init ep_config_from_table(struct musb *musb)
static int __devinit ep_config_from_table(struct musb *musb)
{
	const struct musb_fifo_cfg	*cfg;
	unsigned		i, n;
@@ -1303,7 +1303,7 @@ static int __init ep_config_from_table(struct musb *musb)
 * ep_config_from_hw - when MUSB_C_DYNFIFO_DEF is false
 * @param musb the controller
 */
static int __init ep_config_from_hw(struct musb *musb)
static int __devinit ep_config_from_hw(struct musb *musb)
{
	u8 epnum = 0;
	struct musb_hw_ep *hw_ep;
@@ -1350,7 +1350,7 @@ enum { MUSB_CONTROLLER_MHDRC, MUSB_CONTROLLER_HDRC, };
/* Initialize MUSB (M)HDRC part of the USB hardware subsystem;
 * configure endpoints, or take their config from silicon
 */
static int __init musb_core_init(u16 musb_type, struct musb *musb)
static int __devinit musb_core_init(u16 musb_type, struct musb *musb)
{
	u8 reg;
	char *type;
@@ -1586,7 +1586,7 @@ irqreturn_t musb_interrupt(struct musb *musb)
EXPORT_SYMBOL_GPL(musb_interrupt);

#ifndef CONFIG_MUSB_PIO_ONLY
static bool __initdata use_dma = 1;
static bool __devinitdata use_dma = 1;

/* "modprobe ... use_dma=0" etc */
module_param(use_dma, bool, 0);
@@ -1774,7 +1774,7 @@ static void musb_irq_work(struct work_struct *data)
 * Init support
 */

static struct musb *__init
static struct musb *__devinit
allocate_instance(struct device *dev,
		struct musb_hdrc_config *config, void __iomem *mbase)
{
@@ -1852,7 +1852,7 @@ static void musb_free(struct musb *musb)
 * @mregs: virtual address of controller registers,
 *	not yet corrected for platform-specific offsets
 */
static int __init
static int __devinit
musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
{
	int			status;
@@ -2072,7 +2072,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
static u64	*orig_dma_mask;
#endif

static int __init musb_probe(struct platform_device *pdev)
static int __devinit musb_probe(struct platform_device *pdev)
{
	struct device	*dev = &pdev->dev;
	int		irq = platform_get_irq_byname(pdev, "mc");
@@ -2101,7 +2101,7 @@ static int __init musb_probe(struct platform_device *pdev)
	return status;
}

static int __exit musb_remove(struct platform_device *pdev)
static int __devexit musb_remove(struct platform_device *pdev)
{
	struct musb	*musb = dev_to_musb(&pdev->dev);
	void __iomem	*ctrl_base = musb->ctrl_base;
@@ -2361,7 +2361,8 @@ static struct platform_driver musb_driver = {
		.owner		= THIS_MODULE,
		.pm		= MUSB_DEV_PM_OPS,
	},
	.remove		= __exit_p(musb_remove),
	.probe		= musb_probe,
	.remove		= __devexit_p(musb_remove),
	.shutdown	= musb_shutdown,
};

@@ -2377,13 +2378,9 @@ static int __init musb_init(void)
		", "
		"otg (peripheral+host)",
		musb_driver_name);
	return platform_driver_probe(&musb_driver, musb_probe);
	return platform_driver_register(&musb_driver);
}

/* make us init after usbcore and i2c (transceivers, regulators, etc)
 * and before usb gadget and host-side drivers start to register
 */
fs_initcall(musb_init);
module_init(musb_init);

static void __exit musb_cleanup(void)
{
Loading