summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}