)]}'
{
  "commit": "54e65df8cf18a741745645aed7ae91514d437b43",
  "tree": "5ddede51bd7aeffd51f82b03aa5b8cbd56d9508d",
  "parents": [
    "9c11fcb2e9a54d0f1467380831e2e4bb68f7498d"
  ],
  "author": {
    "name": "Ivan Vecera",
    "email": "ivecera@redhat.com",
    "time": "Mon May 11 17:58:16 2026 +0200"
  },
  "committer": {
    "name": "Jakub Kicinski",
    "email": "kuba@kernel.org",
    "time": "Tue May 12 18:48:07 2026 -0700"
  },
  "message": "dpll: zl3073x: report FFO as DPLL vs input reference offset\n\nReplace the per-reference frequency offset measurement (which was\nredundant with measured-frequency) with a direct read of the DPLL\u0027s\ndelta frequency offset vs its tracked input reference.\n\nThe new implementation uses the dpll_df_offset_x register with\nref_ofst\u003d1 via the dpll_df_read_x semaphore mechanism. This\nprovides 2^-48 resolution (~3.5 fE) and reports the actual\nfrequency difference between the DPLL and its active input.\n\nSwitch supported_ffo from DPLL_FFO_PORT_RXTX_RATE to\nDPLL_FFO_PIN_DEVICE so FFO is reported only in the per-parent\ncontext for the active input pin.\n\nUse atomic64_t for freq_offset to prevent torn reads on 32-bit\narchitectures between the periodic worker and netlink callbacks.\n\nRewrite ffo_check to compare the cached df_offset converted to PPT\ninstead of using the old per-reference measurement. Remove the\nref_ffo_update periodic measurement and the ref ffo field since\nthey are no longer needed.\n\nChanges v3 -\u003e v4:\n- Switch to DPLL_FFO_PIN_DEVICE, remove dpll\u003dNULL guard\n- Use atomic64_t for freq_offset (torn read on 32-bit)\n\nReviewed-by: Petr Oros \u003cporos@redhat.com\u003e\nSigned-off-by: Ivan Vecera \u003civecera@redhat.com\u003e\nLink: https://patch.msgid.link/20260511155816.99936-3-ivecera@redhat.com\nSigned-off-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2f48ca2391494fe4316826b741caba56571a894f",
      "old_mode": 33188,
      "old_path": "drivers/dpll/zl3073x/chan.c",
      "new_id": "2fe3c3da84bb586bc0087edb0bc037cba803521d",
      "new_mode": 33188,
      "new_path": "drivers/dpll/zl3073x/chan.c"
    },
    {
      "type": "modify",
      "old_id": "481da2133202beae76896685c458f771fcf96539",
      "old_mode": 33188,
      "old_path": "drivers/dpll/zl3073x/chan.h",
      "new_id": "4353809c6912230d0093783c346337319d4eef39",
      "new_mode": 33188,
      "new_path": "drivers/dpll/zl3073x/chan.h"
    },
    {
      "type": "modify",
      "old_id": "5f1e70f3e40a0527ecdc033c70aff0638da69478",
      "old_mode": 33188,
      "old_path": "drivers/dpll/zl3073x/core.c",
      "new_id": "b3345060490dbb6168405edb557ab1e2e32a7394",
      "new_mode": 33188,
      "new_path": "drivers/dpll/zl3073x/core.c"
    },
    {
      "type": "modify",
      "old_id": "05e63661bf074b3b7805596a0a6e31907d5be1df",
      "old_mode": 33188,
      "old_path": "drivers/dpll/zl3073x/dpll.c",
      "new_id": "cff85cdb9d0e5fb717b5729ed660f6ff9648f0d1",
      "new_mode": 33188,
      "new_path": "drivers/dpll/zl3073x/dpll.c"
    },
    {
      "type": "modify",
      "old_id": "55e80e4f08734c6213ec41aa9e7c48fba937ba6e",
      "old_mode": 33188,
      "old_path": "drivers/dpll/zl3073x/ref.h",
      "new_id": "e140ca3ea17dce48cc9ccca5525b1fc99863826c",
      "new_mode": 33188,
      "new_path": "drivers/dpll/zl3073x/ref.h"
    },
    {
      "type": "modify",
      "old_id": "8015808bdf548c7eb2a9045d8cdc3bee72a258fa",
      "old_mode": 33188,
      "old_path": "drivers/dpll/zl3073x/regs.h",
      "new_id": "9578f000952825fc44d57e9f70b69945b9c6bc51",
      "new_mode": 33188,
      "new_path": "drivers/dpll/zl3073x/regs.h"
    }
  ]
}
