dpll: add generic DPLL type

JIRA: https://redhat.atlassian.net/browse/RHEL-193749

commit 9375487c0c78817b3651e2621d648c6198757c41
Author: Grzegorz Nitka <grzegorz.nitka@intel.com>
Date:   Sun Jun 7 20:30:33 2026 +0200

    dpll: add generic DPLL type

    Add DPLL_TYPE_GENERIC to represent DPLL devices which do not fit the
    existing PPS or EEC classes.

    The UAPI type is intentionally generic. During netdev discussion,
    maintainers pointed out that introducing identifiers tied to a specific
    placement or single design does not scale across ASICs and vendors.
    The role of a DPLL is already inferable from the spawning driver,
    bus device, and pin topology, without encoding additional
    purpose-specific taxonomy in the type name.

    Using a generic type keeps the UAPI extensible and avoids premature
    naming that may become incorrect as new hardware topologies are
    exposed through the DPLL subsystem.

    Expose the new type through UAPI and netlink specification as "generic".

    Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com>
    Link: https://patch.msgid.link/20260607183045.1213735-2-grzegorz.nitka@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
This commit is contained in:
Michal Schmidt
2026-07-09 19:31:43 +02:00
parent ac6aef9893
commit 71c5e6da11
3 changed files with 6 additions and 1 deletions
+3
View File
@@ -138,6 +138,9 @@ definitions:
-
name: eec
doc: dpll drives the Ethernet Equipment Clock
-
name: generic
doc: generic dpll type for devices outside PPS/EEC classes
render-max: true
-
type: enum
+1 -1
View File
@@ -36,7 +36,7 @@ const struct nla_policy dpll_reference_sync_nl_policy[DPLL_A_PIN_STATE + 1] = {
static const struct nla_policy dpll_device_id_get_nl_policy[DPLL_A_TYPE + 1] = {
[DPLL_A_MODULE_NAME] = { .type = NLA_NUL_STRING, },
[DPLL_A_CLOCK_ID] = { .type = NLA_U64, },
[DPLL_A_TYPE] = NLA_POLICY_RANGE(NLA_U32, 1, 2),
[DPLL_A_TYPE] = NLA_POLICY_RANGE(NLA_U32, 1, 3),
};
/* DPLL_CMD_DEVICE_GET - do */
+2
View File
@@ -108,10 +108,12 @@ enum dpll_clock_quality_level {
* enum dpll_type - type of dpll, valid values for DPLL_A_TYPE attribute
* @DPLL_TYPE_PPS: dpll produces Pulse-Per-Second signal
* @DPLL_TYPE_EEC: dpll drives the Ethernet Equipment Clock
* @DPLL_TYPE_GENERIC: generic dpll type for devices outside PPS/EEC classes
*/
enum dpll_type {
DPLL_TYPE_PPS = 1,
DPLL_TYPE_EEC,
DPLL_TYPE_GENERIC,
/* private: */
__DPLL_TYPE_MAX,