Skip to content

Commit 4461269

Browse files
committed
dt-bindings: opp: Allow opp-supported-hw to contain multiple versions
A single list of versions for a hierarchy of hardware levels is not sufficient in some cases. For example, if the hardware version has two levels, i.e. X.Y and we want an OPP to support only version 2.1 and 1.2, we will set the property as: opp-supported-hw = <0x00000003 0x00000003>; What this also does is enable hardware versions 2.2 and 1.1, which we don't want. Extend the property to accept multiple versions, so we can define the property as: opp-supported-hw = <0x00000002 0x00000001>, <0x00000001 0x00000002>; While at it, also reword the property description. Reported-by: Stephan Gerhold <stephan@gerhold.net> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
1 parent 2c59138 commit 4461269

1 file changed

Lines changed: 32 additions & 21 deletions

File tree

  • Documentation/devicetree/bindings/opp

Documentation/devicetree/bindings/opp/opp.txt

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -154,25 +154,27 @@ Optional properties:
154154
- opp-suspend: Marks the OPP to be used during device suspend. If multiple OPPs
155155
in the table have this, the OPP with highest opp-hz will be used.
156156

157-
- opp-supported-hw: This enables us to select only a subset of OPPs from the
158-
larger OPP table, based on what version of the hardware we are running on. We
159-
still can't have multiple nodes with the same opp-hz value in OPP table.
160-
161-
It's a user defined array containing a hierarchy of hardware version numbers,
162-
supported by the OPP. For example: a platform with hierarchy of three levels
163-
of versions (A, B and C), this field should be like <X Y Z>, where X
164-
corresponds to Version hierarchy A, Y corresponds to version hierarchy B and Z
165-
corresponds to version hierarchy C.
166-
167-
Each level of hierarchy is represented by a 32 bit value, and so there can be
168-
only 32 different supported version per hierarchy. i.e. 1 bit per version. A
169-
value of 0xFFFFFFFF will enable the OPP for all versions for that hierarchy
170-
level. And a value of 0x00000000 will disable the OPP completely, and so we
171-
never want that to happen.
172-
173-
If 32 values aren't sufficient for a version hierarchy, than that version
174-
hierarchy can be contained in multiple 32 bit values. i.e. <X Y Z1 Z2> in the
175-
above example, Z1 & Z2 refer to the version hierarchy Z.
157+
- opp-supported-hw: This property allows a platform to enable only a subset of
158+
the OPPs from the larger set present in the OPP table, based on the current
159+
version of the hardware (already known to the operating system).
160+
161+
Each block present in the array of blocks in this property, represents a
162+
sub-group of hardware versions supported by the OPP. i.e. <sub-group A>,
163+
<sub-group B>, etc. The OPP will be enabled if _any_ of these sub-groups match
164+
the hardware's version.
165+
166+
Each sub-group is a platform defined array representing the hierarchy of
167+
hardware versions supported by the platform. For a platform with three
168+
hierarchical levels of version (X.Y.Z), this field shall look like
169+
170+
opp-supported-hw = <X1 Y1 Z1>, <X2 Y2 Z2>, <X3 Y3 Z3>.
171+
172+
Each level (eg. X1) in version hierarchy is represented by a 32 bit value, one
173+
bit per version and so there can be maximum 32 versions per level. Logical AND
174+
(&) operation is performed for each level with the hardware's level version
175+
and a non-zero output for _all_ the levels in a sub-group means the OPP is
176+
supported by hardware. A value of 0xFFFFFFFF for each level in the sub-group
177+
will enable the OPP for all versions for the hardware.
176178

177179
- status: Marks the node enabled/disabled.
178180

@@ -503,7 +505,6 @@ Example 5: opp-supported-hw
503505
*/
504506
opp-supported-hw = <0xF 0xFFFFFFFF 0xFFFFFFFF>
505507
opp-hz = /bits/ 64 <600000000>;
506-
opp-microvolt = <915000 900000 925000>;
507508
...
508509
};
509510

@@ -516,7 +517,17 @@ Example 5: opp-supported-hw
516517
*/
517518
opp-supported-hw = <0x20 0xff0000ff 0x0000f4f0>
518519
opp-hz = /bits/ 64 <800000000>;
519-
opp-microvolt = <915000 900000 925000>;
520+
...
521+
};
522+
523+
opp-900000000 {
524+
/*
525+
* Supports:
526+
* - All cuts and substrate where process version is 0x2.
527+
* - All cuts and process where substrate version is 0x2.
528+
*/
529+
opp-supported-hw = <0xFFFFFFFF 0xFFFFFFFF 0x02>, <0xFFFFFFFF 0x01 0xFFFFFFFF>
530+
opp-hz = /bits/ 64 <900000000>;
520531
...
521532
};
522533
};

0 commit comments

Comments
 (0)