Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/acpi Some purely cosmetic editing in the name of rea...
details: https://anonhg.NetBSD.org/src/rev/4f873c25a81a
branches: trunk
changeset: 754240:4f873c25a81a
user: jruoho <jruoho%NetBSD.org@localhost>
date: Sat Apr 24 19:11:48 2010 +0000
description:
Some purely cosmetic editing in the name of readability: clean up the softc
and remove unused variables therein, remove unused constants, use
ACPI_DEBUG_PRINT, add more detailed comments, et cetera.
diffstat:
sys/dev/acpi/acpi_tz.c | 536 ++++++++++++++++++++++++------------------------
1 files changed, 263 insertions(+), 273 deletions(-)
diffs (truncated from 849 to 300 lines):
diff -r 5dbc1dce8be8 -r 4f873c25a81a sys/dev/acpi/acpi_tz.c
--- a/sys/dev/acpi/acpi_tz.c Sat Apr 24 17:58:40 2010 +0000
+++ b/sys/dev/acpi/acpi_tz.c Sat Apr 24 19:11:48 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_tz.c,v 1.68 2010/04/24 06:31:44 jruoho Exp $ */
+/* $NetBSD: acpi_tz.c,v 1.69 2010/04/24 19:11:48 jruoho Exp $ */
/*
* Copyright (c) 2003 Jared D. McNeill <jmcneill%invisible.ca@localhost>
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_tz.c,v 1.68 2010/04/24 06:31:44 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_tz.c,v 1.69 2010/04/24 19:11:48 jruoho Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -42,110 +42,92 @@
#include <dev/acpi/acpivar.h>
#include <dev/acpi/acpi_power.h>
-#define _COMPONENT ACPI_TZ_COMPONENT
-ACPI_MODULE_NAME ("acpi_tz")
-
-/* flags */
-#define ATZ_F_VERBOSE 0x01 /* show events to console */
-#define ATZ_F_CRITICAL 0x02 /* zone critical */
-#define ATZ_F_HOT 0x04 /* zone hot */
-#define ATZ_F_PASSIVE 0x08 /* zone passive cooling */
-#define ATZ_F_PASSIVEONLY 0x10 /* zone is passive cooling only */
+#define _COMPONENT ACPI_TZ_COMPONENT
+ACPI_MODULE_NAME ("acpi_tz")
-/* no active cooling level */
-#define ATZ_ACTIVE_NONE -1
+#define ATZ_F_CRITICAL 0x01 /* zone critical */
+#define ATZ_F_HOT 0x02 /* zone hot */
+#define ATZ_F_PASSIVE 0x04 /* zone passive cooling */
+#define ATZ_F_PASSIVEONLY 0x08 /* zone is passive cooling only */
-/* constants */
-#define ATZ_TZP_RATE 300 /* default if no _TZP CM present (30 secs) */
-#define ATZ_NLEVELS 10 /* number of cooling levels, from ACPI spec */
-#define ATZ_ZEROC 2732 /* 0C, measured in 0.1 Kelvin */
-#define ATZ_TMP_INVALID 0xffffffff /* invalid temperature */
-#define ATZ_ZONE_EXPIRE 9000 /* zone info refetch interval (15min) */
-
-/* sensor indexes */
-#define ATZ_SENSOR_TEMP 0 /* thermal zone temperature */
+#define ATZ_ACTIVE_NONE -1
/*
- * ACPI Temperature Zone information. Note all temperatures are reported
- * in 0.1 Kelvin, and that the ACPI specification assumes that
- * K = C + 273.2 rather than the nominal 273.15 used by envsys(4).
- * So define an appropriate conversion.
+ * The constants are as follows:
+ *
+ * ATZ_TZP_RATE default polling interval (30 seconds) if no _TZP
+ * ATZ_NLEVELS number of cooling levels for _ACx and _ALx
+ * ATZ_ZEROC 0 C, measured in 0.1 Kelvin
+ * ATZ_TMP_INVALID temporarily invalid temperature
+ * ATZ_ZONE_EXPIRE zone info refetch interval (15 minutes)
*/
+#define ATZ_TZP_RATE 300
+#define ATZ_NLEVELS 10
+#define ATZ_ZEROC 2732
+#define ATZ_TMP_INVALID 0xffffffff
+#define ATZ_ZONE_EXPIRE 9000
+/*
+ * All temperatures are reported in 0.1 Kelvin.
+ * The ACPI specification assumes that K = C + 273.2
+ * rather than the nominal 273.15 used by envsys(4).
+ */
#define ATZ2UKELVIN(t) ((t) * 100000 - 50000)
struct acpitz_zone {
- /* Active cooling temperature threshold */
- uint32_t ac[ATZ_NLEVELS];
- /* Package of references to all active cooling devices for a level */
- ACPI_BUFFER al[ATZ_NLEVELS];
- /* Critical temperature threshold for system shutdown */
- uint32_t crt;
- /* Critical temperature threshold for S4 sleep */
- uint32_t hot;
- /* Package of references to processor objects for passive cooling */
- ACPI_BUFFER psl;
- /* Conveys if temperatures are absolute or relative values. */
- uint32_t rtv;
- /* Passive cooling temperature threshold */
- uint32_t psv;
- /* Thermal constants for use in passive cooling formulas */
- uint32_t tc1, tc2;
- /* Current temperature of the thermal zone */
- uint32_t prevtmp, tmp;
- /* Thermal sampling period for passive cooling, in tenths of seconds */
- uint32_t tsp;
- /* Package of references to devices in this TZ (optional) */
- ACPI_BUFFER tzd;
- /* Recommended TZ polling frequency, in tenths of seconds */
- uint32_t tzp;
- /* Thermal zone name */
- char *name;
- /* FAN min, max, current rpms */
- uint32_t fanmin, fanmax, fancurrent;
+ char *name;
+ ACPI_BUFFER al[ATZ_NLEVELS];
+ uint32_t ac[ATZ_NLEVELS];
+ uint32_t crt;
+ uint32_t hot;
+ uint32_t rtv;
+ uint32_t psv;
+ uint32_t tc1;
+ uint32_t tc2;
+ uint32_t tmp;
+ uint32_t prevtmp;
+ uint32_t tzp;
+ uint32_t fanmin;
+ uint32_t fanmax;
+ uint32_t fancurrent;
};
struct acpitz_softc {
- struct acpi_devnode *sc_devnode;
- struct acpitz_zone sc_zone;
- struct callout sc_callout;
- struct sysmon_envsys *sc_sme;
- envsys_data_t sc_temp_sensor;
- envsys_data_t sc_fan_sensor;
- int sc_active; /* active cooling level */
- int sc_flags;
- int sc_rate; /* tz poll rate */
- int sc_zone_expire;
-
- int sc_first;
- int sc_have_fan; /* FAN sensor is optional */
+ struct acpi_devnode *sc_node;
+ struct sysmon_envsys *sc_sme;
+ struct acpitz_zone sc_zone;
+ struct callout sc_callout;
+ envsys_data_t sc_temp_sensor;
+ envsys_data_t sc_fan_sensor;
+ int sc_active;
+ int sc_flags;
+ int sc_zone_expire;
+ bool sc_first;
+ bool sc_have_fan;
};
-static int acpitz_match(device_t, cfdata_t, void *);
-static void acpitz_attach(device_t, device_t, void *);
-static int acpitz_detach(device_t, int);
-
-static void acpitz_get_status(void *);
-static void acpitz_get_zone(void *, int);
-static void acpitz_get_zone_quiet(void *);
-static char *acpitz_celcius_string(int);
-static void acpitz_print_status(device_t);
-static void acpitz_power_off(struct acpitz_softc *);
-static void acpitz_power_zone(struct acpitz_softc *, int, int);
-static void acpitz_sane_temp(uint32_t *tmp);
-static ACPI_STATUS
- acpitz_switch_cooler(ACPI_OBJECT *, void *);
-static void acpitz_notify_handler(ACPI_HANDLE, uint32_t, void *);
-static int acpitz_get_integer(device_t, const char *, uint32_t *);
-static void acpitz_tick(void *);
-static void acpitz_init_envsys(device_t);
-static void acpitz_get_limits(struct sysmon_envsys *, envsys_data_t *,
- sysmon_envsys_lim_t *, uint32_t *);
-static int acpitz_get_fanspeed(device_t, uint32_t *,
- uint32_t *, uint32_t *);
+static int acpitz_match(device_t, cfdata_t, void *);
+static void acpitz_attach(device_t, device_t, void *);
+static int acpitz_detach(device_t, int);
+static void acpitz_get_status(void *);
+static void acpitz_get_zone(void *, int);
+static void acpitz_get_zone_quiet(void *);
+static char *acpitz_celcius_string(int);
+static void acpitz_power_off(struct acpitz_softc *);
+static void acpitz_power_zone(struct acpitz_softc *, int, int);
+static void acpitz_sane_temp(uint32_t *tmp);
+static ACPI_STATUS acpitz_switch_cooler(ACPI_OBJECT *, void *);
+static void acpitz_notify_handler(ACPI_HANDLE, uint32_t, void *);
+static int acpitz_get_integer(device_t, const char *, uint32_t *);
+static void acpitz_tick(void *);
+static void acpitz_init_envsys(device_t);
+static void acpitz_get_limits(struct sysmon_envsys *,
+ envsys_data_t *,
+ sysmon_envsys_lim_t *, uint32_t *);
+static int acpitz_get_fanspeed(device_t, uint32_t *,
+ uint32_t *, uint32_t *);
#ifdef notyet
-static ACPI_STATUS
- acpitz_set_fanspeed(device_t, uint32_t);
+static ACPI_STATUS acpitz_set_fanspeed(device_t, uint32_t);
#endif
CFATTACH_DECL_NEW(acpitz, sizeof(struct acpitz_softc),
@@ -173,39 +155,42 @@
{
struct acpitz_softc *sc = device_private(self);
struct acpi_attach_args *aa = aux;
+ ACPI_INTEGER val;
ACPI_STATUS rv;
- ACPI_INTEGER v;
-
-#if 0
- sc->sc_flags = ATZ_F_VERBOSE;
-#endif
- sc->sc_devnode = aa->aa_node;
aprint_naive("\n");
aprint_normal(": ACPI Thermal Zone\n");
- rv = acpi_eval_integer(sc->sc_devnode->ad_handle, "_TZP", &v);
- if (ACPI_FAILURE(rv))
- sc->sc_zone.tzp = ATZ_TZP_RATE;
- else
- sc->sc_zone.tzp = v;
+ sc->sc_first = true;
+ sc->sc_have_fan = false;
+ sc->sc_node = aa->aa_node;
+ sc->sc_zone.tzp = ATZ_TZP_RATE;
+
+ /*
+ * The _TZP (ACPI 4.0, p. 430) defines the recommended
+ * polling interval (in tenths of seconds). A value zero
+ * means that polling "should not be necessary".
+ */
+ rv = acpi_eval_integer(sc->sc_node->ad_handle, "_TZP", &val);
+
+ if (ACPI_SUCCESS(rv) && val != 0)
+ sc->sc_zone.tzp = val;
aprint_debug_dev(self, "sample rate %d.%ds\n",
sc->sc_zone.tzp / 10, sc->sc_zone.tzp % 10);
- /* XXX a value of 0 means "polling is not necessary" */
- if (sc->sc_zone.tzp == 0)
- sc->sc_zone.tzp = ATZ_TZP_RATE;
+ sc->sc_zone_expire = ATZ_ZONE_EXPIRE / sc->sc_zone.tzp;
- sc->sc_zone_expire = ATZ_ZONE_EXPIRE / sc->sc_zone.tzp;
- sc->sc_first = 1;
- sc->sc_have_fan = 0;
- if (acpitz_get_fanspeed(self,
- &sc->sc_zone.fanmin, &sc->sc_zone.fanmax, &sc->sc_zone.fancurrent)
- == 0)
- sc->sc_have_fan = 1;
+ /*
+ * XXX: The fan controls seen here are available on
+ * some HP laptops. Arguably these should not
+ * appear in a generic device driver like this.
+ */
+ if (acpitz_get_fanspeed(self, &sc->sc_zone.fanmin,
+ &sc->sc_zone.fanmax, &sc->sc_zone.fancurrent) == 0)
+ sc->sc_have_fan = true;
- rv = acpi_eval_string(sc->sc_devnode->ad_handle,
+ rv = acpi_eval_string(sc->sc_node->ad_handle,
"REGN", &sc->sc_zone.name);
if (ACPI_FAILURE(rv))
@@ -215,7 +200,7 @@
acpitz_get_status(self);
(void)pmf_device_register(self, NULL, NULL);
- (void)acpi_register_notify(sc->sc_devnode, acpitz_notify_handler);
+ (void)acpi_register_notify(sc->sc_node, acpitz_notify_handler);
callout_init(&sc->sc_callout, CALLOUT_MPSAFE);
callout_setfunc(&sc->sc_callout, acpitz_tick, self);
@@ -238,7 +223,7 @@
callout_destroy(&sc->sc_callout);
pmf_device_deregister(self);
- acpi_deregister_notify(sc->sc_devnode);
+ acpi_deregister_notify(sc->sc_node);
/*
* Although the device itself should not contain any power
@@ -281,13 +266,16 @@
device_t dv = opaque;
struct acpitz_softc *sc = device_private(dv);
uint32_t tmp, active, fmin, fmax, fcurrent;
- int i, flags;
+ int changed, flags, i;
sc->sc_zone_expire--;
+
if (sc->sc_zone_expire <= 0) {
sc->sc_zone_expire = ATZ_ZONE_EXPIRE / sc->sc_zone.tzp;
- if (sc->sc_flags & ATZ_F_VERBOSE)
- printf("%s: force refetch zone\n", device_xname(dv));
+
+ ACPI_DEBUG_PRINT((ACPI_DB_INFO,
+ "%s: zone refetch forced\n", device_xname(dv)));
+
Home |
Main Index |
Thread Index |
Old Index