acpi_device: Add support for writing ACPI SPI descriptors

Hardware / Coreboot - Duncan Laurie [chromium.org] - 27 May 2016 20:48 UTC

Add required definitions to describe an ACPI SPI bus and a method to write the SpiSerialBus() descriptor to the SSDT.

This will be used by device drivers to describe their SPI resources to the OS. SPI devices are not currently enumerated in the devicetree but can be enumerated by device drivers directly.

generic.c:
void acpi_fill_ssdt_generator(struct device *dev) { struct acpi_spi spi = { .device_select = dev->path->generic.device.id, .device_select_polarity = SPI_POLARITY_LOW, .spi_wire_mode = SPI_4_WIRE_MODE, .speed = 1000 * 1000; /* 1 mHz */ .data_bit_length = 8, .clock_phase = SPI_CLOCK_PHASE_FIRST, .clock_polarity = SPI_POLARITY_LOW, .resource = acpi_device_path(dev->bus->dev) };

acpi_device_write_spi(&spi);

}

devicetree.cb: device pci 1e.2 on chip drivers/spi/generic device generic 0 on end end end

SSDT.dsl: SpiSerialBus (0, PolarityLow, FourWireMode, 8, ControllerInitiated, 1000000, ClockPolarityLow, ClockPhaseFirst, "\\_SB.PCI0.SPI0", 0, ResourceConsumer)

Change-Id: I0ef83dc111ac6c19d68872ab64e1e5e3a7756cae

70c86d9 acpi_device: Add support for writing ACPI SPI descriptors
src/arch/x86/acpi_device.c | 72 +++++++++++++++++++++++++++++++
src/arch/x86/include/arch/acpi_device.h | 44 +++++++++++++++++++
2 files changed, 116 insertions(+)

Upstream: review.coreboot.org


  • Share