rockchip: efuse: add (misc) driver for RK3399 non-secure efuse block
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Fri, 5 May 2017 17:21:38 +0000 (19:21 +0200)
committerSimon Glass <sjg@chromium.org>
Wed, 7 Jun 2017 13:29:17 +0000 (07:29 -0600)
commit49cd8e85eb70b5af4a27c7e006fbdd46d5796b2c
tree6f44865abedefe57b7554b8626448946b83d9b6c
parent7c1fb0a794791c7fea3d0d37f4f54d6ce9177e6f
rockchip: efuse: add (misc) driver for RK3399 non-secure efuse block

This adds a simple driver for reading the efuse block of the RK3399.
It should be easy enough to add drivers for other devices (e.g. the
RK3328, RK3368, etc.) by passing the device details via driver_data.

Unlike the kernel driver (using the nvmem subsystem), we don't expose
the efuse as multiple named cells, but rather as a linear memory that
can be read using misc_read(...).

The primary use case (as of today) is the generation of a 'serial#'
(and a 'cpuid#') environment variable for the RK3399-Q7 (Puma)
system-on-module.

Note that this adds a debug-only (i.e. only if DEBUG is defined)
command 'rk3399_dump_efuses' that dumps the efuse block's content.
N.B.: The name 'rk3399_dump_efuses' was intentionally chosen to
      include a SoC-name (together with a comment in the function) to
      remind whoever adds support for additional SoCs that this
      function currently makes assumptions regarding the size of the
      fuse-box based on the RK3399. The hope is that the function is
      adjusted to reflect any changes resulting from generalising the
      driver for multiple SoCs and is then renamed.

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/misc/Kconfig
drivers/misc/Makefile
drivers/misc/rockchip-efuse.c [new file with mode: 0644]