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

📄 s3c6410_intr.h

📁 6410BSP1
💻 H
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
//  Header:  s3c6410_intr.h
//
//  Defines the interrupt controller register layout and associated interrupt
//  sources and bit masks.
//
#ifndef __S3C6410_INTR_H
#define __S3C6410_INTR_H

#if __cplusplus
extern "C" {
#endif

//------------------------------------------------------------------------------
//
//  Type: S3C6410_VIC_REG
//
//  Interrupt control registers. This register bank is located by the constant
//  S3C6410_BASE_REG_XX_VICX in the configuration file s3c6410_base_reg_cfg.h.
//

typedef struct
{
    UINT32 VICIRQSTATUS;        // 0x00
    UINT32 VICFIQSTATUS;        // 0x04
    UINT32 VICRAWINTR;            // 0x08
    UINT32 VICINTSELECT;        // 0x0c

    UINT32 VICINTENABLE;        // 0x10
    UINT32 VICINTENCLEAR;        // 0x14
    UINT32 VICSOFTINT;            // 0x18
    UINT32 VICSOFTINTCLEAR;    // 0x1c

    UINT32 VICPROTECTION;        // 0x20
    UINT32 VICSWPRIORITYMASK;    // 0x24
    UINT32 VICPRIORITYDAISY;    // 0x28
    UINT32 PAD0;                // 0x2c

    UINT32 PAD1[52];                // 0x30~0xff

    UINT32 VICVECTADDR0;        // 0x100
    UINT32 VICVECTADDR1;        // 0x104
    UINT32 VICVECTADDR2;        // 0x108
    UINT32 VICVECTADDR3;        // 0x10c

    UINT32 VICVECTADDR4;        // 0x110
    UINT32 VICVECTADDR5;        // 0x114
    UINT32 VICVECTADDR6;        // 0x118
    UINT32 VICVECTADDR7;        // 0x11c

    UINT32 VICVECTADDR8;        // 0x120
    UINT32 VICVECTADDR9;        // 0x124
    UINT32 VICVECTADDR10;        // 0x128
    UINT32 VICVECTADDR11;        // 0x12c

    UINT32 VICVECTADDR12;        // 0x130
    UINT32 VICVECTADDR13;        // 0x134
    UINT32 VICVECTADDR14;        // 0x138
    UINT32 VICVECTADDR15;        // 0x13c

    UINT32 VICVECTADDR16;        // 0x140
    UINT32 VICVECTADDR17;        // 0x144
    UINT32 VICVECTADDR18;        // 0x148
    UINT32 VICVECTADDR19;        // 0x14c

    UINT32 VICVECTADDR20;        // 0x150
    UINT32 VICVECTADDR21;        // 0x154
    UINT32 VICVECTADDR22;        // 0x158
    UINT32 VICVECTADDR23;        // 0x15c

    UINT32 VICVECTADDR24;        // 0x160
    UINT32 VICVECTADDR25;        // 0x164
    UINT32 VICVECTADDR26;        // 0x168
    UINT32 VICVECTADDR27;        // 0x16c

    UINT32 VICVECTADDR28;        // 0x170
    UINT32 VICVECTADDR29;        // 0x174
    UINT32 VICVECTADDR30;        // 0x178
    UINT32 VICVECTADDR31;        // 0x17c

    UINT32 PAD2[32];                // 0x180~0x1ff

    UINT32 VICVECTPRIORITY0;    // 0x200
    UINT32 VICVECTPRIORITY1;    // 0x204
    UINT32 VICVECTPRIORITY2;    // 0x208
    UINT32 VICVECTPRIORITY3;    // 0x20c

    UINT32 VICVECTPRIORITY4;    // 0x210
    UINT32 VICVECTPRIORITY5;    // 0x214
    UINT32 VICVECTPRIORITY6;    // 0x218
    UINT32 VICVECTPRIORITY7;    // 0x21c

    UINT32 VICVECTPRIORITY8;    // 0x220
    UINT32 VICVECTPRIORITY9;    // 0x224
    UINT32 VICVECTPRIORITY10;    // 0x228
    UINT32 VICVECTPRIORITY11;    // 0x22c

    UINT32 VICVECTPRIORITY12;    // 0x230
    UINT32 VICVECTPRIORITY13;    // 0x234
    UINT32 VICVECTPRIORITY14;    // 0x238
    UINT32 VICVECTPRIORITY15;    // 0x23c

    UINT32 VICVECTPRIORITY16;    // 0x240
    UINT32 VICVECTPRIORITY17;    // 0x244
    UINT32 VICVECTPRIORITY18;    // 0x248
    UINT32 VICVECTPRIORITY19;    // 0x24c

    UINT32 VICVECTPRIORITY20;    // 0x250
    UINT32 VICVECTPRIORITY21;    // 0x254
    UINT32 VICVECTPRIORITY22;    // 0x258
    UINT32 VICVECTPRIORITY23;    // 0x25c

    UINT32 VICVECTPRIORITY24;    // 0x260
    UINT32 VICVECTPRIORITY25;    // 0x264
    UINT32 VICVECTPRIORITY26;    // 0x268
    UINT32 VICVECTPRIORITY27;    // 0x26c

    UINT32 VICVECTPRIORITY28;    // 0x270
    UINT32 VICVECTPRIORITY29;    // 0x274
    UINT32 VICVECTPRIORITY30;    // 0x278
    UINT32 VICVECTPRIORITY31;    // 0x27c

    UINT32 PAD3[800];            // 0x280~0xeff

    UINT32 VICADDRESS;            // 0xf00
    UINT32 PAD4[3];                // 0xf04~0xf0f

    UINT32 PAD5[52];                // 0xf10~0xfdf

    UINT32 VICPERIPHID0;        // 0xfe0
    UINT32 VICPERIPHID1;        // 0xfe4
    UINT32 VICPERIPHID2;        // 0xfe8
    UINT32 VICPERIPHID3;        // 0xfec

    UINT32 VICPCELLID0;            // 0xff0
    UINT32 VICPCELLID1;            // 0xff4
    UINT32 VICPCELLID2;            // 0xff8
    UINT32 VICPCELLID3;            // 0xffc
} S3C6410_VIC_REG, *PS3C6410_VIC_REG;

//------------------------------------------------------------------------------
//
//  Define: PHYIRQ_XXX
//
//  Physical Interrupt Sources Numbers
//  S3C6410 has two VIC controller. This VIC controller has it's own IRQ number
//  to handle interrupt from each interrupt source. But this IRQ has sub interrupt source
//  So we flatten this sub interrupt source into Virtual IRQ concept.
//  In other words, this a PHYIRQ is mapped to some Virtual IRQ.
//
//  Drivers and Application have to use this Virtual IRQ Numbers
//  Virtual IRQ is defined in "s3c6410_vintr.h"

// VIC0
#define PHYIRQ_EINT0            0
#define PHYIRQ_EINT1            1
#define PHYIRQ_RTC_TIC          2
#define PHYIRQ_CAMIF_C          3
#define PHYIRQ_CAMIF_P          4

#define PHYIRQ_I2C1             5
#define PHYIRQ_I2S_V40          6
#define PHYIRQ_SSS              7
#define PHYIRQ_3D               8

#define PHYIRQ_POST             9
#define PHYIRQ_ROTATOR          10
#define PHYIRQ_2D               11
#define PHYIRQ_TVENC            12
#define PHYIRQ_TVSCALER         13
#define PHYIRQ_BATF             14
#define PHYIRQ_JPEG             15
#define PHYIRQ_MFC              16
#define PHYIRQ_SDMA0            17
#define PHYIRQ_SDMA1            18
#define PHYIRQ_ARM_DMAERR       19
#define PHYIRQ_ARM_DMA          20
#define PHYIRQ_ARM_DMAS         21
#define PHYIRQ_KEYPAD           22
#define PHYIRQ_TIMER0           23
#define PHYIRQ_TIMER1           24
#define PHYIRQ_TIMER2           25
#define PHYIRQ_WDT              26
#define PHYIRQ_TIMER3           27
#define PHYIRQ_TIMER4           28
#define PHYIRQ_LCD0_FIFO        29
#define PHYIRQ_LCD1_FRAME       30
#define PHYIRQ_LCD2_SYSIF       31

// VIC1
#define PHYIRQ_EINT2            32
#define PHYIRQ_EINT3            33
#define PHYIRQ_PCM0             34
#define PHYIRQ_PCM1             35
#define PHYIRQ_AC97             36
#define PHYIRQ_UART0            37
#define PHYIRQ_UART1            38
#define PHYIRQ_UART2            39
#define PHYIRQ_UART3            40
#define PHYIRQ_DMA0             41
#define PHYIRQ_DMA1             42
#define PHYIRQ_ONENAND0         43
#define PHYIRQ_ONENAND1         44
#define PHYIRQ_NFC              45
#define PHYIRQ_CFC              46
#define PHYIRQ_UHOST            47
#define PHYIRQ_SPI0             48
#define PHYIRQ_SPI1             49
#define PHYIRQ_I2C              50
#define PHYIRQ_HSITX            51
#define PHYIRQ_HSIRX            52
#define PHYIRQ_RESERVED         53
#define PHYIRQ_MSM              54
#define PHYIRQ_HOSTIF           55
#define PHYIRQ_HSMMC0           56
#define PHYIRQ_HSMMC1           57
#define PHYIRQ_OTG              58
#define PHYIRQ_IRDA             59
#define PHYIRQ_RTC_ALARM        60
#define PHYIRQ_SEC              61
#define PHYIRQ_PENDN            62
#define PHYIRQ_ADC              63

#define PHYIRQ_MAX_S3C6410      64

#define VIC1_BIT_OFFSET         32
//------------------------------------------------------------------------------

#if __cplusplus
}
#endif

#endif    // __S3C6410_INTR_H

⌨️ 快捷键说明

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