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