| # Copyright (c) 2022 Cypress Semiconductor Corporation (an Infineon company) or |
| # an affiliate of Cypress Semiconductor Corporation |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| description: | |
| Infineon CAT1 Pinctrl container node |
| |
| This is a singleton node responsible for controlling the pin function selection |
| and pin properties. For example, you can use this node to route |
| UART0 RX to a particular port/pin and enable the pull-up resistor on that |
| pin. |
| |
| The node has the 'pinctrl' node label set in SoC's devicetree, |
| so you can modify it like this: |
| |
| &pinctrl { |
| /* Your modifications go here */ |
| }; |
| |
| Pin configuration can also specify the pin properties, for example the |
| 'bias-pull-up' property. Here is a list of the supported standard pin |
| properties: |
| * bias-high-impedance |
| * bias-pull-up |
| * bias-pull-down |
| * drive-open-drain |
| * drive-open-source |
| * drive-push-pull (strong) |
| * input-enable (input-buffer) |
| |
| Infineon CAT1 SoC's devicetree includes a set of pre-defined pin control |
| Nodes, which can be found via MPN dtsi. |
| For example, board cy8cproto_062_4343w uses the CY8C624ABZI_S2D44 part, so |
| board dts (boards\arm\cy8cproto_062_4343w\cy8cproto_062_4343w.dts) includes MPN dts |
| (infineon/psoc6/mpns/CY8C624ABZI_S2D44.dtsi). |
| |
| Each MPN dtsi includes package dtsi (../psoc6_xx/psoc6_xx.yyy-zzz.dtsi), |
| For example, CY8C624ABZI_S2D44 includes "../psoc6_02/psoc6_02.124-bga.dtsi". |
| |
| An example of pre-defined pin control from package dtsi (e.g. psoc6_02.124-bga.dtsi): |
| p3_0_scb2_uart_rx - RX pin UART2 (SCB2) which connected to port3.0 |
| |
| /omit-if-no-ref/ p3_0_scb2_uart_rx: p3_0_scb2_uart_rx { |
| pinmux = <DT_CAT1_PINMUX(3, 0, HSIOM_SEL_ACT_6)>; |
| }; |
| |
| Refer to psoc6_02.124-bga.dtsi for the list of all pre-defined pin control nodes. |
| |
| NOTE1 Pre-defined pin control nodes use macro DT_CAT1_PINMUX to |
| initialize pinmux. DT_CAT1_PINMUX has the following input parameters |
| DT_CAT1_PINMUX(port_number, pin_number, hsiom), |
| hsiom is defined in the HSIOM_SEL_xxx macros in the |
| zephyr\include\zephyr\dt-bindings\pinctrl\ifx_cat1-pinctrl.h file. |
| |
| You can use DT_CAT1_PINMUX to define your own pin control node: |
| &pinctrl { |
| my_uart_rx: my_uart_rx { |
| pinmux = <DT_CAT1_PINMUX(3, 0, HSIOM_SEL_ACT_6)>; |
| }; |
| }; |
| |
| NOTE2 Pre-defined pin control nodes do not have bias pin configuration. |
| The bias configuration can be updated in board-pinctrl.dtsi |
| &pinctrl { |
| /* Configure pin control Bias mode for uart2 pins */ |
| p3_1_scb2_uart_tx { |
| drive-push-pull; |
| }; |
| |
| p3_0_scb2_uart_rx { |
| input-enable; |
| }; |
| |
| p3_2_scb2_uart_rts { |
| drive-push-pull; |
| }; |
| |
| p3_3_scb2_uart_cts { |
| input-enable; |
| }; |
| }; |
| |
| An example of the usage of pre-defined pin control nodes in your board's DTS file: |
| |
| &uart5 { |
| pinctrl-0 = <&p5_1_scb5_uart_tx &p5_0_scb5_uart_rx>; |
| pinctrl-names = "default"; |
| }; |
| |
| /* Configure pin control bias mode for uart5 pins */ |
| &p5_1_scb5_uart_tx { |
| drive-push-pull; |
| }; |
| |
| &p5_0_scb5_uart_rx { |
| input-enable; |
| }; |
| |
| compatible: "infineon,cat1-pinctrl" |
| |
| include: base.yaml |
| |
| child-binding: |
| description: This binding gives a base representation of the Infineon CAT1 pins configuration |
| include: |
| - name: pincfg-node.yaml |
| property-allowlist: |
| - bias-high-impedance |
| - bias-pull-down |
| - bias-pull-up |
| - drive-push-pull |
| - drive-open-drain |
| - drive-open-source |
| - input-enable |
| |
| properties: |
| pinmux: |
| description: | |
| Encodes port/pin and alternate function. |
| required: true |
| type: int |