mbox series

[00/17] wifi: cc33xx: Add driver for new TI CC33xx wireless device family

Message ID 20240521171841.884576-1-michael.nemanov@ti.com (mailing list archive)
Headers show
Series wifi: cc33xx: Add driver for new TI CC33xx wireless device family | expand

Message

Nemanov, Michael May 21, 2024, 5:18 p.m. UTC
From: Michael Nemanov <michael.nemanov@ti.com>

Hello everyone,

This series adds support for CC33xx which is a new family of WLAN IEEE802.11 a/b/g/n/ax
and BLE 5.4 transceivers by Texas Instruments. These devices are 20MHz single spatial stream
enabling STA (IEEE802.11ax) and AP (IEEE802.11n only) roles as well as both roles simultaneously.
Communication to the CC33xx is done via 4-bit SDIO with two extra GPIOs: Enable and Interrupt.

Data sheet: https://www.ti.com/lit/gpn/cc3301

This driver's architecture is a soft-MAC and derivative of existing wl18xx + wlcore code [1].
It has been tested with the AM335x, AM625x, and i.MX8-MP evaluation kits.

All code passes sparse and checkpatch with very few pragmatic exceptions.

Known gaps to be addressed in following patches:
1. BLE support

Test log:
https://0x0.st/XPUd.log

Change log:
v1:
* Added dt-bindings
* Removed debugfs to ease review
* Fix build issue with CONFIG_CFG80211_CERTIFICATION_ONUS
* Fix multiple build warnings found with Clang 18 and W=12

RFC: https://lore.kernel.org/linux-wireless/20240512183247.2190242-1-michael.nemanov@ti.com/


[1] It was considered implementing CC33xx as another user of wlcore but The
differences in HW, host interface, IRQ functionality, Rx/Tx behavior and supported features
were too significant so this was abandoned.

Michael Nemanov
Texas Instruments

Michael Nemanov (17):
  Add cc33xx.h, cc33xx_i.h
  Add debug.h
  Add sdio.c, io.c, io.h
  Add cmd.c, cmd.h
  Add acx.c, acx.h
  Add event.c, event.h
  Add boot.c, boot.h
  Add main.c
  Add rx.c, rx.h
  Add tx.c, tx.h
  Add init.c, init.h
  Add scan.c, scan.h
  Add conf.h
  Add ps.c, ps.h
  Add testmode.c, testmode.h
  Add Kconfig, Makefile and integrate into wireless/ti folder
  Add ti,cc33xx.yaml

 .../bindings/net/wireless/ti,cc33xx.yaml      |   60 +
 drivers/net/wireless/ti/Kconfig               |    1 +
 drivers/net/wireless/ti/Makefile              |    1 +
 drivers/net/wireless/ti/cc33xx/Kconfig        |   24 +
 drivers/net/wireless/ti/cc33xx/Makefile       |   10 +
 drivers/net/wireless/ti/cc33xx/acx.c          | 1009 +++
 drivers/net/wireless/ti/cc33xx/acx.h          |  835 +++
 drivers/net/wireless/ti/cc33xx/boot.c         |  363 +
 drivers/net/wireless/ti/cc33xx/boot.h         |   24 +
 drivers/net/wireless/ti/cc33xx/cc33xx.h       |  481 ++
 drivers/net/wireless/ti/cc33xx/cc33xx_i.h     |  459 ++
 drivers/net/wireless/ti/cc33xx/cmd.c          | 2033 ++++++
 drivers/net/wireless/ti/cc33xx/cmd.h          |  700 ++
 drivers/net/wireless/ti/cc33xx/conf.h         | 1246 ++++
 drivers/net/wireless/ti/cc33xx/debug.h        |   92 +
 drivers/net/wireless/ti/cc33xx/event.c        |  389 ++
 drivers/net/wireless/ti/cc33xx/event.h        |   71 +
 drivers/net/wireless/ti/cc33xx/init.c         |  236 +
 drivers/net/wireless/ti/cc33xx/init.h         |   15 +
 drivers/net/wireless/ti/cc33xx/io.c           |  131 +
 drivers/net/wireless/ti/cc33xx/io.h           |   26 +
 drivers/net/wireless/ti/cc33xx/main.c         | 5949 +++++++++++++++++
 drivers/net/wireless/ti/cc33xx/ps.c           |  117 +
 drivers/net/wireless/ti/cc33xx/ps.h           |   16 +
 drivers/net/wireless/ti/cc33xx/rx.c           |  393 ++
 drivers/net/wireless/ti/cc33xx/rx.h           |   86 +
 drivers/net/wireless/ti/cc33xx/scan.c         |  756 +++
 drivers/net/wireless/ti/cc33xx/scan.h         |  364 +
 drivers/net/wireless/ti/cc33xx/sdio.c         |  581 ++
 drivers/net/wireless/ti/cc33xx/testmode.c     |  357 +
 drivers/net/wireless/ti/cc33xx/testmode.h     |   12 +
 drivers/net/wireless/ti/cc33xx/tx.c           | 1416 ++++
 drivers/net/wireless/ti/cc33xx/tx.h           |  160 +
 33 files changed, 18413 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/wireless/ti,cc33xx.yaml
 create mode 100644 drivers/net/wireless/ti/cc33xx/Kconfig
 create mode 100644 drivers/net/wireless/ti/cc33xx/Makefile
 create mode 100644 drivers/net/wireless/ti/cc33xx/acx.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/acx.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/boot.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/boot.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/cc33xx.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/cc33xx_i.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/cmd.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/cmd.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/conf.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/debug.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/event.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/event.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/init.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/init.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/io.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/io.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/main.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/ps.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/ps.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/rx.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/rx.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/scan.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/scan.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/sdio.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/testmode.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/testmode.h
 create mode 100644 drivers/net/wireless/ti/cc33xx/tx.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/tx.h


base-commit: 2785ea9673a7305abeea87111849a4e04b0f4626

Comments

Kalle Valo May 23, 2024, 7:15 a.m. UTC | #1
<michael.nemanov@ti.com> writes:

> From: Michael Nemanov <michael.nemanov@ti.com>
>
> Hello everyone,
>
> This series adds support for CC33xx which is a new family of WLAN
> IEEE802.11 a/b/g/n/ax and BLE 5.4 transceivers by Texas Instruments.
> These devices are 20MHz single spatial stream enabling STA
> (IEEE802.11ax) and AP (IEEE802.11n only) roles as well as both roles
> simultaneously. Communication to the CC33xx is done via 4-bit SDIO
> with two extra GPIOs: Enable and Interrupt.
>
> Data sheet: https://www.ti.com/lit/gpn/cc3301
>
> This driver's architecture is a soft-MAC and derivative of existing
> wl18xx + wlcore code [1]. It has been tested with the AM335x, AM625x,
> and i.MX8-MP evaluation kits.
>
> All code passes sparse and checkpatch with very few pragmatic exceptions.
>
> Known gaps to be addressed in following patches:
> 1. BLE support
>
> Test log:
> https://0x0.st/XPUd.log
>
> Change log:
> v1:
> * Added dt-bindings
> * Removed debugfs to ease review
> * Fix build issue with CONFIG_CFG80211_CERTIFICATION_ONUS
> * Fix multiple build warnings found with Clang 18 and W=12
>
> RFC: https://lore.kernel.org/linux-wireless/20240512183247.2190242-1-michael.nemanov@ti.com/
>
>
> [1] It was considered implementing CC33xx as another user of wlcore
> but The differences in HW, host interface, IRQ functionality, Rx/Tx
> behavior and supported features were too significant so this was
> abandoned.

The community (myself included) has been frustrated that TI has dropped
the ball on their existing wireless drivers:

https://docs.kernel.org/process/maintainers.html#ti-wilink-wireless-drivers

This kind of behaviour is not exactly building trust. So how is this
driver going to be any different?
Nemanov, Michael May 24, 2024, 7:48 a.m. UTC | #2
On 5/23/2024 10:15 AM, Kalle Valo wrote:
> The community (myself included) has been frustrated that TI has dropped
> the ball on their existing wireless drivers:
>
> https://docs.kernel.org/process/maintainers.html#ti-wilink-wireless-drivers
>
> This kind of behaviour is not exactly building trust. So how is this
> driver going to be any different?

I understand the frustration. As the engineer leading the development of 
the CC33xx driver I can say that CC3300 and CC3301 are the first in a 
family whose roadmap goes beyond 2030. I can also say that Linux driver 
support is foundational for this line of products and TI is committed to 
supporting these devices in the linux-wireless community for at least 10 
years. Unlike previous drivers, development and maintenance of CC33xx 
will be done by TI engineers and not a 3rd party. Is this acceptable?

Michael.