162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2011 Samsung Electronics Co., Ltd.
462306a36Sopenharmony_ci *		http://www.samsung.com
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Samsung I2S driver's register header
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#ifndef __SND_SOC_SAMSUNG_I2S_REGS_H
1062306a36Sopenharmony_ci#define __SND_SOC_SAMSUNG_I2S_REGS_H
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#define I2SCON		0x0
1362306a36Sopenharmony_ci#define I2SMOD		0x4
1462306a36Sopenharmony_ci#define I2SFIC		0x8
1562306a36Sopenharmony_ci#define I2SPSR		0xc
1662306a36Sopenharmony_ci#define I2STXD		0x10
1762306a36Sopenharmony_ci#define I2SRXD		0x14
1862306a36Sopenharmony_ci#define I2SFICS		0x18
1962306a36Sopenharmony_ci#define I2STXDS		0x1c
2062306a36Sopenharmony_ci#define I2SAHB		0x20
2162306a36Sopenharmony_ci#define I2SSTR0		0x24
2262306a36Sopenharmony_ci#define I2SSIZE		0x28
2362306a36Sopenharmony_ci#define I2STRNCNT	0x2c
2462306a36Sopenharmony_ci#define I2SLVL0ADDR	0x30
2562306a36Sopenharmony_ci#define I2SLVL1ADDR	0x34
2662306a36Sopenharmony_ci#define I2SLVL2ADDR	0x38
2762306a36Sopenharmony_ci#define I2SLVL3ADDR	0x3c
2862306a36Sopenharmony_ci#define I2SSTR1		0x40
2962306a36Sopenharmony_ci#define I2SVER		0x44
3062306a36Sopenharmony_ci#define I2SFIC1		0x48
3162306a36Sopenharmony_ci#define I2STDM		0x4c
3262306a36Sopenharmony_ci#define I2SFSTA		0x50
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci#define CON_RSTCLR		(1 << 31)
3562306a36Sopenharmony_ci#define CON_FRXOFSTATUS		(1 << 26)
3662306a36Sopenharmony_ci#define CON_FRXORINTEN		(1 << 25)
3762306a36Sopenharmony_ci#define CON_FTXSURSTAT		(1 << 24)
3862306a36Sopenharmony_ci#define CON_FTXSURINTEN		(1 << 23)
3962306a36Sopenharmony_ci#define CON_TXSDMA_PAUSE	(1 << 20)
4062306a36Sopenharmony_ci#define CON_TXSDMA_ACTIVE	(1 << 18)
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci#define CON_FTXURSTATUS		(1 << 17)
4362306a36Sopenharmony_ci#define CON_FTXURINTEN		(1 << 16)
4462306a36Sopenharmony_ci#define CON_TXFIFO2_EMPTY	(1 << 15)
4562306a36Sopenharmony_ci#define CON_TXFIFO1_EMPTY	(1 << 14)
4662306a36Sopenharmony_ci#define CON_TXFIFO2_FULL	(1 << 13)
4762306a36Sopenharmony_ci#define CON_TXFIFO1_FULL	(1 << 12)
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci#define CON_LRINDEX		(1 << 11)
5062306a36Sopenharmony_ci#define CON_TXFIFO_EMPTY	(1 << 10)
5162306a36Sopenharmony_ci#define CON_RXFIFO_EMPTY	(1 << 9)
5262306a36Sopenharmony_ci#define CON_TXFIFO_FULL		(1 << 8)
5362306a36Sopenharmony_ci#define CON_RXFIFO_FULL		(1 << 7)
5462306a36Sopenharmony_ci#define CON_TXDMA_PAUSE		(1 << 6)
5562306a36Sopenharmony_ci#define CON_RXDMA_PAUSE		(1 << 5)
5662306a36Sopenharmony_ci#define CON_TXCH_PAUSE		(1 << 4)
5762306a36Sopenharmony_ci#define CON_RXCH_PAUSE		(1 << 3)
5862306a36Sopenharmony_ci#define CON_TXDMA_ACTIVE	(1 << 2)
5962306a36Sopenharmony_ci#define CON_RXDMA_ACTIVE	(1 << 1)
6062306a36Sopenharmony_ci#define CON_ACTIVE		(1 << 0)
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci#define MOD_OPCLK_SHIFT		30
6362306a36Sopenharmony_ci#define MOD_OPCLK_CDCLK_OUT	(0 << MOD_OPCLK_SHIFT)
6462306a36Sopenharmony_ci#define MOD_OPCLK_CDCLK_IN	(1 << MOD_OPCLK_SHIFT)
6562306a36Sopenharmony_ci#define MOD_OPCLK_BCLK_OUT	(2 << MOD_OPCLK_SHIFT)
6662306a36Sopenharmony_ci#define MOD_OPCLK_PCLK		(3 << MOD_OPCLK_SHIFT)
6762306a36Sopenharmony_ci#define MOD_OPCLK_MASK		(3 << MOD_OPCLK_SHIFT)
6862306a36Sopenharmony_ci#define MOD_TXS_IDMA		(1 << 28) /* Sec_TXFIFO use I-DMA */
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#define MOD_BLCS_SHIFT		26
7162306a36Sopenharmony_ci#define MOD_BLCS_16BIT		(0 << MOD_BLCS_SHIFT)
7262306a36Sopenharmony_ci#define MOD_BLCS_8BIT		(1 << MOD_BLCS_SHIFT)
7362306a36Sopenharmony_ci#define MOD_BLCS_24BIT		(2 << MOD_BLCS_SHIFT)
7462306a36Sopenharmony_ci#define MOD_BLCS_MASK		(3 << MOD_BLCS_SHIFT)
7562306a36Sopenharmony_ci#define MOD_BLCP_SHIFT		24
7662306a36Sopenharmony_ci#define MOD_BLCP_16BIT		(0 << MOD_BLCP_SHIFT)
7762306a36Sopenharmony_ci#define MOD_BLCP_8BIT		(1 << MOD_BLCP_SHIFT)
7862306a36Sopenharmony_ci#define MOD_BLCP_24BIT		(2 << MOD_BLCP_SHIFT)
7962306a36Sopenharmony_ci#define MOD_BLCP_MASK		(3 << MOD_BLCP_SHIFT)
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci#define MOD_C2DD_HHALF		(1 << 21) /* Discard Higher-half */
8262306a36Sopenharmony_ci#define MOD_C2DD_LHALF		(1 << 20) /* Discard Lower-half */
8362306a36Sopenharmony_ci#define MOD_C1DD_HHALF		(1 << 19)
8462306a36Sopenharmony_ci#define MOD_C1DD_LHALF		(1 << 18)
8562306a36Sopenharmony_ci#define MOD_DC2_EN		(1 << 17)
8662306a36Sopenharmony_ci#define MOD_DC1_EN		(1 << 16)
8762306a36Sopenharmony_ci#define MOD_BLC_16BIT		(0 << 13)
8862306a36Sopenharmony_ci#define MOD_BLC_8BIT		(1 << 13)
8962306a36Sopenharmony_ci#define MOD_BLC_24BIT		(2 << 13)
9062306a36Sopenharmony_ci#define MOD_BLC_MASK		(3 << 13)
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci#define MOD_TXONLY		(0 << 8)
9362306a36Sopenharmony_ci#define MOD_RXONLY		(1 << 8)
9462306a36Sopenharmony_ci#define MOD_TXRX		(2 << 8)
9562306a36Sopenharmony_ci#define MOD_MASK		(3 << 8)
9662306a36Sopenharmony_ci#define MOD_LRP_SHIFT		7
9762306a36Sopenharmony_ci#define MOD_LR_LLOW		0
9862306a36Sopenharmony_ci#define MOD_LR_RLOW		1
9962306a36Sopenharmony_ci#define MOD_SDF_SHIFT		5
10062306a36Sopenharmony_ci#define MOD_SDF_IIS		0
10162306a36Sopenharmony_ci#define MOD_SDF_MSB		1
10262306a36Sopenharmony_ci#define MOD_SDF_LSB		2
10362306a36Sopenharmony_ci#define MOD_SDF_MASK		3
10462306a36Sopenharmony_ci#define MOD_RCLK_SHIFT		3
10562306a36Sopenharmony_ci#define MOD_RCLK_256FS		0
10662306a36Sopenharmony_ci#define MOD_RCLK_512FS		1
10762306a36Sopenharmony_ci#define MOD_RCLK_384FS		2
10862306a36Sopenharmony_ci#define MOD_RCLK_768FS		3
10962306a36Sopenharmony_ci#define MOD_RCLK_MASK		3
11062306a36Sopenharmony_ci#define MOD_BCLK_SHIFT		1
11162306a36Sopenharmony_ci#define MOD_BCLK_32FS		0
11262306a36Sopenharmony_ci#define MOD_BCLK_48FS		1
11362306a36Sopenharmony_ci#define MOD_BCLK_16FS		2
11462306a36Sopenharmony_ci#define MOD_BCLK_24FS		3
11562306a36Sopenharmony_ci#define MOD_BCLK_MASK		3
11662306a36Sopenharmony_ci#define MOD_8BIT		(1 << 0)
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci#define EXYNOS5420_MOD_LRP_SHIFT	15
11962306a36Sopenharmony_ci#define EXYNOS5420_MOD_SDF_SHIFT	6
12062306a36Sopenharmony_ci#define EXYNOS5420_MOD_RCLK_SHIFT	4
12162306a36Sopenharmony_ci#define EXYNOS5420_MOD_BCLK_SHIFT	0
12262306a36Sopenharmony_ci#define EXYNOS5420_MOD_BCLK_64FS	4
12362306a36Sopenharmony_ci#define EXYNOS5420_MOD_BCLK_96FS	5
12462306a36Sopenharmony_ci#define EXYNOS5420_MOD_BCLK_128FS	6
12562306a36Sopenharmony_ci#define EXYNOS5420_MOD_BCLK_192FS	7
12662306a36Sopenharmony_ci#define EXYNOS5420_MOD_BCLK_256FS	8
12762306a36Sopenharmony_ci#define EXYNOS5420_MOD_BCLK_MASK	0xf
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci#define EXYNOS7_MOD_RCLK_64FS	4
13062306a36Sopenharmony_ci#define EXYNOS7_MOD_RCLK_128FS	5
13162306a36Sopenharmony_ci#define EXYNOS7_MOD_RCLK_96FS	6
13262306a36Sopenharmony_ci#define EXYNOS7_MOD_RCLK_192FS	7
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci#define PSR_PSREN		(1 << 15)
13562306a36Sopenharmony_ci#define PSR_PSVAL(x)		((((x) - 1) << 8) & 0x3f00)
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci#define FIC_TX2COUNT(x)		(((x) >>  24) & 0xf)
13862306a36Sopenharmony_ci#define FIC_TX1COUNT(x)		(((x) >>  16) & 0xf)
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci#define FIC_TXFLUSH		(1 << 15)
14162306a36Sopenharmony_ci#define FIC_RXFLUSH		(1 << 7)
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci#define FIC_TXCOUNT(x)		(((x) >>  8) & 0xf)
14462306a36Sopenharmony_ci#define FIC_RXCOUNT(x)		(((x) >>  0) & 0xf)
14562306a36Sopenharmony_ci#define FICS_TXCOUNT(x)		(((x) >>  8) & 0x7f)
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci#define AHB_INTENLVL0		(1 << 24)
14862306a36Sopenharmony_ci#define AHB_LVL0INT		(1 << 20)
14962306a36Sopenharmony_ci#define AHB_CLRLVL0INT		(1 << 16)
15062306a36Sopenharmony_ci#define AHB_DMARLD		(1 << 5)
15162306a36Sopenharmony_ci#define AHB_INTMASK		(1 << 3)
15262306a36Sopenharmony_ci#define AHB_DMAEN		(1 << 0)
15362306a36Sopenharmony_ci#define AHB_LVLINTMASK		(0xf << 20)
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci#define I2SSIZE_TRNMSK		(0xffff)
15662306a36Sopenharmony_ci#define I2SSIZE_SHIFT		(16)
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci#endif /* __SND_SOC_SAMSUNG_I2S_REGS_H */
159