summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorIvan Vecera <ivecera@redhat.com>2026-02-03 18:39:57 +0100
committerPaolo Abeni <pabeni@redhat.com>2026-02-05 15:57:46 +0100
commit711696b3e168cea4165e7b7f051f3f442a347430 (patch)
treebbfa476ad73ac003fcc6bf46f15ad0c0452eb214 /include/linux
parent2be467588d6bc6ec5988fc254e62a44b865912a0 (diff)
dpll: Support dynamic pin index allocation
Allow drivers to register DPLL pins without manually specifying a pin index. Currently, drivers must provide a unique pin index when calling dpll_pin_get(). This works well for hardware-mapped pins but creates friction for drivers handling virtual pins or those without a strict hardware indexing scheme. Introduce DPLL_PIN_IDX_UNSPEC (U32_MAX). When a driver passes this value as the pin index: 1. The core allocates a unique index using an IDA 2. The allocated index is mapped to a range starting above `INT_MAX` This separation ensures that dynamically allocated indices never collide with standard driver-provided hardware indices, which are assumed to be within the `0` to `INT_MAX` range. The index is automatically freed when the pin is released in dpll_pin_put(). Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Signed-off-by: Ivan Vecera <ivecera@redhat.com> Reviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com> Link: https://patch.msgid.link/20260203174002.705176-5-ivecera@redhat.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/dpll.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/dpll.h b/include/linux/dpll.h
index 8ed90dfc65f0..8fff048131f1 100644
--- a/include/linux/dpll.h
+++ b/include/linux/dpll.h
@@ -240,6 +240,8 @@ int dpll_device_register(struct dpll_device *dpll, enum dpll_type type,
void dpll_device_unregister(struct dpll_device *dpll,
const struct dpll_device_ops *ops, void *priv);
+#define DPLL_PIN_IDX_UNSPEC U32_MAX
+
struct dpll_pin *
dpll_pin_get(u64 clock_id, u32 dev_driver_id, struct module *module,
const struct dpll_pin_properties *prop);