{"id":2221605,"url":"http://patchwork.ozlabs.org/api/1.1/covers/2221605/?format=json","web_url":"http://patchwork.ozlabs.org/project/intel-wired-lan/cover/20260409235122.436749-1-grzegorz.nitka@intel.com/","project":{"id":46,"url":"http://patchwork.ozlabs.org/api/1.1/projects/46/?format=json","name":"Intel Wired Ethernet development","link_name":"intel-wired-lan","list_id":"intel-wired-lan.osuosl.org","list_email":"intel-wired-lan@osuosl.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260409235122.436749-1-grzegorz.nitka@intel.com>","date":"2026-04-09T23:51:14","name":"[v6,net-next,0/8] dpll/ice: Add TXC DPLL type and full TX reference clock control for E825","submitter":{"id":82711,"url":"http://patchwork.ozlabs.org/api/1.1/people/82711/?format=json","name":"Nitka, Grzegorz","email":"grzegorz.nitka@intel.com"},"mbox":"http://patchwork.ozlabs.org/project/intel-wired-lan/cover/20260409235122.436749-1-grzegorz.nitka@intel.com/mbox/","series":[{"id":499370,"url":"http://patchwork.ozlabs.org/api/1.1/series/499370/?format=json","web_url":"http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=499370","date":"2026-04-09T23:51:14","name":"dpll/ice: Add TXC DPLL type and full TX reference clock control for E825","version":6,"mbox":"http://patchwork.ozlabs.org/series/499370/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/2221605/comments/","headers":{"Return-Path":"<intel-wired-lan-bounces@osuosl.org>","X-Original-To":["incoming@patchwork.ozlabs.org","intel-wired-lan@lists.osuosl.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","intel-wired-lan@lists.osuosl.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256\n header.s=default header.b=E+7drnlk;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fsGyV5BJXz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 09:55:12 +1000 (AEST)","from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 720C240685;\n\tThu,  9 Apr 2026 23:55:10 +0000 (UTC)","from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id yiEZSlSA4Ipy; Thu,  9 Apr 2026 23:55:08 +0000 (UTC)","from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 50D0340631;\n\tThu,  9 Apr 2026 23:55:08 +0000 (UTC)","from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n by lists1.osuosl.org (Postfix) with ESMTP id EE3441F6\n for <intel-wired-lan@lists.osuosl.org>; Thu,  9 Apr 2026 23:55:06 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id DF59D80A8A\n for <intel-wired-lan@lists.osuosl.org>; Thu,  9 Apr 2026 23:55:06 +0000 (UTC)","from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id fcgW_6X3g541 for <intel-wired-lan@lists.osuosl.org>;\n Thu,  9 Apr 2026 23:55:06 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [192.198.163.11])\n by smtp1.osuosl.org (Postfix) with ESMTPS id AE16080A55\n for <intel-wired-lan@lists.osuosl.org>; Thu,  9 Apr 2026 23:55:05 +0000 (UTC)","from orviesa008.jf.intel.com ([10.64.159.148])\n by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 09 Apr 2026 16:55:05 -0700","from gklab-003-001.igk.intel.com ([10.91.173.48])\n by orviesa008.jf.intel.com with ESMTP; 09 Apr 2026 16:55:00 -0700"],"X-Virus-Scanned":["amavis at osuosl.org","amavis at osuosl.org"],"X-Comment":"SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=<UNKNOWN> ","DKIM-Filter":["OpenDKIM Filter v2.11.0 smtp4.osuosl.org 50D0340631","OpenDKIM Filter v2.11.0 smtp1.osuosl.org AE16080A55"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1775778908;\n\tbh=oHeV8VYlO8ISzBPkgHmrnxSo0ArVcifiiZAAB1xZOk8=;\n\th=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:\n\t List-Post:List-Help:List-Subscribe:Cc:From;\n\tb=E+7drnlkDeE7daza8E80qamajlGdTlAUYgeAPMqg/WXXi0jr6O9IUx5ylvVXLk3Jz\n\t noDK1xU3fpQsyJJ4zbfkLYnuv9jiWd/+VgjKabxmB1RdvRLe6k1FVwiL/WWovn5jPz\n\t gSG+7mzFvjQEBo5GMVpjQvdVk7bPWEi6z75GBQtQnXfXD+dNmvikzup3LhBvl4nsl/\n\t AKjiVj2BBomsJIFTeB+DnoyNMWeeVsmJTIa5eQ15o13fKmnQh4VbWy8KGY6789FqUw\n\t b4e+w61cuw0zGcBIZYU3fvFsJH+3dXCBEVjHHN2CAGYuk+KsVAW38mN+V8R+Qog5Te\n\t PZlE568orm2vQ==","Received-SPF":"Pass (mailfrom) identity=mailfrom; client-ip=192.198.163.11;\n helo=mgamail.intel.com; envelope-from=grzegorz.nitka@intel.com;\n receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp1.osuosl.org AE16080A55","X-CSE-ConnectionGUID":["Wprc/7z4TgiSlXocSWjE1g==","CgDjMLetSwqfqnzJQ7HpYw=="],"X-CSE-MsgGUID":["n8WZbvzXT9itcgfDnukeeg==","x7mu9uWySIalAGHnfO4qzg=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11754\"; a=\"87424025\"","E=Sophos;i=\"6.23,170,1770624000\"; d=\"scan'208\";a=\"87424025\"","E=Sophos;i=\"6.23,170,1770624000\"; d=\"scan'208\";a=\"228859678\""],"X-ExtLoop1":"1","From":"Grzegorz Nitka <grzegorz.nitka@intel.com>","To":"netdev@vger.kernel.org","Date":"Fri, 10 Apr 2026 01:51:14 +0200","Message-Id":"<20260409235122.436749-1-grzegorz.nitka@intel.com>","X-Mailer":"git-send-email 2.39.3","MIME-Version":"1.0","Content-Type":"text/plain; charset=y","Content-Transfer-Encoding":"8bit","X-Mailman-Original-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1775778906; x=1807314906;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=+DkDhE3MSB+tWlg/ttUoEXBLRBLLHvQjNBR6RSY4g40=;\n b=blEQqpnfyHwEsQQoaysEOyr7jF0vTUEiNVF2B4nEdRZ0US9UYWV0W2Bi\n PUuYPuXZi+2+wDdiz33ePlb0qLacBtuq+/sBg3VtsII2TJ3cdk0TAl3Vr\n IKwEJupRwMhXRHcp4vG4z9uw6kW7OFCJdLriI9zkW47C5w4TAKgT72ZZU\n r5XqNgfxl3TNhN1qLEFgDoDsiwpiljaw8xzOjIQPeV28GRI0bfcwr5b52\n OWi+JC2sYfq6njl3gLeVXfK9nnFmb8CiiqcEd/ri7uXF/1iFIZTxXmMXH\n /RynTsCctK8MCS023Hff6H+782ILXTyMLOz/s/UKvyj3P7zz9k5nQC+YX\n g==;","X-Mailman-Original-Authentication-Results":["smtp1.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com","smtp1.osuosl.org;\n dkim=pass (2048-bit key,\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=blEQqpnf"],"Subject":"[Intel-wired-lan] [PATCH v6 net-next 0/8] dpll/ice: Add TXC DPLL\n type and full TX reference clock control for E825","X-BeenThere":"intel-wired-lan@osuosl.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Intel Wired Ethernet Linux Kernel Driver Development\n <intel-wired-lan.osuosl.org>","List-Unsubscribe":"<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>","List-Archive":"<http://lists.osuosl.org/pipermail/intel-wired-lan/>","List-Post":"<mailto:intel-wired-lan@osuosl.org>","List-Help":"<mailto:intel-wired-lan-request@osuosl.org?subject=help>","List-Subscribe":"<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>","Cc":"ivecera@redhat.com, vadim.fedorenko@linux.dev, kuba@kernel.org,\n jiri@resnulli.us, edumazet@google.com, przemyslaw.kitszel@intel.com,\n richardcochran@gmail.com, donald.hunter@gmail.com,\n linux-kernel@vger.kernel.org, arkadiusz.kubalewski@intel.com,\n andrew+netdev@lunn.ch, intel-wired-lan@lists.osuosl.org, horms@kernel.org,\n Prathosh.Satish@microchip.com, anthony.l.nguyen@intel.com, pabeni@redhat.com,\n davem@davemloft.net","Errors-To":"intel-wired-lan-bounces@osuosl.org","Sender":"\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"},"content":"NOTE: This series is intentionally submitted on net-next (not\nintel-wired-lan) as early feedback of DPLL subsystem changes is\nwelcomed. In the past possible approaches were discussed in [1].\n\nThis series adds TX reference clock support for E825 devices and exposes\nTX clock selection and synchronization status via the Linux DPLL\nsubsystem.\nE825 hardware contains a dedicated Tx clock (TXC) domain that is\ndistinct\nfrom PPS and EEC. TX reference clock selection is device‑wide, shared\nacross ports, and mediated by firmware as part of the link bring‑up\nprocess. As a result, TX clock selection intent may differ from the\neffective hardware configuration, and software must verify the outcome\nafter link‑up.\nTo support this, the series introduces TXC support incrementally across\nthe DPLL core and the ice driver:\n\n- add a new DPLL type (TXC) to represent transmit clock generators;\n- relax DPLL pin registration rules for firmware‑described shared pins\n  and extend pin notifications with a source identifier;\n- allow dynamic state control of SyncE reference pins where hardware\n  supports it;\n- add CPI infrastructure for PHY‑side TX clock control on E825C;\n- introduce a TXC DPLL device and TX reference clock pins (EXT_EREF0 and\n  SYNCE) in the ice driver;\n- extend the Restart Auto‑Negotiation command to carry a TX reference\n  clock index;\n- implement hardware‑backed TX reference clock switching, post‑link\n- verification, and TX synchronization reporting.\n\nTXCLK pins report TX reference topology only. Actual synchronization\nsuccess is reported via the TXC DPLL lock status, which is updated after\nhardware verification: external Tx references report LOCKED, while the\ninternal ENET/TXCO source reports UNLOCKED.\nThis provides reliable TX reference selection and observability on E825\ndevices using standard DPLL interfaces, without conflating user intent\nwith effective hardware behavior.\n\n[1] https://lore.kernel.org/netdev/20250905160333.715c34ac@kernel.org/\n\nChanges in v6:\n - rebased\n - AI-review: fix unprotected concurrent access to shared clock\n   bitmap (patch 8/8)\n - AI-review: fix potential issue in tx-clk pin state request handling\n   ('already set' early-exit based now on tx_clk_req comparison, patch 8/8)\n - AI-review: CPI transaction serialization (patch 6/8) \n\nChanges in v5:\n - rebased\n - reworded cover letter\n - replace 'ntfy_src' new argument name with 'src_clk_id' and use it\n   consistently in DPLL notification calls (patch 3/8)\n - reworded commit message (patch 5/8)\n - use FIELD_PREP/GENMSK macros instead of struct bitfields (patch 6/8)\n - reworded commit message (patch 5/8, patch 8/8)\n - refactor the code to avoid sleeping while DPLL mutex is held (using\n   work_queue, patch 8/8)\n - added TXCLK pins and TXC DPLL notifications (patch 8/8)\n - removed 'unused clock disable' mechanism from the scope of this series\n\nChanges in v4:\n - rebased\n - edited, shortened the commit message in 3/8 patch\n - moved ice_get_ctrl_pf to the header file (patch 8/8) and\n   removed duplicated static definitions from ice_ptp and ice_txlck\n   modules\n - add NULL/invalid pointer checker for returned pointer from\n   ice_get_ctrl_pf (patch 8/8)\n - edited error message in case AN restart failure (patch 8/8)\n\nChanges in v3:\n- improved commit message (patch 1/8, AI review comment)\n- improved deinitialization path in ice_dpll_deinit_txclk_pins to\n  avoid potential NULL dereference. NULL checking moved to\n  ice_dpll_unregister_pins (patch 5/8, found by AI review)\n- removed redundant semicolon (patch 6/8)\n\nChanges in v2:\n- rebased\n- added autogenerated DPLL files (patch 1/8)\n- fixed checkpatch 'parenthesis alignment' warning (patch 2/8)\n- fixed error path in ice_dpll_init_txclk_pins (AI warning, patch 5/8)\n- fixed kdoc warnings (patch 6/8, patch 8/8)\n\nGrzegorz Nitka (8):\n  dpll: add new DPLL type for transmit clock (TXC) usage\n  dpll: allow registering FW-identified pin with a different DPLL\n  dpll: extend pin notifier and netlink events with notification source\n    ID\n  dpll: zl3073x: allow SyncE_Ref pin state change\n  ice: introduce TXC DPLL device and TX ref clock pin framework for E825\n  ice: implement CPI support for E825C\n  ice: add Tx reference clock index handling to AN restart command\n  ice: implement E825 TX ref clock control and TXC hardware sync status\n\n Documentation/netlink/specs/dpll.yaml         |   3 +\n drivers/dpll/dpll_core.c                      |  32 +-\n drivers/dpll/dpll_core.h                      |   3 +-\n drivers/dpll/dpll_netlink.c                   |  10 +-\n drivers/dpll/dpll_netlink.h                   |   4 +-\n drivers/dpll/dpll_nl.c                        |   2 +-\n drivers/dpll/zl3073x/prop.c                   |   9 +\n drivers/net/ethernet/intel/ice/Makefile       |   2 +-\n drivers/net/ethernet/intel/ice/ice.h          |  12 +\n drivers/net/ethernet/intel/ice/ice_adapter.c  |   4 +\n drivers/net/ethernet/intel/ice/ice_adapter.h  |   7 +\n .../net/ethernet/intel/ice/ice_adminq_cmd.h   |   2 +\n drivers/net/ethernet/intel/ice/ice_common.c   |   5 +-\n drivers/net/ethernet/intel/ice/ice_common.h   |   2 +-\n drivers/net/ethernet/intel/ice/ice_cpi.c      | 364 +++++++++++++++++\n drivers/net/ethernet/intel/ice/ice_cpi.h      |  61 +++\n drivers/net/ethernet/intel/ice/ice_dpll.c     | 380 ++++++++++++++++--\n drivers/net/ethernet/intel/ice/ice_dpll.h     |  10 +\n drivers/net/ethernet/intel/ice/ice_lib.c      |   3 +-\n drivers/net/ethernet/intel/ice/ice_ptp.c      |  26 +-\n drivers/net/ethernet/intel/ice/ice_ptp.h      |   7 +\n drivers/net/ethernet/intel/ice/ice_ptp_hw.c   |  37 ++\n drivers/net/ethernet/intel/ice/ice_ptp_hw.h   |  34 ++\n drivers/net/ethernet/intel/ice/ice_sbq_cmd.h  |   5 +-\n drivers/net/ethernet/intel/ice/ice_txclk.c    | 251 ++++++++++++\n drivers/net/ethernet/intel/ice/ice_txclk.h    |  38 ++\n drivers/net/ethernet/intel/ice/ice_type.h     |   2 +\n include/linux/dpll.h                          |   1 +\n include/uapi/linux/dpll.h                     |   2 +\n 29 files changed, 1265 insertions(+), 53 deletions(-)\n create mode 100644 drivers/net/ethernet/intel/ice/ice_cpi.c\n create mode 100644 drivers/net/ethernet/intel/ice/ice_cpi.h\n create mode 100644 drivers/net/ethernet/intel/ice/ice_txclk.c\n create mode 100644 drivers/net/ethernet/intel/ice/ice_txclk.h\n\n\nbase-commit: b6e39e48469e37057fce27a1b87cf6d3e456aa42"}