acpi: Add function to simplify If (CondRefOf (..)) sequences
The new function is called acpigen_write_if_cond_refof(), and it must be paired with a following acpigen_write_if_end() call. Change-Id: I6e192a569f550ecb77ad264275d52f219eacaca1 Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/56003 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
		
				
					committed by
					
						 Patrick Georgi
						Patrick Georgi
					
				
			
			
				
	
			
			
			
						parent
						
							f16a5ec871
						
					
				
				
					commit
					c4ca2f6396
				
			| @@ -1501,6 +1501,21 @@ void acpigen_write_if_lequal_namestr_int(const char *namestr, uint64_t val) | ||||
| 	acpigen_write_integer(val); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Generates ACPI code to check at runtime if an object named `namestring` | ||||
|  * exists, and leaves the If scope open to continue execute code when this | ||||
|  * is true. NOTE: Requires matching acpigen_write_if_end(). | ||||
|  * | ||||
|  * If (CondRefOf (NAME)) | ||||
|  */ | ||||
| void acpigen_write_if_cond_ref_of(const char *namestring) | ||||
| { | ||||
| 	acpigen_write_if(); | ||||
| 	acpigen_emit_ext_op(COND_REFOF_OP); | ||||
| 	acpigen_emit_namestring(namestring); | ||||
| 	acpigen_emit_byte(ZERO_OP); /* ignore COND_REFOF_OP destination */ | ||||
| } | ||||
|  | ||||
| /* Closes previously opened if statement and generates ACPI code for else statement. */ | ||||
| void acpigen_write_else(void) | ||||
| { | ||||
|   | ||||
| @@ -415,6 +415,8 @@ inline void acpigen_write_if_end(void) | ||||
| { | ||||
| 	acpigen_pop_len(); | ||||
| } | ||||
| /* Emits If (CondRefOf(NAME)) */ | ||||
| void acpigen_write_if_cond_ref_of(const char *namestring); | ||||
| void acpigen_write_else(void); | ||||
| void acpigen_write_shiftleft_op_int(uint8_t src_result, uint64_t count); | ||||
| void acpigen_write_to_buffer(uint8_t src, uint8_t dst); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user