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

📄 mxc_setup_mxc91131.h

📁 i.mx31 3DS平台Nandboot引导程序源码
💻 H
📖 第 1 页 / 共 3 页
字号:
#define         PLL_DP_HFS_MFN      0x24#define         L2CC_ENABLED#define         UART_WIDTH_32         /* internal UART is 32bit access only */#define         HAL_DELAY_US(n)     hal_delay_us(n)#define         CKIH_CLK_FREQ       16800000#define         DIGRF_CLK_FREQ      26000000#define         PLL_REF_CLK         (CKIH_CLK_FREQ * 2)//definitions from redboot\cvs\src\packages\hal\arm\mxc91131\evb\current\include\hal_platform_setup.h#define         FLASH_BURST_MODE_ENABLE 1#define         SDRAM_COMPARE_CONST1    0x55555555#define         SDRAM_COMPARE_CONST2    0xAAAAAAAA//Definitions from redboot\cvs\src\packages\hal\arm\mxc91131\evb\current\include\mxc91131.h#define         PBC_BASE                    CS4_BASE_ADDR    /* Peripheral Bus Controller */#define         MXC91131EVB_CS_LAN_BASE         (CS4_BASE_ADDR + 0x00020000 + 0x300)#define         MXC91131EVB_CS_UART_BASE        (CS4_BASE_ADDR + 0x00010000)#define         REDBOOT_IMAGE_SIZE          0x40000#define         SDRAM_WORKAROUND_FULL_PAGE#define         SDRAM_X32#define         APCLK_399_133_66            /* AP_CLK: 399 MHz, AP_AHB_CLK = 133 MHz, AP_IP_CLK = 66.5 MHz */#define         USB_PLL_CLK_96              /* USB_PLL_CLK: 96 MHz */#define         UART_FIFO_CTRL          0xA01#ifdef          APCLK_532_133_66#define         ADPLL_PDF   (1)#define         ADPLL_MFI   (8)#define         ADPLL_MFN   (-140)#define         ADPLL_MFD   (1680 - 1)#define         ADPLL_OP    ((ADPLL_MFI << 4) | (ADPLL_PDF - 1))#define         ARM_DIV     8   /* 8 => /1 */#define         AHB_DIV     4#define         IP_DIV      8#define         CRM_AP_DIV  ((ARM_DIV << 8) | (AHB_DIV << 4) | (IP_DIV))#define         NFC_DIV     6   /* 6 => /7 */#endif#ifdef          APCLK_399_133_66#define         ADPLL_PDF   (1)#define         ADPLL_MFI   (6)#define         ADPLL_MFN   (-105)#define         ADPLL_MFD   (1680 - 1)#define         ADPLL_OP    ((ADPLL_MFI << 4) | (ADPLL_PDF - 1))#define         ARM_DIV     8   /* 8 => /1 */#define         AHB_DIV     3#define         IP_DIV      6#define         CRM_AP_DIV  ((ARM_DIV << 8) | (AHB_DIV << 4) | (IP_DIV))#define         NFC_DIV     6   /* 6 => /7 */#endif#ifdef          APCLK_266_133_66#define         ADPLL_PDF   (2)#define         ADPLL_MFI   (8)#define         ADPLL_MFN   (-140)#define         ADPLL_MFD   (1680 - 1)#define         ADPLL_OP    ((ADPLL_MFI << 4) | (ADPLL_PDF - 1))#define         ARM_DIV     8   /* 8 => /1 */#define         AHB_DIV     2#define         IP_DIV      4#define         CRM_AP_DIV  ((ARM_DIV << 8) | (AHB_DIV << 4) | (IP_DIV))#define         NFC_DIV     6   /* 6 => /7 */#endif#ifdef          USB_PLL_CLK_96#define         UDPLL_PDF   (1)#define         UDPLL_MFI   (5)#define         UDPLL_MFN   (7142)#define         UDPLL_MFD   (10000 - 1)#define         UDPLL_OP    ((UDPLL_MFI << 4) | (UDPLL_PDF - 1))#define         USB_DIV     0       /* 0 => /2 */#define         FIRI_DIV    1       /* 1 => /2 */#define         CS_DIV      0x19    /* 0x19 => /12.5 */#endif#define         TIMEOUT                 4000/* MXC91131 EVB SDRAM is from 0x80000000, 64M */#define         SDRAM_BASE_ADDR         CSD0_BASE_ADDR#ifdef  SDRAM_X32#define          SDRAM_SIZE              0x04000000#else#define          SDRAM_SIZE              0x02000000#endif //SDRAM_X32#define SETUP_IOMUX()  { }                                       #if defined(__ASSEMBLER__) /* * Platform setup macro */#define PLATFORM_SETUP1 _platform_setup1//definitions from redboot\cvs\src\packages\hal\arm\mxc91131\evb\current\include\hal_platform_setup.h// This macro represents the initial startup code for the platform        .macro  _platform_setup1MXC91131_SETUP_START:        /*         * - set correct memory timings & bus widths         * - configure chip select lines         * - init anything that could be undefined after reset         *//* * Step 1: ARM1136 init *       - invalidate I/D cache/TLB and drain write buffer; *       - invalidate L2 cache *       - unaligned access *       - branch predictions */        mrc 15, 0, r0, c1, c0, 0        /* r0 = system control reg */        bic r0, r0, #(1 << 12)          /* disable ICache */        bic r0, r0, #(1 << 2)           /* disable DCache */        bic r0, r0, #(1 << 0)           /* disable MMU */        mcr 15, 0, r0, c1, c0, 0        /* update system control reg */#ifdef TURN_OFF_IMPRECISE_ABORT        mrs    r0, cpsr        bic    r0, r0, #0x100        msr    cpsr, r0#endif        mov r0, #0        mcr 15, 0, r0, c7, c7, 0        /* invalidate I cache and D cache */        mcr 15, 0, r0, c8, c7, 0        /* invalidate TLBs */        mcr 15, 0, r0, c7, c10, 4        /* Drain the write buffer */        /* Also setup the Peripheral Port Remap register inside the core */        ldr r0, =0x40000015        /* start from AIPS 2GB region */        mcr p15, 0, r0, c15, c2, 4                /*** L2 Cache setup/invalidation/disable ***/        /* Disable L2 cache first */        ldr r0, =L2CC_BASE_ADDR        ldr r2, [r0, #L2_CACHE_CTL_REG]        bic r2, r2, #0x1        str r2, [r0, #L2_CACHE_CTL_REG]        /*         * Configure L2 Cache:         * - 128k size(16k way)         * - 8-way associativity         * - 0 ws TAG/VALID/DIRTY         * - 4 ws DATA R/W         */        ldr r1, [r0, #L2_CACHE_AUX_CTL_REG]        and r1, r1, #0xFE000000        ldr r2, =0x00030024        orr r1, r1, r2        str r1, [r0, #L2_CACHE_AUX_CTL_REG]        /* Invalidate L2 */        ldr r1, =0x000000FF        str r1, [r0, #L2_CACHE_INV_WAY_REG]L2_loop:        /* Poll Invalidate By Way register */        ldr r2, [r0, #L2_CACHE_INV_WAY_REG]        cmp r2, #0        bne L2_loop        /*** End of L2 operations ***//* * End of Step 1: ARM1136 init *//* * Step 2: setup SPBA to allow all 3 masters to have access to these shared peripherals */        /* * End of Step 2: SPBA setup *//* * Step 3: AIPI setup *        Only setup MPROTx registers. The PACR default values are good. */        /*         * Set all MPROTx to be non-bufferable, trusted for R/W,         * not forced to user-mode.         */        ldr r0, =AIPS1_CTRL_BASE_ADDR        ldr r1, =0x77777777        str r1, [r0, #0x00]        str r1, [r0, #0x04]        ldr r0, =AIPS2_CTRL_BASE_ADDR        str r1, [r0, #0x00]        str r1, [r0, #0x04]        /*         * Clear the on and off peripheral modules Supervisor Protect bit         * for SDMA to access them. Did not change the AIPS control registers         * (offset 0x20) access type         */        ldr r0, =AIPS1_CTRL_BASE_ADDR        ldr r1, =0x0        str r1, [r0, #0x40]        str r1, [r0, #0x44]        str r1, [r0, #0x48]        str r1, [r0, #0x4C]        ldr r1, [r0, #0x50]        and r1, r1, #0x00FFFFFF        str r1, [r0, #0x50]        ldr r0, =AIPS2_CTRL_BASE_ADDR        ldr r1, =0x0        str r1, [r0, #0x40]        str r1, [r0, #0x44]        str r1, [r0, #0x48]        str r1, [r0, #0x4C]        ldr r1, [r0, #0x50]        and r1, r1, #0x00FFFFFF        str r1, [r0, #0x50]/* * End of Step 3: AIPI setup *//* * Step 4: MAX (Multi-Layer AHB Crossbar Switch) setup */        ldr r0, =MAX_BASE_ADDR        /* MPR - priority is M4 > M2 > M3 > M5 > M0 > M1 */        ldr r1, =0x00302154        str r1, [r0, #0x000]        /* for S0 */        str r1, [r0, #0x100]        /* for S1 */        str r1, [r0, #0x200]        /* for S2 */        str r1, [r0, #0x300]        /* for S3 */        str r1, [r0, #0x400]        /* for S4 */        /* SGPCR - always park on last master */        ldr r1, =0x10        str r1, [r0, #0x010]        /* for S0 */        str r1, [r0, #0x110]        /* for S1 */        str r1, [r0, #0x210]        /* for S2 */        str r1, [r0, #0x310]        /* for S3 */        str r1, [r0, #0x410]        /* for S4 */        /* MGPCR - restore default values */        ldr r1, =0x0        str r1, [r0, #0x800]        /* for M0 */        str r1, [r0, #0x900]        /* for M1 */        str r1, [r0, #0xA00]        /* for M2 */        str r1, [r0, #0xB00]        /* for M3 */        str r1, [r0, #0xC00]        /* for M4 */        str r1, [r0, #0xD00]        /* for M5 *//* * End of Step 4: MAX setup *//* * Step 5: Clock setup *  */        ldr r0, =ADPLL_BASE_ADDR        ldr r2, =CRM_AP_BASE_ADDR        ldr r3, =CRM_COM_BASE_ADDR/* * If PLL has already been configured via RVD script, skip * ADPLL clock setup.  Running ADPLL setup again can * cause strange behaviors and loss of communication with * RVD. */        ldr r1, [r2, #CRM_AP_ACSR]        ands r1, r1, #(1 << 0)        bne udpll_setup    /* * Configure ADPLL operation register (DP_OP, DP_HFS_OP): */        ldr r1, =ADPLL_OP        str r1, [r0, #DPLL_DP_OP]        str r1, [r0, #DPLL_DP_HFS_OP]    /* * Configure ADPLL operation register (DP_MFN, DP_HFS_MFN): */        ldr r1, =ADPLL_MFN        str r1, [r0, #DPLL_DP_MFN]        str r1, [r0, #DPLL_DP_HFS_MFN]    /* * Configure ADPLL operation register (DP_MFD, DP_HFS_MFN): */        ldr r1, =ADPLL_MFD        str r1, [r0, #DPLL_DP_MFD]        str r1, [r0, #DPLL_DP_HFS_MFD]/*  * Configure CRM_AP divider register (CRM_AP_ACDR): */        ldr r1, =CRM_AP_DIV        str r1, [r2, #CRM_AP_ACDR]    /*  * Configure CRM_COM system control register (CRM_COM_CSCR): *      PDN_CLKMON_CKIH = CLKMON on = (0 << 0)  = 0x00000000 *      NOCK_CKIH = READ-ONLY = (0 << 1)        = 0x00000000 *      PDN_CLKMON_DIGRF = CLKMON off = (1 << 2)= 0x00000004 *      NOCK_DIGRF = READ-ONLY = (0 << 3)       = 0x00000000 *      BY_AMP_CKIH = CAMP used = (0 << 4)      = 0x00000000 *      PDN_AMP_CKIH = CAMP on = (0 << 5)       = 0x00000000 *      REG_MOD = one regulator = (0 << 6)      = 0x00000000 *      DIGRF_CLK_EN = DIGRF enabled = (1 << 7) = 0x00000080 *      Reserved = (3 << 8)                     = 0x00000300 *      CNTL = 1.4 V (5 << 11)                  = 0x00002800 *      MUX_SEL = no test signals = (0 << 14)   = 0x00000000 *      BP_PDSM_EN = no pseudo DSM = (1 << 16)  = 0x00000000 *      CKO_SEL = AP CKO = (1 << 17)            = 0x00020000 *      CKOH_SEL = AP CKOH = (1 << 18)          = 0x00040000 *      NF_WIDTH = 8-bit = (0 << 19)            = 0x00000000 *      NF_PG_SIZ = 512 bytes (0 << 20)         = 0x00000000 *      BY_AMP_DIGRF = CAMP used = (0 << 21)    = 0x00000000 *      PDN_AMP_DIGRF = CAMP off = (1 << 22)    = 0x00400000 *      VREG_CTRL = VREG disabled = (1 << 23)   = 0x00800000 *      CKIH_DBLR_OFF = doubler on = (0 << 24)  = 0x00000000 *      DIGRF_DBLR_OFF = doubler off = (1 << 25)= 0x02000000 *      PDD0 = CRM disables ADPLL = (0 << 26)   = 0x00000000 *      PDD1 = CRM disables BDPLL = (0 << 27)   = 0x00000000 *      PDD2 = CRM disables UDPLL = (0 << 28)   = 0x00000000 *      Reserved = (0 << 29)                    = 0x00000000 *      MRCG_PWR_GT = not gated = (0 << 30)     = 0x00000000 *      BP_PAT_REF_EN = pat_ref on = (1 << 31)  = 0x80000000  *                                              ------------ *                                                0x82C62B84 */        ldr r1, =0x82C62B84        str r1, [r3, #CRM_COM_CSCR]/* * Wait for CKIH doubler to lock */ckih_x2_lock:        ldr r1, [r3, #CRM_COM_CCCR]        ands r1, r1, #(1 << 14)        beq ckih_x2_lock /* * Configure AP clock observation (CRM_AP_ACR): *      CKOS = AP_PAT_REF_CLK = (2 << 4)        = 0x00000020 *      CKOD = CKO enabled = (0 << 7)           = 0x00000000 *      CKOHDIV = /4 = (2 << 8)                 = 0x00000200 *      CKOHS = AP_CLK = (1 << 12)              = 0x00001000 *      CKOHD = CKOH enabled = (0 << 15)        = 0x00000000 *                                              ------------ *                                                0x00001220 */        ldr r1, =0x00001220        str r1, [r2, #CRM_AP_ACR]/*  * Configure CRM_AP DFS control register (CRM_AP_ADCR): *      DIV_BYP = DFS divider used = (0 << 1)   = 0x00000000 *      VSTAT = READ-ONLY = (0 << 3)            = 0x00000000 *      TSTAT = READ-ONLY = (0 << 4)            = 0x00000000 *      DFS_DIV_EN = non-integer DFS = (0 << 5) = 0x00000000 *      CLK_ON = PAT_REF during DFS = (1 << 6)  = 0x00000040 *      ALT_PLL = no DVS ALT PLL = (0 << 7)     = 0x00000000 *      LFDF = /2 = (1 << 8)                    = 0x00000100 *      AP_DELAY = 976 us = (32 << 16)          = 0x00200000 *                                              ------------ *                                                0x00200140 */        ldr r1, =0x00200140        str r1, [r2, #CRM_AP_ADCR]/* * Configure CRM_AP source clock selection register (CRM_AP_ASCSR): *      AP_ISEL = CKIH = (0 << 0)               = 0x00000000 *      APSEL = ADPLL = (0 << 3)                = 0x00000000 *      SSISEL = UDPLL  = (2 << 5)              = 0x00000040 *      SS2SEL = UDPLL  = (2 << 7)              = 0x00000100 *      FIRISEL = UDPLL = (2 << 9)              = 0x00000400 *      CSSEL = UDPLL = (2 << 11)               = 0x00001000 *      USBSEL = UDPLL = (2 << 13)              = 0x00004000

⌨️ 快捷键说明

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