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 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) scale=0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) define gcd(a,b) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 	auto t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 	while (b) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 		t = b;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 		b = a % b;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 		a = t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 	return a;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) /* Division by reciprocal multiplication. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) define fmul(b,n,d) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)        return (2^b*n+d-1)/d;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) /* Adjustment factor when a ceiling value is used.  Use as:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)    (imul * n) + (fmulxx * n + fadjxx) >> xx) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) define fadj(b,n,d) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	auto v;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	d = d/gcd(n,d);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	v = 2^b*(d-1)/d;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	return v;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) /* Compute the appropriate mul/adj values as well as a shift count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)    which brings the mul value into the range 2^b-1 <= x < 2^b.  Such
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)    a shift value will be correct in the signed integer range and off
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)    by at most one in the upper half of the unsigned range. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) define fmuls(b,n,d) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	auto s, m;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	for (s = 0; 1; s++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 		m = fmul(s,n,d);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 		if (m >= 2^(b-1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 			return s;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) define timeconst(hz) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	print "/* Automatically generated by kernel/time/timeconst.bc */\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	print "/* Time conversion constants for HZ == ", hz, " */\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	print "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	print "#ifndef KERNEL_TIMECONST_H\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	print "#define KERNEL_TIMECONST_H\n\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	print "#include <linux/param.h>\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	print "#include <linux/types.h>\n\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	print "#if HZ != ", hz, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	print "#error \qinclude/generated/timeconst.h has the wrong HZ value!\q\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	print "#endif\n\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	if (hz < 2) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 		print "#error Totally bogus HZ value!\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	} else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 		s=fmuls(32,1000,hz)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 		obase=16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 		print "#define HZ_TO_MSEC_MUL32\tU64_C(0x", fmul(s,1000,hz), ")\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 		print "#define HZ_TO_MSEC_ADJ32\tU64_C(0x", fadj(s,1000,hz), ")\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 		obase=10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 		print "#define HZ_TO_MSEC_SHR32\t", s, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 		s=fmuls(32,hz,1000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 		obase=16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 		print "#define MSEC_TO_HZ_MUL32\tU64_C(0x", fmul(s,hz,1000), ")\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 		print "#define MSEC_TO_HZ_ADJ32\tU64_C(0x", fadj(s,hz,1000), ")\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 		obase=10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 		print "#define MSEC_TO_HZ_SHR32\t", s, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 		obase=10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 		cd=gcd(hz,1000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 		print "#define HZ_TO_MSEC_NUM\t\t", 1000/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 		print "#define HZ_TO_MSEC_DEN\t\t", hz/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 		print "#define MSEC_TO_HZ_NUM\t\t", hz/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 		print "#define MSEC_TO_HZ_DEN\t\t", 1000/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 		print "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 		s=fmuls(32,1000000,hz)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 		obase=16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 		print "#define HZ_TO_USEC_MUL32\tU64_C(0x", fmul(s,1000000,hz), ")\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 		print "#define HZ_TO_USEC_ADJ32\tU64_C(0x", fadj(s,1000000,hz), ")\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 		obase=10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 		print "#define HZ_TO_USEC_SHR32\t", s, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 		s=fmuls(32,hz,1000000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 		obase=16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 		print "#define USEC_TO_HZ_MUL32\tU64_C(0x", fmul(s,hz,1000000), ")\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 		print "#define USEC_TO_HZ_ADJ32\tU64_C(0x", fadj(s,hz,1000000), ")\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 		obase=10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 		print "#define USEC_TO_HZ_SHR32\t", s, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 		obase=10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 		cd=gcd(hz,1000000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 		print "#define HZ_TO_USEC_NUM\t\t", 1000000/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 		print "#define HZ_TO_USEC_DEN\t\t", hz/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 		print "#define USEC_TO_HZ_NUM\t\t", hz/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 		print "#define USEC_TO_HZ_DEN\t\t", 1000000/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 		cd=gcd(hz,1000000000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 		print "#define HZ_TO_NSEC_NUM\t\t", 1000000000/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 		print "#define HZ_TO_NSEC_DEN\t\t", hz/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 		print "#define NSEC_TO_HZ_NUM\t\t", hz/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 		print "#define NSEC_TO_HZ_DEN\t\t", 1000000000/cd, "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 		print "\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 		print "#endif /* KERNEL_TIMECONST_H */\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	halt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) hz = read();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) timeconst(hz)