#ifndef _NFC_UTILITY_
#define _NFC_UTILITY_

/**** extern ****/
#define memzero(addr, size)                 memset(addr,0,size)
#define cache_clean(start_addr, size)       {CleanDCacheRegion((unsigned int*)start_addr, size); arm_ISB();}
#define cache_invalidate(start_addr, size)  {InvalidateDCacheRegion((unsigned int*)start_addr, size); arm_ISB();}
//#define mem_cpy(d,s,l)                      memcpy(d,s,l)     //has to be 32bit access
//#define mem_cmp(s,d,l)                      memcmp(s,d,l)
#define PRINT(...)                          dbg_printf(PRN_RES, __VA_ARGS__)
#define PRINT_INFO(...)                     dbg_printf(PRN_INFO, __VA_ARGS__)

/**** includes ****/
#include "Galois_memmap.h"          // for base addr
#include "global.h"                 // for nfc reset
#include "soc.h"                    // for interrupt

/**** hw def ****/
#define NFC_REG_BASE                MEMMAP_NAND_AHB_REG_BASE
#define NFC_SDMA_PORT_ADDR          MEMMAP_NAND_FLASH_REG_BASE
#define NFC_SDMA_PORT_SIZE          MEMMAP_NAND_FLASH_REG_SIZE
#define IRQ_NFC                     IRQ_nanfIntr

#define MAX_SNG_TRF_CNT             0x100

#define MAX_TRDNUM                  7

/**** user defines ****/
#define DEFAULT_TIMEOUT_COUNT       0
#define DEFAULT_DELAY_INTERVAL      100
#define DEFAULT_RBN_STABLE_CNT      20

#define NFC_DESC_BUFF_ADDR          0xB00000
#define NFC_SDMA_BUFF_ADDR          0xB80000

#define WORK_MODE_DMA               0
#define WORK_MODE_PIO               1
#define WORK_MODE_GEN               2

#define RESET_TYPE_ASYNC            0
#define RESET_TYPE_LUN              1

#define NUM_SUPPORTED_DEVICES       8

#define INT_TYPE_SDMA_TRIGG         0
#define INT_TYPE_TRD_COMP           1
#define INT_TYPE_OTHER              2
#define INT_TYPE_MAX                3

#define ADDR_PATT_XOR_CONST         0xffca5300

/**** register r/w macro ****/
//#define NFC_REG_REMAP(offset)           (((offset) & 0x1000) ? ((offset) ^ 0x1900) : ((offset) & 0x2000) ? ((offset) ^ 0x2a00) : (offset))
#define NFC_REG(offset)                 (*(volatile unsigned int *)(unsigned long)((NFC_REG_BASE) + (offset)))
#define NFC_RD_REG(ra, v)               (v) = NFC_REG(ra)
#define NFC_WR_REG(ra, v)               NFC_REG(ra) = (v)

#define NFC_RD_REG_NAME(regname, v)     *(v) = NFC_REG(RA__##regname)
#define NFC_WR_REG_NAME(regname, v)     NFC_REG(RA__##regname) = *(v)

#define NFC_RD_FLD_NAME(fieldname, v)   {\
    register unsigned int t9d8fu289139d;\
    t9d8fu289139d = NFC_REG(BA__##fieldname);\
    v = (t9d8fu289139d >> LSb__##fieldname) & MSK__##fieldname;}

#define NFC_WR_FLD_NAME(fieldname, v)   {\
    register unsigned int t9d8fu289139d;\
    t9d8fu289139d = NFC_REG(BA__##fieldname);\
    t9d8fu289139d &= ~(MSK__##fieldname << LSb__##fieldname);\
    t9d8fu289139d |= ((v) << LSb__##fieldname);\
    NFC_REG(BA__##fieldname) = (t9d8fu289139d);}

#define THREAD_IS_BUSY(trd) ((NFC_REG(RA__TRD_STATUS) >> (trd)) & 0x1)

#define LA2RA(logical_addr) ((logical_addr) / (i_curr_dev.page_size))

/**** interrupt masks ****/
// same bit position for enable and status registers, except for gloabl enable bit
#define INT_GLOBAL          (1 << LSb__INTR_ENABLE__intr_en)
#define INT_SDMA_ERR        (1 << LSb__INTR_ENABLE__sdma_err_en)
#define INT_SDMA_TRIGG      (1 << LSb__INTR_ENABLE__sdma_trigg_en)
#define INT_CMD_IGNORED     (1 << LSb__INTR_ENABLE__cmd_ignored_en)
#define INT_DDMA_TERR       (1 << LSb__INTR_ENABLE__ddma_terr_en)
#define INT_CDMA_TERR       (1 << LSb__INTR_ENABLE__cdma_terr_en)
#define INT_CDMA_IDLE       (1 << LSb__INTR_ENABLE__cdma_idle_en)

#define INT_ALL             (INT_GLOBAL\
                            |INT_SDMA_ERR\
                            |INT_SDMA_TRIGG\
                            |INT_CMD_IGNORED\
                            |INT_DDMA_TERR\
                            |INT_CDMA_TERR\
                            |INT_CDMA_IDLE)

#define THREAD_ALL          (0xff)

/**** error status masks ****/
// for command operation status check
#define ERR_DESC            (1 << 0)
#define ERR_CMD             (1 << 0)
#define ERR_ECC             (1 << 1)
#define ERR_MAX             (0xff << 2)
#define ERR_DEV             (1 << 12)
#define ERR_FAIL            (1 << 14)
#define ERR_BUS             (1 << 16)

#define ERR_ALL             (ERR_DESC\
                            |ERR_ECC\
                            |ERR_MAX\
                            |ERR_DEV\
                            |ERR_FAIL\
                            |ERR_BUS)

#define ERR_ALL_GEN         (ERR_DESC\
                            |ERR_ECC\
                            |ERR_MAX\
                            |ERR_FAIL\
                            |ERR_BUS)

/**** timings  ****/
#define TMSK_BUILD(regfieldname)        (BA__##regfieldname | (MSK__##regfieldname << 19) | (LSb__##regfieldname << 14))
#define TMSK_RH                         TMSK_BUILD(ASYNC_TOGGLE_TIMINGS__tRH)
#define TMSK_RP                         TMSK_BUILD(ASYNC_TOGGLE_TIMINGS__tRP)
#define TMSK_WH                         TMSK_BUILD(ASYNC_TOGGLE_TIMINGS__tWH)
#define TMSK_WP                         TMSK_BUILD(ASYNC_TOGGLE_TIMINGS__tWP)
#define TMSK_ADL                        TMSK_BUILD(TIMINGS0__tADL)
#define TMSK_CCS                        TMSK_BUILD(TIMINGS0__tCCS)
#define TMSK_WHR                        TMSK_BUILD(TIMINGS0__tWHR)
#define TMSK_RHW                        TMSK_BUILD(TIMINGS0__tRHW)
#define TMSK_RHZ                        TMSK_BUILD(TIMINGS1__tRHZ)
#define TMSK_WB                         TMSK_BUILD(TIMINGS1__tWB)
#define TMSK_CWAW                       TMSK_BUILD(TIMINGS1__tCWAW)
#define TMSK_VDLY                       TMSK_BUILD(TIMINGS1__tVDLY)
#define TMSK_FEAT                       TMSK_BUILD(TIMINGS2__tFEAT)
#define TMSK_CEH                        TMSK_BUILD(TIMINGS2__CS_hold_time)
#define TMSK_CS                         TMSK_BUILD(TIMINGS2__CS_setup_time)
#define TMSK_RDQS                       TMSK_BUILD(PHY_CTRL_REG__phony_dqs_timing)

#define TMSK_VAL(name, val)             {TMSK_##name, val}
#define TNAME_MSK(name)                 {#name, TMSK_##name}

#define TVAL2REG(regfieldname, val)     (((val) & MSK__##regfieldname) << LSb__##regfieldname)

/**** command type ****/
//tbl 2.4, 2.23, 2.34
#define CT_SET_FEATURE                  (0x0100)
#define CT_THREAD_RESET(type)           (0x0200 | ((type) & 0xff))
#define CT_BLOCK_ERASE(blk_cnt)         (0x1000 | (((blk_cnt) - 1) & 0xff))
#define CT_ASYNC_RESET                  (0x1100)
#define CT_LUN_RESET                    (0x1102)
#define CT_COPYBACK(page_cnt)           (0x1200 | (((page_cnt) - 1) & 0xff))
#define CT_PROGRAM(page_cnt)            (0x2100 | (((page_cnt) - 1) & 0xff))
#define CT_READ(page_cnt)               (0x2200 | (((page_cnt) - 1) & 0xff))
#define CT_NOP                          (0xFFFF)

#define IS_COPYBACK_CMD(command_type)   (((command_type) >> 8) == 0x12 ? 1 : 0)
#define CT_INS_CNT(command_type, cnt)   (((command_type) & 0xff00) | (((cnt) - 1) & 0xff))

/**** instruction type (tbl 2.31) ****/
#define IT_CMD_SEQ                              0
#define IT_ADDR_SEQ                             1
#define IT_DATA_SEQ                             2
#define IT_READ                                 3
#define IT_WRITE                                4
#define IT_RESET                                5
#define IT_ERASE                                6
#define IT_READ_STATUS                          7
#define IT_READ_STATUS_ENHANCED                 8
#define IT_READ_CACHE_RANDOM                    9
#define IT_COPYBACK_READ                        10
#define IT_COPYBACK_PROGRAM                     11
#define IT_CHANGE_READ_COLUMN                   12
#define IT_CHANGE_READ_COLUMN_ENHANCED          13
#define IT_CHANGE_READ_COLUMN_JEDEC             14
#define IT_MULTI_PLANE_READ                     15
#define IT_MULTI_PLANE_BLOCK_ERASE              16
#define IT_MULTI_PLANE_BLOCK_ERASE_ONFI_JEDEC   17
#define IT_CHANGE_WRITE_COLUMN                  18
#define IT_SMALL_DATA_MOVE                      19
#define IT_SYNCHRONOUS_RESET                    20
#define IT_VOLUME_SELECT                        21
#define IT_ODT_CONFIGURE                        22
#define IT_SET_FEATURES                         23
#define IT_GET_FEATURES                         24
#define IT_LUN_GET_FEATURES                     25
#define IT_LUN_SET_FEATURES                     26
#define IT_READ_ID                              27
#define IT_READ_PARAMETER_PAGE                  28
#define IT_ZQ_CALIBRATION_SHORT                 29
#define IT_ZQ_CALIBRATION_LONG                  30
#define IT_LUN_RESET                            31

#define LSb_INST_TYPE                           0
#define LSb_TWB_ACTIVE                          6
#define LSb_JEDEC_SUPP                          7

#define LSb_CMD                                 16

#define LSb_NBYTES                              11

#define LSb_DIRECTION                           11
#define LSb_ECC_EN                              12
#define LSb_SCRAMBLER_EN                        13
#define LSb_ERASED_PAGE_DET_EN                  14
#define LSb_SECTOR_SIZE                         16
#define LSb_SECTOR_CNT                          32
#define LSb_LAST_SECTOR_SIZE                    40
#define LSb_CORR_CAP                            56

#define LSb_F2_EN                               11
#define LSb_ADDR0                               16
#define LSb_ADDR1                               24
#define LSb_ADDR2                               32
#define LSb_ADDR3                               40
#define LSb_ADDR4                               48
#define LSb_ADDR5                               56

#define CMD_PARAM(name, value)                  (ULL(value) << LSb_##name)

#define DIRECTION_READ                          0   //
#define DIRECTION_WRITE                         1   //do not swap

#define DMA_SEL_SLAVE                           0   //
#define DMA_SEL_MASTER                          1   //do not swap

/**** other utilities ****/
#define DUMP_FIELD_DEC(var, fieldname) PRINT("    %16s = %10d\n", #fieldname, var.fieldname)
#define DUMP_FIELD_HEX(var, fieldname) PRINT("    %16s = 0x%08x\n", #fieldname, var.fieldname)

//#define NFC_DELAY_US(n)     delay_us(n)
#define NFC_DELAY_US(n)    {register unsigned int i; for(i=n;i!=0;i--);} 

#define P2U(v)          ((unsigned int)(unsigned long)(v))
#define U2PV(v)         ((void *)(unsigned long)(v))
#define U2PU(v)         ((unsigned int *)(unsigned long)(v))
#define U2PC(v)         ((char *)(unsigned long)(v))
#define ULL(v)          ((unsigned long long)(v))

#endif
