/* * (C) Copyright 2007-2013 * Allwinner Technology Co., Ltd. * Jerry Wang * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ #ifndef __private_uboot_h__ #define __private_uboot_h__ #include "spare_head.h" #ifndef CONFIG_SUNXI_DEBUG_BUF #define CONFIG_SUNXI_DEBUG_BUF #ifndef CONFIG_SUNXI_DEBUG_BUF_SIZE #define CONFIG_SUNXI_DEBUG_BUF_SIZE (1 * 1024 * 1024) #endif #endif /******************************************************************************/ /* the control information stored in file head */ /******************************************************************************/ struct spare_boot_ctrl_head { unsigned int jump_instruction; // one intruction jumping to real code unsigned char magic[MAGIC_SIZE]; // ="u-boot" unsigned int check_sum; // generated by PC unsigned int align_size; // align size in byte unsigned int length; // the size of all file unsigned int uboot_length; // the size of uboot unsigned char version[8]; // uboot version unsigned char platform[8]; // platform information int reserved[1]; //stamp space, 16bytes align }; /******************************************************************************/ /* the data stored in file head */ /******************************************************************************/ struct spare_boot_data_head { unsigned int dram_para[32]; int run_clock; // Mhz int run_core_vol; // mV int uart_port; // UART ctrl num normal_gpio_cfg uart_gpio[2]; // UART GPIO info int twi_port; // TWI ctrl num normal_gpio_cfg twi_gpio[2]; // TWI GPIO info int work_mode; // boot,usb-burn, card-burn int storage_type; // 0:nand 1:sdcard 2:spinor normal_gpio_cfg nand_gpio[32]; // nand GPIO info char nand_spare_data[256]; // nand info normal_gpio_cfg sdcard_gpio[32]; // sdcard GPIO info char sdcard_spare_data[256]; // sdcard info unsigned char secureos_exist; unsigned char monitor_exist; unsigned char res[2]; uint uboot_start_sector_in_mmc; //use in OTA update int multi_config_exist; //multi config swith int dtb_offset; //device tree in uboot int boot_package_size; //boot package size, boot0 pass this value uint dram_scan_size; //dram real size, M }; // 256bytes align /******************************************* * * * boot_ext[0]: pmu type * boot_ext[1]: uart input value * boot_ext[2]: lradc key input value * boot_ext[3]: debug mode, boot0 send it * *******************************************/ struct spare_boot_ext_head { int data[4]; }; struct spare_boot_head_t { struct spare_boot_ctrl_head boot_head; struct spare_boot_data_head boot_data; struct spare_boot_ext_head boot_ext[16]; }; struct spare_monitor_head { unsigned int jump_instruction; // one intruction jumping to real code unsigned char magic[MAGIC_SIZE]; // ="u-boot" unsigned int scp_base; // generated by PC unsigned int nboot_base; // align size in byte unsigned int nos_base; // the size of all file unsigned int secureos_base; // the size of uboot unsigned char version[8]; // uboot version unsigned char platform[8]; // platform information int reserved[1]; //stamp space, 16bytes align }; struct display_params { char resolution[32]; char margin[32]; char vendorid[64]; int format; /* RGB / YUV444 / YUV422 / YUV420 */ int depth; /* Color depth: 8 / 10 / 12 / 16 */ int eotf; /* Electro-Optical Transfer Functions */ int color_space; /* BT.601 / BT.709 / BT.2020 */ /* * make sure sizeof(struct display_params) == 256 * reserved size = 256 -128 - 4*4 = 112 */ char reserved[112]; }; /*size is 128*/ typedef struct spare_parameter_ctrl_head_t { unsigned int crc; unsigned char magic[MAGIC_SIZE]; unsigned int length; char reserved[112]; }__attribute__ ((packed)) spare_parameter_ctrl_head; /*size is 4096-128*/ typedef struct spare_parameter_data_head_t { struct display_params display_param; char reserved[3712]; }__attribute__ ((packed))spare_parameter_data_head; /*size is 4096*/ typedef struct spare_parameter_head_t { spare_parameter_ctrl_head para_head; spare_parameter_data_head para_data; }__attribute__ ((packed))spare_parameter_head; extern struct spare_boot_head_t uboot_spare_head; extern unsigned long get_spare_head_size(void); #endif