summaryrefslogtreecommitdiff
path: root/sound/soc/tegra/tegra20_i2s.h
diff options
context:
space:
mode:
authorSumit Bhattacharya <sumitb@nvidia.com>2011-10-31 18:21:56 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:49:51 -0800
commit0d4fbfce61e987643280cd75ac341a58315a4f83 (patch)
treebf85e59ec2c1d984104b288289c4d85d1c0bfd80 /sound/soc/tegra/tegra20_i2s.h
parente616d388496d5fd5bd7fd21e5be3bae44a271b55 (diff)
asoc: tegra: Add support for Tegra20 I2s PCM mode
Add support for Tegra20 I2s PCM mode which is required for playback or record through BT SCO interface. Bug 872652 Signed-off-by: Sumit Bhattacharya <sumitb@nvidia.com> Change-Id: Ia4ba1fc308f2e8adb3697ae600a1664aa14467e9 Reviewed-on: http://git-master/r/61232 Tested-by: Sumit Bhattacharya <sumitb@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R058f7951f0d4bdb5cfe4d997326a2456cc8b105c
Diffstat (limited to 'sound/soc/tegra/tegra20_i2s.h')
-rw-r--r--sound/soc/tegra/tegra20_i2s.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/sound/soc/tegra/tegra20_i2s.h b/sound/soc/tegra/tegra20_i2s.h
index 198c02345dbb..b2d3ef710599 100644
--- a/sound/soc/tegra/tegra20_i2s.h
+++ b/sound/soc/tegra/tegra20_i2s.h
@@ -152,6 +152,31 @@
#define TEGRA20_I2S_FIFO_SCR_FIFO1_ATN_LVL_EIGHT_SLOTS (TEGRA20_I2S_FIFO_ATN_LVL_EIGHT_SLOTS << TEGRA20_I2S_FIFO_SCR_FIFO1_ATN_LVL_SHIFT)
#define TEGRA20_I2S_FIFO_SCR_FIFO1_ATN_LVL_TWELVE_SLOTS (TEGRA20_I2S_FIFO_ATN_LVL_TWELVE_SLOTS << TEGRA20_I2S_FIFO_SCR_FIFO1_ATN_LVL_SHIFT)
+/* Fields in TEGRA20_I2S_PCM_CTRL */
+
+#define TEGRA20_I2S_PCM_TX_POS_EDGE_NO_HIGHZ 0
+#define TEGRA20_I2S_PCM_TX_POS_EDGE_HIGHZ 1
+#define TEGRA20_I2S_PCM_TX_NEG_EDGE_NO_HIGHZ 2
+#define TEGRA20_I2S_PCM_TX_NEG_EDGE_HIGHZ 3
+
+#define TEGRA20_I2S_PCM_CTRL_TX_EDGE_CTRL_SHIFT 9
+#define TEGRA20_I2S_PCM_CTRL_TX_EDGE_CTRL_MASK (0x3 << TEGRA20_I2S_PCM_CTRL_TX_EDGE_CTRL_SHIFT)
+#define TEGRA20_I2S_PCM_CTRL_TX_POS_EDGE_NO_HIGHZ (TEGRA20_I2S_PCM_TX_POS_EDGE_NO_HIGHZ << TEGRA20_I2S_PCM_CTRL_TX_EDGE_CTRL_SHIFT)
+#define TEGRA20_I2S_PCM_CTRL_TX_POS_EDGE_HIGHZ (TEGRA20_I2S_PCM_TX_POS_EDGE_HIGHZ << TEGRA20_I2S_PCM_CTRL_TX_EDGE_CTRL_SHIFT)
+#define TEGRA20_I2S_PCM_CTRL_TX_NEG_EDGE_NO_HIGHZ (TEGRA20_I2S_PCM_TX_NEG_EDGE_NO_HIGHZ << TEGRA20_I2S_PCM_CTRL_TX_EDGE_CTRL_SHIFT)
+#define TEGRA20_I2S_PCM_CTRL_TX_NEG_EDGE_HIGHZ (TEGRA20_I2S_PCM_TX_NEG_EDGE_HIGHZ << TEGRA20_I2S_PCM_CTRL_TX_EDGE_CTRL_SHIFT)
+
+#define TEGRA20_I2S_PCM_CTRL_TX_MASK_BITS_SHIFT 6
+#define TEGRA20_I2S_PCM_CTRL_TX_MASK_BITS_MASK (0x7 << TEGRA20_I2S_PCM_CTRL_TX_MASK_BITS_SHIFT)
+
+#define TEGRA20_I2S_PCM_CTRL_FSYNC_LONG (1 << 5)
+#define TEGRA20_I2S_PCM_CTRL_TRM_MODE_EN (1 << 4)
+
+#define TEGRA20_I2S_PCM_CTRL_RX_MASK_BITS_SHIFT 1
+#define TEGRA20_I2S_PCM_CTRL_RX_MASK_BITS_MASK (0x7 << TEGRA20_I2S_PCM_CTRL_RX_MASK_BITS_SHIFT)
+
+#define TEGRA20_I2S_PCM_CTRL_RCV_MODE_EN (1 << 0)
+
struct tegra20_i2s {
struct clk *clk_i2s;
struct tegra_pcm_dma_params capture_dma_data;