1 #include <asm/arch/sci_types.h>
2 #include <asm/arch/sc_reg.h>
3 #include <asm/arch/adi_hal_internal.h>
5 #include <asm/arch/gpio.h>
6 #include <asm/arch/asm_generic_gpio.h>
7 #include <asm/arch/gpio_phy.h>
8 #include <asm/arch/rtc_reg_v3.h>
9 #include <asm/arch/mfp.h>
11 unsigned check_reboot_mode(void)
15 rst_mode = ANA_REG_GET(ANA_HWRST_STATUS);
16 rst_mode &= HWRST_STATUS_POWERON_MASK;
17 ANA_REG_SET(ANA_HWRST_STATUS, 0); //clear flag
18 if(rst_mode == HWRST_STATUS_RECOVERY)
20 else if(rst_mode == HWRST_STATUS_FASTBOOT)
22 else if(rst_mode == HWRST_STATUS_NORMAL)
24 else if(rst_mode == HWRST_STATUS_NORMAL2)
25 return WATCHDOG_REBOOT;
26 else if(rst_mode == HWRST_STATUS_ALARM)
28 else if(rst_mode == HWRST_STATUS_SLEEP)
30 else if(rst_mode == HWRST_STATUS_SPECIAL)
32 else if(rst_mode == HWRST_STATUS_PANIC)
38 void reboot_devices(unsigned reboot_mode)
40 unsigned rst_mode = 0;
41 if(reboot_mode == RECOVERY_MODE){
42 rst_mode = HWRST_STATUS_RECOVERY;
44 else if(reboot_mode == FASTBOOT_MODE){
45 rst_mode = HWRST_STATUS_FASTBOOT;
46 }else if(reboot_mode == NORMAL_MODE){
47 rst_mode = HWRST_STATUS_NORMAL;
52 ANA_REG_SET(ANA_HWRST_STATUS, rst_mode);
55 asm volatile("ldr r1,=0x20900218"); //remap ROM to 0x0000_0000
56 asm volatile("ldr r2,=1");
57 asm volatile("str r2,[r1]");
58 asm volatile("mov pc,#0");
61 void power_down_devices(unsigned pd_cmd)
66 int power_button_pressed(void)
68 #ifdef CONFIG_SC7710G2
69 ANA_REG_OR(ANA_APB_CLK_EN, BIT_3);
70 ANA_REG_OR(ANA_RTC_CLK_EN, BIT_3);
72 ANA_REG_OR(ANA_APB_CLK_EN, BIT_3|BIT_11);
74 ANA_REG_SET(ADI_EIC_MASK, 0xff);
76 int status = ANA_REG_GET(ADI_EIC_DATA);
77 //printf("eica status %x\n", status);
78 return !!(status & (1 << 3)/*PBINT*/);//low level if pb hold
81 int charger_connected(void)
83 #ifdef CONFIG_SC7710G2
84 ANA_REG_OR(ANA_APB_CLK_EN, BIT_3);
85 ANA_REG_OR(ANA_RTC_CLK_EN, BIT_3);
87 ANA_REG_OR(ANA_APB_CLK_EN, BIT_3|BIT_11);
89 ANA_REG_SET(ADI_EIC_MASK, 0xff);
91 int status = ANA_REG_GET(ADI_EIC_DATA);
92 //printf("charger_connected eica status %x\n", status);
93 return !!(status & (1 << 2));
96 int alarm_triggered(void)
98 printf("ANA_RTC_INT_RSTS is 0x%x\n", ANA_RTC_INT_RSTS);
99 printf("value of it 0x%x\n", ANA_REG_GET(ANA_RTC_INT_RSTS));
100 return ANA_REG_GET(ANA_RTC_INT_RSTS) & BIT_4;