Exposing the GPIOs via an ACPI PowerResource and the _CRS results in the OS driver and ACPI thinking they own the GPIO. This can cause timing problems because it's not clear which system should be controlling the GPIO. There's no reason to require explicit disablement however, so drop the superfluous 'disable' flag, and change the _CRS generation to check if the GPIOs will be exported via the 'has_power_resource' flag instead. This mirrors the change made for drivers/i2c/generic. TEST=untested, as no boards selected this option. Change-Id: I4f95d0e453d89b7e1978d3efac304518304495d1 Signed-off-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/71850 Reviewed-by: Martin L Roth <gaumless@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
48 lines
1.5 KiB
C
48 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
|
|
#ifndef __SPI_ACPI_CHIP_H__
|
|
#define __SPI_ACPI_CHIP_H__
|
|
|
|
#include <acpi/acpi_device.h>
|
|
|
|
struct drivers_spi_acpi_config {
|
|
const char *hid; /* ACPI _HID (required) */
|
|
const char *cid; /* ACPI _CID */
|
|
const char *name; /* ACPI Device Name */
|
|
const char *desc; /* Device Description */
|
|
unsigned int uid; /* ACPI _UID */
|
|
unsigned int speed; /* Bus speed in Hz (default 1MHz) */
|
|
const char *compat_string; /* Compatible string for _HID=PRP0001 */
|
|
struct acpi_irq irq; /* Interrupt */
|
|
unsigned int wake; /* Wake GPE */
|
|
|
|
/* Use GPIO based interrupt instead of PIRQ */
|
|
struct acpi_gpio irq_gpio;
|
|
|
|
/* Does the device have a power resource? */
|
|
bool has_power_resource;
|
|
|
|
/* GPIO used to take device out of reset or to put it into reset. */
|
|
struct acpi_gpio reset_gpio;
|
|
/* Delay to be inserted after device is taken out of reset. */
|
|
unsigned int reset_delay_ms;
|
|
/* Delay to be inserted after device is put into reset. */
|
|
unsigned int reset_off_delay_ms;
|
|
|
|
/* GPIO used to enable device. */
|
|
struct acpi_gpio enable_gpio;
|
|
/* Delay to be inserted after device is enabled. */
|
|
unsigned int enable_delay_ms;
|
|
/* Delay to be inserted after device is disabled. */
|
|
unsigned int enable_off_delay_ms;
|
|
|
|
/* GPIO used to stop operation of device. */
|
|
struct acpi_gpio stop_gpio;
|
|
/* Delay to be inserted after disabling stop. */
|
|
unsigned int stop_delay_ms;
|
|
/* Delay to be inserted after enabling stop. */
|
|
unsigned int stop_off_delay_ms;
|
|
};
|
|
|
|
#endif /* __SPI_ACPI_CHIP_H__ */
|