/** @file

  Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>

  This program and the accompanying materials
  are licensed and made available under the terms and conditions of the BSD License
  which accompanies this distribution.  The full text of the license may be found at
  http://opensource.org/licenses/bsd-license.php

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#ifndef __OMAP3530DMA_H__
#define __OMAP3530DMA_H__


#define DMA4_MAX_CHANNEL 31

#define DMA4_IRQENABLE_L(_i)  (0x48056018 + (0x4*(_i)))

#define DMA4_CCR(_i)  (0x48056080 + (0x60*(_i)))
#define DMA4_CICR(_i) (0x48056088 + (0x60*(_i)))
#define DMA4_CSR(_i)  (0x4805608c + (0x60*(_i)))
#define DMA4_CSDP(_i) (0x48056090 + (0x60*(_i)))
#define DMA4_CEN(_i)  (0x48056094 + (0x60*(_i)))
#define DMA4_CFN(_i)  (0x48056098 + (0x60*(_i)))
#define DMA4_CSSA(_i) (0x4805609c + (0x60*(_i)))
#define DMA4_CDSA(_i) (0x480560a0 + (0x60*(_i)))
#define DMA4_CSEI(_i) (0x480560a4 + (0x60*(_i)))
#define DMA4_CSFI(_i) (0x480560a8 + (0x60*(_i)))
#define DMA4_CDEI(_i) (0x480560ac + (0x60*(_i)))
#define DMA4_CDFI(_i) (0x480560b0 + (0x60*(_i)))

#define DMA4_GCR      (0x48056078)

// Channel Source Destination parameters
#define DMA4_CSDP_DATA_TYPE8    0
#define DMA4_CSDP_DATA_TYPE16   1
#define DMA4_CSDP_DATA_TYPE32   2

#define DMA4_CSDP_SRC_PACKED      BIT6
#define DMA4_CSDP_SRC_NONPACKED   0

#define DMA4_CSDP_SRC_BURST_EN    (0x0 << 7)
#define DMA4_CSDP_SRC_BURST_EN16  (0x1 << 7)
#define DMA4_CSDP_SRC_BURST_EN32  (0x2 << 7)
#define DMA4_CSDP_SRC_BURST_EN64  (0x3 << 7)

#define DMA4_CSDP_DST_PACKED      BIT13
#define DMA4_CSDP_DST_NONPACKED   0

#define DMA4_CSDP_BURST_EN        (0x0 << 14)
#define DMA4_CSDP_BURST_EN16      (0x1 << 14)
#define DMA4_CSDP_BURST_EN32      (0x2 << 14)
#define DMA4_CSDP_BURST_EN64      (0x3 << 14)

#define DMA4_CSDP_WRITE_MODE_NONE_POSTED      (0x0 << 16)
#define DMA4_CSDP_WRITE_MODE_POSTED           (0x1 << 16)
#define DMA4_CSDP_WRITE_MODE_LAST_NON_POSTED  (0x2 << 16)

#define DMA4_CSDP_DST_ENDIAN_LOCK_LOCK    BIT18
#define DMA4_CSDP_DST_ENDIAN_LOCK_ADAPT   0

#define DMA4_CSDP_DST_ENDIAN_BIG          BIT19
#define DMA4_CSDP_DST_ENDIAN_LITTLE       0

#define DMA4_CSDP_SRC_ENDIAN_LOCK_LOCK    BIT20
#define DMA4_CSDP_SRC_ENDIAN_LOCK_ADAPT   0

#define DMA4_CSDP_SRC_ENDIAN_BIG          BIT21
#define DMA4_CSDP_SRC_ENDIAN_LITTLE       0

// Channel Control
#define DMA4_CCR_SYNCHRO_CONTROL_MASK     0x1f

#define DMA4_CCR_FS_ELEMENT     (0    | 0)
#define DMA4_CCR_FS_BLOCK       (0    | BIT18)
#define DMA4_CCR_FS_FRAME       (BIT5 | 0)
#define DMA4_CCR_FS_PACKET      (BIT5 | BIT18)

#define DMA4_CCR_READ_PRIORITY_HIGH   BIT6
#define DMA4_CCR_READ_PRIORITY_LOW    0

#define DMA4_CCR_ENABLE               BIT7
#define DMA4_CCR_DISABLE              0

#define DMA4_CCR_SUSPEND_SENSITIVE_IGNORE BIT8
#define DMA4_CCR_SUSPEND_SENSITIVE        0

#define DMA4_CCR_RD_ACTIVE                BIT9
#define DMA4_CCR_WR_ACTIVE                BIT10

#define DMA4_CCR_SRC_AMODE                (0     | 0)
#define DMA4_CCR_SRC_AMODE_POST_INC       (0     | BIT12)
#define DMA4_CCR_SRC_AMODE_SINGLE_INDEX   (BIT13 | 0)
#define DMA4_CCR_SRC_AMODE_DOUBLE_INDEX   (BIT13 | BIT12)

#define DMA4_CCR_DST_AMODE                (0     | 0)
#define DMA4_CCR_DST_AMODE_POST_INC       (0     | BIT14)
#define DMA4_CCR_DST_AMODE_SINGLE_INDEX   (BIT15 | 0)
#define DMA4_CCR_DST_AMODE_DOUBLE_INDEX   (BIT15 | BIT14)

#define DMA4_CCR_CONST_FILL_ENABLE        BIT16
#define DMA4_CCR_TRANSPARENT_COPY_ENABLE  BIT17

#define DMA4_CCR_SEL_SRC_DEST_SYNC_SOURCE BIT24

#define DMA4_CSR_DROP                     BIT1
#define DMA4_CSR_HALF                     BIT2
#define DMA4_CSR_FRAME                    BIT3
#define DMA4_CSR_LAST                     BIT4
#define DMA4_CSR_BLOCK                    BIT5
#define DMA4_CSR_SYNC                     BIT6
#define DMA4_CSR_PKT                      BIT7
#define DMA4_CSR_TRANS_ERR                BIT8
#define DMA4_CSR_SECURE_ERR               BIT9
#define DMA4_CSR_SUPERVISOR_ERR           BIT10
#define DMA4_CSR_MISALIGNED_ADRS_ERR      BIT11
#define DMA4_CSR_DRAIN_END                BIT12
#define DMA4_CSR_RESET                    0x1FE
#define DMA4_CSR_ERR                      (DMA4_CSR_TRANS_ERR | DMA4_CSR_SECURE_ERR | DMA4_CSR_SUPERVISOR_ERR | DMA4_CSR_MISALIGNED_ADRS_ERR)

// same mapping as CSR except for SYNC. Enable all since we are polling
#define DMA4_CICR_ENABLE_ALL              0x1FBE


#endif

