From: Ayush Singh <ayush@beagleboard.org>
To: "Damien Riégel" <damien.riegel@silabs.com>,
"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: Tue, 3 Mar 2026 11:55:33 +0530 [thread overview]
Message-ID: <f0b9f2d1-ffa8-4c22-b3be-8efde446dadf@beagleboard.org> (raw)
In-Reply-To: <DGSMSOPS3RG0.3417SB071FTNC@silabs.com>
On 3/3/26 3:27 AM, Damien Riégel wrote:
> 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);
> }
> }
Yes, that's the basic idea. The APIs will probably look a bit different,
but let me see how much info linux greybus module already has.
>> ```
>> +-------------+ +-----------+
>> | 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
I am currently thinking of having a debugfs entry to manually add and
remove modules for the demo I am working on. Generally, I would prefer
not doing continuous polling on linux. But I am thinking of doing the
polling based discovery on the driver probe.
Best Regards,
Ayush Singh
next prev parent reply other threads:[~2026-03-03 6:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-28 13:47 Ayush Singh
2026-03-02 21:57 ` Damien Riégel
2026-03-03 6:25 ` Ayush Singh [this message]
2026-03-28 3:35 ` 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=f0b9f2d1-ffa8-4c22-b3be-8efde446dadf@beagleboard.org \
--to=ayush@beagleboard.org \
--cc=damien.riegel@silabs.com \
--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
all inboxes | Powered by JetHome®