drivers/i2c/generic: Add "compatible" property to _DSD
This change adds support for allowing devices to provide a "compatible" property string that can be used when _HID is set to PRP00001. This is used to allow Linux kernel drivers to match the device to appropriate driver based on the OF-style compatible string. Reference: https://www.kernel.org/doc/Documentation/acpi/enumeration.txt BUG=b:129162037 TEST=Verified that atmel touchscreen gets enumerated correctly on kohaku using PRP0001 and compatible string. Change-Id: I8a306854c67ab2f056ea8774df46599ef0c55761 Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34813 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org>
This commit is contained in:
committed by
Shelley Chen
parent
8c206c9fdd
commit
8ce36ac548
@@ -28,6 +28,7 @@ struct drivers_i2c_generic_config {
|
|||||||
const char *desc; /* Device Description */
|
const char *desc; /* Device Description */
|
||||||
unsigned uid; /* ACPI _UID */
|
unsigned uid; /* ACPI _UID */
|
||||||
enum i2c_speed speed; /* Bus speed in Hz, default is I2C_SPEED_FAST */
|
enum i2c_speed speed; /* Bus speed in Hz, default is I2C_SPEED_FAST */
|
||||||
|
const char *compat_string; /* Compatible string for _HID=PRP0001 */
|
||||||
unsigned wake; /* Wake GPE */
|
unsigned wake; /* Wake GPE */
|
||||||
struct acpi_irq irq; /* Interrupt */
|
struct acpi_irq irq; /* Interrupt */
|
||||||
|
|
||||||
|
@@ -116,10 +116,13 @@ void i2c_generic_fill_ssdt(struct device *dev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* DSD */
|
/* DSD */
|
||||||
if (config->probed || config->property_count ||
|
if (config->probed || config->property_count || config->compat_string ||
|
||||||
(reset_gpio_index != -1) ||
|
(reset_gpio_index != -1) ||
|
||||||
(enable_gpio_index != -1) || (irq_gpio_index != -1)) {
|
(enable_gpio_index != -1) || (irq_gpio_index != -1)) {
|
||||||
dsd = acpi_dp_new_table("_DSD");
|
dsd = acpi_dp_new_table("_DSD");
|
||||||
|
if (config->compat_string)
|
||||||
|
acpi_dp_add_string(dsd, "compatible",
|
||||||
|
config->compat_string);
|
||||||
if (config->probed)
|
if (config->probed)
|
||||||
acpi_dp_add_integer(dsd, "linux,probed", 1);
|
acpi_dp_add_integer(dsd, "linux,probed", 1);
|
||||||
if (irq_gpio_index != -1)
|
if (irq_gpio_index != -1)
|
||||||
|
Reference in New Issue
Block a user