Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #include "edac_module.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) static struct workqueue_struct *wq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) bool edac_queue_work(struct delayed_work *work, unsigned long delay)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 	return queue_delayed_work(wq, work, delay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) EXPORT_SYMBOL_GPL(edac_queue_work);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) bool edac_mod_work(struct delayed_work *work, unsigned long delay)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	return mod_delayed_work(wq, work, delay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) EXPORT_SYMBOL_GPL(edac_mod_work);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) bool edac_stop_work(struct delayed_work *work)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 	bool ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	ret = cancel_delayed_work_sync(work);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	flush_workqueue(wq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) EXPORT_SYMBOL_GPL(edac_stop_work);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) int edac_workqueue_setup(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	wq = alloc_ordered_workqueue("edac-poller", WQ_MEM_RECLAIM);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	if (!wq)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 		return -ENODEV;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 		return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) void edac_workqueue_teardown(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	flush_workqueue(wq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	destroy_workqueue(wq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	wq = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) }