Created
June 10, 2014 11:36
-
-
Save Embedded-linux/bad0bedaf587eeac8d85 to your computer and use it in GitHub Desktop.
u-boot port [NOR port]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| files changed to add port NOR to u-boot code | |
| 1.arch/arm/cpu/armv7/am33xx/emif4.c | |
| 2.arch/arm/cpu/armv7/am33xx/mem.c | |
| 3.board/ti/am335x/board.c | |
| 4.board/ti/am335x/board.h | |
| 5.board/ti/am335x/mux.c | |
| 6.board/ti/am335x/u-boot.lds | |
| 7.boards.cfg | |
| 1.arch/arm/cpu/armv7/am33xx/emif4.c | |
| +#if defined(CONFIG_SPL_BUILD) || defined(CONFIG_NOR_BOOT) | |
| 2.arch/arm/cpu/armv7/am33xx/mem.c | |
| +#if defined(CONFIG_CMD_NAND) || defined(CONFIG_NOR) | |
| +#ifdef CONFIG_NOR | |
| + writel(0x00000000, &gpmc_cfg->irqstatus); | |
| + writel(0x00000000, &gpmc_cfg->irqenable); | |
| + writel(0x00000A00, &gpmc_cfg->config); | |
| +#else | |
| writel(0x00000100, &gpmc_cfg->irqstatus); | |
| writel(0x00000200, &gpmc_cfg->irqenable); | |
| writel(0x00000012, &gpmc_cfg->config); | |
| +#endif | |
| + | |
| +#ifdef CONFIG_NOR | |
| + /* NOR - CS0 */ | |
| + gpmc_config = gpmc_nor; | |
| + base = CONFIG_SYS_FLASH_BASE; | |
| + size = GPMC_SIZE_16M; | |
| + enable_gpmc_cs_config(gpmc_config, &gpmc_cfg->cs[0], base, size); | |
| + writel(0x00000a00, 0x50000050); | |
| +#endif | |
| 3.board/ti/am335x/board.c | |
| +#if defined(CONFIG_SPL_BUILD) || defined(CONFIG_NOR_BOOT) | |
| +#if defined(CONFIG_SPL_BUILD) || defined(CONFIG_NOR_BOOT) | |
| +#ifdef CONFIG_NOR_BOOT | |
| + asm("stmfd sp!, {r2 - r4}"); | |
| + asm("movw r4, #0x8A4"); | |
| + asm("movw r3, #0x44E1"); | |
| + asm("orr r4, r4, r3, lsl #16"); | |
| + asm("mov r2, #9"); | |
| + asm("mov r3, #8"); | |
| + asm("gpmc_mux: str r2, [r4], #4"); | |
| + asm("subs r3, r3, #1"); | |
| + asm("bne gpmc_mux"); | |
| + asm("ldmfd sp!, {r2 - r4}"); | |
| +#endif | |
| +#if defined(CONFIG_SPL_BUILD) || defined(CONFIG_NOR_BOOT) | |
| +#if defined(CONFIG_NOR_BOOT) | |
| + gd = (gd_t *) ((CONFIG_SYS_INIT_SP_ADDR) & ~0x07); | |
| + gd->baudrate = CONFIG_BAUDRATE; | |
| + serial_init(); | |
| + gd->have_console = 1; | |
| +#else | |
| gd = &gdata; | |
| preloader_console_init(); | |
| +#endif | |
| +// enable_nand_pin_mux(); | |
| + | |
| +#if defined(CONFIG_NOR) && !defined(CONFIG_NOR_BOOT) | |
| + enable_nor_pin_mux(); | |
| +#endif | |
| + | |
| +#ifdef CONFIG_NOR_BOOT | |
| + am33xx_spl_board_init(); | |
| +#endif | |
| 4.board/ti/am335x/board.h | |
| +#if defined(CONFIG_NOR) && !defined(CONFIG_NOR_BOOT) | |
| void enable_board_pin_mux(struct am335x_baseboard_id *header); | |
| #endif | |
| +#endif | |
| 5.board/ti/am335x/mux.c | |
| +#if defined(CONFIG_NOR) && !defined(CONFIG_NOR_BOOT) | |
| +static struct module_pin_mux bone_norcape_pin_mux[] = { | |
| + {OFFSET(lcd_data0), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A0 */ | |
| + {OFFSET(lcd_data1), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A1 */ | |
| + {OFFSET(lcd_data2), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A2 */ | |
| + {OFFSET(lcd_data3), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A3 */ | |
| + {OFFSET(lcd_data4), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A4 */ | |
| + {OFFSET(lcd_data5), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A5 */ | |
| + {OFFSET(lcd_data6), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A6 */ | |
| + {OFFSET(lcd_data7), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A7 */ | |
| + {OFFSET(lcd_vsync), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A8 */ | |
| + {OFFSET(lcd_hsync), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A9 */ | |
| + {OFFSET(lcd_pclk), MODE(1)| PULLUDEN | RXACTIVE}, /* NOR_A10 */ | |
| + {OFFSET(lcd_ac_bias_en), MODE(1)| PULLUDEN | RXACTIVE}, /* NOR_A11 */ | |
| + {OFFSET(lcd_data8), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A12 */ | |
| + {OFFSET(lcd_data9), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A13 */ | |
| + {OFFSET(lcd_data10), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A14 */ | |
| + {OFFSET(lcd_data11), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A15 */ | |
| + {OFFSET(lcd_data12), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A16 */ | |
| + {OFFSET(lcd_data13), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A17 */ | |
| + {OFFSET(lcd_data14), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A18 */ | |
| + {OFFSET(lcd_data15), MODE(1) | PULLUDEN | RXACTIVE}, /* NOR_A19 */+ {OFFSET(gpmc_ad0), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD0 */ | |
| + {OFFSET(gpmc_ad1), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD1 */ | |
| + {OFFSET(gpmc_ad2), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD2 */ | |
| + {OFFSET(gpmc_ad3), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD3 */ | |
| + {OFFSET(gpmc_ad4), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD4 */ | |
| + {OFFSET(gpmc_ad5), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD5 */ | |
| + {OFFSET(gpmc_ad6), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD6 */ | |
| + {OFFSET(gpmc_ad7), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD7 */ | |
| + {OFFSET(gpmc_ad8), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD8 */ | |
| + {OFFSET(gpmc_ad9), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD9 */ | |
| + {OFFSET(gpmc_ad10), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD10 */ | |
| + {OFFSET(gpmc_ad11), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD11 */ | |
| + {OFFSET(gpmc_ad12), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD12 */ | |
| + {OFFSET(gpmc_ad13), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD13 */ | |
| + {OFFSET(gpmc_ad14), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD14 */ | |
| + {OFFSET(gpmc_ad15), MODE(0) | PULLUDEN | RXACTIVE}, /* NOR_AD15 */ | |
| + | |
| + {OFFSET(gpmc_csn0), (MODE(0) | PULLUDEN) | RXACTIVE}, /* NOR_CE */ | |
| + {OFFSET(gpmc_advn_ale), (MODE(0) | PULLUDEN) | RXACTIVE}, /* NOR_ADVN_ALE */ | |
| + {OFFSET(gpmc_oen_ren), (MODE(0) | PULLUDEN | RXACTIVE)},/* NOR_OE */ | |
| + {OFFSET(gpmc_be0n_cle), (MODE(0) | PULLUDEN | RXACTIVE)},/* NOR_BE0N_CLE */ | |
| + {OFFSET(gpmc_wen), (MODE(0) | PULLUDEN | RXACTIVE)}, /* NOR_WEN */ | |
| + {OFFSET(gpmc_wait0), (MODE(0) | RXACTIVE | PULLUDEN)}, /* NOR WAIT */+ {-1}, | |
| +}; | |
| +#endif | |
| + | |
| +#if defined(CONFIG_NOR) && !defined(CONFIG_NOR_BOOT) | |
| +void enable_nor_pin_mux(void) | |
| +{ | |
| + configure_module_pin_mux(bone_norcape_pin_mux); | |
| +} | |
| +#endif | |
| 6.board/ti/am335x/u-boot.lds | |
| + board/ti/am335x/libam335x.o (.text*) | |
| 7.boards.cfg | |
| +am335x_evm_nor arm armv7 am335x ti am33xx am335x_evm:SERIAL1,CONS_INDEX=1,NOR | |
| +am335x_evm_norboot arm armv7 am335x ti am33xx am335x_evm:SERIAL1,CONS_INDEX=1,NOR,NOR_BOOT | |
| These files changed to add NOR support in u-boot, with these changes u-boot | |
| can boot from NOR memory directly. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment