mbox series

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

Message ID 20240512183247.2190242-1-michael.nemanov@ti.com
Headers show
Series wifi: cc33xx: Add driver for new TI CC33xx wireless device family | expand

Message

Nemanov, Michael May 12, 2024, 6:32 p.m. UTC
From: Michael Nemanov <michael.nemanov@ti.com>

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. Device tree binding documentation
2. BLE support

This work is presented as an RFC with the intention of being made into a patch after initial 
feedback is addressed.

[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, Sabeeh Khan
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 debugfs.c, debugfs.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

 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      | 1295 +++++
 drivers/net/wireless/ti/cc33xx/acx.h      |  961 ++++
 drivers/net/wireless/ti/cc33xx/boot.c     |  362 ++
 drivers/net/wireless/ti/cc33xx/boot.h     |   23 +
 drivers/net/wireless/ti/cc33xx/cc33xx.h   |  480 ++
 drivers/net/wireless/ti/cc33xx/cc33xx_i.h |  458 ++
 drivers/net/wireless/ti/cc33xx/cmd.c      | 2037 +++++++
 drivers/net/wireless/ti/cc33xx/cmd.h      |  699 +++
 drivers/net/wireless/ti/cc33xx/conf.h     | 1245 +++++
 drivers/net/wireless/ti/cc33xx/debug.h    |   91 +
 drivers/net/wireless/ti/cc33xx/debugfs.c  | 2201 ++++++++
 drivers/net/wireless/ti/cc33xx/debugfs.h  |   91 +
 drivers/net/wireless/ti/cc33xx/event.c    |  391 ++
 drivers/net/wireless/ti/cc33xx/event.h    |   70 +
 drivers/net/wireless/ti/cc33xx/init.c     |  241 +
 drivers/net/wireless/ti/cc33xx/init.h     |   14 +
 drivers/net/wireless/ti/cc33xx/io.c       |  130 +
 drivers/net/wireless/ti/cc33xx/io.h       |   25 +
 drivers/net/wireless/ti/cc33xx/main.c     | 6013 +++++++++++++++++++++
 drivers/net/wireless/ti/cc33xx/ps.c       |  116 +
 drivers/net/wireless/ti/cc33xx/ps.h       |   15 +
 drivers/net/wireless/ti/cc33xx/rx.c       |  394 ++
 drivers/net/wireless/ti/cc33xx/rx.h       |   85 +
 drivers/net/wireless/ti/cc33xx/scan.c     |  763 +++
 drivers/net/wireless/ti/cc33xx/scan.h     |  363 ++
 drivers/net/wireless/ti/cc33xx/sdio.c     |  576 ++
 drivers/net/wireless/ti/cc33xx/testmode.c |  358 ++
 drivers/net/wireless/ti/cc33xx/testmode.h |   11 +
 drivers/net/wireless/ti/cc33xx/tx.c       | 1419 +++++
 drivers/net/wireless/ti/cc33xx/tx.h       |  159 +
 34 files changed, 21122 insertions(+)
 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/debugfs.c
 create mode 100644 drivers/net/wireless/ti/cc33xx/debugfs.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: 83127ecada257e27f4740dbca9644dd0e838bc36

Comments

Kalle Valo May 13, 2024, 6:42 a.m. UTC | #1
<michael.nemanov@ti.com> writes:

> From: Michael Nemanov <michael.nemanov@ti.com>
>
> 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.

I didn't review this yet but decided to do some build testing and it
doesn't even build:

drivers/net/wireless/ti/cc33xx/debugfs.c: In function 'cc33xx_debugfs_add_files_helper':
drivers/net/wireless/ti/cc33xx/debugfs.h:37:37: error: 'cc' undeclared (first use in this function)

I also see some warnings from GCC. I pushed the patches to a pending
branch so most likely you get reports from kbuild bot:

https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git/log/?h=pending
Nemanov, Michael May 13, 2024, 11:27 a.m. UTC | #2
On 5/13/2024 9:42 AM, Kalle Valo wrote:
[...]
> I didn't review this yet but decided to do some build testing and it
> doesn't even build:
>
> drivers/net/wireless/ti/cc33xx/debugfs.c: In function 'cc33xx_debugfs_add_files_helper':
> drivers/net/wireless/ti/cc33xx/debugfs.h:37:37: error: 'cc' undeclared (first use in this function)
>
> I also see some warnings from GCC. I pushed the patches to a pending
> branch so most likely you get reports from kbuild bot:

[...]

Sorry, I did not test with CONFIG_CFG80211_CERTIFICATION_ONUS=y and 
missed it. I will also make sure to build with W=1 and fix everything it 
throws.