xref: /OK3568_Linux_fs/kernel/drivers/dma/sh/shdma-arm.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Renesas SuperH DMA Engine support
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2013 Renesas Electronics, Inc.
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef SHDMA_ARM_H
9*4882a593Smuzhiyun #define SHDMA_ARM_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #include "shdma.h"
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun /* Transmit sizes and respective CHCR register values */
14*4882a593Smuzhiyun enum {
15*4882a593Smuzhiyun 	XMIT_SZ_8BIT		= 0,
16*4882a593Smuzhiyun 	XMIT_SZ_16BIT		= 1,
17*4882a593Smuzhiyun 	XMIT_SZ_32BIT		= 2,
18*4882a593Smuzhiyun 	XMIT_SZ_64BIT		= 7,
19*4882a593Smuzhiyun 	XMIT_SZ_128BIT		= 3,
20*4882a593Smuzhiyun 	XMIT_SZ_256BIT		= 4,
21*4882a593Smuzhiyun 	XMIT_SZ_512BIT		= 5,
22*4882a593Smuzhiyun };
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun /* log2(size / 8) - used to calculate number of transfers */
25*4882a593Smuzhiyun #define SH_DMAE_TS_SHIFT {		\
26*4882a593Smuzhiyun 	[XMIT_SZ_8BIT]		= 0,	\
27*4882a593Smuzhiyun 	[XMIT_SZ_16BIT]		= 1,	\
28*4882a593Smuzhiyun 	[XMIT_SZ_32BIT]		= 2,	\
29*4882a593Smuzhiyun 	[XMIT_SZ_64BIT]		= 3,	\
30*4882a593Smuzhiyun 	[XMIT_SZ_128BIT]	= 4,	\
31*4882a593Smuzhiyun 	[XMIT_SZ_256BIT]	= 5,	\
32*4882a593Smuzhiyun 	[XMIT_SZ_512BIT]	= 6,	\
33*4882a593Smuzhiyun }
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun #define TS_LOW_BIT	0x3 /* --xx */
36*4882a593Smuzhiyun #define TS_HI_BIT	0xc /* xx-- */
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun #define TS_LOW_SHIFT	(3)
39*4882a593Smuzhiyun #define TS_HI_SHIFT	(20 - 2)	/* 2 bits for shifted low TS */
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun #define TS_INDEX2VAL(i) \
42*4882a593Smuzhiyun 	((((i) & TS_LOW_BIT) << TS_LOW_SHIFT) |\
43*4882a593Smuzhiyun 	 (((i) & TS_HI_BIT)  << TS_HI_SHIFT))
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun #define CHCR_TX(xmit_sz) (DM_FIX | SM_INC | RS_ERS | TS_INDEX2VAL((xmit_sz)))
46*4882a593Smuzhiyun #define CHCR_RX(xmit_sz) (DM_INC | SM_FIX | RS_ERS | TS_INDEX2VAL((xmit_sz)))
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun #endif
49