git: 886a35528da9 - stable/14 - ig4(4): Add an EMAG device type

From: Vladimir Kondratyev <wulf_at_FreeBSD.org>
Date: Sun, 27 Sep 2026 12:20:40 UTC
The branch stable/14 has been updated by wulf:

URL: https://cgit.FreeBSD.org/src/commit/?id=886a35528da941d2a811db533d21b16511d11625

commit 886a35528da941d2a811db533d21b16511d11625
Author:     Andrew Gallatin <gallatin@FreeBSD.org>
AuthorDate: 2023-11-16 00:51:28 +0000
Commit:     Vladimir Kondratyev <wulf@FreeBSD.org>
CommitDate: 2026-09-27 12:19:38 +0000

    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
    
    (cherry picked from commit 5972ffde919ab65ba29d4d51ccf735da18d52719)
---
 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 729e63a54ffa..1275790a4412 100644
--- a/sys/dev/ichiic/ig4_acpi.c
+++ b/sys/dev/ichiic/ig4_acpi.c
@@ -84,13 +84,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 31b097fd68bb..6f957f900944 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 cb44a1e7cd58..0d000ab34c1d 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,