drivers/gfx/generic: Don't set DOD constraints when generating device address
When dynamically generating the DOD (Display Output Device) device address (_ADR), don't set the DOD constraint flags; only set them when using the address value to generate the DOD package. This fixes ACPI brightness control functionality under Windows 11. Before: Name (_ADR, 0x80010400) After: Name (_ADR, 0x00000400) TEST=build/boot Win11 on google brya (banshee), ensure display brightness controls present and functional. Ref: ACPI Spec 6.5 Appendix B.6.1 - _ADR Change-Id: I1d710c6e55e6cb1d20d580bd784221ee1482b871 Signed-off-by: Matt DeVillier <matt.devillier@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83025 Reviewed-by: Felix Held <felix-coreboot@felixheld.de> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
		
				
					committed by
					
						
						Felix Held
					
				
			
			
				
	
			
			
			
						parent
						
							04202d1a7e
						
					
				
				
					commit
					5d904b909a
				
			@@ -119,10 +119,8 @@ static void gfx_fill_ssdt_generator(const struct device *dev)
 | 
				
			|||||||
		if (!config->device[i].addr && config->device[i].type)
 | 
							if (!config->device[i].addr && config->device[i].type)
 | 
				
			||||||
			/* Though not strictly necessary, set the display index and
 | 
								/* Though not strictly necessary, set the display index and
 | 
				
			||||||
			   port attachment to the device index, to ensure uniqueness */
 | 
								   port attachment to the device index, to ensure uniqueness */
 | 
				
			||||||
			config->device[i].addr = DOD_DID_STD | DOD_FW_DETECT |
 | 
								config->device[i].addr = (config->device[i].type << 8) | (i << 4) | (i);
 | 
				
			||||||
						(config->device[i].type << 8) |
 | 
							acpigen_write_dword(DOD_DID_STD | DOD_FW_DETECT | config->device[i].addr);
 | 
				
			||||||
						(i << 4) | (i);
 | 
					 | 
				
			||||||
		acpigen_write_dword(config->device[i].addr);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	acpigen_pop_len(); /* End Package. */
 | 
						acpigen_pop_len(); /* End Package. */
 | 
				
			||||||
	acpigen_pop_len(); /* End Method. */
 | 
						acpigen_pop_len(); /* End Method. */
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user