[PATCH v5 0/5] AX88796C SPI Ethernet Adapter

From: Łukasz Stelmach
Date: Tue Nov 03 2020 - 10:17:45 EST


This is a driver for AX88796C Ethernet Adapter connected in SPI mode as
found on ARTIK5 evaluation board. The driver has been ported from a
v3.10.9 vendor kernel for ARTIK5 board.

Changes in v5:
- coding style (local variable declarations)
- added spi0 node in the DT binding example and removed
interrupt-parent
- removed comp module parameter
- added CONFIG_SPI_AX88796C_COMPRESSION option to set the initial
state of SPI compression
- introduced new ethtool tunable "spi-compression" to controll SPI
transfer compression
- removed unused fields in struct ax88796c_device
- switched from using buffers allocated on stack for SPI transfers
to DMA safe ones embedded in struct ax_spi and allocated with
kmalloc()

Changes in v4:
- fixed compilation problems in asix,ax88796c.yaml and in
ax88796c_main.c introduced in v3

Changes in v3:
- modify vendor-prefixes.yaml in a separate patch
- fix several problems in the dt binding
- removed unnecessary descriptions and properties
- changed the order of entries
- fixed problems with missing defines in the example
- change (1 << N) to BIT(N), left a few (0 << N)
- replace ax88796c_get_link(), ax88796c_get_link_ksettings(),
ax88796c_set_link_ksettings(), ax88796c_nway_reset(),
ax88796c_set_mac_address() with appropriate kernel functions.
- disable PHY auto-polling in MAC and use PHYLIB to track the state
of PHY and configure MAC
- propagate return values instead of returning constants in several
places
- add WARN_ON() for unlocked mutex
- remove local work queue and use the system_wq
- replace phy_connect_direct() with phy_connect() and move
devm_register_netdev() to the end of ax88796c_probe()
(Unlike phy_connect_direct() phy_connect() does not crash if the
network device isn't registered yet.)
- remove error messages on ENOMEM
- move free_irq() to the end of ax88796c_close() to avoid race
condition
- implement flow-control

Changes in v2:
- use phylib
- added DT bindings
- moved #includes to *.c files
- used mutex instead of a semaphore for locking
- renamed some constants
- added error propagation for several functions
- used ethtool for dumping registers
- added control over checksum offloading
- remove vendor specific PM
- removed macaddr module parameter and added support for reading a MAC
address from platform data (e.g. DT)
- removed dependency on SPI from NET_VENDOR_ASIX
- added an entry in the MAINTAINERS file
- simplified logging with appropriate netif_* and netdev_* helpers
- lots of style fixes

Łukasz Stelmach (5):
dt-bindings: vendor-prefixes: Add asix prefix
dt-bindings: net: Add bindings for AX88796C SPI Ethernet Adapter
net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver
ARM: dts: exynos: Add Ethernet to Artik 5 board
ARM: defconfig: Enable ax88796c driver

.../bindings/net/asix,ax88796c.yaml | 73 ++
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
MAINTAINERS | 6 +
arch/arm/boot/dts/exynos3250-artik5-eval.dts | 29 +
arch/arm/configs/exynos_defconfig | 2 +
arch/arm/configs/multi_v7_defconfig | 2 +
drivers/net/ethernet/Kconfig | 1 +
drivers/net/ethernet/Makefile | 1 +
drivers/net/ethernet/asix/Kconfig | 35 +
drivers/net/ethernet/asix/Makefile | 6 +
drivers/net/ethernet/asix/ax88796c_ioctl.c | 235 ++++
drivers/net/ethernet/asix/ax88796c_ioctl.h | 26 +
drivers/net/ethernet/asix/ax88796c_main.c | 1132 +++++++++++++++++
drivers/net/ethernet/asix/ax88796c_main.h | 561 ++++++++
drivers/net/ethernet/asix/ax88796c_spi.c | 109 ++
drivers/net/ethernet/asix/ax88796c_spi.h | 70 +
include/uapi/linux/ethtool.h | 1 +
net/ethtool/common.c | 1 +
18 files changed, 2292 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/asix,ax88796c.yaml
create mode 100644 drivers/net/ethernet/asix/Kconfig
create mode 100644 drivers/net/ethernet/asix/Makefile
create mode 100644 drivers/net/ethernet/asix/ax88796c_ioctl.c
create mode 100644 drivers/net/ethernet/asix/ax88796c_ioctl.h
create mode 100644 drivers/net/ethernet/asix/ax88796c_main.c
create mode 100644 drivers/net/ethernet/asix/ax88796c_main.h
create mode 100644 drivers/net/ethernet/asix/ax88796c_spi.c
create mode 100644 drivers/net/ethernet/asix/ax88796c_spi.h

--
2.26.2