mbox series

[v3,0/7] Add eFuse access for ZynqMP

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

Message

Lukas Funke June 4, 2024, 2:27 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 'fuse read' and 'fuse write' commands

Example:

=> fuse read 0 0xc 3
Reading bank 0:

Word 0x0000000c: 3cb16685 013af244 40000000

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


Changes in v3:
- Align ZynqMP eFuse driver with Linux kernel
- Adapt versal, versal-net and zynqmp to use common chip-id function
- Enable CMD_FUSE and ZYNQMP_EFUSE for zynqmp_virt and zynqmp_kria defconfig
- Use 'dev_err' instead 'log_msg_ret' if possible

Changes in v2:
- Drop vendor specific fuse cmd, use existing fuse cmd
- Minor code refactoring (reverse x-mas tree)

Lukas Funke (7):
  configs: zynqmp_kria: Enable CMD_FUSE and ZYNQMP_EFUSE
  configs: zynqmp_virt: Enable CMD_FUSE and ZYNQMP_EFUSE
  soc: xilinx: versal: Use zynqmp_pm_get_chipid() to get chip revision
  soc: xilinx: versal-net: Use zynqmp_pm_get_chipid() to get chip
    revision
  soc: xilinx: zynqmp: Use zynqmp_pm_get_chipid() to get chip revision
  firmware: zynqmp: Add support to access efuses
  drivers: misc: Add driver to access ZynqMP efuses

 configs/xilinx_zynqmp_kria_defconfig |   2 +
 configs/xilinx_zynqmp_virt_defconfig |   2 +
 drivers/firmware/firmware-zynqmp.c   |  31 +++
 drivers/misc/Kconfig                 |   8 +
 drivers/misc/Makefile                |   1 +
 drivers/misc/zynqmp_efuse.c          | 360 +++++++++++++++++++++++++++
 drivers/soc/soc_xilinx_versal.c      |  13 +-
 drivers/soc/soc_xilinx_versal_net.c  |  13 +-
 drivers/soc/soc_xilinx_zynqmp.c      |  21 +-
 include/zynqmp_firmware.h            |   2 +
 10 files changed, 427 insertions(+), 26 deletions(-)
 create mode 100644 drivers/misc/zynqmp_efuse.c