From 5972ffde919ab65ba29d4d51ccf735da18d52719 Mon Sep 17 00:00:00 2001 From: Andrew Gallatin Date: Wed, 15 Nov 2023 19:51:28 -0500 Subject: [PATCH] ig4(4): Add an EMAG device type Sponsored by: Ampere Computing LLC, Netflix Submitted by: allanjude Differential Revision: https://reviews.freebsd.org/D28746 Reviewed by: imp --- sys/dev/ichiic/ig4_acpi.c | 12 ++++++++++-- sys/dev/ichiic/ig4_iic.c | 3 +++ sys/dev/ichiic/ig4_var.h | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/sys/dev/ichiic/ig4_acpi.c b/sys/dev/ichiic/ig4_acpi.c index f88cca6cf13d..3f370ae7abb9 100644 --- a/sys/dev/ichiic/ig4_acpi.c +++ b/sys/dev/ichiic/ig4_acpi.c @@ -83,13 +83,21 @@ static int ig4iic_acpi_attach(device_t dev) { ig4iic_softc_t *sc; + char *str; int error; sc = device_get_softc(dev); sc->dev = dev; - /* All the HIDs matched are Atom SOCs. */ - sc->version = IG4_ATOM; + error = ACPI_ID_PROBE(device_get_parent(dev), dev, ig4iic_ids, &str); + if (error > 0) + return (error); + if (strcmp(str, "APMC0D0F") == 0) { + sc->version = IG4_EMAG; + } else { + /* All the other HIDs matched are Atom SOCs. */ + sc->version = IG4_ATOM; + } sc->regs_rid = 0; sc->regs_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->regs_rid, RF_ACTIVE); diff --git a/sys/dev/ichiic/ig4_iic.c b/sys/dev/ichiic/ig4_iic.c index 195bca62928a..3dc72c458b24 100644 --- a/sys/dev/ichiic/ig4_iic.c +++ b/sys/dev/ichiic/ig4_iic.c @@ -89,6 +89,9 @@ * Ig4 hardware parameters except Haswell are taken from intel_lpss driver */ static const struct ig4_hw ig4iic_hw[] = { + [IG4_EMAG] = { + .ic_clock_rate = 100, /* MHz */ + }, [IG4_HASWELL] = { .ic_clock_rate = 100, /* MHz */ .sda_hold_time = 90, /* nsec */ diff --git a/sys/dev/ichiic/ig4_var.h b/sys/dev/ichiic/ig4_var.h index 964a610e7408..989cf23779a2 100644 --- a/sys/dev/ichiic/ig4_var.h +++ b/sys/dev/ichiic/ig4_var.h @@ -42,6 +42,7 @@ #include "iicbus_if.h" enum ig4_vers { + IG4_EMAG, IG4_HASWELL, IG4_ATOM, IG4_SKYLAKE,