diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2011-04-13 14:04:12 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:43:23 -0800 |
commit | e0eb8e1b0d9e6bd20e6c6b6b136a98db728730e7 (patch) | |
tree | 4459fced02e0f83a3912e03b3e6e554631380c9f /drivers/spi | |
parent | 741c56effdb7695e29aaca68b954456541afbfa0 (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.c | 15 |
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; } |