From nobody Mon Oct 12 02:51:35 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4j326b6RN1z6vDcG for ; Mon, 12 Oct 2026 02:51:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j326b1wbpz4V3f for ; Mon, 12 Oct 2026 02:51:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791773495; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4H6KyzBgOQauOrcIgeSu3sIrLiVnOCyrQ+CnZOfqX3w=; b=KA8dKRPJiBww/X0wYJYZFwz/eBH8b4ECo6qBa5f/tdtqITrvl+BIjIDl9pGulYZikgYXuA CLixCl8vq6qcTljRI+47IQD16mrdgJ7hFrwYDmlY0TSC9Jwhiofuwpuoe56L1C+QEExOZN tu0vn2luRbUSCcJmuzwXh4g9ovi3fUFyTxnoSa6ylySfpb9uENN807zJL4v1i8Yq0BpiDL 6+4Wz9lTr3z7u1b9vlTEpjG7CbwgsdF7J7dN9UYqOoRG2vAzKNjwjHqX39+vsVuYxKleU/ mUKE15Rx79vekNLQ0vKXXgnDBnID2Eh7FWRH+f1UFGZx2xgMiBe0di9bS0MtyA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791773495; b=kG37+KaGRfVdlz+10Hbzx1x3iJClwhx5TcGG5rhNen8tC7dhrIId48vEtcnmqzKFld2MEW JY6cMyNMMUhhDGdpiRGM8eT14LIUXzk/RBm1ddL6DQYuVDPEvTAsLcbWnr3KJgDLhGjxTJ eI4UufcgIsivsxT+6hNvuXvOPdKxYNGr1huno/JM31jRLfhidreiTgndNbqOudRaduYVGj 4KjLx1FVJ7joSCGrecH7CSgXDr1DDXJkoZBM8olRPtoaKLa3UF/XB3iuIS3D3NP6t1QvEm RTMwWczw5vRkMDn8ES9Nwd++PbD3Rtqx4pNddJFWn7/5r8xJitioCGvYSUE9aA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791773495; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4H6KyzBgOQauOrcIgeSu3sIrLiVnOCyrQ+CnZOfqX3w=; b=XRqrz+Y3vbojQggNCKCZuTxF9ER7LZtGjfx61GPQ4E/lywgPt+oyUUMdLbPTXCsXlhYfeU O8b8DH3yvKSiRWbQvog56NPnubrSLy7nBuPd/w7Nm+3f8Butke1B1Pzg1hKdgxQAI90Bs+ +f2s4+5ieZNa9HL49wEzVjguig0JGM1+55pN6lQ9JOcQb62DBswnbtjwChYNxKx5XtNmzs fcXA+TuxTPVqvjnxdRhnz1l3n+Wwz/+pXZmVull5+KY8Hp8H2NOppjlvPWL52BDnxDMD5p eXrEcUXJigs6WMjfn0KVQz7k8VEOFwWt/ekPcz4ounnN/JQAyPYz5wVg9Ews9A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j326b0x3zz18Lj for ; Mon, 12 Oct 2026 02:51:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 41ef4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 12 Oct 2026 02:51:35 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Adrian Chadd Subject: git: b15ec53784f3 - main - iwm: Intel 9000 series bits from OpenBSD List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b15ec53784f3be913d6b4711f8eb166584a7d791 Auto-Submitted: auto-generated Date: Mon, 12 Oct 2026 02:51:35 +0000 Message-Id: <6acc4b37.41ef4.46904406@gitrepo.freebsd.org> The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=b15ec53784f3be913d6b4711f8eb166584a7d791 commit b15ec53784f3be913d6b4711f8eb166584a7d791 Author: Adrian Chadd AuthorDate: 2026-10-12 02:50:40 +0000 Commit: Adrian Chadd CommitDate: 2026-10-12 02:50:40 +0000 iwm: Intel 9000 series bits from OpenBSD * Add basic SOC conf firmware command * Configured with the same xtal latency as used by openbsd Currently untested; will need to find a device. Obtained from: OpenBSD a6e25c727a2214219715b51ba6af2221d7e0d674 Differential Revision: https://reviews.freebsd.org/D60076 --- sys/dev/iwm/if_iwm.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ sys/dev/iwm/if_iwm_9000.c | 1 + sys/dev/iwm/if_iwm_config.h | 3 +++ 3 files changed, 49 insertions(+) diff --git a/sys/dev/iwm/if_iwm.c b/sys/dev/iwm/if_iwm.c index 642c8fbd44f2..3a2804242319 100644 --- a/sys/dev/iwm/if_iwm.c +++ b/sys/dev/iwm/if_iwm.c @@ -4687,6 +4687,46 @@ iwm_send_bt_init_conf(struct iwm_softc *sc) &bt_cmd); } +static int +iwm_send_soc_conf(struct iwm_softc *sc) +{ + struct iwm_soc_configuration_cmd cmd; + int err; + uint32_t cmd_id, flags = 0; + + memset(&cmd, 0, sizeof(cmd)); + + /* + * In VER_1 of this command, the discrete value is considered + * an integer; In VER_2, it's a bitmask. Since we have only 2 + * values in VER_1, this is backwards-compatible with VER_2, + * as long as we don't set any other flag bits. + */ + if (!sc->cfg->integrated) { /* VER_1 */ + flags = IWM_SOC_CONFIG_CMD_FLAGS_DISCRETE; + } else { /* VER_2 */ + uint8_t scan_cmd_ver; + if (sc->cfg->ltr_delay != IWM_SOC_FLAGS_LTR_APPLY_DELAY_NONE) + flags |= (sc->cfg->ltr_delay & + IWM_SOC_FLAGS_LTR_APPLY_DELAY_MASK); + scan_cmd_ver = iwm_lookup_cmd_ver(sc, IWM_LONG_GROUP, + IWM_SCAN_REQ_UMAC); + if (scan_cmd_ver != IWM_FW_CMD_VER_UNKNOWN && + scan_cmd_ver >= 2 && sc->cfg->low_latency_xtal) + flags |= IWM_SOC_CONFIG_CMD_FLAGS_LOW_LATENCY; + } + cmd.flags = htole32(flags); + + cmd.latency = htole32(sc->cfg->xtal_latency); + + cmd_id = iwm_cmd_id(IWM_SOC_CONFIGURATION_CMD, IWM_SYSTEM_GROUP, 0); + err = iwm_send_cmd_pdu(sc, cmd_id, 0, sizeof(cmd), &cmd); + if (err) + device_printf(sc->sc_dev, "failed to set soc latency: %d\n", + err); + return err; +} + static boolean_t iwm_is_lar_supported(struct iwm_softc *sc) { @@ -4845,6 +4885,11 @@ iwm_init_hw(struct iwm_softc *sc) goto error; } + if (iwm_fw_has_capa(sc, IWM_UCODE_TLV_CAPA_SOC_LATENCY_SUPPORT)) { + if ((error = iwm_send_soc_conf(sc)) != 0) + goto error; + } + error = iwm_send_tx_ant_cfg(sc, iwm_get_valid_tx_ant(sc)); if (error != 0) { device_printf(sc->sc_dev, "antenna config failed\n"); diff --git a/sys/dev/iwm/if_iwm_9000.c b/sys/dev/iwm/if_iwm_9000.c index be86478c74c1..0f3f11ca0c12 100644 --- a/sys/dev/iwm/if_iwm_9000.c +++ b/sys/dev/iwm/if_iwm_9000.c @@ -92,4 +92,5 @@ const struct iwm_cfg iwm9560_cfg = { .host_interrupt_operation_mode = 0, .mqrx_supported = 1, .integrated = 1, + .xtal_latency = 650, }; diff --git a/sys/dev/iwm/if_iwm_config.h b/sys/dev/iwm/if_iwm_config.h index 5d869cffe432..b638a2f1661a 100644 --- a/sys/dev/iwm/if_iwm_config.h +++ b/sys/dev/iwm/if_iwm_config.h @@ -139,6 +139,9 @@ struct iwm_cfg { uint8_t nvm_hw_section_num; int apmg_wake_up_wa; enum iwm_nvm_type nvm_type; + int xtal_latency; + int ltr_delay; + int low_latency_xtal; }; /*