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
7title: Broadcom Northstar pins mux controller
8
9maintainers:
10  - Rafał Miłecki <rafal@milecki.pl>
11
12description:
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
23properties:
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
35patternProperties:
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
57allOf:
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
74required:
75  - offset
76
77additionalProperties: false
78
79examples:
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    };
95