/***************************************************************************
 *
 * Copyright 2015-2019 BES.
 * All rights reserved. All unpublished rights reserved.
 *
 * No part of this work may be used or reproduced in any form or by any
 * means, or stored in a database or retrieval system, without prior written
 * permission of BES.
 *
 * Use of this work is governed by a license granted by BES.
 * This work contains confidential and proprietary information of
 * BES. which is protected by copyright, trade secret,
 * trademark and other intellectual property rights.
 *
 ****************************************************************************/
#ifndef __REG_TRANSQ_H__
#define __REG_TRANSQ_H__

#include "plat_types.h"

#define TRANSQ_SLOT_NUM                 32

struct TRANSQ_T
{
    __IO uint32_t CTRL;                 // 0x000
    __IO uint32_t RMT_INTMASK;          // 0x004
    __IO uint32_t RMT_INTSET;           // 0x008
    __IO uint32_t LDONE_INTMASK;        // 0x00C
    union {
        __I  uint32_t LDONE_RIS;        // 0x010
        __O  uint32_t LDONE_INTCLR;     // 0x010
    } LDONE_ISC;
    __IO uint32_t LERR_INTMASK;         // 0x014
    union {
        __I  uint32_t LERR_RIS;         // 0x018
        __O  uint32_t LERR_INTCLR;      // 0x018
    } LERR_ISC;
    __IO uint32_t RESERVED_01C;         // 0x01C
    __I  uint32_t LDONE_MIS;            // 0x020
    __I  uint32_t LERR_MIS;             // 0x024
    __IO uint32_t RESERVED_028[2];      // 0x028
    struct {
        __IO uint32_t ADDR;             // 0x030 + N * 8
        __IO uint32_t LEN;              // 0x038 + N * 8
    } WSLOT[TRANSQ_SLOT_NUM];
    __IO uint32_t RESERVED_130[0x34];   // 0x130
    union {
        __I  uint32_t RMT_RIS;          // 0x200
        __O  uint32_t RMT_INTCLR;       // 0x200
    } RMT_ISC;
    __IO uint32_t RMT_MIS;              // 0x204
    __IO uint32_t RESERVED_208[10];     // 0x208
    struct {
        __I  uint32_t ADDR;             // 0x230 + N * 8
        __I  uint32_t LEN;              // 0x238 + N * 8
    } RSLOT[TRANSQ_SLOT_NUM];
};

// CTRL
#define CTRL_REMOTE_IRQ_EN          (1 << 0)
#define CTRL_LOCAL_DONE_IRQ_EN      (1 << 1)
#define CTRL_LOCAL_ERR_IRQ_EN       (1 << 2)

#define TRANSQ_BIT(n)               (1 << (n))

#endif
