accel/ivpu: Add support for limiting NPU frequency
authorAndrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
Wed, 8 Apr 2026 15:01:52 +0000 (17:01 +0200)
committerKarol Wachowski <karol.wachowski@linux.intel.com>
Wed, 29 Apr 2026 07:41:59 +0000 (09:41 +0200)
commit7455a0583a906533041a80e48c6a2e3230cce96e
tree7744c14a85c3038f0c6218f372e87c08d320d1de
parentc82a16b0caac5799333bd3dc63c12ab4c6ee13b4
accel/ivpu: Add support for limiting NPU frequency

Add configurable frequency limits to allow users to constrain the NPU
operating frequency range for power and thermal management. This support
requires firmware API version 3.34.0 or newer.

New sysfs interface:

The freq/ subdirectory contains the following attributes:

- hw_min_freq: Minimum frequency supported by hardware (read-only)
- hw_max_freq: Maximum frequency supported by hardware (read-only)
- hw_efficient_freq: Hardware's optimal operating frequency (read-only)
- current_freq: Current NPU frequency in MHz (read-only)
- set_min_freq: Configure minimum operating frequency (50XX+ devices)
- set_max_freq: Configure maximum operating frequency (50XX+ devices)

Legacy attributes npu_max_frequency_mhz and npu_current_frequency_mhz
are maintained for backward compatibility.

Implementation details:

- Frequency configuration is communicated to firmware via JSM messages
- User-specified frequency values are clamped to hardware limits
- Power-efficient frequency (pn_ratio) is adjusted dynamically to stay
  within the configured range
- Frequency configuration is initialized during device boot
- The JSM API header is updated to version 3.34.0 to support the new
  VPU_JSM_MSG_FREQ_CONFIG firmware message

Added description for the sysfs attributes in the Documentation/ABI.

Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
Reviewed-by: Karol Wachowski <karol.wachowski@linux.intel.com>
Signed-off-by: Karol Wachowski <karol.wachowski@linux.intel.com>
Link: https://patch.msgid.link/20260408150152.2093638-1-andrzej.kacprowski@linux.intel.com
Documentation/ABI/obsolete/sysfs-driver-ivpu [new file with mode: 0644]
Documentation/ABI/testing/sysfs-driver-ivpu [new file with mode: 0644]
MAINTAINERS
drivers/accel/ivpu/ivpu_drv.c
drivers/accel/ivpu/ivpu_hw.h
drivers/accel/ivpu/ivpu_hw_btrs.c
drivers/accel/ivpu/ivpu_hw_btrs.h
drivers/accel/ivpu/ivpu_jsm_msg.c
drivers/accel/ivpu/ivpu_jsm_msg.h
drivers/accel/ivpu/ivpu_sysfs.c
drivers/accel/ivpu/vpu_jsm_api.h