[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMuHMdUApN=Jk6rqLo7vdALLtVxah5sZuUbSpjhct3vYdu67Lg@mail.gmail.com>
Date: Wed, 28 Aug 2024 20:43:48 +0200
From: Geert Uytterhoeven <geert@...ux-m68k.org>
To: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
Cc: Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, Magnus Damm <magnus.damm@...il.com>,
Yoshihiro Shimoda <yoshihiro.shimoda.uh@...esas.com>, Arnd Bergmann <arnd@...db.de>,
devicetree@...r.kernel.org, linux-renesas-soc@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 0/7] Add Renesas R-Car Gen4 E-FUSE support
Hi Srinivas,
Gentle ping, any comments from the nvmem side?
Thank you!
On Fri, Jul 26, 2024 at 3:38 PM Geert Uytterhoeven
<geert+renesas@...der.be> wrote:
> R-Car Gen3/Gen4 SoCs contain fuses indicating hardware support or
> hardware parameters. Unfortunately the various SoCs require different
> mechanisms to read the state of the fuses:
> - On R-Car Gen3, the fuse monitor registers are in the middle of the
> Pin Function Controller (PFC) register block,
> - On R-Car V3U and S4-8, the E-FUSE non-volatile memory is accessible
> through a separate register block in the PFC,
> - On R-Car V4H and V4M, the E-FUSE non-volatile memory is accessible
> through the second register block of OTP_MEM.
>
> As the first variant is quite different from the other two, and there is
> currently no use case requiring support for it, this patch series adds
> support for the last 2 variants only.
>
> Note that the first two revisions of this series implemented only basic
> nvmem support, and a custom in-kernel API, mimicked after the
> fuse-tregra driver. Then, Arnd told me on IRC that the R-Car E-FUSE
> driver should use the nvmem framework fully.
>
> The fuses' states can be read using the nvmem subsystem:
> - In kernelspace, through the nvmem_cell_*() API.
> A first known use case is reading tuning parameters for the
> Universal Flash Storage controller on R-Car S4-8 ES1.2.
> - In userspace, through sysfs. E.g. on R-Car S4-8 ES1.2:
> / # hd /sys/bus/nvmem/devices/rcar-fuse/nvmem
> 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
> *
> 000000e0 00 00 00 00 fe 00 00 00 00 00 00 00 00 00 00 00 |....�...........|
> 000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
> *
> 00000140 00 00 00 00 23 51 23 51 52 98 52 98 00 00 00 00 |....#Q#QR�R�....|
> 00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
> *
> 00000200
>
> Changes compared to v2[1]:
> - Dropped accepted dt-bindings,
> - Drop "pinctrl: renesas: Add R-Car Gen3 fuse support",
> - New patch "dt-bindings: fuse: Move renesas,rcar-{efuse,otp} to
> nvmem",
> - Drop superfluous semicolon,
> - Drop the custom rcar_fuse_read() kernel API, in favor of the
> standard nvmem_cell_*() API,
> - Drop support for explicitly-instantiated platform devices with
> accompanying platform data, which would be needed to support fuses
> tightly integrated with the Pin Function Controller on R-Car Gen3
> SoCs. It can be added when a use case shows up.
> - Move from drivers/soc/renesas/ to drivers/nvmem/,
> - Register the full register block that contains the E-FUSE data
> registers with the nvmem subsystem, but use keepouts to ignore all
> registers before the first or after the last documented data
> register. Undocumented registers in between are still accessible.
> - Replace offset/nregs in rcar_fuse_data by start/end,
> - Use __ioread32_copy() helper,
> - Initialize most fields of struct nvmem_config in its declaration,
> - Rename nvmem device from "fuse" to "rcar-fuse",
> - Use NVMEM_DEVID_NONE,
> - Add an entry to the MAINTAINERS file,
> - Fix reg size,
> - New patch "arm64: dts: renesas: r8a779f4: Add UFS tuning parameters
> in E-FUSE".
>
> Changes compared to v1[2]:
> - Drop RFC state and broaden audience,
> - Fix typo in one-line summary,
> - Add Reviewed-by.
>
> This has been tested on R-Car V3U, S4-8 ES1.0 and ES1.2, V4H, and V4M.
>
> Thanks for your comments!
>
> [1] https://lore.kernel.org/cover.1716974502.git.geert+renesas@glider.be
> [2] https://lore.kernel.org/cover.1714642390.git.geert+renesas@glider.be
>
> Geert Uytterhoeven (7):
> dt-bindings: fuse: Move renesas,rcar-{efuse,otp} to nvmem
> nvmem: Add R-Car E-FUSE driver
> arm64: dts: renesas: r8a779a0: Add E-FUSE node
> arm64: dts: renesas: r8a779f0: Add E-FUSE node
> arm64: dts: renesas: r8a779f4: Add UFS tuning parameters in E-FUSE
> arm64: dts: renesas: r8a779g0: Add OTP_MEM node
> arm64: dts: renesas: r8a779h0: Add OTP_MEM node
>
> .../{fuse => nvmem}/renesas,rcar-efuse.yaml | 35 +++--
> .../{fuse => nvmem}/renesas,rcar-otp.yaml | 17 ++-
> MAINTAINERS | 2 +
> arch/arm64/boot/dts/renesas/r8a779a0.dtsi | 8 +
> arch/arm64/boot/dts/renesas/r8a779f0.dtsi | 8 +
> arch/arm64/boot/dts/renesas/r8a779f4.dtsi | 12 ++
> arch/arm64/boot/dts/renesas/r8a779g0.dtsi | 5 +
> arch/arm64/boot/dts/renesas/r8a779h0.dtsi | 5 +
> drivers/nvmem/Kconfig | 11 ++
> drivers/nvmem/Makefile | 2 +
> drivers/nvmem/rcar-efuse.c | 142 ++++++++++++++++++
> 11 files changed, 230 insertions(+), 17 deletions(-)
> rename Documentation/devicetree/bindings/{fuse => nvmem}/renesas,rcar-efuse.yaml (54%)
> rename Documentation/devicetree/bindings/{fuse => nvmem}/renesas,rcar-otp.yaml (60%)
> create mode 100644 drivers/nvmem/rcar-efuse.c
>
> --
> 2.34.1
Powered by blists - more mailing lists