mbox series

[0/3] Add eFuse access for ZynqMP

Message ID 20240514140416.156747-1-lukas.funke-oss@weidmueller.com
Headers show
Series Add eFuse access for ZynqMP | expand

Message

Lukas Funke May 14, 2024, 2:04 p.m. UTC
From: Lukas Funke <lukas.funke@weidmueller.com>


This series adds a driver to read and write ZynqMP eFuses [1]. The
driver can be accessed by the 'efuse_read' and 'efuse_write' subcommands
of the 'zynqmp' command.

Example:

=> zynqmp efuse_read 0xc 0xc
00000000: 85 66 b1 32 43 f2 4a 02 00 00 00 40              .f.<D.:....@

Note: Accessing eFuses requires eFuse access to be enabled in the
underlying PMU firmware.

Use cases are:
 - Reading/writing user specific eFuses to enable device specific
   implementations
 - Revoking SPK IDs
 - Reading SoC version/DNA

[1] https://docs.amd.com/r/en-US/ug1085-zynq-ultrascale-trm/eFUSE



Lukas Funke (3):
  firmware: zynqmp: Add support to access efuses
  amd64: zynqmp: Add command to program efuses
  drivers: misc: Add driver to access ZynqMP efuses

 board/xilinx/zynqmp/cmds.c         | 101 ++++++++++++++
 drivers/firmware/firmware-zynqmp.c |  31 +++++
 drivers/misc/Kconfig               |   8 ++
 drivers/misc/Makefile              |   1 +
 drivers/misc/zynqmp_efuse.c        | 213 +++++++++++++++++++++++++++++
 include/zynqmp_firmware.h          |   2 +
 6 files changed, 356 insertions(+)
 create mode 100644 drivers/misc/zynqmp_efuse.c

Comments

Marek BehĂșn May 15, 2024, 7:08 a.m. UTC | #1
On Tue, 14 May 2024 16:04:13 +0200
lukas.funke-oss@weidmueller.com wrote:

> From: Lukas Funke <lukas.funke@weidmueller.com>
> 
> 
> This series adds a driver to read and write ZynqMP eFuses [1]. The
> driver can be accessed by the 'efuse_read' and 'efuse_write' subcommands
> of the 'zynqmp' command.

Vendor specific commands aren't great.

There is the 'fuse' command in u-boot. You need to implement the
  fuse_read()
  fuse_sense()
  fuse_prog()
  fuse_override()
functions.

See for example arch/arm/mach-mvebu/efuse.c, or other implementations.

Please don't invent new vendor specific commands in new code, it is an
antipattern.

Marek