dts: add binding for nrf-gpio-forwarder
In nRF53 family of SoCs, GPIO pins must be explicitly forwarded by the application core to the network core if the latter should drive them. Add a binding of a generic GPIO pin forwarder. Signed-off-by: Jedrzej Ciupis <jedrzej.ciupis@nordicsemi.no>
This commit is contained in:
parent
52bee41bba
commit
a0c868d94b
76
dts/bindings/gpio/nordic,nrf-gpio-forwarder.yaml
Normal file
76
dts/bindings/gpio/nordic,nrf-gpio-forwarder.yaml
Normal file
|
@ -0,0 +1,76 @@
|
|||
# Copyright (c) 2020 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
description: |
|
||||
This is an abstract device responsible for forwarding pins between cores.
|
||||
|
||||
In nRF53 family of SoCs, GPIO pins must be explicitly forwarded by
|
||||
the application core to the network core if the latter should drive them.
|
||||
The purpose of this abstract device is to represent all GPIO pins that the
|
||||
nRF53 application core should forward to the nRF53 network core.
|
||||
|
||||
Once the control over selected GPIO pins is forwarded to it, the network
|
||||
core is responsible for configuring the pins and driving them as needed.
|
||||
|
||||
Here is an example of how a nrf-gpio-forwarder can be used with a nRF5340
|
||||
combined with a nRF21540 Front-End module. Consider the following node
|
||||
present in DTS file targeted for the nRF5340 network core, which defines
|
||||
the details of the nRF21540 Front-End module's interface:
|
||||
|
||||
nrf_radio_fem: nrf21540 {
|
||||
compatible = "nordic,nrf21540-fem";
|
||||
tx-en-gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
|
||||
rx-en-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
|
||||
pdn-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
|
||||
mode-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
Since the nRF21540 Front-End module should be controlled by the nRF5340
|
||||
network core, all the GPIO pins used to control it must be forwarded by
|
||||
the nRF5340 application core to the network core. Consider the following
|
||||
nrf-gpio-forwarder node defined in DTS file targeted for the nRF5340
|
||||
application core:
|
||||
|
||||
gpio_fwd: nrf-gpio-forwarder {
|
||||
compatible = "nordic,nrf-gpio-forwarder";
|
||||
nrf21540-gpio-if {
|
||||
gpios = <&gpio0 30 0>, <&gpio1 11 0>, <&gpio1 10 0>, <&gpio1 12 0>;
|
||||
};
|
||||
};
|
||||
|
||||
In the above example, the nrf-gpio-forwarder node is configured to forward
|
||||
control over the following GPIO pins to the network core:
|
||||
|
||||
- P0.30 (matching `tx-en-gpios`)
|
||||
- P1.11 (matching `rx-en-gpios`)
|
||||
- P1.10 (matching `pdn-gpios`)
|
||||
- P1.12 (matching `mode-gpios`)
|
||||
|
||||
Please note that the GPIO flags provided for child nodes of the forwarder
|
||||
are ignored. In order to configure the GPIOs passed to the forwarder, their
|
||||
GPIO flags must be set in the matching node that these GPIOs are forwarded
|
||||
to. In the above example, the GPIO flags must be set in the nrf21540 node.
|
||||
They are set to 0 in the nrf-gpio-forwarder node as they are ignored anyway.
|
||||
|
||||
Child nodes for the forwarder can be defined independently by multiple DTS
|
||||
files. They are merged into a single node with multiple child nodes when
|
||||
processing devicetree for an application build. However, in order for that
|
||||
to happen, names of the child nodes must be unique in the scope of a single
|
||||
nrf-gpio-forwarder instance.
|
||||
|
||||
compatible: "nordic,nrf-gpio-forwarder"
|
||||
|
||||
include: "base.yaml"
|
||||
|
||||
child-binding:
|
||||
description: Arrays of GPIOs to be forwarded.
|
||||
|
||||
properties:
|
||||
gpios:
|
||||
type: phandle-array
|
||||
required: true
|
||||
description: |
|
||||
Array of GPIOs to be forwarded. Note that GPIO flags provided for
|
||||
elements of this array are ignored. In order to configure the GPIOs
|
||||
from this array, their GPIO flags must be set in the matching
|
||||
node that these GPIOs are forwarded to.
|
Loading…
Reference in a new issue