diff options
author | Preetham Chandru R <pchandru@nvidia.com> | 2014-12-11 10:32:21 +0530 |
---|---|---|
committer | Matthew Pedro <mapedro@nvidia.com> | 2014-12-18 13:39:42 -0800 |
commit | 02057759d8344e6753cf5ec38c9a117490505aae (patch) | |
tree | da4d4235874bbab808e24075e174f6529ba63ed8 /drivers/ata | |
parent | df01beaacffd066cb685933245ddf51ddad63e4c (diff) |
ata: ahci: enable devsleep only for m-sata
enable devsleep only for m-sata connectors
Bug 1557711
Change-Id: If203e09ec005022e28aa2c4d7ac3816b83419c14
Signed-off-by: Preetham Chandru R <pchandru@nvidia.com>
Reviewed-on: http://git-master/r/662454
Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
Tested-by: Matthew Pedro <mapedro@nvidia.com>
Diffstat (limited to 'drivers/ata')
-rw-r--r-- | drivers/ata/ahci-tegra.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/ata/ahci-tegra.c b/drivers/ata/ahci-tegra.c index 3b78f7a1d390..e9ad38e5861c 100644 --- a/drivers/ata/ahci-tegra.c +++ b/drivers/ata/ahci-tegra.c @@ -344,6 +344,16 @@ enum clk_gate_state { CLK_ON, }; +enum sata_connectors { + MINI_SATA, + MICRO_SATA, + SLIMLINE_SATA, + E_SATA, + E_SATA_P, + SATA_EXPRESS, + STANDARD_SATA, +}; + char *sata_power_rails[] = { "avdd_sata", "vdd_sata", @@ -372,6 +382,7 @@ struct tegra_ahci_host_priv { struct device *dev; void *pg_save; enum sata_state pg_state; + enum sata_connectors sata_connector; struct list_head qc_list; struct clk *clk_sata; struct clk *clk_sata_oob; @@ -1065,6 +1076,13 @@ static int tegra_ahci_controller_init(struct tegra_ahci_host_priv *tegra_hpriv, val &= ~NVA2SATA_OOB_ON_POR_MASK; misc_writel(val, SATA_AUX_MISC_CNTL_1_REG); + if (tegra_hpriv->sata_connector != MINI_SATA) { + /* Disable DEVSLP Feature */ + val = misc_readl(SATA_AUX_MISC_CNTL_1_REG); + val &= ~SDS_SUPPORT; + misc_writel(val, SATA_AUX_MISC_CNTL_1_REG); + } + val = sata_readl(SATA_CONFIGURATION_0_OFFSET); val |= EN_FPCI; sata_writel(val, SATA_CONFIGURATION_0_OFFSET); @@ -2458,6 +2476,11 @@ static int tegra_ahci_init_one(struct platform_device *pdev) tegra_ahci_sata_clk_gate(); goto fail; } + if (of_property_read_u32(np, "nvidia,sata-connector-type", + &tegra_hpriv->sata_connector) < 0) { + tegra_hpriv->sata_connector = MINI_SATA; + } + } else { ahci_pdata = tegra_hpriv->dev->platform_data; tegra_hpriv->pexp_gpio = ahci_pdata->pexp_gpio; |