drivers: usb: musb: adopt musb backend driver to driver model

Currently all backend driver ops uses hard coded physical
address, so to adopt the driver to DM, add device pointer to ops
call backs so that drivers can get physical addresses from the
usb driver priv/plat data.

Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
diff --git a/arch/arm/include/asm/arch-omap3/musb.h b/arch/arm/include/asm/arch-omap3/musb.h
index cee4ed3..d06a758 100644
--- a/arch/arm/include/asm/arch-omap3/musb.h
+++ b/arch/arm/include/asm/arch-omap3/musb.h
@@ -7,7 +7,7 @@
 
 #ifndef __ASM_ARCH_OMAP3_MUSB_H
 #define __ASM_ARCH_OMAP3_MUSB_H
-extern void am35x_musb_reset(void);
-extern void am35x_musb_phy_power(u8 on);
-extern void am35x_musb_clear_irq(void);
+void am35x_musb_reset(struct udevice *dev);
+void am35x_musb_phy_power(struct udevice *dev, u8 on);
+void am35x_musb_clear_irq(struct udevice *dev);
 #endif
diff --git a/arch/arm/include/asm/omap_musb.h b/arch/arm/include/asm/omap_musb.h
index 8b9cb0e..7c5fb40 100644
--- a/arch/arm/include/asm/omap_musb.h
+++ b/arch/arm/include/asm/omap_musb.h
@@ -15,9 +15,10 @@
 
 struct omap_musb_board_data {
 	u8 interface_type;
-	void (*set_phy_power)(u8 on);
-	void (*clear_irq)(void);
-	void (*reset)(void);
+	struct udevice *dev;
+	void (*set_phy_power)(struct udevice *dev, u8 on);
+	void (*clear_irq)(struct udevice *dev);
+	void (*reset)(struct udevice *dev);
 };
 
 enum musb_interface    {MUSB_INTERFACE_ULPI, MUSB_INTERFACE_UTMI};
diff --git a/arch/arm/mach-omap2/am33xx/board.c b/arch/arm/mach-omap2/am33xx/board.c
index 2ce7790..581c0ab 100644
--- a/arch/arm/mach-omap2/am33xx/board.c
+++ b/arch/arm/mach-omap2/am33xx/board.c
@@ -148,7 +148,7 @@
 };
 
 #ifdef CONFIG_AM335X_USB0
-static void am33xx_otg0_set_phy_power(u8 on)
+static void am33xx_otg0_set_phy_power(struct udevice *dev, u8 on)
 {
 	am33xx_usb_set_phy_power(on, &cdev->usb_ctrl0);
 }
@@ -167,7 +167,7 @@
 #endif
 
 #ifdef CONFIG_AM335X_USB1
-static void am33xx_otg1_set_phy_power(u8 on)
+static void am33xx_otg1_set_phy_power(struct udevice *dev, u8 on)
 {
 	am33xx_usb_set_phy_power(on, &cdev->usb_ctrl1);
 }
diff --git a/arch/arm/mach-omap2/omap3/am35x_musb.c b/arch/arm/mach-omap2/omap3/am35x_musb.c
index 74dd105..d542699 100644
--- a/arch/arm/mach-omap2/omap3/am35x_musb.c
+++ b/arch/arm/mach-omap2/omap3/am35x_musb.c
@@ -13,7 +13,7 @@
 #include <asm/io.h>
 #include <asm/arch/am35x_def.h>
 
-void am35x_musb_reset(void)
+void am35x_musb_reset(struct udevice *dev)
 {
 	/* Reset the musb interface */
 	clrsetbits_le32(&am35x_scm_general_regs->ip_sw_reset,
@@ -22,7 +22,7 @@
 			USBOTGSS_SW_RST, 0);
 }
 
-void am35x_musb_phy_power(u8 on)
+void am35x_musb_phy_power(struct udevice *dev, u8 on)
 {
 	unsigned long start = get_timer(0);
 
@@ -53,7 +53,7 @@
 	}
 }
 
-void am35x_musb_clear_irq(void)
+void am35x_musb_clear_irq(struct udevice *dev)
 {
 	clrsetbits_le32(&am35x_scm_general_regs->lvl_intr_clr,
 			0, USBOTGSS_INT_CLR);
diff --git a/drivers/usb/musb-new/am35x.c b/drivers/usb/musb-new/am35x.c
index b8791dd..0167ea7 100644
--- a/drivers/usb/musb-new/am35x.c
+++ b/drivers/usb/musb-new/am35x.c
@@ -336,7 +336,7 @@
 	if (ret == IRQ_HANDLED || epintr || usbintr) {
 		/* clear level interrupt */
 		if (data->clear_irq)
-			data->clear_irq();
+			data->clear_irq(data->dev);
 		/* write EOI */
 		musb_writel(reg_base, USB_END_OF_INTR_REG, 0);
 	}
@@ -401,14 +401,14 @@
 
 	/* Reset the musb */
 	if (data->reset)
-		data->reset();
+		data->reset(data->dev);
 
 	/* Reset the controller */
 	musb_writel(reg_base, USB_CTRL_REG, AM35X_SOFT_RESET_MASK);
 
 	/* Start the on-chip PHY and its PLL. */
 	if (data->set_phy_power)
-		data->set_phy_power(1);
+		data->set_phy_power(data->dev, 1);
 
 	msleep(5);
 
@@ -416,7 +416,7 @@
 
 	/* clear level interrupt */
 	if (data->clear_irq)
-		data->clear_irq();
+		data->clear_irq(data->dev);
 
 	return 0;
 }
@@ -439,7 +439,7 @@
 
 	/* Shutdown the on-chip PHY and its PLL. */
 	if (data->set_phy_power)
-		data->set_phy_power(0);
+		data->set_phy_power(data->dev, 0);
 
 #ifndef __UBOOT__
 	usb_put_phy(musb->xceiv);
@@ -630,7 +630,7 @@
 
 	/* Shutdown the on-chip PHY and its PLL. */
 	if (data->set_phy_power)
-		data->set_phy_power(0);
+		data->set_phy_power(data->dev, 0);
 
 	clk_disable(glue->phy_clk);
 	clk_disable(glue->clk);
@@ -647,7 +647,7 @@
 
 	/* Start the on-chip PHY and its PLL. */
 	if (data->set_phy_power)
-		data->set_phy_power(1);
+		data->set_phy_power(data->dev, 1);
 
 	ret = clk_enable(glue->phy_clk);
 	if (ret) {
diff --git a/drivers/usb/musb-new/musb_dsps.c b/drivers/usb/musb-new/musb_dsps.c
index a71db76..399b85b 100644
--- a/drivers/usb/musb-new/musb_dsps.c
+++ b/drivers/usb/musb-new/musb_dsps.c
@@ -452,7 +452,7 @@
 
 	/* Start the on-chip PHY and its PLL. */
 	if (data->set_phy_power)
-		data->set_phy_power(1);
+		data->set_phy_power(data->dev, 1);
 
 	musb->isr = dsps_interrupt;
 
@@ -493,7 +493,7 @@
 
 	/* Shutdown the on-chip PHY and its PLL. */
 	if (data->set_phy_power)
-		data->set_phy_power(0);
+		data->set_phy_power(data->dev, 0);
 
 #ifndef __UBOOT__
 	/* NOP driver needs change if supporting dual instance */
@@ -693,7 +693,7 @@
 
 	/* Shutdown the on-chip PHY and its PLL. */
 	if (data->set_phy_power)
-		data->set_phy_power(0);
+		data->set_phy_power(data->dev, 0);
 
 	return 0;
 }
@@ -705,7 +705,7 @@
 
 	/* Start the on-chip PHY and its PLL. */
 	if (data->set_phy_power)
-		data->set_phy_power(1);
+		data->set_phy_power(data->dev, 1);
 
 	return 0;
 }