[PATCH v5 1/2] dt-bindings: rng: timeriomem_rng: add reg-io-width and mask properties

From: Jad Keskes

Date: Thu Jun 18 2026 - 08:02:29 EST


Add optional reg-io-width (1, 2, or 4 bytes) and mask properties.
reg-io-width selects the bus access size. mask is ANDed with the raw
register value to allow only the entropy-bearing bits through.

Update the example to show a 1-byte configuration.

Signed-off-by: Jad Keskes <inasj268@xxxxxxxxx>
---
v5:
- Fix description to describe hardware, not the binding
- Drop SPDX dual-license change
- Merge examples into one
v4: Initial version with reg-io-width (replaced custom width from v3)
v3: Changed from custom width to reg-io-width per dt-bindings convention
v2: Split DT binding and driver into separate patches
v1: Initial submission
---
.../bindings/rng/timeriomem_rng.yaml | 50 ++++++++++++++-----
1 file changed, 37 insertions(+), 13 deletions(-)

diff --git a/Documentation/devicetree/bindings/rng/timeriomem_rng.yaml b/Documentation/devicetree/bindings/rng/timeriomem_rng.yaml
index 4754174e9849..7f0068f785b7 100644
--- a/Documentation/devicetree/bindings/rng/timeriomem_rng.yaml
+++ b/Documentation/devicetree/bindings/rng/timeriomem_rng.yaml
@@ -4,7 +4,11 @@
$id: http://devicetree.org/schemas/rng/timeriomem_rng.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

-title: TimerIO Random Number Generator
+title: Timer IOMEM hardware random number generator
+
+description: |
+ A device that provides random data via a single memory-mapped IO register.
+ A new value becomes available at a fixed interval.

maintainers:
- Krzysztof Kozlowski <krzk@xxxxxxxxxx>
@@ -13,29 +17,47 @@ properties:
compatible:
const: timeriomem_rng

+ reg:
+ maxItems: 1
+ description:
+ Base address to sample from. Must be aligned to the configured access
+ width (1, 2, or 4 bytes) and at least that wide.
+
period:
$ref: /schemas/types.yaml#/definitions/uint32
- description: wait time in microseconds to use between samples
+ description:
+ Interval in microseconds between random value updates.

quality:
$ref: /schemas/types.yaml#/definitions/uint32
default: 0
description:
- Estimated number of bits of true entropy per 1024 bits read from the rng.
- Defaults to zero which causes the kernel's default quality to be used
- instead. Note that the default quality is usually zero which disables
- using this rng to automatically fill the kernel's entropy pool.
+ Estimated number of bits of true entropy per 1024 bits read from the
+ device. Defaults to zero which causes the kernel's default quality to
+ be used instead. Note that the default quality is usually zero which
+ disables using this RNG to automatically fill the kernel's entropy
+ pool.

- reg:
- maxItems: 1
+ reg-io-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ default: 4
+ enum: [1, 2, 4]
description:
- Base address to sample from. Currently 'reg' must be at least four bytes
- wide and 32-bit aligned.
+ Access width in bytes. Determines whether the read is performed as
+ an 8-bit, 16-bit, or 32-bit bus access.
+
+ mask:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ default: 0xFFFFFFFF
+ description:
+ Mask applied to the value read from the register. Bits set to 0 in
+ the mask are cleared in the output data. Default (no mask) passes
+ all bits through.

required:
- compatible
- - period
- reg
+ - period

additionalProperties: false

@@ -43,6 +65,8 @@ examples:
- |
rng@44 {
compatible = "timeriomem_rng";
- reg = <0x44 0x04>;
- period = <1000000>;
+ reg = <0x44 0x01>;
+ period = <50000>;
+ reg-io-width = <1>;
+ mask = <0xFF>;
};
--
2.54.0