Use the new phy-da8xx-usb driver to take the place of the mach code that
pokes CFGCHIP2 in the da8xx musb glue driver.
Signed-off-by: David Lechner <david@xxxxxxxxxxxxxx>
---
v2 changes: This is part of a previous patch that was split. This version uses
the new phy driver instead of a second clock. It also gets rid of more mach
code.
drivers/usb/musb/da8xx.c | 126 ++++++++++++-----------------------------------
1 file changed, 31 insertions(+), 95 deletions(-)
diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
index 50f07a5..1d51711 100644
--- a/drivers/usb/musb/da8xx.c
+++ b/drivers/usb/musb/da8xx.c
@@ -30,13 +30,11 @@
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/io.h>
+#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/dma-mapping.h>
#include <linux/usb/usb_phy_generic.h>
-#include <mach/da8xx.h>
-#include <linux/platform_data/usb-davinci.h>
@@ -383,31 +335,18 @@ static irqreturn_t da8xx_musb_interrupt(int irq, void *hci)
return ret;
}
+extern int da8xx_usb20_phy_set_mode(struct phy *phy, enum musb_mode mode);
+
@@ -425,19 +364,24 @@ static int da8xx_musb_init(struct musb *musb)[...]
/* Start the on-chip PHY and its PLL. */
- phy_on();
+ phy_power_on(glue->phy);
@@ -448,9 +392,12 @@ fail:
static int da8xx_musb_exit(struct musb *musb)
{
+ struct da8xx_glue *glue = dev_get_drvdata(musb->controller->parent);
+
del_timer_sync(&otg_workaround);
- phy_off();
+ phy_power_off(glue->phy);
@@ -503,19 +450,19 @@ static int da8xx_probe(struct platform_device *pdev)[...]
glue->dev = &pdev->dev;
pdata->platform_ops = &da8xx_ops;
- glue->phy = usb_phy_generic_register();
- if (IS_ERR(glue->phy)) {
- ret = PTR_ERR(glue->phy);
- goto err5;
+ glue->usb_phy = usb_phy_generic_register();