hal_platform_setup.h

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

H
983
字号
        ldr     r0, REG_PULL_DWN_CTRL_3        ldr     r1, VAL_PULL_DWN_CTRL_3        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_4        ldr     r1, VAL_FUNC_MUX_CTRL_4        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_5        ldr     r1, VAL_FUNC_MUX_CTRL_5        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_6        ldr     r1, VAL_FUNC_MUX_CTRL_6        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_7        ldr     r1, VAL_FUNC_MUX_CTRL_7        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_8        ldr     r1, VAL_FUNC_MUX_CTRL_8        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_9        ldr     r1, VAL_FUNC_MUX_CTRL_9        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_A        ldr     r1, VAL_FUNC_MUX_CTRL_A        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_B        ldr     r1, VAL_FUNC_MUX_CTRL_B        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_C        ldr     r1, VAL_FUNC_MUX_CTRL_C        str     r1, [r0]        ldr     r0, REG_FUNC_MUX_CTRL_D        ldr     r1, VAL_FUNC_MUX_CTRL_D        str     r1, [r0]        ldr     r0, REG_VOLTAGE_CTRL_0        ldr     r1, VAL_VOLTAGE_CTRL_0        str     r1, [r0]        ldr     r0, REG_TEST_DBG_CTRL_0        ldr     r1, VAL_TEST_DBG_CTRL_0        str     r1, [r0]        ldr     r0, REG_MOD_CONF_CTRL_0        ldr     r1, VAL_MOD_CONF_CTRL_0        str     r1, [r0]        FAKE_LED_MACRO(13)        // Take out of compatibility mode        ldr     r0, REG_COMP_MODE_CTRL_0        ldr     r1, VAL_COMP_MODE_CTRL_0        str     r1, [r0]        FAKE_LED_MACRO(14)        b post_config_registers        omap1509:               ldr     r0, REG_FUNC_MUX_CTRL_0        ldr     r1, [r0]        orr     r1, r1, #0x6000000  // UART_GIGA_GATE bit as well as UART_BT_GATE bit        str     r1, [r0]// Errata for ES5.5 says this must be done before DSP or MPU can// access internal RAMs.  This is benign for earlier revs.        ldr     r0, REG_FUNC_MUX_CTRL_1        mov     r1, #0xc        str     r1, [r0]        post_config_registers:                  FAKE_LED_MACRO(15)        mov r0, #0x1800again:                subs r0, r0, #0x1        bne again        FAKE_LED_MACRO(16)// Invalidate cache// -----------------        mov r0,#0        nop        mcr p15, 0x0, r0, c7, c5, 0x0          nop        nop        nop        nop        FAKE_LED_MACRO(17)//  Enable I-Cache// -------------        mrc p15, 0x0, r1, c1, c0, 0x0        orr r1, r1, #0x1000        nop        mcr p15, 0x0, r1, c1, c0, 0x0        nop        nop        nop        nop        FAKE_LED_MACRO(18)// Initialize Traffic Controller (TC)// ----------------------------------        ldr r0, REG_TC_IMIF_PRIO        mov r1, #0x0        str r1, [r0]        ldr r0, REG_TC_EMIFS_PRIO        str r1, [r0]        ldr r0, REG_TC_EMIFF_PRIO        str r1, [r0]                ldr r0, REG_TC_EMIFS_CONFIG        ldr r1, [r0]        bic r1, r1, #0x08	/* clear the global power-down enable PDE bit */        bic r1, r1, #0x01	/* write protect flash by clearing the WP bit */        str r1, [r0]  // EMIFS GlB Configuration. (value 0x12 most likely)// Set TC chip select registers// SDRAM value based on 168MHz 1510.// ----------------------------        ldr r0, REG_TC_EMIFS_CS1_CONFIG        ldr r1, VAL_TC_EMIFS_CS1_CONFIG_PRELIM        str r1, [r0]        ldr r0, REG_TC_EMIFS_CS2_CONFIG        ldr r1, VAL_TC_EMIFS_CS2_CONFIG_PRELIM        str r1, [r0]        ldr r0, REG_TC_EMIFF_SDRAM_CONFIG        ldr r1, VAL_TC_EMIFF_SDRAM_CONFIG        str r1, [r0]        ldr r0, REG_TC_EMIFF_MRS        ldr r1, VAL_TC_EMIFF_MRS        str r1, [r0]                mov r0,#0x1800again2:                subs r0,r0,#0x1        bne again2        FAKE_LED_MACRO(19) // Next, Enable the RS232 Line Drivers in the FPGA. // Also, power on the audio CODEC's amplifier here, // which will make a noise on the audio output. // This is done here instead of in the kernel so there // isn't a loud popping noise at the start of each // song. // Also, disable the CODEC's clocks. // omap1510-HelenP1 [specific]        ldr r0, REG_FPGA_POWER        mov r1, #0        ldr r2, REG_FPGA_DIP_SWITCH        ldrb r3, [r2]        cmp r3, #0x8        movne r1, #0x62     // Enable the RS232 Line Drivers in the EPLD        strb r1, [r0]        ldr r0, REG_FPGA_AUDIO        mov r1, #0x0     // Disable sound driver (CODEC clocks)        strb r1, [r0]                         mov r0, #0x1800again0:                subs r0, r0, #0x1        bne again0        FAKE_LED_MACRO(20)// Init RHEA// ----------                ldr r1, V_0x0000ff22        mov r0, #0x0        str r1, [r0]   // yep, that's really a write to address 0x00000000.// *revisit-skranz* is needed?                mov r0, #0x1800again12:                subs r0, r0, #0x1        bne again12        FAKE_LED_MACRO(21)        // Misc 2// ------                mov r1, #0xfb        ldr r0, REG_LB_CLOCK_DIV        str r1, [r0]// *revisit-skranz* is needed?                mov r0, #0x1800again4:                subs r0, r0, #0x1        bne again4        FAKE_LED_MACRO(22)// ARM Clock Module Setup// ----------------------                mov r1, #0x40        ldr r0, REG_ARM_IDLECT2        strh r1, [r0]  // CLKM, Clock domain control.                        mov r1, #0x01  // PER_EN bit        ldr r0, REG_ARM_RSTCT2         strh r1, [r0]  // CLKM; Peripheral reset.                // Reset CLKM#ifdef ORIGINAL_CODE        mov r1, #0x06  // Needed for UART[12]#else        mov r1, #0x86  // Needed for UART[12]#endif        ldr r0, REG_ARM_IDLECT2        strh r1, [r0]  // CLKM, Clock domain control.                // Set CLKM to Sync-Scalable        mov r1, #0x1000  // Needed for UART[12]        ldr r0, REG_ARM_SYSST        strh r1, [r0]        // *revisit-skranz* is needed?                mov r0, #0x1800again6:                subs r0, r0, #0x1        bne again6        FAKE_LED_MACRO(23)        ldr r1, VAL_ARM_CKCTL        ldr r0, REG_ARM_CKCTL        strh r1, [r0]        // setup DPLL1 Control Register// ----------------------------        ldr r1, VAL_DPLL1_CTL        ldr r0, REG_DPLL1_CTL        strh r1, [r0]        ands r1, r1, #0x10   // Check if PLL is enabled.        beq finish2          // Do not look for lock if BYPASS selectedpoll2:        ldrh r1, [r0]        ands r1, r1, #0x01   // Check the LOCK bit.        beq poll2            // ...loop until bit goes hi.finish2:                 FAKE_LED_MACRO(24)                // Setup TC EMIFS configuration.        // CS0 value based on 168MHz        // ---------------------------------------------------        ldr r1, VAL_TC_EMIFS_CS0_CONFIG // increase flash speed.        ldr r0, REG_TC_EMIFS_CS0_CONFIG        str r1, [r0] // Chip Select 0        ldr r1, VAL_TC_EMIFS_CS1_CONFIG        ldr r0, REG_TC_EMIFS_CS1_CONFIG        str r1, [r0] // Chip Select 1        ldr r1, VAL_TC_EMIFS_CS2_CONFIG        ldr r0, REG_TC_EMIFS_CS2_CONFIG        str r1, [r0] // Chip Select 2        ldr r1, VAL_TC_EMIFS_CS3_CONFIG        ldr r0, REG_TC_EMIFS_CS3_CONFIG        str r1, [r0] // Chip Select 3        // *revisit-skranz* is needed?                mov r0, #0x1800again9:                subs r0, r0, #0x1        bne again9        FAKE_LED_MACRO(25)        // The following was added by WPD        // Set up a stack [for calling C code]#ifdef CYG_HAL_STARTUP_ROM        // The startup stack is in internal SRAM        ldr     sp,=__startup_stack        // This _MOST_DEFINATELY_ needs to be fixed        orr     sp,sp,#0x10000000#else        // The startup stack is in SDRAM, at some virtual address, but        // we have not set up the MMU yet, so we need to initialize SP        // with the physical address of '__startup_stack'#error "Somehow"#endif        bl      hal_mmu_init        FAKE_LED_MACRO(26)        // Enable MMU        ldr     r2,=10f       	ldr	r1,=MMU_Control_Init|MMU_Control_M        mcr	MMU_CP,0,r1,MMU_Control,c0        mov     pc,r2        //        mcr     MMU_CP,0,r0,MMU_InvalidateCache,c7,0	// Flush data and instruction cache        //	mcr     MMU_CP,0,r0,MMU_TLB,c7,0        	// Flush ID TLBs10:             nop        nop        nop        FAKE_LED_MACRO(27)#if 0        ldr     r3,=0x20000000        str     r1,[r3]        mrc     MMU_CP,0,r1,MMU_Control,c0        str     r1,[r3, #0x04]        mrc     p15,0,r1,c15,c1,0        str     r1,[r3, #0x08]here:        //        b       here#endif#endif        .endm        #else // defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM) || defined(CYG_HAL_STARTUP_REDBOOT)#define PLATFORM_SETUP1#endif//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// end of hal_platform_setup.h// ------------------------------------------------------        // --------------Static Data Definitions-----------------// ------------------------------------------------------/* inernal OMAP registers */	/* interrupt handler level 2 registers */REG_IHL2_MIR:			/* 32 bits */	.word 0xfffe0004	/* OMAP configuration registers */REG_FUNC_MUX_CTRL_0:		/* 32 bits */	.word 0xfffe1000REG_FUNC_MUX_CTRL_1:		/* 32 bits */	.word 0xfffe1004REG_FUNC_MUX_CTRL_2:		/* 32 bits */	.word 0xfffe1008REG_COMP_MODE_CTRL_0:		/* 32 bits */	.word 0xfffe100cREG_FUNC_MUX_CTRL_3:		/* 32 bits */	.word 0xfffe1010REG_FUNC_MUX_CTRL_4:		/* 32 bits */	.word 0xfffe1014REG_FUNC_MUX_CTRL_5:		/* 32 bits */	.word 0xfffe1018REG_FUNC_MUX_CTRL_6:		/* 32 bits */	.word 0xfffe101cREG_FUNC_MUX_CTRL_7:		/* 32 bits */	.word 0xfffe1020REG_FUNC_MUX_CTRL_8:		/* 32 bits */	.word 0xfffe1024REG_FUNC_MUX_CTRL_9:		/* 32 bits */	.word 0xfffe1028REG_FUNC_MUX_CTRL_A:		/* 32 bits */	.word 0xfffe102CREG_FUNC_MUX_CTRL_B:		/* 32 bits */	.word 0xfffe1030REG_FUNC_MUX_CTRL_C:		/* 32 bits */	.word 0xfffe1034REG_FUNC_MUX_CTRL_D:		/* 32 bits */	.word 0xfffe1038REG_PULL_DWN_CTRL_0:		/* 32 bits */	.word 0xfffe1040REG_PULL_DWN_CTRL_1:		/* 32 bits */	.word 0xfffe1044REG_PULL_DWN_CTRL_2:		/* 32 bits */	.word 0xfffe1048REG_PULL_DWN_CTRL_3:		/* 32 bits */	.word 0xfffe104cREG_VOLTAGE_CTRL_0:		/* 32 bits */	.word 0xfffe1060REG_TEST_DBG_CTRL_0:		/* 32 bits */	.word 0xfffe1070REG_MOD_CONF_CTRL_0:		/* 32 bits */	.word 0xfffe1080	/* local bus control registers */REG_LB_CLOCK_DIV:		/* 32 bits */        .word 0xfffec10c	/* watchdog timer registers */REG_WDT_TIMER_MODE:		/* 16 bits */	.word 0xfffec808	/* interrupt handler level 1 registers */REG_IHL1_MIR:			/* 32 bits */	.word 0xfffecb04	/* traffic controller memory interface registers */REG_TC_IMIF_PRIO:		/* 32 bits */	.word 0xfffecc00REG_TC_EMIFS_PRIO:		/* 32 bits */	.word 0xfffecc04REG_TC_EMIFF_PRIO:		/* 32 bits */	.word 0xfffecc08REG_TC_EMIFS_CONFIG:		/* 32 bits */	.word 0xfffecc0cREG_TC_EMIFS_CS0_CONFIG:	/* 32 bits */        .word 0xfffecc10REG_TC_EMIFS_CS1_CONFIG:	/* 32 bits */        .word 0xfffecc14REG_TC_EMIFS_CS2_CONFIG:	/* 32 bits */        .word 0xfffecc18REG_TC_EMIFS_CS3_CONFIG:	/* 32 bits */        .word 0xfffecc1cREG_TC_EMIFF_SDRAM_CONFIG:	/* 32 bits */	.word 0xfffecc20REG_TC_EMIFF_MRS:		/* 32 bits */	.word 0xfffecc24	/* MPU clock/reset/power mode control registers */REG_ARM_CKCTL:			/* 16 bits */	.word 0xfffece00REG_ARM_IDLECT2:		/* 16 bits */        .word 0xfffece08REG_ARM_RSTCT2:			/* 16 bits */        .word 0xfffece14REG_ARM_SYSST:			/* 16 bits */        .word 0xfffece18	/* DPLL control registers */REG_DPLL1_CTL:			/* 16 bits */	.word 0xfffecf00	/* identification code register */REG_IDCODE:			/* 32 bits */        .word 0xfffed404	/* board-specific registers */REG_FPGA_LED_DIGIT:		/* 8 bits (not used on Innovator) */        .word 0x08000003REG_FPGA_POWER:			/* 8 bits */        .word 0x08000005REG_FPGA_AUDIO:			/* 8 bits (not used on Innovator) */	.word 0x0800000cREG_FPGA_DIP_SWITCH:		/* 8 bits (not used on Innovator) */        .word 0x0800000e/* constants */VAL_COMP_MODE_CTRL_0:	.word 0x0000eaefVAL_FUNC_MUX_CTRL_4:	.word 0x00000000VAL_FUNC_MUX_CTRL_5:	.word 0x00000000VAL_FUNC_MUX_CTRL_6:	.word 0x00000001VAL_FUNC_MUX_CTRL_7:	.word 0x00000000VAL_FUNC_MUX_CTRL_8:	.word 0x10001200VAL_FUNC_MUX_CTRL_9:	.word 0x01201012VAL_FUNC_MUX_CTRL_A:	.word 0x00000248VAL_FUNC_MUX_CTRL_B:	.word 0x00000248VAL_FUNC_MUX_CTRL_C:	.word 0x09000000VAL_FUNC_MUX_CTRL_D:	.word 0x00000000VAL_PULL_DWN_CTRL_0:	.word 0x11a10000VAL_PULL_DWN_CTRL_1:	.word 0x2e047fffVAL_PULL_DWN_CTRL_2:	.word 0xffd7d3e6VAL_PULL_DWN_CTRL_3:	.word 0x00003f03VAL_VOLTAGE_CTRL_0:	.word 0x00000007VAL_TEST_DBG_CTRL_0:	/* The OMAP5910 TRM says this register must be 0, but HelenConfRegs 	 * says to write a 7.  Don't know what the right thing is to do, so 	 * I'm leaving it at 7 since that's what was already here.	 */	.word 0x00000007VAL_MOD_CONF_CTRL_0:	.word 0x0b000008VAL_ARM_CKCTL:#ifdef ORIGINAL_CODE	.word 0x110f#else	.word 0x010f#endifVAL_DPLL1_CTL:	.word 0x2710VAL_TC_EMIFS_CS1_CONFIG_PRELIM:	.word 0x00001149VAL_TC_EMIFS_CS2_CONFIG_PRELIM:	.word 0x00004158VAL_TC_EMIFS_CS0_CONFIG:     	.word 0x002130b0VAL_TC_EMIFS_CS1_CONFIG:   	.word 0x0000f559VAL_TC_EMIFS_CS2_CONFIG:   	.word 0x000055f0VAL_TC_EMIFS_CS3_CONFIG:   	.word 0x00003331VAL_TC_EMIFF_SDRAM_CONFIG:   	.word 0x010290fcVAL_TC_EMIFF_MRS:   	.word 0x00000027V_0xffffffff:	.word 0xffffffff      V_0x0000ff22:           .word 0x0000ff22#endif // CYGONCE_HAL_PLATFORM_SETUP_H

⌨️ 快捷键说明

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