77 lines
3.2 KiB
YAML
77 lines
3.2 KiB
YAML
# 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.
|