usb: otg: ulpi: Start using struct usb_otg
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Mon, 13 Feb 2012 11:24:13 +0000 (13:24 +0200)
committerFelipe Balbi <balbi@ti.com>
Mon, 13 Feb 2012 11:35:56 +0000 (13:35 +0200)
Use struct usb_otg members with OTG specific functions instead
of usb_phy members.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
arch/arm/mach-pxa/pxa3xx-ulpi.c
arch/arm/plat-mxc/include/mach/ulpi.h
arch/arm/plat-mxc/ulpi.c
drivers/usb/otg/ulpi.c
drivers/usb/otg/ulpi_viewport.c
include/linux/usb/ulpi.h

index 960d0ac50418e407eee9fc678988e19b79442f81..a13f33565623946e98f9f9a5e16e7e7a2fec2399 100644 (file)
@@ -111,7 +111,7 @@ static int pxa310_ulpi_write(struct usb_phy *otg, u32 val, u32 reg)
        return pxa310_ulpi_poll();
 }
 
-struct otg_io_access_ops pxa310_ulpi_access_ops = {
+struct usb_phy_io_ops pxa310_ulpi_access_ops = {
        .read   = pxa310_ulpi_read,
        .write  = pxa310_ulpi_write,
 };
@@ -139,7 +139,7 @@ static int pxa310_start_otg_host_transcvr(struct usb_bus *host)
 
        pxa310_otg_transceiver_rtsm();
 
-       err = otg_init(u2d->otg);
+       err = usb_phy_init(u2d->otg);
        if (err) {
                pr_err("OTG transceiver init failed");
                return err;
@@ -191,7 +191,7 @@ static void pxa310_stop_otg_hc(void)
 
        otg_set_host(u2d->otg, NULL);
        otg_set_vbus(u2d->otg, 0);
-       otg_shutdown(u2d->otg);
+       usb_phy_shutdown(u2d->otg);
 }
 
 static void pxa310_u2d_setup_otg_hc(void)
index d39d94a170e770e1874a70831560e301d85741ba..42bdaca6d7d912eff447e2e262005d090d81317c 100644 (file)
@@ -10,7 +10,7 @@ static inline struct usb_phy *imx_otg_ulpi_create(unsigned int flags)
 }
 #endif
 
-extern struct otg_io_access_ops mxc_ulpi_access_ops;
+extern struct usb_phy_io_ops mxc_ulpi_access_ops;
 
 #endif /* __MACH_ULPI_H */
 
index 8eeeb6b979c47d83ac09b25c98d0df31590093ad..d2963427184f64ae942ad7e02a70ea4cf27addc9 100644 (file)
@@ -106,7 +106,7 @@ static int ulpi_write(struct usb_phy *otg, u32 val, u32 reg)
        return ulpi_poll(view, ULPIVW_RUN);
 }
 
-struct otg_io_access_ops mxc_ulpi_access_ops = {
+struct usb_phy_io_ops mxc_ulpi_access_ops = {
        .read   = ulpi_read,
        .write  = ulpi_write,
 };
index 51841ed829ab7dc7bfe81c65b8e73b519c636c72..217339dd7a902072ff9bab540a60f140aa49fd81 100644 (file)
@@ -49,31 +49,31 @@ static struct ulpi_info ulpi_ids[] = {
        ULPI_INFO(ULPI_ID(0x0424, 0x0006), "SMSC USB331x"),
 };
 
-static int ulpi_set_otg_flags(struct usb_phy *otg)
+static int ulpi_set_otg_flags(struct usb_phy *phy)
 {
        unsigned int flags = ULPI_OTG_CTRL_DP_PULLDOWN |
                             ULPI_OTG_CTRL_DM_PULLDOWN;
 
-       if (otg->flags & ULPI_OTG_ID_PULLUP)
+       if (phy->flags & ULPI_OTG_ID_PULLUP)
                flags |= ULPI_OTG_CTRL_ID_PULLUP;
 
        /*
         * ULPI Specification rev.1.1 default
         * for Dp/DmPulldown is enabled.
         */
-       if (otg->flags & ULPI_OTG_DP_PULLDOWN_DIS)
+       if (phy->flags & ULPI_OTG_DP_PULLDOWN_DIS)
                flags &= ~ULPI_OTG_CTRL_DP_PULLDOWN;
 
-       if (otg->flags & ULPI_OTG_DM_PULLDOWN_DIS)
+       if (phy->flags & ULPI_OTG_DM_PULLDOWN_DIS)
                flags &= ~ULPI_OTG_CTRL_DM_PULLDOWN;
 
-       if (otg->flags & ULPI_OTG_EXTVBUSIND)
+       if (phy->flags & ULPI_OTG_EXTVBUSIND)
                flags |= ULPI_OTG_CTRL_EXTVBUSIND;
 
-       return otg_io_write(otg, flags, ULPI_OTG_CTRL);
+       return usb_phy_io_write(phy, flags, ULPI_OTG_CTRL);
 }
 
-static int ulpi_set_fc_flags(struct usb_phy *otg)
+static int ulpi_set_fc_flags(struct usb_phy *phy)
 {
        unsigned int flags = 0;
 
@@ -81,27 +81,27 @@ static int ulpi_set_fc_flags(struct usb_phy *otg)
         * ULPI Specification rev.1.1 default
         * for XcvrSelect is Full Speed.
         */
-       if (otg->flags & ULPI_FC_HS)
+       if (phy->flags & ULPI_FC_HS)
                flags |= ULPI_FUNC_CTRL_HIGH_SPEED;
-       else if (otg->flags & ULPI_FC_LS)
+       else if (phy->flags & ULPI_FC_LS)
                flags |= ULPI_FUNC_CTRL_LOW_SPEED;
-       else if (otg->flags & ULPI_FC_FS4LS)
+       else if (phy->flags & ULPI_FC_FS4LS)
                flags |= ULPI_FUNC_CTRL_FS4LS;
        else
                flags |= ULPI_FUNC_CTRL_FULL_SPEED;
 
-       if (otg->flags & ULPI_FC_TERMSEL)
+       if (phy->flags & ULPI_FC_TERMSEL)
                flags |= ULPI_FUNC_CTRL_TERMSELECT;
 
        /*
         * ULPI Specification rev.1.1 default
         * for OpMode is Normal Operation.
         */
-       if (otg->flags & ULPI_FC_OP_NODRV)
+       if (phy->flags & ULPI_FC_OP_NODRV)
                flags |= ULPI_FUNC_CTRL_OPMODE_NONDRIVING;
-       else if (otg->flags & ULPI_FC_OP_DIS_NRZI)
+       else if (phy->flags & ULPI_FC_OP_DIS_NRZI)
                flags |= ULPI_FUNC_CTRL_OPMODE_DISABLE_NRZI;
-       else if (otg->flags & ULPI_FC_OP_NSYNC_NEOP)
+       else if (phy->flags & ULPI_FC_OP_NSYNC_NEOP)
                flags |= ULPI_FUNC_CTRL_OPMODE_NOSYNC_NOEOP;
        else
                flags |= ULPI_FUNC_CTRL_OPMODE_NORMAL;
@@ -112,54 +112,54 @@ static int ulpi_set_fc_flags(struct usb_phy *otg)
         */
        flags |= ULPI_FUNC_CTRL_SUSPENDM;
 
-       return otg_io_write(otg, flags, ULPI_FUNC_CTRL);
+       return usb_phy_io_write(phy, flags, ULPI_FUNC_CTRL);
 }
 
-static int ulpi_set_ic_flags(struct usb_phy *otg)
+static int ulpi_set_ic_flags(struct usb_phy *phy)
 {
        unsigned int flags = 0;
 
-       if (otg->flags & ULPI_IC_AUTORESUME)
+       if (phy->flags & ULPI_IC_AUTORESUME)
                flags |= ULPI_IFC_CTRL_AUTORESUME;
 
-       if (otg->flags & ULPI_IC_EXTVBUS_INDINV)
+       if (phy->flags & ULPI_IC_EXTVBUS_INDINV)
                flags |= ULPI_IFC_CTRL_EXTERNAL_VBUS;
 
-       if (otg->flags & ULPI_IC_IND_PASSTHRU)
+       if (phy->flags & ULPI_IC_IND_PASSTHRU)
                flags |= ULPI_IFC_CTRL_PASSTHRU;
 
-       if (otg->flags & ULPI_IC_PROTECT_DIS)
+       if (phy->flags & ULPI_IC_PROTECT_DIS)
                flags |= ULPI_IFC_CTRL_PROTECT_IFC_DISABLE;
 
-       return otg_io_write(otg, flags, ULPI_IFC_CTRL);
+       return usb_phy_io_write(phy, flags, ULPI_IFC_CTRL);
 }
 
-static int ulpi_set_flags(struct usb_phy *otg)
+static int ulpi_set_flags(struct usb_phy *phy)
 {
        int ret;
 
-       ret = ulpi_set_otg_flags(otg);
+       ret = ulpi_set_otg_flags(phy);
        if (ret)
                return ret;
 
-       ret = ulpi_set_ic_flags(otg);
+       ret = ulpi_set_ic_flags(phy);
        if (ret)
                return ret;
 
-       return ulpi_set_fc_flags(otg);
+       return ulpi_set_fc_flags(phy);
 }
 
-static int ulpi_check_integrity(struct usb_phy *otg)
+static int ulpi_check_integrity(struct usb_phy *phy)
 {
        int ret, i;
        unsigned int val = 0x55;
 
        for (i = 0; i < 2; i++) {
-               ret = otg_io_write(otg, val, ULPI_SCRATCH);
+               ret = usb_phy_io_write(phy, val, ULPI_SCRATCH);
                if (ret < 0)
                        return ret;
 
-               ret = otg_io_read(otg, ULPI_SCRATCH);
+               ret = usb_phy_io_read(phy, ULPI_SCRATCH);
                if (ret < 0)
                        return ret;
 
@@ -175,13 +175,13 @@ static int ulpi_check_integrity(struct usb_phy *otg)
        return 0;
 }
 
-static int ulpi_init(struct usb_phy *otg)
+static int ulpi_init(struct usb_phy *phy)
 {
        int i, vid, pid, ret;
        u32 ulpi_id = 0;
 
        for (i = 0; i < 4; i++) {
-               ret = otg_io_read(otg, ULPI_PRODUCT_ID_HIGH - i);
+               ret = usb_phy_io_read(phy, ULPI_PRODUCT_ID_HIGH - i);
                if (ret < 0)
                        return ret;
                ulpi_id = (ulpi_id << 8) | ret;
@@ -199,16 +199,17 @@ static int ulpi_init(struct usb_phy *otg)
                }
        }
 
-       ret = ulpi_check_integrity(otg);
+       ret = ulpi_check_integrity(phy);
        if (ret)
                return ret;
 
-       return ulpi_set_flags(otg);
+       return ulpi_set_flags(phy);
 }
 
-static int ulpi_set_host(struct usb_phy *otg, struct usb_bus *host)
+static int ulpi_set_host(struct usb_otg *otg, struct usb_bus *host)
 {
-       unsigned int flags = otg_io_read(otg, ULPI_IFC_CTRL);
+       struct usb_phy *phy = otg->phy;
+       unsigned int flags = usb_phy_io_read(phy, ULPI_IFC_CTRL);
 
        if (!host) {
                otg->host = NULL;
@@ -221,51 +222,62 @@ static int ulpi_set_host(struct usb_phy *otg, struct usb_bus *host)
                   ULPI_IFC_CTRL_3_PIN_SERIAL_MODE |
                   ULPI_IFC_CTRL_CARKITMODE);
 
-       if (otg->flags & ULPI_IC_6PIN_SERIAL)
+       if (phy->flags & ULPI_IC_6PIN_SERIAL)
                flags |= ULPI_IFC_CTRL_6_PIN_SERIAL_MODE;
-       else if (otg->flags & ULPI_IC_3PIN_SERIAL)
+       else if (phy->flags & ULPI_IC_3PIN_SERIAL)
                flags |= ULPI_IFC_CTRL_3_PIN_SERIAL_MODE;
-       else if (otg->flags & ULPI_IC_CARKIT)
+       else if (phy->flags & ULPI_IC_CARKIT)
                flags |= ULPI_IFC_CTRL_CARKITMODE;
 
-       return otg_io_write(otg, flags, ULPI_IFC_CTRL);
+       return usb_phy_io_write(phy, flags, ULPI_IFC_CTRL);
 }
 
-static int ulpi_set_vbus(struct usb_phy *otg, bool on)
+static int ulpi_set_vbus(struct usb_otg *otg, bool on)
 {
-       unsigned int flags = otg_io_read(otg, ULPI_OTG_CTRL);
+       struct usb_phy *phy = otg->phy;
+       unsigned int flags = usb_phy_io_read(phy, ULPI_OTG_CTRL);
 
        flags &= ~(ULPI_OTG_CTRL_DRVVBUS | ULPI_OTG_CTRL_DRVVBUS_EXT);
 
        if (on) {
-               if (otg->flags & ULPI_OTG_DRVVBUS)
+               if (phy->flags & ULPI_OTG_DRVVBUS)
                        flags |= ULPI_OTG_CTRL_DRVVBUS;
 
-               if (otg->flags & ULPI_OTG_DRVVBUS_EXT)
+               if (phy->flags & ULPI_OTG_DRVVBUS_EXT)
                        flags |= ULPI_OTG_CTRL_DRVVBUS_EXT;
        }
 
-       return otg_io_write(otg, flags, ULPI_OTG_CTRL);
+       return usb_phy_io_write(phy, flags, ULPI_OTG_CTRL);
 }
 
 struct usb_phy *
-otg_ulpi_create(struct otg_io_access_ops *ops,
+otg_ulpi_create(struct usb_phy_io_ops *ops,
                unsigned int flags)
 {
-       struct usb_phy *otg;
+       struct usb_phy *phy;
+       struct usb_otg *otg;
+
+       phy = kzalloc(sizeof(*phy), GFP_KERNEL);
+       if (!phy)
+               return NULL;
 
        otg = kzalloc(sizeof(*otg), GFP_KERNEL);
-       if (!otg)
+       if (!otg) {
+               kfree(phy);
                return NULL;
+       }
+
+       phy->label      = "ULPI";
+       phy->flags      = flags;
+       phy->io_ops     = ops;
+       phy->otg        = otg;
+       phy->init       = ulpi_init;
 
-       otg->label      = "ULPI";
-       otg->flags      = flags;
-       otg->io_ops     = ops;
-       otg->init       = ulpi_init;
+       otg->phy        = phy;
        otg->set_host   = ulpi_set_host;
        otg->set_vbus   = ulpi_set_vbus;
 
-       return otg;
+       return phy;
 }
 EXPORT_SYMBOL_GPL(otg_ulpi_create);
 
index e7b311b960bd6ce7e435995e0b62d7f37ccdad52..c5ba7e5423fc5626701aeb029e6c720d90649c18 100644 (file)
@@ -74,7 +74,7 @@ static int ulpi_viewport_write(struct usb_phy *otg, u32 val, u32 reg)
        return ulpi_viewport_wait(view, ULPI_VIEW_RUN);
 }
 
-struct otg_io_access_ops ulpi_viewport_access_ops = {
+struct usb_phy_io_ops ulpi_viewport_access_ops = {
        .read   = ulpi_viewport_read,
        .write  = ulpi_viewport_write,
 };
index 51ebf72bc449bcfee443e2045af4deacb293b85b..6f033a415ecb85caa0291a58940922b5d6304419 100644 (file)
 
 /*-------------------------------------------------------------------------*/
 
-struct usb_phy *otg_ulpi_create(struct otg_io_access_ops *ops,
+struct usb_phy *otg_ulpi_create(struct usb_phy_io_ops *ops,
                                        unsigned int flags);
 
 #ifdef CONFIG_USB_ULPI_VIEWPORT
 /* access ops for controllers with a viewport register */
-extern struct otg_io_access_ops ulpi_viewport_access_ops;
+extern struct usb_phy_io_ops ulpi_viewport_access_ops;
 #endif
 
 #endif /* __LINUX_USB_ULPI_H */