blob: ee28293374001f81995f1274012f1ee5292f21db [file] [log] [blame]
you.chen21458442023-08-21 17:48:27 +08001#include <stdio.h>
jb.qi0eb9aff2024-07-17 01:40:53 -07002#include <string.h>
3#include <stdlib.h>
you.chen21458442023-08-21 17:48:27 +08004#include "lynq_misc.h"
5#include "log/log.h"
6
7#undef LOG_TAG
8#define LOG_TAG "MISC"
9
10int lynq_get_security_boot_flag(int * enabled_flag)
11{
12 int value, ret;
13 if (enabled_flag == NULL)
14 {
15 RLOGE("input param is null ptr");
16 return -1;
17 }
18 *enabled_flag = 0;
19 FILE *pfile=fopen("/proc/device-tree/chosen/atag,devinfo", "r");
20 if (pfile == NULL)
21 {
22 RLOGE("open devinfo fail");
23 return -1;
24 }
25 ret = fseek(pfile, 0x428, 0);
26 if (ret != 0)
27 {
28 RLOGE("seek file fail");
29 fclose(pfile);
30 return -1;
31 }
32 ret = fread(&value, sizeof (value), 1, pfile);
33 if (ret != 1)
34 {
35 RLOGE("read file fail");
36 fclose(pfile);
37 return -1;
38 }
39 fclose(pfile);
40
you.chen3c690fb2023-09-12 18:14:26 +080041 // the third bit of 32bits at 0x428 (index start with 0?), 1 for enabled, 0 not enabled
42 *enabled_flag = (value & 0x8) == 0 ? 0 : 1;
you.chen21458442023-08-21 17:48:27 +080043 return 0;
44}
jb.qi0eb9aff2024-07-17 01:40:53 -070045
46
47
48int lynq_get_reboot_reason(void)
49{
50 FILE *fp;
51 int ret;
52 char buffer[8];
53 int flag[3];
54 char *token;
55 int i = 1;
56 fp = popen("cat /proc/aed/reboot-reason|sed -n '1p'|awk '{print $3, $6,$9}'","r");
57 fgets(buffer, sizeof(buffer), fp);
58 pclose(fp);
59 RLOGE("buffer is %s, size is %d\n", buffer, sizeof(buffer));
60 token = strtok(buffer, " ");
61 flag[0] = atoi(token);
62 while(i < 3)
63 {
64 token = strtok(NULL, " ");
65 flag[i] = atoi(token);
66 i++;
67 }
68 if(flag[0] == 0)
69 {
70 ret = system("cat /sys/fs/pstore/console-ramoops-0 > /dev/null");
71 if(ret == 0)
72 {
73 RLOGE("reboot reason is sysrst pin\n");
74 return 1;
75 }
76 else
77 {
78 RLOGE("reboot reason is power off\n");
79 return 0;
80 }
81 }
82 else if(flag[0] == 2)
83 {
84 if(flag[2] == 0)
85 {
86 RLOGE("reboot reason is soft nomal reboot\n");
87 return 2;
88 }
89 else
90 {
91 RLOGE("reboot reason is panic\n");
92 return 3;
93 }
94 }
95 else
96 {
97 RLOGE("reboot reason is other\n");
98 return 4;
99 }
100
101 return 0;
102
103}