Print this page
acpica-unix2-20130823
PANKOVs restructure

*** 20,37 **** */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. ! * Copyright 2011 Joyent, Inc. All rights reserved. */ /* * Copyright (c) 2009-2010, Intel Corporation. * All rights reserved. */ /* ! * ACPI CA OSL for Solaris x86 */ #include <sys/types.h> #include <sys/kmem.h> #include <sys/psm.h> --- 20,41 ---- */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. ! * Copyright 2012 Joyent, Inc. All rights reserved. ! * Copyright 2013 Nexenta Systems, Inc. All rights reserved. ! * Copyright 2013 PALO, Richard. All rights reserved. */ + /* * Copyright (c) 2009-2010, Intel Corporation. * All rights reserved. */ + /* ! * x86 ACPI CA OSL */ #include <sys/types.h> #include <sys/kmem.h> #include <sys/psm.h>
*** 46,56 **** #include <sys/strlog.h> #include <sys/x86_archext.h> #include <sys/note.h> #include <sys/promif.h> ! #include <sys/acpi/accommon.h> #include <sys/acpica.h> #define MAX_DAT_FILE_SIZE (64*1024) /* local functions */ --- 50,60 ---- #include <sys/strlog.h> #include <sys/x86_archext.h> #include <sys/note.h> #include <sys/promif.h> ! #include <acpica/include/accommon.h> #include <sys/acpica.h> #define MAX_DAT_FILE_SIZE (64*1024) /* local functions */
*** 313,322 **** --- 317,332 ---- kmem_free(buf1, MAX_DAT_FILE_SIZE); return (AE_OK); } + ACPI_STATUS + AcpiOsPhysicalTableOverride(ACPI_TABLE_HEADER *ExistingTable, + ACPI_PHYSICAL_ADDRESS *NewAddress, UINT32 *NewTableLength) + { + return (AE_SUPPORT); + } /* * ACPI semaphore implementation */ typedef struct {
*** 742,751 **** --- 752,777 ---- return (AE_OK); } void + AcpiOsWaitEventsComplete (void) + { + if (acpica_eventq_init) { + int i; + /* + * blocks until all events initiated by AcpiOsExecute have completed + */ + for (i = OSL_GLOBAL_LOCK_HANDLER; i <= OSL_EC_BURST_HANDLER; i++) { + if (osl_eventq[i]) + ddi_taskq_wait(osl_eventq[i]); + } + } + return; + } + + void AcpiOsSleep(ACPI_INTEGER Milliseconds) { /* * During kernel startup, before the first tick interrupt * has taken place, we can't call delay; very late in
*** 881,891 **** { if (rw) *((type *)(ptr)) = *((type *) val); \ else *((type *) val) = *((type *)(ptr)); } static void ! osl_rw_memory(ACPI_PHYSICAL_ADDRESS Address, UINT32 *Value, UINT32 Width, int write) { size_t maplen = Width / 8; caddr_t ptr; --- 907,917 ---- { if (rw) *((type *)(ptr)) = *((type *) val); \ else *((type *) val) = *((type *)(ptr)); } static void ! osl_rw_memory(ACPI_PHYSICAL_ADDRESS Address, UINT64 *Value, UINT32 Width, int write) { size_t maplen = Width / 8; caddr_t ptr;
*** 900,909 **** --- 926,938 ---- OSL_RW(ptr, Value, uint16_t, write); break; case 4: OSL_RW(ptr, Value, uint32_t, write); break; + case 8: + OSL_RW(ptr, Value, uint64_t, write); + break; default: cmn_err(CE_WARN, "!osl_rw_memory: invalid size %d", Width); break; }
*** 911,929 **** psm_unmap(ptr, maplen); } ACPI_STATUS AcpiOsReadMemory(ACPI_PHYSICAL_ADDRESS Address, ! UINT32 *Value, UINT32 Width) { osl_rw_memory(Address, Value, Width, 0); return (AE_OK); } ACPI_STATUS AcpiOsWriteMemory(ACPI_PHYSICAL_ADDRESS Address, ! UINT32 Value, UINT32 Width) { osl_rw_memory(Address, &Value, Width, 1); return (AE_OK); } --- 940,958 ---- psm_unmap(ptr, maplen); } ACPI_STATUS AcpiOsReadMemory(ACPI_PHYSICAL_ADDRESS Address, ! UINT64 *Value, UINT32 Width) { osl_rw_memory(Address, Value, Width, 0); return (AE_OK); } ACPI_STATUS AcpiOsWriteMemory(ACPI_PHYSICAL_ADDRESS Address, ! UINT64 Value, UINT32 Width) { osl_rw_memory(Address, &Value, Width, 1); return (AE_OK); }