1# IPMI KCS driver 2 3The driver can be found in `src/drivers/ipmi/`. It works with BMC that provide 4a KCS I/O interface as specified in the [IPMI] standard. 5 6The driver detects the IPMI version, reserves the I/O space in coreboot's 7resource allocator and writes the required ACPI and SMBIOS tables. 8 9## For developers 10 11To use the driver, select the `IPMI_KCS` Kconfig and add the following PNP 12device under the LPC bridge device (in example for the KCS at 0xca2): 13 14``` 15 chip drivers/ipmi 16 device pnp ca2.0 on end # IPMI KCS 17 end 18``` 19 20**Note:** The I/O base address needs to be aligned to 2. 21 22The following registers can be set: 23 24* `have_nv_storage` 25 * Boolean 26 * If true `nv_storage_device_address` will be added to SMBIOS type 38. 27* `nv_storage_device_address` 28 * Integer 29 * The NV storage address as defined in SMBIOS spec for type 38. 30* `bmc_i2c_address` 31 * Integer 32 * The i2c address of the BMC. zero if not applicable. 33* `have_apic` 34 * Boolean 35 * If true the `apic_interrupt` will be added to SPMI table. 36* `apic_interrupt` 37 * Integer 38 * The APIC interrupt used to notify about a change on the KCS. 39* `have_gpe` 40 * Boolean 41 * If true the `gpe_interrupt` will be added to SPMI table. 42* `gpe_interrupt` 43 * Integer 44 * The bit in GPE (SCI) used to notify about a change on the KCS. 45* `wait_for_bmc` 46 * Boolean 47 * Wait for BMC to boot. This can be used if the BMC takes a long time to boot 48 after PoR: 49 - AST2400 on Supermicro X11SSH: 34 s 50* `bmc_boot_timeout` 51 * Integer 52 * The timeout in seconds to wait for the IPMI service to be loaded. 53 Will be used if wait_for_bmc is true. 54 55 56[IPMI]: https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf 57