exoparg2.c (126372) | exoparg2.c (129684) |
---|---|
1/****************************************************************************** 2 * 3 * Module Name: exoparg2 - AML execution - opcodes with 2 arguments | 1/****************************************************************************** 2 * 3 * Module Name: exoparg2 - AML execution - opcodes with 2 arguments |
4 * $Revision: 119 $ | 4 * $Revision: 121 $ |
5 * 6 *****************************************************************************/ 7 8/****************************************************************************** 9 * 10 * 1. Copyright Notice 11 * 12 * Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp. --- 154 unchanged lines hidden (view full) --- 167 ******************************************************************************/ 168 169ACPI_STATUS 170AcpiExOpcode_2A_0T_0R ( 171 ACPI_WALK_STATE *WalkState) 172{ 173 ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; 174 ACPI_NAMESPACE_NODE *Node; | 5 * 6 *****************************************************************************/ 7 8/****************************************************************************** 9 * 10 * 1. Copyright Notice 11 * 12 * Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp. --- 154 unchanged lines hidden (view full) --- 167 ******************************************************************************/ 168 169ACPI_STATUS 170AcpiExOpcode_2A_0T_0R ( 171 ACPI_WALK_STATE *WalkState) 172{ 173 ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; 174 ACPI_NAMESPACE_NODE *Node; |
175 UINT32 Value; |
|
175 ACPI_STATUS Status = AE_OK; 176 177 178 ACPI_FUNCTION_TRACE_STR ("ExOpcode_2A_0T_0R", 179 AcpiPsGetOpcodeName (WalkState->Opcode)); 180 181 182 /* Examine the opcode */ 183 184 switch (WalkState->Opcode) 185 { 186 case AML_NOTIFY_OP: /* Notify (NotifyObject, NotifyValue) */ 187 188 /* The first operand is a namespace node */ 189 190 Node = (ACPI_NAMESPACE_NODE *) Operand[0]; 191 | 176 ACPI_STATUS Status = AE_OK; 177 178 179 ACPI_FUNCTION_TRACE_STR ("ExOpcode_2A_0T_0R", 180 AcpiPsGetOpcodeName (WalkState->Opcode)); 181 182 183 /* Examine the opcode */ 184 185 switch (WalkState->Opcode) 186 { 187 case AML_NOTIFY_OP: /* Notify (NotifyObject, NotifyValue) */ 188 189 /* The first operand is a namespace node */ 190 191 Node = (ACPI_NAMESPACE_NODE *) Operand[0]; 192 |
193 /* Second value is the notify value */ 194 195 Value = (UINT32) Operand[1]->Integer.Value; 196 |
|
192 /* Notifies allowed on this object? */ 193 194 if (!AcpiEvIsNotifyObject (Node)) 195 { | 197 /* Notifies allowed on this object? */ 198 199 if (!AcpiEvIsNotifyObject (Node)) 200 { |
196 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unexpected notify object type [%s]\n", | 201 ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, 202 "Unexpected notify object type [%s]\n", |
197 AcpiUtGetTypeName (Node->Type))); 198 199 Status = AE_AML_OPERAND_TYPE; 200 break; 201 } 202 | 203 AcpiUtGetTypeName (Node->Type))); 204 205 Status = AE_AML_OPERAND_TYPE; 206 break; 207 } 208 |
209#ifdef ACPI_GPE_NOTIFY_CHECK |
|
203 /* | 210 /* |
211 * GPE method wake/notify check. Here, we want to ensure that we 212 * don't receive any "DeviceWake" Notifies from a GPE _Lxx or _Exx 213 * GPE method during system runtime. If we do, the GPE is marked 214 * as "wake-only" and disabled. 215 * 216 * 1) Is the Notify() value == DeviceWake? 217 * 2) Is this a GPE deferred method? (An _Lxx or _Exx method) 218 * 3) Did the original GPE happen at system runtime? 219 * (versus during wake) 220 * 221 * If all three cases are true, this is a wake-only GPE that should 222 * be disabled at runtime. 223 */ 224 if (Value == 2) /* DeviceWake */ 225 { 226 Status = AcpiEvCheckForWakeOnlyGpe (WalkState->GpeEventInfo); 227 if (ACPI_FAILURE (Status)) 228 { 229 /* AE_WAKE_ONLY_GPE only error, means ignore this notify */ 230 231 return_ACPI_STATUS (AE_OK) 232 } 233 } 234#endif 235 236 /* |
|
204 * Dispatch the notify to the appropriate handler 205 * NOTE: the request is queued for execution after this method 206 * completes. The notify handlers are NOT invoked synchronously 207 * from this thread -- because handlers may in turn run other 208 * control methods. 209 */ | 237 * Dispatch the notify to the appropriate handler 238 * NOTE: the request is queued for execution after this method 239 * completes. The notify handlers are NOT invoked synchronously 240 * from this thread -- because handlers may in turn run other 241 * control methods. 242 */ |
210 Status = AcpiEvQueueNotifyRequest (Node, 211 (UINT32) Operand[1]->Integer.Value); | 243 Status = AcpiEvQueueNotifyRequest (Node, Value); |
212 break; 213 214 215 default: 216 217 ACPI_REPORT_ERROR (("AcpiExOpcode_2A_0T_0R: Unknown opcode %X\n", 218 WalkState->Opcode)); 219 Status = AE_AML_BAD_OPCODE; --- 499 unchanged lines hidden --- | 244 break; 245 246 247 default: 248 249 ACPI_REPORT_ERROR (("AcpiExOpcode_2A_0T_0R: Unknown opcode %X\n", 250 WalkState->Opcode)); 251 Status = AE_AML_BAD_OPCODE; --- 499 unchanged lines hidden --- |