xref: /rk3399_rockchip-uboot/include/rockchip-otp.h (revision a4c57e8a07c4c5a8dde85a50b2506600ebf3af2f)
16e12c1ddSJason Zhu /* SPDX-License-Identifier:     GPL-2.0+ */
26e12c1ddSJason Zhu /*
36e12c1ddSJason Zhu  * (C) Copyright 2019 Rockchip Electronics Co., Ltd
46e12c1ddSJason Zhu  */
56e12c1ddSJason Zhu 
66e12c1ddSJason Zhu #ifndef _ROCKCHIP_OTP_H_
76e12c1ddSJason Zhu #define _ROCKCHIP_OTP_H_
86e12c1ddSJason Zhu 
96e12c1ddSJason Zhu /* OTP Register Offsets */
106e12c1ddSJason Zhu #define OTPC_SBPI_CTRL			0x0020
116e12c1ddSJason Zhu #define OTPC_SBPI_CMD_VALID_PRE		0x0024
126e12c1ddSJason Zhu #define OTPC_SBPI_CS_VALID_PRE		0x0028
136e12c1ddSJason Zhu #define OTPC_SBPI_STATUS		0x002C
146e12c1ddSJason Zhu #define OTPC_USER_CTRL			0x0100
156e12c1ddSJason Zhu #define OTPC_USER_ADDR			0x0104
166e12c1ddSJason Zhu #define OTPC_USER_ENABLE		0x0108
176e12c1ddSJason Zhu #define OTPC_USER_QP			0x0120
186e12c1ddSJason Zhu #define OTPC_USER_Q			0x0124
196e12c1ddSJason Zhu #define OTPC_INT_STATUS			0x0304
206e12c1ddSJason Zhu #define OTPC_SBPI_CMD0_OFFSET		0x1000
216e12c1ddSJason Zhu #define OTPC_SBPI_CMD1_OFFSET		0x1004
226e12c1ddSJason Zhu 
236e12c1ddSJason Zhu /* OTP Register bits and masks */
246e12c1ddSJason Zhu #define OTPC_USER_ADDR_MASK		GENMASK(31, 16)
256e12c1ddSJason Zhu #define OTPC_USE_USER			BIT(0)
266e12c1ddSJason Zhu #define OTPC_USE_USER_MASK		GENMASK(16, 16)
276e12c1ddSJason Zhu #define OTPC_USER_FSM_ENABLE		BIT(0)
286e12c1ddSJason Zhu #define OTPC_USER_FSM_ENABLE_MASK	GENMASK(16, 16)
296e12c1ddSJason Zhu #define OTPC_SBPI_DONE			BIT(1)
306e12c1ddSJason Zhu #define OTPC_USER_DONE			BIT(2)
316e12c1ddSJason Zhu 
326e12c1ddSJason Zhu #define SBPI_DAP_ADDR			0x02
336e12c1ddSJason Zhu #define SBPI_DAP_ADDR_SHIFT		8
346e12c1ddSJason Zhu #define SBPI_DAP_ADDR_MASK		GENMASK(31, 24)
356e12c1ddSJason Zhu #define SBPI_CMD_VALID_MASK		GENMASK(31, 16)
366e12c1ddSJason Zhu #define SBPI_DAP_CMD_WRF		0xC0
376e12c1ddSJason Zhu #define SBPI_DAP_REG_ECC		0x3A
386e12c1ddSJason Zhu #define SBPI_ECC_ENABLE			0x00
396e12c1ddSJason Zhu #define SBPI_ECC_DISABLE		0x09
406e12c1ddSJason Zhu #define SBPI_ENABLE			BIT(0)
416e12c1ddSJason Zhu #define SBPI_ENABLE_MASK		GENMASK(16, 16)
426e12c1ddSJason Zhu 
436e12c1ddSJason Zhu #define OTPC_TIMEOUT			10000
446e12c1ddSJason Zhu 
45*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_CEB		0x00
46*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_RSTB		0x04
47*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_ST		0x18
48*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_RADDR		0x1C
49*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_RSTART		0x20
50*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_RDATA		0x24
51*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_TRWH		0x28
52*a4c57e8aSFinley Xiao #define RV1126_OTP_READ_ST		0x30
53*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRADDR		0x34
54*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRLEN		0x38
55*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRDATA		0x3c
56*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_FAILTIME		0x40
57*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRSTART		0x44
58*a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRSTATE		0x48
596e12c1ddSJason Zhu 
606e12c1ddSJason Zhu struct rockchip_otp_platdata {
616e12c1ddSJason Zhu 	void __iomem *base;
62cbe24667SJason Zhu 	unsigned long secure_conf_base;
63cbe24667SJason Zhu 	unsigned long otp_mask_base;
646e12c1ddSJason Zhu };
656e12c1ddSJason Zhu 
666e12c1ddSJason Zhu #endif
67