Re: [PATCH v3 1/7] dt-bindings: arm: fsl: add mu binding doc

From: Krzysztof Kozlowski
Date: Fri Jun 16 2023 - 09:21:17 EST


On 16/06/2023 20:11, Pankaj Gupta wrote:
> The NXP i.MX Message Unit enables two processing elements
> to communicate & co-ordinate with each other. This driver
> is used to communicate between Application Core and
> NXP HSM IPs like NXP EdgeLock Enclave etc.
> It exists on some i.MX processors. e.g. i.MX8ULP, i.MX93 etc.
>
> Signed-off-by: Pankaj Gupta <pankaj.gupta@xxxxxxx>

I don't see reply to Daniel's concerns.

I don't see improvements here based on the previous review you received.
It seems you just ignored everything, right?

Limited review follows up because binding is not in the shape for
upstream. Do some internal reviews prior sending it.

> ---
> .../bindings/arm/freescale/fsl,ele_mu.yaml | 144 ++++++++++++++++++
> 1 file changed, 144 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/arm/freescale/fsl,ele_mu.yaml
>
> diff --git a/Documentation/devicetree/bindings/arm/freescale/fsl,ele_mu.yaml b/Documentation/devicetree/bindings/arm/freescale/fsl,ele_mu.yaml
> new file mode 100644
> index 000000000000..29e309a88899
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/arm/freescale/fsl,ele_mu.yaml

No underscores, filename based on compatibles.

> @@ -0,0 +1,144 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/arm/freescale/fsl,ele_mu.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NXP i.MX EdgeLock Enclave MUAP driver

Drop driver.

> +
> +maintainers:
> + - Pankaj Gupta <pankaj.gupta@xxxxxxx>
> +
> +description: |
> +
> + NXP i.MX EdgeLock Enclave Message Unit Driver.
> + The Messaging Unit module enables two processing elements within the SoC to
> + communicate and coordinate by passing messages (e.g., data, status and control)
> + through its interfaces.
> +
> + The NXP i.MX EdgeLock Enclave Message Unit (ELE-MUAP) is specifically targeted
> + for use between application core and Edgelocke Enclave. It allows to send
> + messages to the EL Enclave using a shared mailbox.
> +
> + The messages must follow the protocol defined.
> +
> + Non-Secure + Secure
> + |
> + |
> + +---------+ +-------------+ |
> + | ele_mu.c+<---->+imx-mailbox.c| |
> + | | | mailbox.c +<-->+------+ +------+
> + +---+-----+ +-------------+ | MU X +<-->+ ELE |
> + | +------+ +------+
> + +----------------+ |
> + | | |
> + v v |
> + logical logical |
> + receiver waiter |
> + + + |
> + | | |
> + | | |
> + | +----+------+ |
> + | | | |
> + | | | |
> + device_ctx device_ctx device_ctx |
> + |
> + User 0 User 1 User Y |
> + +------+ +------+ +------+ |
> + |misc.c| |misc.c| |misc.c| |
> + kernel space +------+ +------+ +------+ |
> + |
> + +------------------------------------------------------ |
> + | | | |
> + userspace /dev/ele_muXch0 | | |
> + /dev/ele_muXch1 | |
> + /dev/ele_muXchY |
> + |
> +
> + When a user sends a command to the ELE, it registers its device_ctx as
> + waiter of a response from ELE.
> +
> + A user can be registered as receiver of command from the ELE.
> + Create char devices in /dev as channels of the form /dev/ele_muXchY with X
> + the id of the driver and Y for each users. It allows to send and receive
> + messages to the NXP EdgeLock Enclave IP on NXP SoC, where current possible
> + value, i.e., supported SoC(s) are imx8ulp, imx93.
> +
> +properties:
> + compatible:
> + enum:
> + - fsl,imx-ele
> + - fsl,imx93-ele
> +
> + mboxes:
> + description:
> + A list of phandles of TX MU channels followed by a list of phandles of
> + RX MU channels. The number of expected tx and rx channels is 1 TX, and
> + 1 RX channels. All MU channels must be within the same MU instance.
> + Cross instances are not allowed. The MU instance to be used is S4MUAP
> + for imx8ulp & imx93. Users need to ensure that used MU instance does not
> + conflict with other execution environments.
> + items:
> + - description: TX0 MU channel
> + - description: RX0 MU channel
> +
> + mbox-names:
> + items:
> + - const: tx
> + - const: rx
> +
> + fsl,ele_mu_did:

No underscores. Drop all properties not related to hardware.


> + description:
> + Owner of message-unit, is identified via Domain ID or did.
> + allOf:
> + - $ref: /schemas/types.yaml#/definitions/uint32
> + - enum: [0, 1, 2, 3, 4, 5, 6, 7]

That's not the syntax you can find. Open example-schema and rewrite your
bindings.


> +
> +examples:
> + - |
> + ele_mu: ele_mu {

Node names should be generic. See also explanation and list of examples
in DT specification:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation

> + compatible = "fsl,imx93-ele";
> + mbox-names = "tx", "rx";
> + mboxes = <&s4muap 2 0
> + &s4muap 3 0>;
> + fsl,ele_mu_id = <1>;
> + fsl,ele_max_users = <4>;
> + fsl,cmd_tag = /bits/ 8 <0x17>;
> + fsl,rsp_tag = /bits/ 8 <0xe1>;
> + };

Best regards,
Krzysztof