summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2011-04-13 14:04:12 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:43:23 -0800
commite0eb8e1b0d9e6bd20e6c6b6b136a98db728730e7 (patch)
tree4459fced02e0f83a3912e03b3e6e554631380c9f /drivers/spi
parent741c56effdb7695e29aaca68b954456541afbfa0 (diff)
spi: tegra: Spi controller configured during device setup
When spi device calls the setup, the interface to that device should be configured immediately. For this, it is required to configure controller in setup call. Original-Change-Id: I77795c476729fe7403529a45cdf99d5732ad0784 Reviewed-on: http://git-master/r/27607 Reviewed-by: Niket Sirsi <nsirsi@nvidia.com> Tested-by: Niket Sirsi <nsirsi@nvidia.com> Original-Change-Id: I9a3f200dbea7d8cc057bb5413e790c28578e77cf Rebase-Id: R7e9907797bf951a9f7b9b6db0a440b3796dc977c
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/spi-tegra.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/spi/spi-tegra.c b/drivers/spi/spi-tegra.c
index a2efa7e7d79e..4d80e8316aa1 100644
--- a/drivers/spi/spi-tegra.c
+++ b/drivers/spi/spi-tegra.c
@@ -233,8 +233,6 @@ struct spi_tegra_data {
u32 dma_control_reg;
u32 def_command_reg;
u32 def_command2_reg;
- u32 max_speed[MAX_CHIP_SELECT];
- u32 modes[MAX_CHIP_SELECT];
};
static inline unsigned long spi_tegra_readl(struct spi_tegra_data *tspi,
@@ -752,8 +750,17 @@ static int spi_tegra_setup(struct spi_device *spi)
else
val &= ~cs_bit;
tspi->def_command_reg |= val;
- tspi->modes[spi->chip_select] = spi->mode;
- tspi->max_speed[spi->chip_select] = spi->max_speed_hz;
+
+ if (!tspi->is_clkon_always && !tspi->clk_state) {
+ clk_enable(tspi->clk);
+ tspi->clk_state = 1;
+ }
+ spi_tegra_writel(tspi, tspi->def_command_reg, SLINK_COMMAND);
+ if (!tspi->is_clkon_always && tspi->clk_state) {
+ clk_disable(tspi->clk);
+ tspi->clk_state = 0;
+ }
+
spin_unlock_irqrestore(&tspi->lock, flags);
return 0;
}