patches/acpi.diff

102 lines
3.6 KiB
Diff

Index: sys/dev/acpi/acpitz.c
===================================================================
RCS file: /home/cvs/src/sys/dev/acpi/acpitz.c,v
retrieving revision 1.58
diff -u -p -r1.58 acpitz.c
--- sys/dev/acpi/acpitz.c 6 Apr 2022 18:59:27 -0000 1.58
+++ sys/dev/acpi/acpitz.c 30 Jun 2022 10:52:09 -0000
@@ -39,6 +39,8 @@
#define ACPITZ_TMP_RETRY (3)
#define ACPITZ_UNKNOWN (-1)
+#define PERFPOL_AUTO 1
+
struct acpitz_softc {
struct device sc_dev;
@@ -89,7 +91,9 @@ void acpitz_init(struct acpitz_softc *,
void (*acpitz_cpu_setperf)(int);
int acpitz_perflevel = -1;
extern void (*cpu_setperf)(int);
+extern int hw_power;
extern int perflevel;
+extern int perfpolicy;
#define PERFSTEP 10
#define ACPITZ_TRIPS (1L << 0)
@@ -224,6 +228,13 @@ acpitz_attach(struct device *parent, str
else
printf(": critical temperature is %d degC\n", KTOC(sc->sc_crt));
+ if ((sc->sc_psv = acpitz_gettempreading(sc, "_PSV")) == -1) {
+ printf("%s: no passive cooling temperature defined\n",
+ DEVNAME(sc));
+ } else
+ printf("%s: passive cooling temperature is %d degC\n",
+ DEVNAME(sc), KTOC(sc->sc_psv));
+
sc->sc_hot = acpitz_gettempreading(sc, "_HOT");
sc->sc_tc1 = acpitz_getreading(sc, "_TC1");
sc->sc_tc2 = acpitz_getreading(sc, "_TC2");
@@ -231,7 +242,7 @@ acpitz_attach(struct device *parent, str
/* get _PSL, _ALx */
acpitz_init(sc, ACPITZ_INIT);
- dnprintf(10, "%s: _HOT: %d _TC1: %d _TC2: %d _PSV: %d _TMP: %d "
+ printf("%s: _HOT: %d _TC1: %d _TC2: %d _PSV: %d _TMP: %d "
"_CRT: %d\n", DEVNAME(sc), sc->sc_hot, sc->sc_tc1, sc->sc_tc2,
sc->sc_psv, sc->sc_tmp, sc->sc_crt);
@@ -376,15 +387,13 @@ acpitz_refresh(void *arg)
/* passive cooling */
if (sc->sc_lasttmp != -1 && sc->sc_tc1 != -1 && sc->sc_tc2 != -1 &&
sc->sc_psv != -1) {
- dnprintf(30, "%s: passive cooling: lasttmp: %d tc1: %d "
- "tc2: %d psv: %d\n", DEVNAME(sc), sc->sc_lasttmp,
- sc->sc_tc1, sc->sc_tc2, sc->sc_psv);
-
nperf = acpitz_perflevel;
- if (sc->sc_psv <= sc->sc_tmp) {
+ if (sc->sc_psv <= sc->sc_tmp && perfpolicy == PERFPOL_AUTO && !hw_power) {
/* Passive cooling enabled */
- dnprintf(1, "%s: enabling passive %d %d\n",
- DEVNAME(sc), sc->sc_tmp, sc->sc_psv);
+ printf("%s: passive cooling: tmp: %d tc1: %d "
+ "tc2: %d psv: %d perfpol: %d pwr: %d (active)\n",
+ DEVNAME(sc), KTOC(sc->sc_tmp), sc->sc_tc1, sc->sc_tc2,
+ KTOC(sc->sc_psv), perfpolicy, hw_power);
if (!sc->sc_pse)
sc->sc_acpi->sc_pse++;
sc->sc_pse = 1;
@@ -392,6 +401,9 @@ acpitz_refresh(void *arg)
trend = sc->sc_tc1 * (sc->sc_tmp - sc->sc_lasttmp) +
sc->sc_tc2 * (sc->sc_tmp - sc->sc_psv);
+ printf("%s: trend: %d(tc1) * %d(tmp) - %d(lasttmp)) + %d(tc2) * %d(tmp) - %d(psv) = %d\n",
+ DEVNAME(sc), sc->sc_tc1, sc->sc_tmp, sc->sc_lasttmp, sc->sc_tc2, sc->sc_tmp, sc->sc_psv, trend);
+
/* Depending on trend, slow down/speed up */
if (trend > 0)
nperf -= PERFSTEP;
@@ -400,8 +412,10 @@ acpitz_refresh(void *arg)
}
else {
/* Passive cooling disabled, increase % */
- dnprintf(1, "%s: disabling passive %d %d\n",
- DEVNAME(sc), sc->sc_tmp, sc->sc_psv);
+ printf("%s: passive cooling: tmp: %d tc1: %d "
+ "tc2: %d psv: %d perfpol: %d pwr: %d (inactive)\n",
+ DEVNAME(sc), KTOC(sc->sc_tmp), sc->sc_tc1, sc->sc_tc2,
+ KTOC(sc->sc_psv), perfpolicy, hw_power);
if (sc->sc_pse)
sc->sc_acpi->sc_pse--;
sc->sc_pse = 0;
@@ -420,6 +434,7 @@ acpitz_refresh(void *arg)
if (acpitz_cpu_setperf && nperf != acpitz_perflevel) {
acpitz_perflevel = nperf;
acpitz_cpu_setperf(nperf);
+ printf("%s: set perflevel: %d\n", DEVNAME(sc), nperf);
}
}
sc->sc_lasttmp = sc->sc_tmp;