diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
index 30ea76f9..3fd7ef94 100644
--- a/include/libcamera/meson.build
+++ b/include/libcamera/meson.build
@@ -39,6 +39,7 @@ controls_map = {
         'draft': 'control_ids_draft.yaml',
         'rpi/pisp': 'control_ids_rpi.yaml',
         'rpi/vc4': 'control_ids_rpi.yaml',
+        'rkisp1': 'control_ids_rkisp1.yaml',
     },
 
     'properties': {
diff --git a/src/libcamera/control_ids_rkisp1.yaml b/src/libcamera/control_ids_rkisp1.yaml
new file mode 100644
index 00000000..2f29d508
--- /dev/null
+++ b/src/libcamera/control_ids_rkisp1.yaml
@@ -0,0 +1,24 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+#
+# Copyright (C) 2025, Ideas On Board
+#
+# RkISP1 specific control definitions
+---
+# Unless otherwise stated, all controls are bi-directional, i.e. they can be
+# set through Request::controls() and returned out through Request::metadata().
+vendor: rkisp1
+controls:
+  # --- RkISP1 DPF controls ---
+  - DpfEnable:
+      type: bool
+      direction: inout
+      description: |
+        Enable or disable the Denoise Pre-Filter (DPF) block.
+
+        When disabled (false) the hardware DPF is forced off regardless of
+        tuning or ISO level selection. When enabled (true) the algorithm may
+        program parameters and adapt them per ISO band or manual overrides.
+
+        Reported in metadata as a boolean.
+
+...
diff --git a/src/libcamera/control_ranges.yaml b/src/libcamera/control_ranges.yaml
index 6752eb98..fc60de80 100644
--- a/src/libcamera/control_ranges.yaml
+++ b/src/libcamera/control_ranges.yaml
@@ -15,6 +15,8 @@ ranges:
   rpi: 20000
   # Controls for debug metadata
   debug: 30000
-  # Next range starts at 40000
+  # RkISP1 vendor controls
+  rkisp1: 40000
+  # Next range starts at 50000
 
 ...
