162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci# Copyright 2022 NXP
362306a36Sopenharmony_ci%YAML 1.2
462306a36Sopenharmony_ci---
562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/pinctrl/nxp,s32g2-siul2-pinctrl.yaml#
662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
762306a36Sopenharmony_ci
862306a36Sopenharmony_cititle: NXP S32G2 pin controller
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cimaintainers:
1162306a36Sopenharmony_ci  - Ghennadi Procopciuc <Ghennadi.Procopciuc@oss.nxp.com>
1262306a36Sopenharmony_ci  - Chester Lin <clin@suse.com>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cidescription: |
1562306a36Sopenharmony_ci  S32G2 pinmux is implemented in SIUL2 (System Integration Unit Lite2),
1662306a36Sopenharmony_ci  whose memory map is split into two regions:
1762306a36Sopenharmony_ci    SIUL2_0 @ 0x4009c000
1862306a36Sopenharmony_ci    SIUL2_1 @ 0x44010000
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci  Every SIUL2 region has multiple register types, and here only MSCR and
2162306a36Sopenharmony_ci  IMCR registers need to be revealed for kernel to configure pinmux.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  Please note that some register indexes are reserved in S32G2, such as
2462306a36Sopenharmony_ci  MSCR102-MSCR111, MSCR123-MSCR143, IMCR84-IMCR118 and IMCR398-IMCR429.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciproperties:
2762306a36Sopenharmony_ci  compatible:
2862306a36Sopenharmony_ci    enum:
2962306a36Sopenharmony_ci      - nxp,s32g2-siul2-pinctrl
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  reg:
3262306a36Sopenharmony_ci    description: |
3362306a36Sopenharmony_ci      A list of MSCR/IMCR register regions to be reserved.
3462306a36Sopenharmony_ci      - MSCR (Multiplexed Signal Configuration Register)
3562306a36Sopenharmony_ci        An MSCR register can configure the associated pin as either a GPIO pin
3662306a36Sopenharmony_ci        or a function output pin depends on the selected signal source.
3762306a36Sopenharmony_ci      - IMCR (Input Multiplexed Signal Configuration Register)
3862306a36Sopenharmony_ci        An IMCR register can configure the associated pin as function input
3962306a36Sopenharmony_ci        pin depends on the selected signal source.
4062306a36Sopenharmony_ci    items:
4162306a36Sopenharmony_ci      - description: MSCR registers group 0 in SIUL2_0
4262306a36Sopenharmony_ci      - description: MSCR registers group 1 in SIUL2_1
4362306a36Sopenharmony_ci      - description: MSCR registers group 2 in SIUL2_1
4462306a36Sopenharmony_ci      - description: IMCR registers group 0 in SIUL2_0
4562306a36Sopenharmony_ci      - description: IMCR registers group 1 in SIUL2_1
4662306a36Sopenharmony_ci      - description: IMCR registers group 2 in SIUL2_1
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_cipatternProperties:
4962306a36Sopenharmony_ci  '-pins$':
5062306a36Sopenharmony_ci    type: object
5162306a36Sopenharmony_ci    additionalProperties: false
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci    patternProperties:
5462306a36Sopenharmony_ci      '-grp[0-9]$':
5562306a36Sopenharmony_ci        type: object
5662306a36Sopenharmony_ci        allOf:
5762306a36Sopenharmony_ci          - $ref: pinmux-node.yaml#
5862306a36Sopenharmony_ci          - $ref: pincfg-node.yaml#
5962306a36Sopenharmony_ci        description: |
6062306a36Sopenharmony_ci          Pinctrl node's client devices specify pin muxes using subnodes,
6162306a36Sopenharmony_ci          which in turn use the standard properties below.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci        properties:
6462306a36Sopenharmony_ci          bias-disable: true
6562306a36Sopenharmony_ci          bias-high-impedance: true
6662306a36Sopenharmony_ci          bias-pull-up: true
6762306a36Sopenharmony_ci          bias-pull-down: true
6862306a36Sopenharmony_ci          drive-open-drain: true
6962306a36Sopenharmony_ci          input-enable: true
7062306a36Sopenharmony_ci          output-enable: true
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci          pinmux:
7362306a36Sopenharmony_ci            description: |
7462306a36Sopenharmony_ci              An integer array for representing pinmux configurations of
7562306a36Sopenharmony_ci              a device. Each integer consists of a PIN_ID and a 4-bit
7662306a36Sopenharmony_ci              selected signal source(SSS) as IOMUX setting, which is
7762306a36Sopenharmony_ci              calculated as: pinmux = (PIN_ID << 4 | SSS)
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci          slew-rate:
8062306a36Sopenharmony_ci            description: Supported slew rate based on Fmax values (MHz)
8162306a36Sopenharmony_ci            enum: [83, 133, 150, 166, 208]
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci        additionalProperties: false
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_cirequired:
8662306a36Sopenharmony_ci  - compatible
8762306a36Sopenharmony_ci  - reg
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciadditionalProperties: false
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ciexamples:
9262306a36Sopenharmony_ci  - |
9362306a36Sopenharmony_ci    pinctrl@4009c240 {
9462306a36Sopenharmony_ci        compatible = "nxp,s32g2-siul2-pinctrl";
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci              /* MSCR0-MSCR101 registers on siul2_0 */
9762306a36Sopenharmony_ci        reg = <0x4009c240 0x198>,
9862306a36Sopenharmony_ci              /* MSCR112-MSCR122 registers on siul2_1 */
9962306a36Sopenharmony_ci              <0x44010400 0x2c>,
10062306a36Sopenharmony_ci              /* MSCR144-MSCR190 registers on siul2_1 */
10162306a36Sopenharmony_ci              <0x44010480 0xbc>,
10262306a36Sopenharmony_ci              /* IMCR0-IMCR83 registers on siul2_0 */
10362306a36Sopenharmony_ci              <0x4009ca40 0x150>,
10462306a36Sopenharmony_ci              /* IMCR119-IMCR397 registers on siul2_1 */
10562306a36Sopenharmony_ci              <0x44010c1c 0x45c>,
10662306a36Sopenharmony_ci              /* IMCR430-IMCR495 registers on siul2_1 */
10762306a36Sopenharmony_ci              <0x440110f8 0x108>;
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci        llce-can0-pins {
11062306a36Sopenharmony_ci            llce-can0-grp0 {
11162306a36Sopenharmony_ci                pinmux = <0x2b0>;
11262306a36Sopenharmony_ci                input-enable;
11362306a36Sopenharmony_ci                slew-rate = <208>;
11462306a36Sopenharmony_ci            };
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci            llce-can0-grp1 {
11762306a36Sopenharmony_ci                pinmux = <0x2c2>;
11862306a36Sopenharmony_ci                output-enable;
11962306a36Sopenharmony_ci                slew-rate = <208>;
12062306a36Sopenharmony_ci            };
12162306a36Sopenharmony_ci        };
12262306a36Sopenharmony_ci    };
12362306a36Sopenharmony_ci...
124