| /* |
| * linux/sound/soc/samsung/i2s-regs.h |
| * |
| * Copyright (c) 2011 Samsung Electronics Co., Ltd. |
| * http://www.samsung.com |
| * |
| * Samsung I2S driver's register header |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License as published by the |
| * Free Software Foundation; either version 2 of the License, or (at your |
| * option) any later version. |
| */ |
| |
| #ifndef __SND_SOC_SAMSUNG_I2S_REGS_H |
| #define __SND_SOC_SAMSUNG_I2S_REGS_H |
| |
| #define I2SCON 0x0 |
| #define I2SMOD 0x4 |
| #define I2SFIC 0x8 |
| #define I2SPSR 0xc |
| #define I2STXD 0x10 |
| #define I2SRXD 0x14 |
| #define I2SFICS 0x18 |
| #define I2STXDS 0x1c |
| #define I2SAHB 0x20 |
| #define I2SSTR0 0x24 |
| #define I2SSIZE 0x28 |
| #define I2STRNCNT 0x2c |
| #define I2SLVL0ADDR 0x30 |
| #define I2SLVL1ADDR 0x34 |
| #define I2SLVL2ADDR 0x38 |
| #define I2SLVL3ADDR 0x3c |
| #define I2SSTR1 0x40 |
| #define I2SVER 0x44 |
| #define I2SFIC1 0x48 |
| #define I2STDM 0x4c |
| |
| #define CON_RSTCLR (1 << 31) |
| #define CON_FRXOFSTATUS (1 << 26) |
| #define CON_FRXORINTEN (1 << 25) |
| #define CON_FTXSURSTAT (1 << 24) |
| #define CON_FTXSURINTEN (1 << 23) |
| #define CON_TXSDMA_PAUSE (1 << 20) |
| #define CON_TXSDMA_ACTIVE (1 << 18) |
| |
| #define CON_FTXURSTATUS (1 << 17) |
| #define CON_FTXURINTEN (1 << 16) |
| #define CON_TXFIFO2_EMPTY (1 << 15) |
| #define CON_TXFIFO1_EMPTY (1 << 14) |
| #define CON_TXFIFO2_FULL (1 << 13) |
| #define CON_TXFIFO1_FULL (1 << 12) |
| |
| #define CON_LRINDEX (1 << 11) |
| #define CON_TXFIFO_EMPTY (1 << 10) |
| #define CON_RXFIFO_EMPTY (1 << 9) |
| #define CON_TXFIFO_FULL (1 << 8) |
| #define CON_RXFIFO_FULL (1 << 7) |
| #define CON_TXDMA_PAUSE (1 << 6) |
| #define CON_RXDMA_PAUSE (1 << 5) |
| #define CON_TXCH_PAUSE (1 << 4) |
| #define CON_RXCH_PAUSE (1 << 3) |
| #define CON_TXDMA_ACTIVE (1 << 2) |
| #define CON_RXDMA_ACTIVE (1 << 1) |
| #define CON_ACTIVE (1 << 0) |
| |
| #define MOD_OPCLK_CDCLK_OUT (0 << 30) |
| #define MOD_OPCLK_CDCLK_IN (1 << 30) |
| #define MOD_OPCLK_BCLK_OUT (2 << 30) |
| #define MOD_OPCLK_PCLK (3 << 30) |
| #define MOD_OPCLK_MASK (3 << 30) |
| #define MOD_TXS_IDMA (1 << 28) /* Sec_TXFIFO use I-DMA */ |
| |
| #define MOD_BLCS_SHIFT 26 |
| #define MOD_BLCS_16BIT (0 << MOD_BLCS_SHIFT) |
| #define MOD_BLCS_8BIT (1 << MOD_BLCS_SHIFT) |
| #define MOD_BLCS_24BIT (2 << MOD_BLCS_SHIFT) |
| #define MOD_BLCS_MASK (3 << MOD_BLCS_SHIFT) |
| #define MOD_BLCP_SHIFT 24 |
| #define MOD_BLCP_16BIT (0 << MOD_BLCP_SHIFT) |
| #define MOD_BLCP_8BIT (1 << MOD_BLCP_SHIFT) |
| #define MOD_BLCP_24BIT (2 << MOD_BLCP_SHIFT) |
| #define MOD_BLCP_MASK (3 << MOD_BLCP_SHIFT) |
| |
| #define MOD_C2DD_HHALF (1 << 21) /* Discard Higher-half */ |
| #define MOD_C2DD_LHALF (1 << 20) /* Discard Lower-half */ |
| #define MOD_C1DD_HHALF (1 << 19) |
| #define MOD_C1DD_LHALF (1 << 18) |
| #define MOD_DC2_EN (1 << 17) |
| #define MOD_DC1_EN (1 << 16) |
| |
| #define MOD_BLC_16BIT (0 << 13) |
| #define MOD_BLC_8BIT (1 << 13) |
| #define MOD_BLC_24BIT (2 << 13) |
| #define MOD_BLC_MASK (3 << 13) |
| |
| #define MOD_CDCLKCON (1 << 12) |
| #define MOD_SLAVE (1 << 11) |
| #define MOD_RCLKSRC (1 << 10) |
| |
| #if defined(CONFIG_SOC_EXYNOS7420) || defined(CONFIG_SOC_EXYNOS8890) |
| #define MOD_TXR_TXONLY 2 |
| #define MOD_TXR_RXONLY 2 |
| #define MOD_TXR_TXRX 2 |
| #else |
| #define MOD_TXR_TXONLY 0 |
| #define MOD_TXR_RXONLY 1 |
| #define MOD_TXR_TXRX 2 |
| #endif |
| #define MOD_TXR_SHIFT 8 |
| #define MOD_TXR_MASK 3 |
| |
| #define MOD_LRP (1 << 7) |
| #define MOD_LRP_SHIFT 7 |
| #define MOD_LR_LLOW 0 |
| #define MOD_LR_RLOW 1 |
| |
| #define MOD_SDF_SHIFT 5 |
| #define MOD_SDF_IIS 0 |
| #define MOD_SDF_MSB 1 |
| #define MOD_SDF_LSB 2 |
| #define MOD_SDF_MASK 3 |
| |
| #define MOD_RCLK_SHIFT 3 |
| #define MOD_RCLK_256FS 0 |
| #define MOD_RCLK_512FS 1 |
| #define MOD_RCLK_384FS 2 |
| #define MOD_RCLK_768FS 3 |
| #define MOD_RCLK_MASK 3 |
| |
| #define MOD_BCLK_SHIFT 1 |
| #define MOD_BCLK_32FS 0 |
| #define MOD_BCLK_48FS 1 |
| #define MOD_BCLK_16FS 2 |
| #define MOD_BCLK_24FS 3 |
| #define MOD_BCLK_MASK 3 |
| #define MOD_8BIT (1 << 0) |
| |
| #define EXYNOS5420_MOD_LRP (1 << 15) |
| #define EXYNOS5420_MOD_CDCLKCON MOD_CDCLKCON |
| #define EXYNOS5420_MOD_SLAVE MOD_SLAVE |
| #define EXYNOS5420_MOD_RCLKSRC MOD_RCLKSRC |
| #define EXYNOS5420_MOD_LRP_SHIFT 15 |
| #define EXYNOS5420_MOD_TXR_SHIFT MOD_TXR_SHIFT |
| #define EXYNOS5420_MOD_TXR_MASK MOD_TXR_MASK |
| #define EXYNOS5420_MOD_SDF_SHIFT 6 |
| #define EXYNOS5420_MOD_RCLK_SHIFT 4 |
| #define EXYNOS5420_MOD_RCLK_MASK MOD_RCLK_MASK |
| #define EXYNOS5420_MOD_BCLK_SHIFT 0 |
| #define EXYNOS5420_MOD_BCLK_64FS 4 |
| #define EXYNOS5420_MOD_BCLK_96FS 5 |
| #define EXYNOS5420_MOD_BCLK_128FS 6 |
| #define EXYNOS5420_MOD_BCLK_192FS 7 |
| #define EXYNOS5420_MOD_BCLK_256FS 8 |
| #define EXYNOS5420_MOD_BCLK_MASK 0xf |
| |
| #define EXYNOS5430_MOD_LRP EXYNOS5420_MOD_LRP |
| #define EXYNOS5430_MOD_CDCLKCON (1 << 22) |
| #define EXYNOS5430_MOD_SLAVE (1 << 12) |
| #define EXYNOS5430_MOD_RCLKSRC (1 << 11) |
| #define EXYNOS5430_MOD_LRP_SHIFT EXYNOS5420_MOD_LRP_SHIFT |
| #define EXYNOS5430_MOD_TXR_SHIFT 9 |
| #define EXYNOS5430_MOD_TXR_MASK EXYNOS5420_MOD_TXR_MASK |
| #define EXYNOS5430_MOD_SDF_SHIFT 7 |
| #define EXYNOS5430_MOD_RCLK_SHIFT 4 |
| #define EXYNOS5430_MOD_RCLK_MASK 7 |
| #define EXYNOS5430_MOD_RCLK_64FS 4 |
| #define EXYNOS5430_MOD_RCLK_128FS 5 |
| #define EXYNOS5430_MOD_RCLK_96FS 6 |
| #define EXYNOS5430_MOD_RCLK_192FS 7 |
| #define EXYNOS5430_MOD_BCLK_SHIFT EXYNOS5420_MOD_BCLK_SHIFT |
| #define EXYNOS5430_MOD_BCLK_MASK EXYNOS5420_MOD_BCLK_MASK |
| |
| |
| #define PSR_PSREN (1 << 15) |
| |
| #define FIC_TX2COUNT(x) (((x) >> 24) & 0xf) |
| #define FIC_TX1COUNT(x) (((x) >> 16) & 0xf) |
| |
| #define FIC_TXFLUSH (1 << 15) |
| #define FIC_RXFLUSH (1 << 7) |
| |
| #define FIC_TXCOUNT(x) (((x) >> 8) & 0xf) |
| #define FIC_RXCOUNT(x) (((x) >> 0) & 0xf) |
| #define FICS_TXCOUNT(x) (((x) >> 8) & 0x7f) |
| |
| #define AHB_INTENLVL0 (1 << 24) |
| #define AHB_LVL0INT (1 << 20) |
| #define AHB_CLRLVL0INT (1 << 16) |
| #define AHB_DMARLD (1 << 5) |
| #define AHB_INTMASK (1 << 3) |
| #define AHB_DMAEN (1 << 0) |
| #define AHB_LVLINTMASK (0xf << 20) |
| |
| #define I2SSIZE_TRNMSK (0xffff) |
| #define I2SSIZE_SHIFT (16) |
| |
| #define TDM_LRCLK_WIDTH_SHIFT 12 |
| #define TDM_LRCLK_WIDTH_MASK 0xFF |
| #define TDM_RX_SLOTS_SHIFT 8 |
| #define TDM_RX_SLOTS_MASK 7 |
| #define TDM_TX_SLOTS_SHIFT 4 |
| #define TDM_TX_SLOTS_MASK 7 |
| #define TDM_MODE_MASK (1 << 1) |
| #define TDM_MODE_DSPA (0 << 1) |
| #define TDM_MODE_DSPB (1 << 1) |
| #define TDM_ENABLE (1 << 0) |
| |
| #define TDM_RX_SLOTS_MAX 2 |
| #define TDM_TX_SLOTS_MAX 8 |
| |
| #endif /* __SND_SOC_SAMSUNG_I2S_REGS_H */ |
| |
| |