plf_io.h

来自「eCos操作系统源码」· C头文件 代码 · 共 498 行 · 第 1/2 页

H
498
字号
#  define HAL_GALILEO_IRQCAUSE_SLVRD	(1 << 15)#  define HAL_GALILEO_IRQCAUSE_AERR	(1 << 16)#  define HAL_GALILEO_IRQCAUSE_MERR	(1 << 17)#  define HAL_GALILEO_IRQCAUSE_MASABT	(1 << 18)#  define HAL_GALILEO_IRQCAUSE_TARABT	(1 << 19)#  define HAL_GALILEO_IRQCAUSE_RETRY	(1 << 20)#  define HAL_GALILEO_IRQCAUSE_CPUSUM	(1 << 30)#  define HAL_GALILEO_IRQCAUSE_PCISUM	(1 << 31)#define HAL_GALILEO_HIRQ_CAUSE_OFFSET		0xc98#define HAL_GALILEO_CPUIRQ_MASK_OFFSET          0xc1c#define HAL_GALILEO_CPUHIRQ_MASK_OFFSET         0xc9c#define HAL_SAA9730_I2CSC_I2CCC_6400            0x500#define HAL_SAA9730_I2CTFR_ATTR0_START          0xC#define HAL_SAA9730_I2CTFR_ATTR2_START          0xC0#define HAL_SAA9730_I2CTFR_ATTR2_STOP           0x40#define HAL_SAA9730_I2CTFR_ATTR1_CONT           0x20#define HAL_SAA9730_I2CTFR_OFFSET               0x2400#define HAL_SAA9730_I2CSC_OFFSET                0x2404#define HAL_SAA9730_SYSRESET_OFFSET             0x4020#define   HAL_SAA9730_SYSRESET_ALL 0xdeae#define HAL_SPD_GET_NUM_ROW_BITS                3#define HAL_SPD_GET_NUM_COL_BITS                4#define HAL_SPD_GET_NUM_MODULE_BANKS            5#define HAL_SPD_GET_CONFIG_TYPE                 11#define HAL_SPD_GET_REFRESH_RATE                12#define HAL_SPD_GET_SDRAM_WIDTH                 13#define HAL_SPD_GET_ERROR_CHECK_WIDTH           14#define HAL_SPD_GET_BURST_LENGTH                16#define HAL_SPD_GET_NUM_DEVICE_BANKS            17#define HAL_SPD_GET_CAS_LAT                     18#define HAL_SPD_GET_ROW_DENSITY                 31#define HAL_SPD_CONFIG_TYPE_PARITY              BIT0#define HAL_SPD_CONFIG_TYPE_ECC                 BIT1#define HAL_SPD_REFRESH_RATE_125                5#define HAL_SPD_REFRESH_RATE_62_5               4#define HAL_SPD_REFRESH_RATE_31_3               3#define HAL_SPD_REFRESH_RATE_15_625             0#define HAL_SPD_REFRESH_RATE_7_8                2#define HAL_SPD_REFRESH_RATE_3_9                1#define HAL_SPD_REFRESH_COUNTER_125             (125*2)#define HAL_SPD_REFRESH_COUNTER_62_5            (62*2)#define HAL_SPD_REFRESH_COUNTER_31_3            (31*2)#define HAL_SPD_REFRESH_COUNTER_15_625          (15*2)#define HAL_SPD_REFRESH_COUNTER_7_8             (7*2)#define HAL_SPD_REFRESH_COUNTER_3_9             (3*2)/* Atlas Display Registers */#define HAL_DISPLAY_BASE                        (HAL_ATLAS_REGISTER_BASE + 0x400)#define HAL_DISPLAY_LEDGREEN_OFFSET             0x00#define HAL_DISPLAY_LEDBAR_OFFSET               0x08#define HAL_DISPLAY_ASCIIWORD_OFFSET            0x10#define HAL_DISPLAY_ASCIIPOS0_OFFSET            0x18#define HAL_DISPLAY_ASCIIPOS1_OFFSET            0x20#define HAL_DISPLAY_ASCIIPOS2_OFFSET            0x28#define HAL_DISPLAY_ASCIIPOS3_OFFSET            0x30#define HAL_DISPLAY_ASCIIPOS4_OFFSET            0x38#define HAL_DISPLAY_ASCIIPOS5_OFFSET            0x40#define HAL_DISPLAY_ASCIIPOS6_OFFSET            0x48#define HAL_DISPLAY_ASCIIPOS7_OFFSET            0x50#define HAL_DISPLAY_LEDGREEN                    HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_LEDGREEN_OFFSET)#define HAL_DISPLAY_LEDBAR                      HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_LEDBAR_OFFSET)#define HAL_DISPLAY_ASCIIWORD                   HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_ASCIIWORD_OFFSET)#define HAL_DISPLAY_ASCIIPOS0                   HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_ASCIIPOS0_OFFSET)#define HAL_DISPLAY_ASCIIPOS1                   HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_ASCIIPOS1_OFFSET)#define HAL_DISPLAY_ASCIIPOS2                   HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_ASCIIPOS2_OFFSET)#define HAL_DISPLAY_ASCIIPOS3                   HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_ASCIIPOS3_OFFSET)#define HAL_DISPLAY_ASCIIPOS4                   HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_ASCIIPOS4_OFFSET)#define HAL_DISPLAY_ASCIIPOS5                   HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_ASCIIPOS5_OFFSET)#define HAL_DISPLAY_ASCIIPOS6                   HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_ASCIIPOS6_OFFSET)#define HAL_DISPLAY_ASCIIPOS7                   HAL_REG(HAL_DISPLAY_BASE + HAL_DISPLAY_ASCIIPOS7_OFFSET)#ifdef __ASSEMBLER__#  define DEBUG_ASCII_DISPLAY(register, character)             \	li	k0, CYGARC_UNCACHED_ADDRESS(register);                 \	li	k1, character;                                         \	sw	k1, 0(k0);                                             \    nop;                                                       \    nop;                                                       \    nop#  define DEBUG_LED_IMM(val)                                   \    li k0, HAL_DISPLAY_LEDBAR;                                 \    li k1, val;                                                \    sw k1, 0(k0)#  define DEBUG_LED_REG(reg)                                   \    li k0, HAL_DISPLAY_LEDBAR;                                 \    sw reg, 0(k0)#  define DEBUG_HEX_DISPLAY_IMM(val)                           \    li k0, HAL_DISPLAY_ASCIIWORD;                              \    li k1, val;                                                \    sw k1, 0(k0)#  define DEBUG_HEX_DISPLAY_REG(reg)                           \    li k0, HAL_DISPLAY_ASCIIWORD;                              \    sw reg, 0(k0)#  define DEBUG_DELAY()                                        \     li	k0, 0x20000;                                           \0:	 sub k0, k0, 1;                                            \     bnez k0, 0b;                                              \     nop#else#  define DEBUG_ASCII_DISPLAY(register, character)             \    *(register) = character#  define DEBUG_LED_IMM(val)                                   \    *HAL_DISPLAY_LEDBAR = val#  define DEBUG_HEX_DISPLAY_IMM(val)                           \    *HAL_DISPLAY_ASCIIWORD = val#  define DEBUG_DELAY()                                        \   {                                                           \     volatile int i = 0x20000;                                 \     while (--i) ;                                             \   }#  define DEBUG_DISPLAY(str)                                   \   {                                                           \     DEBUG_ASCII_DISPLAY(HAL_DISPLAY_ASCIIPOS0, str[0]);       \     DEBUG_ASCII_DISPLAY(HAL_DISPLAY_ASCIIPOS1, str[1]);       \     DEBUG_ASCII_DISPLAY(HAL_DISPLAY_ASCIIPOS2, str[2]);       \     DEBUG_ASCII_DISPLAY(HAL_DISPLAY_ASCIIPOS3, str[3]);       \     DEBUG_ASCII_DISPLAY(HAL_DISPLAY_ASCIIPOS4, str[4]);       \     DEBUG_ASCII_DISPLAY(HAL_DISPLAY_ASCIIPOS5, str[5]);       \     DEBUG_ASCII_DISPLAY(HAL_DISPLAY_ASCIIPOS6, str[6]);       \     DEBUG_ASCII_DISPLAY(HAL_DISPLAY_ASCIIPOS7, str[7]);       \   }#define HAL_GALILEO_PUTREG(x,y) \    (*((volatile unsigned *)(CYGARC_UNCACHED_ADDRESS(HAL_ATLAS_CONTROLLER_BASE) + (x))) = (y))#define HAL_GALILEO_GETREG(x)   \    (*((volatile unsigned *)(CYGARC_UNCACHED_ADDRESS(HAL_ATLAS_CONTROLLER_BASE) + (x))))extern cyg_uint32 cyg_hal_plf_pci_cfg_read_dword (cyg_uint32 bus,						  cyg_uint32 devfn,						  cyg_uint32 offset);extern cyg_uint16 cyg_hal_plf_pci_cfg_read_word  (cyg_uint32 bus,						  cyg_uint32 devfn,						  cyg_uint32 offset);extern cyg_uint8 cyg_hal_plf_pci_cfg_read_byte   (cyg_uint32 bus,						  cyg_uint32 devfn,						  cyg_uint32 offset);extern void cyg_hal_plf_pci_cfg_write_dword (cyg_uint32 bus,					     cyg_uint32 devfn,					     cyg_uint32 offset,					     cyg_uint32 val);extern void cyg_hal_plf_pci_cfg_write_word  (cyg_uint32 bus,					     cyg_uint32 devfn,					     cyg_uint32 offset,					     cyg_uint16 val);extern void cyg_hal_plf_pci_cfg_write_byte   (cyg_uint32 bus,					      cyg_uint32 devfn,					      cyg_uint32 offset,					      cyg_uint8 val);// Initialize the PCI bus.externC void cyg_hal_plf_pci_init(void);#define HAL_PCI_INIT() cyg_hal_plf_pci_init()// Map PCI device resources starting from these addresses in PCI space.#define HAL_PCI_ALLOC_BASE_MEMORY 0x08000000#define HAL_PCI_ALLOC_BASE_IO     0x18000000// This is where the PCI spaces are mapped in the CPU's address space.// #define HAL_PCI_PHYSICAL_MEMORY_BASE 0xA0000000#define HAL_PCI_PHYSICAL_IO_BASE     0xA0000000// Read a value from the PCI configuration space of the appropriate// size at an address composed from the bus, devfn and offset.#define HAL_PCI_CFG_READ_UINT8( __bus, __devfn, __offset, __val )  \    __val = cyg_hal_plf_pci_cfg_read_byte((__bus),  (__devfn), (__offset))    #define HAL_PCI_CFG_READ_UINT16( __bus, __devfn, __offset, __val ) \    __val = cyg_hal_plf_pci_cfg_read_word((__bus),  (__devfn), (__offset))#define HAL_PCI_CFG_READ_UINT32( __bus, __devfn, __offset, __val ) \    __val = cyg_hal_plf_pci_cfg_read_dword((__bus),  (__devfn), (__offset))// Write a value to the PCI configuration space of the appropriate// size at an address composed from the bus, devfn and offset.#define HAL_PCI_CFG_WRITE_UINT8( __bus, __devfn, __offset, __val )  \    cyg_hal_plf_pci_cfg_write_byte((__bus),  (__devfn), (__offset), (__val))#define HAL_PCI_CFG_WRITE_UINT16( __bus, __devfn, __offset, __val ) \    cyg_hal_plf_pci_cfg_write_word((__bus),  (__devfn), (__offset), (__val))#define HAL_PCI_CFG_WRITE_UINT32( __bus, __devfn, __offset, __val ) \    cyg_hal_plf_pci_cfg_write_dword((__bus),  (__devfn), (__offset), (__val))// Translate the PCI interrupt requested by the device (INTA#, INTB#,// INTC# or INTD#) to the associated CPU interrupt (i.e., HAL vector).#define HAL_PCI_TRANSLATE_INTERRUPT( __bus, __devfn, __vec, __valid)          \    CYG_MACRO_START                                                           \    cyg_uint8 __req;                                                          \    HAL_PCI_CFG_READ_UINT8(__bus, __devfn, CYG_PCI_CFG_INT_PIN, __req);       \    if (0 != __req) {                                                         \        CYG_ADDRWORD __translation[4] = {                                     \            CYGNUM_HAL_INTERRUPT_INTA,                                        \            CYGNUM_HAL_INTERRUPT_INTB,                                        \            CYGNUM_HAL_INTERRUPT_INTC,                                        \            CYGNUM_HAL_INTERRUPT_INTD};                                       \                                                                              \        /* The PCI #INT lines for different device numbers are wired like this: */     \        /*                                                             */     \        /* Int. Ctrl.     PCI_A     PCI_B    PCI_C   PCI_D             */     \        /* Device no.                                                  */     \        /* 0, 4, ..28     INTC#     INTD#    INTA#   INTB#             */     \        /* 1, 5, ..29     INTD#     INTA#    INTB#   INTC#             */     \        /* 2, 6, ..30     INTA#     INTB#    INTC#   INTD#             */     \        /* 3, 7, ..31     INTB#     INTC#    INTD#   INTA#             */     \                                                                              \        __vec = __translation[(((__req+1)+CYG_PCI_DEV_GET_DEV(__devfn))&3)];  \        __valid = true;                                                       \    } else {                                                                  \        /* Device will not generate interrupt requests. */                    \        __valid = false;                                                      \    }                                                                         \    CYG_MACRO_END// Galileo GT64120 on MIPS ATLAS requires special processing.// First, it will hang when accessing device 31 on the local bus.// Second, we need to ignore the GT64120 so we can set it up// outside the generic PCI library.#define HAL_PCI_IGNORE_DEVICE(__bus, __dev, __fn) \    ((__bus) == 0 && ((__dev) == 0 || (__dev) == 31))#endif//-----------------------------------------------------------------------------// end of plf_io.h#endif // CYGONCE_PLF_IO_H

⌨️ 快捷键说明

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