Lines Matching +full:acpi +full:- +full:based

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
39 #include <contrib/dev/acpica/include/acpi.h>
86 if (battp->state & ACPI_BATT_STAT_DISCHARG) {
87 if (battp->cap >= 50)
92 if (battp->state & ACPI_BATT_STAT_CRITICAL)
94 if (battp->state & ACPI_BATT_STAT_CHARGING)
97 /* If still unknown, determine it based on the battery capacity. */
99 if (battp->cap >= 50)
115 if (battp->cap >= 50)
118 if (battp->state & ACPI_BATT_STAT_CRITICAL)
123 if (battp->state & ACPI_BATT_STAT_CHARGING)
125 if (battp->state == ACPI_BATT_STAT_NOT_PRESENT)
137 aip->ai_infoversion = 1;
138 aip->ai_major = 1;
139 aip->ai_minor = 2;
140 aip->ai_status = apm_active;
141 aip->ai_capabilities= 0xff00; /* unknown */
144 aip->ai_acline = 1; /* no info -- on-line best guess */
146 aip->ai_acline = acline; /* on/off */
149 aip->ai_batt_stat = 0; /* "high" old I/F has no unknown state */
150 aip->ai_batt_life = 255; /* N/A, not -1 */
151 aip->ai_batt_time = -1; /* unknown */
152 aip->ai_batteries = ~0U; /* unknown */
154 aip->ai_batt_stat = acpi_capm_convert_battstate(&batt);
155 aip->ai_batt_life = (batt.cap == -1) ? 255 : batt.cap;
156 aip->ai_batt_time = (batt.min == -1) ? -1 : batt.min * 60;
157 aip->ai_batteries = acpi_battery_get_units();
170 if (app->ap_device != PMDV_ALLDEV &&
171 (app->ap_device < PMDV_BATT0 || app->ap_device > PMDV_BATT_ALL))
174 if (app->ap_device == PMDV_ALLDEV)
177 unit = app->ap_device - PMDV_BATT0;
187 app->ap_batt_stat = acpi_capm_convert_battstate(&batt);
188 app->ap_batt_flag = acpi_capm_convert_battflags(&batt);
189 app->ap_batt_life = (batt.cap == -1) ? 255 : batt.cap;
190 app->ap_batt_time = (batt.min == -1) ? -1 : batt.min * 60;
193 app->ap_acline = 1; /* no info -- on-line best guess */
195 app->ap_acline = acline; /* on/off */
200 /* Create a struct for tracking per-device suspend notification. */
207 clone->cdev = dev;
208 clone->acpi_sc = acpi_sc;
209 clone->notify_status = APM_EV_NONE;
210 bzero(&clone->sel_read, sizeof(clone->sel_read));
211 knlist_init_mtx(&clone->sel_read.si_note, &acpi_mutex);
214 * The acpi device is always managed by devd(8) and is considered
217 if (strcmp("acpi", devtoname(dev)) == 0)
218 clone->flags = ACPI_EVF_DEVD | ACPI_EVF_WRITE;
220 clone->flags = ACPI_EVF_NONE;
222 ACPI_LOCK(acpi);
223 STAILQ_INSERT_TAIL(&acpi_sc->apm_cdevs, clone, entries);
224 ACPI_UNLOCK(acpi);
235 acpi_sc = clone->acpi_sc;
238 if (acpi_sc->acpi_next_sstate != 0 &&
239 clone->notify_status != APM_EV_ACKED)
243 ACPI_LOCK(acpi);
244 STAILQ_REMOVE(&acpi_sc->apm_cdevs, clone, apm_clone_data, entries);
245 seldrain(&clone->sel_read);
246 knlist_destroy(&clone->sel_read.si_note);
247 ACPI_UNLOCK(acpi);
257 acpi_sc = devclass_get_softc(devclass_find("acpi"), 0);
263 clone->flags |= ACPI_EVF_WRITE;
280 acpi_sc = clone->acpi_sc;
286 if (acpi_sc->acpi_next_sstate == 0) {
287 if (acpi_sc->acpi_suspend_sx != ACPI_STATE_S5) {
289 acpi_sc->acpi_suspend_sx);
301 if (acpi_sc->acpi_next_sstate == 0) {
302 if (acpi_sc->acpi_standby_sx != ACPI_STATE_S5) {
304 acpi_sc->acpi_standby_sx);
315 ACPI_LOCK(acpi);
316 if (acpi_sc->acpi_next_sstate != 0 && clone->notify_status ==
319 if (acpi_sc->acpi_next_sstate <= ACPI_STATE_S3)
320 ev_info->type = PMEV_STANDBYREQ;
322 ev_info->type = PMEV_SUSPENDREQ;
323 ev_info->index = 0;
324 clone->notify_status = APM_EV_NOTIFIED;
325 printf("apm event returning %d\n", ev_info->type);
328 ACPI_UNLOCK(acpi);
334 aiop->ai_major = info.ai_major;
335 aiop->ai_minor = info.ai_minor;
336 aiop->ai_acline = info.ai_acline;
337 aiop->ai_batt_stat = info.ai_batt_stat;
338 aiop->ai_batt_life = info.ai_batt_life;
339 aiop->ai_status = info.ai_status;
383 return (uio->uio_resid);
394 ACPI_LOCK(acpi);
395 if (clone->acpi_sc->acpi_next_sstate)
398 selrecord(td, &clone->sel_read);
399 ACPI_UNLOCK(acpi);
409 ACPI_LOCK(acpi);
410 kn->kn_hook = clone;
411 kn->kn_fop = &apm_readfiltops;
412 knlist_add(&clone->sel_read.si_note, kn, 0);
413 ACPI_UNLOCK(acpi);
422 ACPI_LOCK(acpi);
423 clone = kn->kn_hook;
424 knlist_remove(&clone->sel_read.si_note, kn, 0);
425 ACPI_UNLOCK(acpi);
434 ACPI_LOCK(acpi);
435 clone = kn->kn_hook;
436 sleeping = clone->acpi_sc->acpi_next_sstate ? 1 : 0;
437 ACPI_UNLOCK(acpi);
445 /* Create a clone for /dev/acpi also. */
446 STAILQ_INIT(&sc->apm_cdevs);
447 sc->acpi_clone = apm_create_clone(sc->acpi_dev_t, sc);