usb: host: tegra: replace CONFIG_USB_HOTPLUG to tegra_ehci_platform_data
Kurt Yi [Wed, 11 Jan 2012 12:11:07 +0000 (21:11 +0900)]
remove CONFIG_USB_HOTPLUG and add default_enable into tegra_ehci_platform_data
We can't use different def_config because whistler & ventana source code
is merged in same tree.

BUG 923705

Change-Id: I3dfdf237d80865831264f02104c89c8088101905
Reviewed-on: http://git-master/r/74574
Signed-off-by: Kurt Yi <kyi@nvidia.com>
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Reviewed-on: http://git-master/r/75888
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>

Rebase-Id: R339ecb775785dfac34f46d6895b8162c06b0e1c3

drivers/usb/host/ehci-tegra.c
drivers/usb/otg/tegra-otg.c
include/linux/platform_data/tegra_usb.h

index edaed60..da13a33 100644 (file)
@@ -68,6 +68,7 @@ struct tegra_ehci_hcd {
        int bus_suspended;
        int port_resuming;
        int power_down_on_bus_suspend;
+       int default_enable;
        struct delayed_work work;
        enum tegra_usb_phy_port_speed port_speed;
        struct work_struct clk_timer_work;
@@ -83,9 +84,8 @@ static void tegra_ehci_power_up(struct usb_hcd *hcd, bool is_dpd)
 {
        struct tegra_ehci_hcd *tegra = dev_get_drvdata(hcd->self.controller);
 
-#ifndef CONFIG_USB_HOTPLUG
-       clk_enable(tegra->clk);
-#endif
+       if (!tegra->default_enable)
+               clk_enable(tegra->clk);
        tegra_usb_phy_power_on(tegra->phy, is_dpd);
        tegra->host_resumed = 1;
 }
@@ -96,9 +96,8 @@ static void tegra_ehci_power_down(struct usb_hcd *hcd, bool is_dpd)
 
        tegra->host_resumed = 0;
        tegra_usb_phy_power_off(tegra->phy, is_dpd);
-#ifndef CONFIG_USB_HOTPLUG
-       clk_disable(tegra->clk);
-#endif
+       if (!tegra->default_enable)
+               clk_disable(tegra->clk);
 }
 
 static int tegra_ehci_internal_port_reset(
@@ -1065,6 +1064,7 @@ static int tegra_ehci_probe(struct platform_device *pdev)
        }
 
        platform_set_drvdata(pdev, tegra);
+       tegra->default_enable = pdata->default_enable;
 
        tegra->clk = clk_get(&pdev->dev, NULL);
        if (IS_ERR(tegra->clk)) {
@@ -1233,15 +1233,13 @@ static int tegra_ehci_resume(struct platform_device *pdev)
        struct usb_hcd *hcd = ehci_to_hcd(tegra->ehci);
 
        if ((tegra->bus_suspended) && (tegra->power_down_on_bus_suspend)) {
-#ifdef CONFIG_USB_HOTPLUG
-               clk_enable(tegra->clk);
-#endif
+               if (tegra->default_enable)
+                       clk_enable(tegra->clk);
                return 0;
        }
 
-#ifdef CONFIG_USB_HOTPLUG
-       clk_enable(tegra->clk);
-#endif
+       if (tegra->default_enable)
+               clk_enable(tegra->clk);
        return tegra_usb_resume(hcd, true);
 }
 
@@ -1260,9 +1258,8 @@ static int tegra_ehci_suspend(struct platform_device *pdev, pm_message_t state)
        }
 
        if ((tegra->bus_suspended) && (tegra->power_down_on_bus_suspend)) {
-#ifdef CONFIG_USB_HOTPLUG
-               clk_disable(tegra->clk);
-#endif
+               if (tegra->default_enable)
+                       clk_disable(tegra->clk);
                return 0;
        }
 
@@ -1270,9 +1267,8 @@ static int tegra_ehci_suspend(struct platform_device *pdev, pm_message_t state)
                msleep(10);
 
        ret = tegra_usb_suspend(hcd, true);
-#ifdef CONFIG_USB_HOTPLUG
-       clk_disable(tegra->clk);
-#endif
+       if (tegra->default_enable)
+               clk_disable(tegra->clk);
        return ret;
 }
 #endif
index a063630..d23356e 100644 (file)
@@ -324,6 +324,8 @@ static int tegra_otg_set_suspend(struct otg_transceiver *otg, int suspend)
 static int tegra_otg_probe(struct platform_device *pdev)
 {
        struct tegra_otg_data *tegra;
+       struct tegra_otg_platform_data *otg_pdata;
+       struct tegra_ehci_platform_data *ehci_pdata;
        struct resource *res;
        int err;
 
@@ -332,6 +334,8 @@ static int tegra_otg_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        tegra->otg.dev = &pdev->dev;
+       otg_pdata = tegra->otg.dev->platform_data;
+       ehci_pdata = otg_pdata->ehci_pdata;
        tegra->otg.label = "tegra-otg";
        tegra->otg.state = OTG_STATE_UNDEFINED;
        tegra->otg.set_host = tegra_otg_set_host;
@@ -391,9 +395,8 @@ static int tegra_otg_probe(struct platform_device *pdev)
        }
        INIT_WORK (&tegra->work, irq_work);
 
-#ifndef CONFIG_USB_HOTPLUG
-       clk_disable(tegra->clk);
-#endif
+       if (!ehci_pdata->default_enable)
+               clk_disable(tegra->clk);
        dev_info(&pdev->dev, "otg transceiver registered\n");
        return 0;
 
index 09f32de..e6377c3 100644 (file)
@@ -35,6 +35,7 @@ struct tegra_ehci_platform_data {
        /* power down the phy on bus suspend */
        int power_down_on_bus_suspend;
        int hotplug;
+       int default_enable;
        void *phy_config;
        enum tegra_usb_phy_type phy_type;
 };