// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2020 Samsung Electronics Co., Ltd. * http://www.samsung.com * * Samsung TN debugging code * */ #include #include #include #include #include #include /* upload mode en/disable */ int __read_mostly force_upload; module_param(force_upload, int, 0440); static int secdbg_mode_panic_handler(struct notifier_block *nb, unsigned long l, void *buf) { if (!secdbg_mode_enter_upload()) { dbg_snapshot_scratch_clear(); pr_info("%s: dbg_snapshot_scratch_clear done.. (force_upload: %d)\n", __func__, force_upload); } return NOTIFY_DONE; } static struct notifier_block nb_panic_block = { .notifier_call = secdbg_mode_panic_handler, .priority = INT_MAX, }; int secdbg_mode_enter_upload(void) { return force_upload; } EXPORT_SYMBOL(secdbg_mode_enter_upload); static int __init secdbg_mode_init(void) { pr_info("%s: force_upload is %d\n", __func__, force_upload); atomic_notifier_chain_register(&panic_notifier_list, &nb_panic_block); return 0; } module_init(secdbg_mode_init); static void __exit secdbg_mode_exit(void) { atomic_notifier_chain_unregister(&panic_notifier_list, &nb_panic_block); } module_exit(secdbg_mode_exit); MODULE_DESCRIPTION("Samsung Debug mode driver"); MODULE_LICENSE("GPL v2");