From: "Damien Riégel" <damien.riegel@silabs.com>
To: "Ayush Singh" <ayush@beagleboard.org>,
"moderated list:GREYBUS SUBSYSTEM" <greybus-dev@lists.linaro.org>,
"open list" <linux-kernel@vger.kernel.org>,
"Johan Hovold" <johan@kernel.org>,
"Alex Elder" <elder@kernel.org>, <linux-devel@silabs.com>,
"Jason Kridner" <jkridner@beagleboard.org>,
"Deepak Khatri" <lorforlinux@beagleboard.org>
Subject: Re: [RFC] greybus: support combined Host + SVC
Date: Mon, 02 Mar 2026 16:57:56 -0500 [thread overview]
Message-ID: <DGSMSOPS3RG0.3417SB071FTNC@silabs.com> (raw)
In-Reply-To: <ecca8eb2-8e5a-4770-bcf6-3fb49773088b@beagleboard.org>
On Sat Feb 28, 2026 at 8:47 AM EST, Ayush Singh wrote:
> 2. SVC per node
>
> Each node implements its own SVC. Since an I²C slave cannot initiate
> communication, the AP must already know the address of each SVC/module.
> This also seems inefficient when chaining multiple nodes.
>
> [...]
>
> 3. SVC/Bridge functionality inside the AP
>
> For this use case, this seems to be the most practical option.
>
> To clarify, I am not proposing any new data paths in the Greybus
> pipeline. The idea is to have a reusable an SVC/bridge implementation
> similar to what exists in greybus-zephyr [2][3], but hosted within the AP.
We discussed internally at Silicon Labs of this solution to get rid of
the SVC on the device but haven't actually implemented it, good to know
that we were not alone. I think it's a great avenue to explore because
it keeps existing SVC code as is, so we keep a single data path in
Greybus' core while offering the capability to handle SVC requests on
the host.
Just to help me get a better mental picture, in hd->message_send you
would either handle the message immediately if cport_id == 0, or convert
that cport_id to an (interface, intf_cport_id) and pass the message to
that interface's cport, something like that?
static int message_send(..., u16 cport_id, struct gb_message *msg, ...)
{
if (cport_id == GB_SVC_CPORT_ID) {
return svc_bridge_handle_msg(msg);
} else {
struct connection *connection = svc_bridge_get_connection(cport_id);
// ... or you could directly look up in hd->connections,
// the whole list of connections is already there, so
// no need to maintain another one separately
// somewhow convert connection->intf to an i2c address
// and use connection->intf_cport_id to address the cport
i2c_transfer(adap, msgs, 1);
}
}
> ```
> +-------------+ +-----------+
> | AP / SVC | <--- I2C ---> | Module |
> +-------------+ +-----------+
> |
> | +----------+
> `-- I2C ---> | Module |
> +----------+
> ```
You mention in point 2 that i2c slaves cannot initiate communication, so
I wonder how you would emulate the "MODULE_INSERTED" that flows from SVC
to the AP. Would your HD poll the bus for connected modules and "send" a
MODULE_INSERTED for each of them?
Besides that, I think it would work fine. I'll be happy to test and
review your patch when ready.
Regards,
damien
next prev parent reply other threads:[~2026-03-02 22:32 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-28 13:47 [RFC] greybus: support combined Host + SVC Ayush Singh
2026-03-02 21:57 ` Damien Riégel [this message]
2026-03-03 6:25 ` Ayush Singh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DGSMSOPS3RG0.3417SB071FTNC@silabs.com \
--to=damien.riegel@silabs.com \
--cc=ayush@beagleboard.org \
--cc=elder@kernel.org \
--cc=greybus-dev@lists.linaro.org \
--cc=jkridner@beagleboard.org \
--cc=johan@kernel.org \
--cc=linux-devel@silabs.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lorforlinux@beagleboard.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox