2019-08-14 03:31:49 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
|
|
|
/*
|
|
|
|
|
* (C) Copyright 2019 Rockchip Electronics Co., Ltd
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef _ROCKCHIP_OTP_H_
|
|
|
|
|
#define _ROCKCHIP_OTP_H_
|
|
|
|
|
|
|
|
|
|
/* OTP Register Offsets */
|
|
|
|
|
#define OTPC_SBPI_CTRL 0x0020
|
|
|
|
|
#define OTPC_SBPI_CMD_VALID_PRE 0x0024
|
|
|
|
|
#define OTPC_SBPI_CS_VALID_PRE 0x0028
|
|
|
|
|
#define OTPC_SBPI_STATUS 0x002C
|
|
|
|
|
#define OTPC_USER_CTRL 0x0100
|
|
|
|
|
#define OTPC_USER_ADDR 0x0104
|
|
|
|
|
#define OTPC_USER_ENABLE 0x0108
|
|
|
|
|
#define OTPC_USER_QP 0x0120
|
|
|
|
|
#define OTPC_USER_Q 0x0124
|
|
|
|
|
#define OTPC_INT_STATUS 0x0304
|
|
|
|
|
#define OTPC_SBPI_CMD0_OFFSET 0x1000
|
|
|
|
|
#define OTPC_SBPI_CMD1_OFFSET 0x1004
|
|
|
|
|
|
|
|
|
|
/* OTP Register bits and masks */
|
|
|
|
|
#define OTPC_USER_ADDR_MASK GENMASK(31, 16)
|
|
|
|
|
#define OTPC_USE_USER BIT(0)
|
|
|
|
|
#define OTPC_USE_USER_MASK GENMASK(16, 16)
|
|
|
|
|
#define OTPC_USER_FSM_ENABLE BIT(0)
|
|
|
|
|
#define OTPC_USER_FSM_ENABLE_MASK GENMASK(16, 16)
|
|
|
|
|
#define OTPC_SBPI_DONE BIT(1)
|
|
|
|
|
#define OTPC_USER_DONE BIT(2)
|
|
|
|
|
|
|
|
|
|
#define SBPI_DAP_ADDR 0x02
|
|
|
|
|
#define SBPI_DAP_ADDR_SHIFT 8
|
|
|
|
|
#define SBPI_DAP_ADDR_MASK GENMASK(31, 24)
|
|
|
|
|
#define SBPI_CMD_VALID_MASK GENMASK(31, 16)
|
|
|
|
|
#define SBPI_DAP_CMD_WRF 0xC0
|
|
|
|
|
#define SBPI_DAP_REG_ECC 0x3A
|
|
|
|
|
#define SBPI_ECC_ENABLE 0x00
|
|
|
|
|
#define SBPI_ECC_DISABLE 0x09
|
|
|
|
|
#define SBPI_ENABLE BIT(0)
|
|
|
|
|
#define SBPI_ENABLE_MASK GENMASK(16, 16)
|
|
|
|
|
|
|
|
|
|
#define OTPC_TIMEOUT 10000
|
|
|
|
|
|
2020-12-07 07:11:02 +00:00
|
|
|
#define RK3568_NBYTES 2
|
|
|
|
|
|
2020-09-29 09:53:27 +00:00
|
|
|
#define RV1126_OTP_NVM_CEB 0x00
|
|
|
|
|
#define RV1126_OTP_NVM_RSTB 0x04
|
|
|
|
|
#define RV1126_OTP_NVM_ST 0x18
|
|
|
|
|
#define RV1126_OTP_NVM_RADDR 0x1C
|
|
|
|
|
#define RV1126_OTP_NVM_RSTART 0x20
|
|
|
|
|
#define RV1126_OTP_NVM_RDATA 0x24
|
|
|
|
|
#define RV1126_OTP_NVM_TRWH 0x28
|
|
|
|
|
#define RV1126_OTP_READ_ST 0x30
|
|
|
|
|
#define RV1126_OTP_NVM_PRADDR 0x34
|
|
|
|
|
#define RV1126_OTP_NVM_PRLEN 0x38
|
|
|
|
|
#define RV1126_OTP_NVM_PRDATA 0x3c
|
|
|
|
|
#define RV1126_OTP_NVM_FAILTIME 0x40
|
|
|
|
|
#define RV1126_OTP_NVM_PRSTART 0x44
|
|
|
|
|
#define RV1126_OTP_NVM_PRSTATE 0x48
|
2019-08-14 03:31:49 +00:00
|
|
|
|
|
|
|
|
struct rockchip_otp_platdata {
|
|
|
|
|
void __iomem *base;
|
2019-08-20 12:06:46 +00:00
|
|
|
unsigned long secure_conf_base;
|
|
|
|
|
unsigned long otp_mask_base;
|
2020-12-14 10:04:37 +00:00
|
|
|
unsigned long otp_cru_rst_base;
|
2019-08-14 03:31:49 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|