#define FACTORY_PART "prodnv"
#define CMDLINE_BUF_SIZE (1024)
-unsigned spl_data_buf[0x2000] __attribute__ ((align(4))) = {
+unsigned spl_data_buf[0x2000] __attribute__ ((aligned(4))) = {
0};
-unsigned harsh_data_buf[8] __attribute__ ((align(4))) = {
+unsigned harsh_data_buf[8] __attribute__ ((aligned(4))) = {
0};
void *spl_data = spl_data_buf;
unsigned char raw_header[8192];
const int SP09_MAX_PHASE_BUFF_SIZE = sizeof(SP09_PHASE_CHECK_T);
unsigned int g_charger_mode = 0;
+unsigned int g_recovery_mode = 0;
char serial_number_to_transfer[SP09_MAX_SN_LEN];
+void sipc_addr_reset(void);
extern int charger_connected(void);
+extern void power_down_devices(unsigned pd_cmd);
+#if (defined CONFIG_SC8810) || (defined CONFIG_SC8825) || (defined CONFIG_SC8830) || (defined CONFIG_SC9630)
+extern void MMU_DisableIDCM(void);
+#endif
+extern uint32_t load_lcd_id_to_kernel(void);
+extern int get_dram_cs_number(void);
+extern int get_dram_cs0_size(void);
+extern bool is_calibration_by_uart(void);
+extern unsigned int get_fgu_vol(void);
+extern unsigned int get_fgu_cur(void);
+extern void modem_entry(void);
+#ifdef CONFIG_EMMC_BOOT
+extern void Emmc_DisSdClk(void);
+#endif
+extern int fdt_fixup_adc_calibration_data(void *fdt);
+extern int fdt_fixup_boot_ram_log(void *fdt);
+extern int fdt_fixup_chosen_bootargs_board_private(void *fdt, const char *boot_mode);
+extern int do_fs_file_read(char *mpart, char *filenm, void *buf, int len);
+extern int do_raw_data_read(char *part, u32 size, u32 off, char *buf);
+#ifdef CONFIG_TIZEN
+extern uint8_t *load_mtp_offset_to_kernel(void);
+extern uint8_t load_elvss_offset_to_kernel(void);
+extern uint8_t *load_hbm_offset_to_kernel(void);
+extern void sprdchg_start_charge(void);
+extern int thor_save_env(char *str);
+extern void tizen_get_emmc_serial_number(unsigned int *uid);
+extern int load_nvitem(void);
+extern int load_modem_data(void);
+extern int load_dsp_data(void);
+#endif
extern void *lcd_base;
#ifdef CONFIG_OF_LIBFDT
uint16_t crc;
crc = calc_checksum(buf, size);
- debugf("_chkNVEcc calcout 0x%lx, org 0x%llx\n", crc, checksum);
+ debugf("_chkNVEcc calcout 0x%x, org 0x%x\n", crc, checksum);
return (crc == (uint16_t) checksum);
}
char *ptr = buf;
char *s;
unsigned int val;
- struct mmc *mmc;
/* Tizen default cmdline: mem */
- ptr += sprintf(ptr, CMDLINE_DEFAULT_TIZEN);
+ ptr += sprintf(ptr, CMDLINE_DEFAULT_TIZEN " ");
+#ifdef CONFIG_RAMDISK_BOOT
+ if (g_recovery_mode)
+ ptr += sprintf(ptr, " bootmode=recovery");
+
+ ptr += sprintf(ptr, " root=/dev/ram0 rw initrd=0x%x,%dM",
+ RAMDISK_ADR, RAMDISK_SIZE_MB);
+#else
val = tizen_get_part_num(PARTS_ROOTFS);
ptr += sprintf(ptr, " root=/dev/mmcblk0p%d ro rootfstype=ext4 rootwait", val);
+ ptr += sprintf(ptr, " initrd=0x%x,0x%x", RAMDISK_ADR, 0);
+#endif
ptr += sprintf(ptr, " lcd_id=ID%06x", load_lcd_id_to_kernel());
ptr += sprintf(ptr, " lcd_base=%x", CONFIG_FB_RAM_BASE);
- /* check ramdisk_size */
- ptr += sprintf(ptr, " initrd=0x%x,0x%x", RAMDISK_ADR, 0);
-
- ptr += sprintf(ptr, " mtp_offset=%s", load_mtp_offset_to_kernel());
+ ptr += sprintf(ptr, " mtp_offset=%s", (char *)load_mtp_offset_to_kernel());
ptr += sprintf(ptr, " elvss_offset=0x%x", load_elvss_offset_to_kernel());
- ptr += sprintf(ptr, " hbm_offset=%s", load_hbm_offset_to_kernel());
+ ptr += sprintf(ptr, " hbm_offset=%s", (char *)load_hbm_offset_to_kernel());
ptr += sprintf(ptr, " wfixnv=0x%x,0x%x", WFIXNV_ADR, FIXNV_SIZE);
ptr += sprintf(ptr, " wruntimenv=0x%x,0x%x", WRUNTIMENV_ADR, RUNTIMENV_SIZE);
break;
case PM_STATE_NORMAL:
default:
- ptr += sprintf(ptr, " bootmode=normal");
+ if (!g_recovery_mode) {
+#ifdef CONFIG_RAMDISK_BOOT
+ ptr += sprintf(ptr, " bootmode=ramdisk");
+#else
+ ptr += sprintf(ptr, " bootmode=normal");
+#endif
+ }
}
thor_save_env("normal");
ptr += sprintf(ptr, " sec_debug.enable_user=0");
}
- if (tizen_get_jig_state() == 2) {
+ if (tizen_get_jig_state() == 2 || tizen_board_key_scan() == 0x81) {
s = getenv("console");
if (s && (*s == 'o'))
ptr += sprintf(ptr, " console=ttyS1,115200n8 loglevel=7");
s = getenv("sec_log");
if (s && (*s == 'o')) {
- if (s = getenv("sec_log_addr")) {
+ s = getenv("sec_log_addr");
+ if (s) {
val = (u32) simple_strtoul(s, NULL, 16);
ptr += sprintf(ptr, " sec_log=0x%x@0x%x", SEC_LOG_LENGTH, val);
}
/*FDT_ADD_SIZE used to describe the size of the new bootargs items*/
/*include lcd id, lcd base, etc*/
#define FDT_ADD_SIZE (1024)
-static int start_linux()
+static int start_linux(void)
{
void (*theKernel) (int zero, int arch, u32 params);
- u32 exec_at = (u32) - 1;
- u32 parm_at = (u32) - 1;
u32 machine_type;
u8 *fdt_blob;
u32 fdt_size;
- boot_img_hdr *hdr = raw_header;
int err;
machine_type = machine_arch_type; /* get machine type */
while (1);
#endif /* CONFIG_TIZEN */
-//#else
-// fdt_initrd_norsvmem(fdt_blob, RAMDISK_ADR, RAMDISK_ADR + hdr->ramdisk_size, 1);
fdt_fixup_lcdid(fdt_blob);
fdt_fixup_lcdbase(fdt_blob);
fdt_fixup_calibration_parameter(fdt_blob);
return 0;
}
+void set_recovery_mode(unsigned int recovery_mode)
+{
+ g_recovery_mode = recovery_mode;
+}
+
void lcd_display_logo(int backlight_set, ulong bmp_img, size_t size)
{
-#define mdelay(t) ({unsigned long msec=(t); while (msec--) { udelay(1000);}}) //LiWei add
#ifdef CONFIG_SPLASH_SCREEN
extern int lcd_display_bitmap(ulong bmp_image, int x, int y);
extern void lcd_display(void);
mdelay(50);
set_backlight(255);
} else {
- memset((unsigned int)lcd_base, 0, size);
+ memset(lcd_base, 0, size);
#if defined(CONFIG_SC8810) || defined(CONFIG_SC8825) || defined(CONFIG_SC8830) || defined(CONFIG_SC9630)
Dcache_CleanRegion((unsigned int)(lcd_base), size << 1); //Size is to large.
#endif
#endif
}
-int is_factorymode()
+int is_factorymode(void)
{
char factorymode_falg[8] = { 0 };
int ret = 0;
nv_info = (char *)(((volatile u32 *)CALIBRATION_FLAG));
sprintf(nv_info, buf);
nv_info[str_len] = '\0';
- debugf("nv_info:[%08x]%s \n", nv_info, nv_info);
+ debugf("nv_info:[%08lx]%s \n", (unsigned long)nv_info, nv_info);
#endif
#ifdef CONFIG_SUPPORT_W
nv_info = (char *)((volatile u32 *)CALIBRATION_FLAG_WCDMA);
sprintf(nv_info, buf);
nv_info[str_len] = '\0';
- debugf("nv_info:[%08x]%s \n", nv_info, nv_info);
+ debugf("nv_info:[%08lx]%s \n", (unsigned long)nv_info, nv_info);
#endif
#ifdef CONFIG_SC9630
#ifdef CONFIG_CP0_ARM0_BOOT
nv_info = (char *)(((volatile u32 *)CALIBRATION_FLAG_CP0));
sprintf(nv_info, buf);
nv_info[str_len] = '\0';
- debugf("nv_info:[%08x]%s \n", nv_info, nv_info);
+ debugf("nv_info:[%08lx]%s \n", (unsigned long)nv_info, nv_info);
#endif
nv_info = (char *)(((volatile u32 *)CALIBRATION_FLAG_CP1));
sprintf(nv_info, buf);
nv_info[str_len] = '\0';
- debugf("nv_info:[%08x]%s \n", nv_info, nv_info);
+ debugf("nv_info:[%08lx]%s \n", (unsigned long)nv_info, nv_info);
#endif
}
{
char *buf;
int offset = 0;
- int ret = 0;
if (cmdline == NULL) {
return -1;
/*down the device if charger disconnect during calibration detect. */
if (g_charger_mode && !charger_connected()) {
g_charger_mode = 0;
- power_down_devices();
+ power_down_devices(0);
while (1) ;
}
#if !(defined CONFIG_SC8810 || defined CONFIG_TIGER || defined CONFIG_SC8830) || (defined CONFIG_SC9630)
#if BOOT_NATIVE_LINUX_MODEM
-void sipc_addr_reset()
+void sipc_addr_reset(void)
{
#ifdef CONFIG_SC8825
memset((void *)SIPC_APCP_START_ADDR, 0x0, SIPC_APCP_RESET_ADDR_SIZE);