Files

133 lines
4.7 KiB
C
Vendored

/*
* kernel_bdma.h- Sigmastar
*
* Copyright (c) [2019~2020] SigmaStar Technology.
*
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License version 2 for more details.
*
*/
/***************************************************************************
* kernel_bdma.h
*--------------------------------------------------------------------------
* Scope: BDMA related definitions
*
****************************************************************************/
#ifndef __KERNEL_BDMA_H__
#define __KERNEL_BDMA_H__
#include "cam_os_wrapper.h"
/****************************************************************************/
/* BDMA registers */
/****************************************************************************/
typedef struct KeBdma_s
{
// 0x0
u32 reg_ch0_trig :1;
u32 :3;
u32 reg_ch0_stop :1;
u32 :3;
u32 reg_src_tlb :1;
u32 reg_dst_tlb :1;
u32 :22;
// 0x1
u32 reg_ch0_queued :1;
u32 reg_ch0_busy :1;
u32 reg_ch0_int_bdma :1;
u32 reg_ch0_done :1;
u32 reg_ch0_result0 :1;
u32 reg_xiu_bdma_ns :1;
u32 :26;
// 0x2
u32 reg_ch0_src_sel :4;
#define REG_BDMA_SRC_MIU_IMI_CH0 0 //16 bytes
#define REG_BDMA_SRC_MIU_IMI_CH1 1 //16 bytes
#define REG_BDMA_SRC_MEM_FILL 4 //4 bytes
#define REG_BDMA_SRC_SPI 5 //8 bytes
#define REG_BDMA_SRC_TSP_SRAM 10 //1 byte
u32 reg_ch0_src_dw :3;
#define REG_BDMA_DATA_DEPTH_1BYTE 0
#define REG_BDMA_DATA_DEPTH_2BYTE 1
#define REG_BDMA_DATA_DEPTH_4BYTE 2
#define REG_BDMA_DATA_DEPTH_8BYTE 3
#define REG_BDMA_DATA_DEPTH_16BYTE 4
u32 :1;
u32 reg_ch0_dst_sel :4;
#define REG_BDMA_DST_MIU_IMI_CH0 0
#define REG_BDMA_DST_MIU_IMI_CH1 1
#define REG_BDMA_DST_PM51 6
#define REG_BDMA_DST_SEC51 9
#define REG_BDMA_DST_TSP_SRAM 10
#define REG_BDMA_SDT_FSP 11 //4 byte
u32 reg_ch0_dst_dw :3;
u32 :17;
// 0x3
u32 reg_ch0_dec :1;
u32 reg_ch0_int_en :1;
u32 :2;
u32 reg_ch0_cfg :4;
u32 reg_ch0_flush_wd :4;
u32 reg_ch0_replace_miu :4;
#define REG_BDMA_CH0_MIU0 0
#define REG_BDMA_CH0_MIU1 1
#define REG_BDMA_CH0_IMI 2
#define REG_BDMA_CH1_MIU0 0
#define REG_BDMA_CH1_MIU1 4
#define REG_BDMA_CH1_IMI 8
u32 :16;
// 0x4
u32 reg_ch0_src_a0 :16;
u32 :16;
// 0x5
u32 reg_ch0_src_a1 :16;
u32 :16;
// 0x6
u32 reg_ch0_dst_a0 :16;
u32 :16;
// 0x7
u32 reg_ch0_dst_a1 :16;
u32 :16;
// 0x8
u32 reg_ch0_size0 :16;
u32 :16;
// 0x9
u32 reg_ch0_size1 :16;
u32 :16;
// 0xA
u32 reg_ch0_cmd0_low :16;
u32 :16;
// 0xB
u32 reg_ch0_cmd0_high :16;
u32 :16;
// 0xC
u32 reg_ch0_cmd1_low :16;
u32 :16;
// 0xD
u32 reg_ch0_cmd1_high :16;
u32 :16;
// 0xE
u32 reg_ch0_cmd2_low :16;
u32 :16;
// 0xF
u32 reg_ch0_cmd2_high :16;
u32 :16;
} KeBdma_t;
extern volatile KeBdma_t* const g_ptKeBdma0;
extern volatile KeBdma_t* const g_ptKeBdma1;
extern volatile KeBdma_t* const g_ptKeBdma2;
extern volatile KeBdma_t* const g_ptKeBdma3;
#endif // __KERNEL_BDMA_H__