From: David Heidelberg <david@ixit.cz>
To: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>,
Luca Weiss <luca.weiss@fairphone.com>,
Krzysztof Kozlowski <krzk@kernel.org>
Cc: Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
oe-linux-nfc@lists.linux.dev, netdev@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next v2 2/2] nfc: s3fwrn5: support the S3NRN4V variant
Date: Sun, 19 Jul 2026 16:56:58 +0200 [thread overview]
Message-ID: <5d26f3ae-1287-4440-bd38-96c9900f16ea@ixit.cz> (raw)
In-Reply-To: <20260719142241.12640-1-jorijnvdgraaf@catcrafts.net>
On 19/07/2026 16:22, Jorijn van der Graaf wrote:
> Hello David,
>
> Thank you for the review!
>
> On 19/07/2026 15:15, David Heidelberg wrote:
>> Please, send the "drop the of_match_ptr()/__maybe_unused annotations
>> from it." type of change as part of the series, but as a separate
>> commit before the new HW support introduction.
>
> Will do in v3.
>
>> Since you touch S3FWRN5_I2C_DRIVER_NAME, replace define
>> S3FWRN5_I2C_DRIVER_NAME occurenced with the "s3fwrn5_i2c" directly
>> before introducing the support (also separate commit)
>
> Will do, also in v3.
>
>> is S3NRN4V really a variant of S3FWRN5 or is it just S3NRN4V?
>
> It is a separate, later part, but from the same Samsung S.LSI NFC
> controller line this driver covers. Samsung's downstream stack drives
> that whole line with one kernel driver and one HAL: the HAL's product
> table lists the N5 (S3FWRN5) and N82 (S3FWRN82) generations next to
> RN4V (S3NRN4V) and others, dispatching on a product code reported by
> the chip's bootloader, and the parts share the I2C framing, the
> power-control GPIO scheme and the proprietary-NCI style of
> configuration. The generational differences (bootloader protocol,
> RF-register transport command, FW_CFG payload form) are exactly what
> this patch dispatches on -- the same way the driver already supports
> the S3FWRN82 next to the S3FWRN5.
>
> That said, "S3FWRN5-family" can indeed be read as "a variant of the
> S3FWRN5 chip", which it is not, so I'll reword it in v3 to something
> like "a later part of the same Samsung NFC controller line". The
> phrase also sits in the commit message of the already-acked binding
> patch; I'll tweak it there too (commit message only) and note it in
> the changelog.
>
>> While it's "register update" and function is named "configure_dual",
>> it's loading firmware.
>>
>> If it's not a firmware, but only configuration, it can reside inside
>> the driver, maybe LLM even be able to decode to understandable
>> sequence of registers and values.
>
> There are two separate things here: the chip's executable firmware
> (~180 KiB) ships in its flash and is not touched by this patch at all
> -- its download protocol is not implemented, which is why the
> download step is skipped. What is loaded here are only the two RF
> register tables (~3.5 KiB combined).
>
> Those tables are configuration by nature, but I don't think they can
> reside in the driver:
>
> - They are board-specific analog/RF tuning, not chip constants: the
> values match a particular antenna/matching-network design, and the
> vendor revises them across software releases (my two Fairphone 6
> units shipped different builds of these files, with different
> version stamps embedded). A different S3NRN4V board design would be
> expected to ship its own tables. Per-device data loaded at runtime
> is what request_firmware() is there for, much like Wi-Fi
> board/calibration files. The tables ship in the device's vendor
> image, which is where I extracted them from.
>
> - There is nothing to decode them against. The register map of these
> controllers is not publicly documented, and even Samsung's own
> (Apache-licensed) HAL treats the register content as opaque: the
> only part of the image it interprets is a 16-byte metadata trailer
> at its end (version stamps, used to decide whether an update is
> needed at all, plus a region code), while the register content
> itself is pushed to the chip untouched, in 252-byte sections.
> Nothing in the stream or in the vendor stack identifies
> address/value pairs one could transcribe, so "decoded" into the
> driver this could only become a 3.5 KiB hex array in C, and we
> would lose the ability to ship a newer table without rebuilding
> the kernel.
>
> - It also mirrors what this driver already does for the parts it
> supports: s3fwrn5_nci_rf_configure() loads the same class of table
> (sec_s3fwrn5_rfreg.bin) with request_firmware() and pushes it via
> the older START/SET/STOP_RFREG commands. The new function is the
> same operation over the newer parts' transport command.
>
> If the naming reads confusingly I'm happy to rename the function or
> extend its comment to spell out the firmware-vs-register-table
> distinction.
Thanks,
now it makes more sense to me, feel free to name it as calibration data.
I would suggest to introduce something as a calibration-variant (see ath10k code).
If I understand right, firmware location path could look like
default path + driver vendor and model + device vendor and model + revision
/lib/firmware/ + Samsung/s3nrn4v/ + Fairphone/FP5/hwrevision.bin
/cc Luca here, as he may know more about the different configuration data shipped.
We should assume the configuration will be shipped with linux-firmware at some
point.
David
>
>> For next revision of the patch, I'll likely still have some
>> additional feedback.
>
> Understood -- I'll send the v3 with all of the above shortly.
>
>> With next revision send also as last patch the device-tree entry for
>> the Fairphone 6, so we can also get additional testing from
>> developers/users.
>
> Will do -- v3 will carry the Fairphone 6 DT patch at the end of the
> series, marked as included for testing and presumably to be picked up
> via the Qualcomm DT tree once the driver side is settled; I'll Cc
> linux-arm-msm and the qcom maintainers on that patch.
>
> Thanks again,
> Jorijn
--
David Heidelberg
next prev parent reply other threads:[~2026-07-19 14:57 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-05 19:06 [PATCH net-next v2 0/2] nfc: s3fwrn5: support the S3NRN4V variant Jorijn van der Graaf
2026-07-05 19:06 ` [PATCH net-next v2 1/2] dt-bindings: net: nfc: samsung,s3fwrn5: add S3NRN4V and clk-req-gpios Jorijn van der Graaf
2026-07-07 16:08 ` Conor Dooley
2026-07-05 19:06 ` [PATCH net-next v2 2/2] nfc: s3fwrn5: support the S3NRN4V variant Jorijn van der Graaf
2026-07-19 13:15 ` David Heidelberg
2026-07-19 14:22 ` Jorijn van der Graaf
2026-07-19 14:56 ` David Heidelberg [this message]
2026-07-19 18:09 ` Jorijn van der Graaf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5d26f3ae-1287-4440-bd38-96c9900f16ea@ixit.cz \
--to=david@ixit.cz \
--cc=andrew+netdev@lunn.ch \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=jorijnvdgraaf@catcrafts.net \
--cc=krzk@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luca.weiss@fairphone.com \
--cc=netdev@vger.kernel.org \
--cc=oe-linux-nfc@lists.linux.dev \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox