/* Serial number of this device */
int (*get_device_serial_number)(char *buffer, int len);
int (*get_device_revision)(int *revision);
- int (*switch_partition)(int argc, char *argv[]);
+
int (*set_boot_success)(void);
int (*clear_boot_mode)(void);
int (*get_boot_mode)(char *buffer, int len);
int (*get_boot_reason)(char *buffer, int len);
+
+ int (*switch_partition)(int argc, char *argv[]);
+ int (*set_partition_ab_cloned)(void);
+ int (*clear_partition_ab_cloned)(void);
+ int (*get_partition_ab_cloned)(int *cloned);
+
} hal_backend_board_funcs;
#ifdef __cplusplus
int hal_device_board_get_backend(void);
int hal_device_board_put_backend(void);
+
int hal_device_board_get_device_serial_number(char *buffer, int len);
int hal_device_board_get_device_revision(int *revision);
-int hal_device_board_switch_partition(int argc, char *argv[]);
+
int hal_device_board_set_boot_success(void);
int hal_device_board_clear_boot_mode(void);
int hal_device_board_get_boot_mode(char *buffer, int len);
int hal_device_board_get_boot_reason(char *buffer, int len);
+int hal_device_board_switch_partition(int argc, char *argv[]);
+int hal_device_board_set_partition_ab_cloned(void);
+int hal_device_board_clear_partition_ab_cloned(void);
+int hal_device_board_get_partition_ab_cloned(int *cloned);
+
#ifdef __cplusplus
}
#endif
return hal_board_funcs->get_device_revision(revision);
}
-int hal_device_board_switch_partition(int argc, char *argv[])
+int hal_device_board_set_boot_success(void)
{
int ret;
}
if (!hal_board_funcs ||
- !hal_board_funcs->switch_partition)
+ !hal_board_funcs->set_boot_success)
return -ENODEV;
- return hal_board_funcs->switch_partition(argc, argv);
+ return hal_board_funcs->set_boot_success();
}
-int hal_device_board_set_boot_success(void)
+
+int hal_device_board_clear_boot_mode(void)
{
int ret;
}
if (!hal_board_funcs ||
- !hal_board_funcs->set_boot_success)
+ !hal_board_funcs->clear_boot_mode)
return -ENODEV;
- return hal_board_funcs->set_boot_success();
+ return hal_board_funcs->clear_boot_mode();
}
+int hal_device_board_get_boot_mode(char *buffer, int len)
+{
+ int ret;
-int hal_device_board_clear_boot_mode(void)
+ if (!hal_board_funcs && !hal_initialized) {
+ if ((ret = hal_device_board_get_backend()) < 0)
+ return ret;
+ }
+
+ if (!hal_board_funcs ||
+ !hal_board_funcs->get_boot_mode)
+ return -ENODEV;
+
+ return hal_board_funcs->get_boot_mode(buffer, len);
+}
+
+int hal_device_board_get_boot_reason(char *buffer, int len)
{
int ret;
}
if (!hal_board_funcs ||
- !hal_board_funcs->clear_boot_mode)
+ !hal_board_funcs->get_boot_reason)
return -ENODEV;
- return hal_board_funcs->clear_boot_mode();
+ return hal_board_funcs->get_boot_reason(buffer, len);
}
-int hal_device_board_get_boot_mode(char *buffer, int len)
+int hal_device_board_switch_partition(int argc, char *argv[])
{
int ret;
}
if (!hal_board_funcs ||
- !hal_board_funcs->get_boot_mode)
+ !hal_board_funcs->switch_partition)
return -ENODEV;
- return hal_board_funcs->get_boot_mode(buffer, len);
+ return hal_board_funcs->switch_partition(argc, argv);
}
-int hal_device_board_get_boot_reason(char *buffer, int len)
+int hal_device_board_set_partition_ab_cloned(void)
{
int ret;
}
if (!hal_board_funcs ||
- !hal_board_funcs->get_boot_reason)
+ !hal_board_funcs->set_partition_ab_cloned)
return -ENODEV;
- return hal_board_funcs->get_boot_reason(buffer, len);
+ return hal_board_funcs->set_partition_ab_cloned();
+}
+
+int hal_device_board_clear_partition_ab_cloned(void)
+{
+ int ret;
+
+ if (!hal_board_funcs && !hal_initialized) {
+ if ((ret = hal_device_board_get_backend()) < 0)
+ return ret;
+ }
+
+ if (!hal_board_funcs ||
+ !hal_board_funcs->clear_partition_ab_cloned)
+ return -ENODEV;
+
+ return hal_board_funcs->clear_partition_ab_cloned();
+}
+
+int hal_device_board_get_partition_ab_cloned(int *cloned)
+{
+ int ret;
+
+ if (!hal_board_funcs && !hal_initialized) {
+ if ((ret = hal_device_board_get_backend()) < 0)
+ return ret;
+ }
+
+ if (!hal_board_funcs ||
+ !hal_board_funcs->get_partition_ab_cloned)
+ return -ENODEV;
+
+ return hal_board_funcs->get_partition_ab_cloned(cloned);
}