# HG changeset patch # User Paul Boddie # Date 1433627731 -7200 # Node ID 8e82f05180d3069831c80c8c0abe24d9ba63437a # Parent 2b0ffb019036cac219fa979944257587c5838c72 Moved boot argument initialisation into the board file, adding it to stage 2. diff -r 2b0ffb019036 -r 8e82f05180d3 board-nanonote.c --- a/board-nanonote.c Sat Jun 06 23:29:51 2015 +0200 +++ b/board-nanonote.c Sat Jun 06 23:55:31 2015 +0200 @@ -23,6 +23,49 @@ #include "jz4740.h" #include "configs.h" #include "nanonote.h" +#include "usb_boot_defines.h" + +/* These arguments are initialised by usbboot and are defined in... + /etc/xburst-tools/usbboot.cfg. */ + +struct fw_args *fw_args; +volatile u32 CPU_ID; +volatile u32 UART_BASE; +volatile u32 CONFIG_BAUDRATE; +volatile u8 SDRAM_BW16; +volatile u8 SDRAM_BANK4; +volatile u8 SDRAM_ROW; +volatile u8 SDRAM_COL; +volatile u8 CONFIG_MOBILE_SDRAM; +volatile u32 CFG_CPU_SPEED; +volatile u32 CFG_EXTAL; +volatile u8 PHM_DIV; +volatile u8 IS_SHARE; + +void load_args(void) +{ + /* Get the fw args from memory. See head.S for the memory layout. */ + + fw_args = (struct fw_args *)0x80002008; + CPU_ID = fw_args->cpu_id ; + CFG_EXTAL = (u32)fw_args->ext_clk * 1000000; + CFG_CPU_SPEED = (u32)fw_args->cpu_speed * CFG_EXTAL ; + if (CFG_EXTAL == 19000000) { + CFG_EXTAL = 19200000; + CFG_CPU_SPEED = 192000000; + } + PHM_DIV = fw_args->phm_div; + UART_BASE = UART0_BASE + fw_args->use_uart * 0x1000; + CONFIG_BAUDRATE = fw_args->boudrate; + SDRAM_BW16 = fw_args->bus_width; + SDRAM_BANK4 = fw_args->bank_num; + SDRAM_ROW = fw_args->row_addr; + SDRAM_COL = fw_args->col_addr; + CONFIG_MOBILE_SDRAM = fw_args->is_mobile; + IS_SHARE = fw_args->is_busshare; +} + +/* Initialisation functions. */ void gpio_init(void) { diff -r 2b0ffb019036 -r 8e82f05180d3 board-nanonote.h --- a/board-nanonote.h Sat Jun 06 23:29:51 2015 +0200 +++ b/board-nanonote.h Sat Jun 06 23:55:31 2015 +0200 @@ -1,6 +1,7 @@ #ifndef __BOARD_NANONOTE_H__ #define __BOARD_NANONOTE_H__ +void load_args(void); void gpio_init(void); void gpio_init2(void); void cpm_init(void); diff -r 2b0ffb019036 -r 8e82f05180d3 stage1.c --- a/stage1.c Sat Jun 06 23:29:51 2015 +0200 +++ b/stage1.c Sat Jun 06 23:55:31 2015 +0200 @@ -18,50 +18,7 @@ * this program. If not, see . */ -#include "jz4740.h" #include "board-nanonote.h" -#include "usb_boot_defines.h" -#include "nanonote.h" - -/* These arguments are initialised by usbboot and are defined in... - /etc/xburst-tools/usbboot.cfg. */ - -struct fw_args *fw_args; -volatile u32 CPU_ID; -volatile u32 UART_BASE; -volatile u32 CONFIG_BAUDRATE; -volatile u8 SDRAM_BW16; -volatile u8 SDRAM_BANK4; -volatile u8 SDRAM_ROW; -volatile u8 SDRAM_COL; -volatile u8 CONFIG_MOBILE_SDRAM; -volatile u32 CFG_CPU_SPEED; -volatile u32 CFG_EXTAL; -volatile u8 PHM_DIV; -volatile u8 IS_SHARE; - -void load_args(void) -{ - /* Get the fw args from memory. See head.S for the memory layout. */ - - fw_args = (struct fw_args *)0x80002008; - CPU_ID = fw_args->cpu_id ; - CFG_EXTAL = (u32)fw_args->ext_clk * 1000000; - CFG_CPU_SPEED = (u32)fw_args->cpu_speed * CFG_EXTAL ; - if (CFG_EXTAL == 19000000) { - CFG_EXTAL = 19200000; - CFG_CPU_SPEED = 192000000; - } - PHM_DIV = fw_args->phm_div; - UART_BASE = UART0_BASE + fw_args->use_uart * 0x1000; - CONFIG_BAUDRATE = fw_args->boudrate; - SDRAM_BW16 = fw_args->bus_width; - SDRAM_BANK4 = fw_args->bank_num; - SDRAM_ROW = fw_args->row_addr; - SDRAM_COL = fw_args->col_addr; - CONFIG_MOBILE_SDRAM = fw_args->is_mobile; - IS_SHARE = fw_args->is_busshare; -} void c_main(void) { diff -r 2b0ffb019036 -r 8e82f05180d3 stage2.c --- a/stage2.c Sat Jun 06 23:29:51 2015 +0200 +++ b/stage2.c Sat Jun 06 23:55:31 2015 +0200 @@ -18,29 +18,11 @@ * this program. If not, see . */ -#include "jz4740.h" #include "board-nanonote.h" -#include "nanonote.h" - -/* These arguments are initialised by usbboot and are defined in... - /etc/xburst-tools/usbboot.cfg. */ - -struct fw_args *fw_args; -volatile u32 CPU_ID; -volatile u32 UART_BASE; -volatile u32 CONFIG_BAUDRATE; -volatile u8 SDRAM_BW16; -volatile u8 SDRAM_BANK4; -volatile u8 SDRAM_ROW; -volatile u8 SDRAM_COL; -volatile u8 CONFIG_MOBILE_SDRAM; -volatile u32 CFG_CPU_SPEED; -volatile u32 CFG_EXTAL; -volatile u8 PHM_DIV; -volatile u8 IS_SHARE; void c_main(void) { + load_args(); gpio_init2(); cpm_init(); rtc_init();