Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH wireless-next v2 00/31] wifi: mm81x: add mm81x driver
@ 2026-04-30  4:55 Lachlan Hodges
  2026-04-30  4:55 ` [PATCH wireless-next v2 01/31] wifi: mm81x: add bus.h Lachlan Hodges
                   ` (31 more replies)
  0 siblings, 32 replies; 36+ messages in thread
From: Lachlan Hodges @ 2026-04-30  4:55 UTC (permalink / raw)
  To: johannes
  Cc: arien.judge, dan.callaghan, ayman.grais, linux-wireless,
	Lachlan Hodges

This series adds the first Wi-Fi HaLow driver to support the Morse
Micro mm81x chip family via USB and SDIO.

S1G support in the kernel is only new, and as a result this driver has
been scoped to be simple and only support station and AP interface.
The Wi-Fi specific features only cover the minimum required for basic
use such as powersave, aggregation, rate control and so on. The driver
will be extended into the future as S1G support for operations such as
ACS, channel switching and so on are added into the wireless stack.

The driver contains two checkpatch CHECK;s for a static rate array
and a line length of 81 using the same ignore list as the wireless
checkpatch NIPA bot with the exception of OPEN_ENDED_LINE which has
been added.

The driver has been build tested on a long list of architectures and
compilers via Intels LKP.

The driver currently supports IEEE80211-2024 US channels only, with
AU 2020 also available. In order for this to be expanded additional
non-trivial kernel work is required which will begin once the
driver is upstream.

BCFs (Board Files):

https://github.com/MorseMicro/morse-firmware/tree/65ca270dac4ad70d009db6c50b26502177aae9e4/bcf/morsemicro

Every module SHOULD have OTP programmed and the driver will
automatically select the appropriate BCF for the module via the
boardtype symlink. For debugging purposes, or in rare cases where
a module does NOT have the board type programmed, a module parameter
exists to set the bcf accordingly.

Firmware:

https://github.com/MorseMicro/morse-firmware/blob/65ca270dac4ad70d009db6c50b26502177aae9e4/firmware/mm8108b2-rl.bin

Changes since v1:

- move the SDIO ID patch to before the sdio.c
- remove B1 SDIO ID
- significant cleanup and refactor of sdio.c
- make use of module_sdio_driver and module_usb_driver
- refactor core as a separate module such that we now have mm81x_core,
  mm81x_sdio and mm81x_usb
- remove the debug print abstraction, use the existing dev_dbg and
  friends
- remove the global mors->lock since everything was already under
  wiphy lock anyway
- removed UNUSED macro
- remove ret=0 assignment in a few places
- use ieee80211_rx_ni instead of the irq safe version to reduce a level
  of worker indirection
- remove the broadcast management frame lookup, let mac80211 handle it
- emulate chanctx
- remove wrappers around BIT and friends from mmrc
- removed outdated (and unneeded) USB comment
- rename the private struct from 'mm' to 'mors' and friends (mm_vif ->
  mors_vif, mm_sta -> mors_sta etc.)
- move the creation / retrieval of mac address into core.c
- remove noisy logs from both usb and sdio probe
- remove some WARNs from sdio.c and usb.c
- remove device tree bindings and any of associated code from sdio.c
- remove SDIO powersave functionality
- use designated initialisers for initialising commands
- remove some unused response arguments when tx'ing commands

v1: https://lore.kernel.org/linux-wireless/20260227041108.66508-1-lachlan.hodges@morsemicro.com/

The driver has had many authors who are listed below in
alphabetical order:

Signed-off-by: Andrew Pope andrew.pope@morsemicro.com
Signed-off-by: Arien Judge arien.judge@morsemicro.com
Signed-off-by: Ayman Grais ayman.grais@morsemicro.com
Signed-off-by: Bassem Dawood bassem@morsemicro.com
Signed-off-by: Chetan Mistry chetan.mistry@morsemicro.com
Signed-off-by: Dan Callaghan dan.callaghan@morsemicro.com
Signed-off-by: James Herbert james.herbert@morsemicro.com
Signed-off-by: Sahand Maleki sahand.maleki@morsemicro.com
Signed-off-by: Simon Wadsworth simon@morsemicro.com
Signed-off-by: Lachlan Hodges lachlan.hodges@morsemicro.com

Lachlan Hodges (31):
  wifi: mm81x: add bus.h
  wifi: mm81x: add command.c
  wifi: mm81x: add command_defs.h
  wifi: mm81x: add command.h
  wifi: mm81x: add core.c
  wifi: mm81x: add core.h
  wifi: mm81x: add fw.c
  wifi: mm81x: add fw.h
  wifi: mm81x: add hif.h
  wifi: mm81x: add hw.c
  wifi: mm81x: add hw.h
  wifi: mm81x: add mac.c
  wifi: mm81x: add mac.h
  wifi: mm81x: add mmrc.c
  wifi: mm81x: add mmrc.h
  wifi: mm81x: add ps.c
  wifi: mm81x: add ps.h
  wifi: mm81x: add rate_code.h
  wifi: mm81x: add rc.c
  wifi: mm81x: add rc.h
  mmc: sdio: add Morse Micro vendor ids
  wifi: mm81x: add sdio.c
  wifi: mm81x: add skbq.c
  wifi: mm81x: add skbq.h
  wifi: mm81x: add usb.c
  wifi: mm81x: add yaps.c
  wifi: mm81x: add yaps.h
  wifi: mm81x: add yaps_hw.c
  wifi: mm81x: add yaps_hw.h
  wifi: mm81x: add Kconfig and Makefile
  wifi: mm81x: add MAINTAINERS entry

 MAINTAINERS                                   |    8 +
 drivers/net/wireless/Kconfig                  |    1 +
 drivers/net/wireless/Makefile                 |    1 +
 drivers/net/wireless/morsemicro/Kconfig       |   15 +
 drivers/net/wireless/morsemicro/Makefile      |    2 +
 drivers/net/wireless/morsemicro/mm81x/Kconfig |   24 +
 .../net/wireless/morsemicro/mm81x/Makefile    |   21 +
 drivers/net/wireless/morsemicro/mm81x/bus.h   |   99 +
 .../net/wireless/morsemicro/mm81x/command.c   |  569 ++++
 .../net/wireless/morsemicro/mm81x/command.h   |   85 +
 .../wireless/morsemicro/mm81x/command_defs.h  | 1658 +++++++++++
 drivers/net/wireless/morsemicro/mm81x/core.c  |  146 +
 drivers/net/wireless/morsemicro/mm81x/core.h  |  478 ++++
 drivers/net/wireless/morsemicro/mm81x/fw.c    |  744 +++++
 drivers/net/wireless/morsemicro/mm81x/fw.h    |  107 +
 drivers/net/wireless/morsemicro/mm81x/hif.h   |  117 +
 drivers/net/wireless/morsemicro/mm81x/hw.c    |  365 +++
 drivers/net/wireless/morsemicro/mm81x/hw.h    |  176 ++
 drivers/net/wireless/morsemicro/mm81x/mac.c   | 2444 +++++++++++++++++
 drivers/net/wireless/morsemicro/mm81x/mac.h   |   69 +
 drivers/net/wireless/morsemicro/mm81x/mmrc.c  | 1354 +++++++++
 drivers/net/wireless/morsemicro/mm81x/mmrc.h  |  193 ++
 drivers/net/wireless/morsemicro/mm81x/ps.c    |  120 +
 drivers/net/wireless/morsemicro/mm81x/ps.h    |   22 +
 .../net/wireless/morsemicro/mm81x/rate_code.h |  177 ++
 drivers/net/wireless/morsemicro/mm81x/rc.c    |  556 ++++
 drivers/net/wireless/morsemicro/mm81x/rc.h    |   57 +
 drivers/net/wireless/morsemicro/mm81x/sdio.c  |  614 +++++
 drivers/net/wireless/morsemicro/mm81x/skbq.c  | 1053 +++++++
 drivers/net/wireless/morsemicro/mm81x/skbq.h  |  218 ++
 drivers/net/wireless/morsemicro/mm81x/usb.c   |  938 +++++++
 drivers/net/wireless/morsemicro/mm81x/yaps.c  |  704 +++++
 drivers/net/wireless/morsemicro/mm81x/yaps.h  |   77 +
 .../net/wireless/morsemicro/mm81x/yaps_hw.c   |  684 +++++
 .../net/wireless/morsemicro/mm81x/yaps_hw.h   |   52 +
 include/linux/mmc/sdio_ids.h                  |    3 +
 36 files changed, 13951 insertions(+)
 create mode 100644 drivers/net/wireless/morsemicro/Kconfig
 create mode 100644 drivers/net/wireless/morsemicro/Makefile
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/Kconfig
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/Makefile
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/bus.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/command.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/command.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/command_defs.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/core.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/core.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/fw.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/fw.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/hif.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/hw.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/hw.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/mac.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/mac.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/mmrc.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/mmrc.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/ps.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/ps.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/rate_code.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/rc.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/rc.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/sdio.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/skbq.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/skbq.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/usb.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/yaps.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/yaps.h
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/yaps_hw.c
 create mode 100644 drivers/net/wireless/morsemicro/mm81x/yaps_hw.h

-- 
2.43.0


^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2026-05-11 14:54 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-30  4:55 [PATCH wireless-next v2 00/31] wifi: mm81x: add mm81x driver Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 01/31] wifi: mm81x: add bus.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 02/31] wifi: mm81x: add command.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 03/31] wifi: mm81x: add command_defs.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 04/31] wifi: mm81x: add command.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 05/31] wifi: mm81x: add core.c Lachlan Hodges
2026-05-01  5:45   ` Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 06/31] wifi: mm81x: add core.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 07/31] wifi: mm81x: add fw.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 08/31] wifi: mm81x: add fw.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 09/31] wifi: mm81x: add hif.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 10/31] wifi: mm81x: add hw.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 11/31] wifi: mm81x: add hw.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 12/31] wifi: mm81x: add mac.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 13/31] wifi: mm81x: add mac.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 14/31] wifi: mm81x: add mmrc.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 15/31] wifi: mm81x: add mmrc.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 16/31] wifi: mm81x: add ps.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 17/31] wifi: mm81x: add ps.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 18/31] wifi: mm81x: add rate_code.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 19/31] wifi: mm81x: add rc.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 20/31] wifi: mm81x: add rc.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 21/31] mmc: sdio: add Morse Micro vendor ids Lachlan Hodges
2026-05-11 14:54   ` Ulf Hansson
2026-04-30  4:55 ` [PATCH wireless-next v2 22/31] wifi: mm81x: add sdio.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 23/31] wifi: mm81x: add skbq.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 24/31] wifi: mm81x: add skbq.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 25/31] wifi: mm81x: add usb.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 26/31] wifi: mm81x: add yaps.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 27/31] wifi: mm81x: add yaps.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 28/31] wifi: mm81x: add yaps_hw.c Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 29/31] wifi: mm81x: add yaps_hw.h Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 30/31] wifi: mm81x: add Kconfig and Makefile Lachlan Hodges
2026-04-30  4:55 ` [PATCH wireless-next v2 31/31] wifi: mm81x: add MAINTAINERS entry Lachlan Hodges
2026-04-30  5:43 ` [PATCH wireless-next v2 00/31] wifi: mm81x: add mm81x driver Lachlan Hodges
2026-04-30  6:09   ` Johannes Berg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox