diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2011-04-13 14:04:12 +0530 |
---|---|---|
committer | Niket Sirsi <nsirsi@nvidia.com> | 2011-08-16 16:25:14 -0700 |
commit | 9b66ffc8ab01b56753dac6c978c89ba2dbb8e09e (patch) | |
tree | bad71f6e64fe42eae246a0bc5a284df92e461b7b | |
parent | 9f4a4ab7234dcf130d897faa12e9d965edaa3c50 (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.c | 15 |
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; } |