From: "Damien Riégel" <damien.riegel@silabs.com>
To: Andrew Lunn <andrew+netdev@lunn.ch>,
"David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Silicon Labs Kernel Team <linux-devel@silabs.com>,
netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [RFC net-next 00/15] Add support for Silicon Labs CPC
Date: Sun, 11 May 2025 21:27:33 -0400 [thread overview]
Message-ID: <20250512012748.79749-1-damien.riegel@silabs.com> (raw)
Hi,
This patchset brings initial support for Silicon Labs CPC protocol,
standing for Co-Processor Communication. This protocol is used by the
EFR32 Series [1]. These devices offer a variety for radio protocols,
such as Bluetooth, Z-Wave, Zigbee [2].
Some of the devices support several protocols in one chipset, and the
main raison d'etre for CPC is to facilicate the co-existence of these
protocols by providing each radio stack a dedicated communication
channel over a shared physical link, such as SPI or SDIO.
These separate communication channels are called endpoints and the
protocol provides:
- reliability by retransmitting unacknowledged packets. This is not
part of the current patchset
- ordered delivery
- resource management, by avoiding sending packets to the radio
co-processor if it doesn't have the room for receiving them
The current patchset showcases a full example with Bluetooth over SPI.
In the future, other buses should be supported, as well as other radio
protocols.
For the RFC, I've bundled everything together in a big module to avoid
submitting patches to different subsystems, but I expect to get comments
about that and the final version of these series will probably be split
into two or three modules. Please let me know if it makes sense or not:
- net/cpc for the core implementation of the protocol
- drivers/bluetooth/ for the bluetooth endpoint
- optionally, the SPI driver could be separated from the main module
and moved to drivers/spi
I've tried to split the patchset in digestible atomic commits but as
we're introducing a new protocol the first 12 commits are all needed to
get it to work. The SPI and Bluetooth driver are more standalone and
illustrates how new bus or radio protocols would be added in the future.
[1] https://www.silabs.com/wireless/gecko-series-2
[2] https://www.silabs.com/wireless
Damien Riégel (15):
net: cpc: add base skeleton driver
net: cpc: add endpoint infrastructure
net: cpc: introduce CPC driver and bus
net: cpc: add protocol header structure and API
net: cpc: implement basic transmit path
net: cpc: implement basic receive path
net: cpc: implement sequencing and ack
net: cpc: add support for connecting endpoints
net: cpc: add support for RST frames
net: cpc: make disconnect blocking
net: cpc: add system endpoint
net: cpc: create system endpoint with a new interface
dt-bindings: net: cpc: add silabs,cpc-spi.yaml
net: cpc: add SPI interface driver
net: cpc: add Bluetooth HCI driver
.../bindings/net/silabs,cpc-spi.yaml | 54 ++
MAINTAINERS | 6 +
drivers/net/Kconfig | 2 +
drivers/net/Makefile | 1 +
drivers/net/cpc/Kconfig | 16 +
drivers/net/cpc/Makefile | 5 +
drivers/net/cpc/ble.c | 147 +++++
drivers/net/cpc/ble.h | 14 +
drivers/net/cpc/cpc.h | 204 +++++++
drivers/net/cpc/endpoint.c | 333 +++++++++++
drivers/net/cpc/header.c | 237 ++++++++
drivers/net/cpc/header.h | 83 +++
drivers/net/cpc/interface.c | 308 ++++++++++
drivers/net/cpc/interface.h | 117 ++++
drivers/net/cpc/main.c | 163 ++++++
drivers/net/cpc/protocol.c | 309 ++++++++++
drivers/net/cpc/protocol.h | 27 +
drivers/net/cpc/spi.c | 550 ++++++++++++++++++
drivers/net/cpc/spi.h | 12 +
drivers/net/cpc/system.c | 432 ++++++++++++++
drivers/net/cpc/system.h | 14 +
21 files changed, 3034 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/silabs,cpc-spi.yaml
create mode 100644 drivers/net/cpc/Kconfig
create mode 100644 drivers/net/cpc/Makefile
create mode 100644 drivers/net/cpc/ble.c
create mode 100644 drivers/net/cpc/ble.h
create mode 100644 drivers/net/cpc/cpc.h
create mode 100644 drivers/net/cpc/endpoint.c
create mode 100644 drivers/net/cpc/header.c
create mode 100644 drivers/net/cpc/header.h
create mode 100644 drivers/net/cpc/interface.c
create mode 100644 drivers/net/cpc/interface.h
create mode 100644 drivers/net/cpc/main.c
create mode 100644 drivers/net/cpc/protocol.c
create mode 100644 drivers/net/cpc/protocol.h
create mode 100644 drivers/net/cpc/spi.c
create mode 100644 drivers/net/cpc/spi.h
create mode 100644 drivers/net/cpc/system.c
create mode 100644 drivers/net/cpc/system.h
--
2.49.0
next reply other threads:[~2025-05-12 1:28 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-12 1:27 Damien Riégel [this message]
2025-05-12 1:27 ` [RFC net-next 01/15] net: cpc: add base skeleton driver Damien Riégel
2025-05-12 2:13 ` Andrew Lunn
2025-05-12 1:27 ` [RFC net-next 02/15] net: cpc: add endpoint infrastructure Damien Riégel
2025-05-12 2:28 ` Andrew Lunn
2025-05-12 1:27 ` [RFC net-next 03/15] net: cpc: introduce CPC driver and bus Damien Riégel
2025-05-12 1:27 ` [RFC net-next 04/15] net: cpc: add protocol header structure and API Damien Riégel
2025-05-12 2:41 ` Andrew Lunn
2025-05-12 1:27 ` [RFC net-next 05/15] net: cpc: implement basic transmit path Damien Riégel
2025-05-12 1:27 ` [RFC net-next 06/15] net: cpc: implement basic receive path Damien Riégel
2025-05-12 1:27 ` [RFC net-next 07/15] net: cpc: implement sequencing and ack Damien Riégel
2025-05-12 1:27 ` [RFC net-next 08/15] net: cpc: add support for connecting endpoints Damien Riégel
2025-05-12 1:27 ` [RFC net-next 09/15] net: cpc: add support for RST frames Damien Riégel
2025-05-12 1:27 ` [RFC net-next 10/15] net: cpc: make disconnect blocking Damien Riégel
2025-05-12 1:27 ` [RFC net-next 11/15] net: cpc: add system endpoint Damien Riégel
2025-05-12 1:27 ` [RFC net-next 12/15] net: cpc: create system endpoint with a new interface Damien Riégel
2025-05-12 1:27 ` [RFC net-next 13/15] dt-bindings: net: cpc: add silabs,cpc-spi.yaml Damien Riégel
2025-05-14 21:38 ` Rob Herring
2025-05-12 1:27 ` [RFC net-next 14/15] net: cpc: add SPI interface driver Damien Riégel
2025-05-12 2:47 ` Andrew Lunn
2025-05-12 1:27 ` [RFC net-next 15/15] net: cpc: add Bluetooth HCI driver Damien Riégel
2025-05-12 17:07 ` [RFC net-next 00/15] Add support for Silicon Labs CPC Andrew Lunn
2025-05-13 21:15 ` Damien Riégel
2025-05-13 21:53 ` Andrew Lunn
2025-05-14 22:52 ` Damien Riégel
2025-05-15 7:49 ` Greg Kroah-Hartman
2025-05-15 15:00 ` Damien Riégel
2025-05-16 7:51 ` Greg Kroah-Hartman
2025-05-16 16:25 ` Damien Riégel
2025-05-18 15:23 ` Andrew Lunn
2025-05-20 1:21 ` Damien Riégel
2025-05-20 13:04 ` Andrew Lunn
2025-05-22 2:46 ` Alex Elder
2025-05-22 2:46 ` Alex Elder
2025-05-22 18:11 ` Andrew Lunn
2025-05-22 2:46 ` Alex Elder
2025-05-23 19:49 ` Damien Riégel
2025-05-23 20:06 ` Andrew Lunn
2025-05-23 20:38 ` Damien Riégel
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=20250512012748.79749-1-damien.riegel@silabs.com \
--to=damien.riegel@silabs.com \
--cc=andrew+netdev@lunn.ch \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-devel@silabs.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.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®