led_common.h

来自「OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI」· C头文件 代码 · 共 537 行 · 第 1/2 页

H
537
字号
/*==============================================================================
//            TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
//
//   Property of Texas Instruments. For Unrestricted Internal Use Only
//   Unauthorized reproduction and/or distribution is strictly prohibited.
//   This product is protected under copyright law and trade secret law 
//   as an unpublished work.
//   Created 2002, (C) Copyright 2002 Texas Instruments.  All rights reserved.
//
//   Created	      : 29th of July, 2002, 5.00pm
//
//   Filename           : hel_common_asm_led.h
//
//   Description        : Header file for common LED ARM926EJS assembler programs
//
//   Project            : HELEN2, OMAP1610
//
//   Author             : Dayo Adeyeye
//
//   FUNCTIONS PROVIDED :
//
//		extern void DumpStop_LED(UWORD16 ledsig);
//
//		extern void SetARM_WFI_sleep( UWORD32 gpio_base_addr,
//					   UWORD16 execpin);
//
//		CP15 Register1: Control register
//
//                      ARM_WR_CNTRL                (external function)
//                      ARM_RD_CNTRL                (external function)
//			ARM9_MMU_ON
//			ARM9_MMU_DCACHE_OFF
//			ARM9_MMU_OFF_ONLY
//			ARM9_SET_ALIGNMENT_BIT
//			ARM9_SET_BIG_ENDIAN
//			ARM9_SET_LITTLE_ENDIAN
//			ARM9_SET_S_BIT
//			ARM9_RESET_S_BIT
//			ARM9_SET_R_BIT
//			ARM9_RESET_R_BIT
//			ARM9_DCACHE_ON
//			ARM9_ICACHE_ON
//			ARM9_DCACHE_OFF
//			ARM9_ICACHE_OFF
//
//		CP15 Register2:  Translation Table Base Register
//
//                      ARM_WR_TTBR                 (external function)
//
//		CP15 Register3:  Domain Access Control Register
//
//                      ARM_WR_DOMAIN_REG           (external function)
//
//
============================================================================= */

#ifndef _LED_COMMON__HH
#define _LED_COMMON__HH

#include "global_types.h"

extern void DumpStop_LED(UWORD16 ledsig);

extern void SetARM_WFI_sleep(UWORD32 gpio_base_addr,
			     UWORD16 execpin);

#define LED_RES_DPLL_TIMEOUT   0xDEAF
#define LED_RES_LDO_TIMEOUT    0xFADE
#define LED_RES_LED_TIMEOUT    0xCEED
#define LED_RES_BAD_DEVICE     0xBADD
#define LED_RES_NORMAL_BOOT    0xABCD

/* Constants used to identify bits in the CP15 Reg1 Control Reg */
#define M_bit	0x1	/* MMU Enable Address translation & page access */
#define A_bit	0x2	/* Alignment fault enable/disable */
#define C_bit	0x4	/* Data cache enable/disable */
#define B_bit   0x80	/* Big(1)/Little(0) Endian configuration */
#define S_bit	0x100	/* System protection bit */
#define R_bit	0x200	/* ROM protection bit */
#define I_bit	0x1000	/* Instruction Cache enable/disable */
#define V_bit	0x2000	/* Alternate Vectors select bit */
#define RR_bit	0x4000	/* Random(0)/Round Robin(1) cache configuration */
#define L4_bit	0x8000	/* LDR PC, Set T(0)/Do not set T(1) configuration */

/* Constants used to enable cacheable & bufferable memory regions */
#define CACHEABLE  2
#define BUFFERABLE 1

/* Access Permissions - not shifted into position */
#define NO_ACCESS  0 
#define SVC_R      0
#define SVC_RW     1
#define NO_USR_W   2
#define ALL_ACCESS 3

#define DOMAIN0	   0
#define DOMAIN1	   1
#define DOMAIN2	   2
#define DOMAIN3	   3
#define DOMAIN4	   4
#define DOMAIN5	   5
#define DOMAIN6	   6
#define DOMAIN7	   7
#define DOMAIN8	   8
#define DOMAIN9	   9
#define DOMAIN10   10
#define DOMAIN11   11
#define DOMAIN12   12
#define DOMAIN13   13
#define DOMAIN14   14
#define DOMAIN15   15

/* -----------------------------------------------------------------------------
 NAME        : ARM_WR_CNTRL(r0)
 DESCRIPTION : Write value into CP15 register1 (used to enable/disable MMU,
               Instruction & Data Cache. Cfg Endian, Protection, INT ...
 PARAMETERS  : See ARM926EJ-S CP15 Register 1 specification
 RETURN VALUE: None.
 LIMITATIONS : None.
----------------------------------------------------------------------------- */
extern void ARM_WR_CNTRL (int value);

/* -----------------------------------------------------------------------------
 NAME        : ARM_RD_CNTRL
 DESCRIPTION : Write value into CP15 register1 (used to enable/disable MMU,
               Instruction & Data Cache. Cfg Endian, Protection, INT ...
 PARAMETERS  : See ARM926EJ-S CP15 Register 1 specification
 RETURN VALUE: value of CP15 register1 (contained in register R0)
 LIMITATIONS : None.
----------------------------------------------------------------------------- */
extern int ARM_RD_CNTRL (void);

/* -----------------------------------------------------------------------------
 NAME        : ARM9_MMU_ON
 DESCRIPTION : Enable MMU of ARM926EJ-S using
               ARM_WR_CNTRL and ARM_RD_CNTRL functions
 PARAMETERS  : None.
 RETURN VALUE: None.
 LIMITATIONS : None.
----------------------------------------------------------------------------- */
#define ARM9_MMU_ON     \
{                       \
   int tmp;              \
                          \
   tmp = ARM_RD_CNTRL(); \
   tmp |= M_bit;            \
   ARM_WR_CNTRL(tmp);     \
}


/* -----------------------------------------------------------------------------
 NAME        : ARM9_MMU_DCACHE_OFF                                           -
 DESCRIPTION : Disable MMU and Data Cache of ARM926EJ-S using               -
               ARM_WR_CNTRL and ARM_RD_CNTRL functions                 -
 PARAMETERS  : None.                                                        -
 RETURN VALUE: None.                                                        -
 LIMITATIONS : None.                                                        -
----------------------------------------------------------------------------- */
#define ARM9_MMU_DCACHE_OFF \
{ \
   int tmp; \
   \
   ARM9_DCACHE_OFF; \
   tmp = ARM_RD_CNTRL(); \
   tmp &= ~M_bit; \
   ARM_WR_CNTRL(tmp); \
}

/* -----------------------------------------------------------------------------
 NAME        : ARM9_MMU_OFF_ONLY
 DESCRIPTION : Only switch off MMU of ARM926EJ-S using
               ARM_WR_CNTRL and ARM_RD_CNTRL functions
 PARAMETERS  : None.
 RETURN VALUE: None.
 LIMITATIONS : None.
----------------------------------------------------------------------------- */
#define ARM9_MMU_OFF_ONLY \
{ \
   int tmp; \
   \
   tmp = ARM_RD_CNTRL(); \
   tmp &= ~M_bit; \
   ARM_WR_CNTRL(int tmp); \
}

/* -----------------------------------------------------------------------------
 NAME        : ARM9_SET_ALIGNMENT_BIT                                        -
 DESCRIPTION : Set Alignment bit using                                      -
               ARM_WR_CNTRL and ARM_RD_CNTRL functions                 -
 PARAMETERS  : None.                                                        -
 RETURN VALUE: None.                                                        -
 LIMITATIONS : None.                                                        -
----------------------------------------------------------------------------- */
#define ARM9_SET_ALIGNMENT_BIT \
{ \
   int tmp; \
   \
   tmp = ARM_RD_CNTRL(); \
   tmp |= A_bit; \
   ARM_WR_CNTRL(tmp); \
}

/* -----------------------------------------------------------------------------
 NAME        : ARM9_SET_BIG_ENDIAN                                           -
 DESCRIPTION : Set Big Endian Mode using                                    -
               ARM_WR_CNTRL and ARM_RD_CNTRL functions                 -
 PARAMETERS  : None.                                                        -
 RETURN VALUE: None.                                                        -
 LIMITATIONS : None.                                                        -
----------------------------------------------------------------------------- */
#define ARM9_SET_BIG_ENDIAN \
{ \
   int tmp; \
   \
   tmp = ARM_RD_CNTRL(); \
   tmp |= B_bit; \
   ARM_WR_CNTRL(tmp); \
}

/* -----------------------------------------------------------------------------
 NAME        : ARM9_SET_LITTLE_ENDIAN
 DESCRIPTION : Set Little endian mode (default mode) using
               ARM_WR_CNTRL and ARM_RD_CNTRL functions
 PARAMETERS  : None.
 RETURN VALUE: None.
 LIMITATIONS : None.
----------------------------------------------------------------------------- */
#define ARM9_SET_LITTLE_ENDIAN \
{ \
   int tmp; \
   \
   tmp = ARM_RD_CNTRL(); \
   tmp &= ~B_bit; \
   ARM_WR_CNTRL(tmp); \
}

/* -----------------------------------------------------------------------------
 NAME        : ARM9_SET_S_BIT
 DESCRIPTION : Set S Bit using
               ARM_WR_CNTRL and ARM_RD_CNTRL functions
 PARAMETERS  : None.
 RETURN VALUE: None.
 LIMITATIONS : None.
----------------------------------------------------------------------------- */
#define ARM9_SET_S_BIT \
{ \
   int tmp; \
   \
   tmp = ARM_RD_CNTRL(); \
   tmp |= S_bit; \
   ARM_WR_CNTRL(tmp); \
}

/* -----------------------------------------------------------------------------
 NAME        : ARM9_RESET_S_BIT
 DESCRIPTION : Clear S Bit
               using ARM_WR_CNTRL and ARM_RD_CNTRL functions
 PARAMETERS  : None.
 RETURN VALUE: None.
 LIMITATIONS : None.
----------------------------------------------------------------------------- */
#define ARM9_RESET_S_BIT \
{ \
   int tmp; \
   \
   tmp = ARM_RD_CNTRL(); \
   tmp &= ~S_bit; \
   ARM_WR_CNTRL(tmp); \
}

⌨️ 快捷键说明

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