⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 che_hw.h

📁 8032底层驱动部分。因为可以移植 所以单独来拿出来
💻 H
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*******************************************************************************
 *
 * Filename:
 * ---------
 * che_hw.h
 *
 * Project:
 * --------
 *   MAUI
 *
 * Description:
 * ------------
 *   Cipher/hash engine hw register definitions.
 *
 * Author:
 * -------
 * -------
 *
 *==============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *==============================================================================
 *******************************************************************************/
#ifndef CHE_HW_H
#define CHE_HW_H

#define CHE_BASE  0x80170000

#define  CHE_PDN_SET     (0x80000310)
#define  CHE_PDN_CLR     (0x80000320)
#define  CHE_PDN_BIT     0x10
#define  CHE_START       (CHE_BASE+0x0)
#define  CHE_CON         (CHE_BASE+0x4)
#define  CHE_IN0         (CHE_BASE+0x8)
#define  CHE_IN1         (CHE_BASE+0xc)
#define  CHE_IN2         (CHE_BASE+0x10)
#define  CHE_IN3         (CHE_BASE+0x14)
#define  CHE_SDRAT       (CHE_BASE+0x18)
#define  CHE_PCNT        (CHE_BASE+0x1c)     /*RO*/
#define  CHE_STAT        (CHE_BASE+0x20)     /*RO*/
#define  CHE_CDES        (CHE_BASE+0x24)     /*RO*/
#define  CHE_INTSTA      (CHE_BASE+0x28)     /*RC*/
#define  CHE_INTEN       (CHE_BASE+0x2c)     /*RW*/
#define  CHE_BCON        (CHE_BASE+0xc0)
#define  CHE_BSRC        (CHE_BASE+0xc4)
#define  CHE_BSEED       (CHE_BASE+0xc8)
#define  CHE_BENC        (CHE_BASE+0xcc)
#define  CHE_BDEC        (CHE_BASE+0xd0)

/*CHE_START*/
#define  CHE_START_DONE       0x0000
#define  CHE_START_STUD       0x0001
#define  CHE_START_LAST       0x0002
#define  CHE_START_WSTAT      0x0004
#define  CHE_START_RSTAT      0x0008
#define  CHE_START_CLEAR      0x0010
#define  CHE_START_UPDES      0x0020
#define  CHE_START_WKEY       0x0040
#define  CHE_START_RKEY       0x0080
#define  CHE_START_UPIV01     0x0100
#define  CHE_START_UPIV23     0x0200
#define  CHE_START_UPK01      0x0400
#define  CHE_START_UPK23      0x0800
#define  CHE_START_UPK45      0x1000
#define  CHE_START_UPK67      0x2000

/*CHE_CON*/
#define  CHE_CON_ATYPE_MASK         0x0007
#define  CHE_CON_ATYPE_MD5          0x0
#define  CHE_CON_ATYPE_SHA1         0x1
#define  CHE_CON_ATYPE_DES          0x2
#define  CHE_CON_ATYPE_3DES         0x3
#define  CHE_CON_ATYPE_AES_128      0x4
#define  CHE_CON_ATYPE_AES_192      0x5
#define  CHE_CON_ATYPE_AES_256      0x6
#define  CHE_CON_DECIPHER           0x0000
#define  CHE_CON_CIPHER             0x0008
#define  CHE_CON_SMODE_ECB          0x0000
#define  CHE_CON_SMODE_CBC          0x0010
#define  CHE_CON_DKEY1_64BIT        0x0000
#define  CHE_CON_DKEY1_56BIT        0x0020
#define  CHE_CON_DKEY2_64BIT        0x0000
#define  CHE_CON_DKEY2_56BIT        0x0040
#define  CHE_CON_DKEY3_64BIT        0x0000
#define  CHE_CON_DKEY3_56BIT        0x0080

/*CHE_IN0*/
#define  CHE_IN0_MASK         0xffffffff

/*CHE_IN1*/
#define  CHE_IN1_MASK         0xffffffff

/*CHE_IN2*/
#define  CHE_IN2_MASK         0xffffffff

/*CHE_IN3*/
#define  CHE_IN3_MASK         0xffffffff

/*CHE_SDRAT*/
#define  CHE_SDRAT_MASK       0x00ff      /*RW*/

/*CHE_PCNT*/
#define  CHE_PCNT_MASK        0x001f      

/*CHE_STAT*/
#define  CHE_STAT_MASK        0x0007      /*RO*/
#define  CHE_STAT_OK          0x0000      /*RO*/
#define  CHE_STAT_CTRL_ERR    0x0001      /*RO*/
#define  CHE_STAT_ZEROLEN     0x0002      /*RO*/
#define  CHE_STAT_RESUME      0x0003      /*RO*/
#define  CHE_STAT_BUSY        0x0004      /*RO*/

/*CHE_CDES*/
#define  CHE_CDES_MASK        0xffffffff

/*CHE_INTSTA*/
#define  CHE_INTSTA_OK        0x1
#define  CHE_INTSTA_FAIL      0x2
#define  CHE_INTSTA_RESUME    0x3   //??

/*CHE_INTEN*/
#define  CHE_INTEN_OK         0x1
#define  CHE_INTEN_FAIL       0x2

#define CHE_REGSET_START(_data)  \
{\
   DRV_WriteReg32(CHE_START, (_data));\
   che_hw_setting[CHE_HW_SETTING_START] = (_data);\
}

#define CHE_REGSET_INTEN(_data)  \
{\
   DRV_WriteReg32(CHE_INTEN, (_data));\
   che_hw_setting[CHE_HW_SETTING_INTEN] = (_data);\
}

#define CHE_REGSET_CON(_data)  \
{\
   DRV_WriteReg32(CHE_CON, (_data));\
   che_hw_setting[CHE_HW_SETTING_CON] = (_data);\
}

#define CHE_REGSET_KEY0(_data)  \
{\
   DRV_WriteReg32(CHE_IN0, (_data));\
   che_hw_setting[CHE_HW_SETTING_KEY0] = (_data);\
}

#define CHE_REGSET_KEY1(_data)  \
{\
   DRV_WriteReg32(CHE_IN1, (_data));\
   che_hw_setting[CHE_HW_SETTING_KEY1] = (_data);\
}

#define CHE_REGSET_KEY2(_data)  \
{\
   DRV_WriteReg32(CHE_IN2, (_data));\
   che_hw_setting[CHE_HW_SETTING_KEY2] = (_data);\
}

#define CHE_REGSET_KEY3(_data)  \
{\
   DRV_WriteReg32(CHE_IN3, (_data));\
   che_hw_setting[CHE_HW_SETTING_KEY3] = (_data);\
}

#define CHE_REGSET_KEY4(_data)  \
{\
   DRV_WriteReg32(CHE_IN0, (_data));\
   che_hw_setting[CHE_HW_SETTING_KEY4] = (_data);\
}

#define CHE_REGSET_KEY5(_data)  \
{\
   DRV_WriteReg32(CHE_IN1, (_data));\
   che_hw_setting[CHE_HW_SETTING_KEY5] = (_data);\
}

#define CHE_REGSET_KEY6(_data)  \
{\
   DRV_WriteReg32(CHE_IN2, (_data));\
   che_hw_setting[CHE_HW_SETTING_KEY6] = (_data);\
}

#define CHE_REGSET_KEY7(_data)  \
{\
   DRV_WriteReg32(CHE_IN3, (_data));\
   che_hw_setting[CHE_HW_SETTING_KEY7] = (_data);\
}

#define CHE_REGSET_CKEY(_data)  \
{\
   DRV_WriteReg32(CHE_IN3, (_data));\
   che_hw_setting[CHE_HW_SETTING_CKEY] = (_data);\
}

#define CHE_REGSET_IV0(_data)  \
{\
   DRV_WriteReg32(CHE_IN0, (_data));\
   che_hw_setting[CHE_HW_SETTING_IV0] = (_data);\
}

#define CHE_REGSET_IV1(_data)  \
{\
   DRV_WriteReg32(CHE_IN1, (_data));\
   che_hw_setting[CHE_HW_SETTING_IV1] = (_data);\
}

#define CHE_REGSET_IV2(_data)  \
{\
   DRV_WriteReg32(CHE_IN2, (_data));\
   che_hw_setting[CHE_HW_SETTING_IV2] = (_data);\
}

#define CHE_REGSET_IV3(_data)  \
{\
   DRV_WriteReg32(CHE_IN3, (_data));\
   che_hw_setting[CHE_HW_SETTING_IV3] = (_data);\
}

#define CHE_REGSET_SRC(_data)  \
{\
   DRV_WriteReg32(CHE_IN0, _data);\
   che_hw_setting[CHE_HW_SETTING_SRC] = (_data);\
}

#define CHE_REGSET_DST(_data)  \
{\
   DRV_WriteReg32(CHE_IN1, _data);\
   che_hw_setting[CHE_HW_SETTING_DST] = (_data);\
}

#define CHE_REGSET_LEN(_data)  \
{\
   DRV_WriteReg32(CHE_IN2, _data);\
   che_hw_setting[CHE_HW_SETTING_LEN] = (_data);\
}

#define CHE_REGSET_SADDR(_data)  \
{\
   DRV_WriteReg32(CHE_IN3, _data);\
   che_hw_setting[CHE_HW_SETTING_SADDR] = (_data);\
}

#define CHE_WAIT_STAT_OK()  \
{\
   kal_uint32 status;\
   while(DRV_Reg32(CHE_STAT) != CHE_STAT_OK);\
   status = DRV_Reg32(CHE_INTSTA);\
}

#define CHE_WAIT_STAT_RESUME()  \
{\
   kal_uint32 status;\
   while(DRV_Reg32(CHE_STAT) != CHE_STAT_RESUME);\
   status = DRV_Reg32(CHE_INTSTA);\
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -