[PATCH net-next v2 0/2] nfc: s3fwrn5: support the S3NRN4V variant
From: Jorijn van der Graaf
Date: Sun Jul 05 2026 - 15:07:22 EST
This adds support for the Samsung S3NRN4V, an S3FWRN5-family NFC
controller found e.g. on the Fairphone 6 (SM7635), to the s3fwrn5
driver.
The S3NRN4V differs from the already-supported parts in three ways: it
ships with working firmware behind a bootloader protocol the driver
does not implement (so firmware download is skipped), it loads its RF
registers through a different proprietary command (DUAL_OPTION), and it
gates its reference clock through a CLK_REQ line that the driver must
service for the chip to be able to generate the 13.56 MHz poll carrier.
Patch 1 adds the compatible and the clk-req-gpios property to the
binding; patch 2 implements the variant in the driver.
Tested on a Fairphone 6 running a milos-mainline kernel: reader mode polls
and reads ISO 14443-4 tags reliably, both from a fresh boot and across
driver reloads.
Changes in v2:
- Drop the -i2c bus suffix from the new compatible: it is now plain
samsung,s3nrn4v (Requested by: Conor Dooley).
- Close a race in the probe-time CLK_REQ seeding by reading the GPIO
level under clk_lock, so a stale level can never overwrite a fresher
state applied by the irq thread (found by the Sashiko AI review of
v1).
- Binding completeness: document the PVDD supply (required for the
S3NRN4V), add an S3NRN4V example exercising the new properties, make
clk-req-gpios depend on clocks, and describe the CLK_REQ pin in
hardware terms.
- Rework the binding commit message: justify the GPIO modelling in
hardware terms and explain why no fallback compatible applies.
- Add an s3nrn4v i2c_device_id entry carrying the variant so both
match paths agree, and describe the of_match_ptr() removal in the
driver commit message.
- Reject malformed rfreg blobs (word alignment, single-byte section
index bound) up front instead of failing at STOP_UPDATE.
- Handle gpiod_get_value_cansleep() failure in the CLK_REQ sync
instead of treating an error as "clock off".
v1: https://lore.kernel.org/20260703202601.78563-1-jorijnvdgraaf@xxxxxxxxxxxxx
Jorijn van der Graaf (2):
dt-bindings: net: nfc: samsung,s3fwrn5: add S3NRN4V and clk-req-gpios
nfc: s3fwrn5: support the S3NRN4V variant
.../bindings/net/nfc/samsung,s3fwrn5.yaml | 65 ++++++++-
drivers/nfc/s3fwrn5/core.c | 40 ++++-
drivers/nfc/s3fwrn5/i2c.c | 138 ++++++++++++++++--
drivers/nfc/s3fwrn5/nci.c | 119 ++++++++++++++-
drivers/nfc/s3fwrn5/nci.h | 32 +++-
drivers/nfc/s3fwrn5/s3fwrn5.h | 14 +-
drivers/nfc/s3fwrn5/uart.c | 2 +-
7 files changed, 394 insertions(+), 16 deletions(-)
base-commit: 805185b7c7a1069e407b6f7b3bc98e44d415f484
--
2.55.0