summaryrefslogtreecommitdiff
path: root/Documentation/drivers/ipmi_kcs.md
blob: c4db492e0085a5d3014bdd4bdc0d130c07de3f48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 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_address` will 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_interrupt` will 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_interrupt` will 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.


[IPMI]: https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf