acpi.c (96277) | acpi.c (96926) |
---|---|
1/*- 2 * Copyright (c) 2000 Takanori Watanabe <takawata@jp.freebsd.org> 3 * Copyright (c) 2000 Mitsuru IWASAKI <iwasaki@jp.freebsd.org> 4 * Copyright (c) 2000, 2001 Michael Smith 5 * Copyright (c) 2000 BSDi 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 12 unchanged lines hidden (view full) --- 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * | 1/*- 2 * Copyright (c) 2000 Takanori Watanabe <takawata@jp.freebsd.org> 3 * Copyright (c) 2000 Mitsuru IWASAKI <iwasaki@jp.freebsd.org> 4 * Copyright (c) 2000, 2001 Michael Smith 5 * Copyright (c) 2000 BSDi 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 12 unchanged lines hidden (view full) --- 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * |
29 * $FreeBSD: head/sys/dev/acpica/acpi.c 96277 2002-05-09 21:13:37Z jhb $ | 29 * $FreeBSD: head/sys/dev/acpica/acpi.c 96926 2002-05-19 06:16:47Z peter $ |
30 */ 31 32#include "opt_acpi.h" 33#include <sys/param.h> 34#include <sys/kernel.h> 35#include <sys/proc.h> 36#include <sys/lock.h> 37#include <sys/malloc.h> --- 170 unchanged lines hidden (view full) --- 208{ 209 device_t child; 210 int error; 211 caddr_t acpi_dsdt, p; 212#ifdef ENABLE_DEBUGGER 213 char *debugpoint; 214#endif 215 | 30 */ 31 32#include "opt_acpi.h" 33#include <sys/param.h> 34#include <sys/kernel.h> 35#include <sys/proc.h> 36#include <sys/lock.h> 37#include <sys/malloc.h> --- 170 unchanged lines hidden (view full) --- 208{ 209 device_t child; 210 int error; 211 caddr_t acpi_dsdt, p; 212#ifdef ENABLE_DEBUGGER 213 char *debugpoint; 214#endif 215 |
216 ACPI_FUNCTION_TRACE(__func__); | 216 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
217 218 if(!cold){ 219 printf("Don't load this driver from userland!!\n"); 220 return ; 221 } 222 223 /* 224 * Check that we haven't been disabled with a hint. --- 66 unchanged lines hidden (view full) --- 291static int 292acpi_probe(device_t dev) 293{ 294 ACPI_TABLE_HEADER th; 295 char buf[20]; 296 ACPI_STATUS status; 297 int error; 298 | 217 218 if(!cold){ 219 printf("Don't load this driver from userland!!\n"); 220 return ; 221 } 222 223 /* 224 * Check that we haven't been disabled with a hint. --- 66 unchanged lines hidden (view full) --- 291static int 292acpi_probe(device_t dev) 293{ 294 ACPI_TABLE_HEADER th; 295 char buf[20]; 296 ACPI_STATUS status; 297 int error; 298 |
299 ACPI_FUNCTION_TRACE(__func__); | 299 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
300 301 if (power_pm_get_type() != POWER_PM_TYPE_NONE && 302 power_pm_get_type() != POWER_PM_TYPE_ACPI) { 303 device_printf(dev, "Other PM system enabled.\n"); 304 return_VALUE(ENXIO); 305 } 306 307 ACPI_LOCK; --- 17 unchanged lines hidden (view full) --- 325 ACPI_STATUS status; 326 int error; 327 UINT32 flags; 328 329#ifdef ENABLE_DEBUGGER 330 char *debugpoint; 331#endif 332 | 300 301 if (power_pm_get_type() != POWER_PM_TYPE_NONE && 302 power_pm_get_type() != POWER_PM_TYPE_ACPI) { 303 device_printf(dev, "Other PM system enabled.\n"); 304 return_VALUE(ENXIO); 305 } 306 307 ACPI_LOCK; --- 17 unchanged lines hidden (view full) --- 325 ACPI_STATUS status; 326 int error; 327 UINT32 flags; 328 329#ifdef ENABLE_DEBUGGER 330 char *debugpoint; 331#endif 332 |
333 ACPI_FUNCTION_TRACE(__func__); | 333 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
334 ACPI_LOCK; 335 sc = device_get_softc(dev); 336 bzero(sc, sizeof(*sc)); 337 sc->acpi_dev = dev; 338 339#ifdef ENABLE_DEBUGGER 340 debugpoint = getenv("debug.acpi.debugger"); 341 if (debugpoint) { --- 385 unchanged lines hidden (view full) --- 727static u_int32_t 728acpi_isa_get_logicalid(device_t dev) 729{ 730 ACPI_HANDLE h; 731 ACPI_DEVICE_INFO devinfo; 732 ACPI_STATUS error; 733 u_int32_t pnpid; 734 | 334 ACPI_LOCK; 335 sc = device_get_softc(dev); 336 bzero(sc, sizeof(*sc)); 337 sc->acpi_dev = dev; 338 339#ifdef ENABLE_DEBUGGER 340 debugpoint = getenv("debug.acpi.debugger"); 341 if (debugpoint) { --- 385 unchanged lines hidden (view full) --- 727static u_int32_t 728acpi_isa_get_logicalid(device_t dev) 729{ 730 ACPI_HANDLE h; 731 ACPI_DEVICE_INFO devinfo; 732 ACPI_STATUS error; 733 u_int32_t pnpid; 734 |
735 ACPI_FUNCTION_TRACE(__func__); | 735 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
736 737 pnpid = 0; 738 ACPI_LOCK; 739 740 /* fetch and validate the HID */ 741 if ((h = acpi_get_handle(dev)) == NULL) 742 goto out; 743 if (ACPI_FAILURE(error = AcpiGetObjectInfo(h, &devinfo))) --- 8 unchanged lines hidden (view full) --- 752} 753 754static int 755acpi_isa_pnp_probe(device_t bus, device_t child, struct isa_pnp_id *ids) 756{ 757 int result; 758 u_int32_t pnpid; 759 | 736 737 pnpid = 0; 738 ACPI_LOCK; 739 740 /* fetch and validate the HID */ 741 if ((h = acpi_get_handle(dev)) == NULL) 742 goto out; 743 if (ACPI_FAILURE(error = AcpiGetObjectInfo(h, &devinfo))) --- 8 unchanged lines hidden (view full) --- 752} 753 754static int 755acpi_isa_pnp_probe(device_t bus, device_t child, struct isa_pnp_id *ids) 756{ 757 int result; 758 u_int32_t pnpid; 759 |
760 ACPI_FUNCTION_TRACE(__func__); | 760 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
761 762 /* 763 * ISA-style drivers attached to ACPI may persist and 764 * probe manually if we return ENOENT. We never want 765 * that to happen, so don't ever return it. 766 */ 767 result = ENXIO; 768 --- 18 unchanged lines hidden (view full) --- 787 */ 788static void 789acpi_probe_children(device_t bus) 790{ 791 ACPI_HANDLE parent; 792 static char *scopes[] = {"\\_PR_", "\\_TZ_", "\\_SI", "\\_SB_", NULL}; 793 int i; 794 | 761 762 /* 763 * ISA-style drivers attached to ACPI may persist and 764 * probe manually if we return ENOENT. We never want 765 * that to happen, so don't ever return it. 766 */ 767 result = ENXIO; 768 --- 18 unchanged lines hidden (view full) --- 787 */ 788static void 789acpi_probe_children(device_t bus) 790{ 791 ACPI_HANDLE parent; 792 static char *scopes[] = {"\\_PR_", "\\_TZ_", "\\_SI", "\\_SB_", NULL}; 793 int i; 794 |
795 ACPI_FUNCTION_TRACE(__func__); | 795 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
796 ACPI_ASSERTLOCK; 797 798 /* 799 * Create any static children by calling device identify methods. 800 */ 801 ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, "device identify routines\n")); 802 bus_generic_probe(bus); 803 --- 33 unchanged lines hidden (view full) --- 837 * it. 838 */ 839static ACPI_STATUS 840acpi_probe_child(ACPI_HANDLE handle, UINT32 level, void *context, void **status) 841{ 842 ACPI_OBJECT_TYPE type; 843 device_t child, bus = (device_t)context; 844 | 796 ACPI_ASSERTLOCK; 797 798 /* 799 * Create any static children by calling device identify methods. 800 */ 801 ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, "device identify routines\n")); 802 bus_generic_probe(bus); 803 --- 33 unchanged lines hidden (view full) --- 837 * it. 838 */ 839static ACPI_STATUS 840acpi_probe_child(ACPI_HANDLE handle, UINT32 level, void *context, void **status) 841{ 842 ACPI_OBJECT_TYPE type; 843 device_t child, bus = (device_t)context; 844 |
845 ACPI_FUNCTION_TRACE(__func__); | 845 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
846 847 /* 848 * Skip this device if we think we'll have trouble with it. 849 */ 850 if (acpi_avoid(handle)) 851 return_ACPI_STATUS(AE_OK); 852 853 if (ACPI_SUCCESS(AcpiGetType(handle, &type))) { --- 453 unchanged lines hidden (view full) --- 1307 */ 1308ACPI_STATUS 1309acpi_SetSleepState(struct acpi_softc *sc, int state) 1310{ 1311 ACPI_STATUS status = AE_OK; 1312 UINT8 TypeA; 1313 UINT8 TypeB; 1314 | 846 847 /* 848 * Skip this device if we think we'll have trouble with it. 849 */ 850 if (acpi_avoid(handle)) 851 return_ACPI_STATUS(AE_OK); 852 853 if (ACPI_SUCCESS(AcpiGetType(handle, &type))) { --- 453 unchanged lines hidden (view full) --- 1307 */ 1308ACPI_STATUS 1309acpi_SetSleepState(struct acpi_softc *sc, int state) 1310{ 1311 ACPI_STATUS status = AE_OK; 1312 UINT8 TypeA; 1313 UINT8 TypeB; 1314 |
1315 ACPI_FUNCTION_TRACE_U32(__func__, state); | 1315 ACPI_FUNCTION_TRACE_U32((char *)(uintptr_t)__func__, state); |
1316 ACPI_ASSERTLOCK; 1317 1318 if (sc->acpi_sstate != ACPI_STATE_S0) 1319 return_ACPI_STATUS(AE_BAD_PARAMETER); /* avoid reentry */ 1320 1321 if (sc->acpi_sleep_disabled) 1322 return_ACPI_STATUS(AE_OK); 1323 --- 82 unchanged lines hidden (view full) --- 1406 * Enable/Disable ACPI 1407 */ 1408ACPI_STATUS 1409acpi_Enable(struct acpi_softc *sc) 1410{ 1411 ACPI_STATUS status; 1412 u_int32_t flags; 1413 | 1316 ACPI_ASSERTLOCK; 1317 1318 if (sc->acpi_sstate != ACPI_STATE_S0) 1319 return_ACPI_STATUS(AE_BAD_PARAMETER); /* avoid reentry */ 1320 1321 if (sc->acpi_sleep_disabled) 1322 return_ACPI_STATUS(AE_OK); 1323 --- 82 unchanged lines hidden (view full) --- 1406 * Enable/Disable ACPI 1407 */ 1408ACPI_STATUS 1409acpi_Enable(struct acpi_softc *sc) 1410{ 1411 ACPI_STATUS status; 1412 u_int32_t flags; 1413 |
1414 ACPI_FUNCTION_TRACE(__func__); | 1414 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
1415 ACPI_ASSERTLOCK; 1416 1417 flags = ACPI_NO_ADDRESS_SPACE_INIT | ACPI_NO_HARDWARE_INIT | 1418 ACPI_NO_DEVICE_INIT | ACPI_NO_OBJECT_INIT; 1419 if (!sc->acpi_enabled) { 1420 status = AcpiEnableSubsystem(flags); 1421 } else { 1422 status = AE_OK; 1423 } 1424 if (status == AE_OK) 1425 sc->acpi_enabled = 1; 1426 return_ACPI_STATUS(status); 1427} 1428 1429ACPI_STATUS 1430acpi_Disable(struct acpi_softc *sc) 1431{ 1432 ACPI_STATUS status; 1433 | 1415 ACPI_ASSERTLOCK; 1416 1417 flags = ACPI_NO_ADDRESS_SPACE_INIT | ACPI_NO_HARDWARE_INIT | 1418 ACPI_NO_DEVICE_INIT | ACPI_NO_OBJECT_INIT; 1419 if (!sc->acpi_enabled) { 1420 status = AcpiEnableSubsystem(flags); 1421 } else { 1422 status = AE_OK; 1423 } 1424 if (status == AE_OK) 1425 sc->acpi_enabled = 1; 1426 return_ACPI_STATUS(status); 1427} 1428 1429ACPI_STATUS 1430acpi_Disable(struct acpi_softc *sc) 1431{ 1432 ACPI_STATUS status; 1433 |
1434 ACPI_FUNCTION_TRACE(__func__); | 1434 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
1435 ACPI_ASSERTLOCK; 1436 1437 if (sc->acpi_enabled) { 1438 status = AcpiDisable(); 1439 } else { 1440 status = AE_OK; 1441 } 1442 if (status == AE_OK) --- 5 unchanged lines hidden (view full) --- 1448 * ACPI Event Handlers 1449 */ 1450 1451/* System Event Handlers (registered by EVENTHANDLER_REGISTER) */ 1452 1453static void 1454acpi_system_eventhandler_sleep(void *arg, int state) 1455{ | 1435 ACPI_ASSERTLOCK; 1436 1437 if (sc->acpi_enabled) { 1438 status = AcpiDisable(); 1439 } else { 1440 status = AE_OK; 1441 } 1442 if (status == AE_OK) --- 5 unchanged lines hidden (view full) --- 1448 * ACPI Event Handlers 1449 */ 1450 1451/* System Event Handlers (registered by EVENTHANDLER_REGISTER) */ 1452 1453static void 1454acpi_system_eventhandler_sleep(void *arg, int state) 1455{ |
1456 ACPI_FUNCTION_TRACE_U32(__func__, state); | 1456 ACPI_FUNCTION_TRACE_U32((char *)(uintptr_t)__func__, state); |
1457 1458 ACPI_LOCK; 1459 if (state >= ACPI_STATE_S0 && state <= ACPI_S_STATES_MAX) 1460 acpi_SetSleepState((struct acpi_softc *)arg, state); 1461 ACPI_UNLOCK; 1462 return_VOID; 1463} 1464 1465static void 1466acpi_system_eventhandler_wakeup(void *arg, int state) 1467{ | 1457 1458 ACPI_LOCK; 1459 if (state >= ACPI_STATE_S0 && state <= ACPI_S_STATES_MAX) 1460 acpi_SetSleepState((struct acpi_softc *)arg, state); 1461 ACPI_UNLOCK; 1462 return_VOID; 1463} 1464 1465static void 1466acpi_system_eventhandler_wakeup(void *arg, int state) 1467{ |
1468 ACPI_FUNCTION_TRACE_U32(__func__, state); | 1468 ACPI_FUNCTION_TRACE_U32((char *)(uintptr_t)__func__, state); |
1469 1470 /* Well, what to do? :-) */ 1471 1472 ACPI_LOCK; 1473 ACPI_UNLOCK; 1474 1475 return_VOID; 1476} 1477 1478/* 1479 * ACPICA Event Handlers (FixedEvent, also called from button notify handler) 1480 */ 1481UINT32 1482acpi_eventhandler_power_button_for_sleep(void *context) 1483{ 1484 struct acpi_softc *sc = (struct acpi_softc *)context; 1485 | 1469 1470 /* Well, what to do? :-) */ 1471 1472 ACPI_LOCK; 1473 ACPI_UNLOCK; 1474 1475 return_VOID; 1476} 1477 1478/* 1479 * ACPICA Event Handlers (FixedEvent, also called from button notify handler) 1480 */ 1481UINT32 1482acpi_eventhandler_power_button_for_sleep(void *context) 1483{ 1484 struct acpi_softc *sc = (struct acpi_softc *)context; 1485 |
1486 ACPI_FUNCTION_TRACE(__func__); | 1486 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
1487 1488 EVENTHANDLER_INVOKE(acpi_sleep_event, sc->acpi_power_button_sx); 1489 1490 return_VALUE(ACPI_INTERRUPT_HANDLED); 1491} 1492 1493UINT32 1494acpi_eventhandler_power_button_for_wakeup(void *context) 1495{ 1496 struct acpi_softc *sc = (struct acpi_softc *)context; 1497 | 1487 1488 EVENTHANDLER_INVOKE(acpi_sleep_event, sc->acpi_power_button_sx); 1489 1490 return_VALUE(ACPI_INTERRUPT_HANDLED); 1491} 1492 1493UINT32 1494acpi_eventhandler_power_button_for_wakeup(void *context) 1495{ 1496 struct acpi_softc *sc = (struct acpi_softc *)context; 1497 |
1498 ACPI_FUNCTION_TRACE(__func__); | 1498 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
1499 1500 EVENTHANDLER_INVOKE(acpi_wakeup_event, sc->acpi_power_button_sx); 1501 1502 return_VALUE(ACPI_INTERRUPT_HANDLED); 1503} 1504 1505UINT32 1506acpi_eventhandler_sleep_button_for_sleep(void *context) 1507{ 1508 struct acpi_softc *sc = (struct acpi_softc *)context; 1509 | 1499 1500 EVENTHANDLER_INVOKE(acpi_wakeup_event, sc->acpi_power_button_sx); 1501 1502 return_VALUE(ACPI_INTERRUPT_HANDLED); 1503} 1504 1505UINT32 1506acpi_eventhandler_sleep_button_for_sleep(void *context) 1507{ 1508 struct acpi_softc *sc = (struct acpi_softc *)context; 1509 |
1510 ACPI_FUNCTION_TRACE(__func__); | 1510 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
1511 1512 EVENTHANDLER_INVOKE(acpi_sleep_event, sc->acpi_sleep_button_sx); 1513 1514 return_VALUE(ACPI_INTERRUPT_HANDLED); 1515} 1516 1517UINT32 1518acpi_eventhandler_sleep_button_for_wakeup(void *context) 1519{ 1520 struct acpi_softc *sc = (struct acpi_softc *)context; 1521 | 1511 1512 EVENTHANDLER_INVOKE(acpi_sleep_event, sc->acpi_sleep_button_sx); 1513 1514 return_VALUE(ACPI_INTERRUPT_HANDLED); 1515} 1516 1517UINT32 1518acpi_eventhandler_sleep_button_for_wakeup(void *context) 1519{ 1520 struct acpi_softc *sc = (struct acpi_softc *)context; 1521 |
1522 ACPI_FUNCTION_TRACE(__func__); | 1522 ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); |
1523 1524 EVENTHANDLER_INVOKE(acpi_wakeup_event, sc->acpi_sleep_button_sx); 1525 1526 return_VALUE(ACPI_INTERRUPT_HANDLED); 1527} 1528 1529/* 1530 * XXX This is kinda ugly, and should not be here. --- 456 unchanged lines hidden --- | 1523 1524 EVENTHANDLER_INVOKE(acpi_wakeup_event, sc->acpi_sleep_button_sx); 1525 1526 return_VALUE(ACPI_INTERRUPT_HANDLED); 1527} 1528 1529/* 1530 * XXX This is kinda ugly, and should not be here. --- 456 unchanged lines hidden --- |