De-duplicate common initialization code (self-test and device identification) and put it in a new ipmi_if.c unit, which is supposed to work with any underlying IPMI interface. Change-Id: Ia99da6fb63adb7bf556d3d6f7964b34831be8a2f Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/67056 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Krystian Hebel <krystian.hebel@3mdeb.com>
		
			
				
	
	
	
		
			1.7 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			1.7 KiB
		
	
	
	
	
	
	
	
IPMI KCS driver
The driver can be found in src/drivers/ipmi/. It works with BMC that provide
a KCS I/O interface as specified in the IPMI standard.
The driver detects the IPMI version, reserves the I/O space in coreboot's resource allocator and writes the required ACPI and SMBIOS tables.
For developers
To use the driver, select the IPMI_KCS Kconfig and add the following PNP
device under the LPC bridge device (in example for the KCS at 0xca2):
 chip drivers/ipmi
   device pnp ca2.0 on end         # IPMI KCS
 end
Note: The I/O base address needs to be aligned to 2.
The following registers can be set:
- have_nv_storage- Boolean
- If true nv_storage_device_addresswill be added to SMBIOS type 38.
 
- nv_storage_device_address- Integer
- The NV storage address as defined in SMBIOS spec for type 38.
 
- bmc_i2c_address- Integer
- The i2c address of the BMC. zero if not applicable.
 
- have_apic- Boolean
- If true the apic_interruptwill be added to SPMI table.
 
- apic_interrupt- Integer
- The APIC interrupt used to notify about a change on the KCS.
 
- have_gpe- Boolean
- If true the gpe_interruptwill be added to SPMI table.
 
- gpe_interrupt- Integer
- The bit in GPE (SCI) used to notify about a change on the KCS.
 
- wait_for_bmc- Boolean
- Wait for BMC to boot. This can be used if the BMC takes a long time to boot
after PoR:
- AST2400 on Supermicro X11SSH: 34 s
 
 
- bmc_boot_timeout- Integer
- The timeout in seconds to wait for the IPMI service to be loaded. Will be used if wait_for_bmc is true.