blob: 444a2003ce72c01e71944044e6632802dad497b1 [file] [log] [blame]
xf.li6c8fc1e2023-08-12 00:11:09 -07001/**
2 * @file pub_flags.h
3 * @brief flags·ÖÇø×Ö¶Î
4 *
5 * Copyright (C) 2023 Sanechips Technology Co., Ltd.
6 * @author
7 * @ingroup
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation. £¨±ØÑ¡£ºGPLv2 Licence£©
12 *
13 */
14
15
16#ifndef _PUB_FLAGS_H
17#define _PUB_FLAGS_H
18
19
20/*******************************************************************************
21 * Include header files *
22 ******************************************************************************/
23
24
25/*******************************************************************************
26 * Macro definitions *
27 ******************************************************************************/
28/**
29 * @brief ÔÚflags·ÖÇøÀïÆ«ÒÆµØÖ·
30 */
31#define FLAGS_MAGIC (0x464C4147UL)
32
33#define DUALSYSTEM_STATUS_BOOTABLE (0xB0AB) /* ¿ÉÆô¶¯ */
34#define DUALSYSTEM_STATUS_SUCCESSFUL (0x5CCF) /* Äܳɹ¦Æô¶¯ */
35#define DUALSYSTEM_STATUS_UNBOOTABLE (0xBABE) /* ²»¿ÉÆô¶¯ */
36
37
38/*******************************************************************************
39 * Type definitions *
40 ******************************************************************************/
41typedef struct
42{
43 int status; /* bootable/successful/unbootable */
44 int try_cnt;
45} T_DualSystem_Status;
46
47typedef enum
48{
49 DUAL_SYSTEM = 0x875A, /* µÚÒ»¸öϵͳ */
50 DUAL_SYSTEM2 = 0x986B, /* µÚ¶þ¸öϵͳ */
51} T_BOOT_TARGET;
52
xf.liaa4d92f2023-09-13 00:18:58 -070053#define NVRO_INIT (0) /* initial state */
54#define NVRO_BACKED_UP (0xBACE) /* nvro backed up already */
55#define NVRO_RESTORING (0x2E20) /* nvro restoring */
56#define NVRO_INVALID (0xDEAD) /* nvro invalid */
57
xf.li6c8fc1e2023-08-12 00:11:09 -070058/* ˫ϵͳÀàÐÍ */
59typedef enum
60{
61 DUALSYSTEM_RECOVERY = 0x7575, /* normal-recovery˫ϵͳ */
62 DUALSYSTEM_AA = 0xAAAA, /* AA˫ϵͳ */
63 DUALSYSTEM_AB = 0xABAB /* AB˫ϵͳ */
64} T_BOOT_DUALSYSTEM_TYPE;
65
66typedef struct
67{
68 T_BOOT_TARGET boot_to; /* µ±Ç°Æô¶¯ÏµÍ³±êÖ¾*/
69 unsigned int fota_status; /* fota״̬ */
70 T_DualSystem_Status system; /* µÚÒ»¸öϵͳ״̬ */
71 T_DualSystem_Status system2; /* µÚ¶þ¸öϵͳ״̬ */
72} T_BOOT_FOTA_FLAG;
73
74typedef struct
75{
76 T_BOOT_DUALSYSTEM_TYPE dualsys_type; /* ˫ϵͳÀàÐÍ */
77 char system_boot_env[128];
78 char system2_boot_env[128];
79} T_BOOT_ENV;
80
81typedef struct
82{
83 int fs_status; /* ÎļþϵͳÒì³£±êʶ */
84 char fs_mtd_name[16];
85 char fs_ubi_vol_name[16];
86} T_UBIFS_STATUS;
87
88typedef struct
89{
90 unsigned int magic_start; /* Êý¾ÝÓÐЧÐÔħÊõ×Ö */
91
92 T_BOOT_FOTA_FLAG boot_fota_flag;
93 T_BOOT_ENV boot_env;
94 T_UBIFS_STATUS ubifs_status;
xf.liaa4d92f2023-09-13 00:18:58 -070095 unsigned int nvro_flag;
96 char reserve[180];
xf.li6c8fc1e2023-08-12 00:11:09 -070097
98 unsigned int magic_end; /* Êý¾ÝÓÐЧÐÔħÊõ×Ö */
99} T_FLAGS_INFO;
100
101
102#endif // _PUB_FLAGS_H
103