Merge tag 'block-5.14-2021-08-07' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / pinctrl / brcm,ns-pinmux.yaml
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/pinctrl/brcm,ns-pinmux.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Broadcom Northstar pins mux controller
8
9 maintainers:
10   - Rafał Miłecki <rafal@milecki.pl>
11
12 description:
13   Some of Northstar SoCs's pins can be used for various purposes thanks to the
14   mux controller. This binding allows describing mux controller and listing
15   available functions. They can be referenced later by other bindings to let
16   system configure controller correctly.
17
18   A list of pins varies across chipsets so few bindings are available.
19
20   Node of the pinmux must be nested in the CRU (Central Resource Unit) "syscon"
21   node.
22
23 properties:
24   compatible:
25     enum:
26       - brcm,bcm4708-pinmux
27       - brcm,bcm4709-pinmux
28       - brcm,bcm53012-pinmux
29
30   offset:
31     description: offset of pin registers in the CRU block
32     maxItems: 1
33     $ref: /schemas/types.yaml#/definitions/uint32-array
34
35 patternProperties:
36   '-pins$':
37     type: object
38     description: pin node
39     $ref: pinmux-node.yaml#
40
41     properties:
42       function:
43         enum: [ spi, i2c, pwm, uart1, mdio, uart2, sdio ]
44       groups:
45         minItems: 1
46         maxItems: 4
47         items:
48           enum: [ spi_grp, i2c_grp, pwm0_grp, pwm1_grp, pwm2_grp, pwm3_grp,
49                   uart1_grp, mdio_grp, uart2_grp, sdio_pwr_grp, sdio_1p8v_grp ]
50
51     required:
52       - function
53       - groups
54
55     additionalProperties: false
56
57 allOf:
58   - if:
59       properties:
60         compatible:
61           contains:
62             const: brcm,bcm4708-pinmux
63     then:
64       patternProperties:
65         '-pins$':
66           properties:
67             function:
68               enum: [ spi, i2c, pwm, uart1 ]
69             groups:
70               items:
71                 enum: [ spi_grp, i2c_grp, pwm0_grp, pwm1_grp, pwm2_grp, pwm3_grp,
72                         uart1_grp ]
73
74 required:
75   - offset
76
77 additionalProperties: false
78
79 examples:
80   - |
81     cru@1800c100 {
82         compatible = "syscon", "simple-mfd";
83         reg = <0x1800c100 0x1a4>;
84
85         pinctrl {
86             compatible = "brcm,bcm4708-pinmux";
87             offset = <0xc0>;
88
89             spi-pins {
90                 function = "spi";
91                 groups = "spi_grp";
92             };
93         };
94     };