Files
system76-coreboot/src/drivers/spi/acpi/chip.h
Matt DeVillier ce7b252c4f drivers/spi/acpi: Drop 'disable_gpio_export_in_crs' flag
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>
2023-01-15 02:02:01 +00:00

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__ */