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) /* Copyright (c) 2012 Coraid, Inc.  See COPYING for GPL terms. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  * aoemain.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  * Module initialization routines, discover timer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #include <linux/hdreg.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #include <linux/blkdev.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/skbuff.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include "aoe.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) MODULE_LICENSE("GPL");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) MODULE_AUTHOR("Sam Hopkins <sah@coraid.com>");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) MODULE_DESCRIPTION("AoE block/char driver for 2.6.2 and newer 2.6 kernels");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) MODULE_VERSION(VERSION);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) static struct timer_list timer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) static void discover_timer(struct timer_list *t)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	mod_timer(t, jiffies + HZ * 60); /* one minute */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	aoecmd_cfg(0xffff, 0xff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) static void __exit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) aoe_exit(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	del_timer_sync(&timer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	aoenet_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	unregister_blkdev(AOE_MAJOR, DEVICE_NAME);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	aoecmd_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	aoechr_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	aoedev_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	aoeblk_exit();		/* free cache after de-allocating bufs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) static int __init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) aoe_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 	ret = aoedev_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	if (ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 		return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	ret = aoechr_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 	if (ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 		goto chr_fail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 	ret = aoeblk_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	if (ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 		goto blk_fail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	ret = aoenet_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	if (ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 		goto net_fail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 	ret = aoecmd_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 	if (ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 		goto cmd_fail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 	ret = register_blkdev(AOE_MAJOR, DEVICE_NAME);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 	if (ret < 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 		printk(KERN_ERR "aoe: can't register major\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 		goto blkreg_fail;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 	printk(KERN_INFO "aoe: AoE v%s initialised.\n", VERSION);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 	timer_setup(&timer, discover_timer, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 	discover_timer(&timer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)  blkreg_fail:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) 	aoecmd_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)  cmd_fail:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 	aoenet_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)  net_fail:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) 	aoeblk_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)  blk_fail:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) 	aoechr_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)  chr_fail:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) 	aoedev_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) 	printk(KERN_INFO "aoe: initialisation failure.\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) 	return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) module_init(aoe_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) module_exit(aoe_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)