payloads/edk2: Update default branch for MrChromebox repo to 2023-04
[coreboot.git] / Documentation / drivers / ipmi_kcs.md
blobc4db492e0085a5d3014bdd4bdc0d130c07de3f48
1 # IPMI KCS driver
3 The driver can be found in `src/drivers/ipmi/`. It works with BMC that provide
4 a KCS I/O interface as specified in the [IPMI] standard.
6 The driver detects the IPMI version, reserves the I/O space in coreboot's
7 resource allocator and writes the required ACPI and SMBIOS tables.
9 ## For developers
11 To use the driver, select the `IPMI_KCS` Kconfig and add the following PNP
12 device under the LPC bridge device (in example for the KCS at 0xca2):
14 ```
15  chip drivers/ipmi
16    device pnp ca2.0 on end         # IPMI KCS
17  end
18 ```
20 **Note:** The I/O base address needs to be aligned to 2.
22 The following registers can be set:
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.
56 [IPMI]: https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf