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 14*07f8bbdbSXuhui Lin #define OTPC_LOCK_CTRL 0x050 156e12c1ddSJason Zhu #define OTPC_USER_CTRL 0x0100 166e12c1ddSJason Zhu #define OTPC_USER_ADDR 0x0104 176e12c1ddSJason Zhu #define OTPC_USER_ENABLE 0x0108 186e12c1ddSJason Zhu #define OTPC_USER_QP 0x0120 196e12c1ddSJason Zhu #define OTPC_USER_Q 0x0124 206e12c1ddSJason Zhu #define OTPC_INT_STATUS 0x0304 216e12c1ddSJason Zhu #define OTPC_SBPI_CMD0_OFFSET 0x1000 226e12c1ddSJason Zhu #define OTPC_SBPI_CMD1_OFFSET 0x1004 236e12c1ddSJason Zhu 246e12c1ddSJason Zhu /* OTP Register bits and masks */ 256e12c1ddSJason Zhu #define OTPC_USER_ADDR_MASK GENMASK(31, 16) 266e12c1ddSJason Zhu #define OTPC_USE_USER BIT(0) 276e12c1ddSJason Zhu #define OTPC_USE_USER_MASK GENMASK(16, 16) 286e12c1ddSJason Zhu #define OTPC_USER_FSM_ENABLE BIT(0) 296e12c1ddSJason Zhu #define OTPC_USER_FSM_ENABLE_MASK GENMASK(16, 16) 306e12c1ddSJason Zhu #define OTPC_SBPI_DONE BIT(1) 316e12c1ddSJason Zhu #define OTPC_USER_DONE BIT(2) 326e12c1ddSJason Zhu 336e12c1ddSJason Zhu #define SBPI_DAP_ADDR 0x02 346e12c1ddSJason Zhu #define SBPI_DAP_ADDR_SHIFT 8 356e12c1ddSJason Zhu #define SBPI_DAP_ADDR_MASK GENMASK(31, 24) 366e12c1ddSJason Zhu #define SBPI_CMD_VALID_MASK GENMASK(31, 16) 376e12c1ddSJason Zhu #define SBPI_DAP_CMD_WRF 0xC0 386e12c1ddSJason Zhu #define SBPI_DAP_REG_ECC 0x3A 396e12c1ddSJason Zhu #define SBPI_ECC_ENABLE 0x00 406e12c1ddSJason Zhu #define SBPI_ECC_DISABLE 0x09 416e12c1ddSJason Zhu #define SBPI_ENABLE BIT(0) 426e12c1ddSJason Zhu #define SBPI_ENABLE_MASK GENMASK(16, 16) 436e12c1ddSJason Zhu 446e12c1ddSJason Zhu #define OTPC_TIMEOUT 10000 456e12c1ddSJason Zhu 469fed581aSFinley Xiao #define OTPC_MODE_CTRL 0x2000 479fed581aSFinley Xiao #define OTPC_IRQ_ST 0x2008 489fed581aSFinley Xiao #define OTPC_ACCESS_ADDR 0x200c 499fed581aSFinley Xiao #define OTPC_RD_DATA 0x2010 509fed581aSFinley Xiao #define OTPC_REPR_RD_TRANS_NUM 0x2020 519fed581aSFinley Xiao #define OTPC_DEEP_STANDBY 0x0 529fed581aSFinley Xiao #define OTPC_STANDBY 0x1 539fed581aSFinley Xiao #define OTPC_ACTIVE 0x2 549fed581aSFinley Xiao #define OTPC_READ_ACCESS 0x3 559fed581aSFinley Xiao #define OTPC_TRANS_NUM 0x1 569fed581aSFinley Xiao #define OTPC_RDM_IRQ_ST BIT(0) 579fed581aSFinley Xiao #define OTPC_STB2ACT_IRQ_ST BIT(7) 589fed581aSFinley Xiao #define OTPC_DP2STB_IRQ_ST BIT(8) 599fed581aSFinley Xiao #define OTPC_ACT2STB_IRQ_ST BIT(9) 609fed581aSFinley Xiao #define OTPC_STB2DP_IRQ_ST BIT(10) 61*07f8bbdbSXuhui Lin 62*07f8bbdbSXuhui Lin #define KEY_READER_CFG 0x0 63*07f8bbdbSXuhui Lin 649fed581aSFinley Xiao #define RK3308BS_NBYTES 4 659fed581aSFinley Xiao #define RK3308BS_MAX_BYTES 0x80 669fed581aSFinley Xiao #define RK3308BS_NO_SECURE_OFFSET 224 679fed581aSFinley Xiao 68fd7b5182SFinley Xiao #define RK3568_NBYTES 2 69fd7b5182SFinley Xiao 70dd270bd4SXuhui Lin #define RK3576_NO_SECURE_OFFSET 0x1c0 71dd270bd4SXuhui Lin 72975a7fc3SFinley Xiao #define RK3588_OTPC_AUTO_CTRL 0x04 73975a7fc3SFinley Xiao #define RK3588_OTPC_AUTO_EN 0x08 74975a7fc3SFinley Xiao #define RK3588_OTPC_INT_ST 0x84 75975a7fc3SFinley Xiao #define RK3588_OTPC_DOUT0 0x20 76975a7fc3SFinley Xiao #define RK3588_NO_SECURE_OFFSET 0x300 77975a7fc3SFinley Xiao #define RK3588_NBYTES 4 78975a7fc3SFinley Xiao #define RK3588_BURST_NUM 1 79975a7fc3SFinley Xiao #define RK3588_BURST_SHIFT 8 80975a7fc3SFinley Xiao #define RK3588_ADDR_SHIFT 16 81975a7fc3SFinley Xiao #define RK3588_AUTO_EN BIT(0) 82975a7fc3SFinley Xiao #define RK3588_RD_DONE BIT(1) 83975a7fc3SFinley Xiao 84a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_CEB 0x00 85a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_RSTB 0x04 86a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_ST 0x18 87a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_RADDR 0x1C 88a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_RSTART 0x20 89a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_RDATA 0x24 90a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_TRWH 0x28 91a4c57e8aSFinley Xiao #define RV1126_OTP_READ_ST 0x30 92a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRADDR 0x34 93a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRLEN 0x38 94a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRDATA 0x3c 95a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_FAILTIME 0x40 96a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRSTART 0x44 97a4c57e8aSFinley Xiao #define RV1126_OTP_NVM_PRSTATE 0x48 986e12c1ddSJason Zhu 996e12c1ddSJason Zhu struct rockchip_otp_platdata { 1006e12c1ddSJason Zhu void __iomem *base; 101cbe24667SJason Zhu unsigned long secure_conf_base; 102cbe24667SJason Zhu unsigned long otp_mask_base; 103cf432719SJason Zhu unsigned long otp_cru_rst_base; 104*07f8bbdbSXuhui Lin unsigned long key_reader_base; 1056e12c1ddSJason Zhu }; 1066e12c1ddSJason Zhu 1076e12c1ddSJason Zhu #endif 108