u-boot/drivers
Sean Anderson 2645bc0e12 arm: layerscape: Add sfp driver
This adds a driver for the Security Fuse Processor (SFP) present on
LS1012A, LS1021A, LS1043A, and LS1046A processors. It holds the
Super-Root Key (SRK), One-Time-Programmable Master Key (OTPMK), and
other "security" related fuses. Similar devices (sharing the same name)
are present on other processors, but for the moment this just supports
the LS2 variants.

The mirror registers are loaded during power-on reset. All mirror
registers must be programmed or read at once. Because of this, `fuse
prog` will program all fuses, even though only one might be specified.
To prevent accidentally burning through all your fuse programming cycles
with something like `fuse prog 0 0 A B C D`, we limit ourselves to one
programming cycle per reset. Fuses are numbered based on their address.
The fuse at 0x1e80200 is 0, the fuse at 0x1e80204 is 1, etc.

The TA_PROG_SFP supply must be enabled when programming fuses, but must
be disabled when reading them. Typically this supply is enabled by
inserting a jumper or by setting a register in the board's FPGA. I've
also added support for using a regulator. This could be helpful for
automatically issuing the FPGA write, or for toggling a GPIO controlling
the supply.

I suggest using the following procedure for programming:

1. Override the fuses you wish to program
   => fuse override 0 2 A B C D
2. Inspect the values and ensure that they are what you expect
   => fuse sense 0 2 4
3. Enable TA_PROG_SFP
4. Issue a program command using OSPR0 as a dummy. Since it contains the
   write-protect bit you will usually want to write it last anyway.
   => fuse prog 0 0 0
5. Disable TA_PROG_SFP
6. Read back the fuses and ensure they are correct
   => fuse read 0 2 4

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2022-06-20 09:18:25 +08:00
..
adc adc: meson-saradc: add AXG variant 2022-04-25 09:25:00 +02:00
ata pci: Add mask parameter to dm_pci_map_bar() 2022-05-03 18:33:29 -04:00
axi WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
bios_emulator pci: Update dm_pci_bus_to_virt() parameters 2022-05-03 18:33:29 -04:00
block vpl: Add Kconfig options for VPL 2022-05-02 09:58:13 -04:00
bootcount Prepare v2022.04-rc5 2022-03-28 12:36:49 -04:00
bus bus: ti-sysc: change in a normal driver 2021-03-22 19:23:27 +13:00
button button: adc: set state to pressed when the voltage is closest to nominal 2022-02-11 09:00:47 -05:00
cache cache: sifive: Fix -Wint-to-pointer-cast warning 2021-10-20 10:59:09 +08:00
clk arm: mach-k3: am62: Introduce autogenerated SoC data 2022-06-10 13:37:32 -04:00
core dm: core: convert of_machine_is_compatible to livetree 2022-06-06 18:01:21 -04:00
cpu cpu: 83xx: Add missing dependency on CPU_MPC83XX 2022-04-26 17:18:39 +05:30
crypto crypto/fsl: fsl_hash: Fix dcache issue in caam_hash_finish 2022-05-20 12:36:47 +02:00
ddr Convert CONFIG_SPL_COMMON_INIT_DDR to Kconfig 2022-06-06 12:09:12 -04:00
demo demo: migrate uclass to livetree 2021-10-05 08:50:15 -04:00
dfu DFU: Check the number of arguments and argument string strictly 2022-02-11 11:29:23 -05:00
dma dma: ti: Add PSIL data for AM62x DMASS 2022-06-10 13:37:32 -04:00
fastboot fastboot: only look up real partition names when no alias exists 2022-01-28 11:30:39 -05:00
firmware firmware: ti_sci_static_data: add static DMA chan data 2022-06-10 13:37:32 -04:00
fpga arm: socfpga: arria10: Enable double peripheral RBF configuration 2021-12-17 12:58:01 +08:00
gpio gpio: rgpio2p: Enhance reading of GPIO pin value 2022-05-23 11:37:58 +02:00
hwspinlock treewide: invaild -> invalid 2022-01-13 07:57:49 -05:00
i2c i2c: ihs: intel: Fix typo in comments (actual) 2022-05-10 06:47:13 +02:00
input input: apple: Add support for Apple SPI keyboard 2022-02-10 16:44:23 -05:00
iommu iommu: Add M1 Pro/Max support to Apple DART driver 2022-02-21 08:35:40 -05:00
led led: Drop led_default_state() 2022-04-28 09:26:44 -04:00
mailbox mailbox: apple: Add driver for Apple IOP mailbox 2022-02-10 16:44:23 -05:00
memory keystone2: Move CONFIG_AEMIF_CNTRL_BASE out of CONFIG namespace 2021-09-27 21:38:34 -04:00
misc arm: layerscape: Add sfp driver 2022-06-20 09:18:25 +08:00
mmc drivers: mmc: am654_sdhci: Add new compatible for AM62 SoC 2022-06-10 13:37:32 -04:00
mtd mtd: mtdpart: Change size type from fdt_addr_t to fdt_size_t 2022-06-06 17:47:17 -04:00
mux treewide: invaild -> invalid 2022-01-13 07:57:49 -05:00
net sandbox: net: Remove fake-host-hwaddr 2022-06-08 13:59:52 -04:00
nvme pci: Add mask parameter to dm_pci_map_bar() 2022-05-03 18:33:29 -04:00
pch treewide: Simply conditions with the new OF_REAL 2021-09-25 09:46:15 -06:00
pci pci: Handle failed calloc in decode_regions() 2022-06-06 18:01:21 -04:00
pci_endpoint dm: define LOG_CATEGORY for all uclass 2021-07-06 10:38:03 -06:00
phy phy: zynqmp: Increase timeout value to 10ms 2022-05-18 13:17:54 +02:00
pinctrl pinctrl: nuvoton: Add NPCM7xx pinctrl driver 2022-06-10 13:37:32 -04:00
power arm: mach-k3: am62: Introduce autogenerated SoC data 2022-06-10 13:37:32 -04:00
pwm driver: pwm: pwm-imx: separe dm from non dm implementation 2022-04-12 19:10:44 +02:00
qe configs: fsl: migrate FMAN/QE specific defines to Kconfig 2021-11-09 17:18:23 +05:30
ram arm: mach-k3: Introduce the basic files to support AM62 2022-06-10 13:37:32 -04:00
reboot-mode reboot-mode: migrate uclass to livetree 2021-10-05 08:50:15 -04:00
remoteproc remoteproc: ipu: Add driver to bring up ipu 2022-02-08 11:00:03 -05:00
reset reset: Return 0 if ops unimplemented and remove empty functions 2022-05-05 19:37:11 -04:00
rng rng: nuvoton: Add NPCM7xx rng driver 2022-06-10 13:37:32 -04:00
rtc test: Load mac address using RTC 2022-06-08 14:00:22 -04:00
scsi scsi: call device_probe() after scanning 2022-04-09 21:06:31 +02:00
serial serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE) 2022-06-06 18:01:21 -04:00
smem dm: define LOG_CATEGORY for all uclass 2021-07-06 10:38:03 -06:00
soc soc: ti: k3-socinfo: Add entry for AM62X SoC family 2022-06-10 13:37:32 -04:00
sound sound: Fix buffer overflow in square wave generation 2022-04-29 11:11:36 -04:00
spi spi: synquacer: simplify tx completion checking 2022-06-10 13:37:32 -04:00
spmi spmi: msm: add arbiter version 5 support 2021-10-31 08:46:44 -04:00
sysinfo sysinfo: rcar3: Add Renesas R-Car Gen3 sysinfo driver 2021-07-20 23:33:54 +02:00
sysreset vpl: Add Kconfig options for VPL 2022-05-02 09:58:13 -04:00
tee drivers:optee:rpmb: initialize drivers of mmc devices in UCLASS_BLK for rpmb access 2022-06-06 18:01:21 -04:00
thermal WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
timer arm: omap2plus: Move CONFIG_SYS_PTV out of CONFIG namespace 2022-06-06 12:09:00 -04:00
tpm tpm: add support for TPMv2.x I2C chips 2022-05-23 16:33:58 +03:00
ufs lib: fix selection of CONFIG_CHARSET 2022-05-03 21:39:22 +02:00
usb arm: pxa: Remove CONFIG_CPU_PXA25X 2022-06-06 12:09:12 -04:00
video video: stm32: stm32_ltdc: support several hardware versions 2022-05-10 10:56:39 +02:00
virtio virtio: rng: Check length before copying 2022-06-08 09:24:04 -04:00
w1 arm: Remove zmx25 board and ARCH_MX25 2021-10-01 21:08:18 -04:00
w1-eeprom dm: define LOG_CATEGORY for all uclass 2021-07-06 10:38:03 -06:00
watchdog watchdog: Add MAX6370 watchdog timer driver 2022-05-06 07:06:51 +02:00
xen WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
Kconfig iommu: Add IOMMU uclass 2021-10-31 08:46:44 -04:00
Makefile Introduce Verifying Program Loader (VPL) 2022-05-02 09:58:13 -04:00