summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authorShardar Shariff Md <smohammed@nvidia.com>2013-09-11 18:34:27 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-16 17:42:14 -0700
commitb90c3489607328a20cf54c1819ff7f0425ebb33a (patch)
tree6848a5a28b07055248654ac6abf47f481bf66c00 /drivers/spi
parentd3e6089ceaff6a3861d931a83afbc21da207c8a2 (diff)
arm: tegra12: spi: Set RX_TAP_DELAY depending on speed
Set rx_tap_delay to 10 when speed > 35MHz and board specific rx_clk_tap_delay data is zero. Bug 1245131 Change-Id: Ie38469dac8d80737da5e45b9022ef1276b7fc883 Signed-off-by: Shardar Shariff Md <smohammed@nvidia.com> Reviewed-on: http://git-master/r/273189 Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/spi-tegra114.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
index f967434a1ff0..37d6c85dcd35 100644
--- a/drivers/spi/spi-tegra114.c
+++ b/drivers/spi/spi-tegra114.c
@@ -169,6 +169,11 @@
#define MAX_CHIP_SELECT 4
#define SPI_FIFO_DEPTH 64
+#ifdef CONFIG_ARCH_TEGRA_12x_SOC
+#define SPI_SPEED_TAP_DELAY_MARGIN 35000000
+#define SPI_DEFAULT_RX_TAP_DELAY 10
+#endif
+
struct tegra_spi_data {
struct device *dev;
struct spi_master *master;
@@ -776,7 +781,13 @@ static int tegra_spi_start_transfer_one(struct spi_device *spi,
u32 command2_reg;
u32 rx_tap_delay;
u32 tx_tap_delay;
-
+#ifdef CONFIG_ARCH_TEGRA_12x_SOC
+ if (cdata->rx_clk_tap_delay == 0) {
+ if (speed > SPI_SPEED_TAP_DELAY_MARGIN)
+ cdata->rx_clk_tap_delay =
+ SPI_DEFAULT_RX_TAP_DELAY;
+ }
+#endif
rx_tap_delay = min(cdata->rx_clk_tap_delay, 63);
tx_tap_delay = min(cdata->tx_clk_tap_delay, 63);
command2_reg = SPI_TX_TAP_DELAY(tx_tap_delay) |