1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
24c4bb19dSSimon Schwarz #ifndef __SDMA_H
34c4bb19dSSimon Schwarz #define __SDMA_H
44c4bb19dSSimon Schwarz 
54c4bb19dSSimon Schwarz /* Copyright (C) 2011
64c4bb19dSSimon Schwarz  * Corscience GmbH & Co. KG - Simon Schwarz <schwarz@corscience.de>
74c4bb19dSSimon Schwarz  */
84c4bb19dSSimon Schwarz 
94c4bb19dSSimon Schwarz /* Functions */
104c4bb19dSSimon Schwarz void omap3_dma_init(void);
114c4bb19dSSimon Schwarz int omap3_dma_conf_transfer(uint32_t chan, uint32_t *src, uint32_t *dst,
124c4bb19dSSimon Schwarz 		uint32_t sze);
134c4bb19dSSimon Schwarz int omap3_dma_start_transfer(uint32_t chan);
144c4bb19dSSimon Schwarz int omap3_dma_wait_for_transfer(uint32_t chan);
154c4bb19dSSimon Schwarz int omap3_dma_conf_chan(uint32_t chan, struct dma4_chan *config);
164c4bb19dSSimon Schwarz int omap3_dma_get_conf_chan(uint32_t chan, struct dma4_chan *config);
174c4bb19dSSimon Schwarz 
184c4bb19dSSimon Schwarz /* Register settings */
194c4bb19dSSimon Schwarz #define CSDP_DATA_TYPE_8BIT             0x0
204c4bb19dSSimon Schwarz #define CSDP_DATA_TYPE_16BIT            0x1
214c4bb19dSSimon Schwarz #define CSDP_DATA_TYPE_32BIT            0x2
224c4bb19dSSimon Schwarz #define CSDP_SRC_BURST_SINGLE           (0x0 << 7)
234c4bb19dSSimon Schwarz #define CSDP_SRC_BURST_EN_16BYTES       (0x1 << 7)
244c4bb19dSSimon Schwarz #define CSDP_SRC_BURST_EN_32BYTES       (0x2 << 7)
254c4bb19dSSimon Schwarz #define CSDP_SRC_BURST_EN_64BYTES       (0x3 << 7)
264c4bb19dSSimon Schwarz #define CSDP_DST_BURST_SINGLE           (0x0 << 14)
274c4bb19dSSimon Schwarz #define CSDP_DST_BURST_EN_16BYTES       (0x1 << 14)
284c4bb19dSSimon Schwarz #define CSDP_DST_BURST_EN_32BYTES       (0x2 << 14)
294c4bb19dSSimon Schwarz #define CSDP_DST_BURST_EN_64BYTES       (0x3 << 14)
304c4bb19dSSimon Schwarz #define CSDP_DST_ENDIAN_LOCK_ADAPT      (0x0 << 18)
314c4bb19dSSimon Schwarz #define CSDP_DST_ENDIAN_LOCK_LOCK       (0x1 << 18)
324c4bb19dSSimon Schwarz #define CSDP_DST_ENDIAN_LITTLE          (0x0 << 19)
334c4bb19dSSimon Schwarz #define CSDP_DST_ENDIAN_BIG             (0x1 << 19)
344c4bb19dSSimon Schwarz #define CSDP_SRC_ENDIAN_LOCK_ADAPT      (0x0 << 20)
354c4bb19dSSimon Schwarz #define CSDP_SRC_ENDIAN_LOCK_LOCK       (0x1 << 20)
364c4bb19dSSimon Schwarz #define CSDP_SRC_ENDIAN_LITTLE          (0x0 << 21)
374c4bb19dSSimon Schwarz #define CSDP_SRC_ENDIAN_BIG             (0x1 << 21)
384c4bb19dSSimon Schwarz 
394c4bb19dSSimon Schwarz #define CCR_READ_PRIORITY_LOW           (0x0 << 6)
404c4bb19dSSimon Schwarz #define CCR_READ_PRIORITY_HIGH          (0x1 << 6)
414c4bb19dSSimon Schwarz #define CCR_ENABLE_DISABLED             (0x0 << 7)
424c4bb19dSSimon Schwarz #define CCR_ENABLE_ENABLE               (0x1 << 7)
434c4bb19dSSimon Schwarz #define CCR_SRC_AMODE_CONSTANT          (0x0 << 12)
444c4bb19dSSimon Schwarz #define CCR_SRC_AMODE_POST_INC          (0x1 << 12)
454c4bb19dSSimon Schwarz #define CCR_SRC_AMODE_SINGLE_IDX        (0x2 << 12)
464c4bb19dSSimon Schwarz #define CCR_SRC_AMODE_DOUBLE_IDX        (0x3 << 12)
474c4bb19dSSimon Schwarz #define CCR_DST_AMODE_CONSTANT          (0x0 << 14)
484c4bb19dSSimon Schwarz #define CCR_DST_AMODE_POST_INC          (0x1 << 14)
494c4bb19dSSimon Schwarz #define CCR_DST_AMODE_SINGLE_IDX        (0x2 << 14)
504c4bb19dSSimon Schwarz #define CCR_DST_AMODE_SOUBLE_IDX        (0x3 << 14)
514c4bb19dSSimon Schwarz 
524c4bb19dSSimon Schwarz #define CCR_RD_ACTIVE_MASK              (1 << 9)
534c4bb19dSSimon Schwarz #define CCR_WR_ACTIVE_MASK              (1 << 10)
544c4bb19dSSimon Schwarz 
554c4bb19dSSimon Schwarz #define CSR_TRANS_ERR			(1 << 8)
564c4bb19dSSimon Schwarz #define CSR_SUPERVISOR_ERR		(1 << 10)
574c4bb19dSSimon Schwarz #define CSR_MISALIGNED_ADRS_ERR		(1 << 11)
584c4bb19dSSimon Schwarz 
594c4bb19dSSimon Schwarz /* others */
604c4bb19dSSimon Schwarz #define CHAN_NR_MIN			0
614c4bb19dSSimon Schwarz #define CHAN_NR_MAX			31
624c4bb19dSSimon Schwarz 
634c4bb19dSSimon Schwarz #endif /* __SDMA_H */
64