]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
xhci: tegra21: disable SS clk decreasing and ELPG
authorJC Kuo <jckuo@nvidia.com>
Thu, 28 Aug 2014 12:59:11 +0000 (05:59 -0700)
committerDeepak Nibade <dnibade@nvidia.com>
Tue, 2 Sep 2014 07:52:58 +0000 (13:22 +0530)
For SS clock decreasing/increasing, we are still working
with hardware group for a proper sequence.
T210 ELPG is yet to verified.

Change-Id: I2ed4431ffffe6bf8e9cc2b021608f69896ab9b7a
Signed-off-by: JC Kuo <jckuo@nvidia.com>
Reviewed-on: http://git-master/r/491556
GVS: Gerrit_Virtual_Submit
Reviewed-by: Mitch Luban <mluban@nvidia.com>
drivers/usb/host/xhci-tegra.c
drivers/usb/host/xhci-tegra.h

index 0c30256b5e23b52a59daa0f46f5017b48ea1dc31..c3b4e4abc27931413bda05db2b62cd00e198385f 100644 (file)
@@ -2949,6 +2949,18 @@ tegra_xhci_process_mbox_message(struct work_struct *work)
                goto send_sw_response;
        case MBOX_CMD_INC_SSPI_CLOCK:
        case MBOX_CMD_DEC_SSPI_CLOCK:
+               if (XUSB_IS_T210(tegra)) {
+                       /*
+                        * TODO: temporarily skip SSPI clock changing for T210.
+                        * Hardware group will provide proper sequence.
+                        */
+                       pr_warn("%s: ignore SSPI clock request.\n", __func__);
+                       sw_resp = CMD_DATA(tegra->cmd_data) |
+                                               CMD_TYPE(MBOX_CMD_ACK);
+                       goto send_sw_response;
+
+               }
+
                ret = tegra_xusb_request_clk_rate(
                                tegra,
                                tegra->ss_src_clk,
@@ -3229,6 +3241,11 @@ static int tegra_xhci_bus_suspend(struct usb_hcd *hcd)
        u32 host_ports = get_host_controlled_ports(tegra);
        unsigned long flags;
 
+       if (XUSB_IS_T210(tegra)) {
+               pr_debug("%s T210 ELPG is not verified yet\n", __func__);
+               return -EBUSY;
+       }
+
        mutex_lock(&tegra->sync_lock);
 
        if (xhci->shared_hcd == hcd) {
@@ -4493,7 +4510,8 @@ static int tegra_xhci_probe(struct platform_device *pdev)
        tegra->device_id = (val >> 16) & 0xffff;
 
        dev_info(&pdev->dev, "XUSB device id = 0x%x (%s)\n", tegra->device_id,
-               (XUSB_DEVICE_ID_T114 == tegra->device_id) ? "T114" : "T124+");
+               XUSB_IS_T114(tegra) ? "T114" : XUSB_IS_T124(tegra) ? "T124" :
+               XUSB_IS_T210(tegra) ? "T210" : "UNKNOWN");
 
        tegra->padregs = soc_config->padctl_offsets;
 
index 6f4f64e13b6a7bbcc951b086803a7782bb02baa5..0456196cba958714d8c00e70286700069ea6ae29 100644 (file)
@@ -58,6 +58,8 @@
 #define XUSB_DEVICE_ID_T114                            0x0E16
 #define XUSB_DEVICE_ID_T124                            0x0FA3
 #define XUSB_DEVICE_ID_T210                            0x0FAC
+#define XUSB_IS_T114(t)        (t->device_id == XUSB_DEVICE_ID_T114)
+#define XUSB_IS_T124(t)        (t->device_id == XUSB_DEVICE_ID_T124)
 #define XUSB_IS_T114_OR_T124(t)                        \
        ((t->device_id == XUSB_DEVICE_ID_T114) ||       \
                (t->device_id == XUSB_DEVICE_ID_T124))