struct tegra_ehci_platform_data tegra_ehci1_pdata = {
        .operating_mode = TEGRA_USB_OTG,
        .power_down_on_bus_suspend = 1,
+       .vbus_gpio = -1,
 };
 
 struct tegra_ehci_platform_data tegra_ehci2_pdata = {
        .phy_config = &tegra_ehci2_ulpi_phy_config,
        .operating_mode = TEGRA_USB_HOST,
        .power_down_on_bus_suspend = 1,
+       .vbus_gpio = -1,
 };
 
 struct tegra_ehci_platform_data tegra_ehci3_pdata = {
        .operating_mode = TEGRA_USB_HOST,
        .power_down_on_bus_suspend = 1,
+       .vbus_gpio = -1,
 };
 
 static u64 tegra_ehci_dmamask = DMA_BIT_MASK(32);
 
        .port_handed_over       = ehci_port_handed_over,
 };
 
-static int setup_vbus_gpio(struct platform_device *pdev)
+static int setup_vbus_gpio(struct platform_device *pdev,
+                          struct tegra_ehci_platform_data *pdata)
 {
        int err = 0;
        int gpio;
 
-       if (!pdev->dev.of_node)
-               return 0;
-
-       gpio = of_get_named_gpio(pdev->dev.of_node, "nvidia,vbus-gpio", 0);
+       gpio = pdata->vbus_gpio;
+       if (!gpio_is_valid(gpio))
+               gpio = of_get_named_gpio(pdev->dev.of_node,
+                                        "nvidia,vbus-gpio", 0);
        if (!gpio_is_valid(gpio))
                return 0;
 
        if (!pdev->dev.dma_mask)
                pdev->dev.dma_mask = &tegra_ehci_dma_mask;
 
-       setup_vbus_gpio(pdev);
+       setup_vbus_gpio(pdev, pdata);
 
        tegra = kzalloc(sizeof(struct tegra_ehci_hcd), GFP_KERNEL);
        if (!tegra)