#include <linux/mtd/nand.h>
 #include <linux/mmc/host.h>
 #include <linux/usb/phy.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 
 #include <linux/regulator/machine.h>
 #include <linux/i2c/twl.h>
 static struct gpio_led gpio_leds[];
 
 /* PHY's VCC regulator might be added later, so flag that we need it */
-static struct nop_usb_xceiv_platform_data hsusb2_phy_data = {
+static struct usb_phy_gen_xceiv_platform_data hsusb2_phy_data = {
        .needs_vcc = true,
 };
 
 
 #include <linux/i2c/twl.h>
 #include <linux/usb/otg.h>
 #include <linux/usb/musb.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 #include <linux/smsc911x.h>
 
 #include <linux/wl12xx.h>
 static struct regulator_consumer_supply omap3evm_vaux2_supplies[] = {
        REGULATOR_SUPPLY("VDD_CSIPHY1", "omap3isp"),    /* OMAP ISP */
        REGULATOR_SUPPLY("VDD_CSIPHY2", "omap3isp"),    /* OMAP ISP */
-       REGULATOR_SUPPLY("vcc", "nop_usb_xceiv.2"),     /* hsusb port 2 */
+       REGULATOR_SUPPLY("vcc", "usb_phy_gen_xceiv.2"), /* hsusb port 2 */
        REGULATOR_SUPPLY("vaux2", NULL),
 };
 
 
 };
 
 static struct regulator_consumer_supply pandora_usb_phy_supply[] = {
-       REGULATOR_SUPPLY("vcc", "nop_usb_xceiv.2"),     /* hsusb port 2 */
+       REGULATOR_SUPPLY("vcc", "usb_phy_gen_xceiv.2"), /* hsusb port 2 */
 };
 
 /* ads7846 on SPI and 2 nub controllers on I2C */
 
 #include <linux/io.h>
 #include <linux/gpio.h>
 #include <linux/usb/phy.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 
 #include "soc.h"
 #include "omap_device.h"
        /* .init_data filled later */
 };
 
-static const char *nop_name = "nop_usb_xceiv"; /* NOP PHY driver */
+static const char *nop_name = "usb_phy_gen_xceiv"; /* NOP PHY driver */
 static const char *reg_name = "reg-fixed-voltage"; /* Regulator driver */
 
 /**
                pdevinfo.name = nop_name;
                pdevinfo.id = phy->port;
                pdevinfo.data = phy->platform_data;
-               pdevinfo.size_data = sizeof(struct nop_usb_xceiv_platform_data);
-
-               scnprintf(phy_id, MAX_STR, "nop_usb_xceiv.%d",
+               pdevinfo.size_data =
+                       sizeof(struct usb_phy_gen_xceiv_platform_data);
+               scnprintf(phy_id, MAX_STR, "usb_phy_gen_xceiv.%d",
                                        phy->port);
                pdev = platform_device_register_full(&pdevinfo);
                if (IS_ERR(pdev)) {
 
 #include <linux/dma-mapping.h>
 #include <linux/clk.h>
 #include <linux/usb/otg.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 #include <linux/of.h>
 #include <linux/of_platform.h>
 
 
 static int dwc3_exynos_register_phys(struct dwc3_exynos *exynos)
 {
-       struct nop_usb_xceiv_platform_data pdata;
+       struct usb_phy_gen_xceiv_platform_data pdata;
        struct platform_device  *pdev;
        int                     ret;
 
        memset(&pdata, 0x00, sizeof(pdata));
 
-       pdev = platform_device_alloc("nop_usb_xceiv", PLATFORM_DEVID_AUTO);
+       pdev = platform_device_alloc("usb_phy_gen_xceiv", PLATFORM_DEVID_AUTO);
        if (!pdev)
                return -ENOMEM;
 
        if (ret)
                goto err1;
 
-       pdev = platform_device_alloc("nop_usb_xceiv", PLATFORM_DEVID_AUTO);
+       pdev = platform_device_alloc("usb_phy_gen_xceiv", PLATFORM_DEVID_AUTO);
        if (!pdev) {
                ret = -ENOMEM;
                goto err1;
 
 #include <linux/platform_device.h>
 
 #include <linux/usb/otg.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 
 /* FIXME define these in <linux/pci_ids.h> */
 #define PCI_VENDOR_ID_SYNOPSYS         0x16c3
 
 static int dwc3_pci_register_phys(struct dwc3_pci *glue)
 {
-       struct nop_usb_xceiv_platform_data pdata;
+       struct usb_phy_gen_xceiv_platform_data pdata;
        struct platform_device  *pdev;
        int                     ret;
 
        memset(&pdata, 0x00, sizeof(pdata));
 
-       pdev = platform_device_alloc("nop_usb_xceiv", 0);
+       pdev = platform_device_alloc("usb_phy_gen_xceiv", 0);
        if (!pdev)
                return -ENOMEM;
 
        if (ret)
                goto err1;
 
-       pdev = platform_device_alloc("nop_usb_xceiv", 1);
+       pdev = platform_device_alloc("usb_phy_gen_xceiv", 1);
        if (!pdev) {
                ret = -ENOMEM;
                goto err1;
 
 #include <linux/io.h>
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 #include <linux/platform_data/usb-omap.h>
 
 #include "musb_core.h"
 
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
 #include <linux/prefetch.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 
 #include <asm/cacheflush.h>
 
 
 #include <linux/io.h>
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 
 #include <mach/da8xx.h>
 #include <linux/platform_data/usb-davinci.h>
 
 #include <linux/gpio.h>
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 
 #include <mach/cputype.h>
 #include <mach/hardware.h>
 
 #include <linux/dma-mapping.h>
 #include <linux/pm_runtime.h>
 #include <linux/module.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 #include <linux/platform_data/usb-omap.h>
 #include <linux/sizes.h>
 
 
 #include <linux/io.h>
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 
 #include "musb_core.h"
 
 
 obj-$(CONFIG_FSL_USB2_OTG)             += phy-fsl-usb2.o
 obj-$(CONFIG_ISP1301_OMAP)             += phy-isp1301-omap.o
 obj-$(CONFIG_MV_U3D_PHY)               += phy-mv-u3d-usb.o
-obj-$(CONFIG_NOP_USB_XCEIV)            += phy-nop.o
+obj-$(CONFIG_NOP_USB_XCEIV)            += phy-generic.o
 obj-$(CONFIG_OMAP_CONTROL_USB)         += phy-omap-control.o
 obj-$(CONFIG_OMAP_USB2)                        += phy-omap-usb2.o
 obj-$(CONFIG_OMAP_USB3)                        += phy-omap-usb3.o
 
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
 #include <linux/usb/otg.h>
-#include <linux/usb/nop-usb-xceiv.h>
+#include <linux/usb/usb_phy_gen_xceiv.h>
 #include <linux/slab.h>
 #include <linux/clk.h>
 #include <linux/regulator/consumer.h>
 #include <linux/of.h>
 
-struct nop_usb_xceiv {
+struct usb_phy_gen_xceiv {
        struct usb_phy phy;
        struct device *dev;
        struct clk *clk;
 {
        if (pd)
                return;
-       pd = platform_device_register_simple("nop_usb_xceiv", -1, NULL, 0);
+       pd = platform_device_register_simple("usb_phy_gen_xceiv", -1, NULL, 0);
        if (!pd) {
-               printk(KERN_ERR "Unable to register usb nop transceiver\n");
+               pr_err("Unable to register generic usb transceiver\n");
                return;
        }
 }
 
 static int nop_init(struct usb_phy *phy)
 {
-       struct nop_usb_xceiv *nop = dev_get_drvdata(phy->dev);
+       struct usb_phy_gen_xceiv *nop = dev_get_drvdata(phy->dev);
 
        if (!IS_ERR(nop->vcc)) {
                if (regulator_enable(nop->vcc))
 
 static void nop_shutdown(struct usb_phy *phy)
 {
-       struct nop_usb_xceiv *nop = dev_get_drvdata(phy->dev);
+       struct usb_phy_gen_xceiv *nop = dev_get_drvdata(phy->dev);
 
        if (!IS_ERR(nop->reset)) {
                /* Assert RESET */
        return 0;
 }
 
-static int nop_usb_xceiv_probe(struct platform_device *pdev)
+static int usb_phy_gen_xceiv_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
-       struct nop_usb_xceiv_platform_data *pdata = pdev->dev.platform_data;
-       struct nop_usb_xceiv    *nop;
+       struct usb_phy_gen_xceiv_platform_data *pdata = pdev->dev.platform_data;
+       struct usb_phy_gen_xceiv        *nop;
        enum usb_phy_type       type = USB_PHY_TYPE_USB2;
        int err;
        u32 clk_rate = 0;
        return err;
 }
 
-static int nop_usb_xceiv_remove(struct platform_device *pdev)
+static int usb_phy_gen_xceiv_remove(struct platform_device *pdev)
 {
-       struct nop_usb_xceiv *nop = platform_get_drvdata(pdev);
+       struct usb_phy_gen_xceiv *nop = platform_get_drvdata(pdev);
 
        if (!IS_ERR(nop->clk))
                clk_unprepare(nop->clk);
 
 MODULE_DEVICE_TABLE(of, nop_xceiv_dt_ids);
 
-static struct platform_driver nop_usb_xceiv_driver = {
-       .probe          = nop_usb_xceiv_probe,
-       .remove         = nop_usb_xceiv_remove,
+static struct platform_driver usb_phy_gen_xceiv_driver = {
+       .probe          = usb_phy_gen_xceiv_probe,
+       .remove         = usb_phy_gen_xceiv_remove,
        .driver         = {
-               .name   = "nop_usb_xceiv",
+               .name   = "usb_phy_gen_xceiv",
                .owner  = THIS_MODULE,
                .of_match_table = nop_xceiv_dt_ids,
        },
 };
 
-static int __init nop_usb_xceiv_init(void)
+static int __init usb_phy_gen_xceiv_init(void)
 {
-       return platform_driver_register(&nop_usb_xceiv_driver);
+       return platform_driver_register(&usb_phy_gen_xceiv_driver);
 }
-subsys_initcall(nop_usb_xceiv_init);
+subsys_initcall(usb_phy_gen_xceiv_init);
 
-static void __exit nop_usb_xceiv_exit(void)
+static void __exit usb_phy_gen_xceiv_exit(void)
 {
-       platform_driver_unregister(&nop_usb_xceiv_driver);
+       platform_driver_unregister(&usb_phy_gen_xceiv_driver);
 }
-module_exit(nop_usb_xceiv_exit);
+module_exit(usb_phy_gen_xceiv_exit);
 
-MODULE_ALIAS("platform:nop_usb_xceiv");
+MODULE_ALIAS("platform:usb_phy_gen_xceiv");
 MODULE_AUTHOR("Texas Instruments Inc");
 MODULE_DESCRIPTION("NOP USB Transceiver driver");
 MODULE_LICENSE("GPL");
 
 
 #include <linux/usb/otg.h>
 
-struct nop_usb_xceiv_platform_data {
+struct usb_phy_gen_xceiv_platform_data {
        enum usb_phy_type type;
        unsigned long clk_rate;
 
        unsigned int needs_reset:1;
 };
 
-#if defined(CONFIG_NOP_USB_XCEIV) || (defined(CONFIG_NOP_USB_XCEIV_MODULE) && defined(MODULE))
+#if IS_ENABLED(CONFIG_NOP_USB_XCEIV)
 /* sometimes transceivers are accessed only through e.g. ULPI */
 extern void usb_nop_xceiv_register(void);
 extern void usb_nop_xceiv_unregister(void);