[PATCH v8 08/24] dt-bindings: clock: Add RPMI clock service message proxy bindings
Anup Patel
anup at brainfault.org
Fri Aug 1 01:43:49 PDT 2025
On Thu, Jul 31, 2025 at 10:20 PM Stephen Boyd <sboyd at kernel.org> wrote:
>
> Quoting Anup Patel (2025-07-28 02:19:23)
> > On Sun, Jul 27, 2025 at 11:53 AM Stephen Boyd <sboyd at kernel.org> wrote:
> > >
> > > It's not providing clks? The SBI firmware is not discoverable? Do you
> > > have a pointer to the DTS for this node and the clock controller node in
> > > the next patch? I'd like to understand why this is named a clock
> > > controller when it doesn't provide clks.
> >
> > The firmware driver is not providing clks. Also, the SBI firmware and
> > various SBI extensions are indeed discoverable from supervisor software.
>
> If SBI extensions are discoverable from software why do we need a DT
> binding?
The firmware which implements the SBI MPXY channel needs to
discover the underlying RPMI service group from DT.
Let's say we have only one RPMI shared memory transport between
application processors and platform microcontroller. This RPMI transport
will be shared between M-mode firmware (OpenSBI) and S-mode (Linux).
The OpenSBI will use the following example DT nodes to probe the
mailbox driver and MPXY driver to expose MPXY channel to S-mode.
mb: mailbox at 10080000 {
compatible = "riscv,rpmi-shmem-mbox";
reg = <0x00 0x10080000 0x00 0x10000>,
<0x00 0x10090000 0x00 0x10000>,
<0x00 0x100a0000 0x00 0x10000>;
reg-names = "a2p-req", "p2a-ack", "a2p-doorbell";
#mbox-cells = <0x01>;
riscv,slot-size = <0x40>;
riscv,p2a-doorbell-sysmsi-index = <3>;
};
clock-service {
compatible = "riscv,rpmi-mpxy-clock";
mboxes = <&mb 0x08>;
riscv,sbi-mpxy-channel-id = <0x1001>;
};
Based on the above, Linux will use the following example DT nodes
to probe the Linux MPXY mailbox driver and RPMI clock driver.
mpxy_mbox: sbi-mpxy-mbox {
compatible = "riscv,sbi-mpxy-mbox";
#mbox-cells = <2>;
msi-parent = <&imsic_slevel>;
};
rpmi-clk {
compatible = "riscv,rpmi-clock";
#clock-cells = <1>;
mboxes = <&mpxy_mbox 0x1001 0x0>;
};
I hope the above example DT node provides a better picture
about how DT bindings are used in firmware and Linux.
Regards,
Anup
More information about the linux-riscv
mailing list