summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2011-04-13 14:04:12 +0530
committerNiket Sirsi <nsirsi@nvidia.com>2011-08-16 16:25:14 -0700
commit9b66ffc8ab01b56753dac6c978c89ba2dbb8e09e (patch)
treebad71f6e64fe42eae246a0bc5a284df92e461b7b
parent9f4a4ab7234dcf130d897faa12e9d965edaa3c50 (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. Reviewed-on: http://git-master/r/27607 (cherry picked from commit b4b9ec736286c23b699f94eac52094bb1b92774c) Change-Id: I7d71eb211429a2cf989b30a42e86464d17856df3 Reviewed-on: http://git-master/r/47151 Reviewed-by: Niket Sirsi <nsirsi@nvidia.com> Tested-by: Niket Sirsi <nsirsi@nvidia.com>
-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 99b03d4dd7be..441e9732555a 100644
--- a/drivers/spi/spi_tegra.c
+++ b/drivers/spi/spi_tegra.c
@@ -226,8 +226,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,
@@ -736,8 +734,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;
}