/**************************************************************************** * * Copyright (c) 2014 - 2019 Samsung Electronics Co., Ltd. All rights reserved * ****************************************************************************/ #include #include #include #include /* module parameter value to indicate control of recovery via .memdump.info file */ #define MEMDUMP_FILE_FOR_RECOVERY 2 /* content of .memdump.info file indicating to panic kernel */ #define MEMDUMP_FILE_KERNEL_PANIC 3 /** * Attributes are fields of data your messages will contain. * The designers of Netlink really want you to use these instead of just dumping * data to the packet payload. */ enum attributes { /* The first one has to be a throwaway empty attribute */ ATTR_UNSPEC, ATTR_STR, ATTR_INT, ATTR_PATH, ATTR_CONTENT, ATTR_INT8, /* This must be last! */ __ATTR_MAX, }; /** * Message type codes. */ enum events { /* must be first */ EVENT_UNSPEC, EVENT_SCSC, EVENT_SYSTEM_PROPERTY, EVENT_WRITE_FILE, EVENT_SABLE, /* This must be last! */ __EVENT_MAX, }; enum scsc_wlbtd_response_codes { /* NOTE: keep the enum in sync with userspace wlbtd */ /* parse failed */ SCSC_WLBTD_ERR_PARSE_FAILED, /* fw_panic trigger */ SCSC_WLBTD_FW_PANIC_TAR_GENERATED, SCSC_WLBTD_FW_PANIC_ERR_SCRIPT_FILE_NOT_FOUND, SCSC_WLBTD_FW_PANIC_ERR_NO_DEV, SCSC_WLBTD_FW_PANIC_ERR_MMAP, SCSC_WLBTD_FW_PANIC_ERR_SABLE_FILE, SCSC_WLBTD_FW_PANIC_ERR_TAR, /* other triggers */ SCSC_WLBTD_OTHER_SBL_GENERATED, SCSC_WLBTD_OTHER_TAR_GENERATED, SCSC_WLBTD_OTHER_ERR_SCRIPT_FILE_NOT_FOUND, SCSC_WLBTD_OTHER_ERR_NO_DEV, SCSC_WLBTD_OTHER_ERR_MMAP, SCSC_WLBTD_OTHER_ERR_SABLE_FILE, SCSC_WLBTD_OTHER_ERR_TAR, SCSC_WLBTD_OTHER_IGNORE_TRIGGER, /* Keep this as last entry */ SCSC_WLBTD_LAST_RESPONSE_CODE, }; static const struct genl_multicast_group scsc_mcgrp[] = { { .name = "scsc_mdp_grp", }, }; int scsc_wlbtd_init(void); int scsc_wlbtd_deinit(void); int call_wlbtd(const char *script_path); int wlbtd_write_file(const char *path, const char *content); int call_wlbtd_sable(u8 trigger_code, u16 reason_code); void scsc_wlbtd_wait_for_sable_logging(void); int scsc_wlbtd_get_and_print_build_type(void);