xref: /freebsd-src/sys/contrib/device-tree/Bindings/hwlock/hwlock.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotGeneric hwlock bindings
2*c66ec88fSEmmanuel Vadot=======================
3*c66ec88fSEmmanuel Vadot
4*c66ec88fSEmmanuel VadotGeneric bindings that are common to all the hwlock platform specific driver
5*c66ec88fSEmmanuel Vadotimplementations.
6*c66ec88fSEmmanuel Vadot
7*c66ec88fSEmmanuel VadotPlease also look through the individual platform specific hwlock binding
8*c66ec88fSEmmanuel Vadotdocumentations for identifying any additional properties specific to that
9*c66ec88fSEmmanuel Vadotplatform.
10*c66ec88fSEmmanuel Vadot
11*c66ec88fSEmmanuel Vadothwlock providers:
12*c66ec88fSEmmanuel Vadot=================
13*c66ec88fSEmmanuel Vadot
14*c66ec88fSEmmanuel VadotRequired properties:
15*c66ec88fSEmmanuel Vadot- #hwlock-cells:        Specifies the number of cells needed to represent a
16*c66ec88fSEmmanuel Vadot                        specific lock.
17*c66ec88fSEmmanuel Vadot
18*c66ec88fSEmmanuel Vadothwlock users:
19*c66ec88fSEmmanuel Vadot=============
20*c66ec88fSEmmanuel Vadot
21*c66ec88fSEmmanuel VadotConsumers that require specific hwlock(s) should specify them using the
22*c66ec88fSEmmanuel Vadotproperty "hwlocks", and an optional "hwlock-names" property.
23*c66ec88fSEmmanuel Vadot
24*c66ec88fSEmmanuel VadotRequired properties:
25*c66ec88fSEmmanuel Vadot- hwlocks:              List of phandle to a hwlock provider node and an
26*c66ec88fSEmmanuel Vadot                        associated hwlock args specifier as indicated by
27*c66ec88fSEmmanuel Vadot                        #hwlock-cells. The list can have just a single hwlock
28*c66ec88fSEmmanuel Vadot                        or multiple hwlocks, with each hwlock represented by
29*c66ec88fSEmmanuel Vadot                        a phandle and a corresponding args specifier.
30*c66ec88fSEmmanuel Vadot
31*c66ec88fSEmmanuel VadotOptional properties:
32*c66ec88fSEmmanuel Vadot- hwlock-names:         List of hwlock name strings defined in the same order
33*c66ec88fSEmmanuel Vadot                        as the hwlocks, with one name per hwlock. Consumers can
34*c66ec88fSEmmanuel Vadot                        use the hwlock-names to match and get a specific hwlock.
35*c66ec88fSEmmanuel Vadot
36*c66ec88fSEmmanuel Vadot
37*c66ec88fSEmmanuel Vadot1. Example of a node using a single specific hwlock:
38*c66ec88fSEmmanuel Vadot
39*c66ec88fSEmmanuel VadotThe following example has a node requesting a hwlock in the bank defined by
40*c66ec88fSEmmanuel Vadotthe node hwlock1. hwlock1 is a hwlock provider with an argument specifier
41*c66ec88fSEmmanuel Vadotof length 1.
42*c66ec88fSEmmanuel Vadot
43*c66ec88fSEmmanuel Vadot	node {
44*c66ec88fSEmmanuel Vadot		...
45*c66ec88fSEmmanuel Vadot		hwlocks = <&hwlock1 2>;
46*c66ec88fSEmmanuel Vadot		...
47*c66ec88fSEmmanuel Vadot	};
48*c66ec88fSEmmanuel Vadot
49*c66ec88fSEmmanuel Vadot2. Example of a node using multiple specific hwlocks:
50*c66ec88fSEmmanuel Vadot
51*c66ec88fSEmmanuel VadotThe following example has a node requesting two hwlocks, a hwlock within
52*c66ec88fSEmmanuel Vadotthe hwlock device node 'hwlock1' with #hwlock-cells value of 1, and another
53*c66ec88fSEmmanuel Vadothwlock within the hwlock device node 'hwlock2' with #hwlock-cells value of 2.
54*c66ec88fSEmmanuel Vadot
55*c66ec88fSEmmanuel Vadot	node {
56*c66ec88fSEmmanuel Vadot		...
57*c66ec88fSEmmanuel Vadot		hwlocks = <&hwlock1 2>, <&hwlock2 0 3>;
58*c66ec88fSEmmanuel Vadot		...
59*c66ec88fSEmmanuel Vadot	};
60