Lines Matching refs:otp

24 static int rockchip_otp_wait_status(struct rockchip_otp_platdata *otp,  in rockchip_otp_wait_status()  argument
29 while (!(readl(otp->base + OTPC_INT_STATUS) & flag)) { in rockchip_otp_wait_status()
39 writel(flag, otp->base + OTPC_INT_STATUS); in rockchip_otp_wait_status()
44 static int rockchip_otp_ecc_enable(struct rockchip_otp_platdata *otp, in rockchip_otp_ecc_enable() argument
50 otp->base + OTPC_SBPI_CTRL); in rockchip_otp_ecc_enable()
52 writel(SBPI_CMD_VALID_MASK | 0x1, otp->base + OTPC_SBPI_CMD_VALID_PRE); in rockchip_otp_ecc_enable()
54 otp->base + OTPC_SBPI_CMD0_OFFSET); in rockchip_otp_ecc_enable()
56 writel(SBPI_ECC_ENABLE, otp->base + OTPC_SBPI_CMD1_OFFSET); in rockchip_otp_ecc_enable()
58 writel(SBPI_ECC_DISABLE, otp->base + OTPC_SBPI_CMD1_OFFSET); in rockchip_otp_ecc_enable()
60 writel(SBPI_ENABLE_MASK | SBPI_ENABLE, otp->base + OTPC_SBPI_CTRL); in rockchip_otp_ecc_enable()
62 ret = rockchip_otp_wait_status(otp, OTPC_SBPI_DONE); in rockchip_otp_ecc_enable()
72 struct rockchip_otp_platdata *otp = dev_get_platdata(dev); in rockchip_px30_otp_read() local
76 ret = rockchip_otp_ecc_enable(otp, false); in rockchip_px30_otp_read()
82 writel(OTPC_USE_USER | OTPC_USE_USER_MASK, otp->base + OTPC_USER_CTRL); in rockchip_px30_otp_read()
86 otp->base + OTPC_USER_ADDR); in rockchip_px30_otp_read()
88 otp->base + OTPC_USER_ENABLE); in rockchip_px30_otp_read()
89 ret = rockchip_otp_wait_status(otp, OTPC_USER_DONE); in rockchip_px30_otp_read()
94 *buffer++ = readb(otp->base + OTPC_USER_Q); in rockchip_px30_otp_read()
98 writel(0x0 | OTPC_USE_USER_MASK, otp->base + OTPC_USER_CTRL); in rockchip_px30_otp_read()
103 static int rk3308bs_otp_wait_status(struct rockchip_otp_platdata *otp, u32 flag) in rk3308bs_otp_wait_status() argument
107 while (!(readl(otp->base + OTPC_IRQ_ST) & flag)) { in rk3308bs_otp_wait_status()
117 writel(flag, otp->base + OTPC_IRQ_ST); in rk3308bs_otp_wait_status()
122 static int rk3308bs_otp_active(struct rockchip_otp_platdata *otp) in rk3308bs_otp_active() argument
127 mode = readl(otp->base + OTPC_MODE_CTRL); in rk3308bs_otp_active()
131 writel(OTPC_STANDBY, otp->base + OTPC_MODE_CTRL); in rk3308bs_otp_active()
132 ret = rk3308bs_otp_wait_status(otp, OTPC_DP2STB_IRQ_ST); in rk3308bs_otp_active()
134 dev_err(otp->dev, "timeout during wait dp2stb\n"); in rk3308bs_otp_active()
138 writel(OTPC_ACTIVE, otp->base + OTPC_MODE_CTRL); in rk3308bs_otp_active()
139 ret = rk3308bs_otp_wait_status(otp, OTPC_STB2ACT_IRQ_ST); in rk3308bs_otp_active()
141 dev_err(otp->dev, "timeout during wait stb2act\n"); in rk3308bs_otp_active()
152 static int rk3308bs_otp_standby(struct rockchip_otp_platdata *otp) in rk3308bs_otp_standby() argument
157 mode = readl(otp->base + OTPC_MODE_CTRL); in rk3308bs_otp_standby()
161 writel(OTPC_STANDBY, otp->base + OTPC_MODE_CTRL); in rk3308bs_otp_standby()
162 ret = rk3308bs_otp_wait_status(otp, OTPC_ACT2STB_IRQ_ST); in rk3308bs_otp_standby()
164 dev_err(otp->dev, "timeout during wait act2stb\n"); in rk3308bs_otp_standby()
168 writel(OTPC_DEEP_STANDBY, otp->base + OTPC_MODE_CTRL); in rk3308bs_otp_standby()
169 ret = rk3308bs_otp_wait_status(otp, OTPC_STB2DP_IRQ_ST); in rk3308bs_otp_standby()
171 dev_err(otp->dev, "timeout during wait stb2dp\n"); in rk3308bs_otp_standby()
185 struct rockchip_otp_platdata *otp = dev_get_platdata(dev); in rockchip_rk3308bs_otp_read() local
196 ret = rk3308bs_otp_active(otp); in rockchip_rk3308bs_otp_read()
212 writel(OTPC_TRANS_NUM, otp->base + OTPC_REPR_RD_TRANS_NUM); in rockchip_rk3308bs_otp_read()
213 writel(addr_start++, otp->base + OTPC_ACCESS_ADDR); in rockchip_rk3308bs_otp_read()
214 writel(OTPC_READ_ACCESS, otp->base + OTPC_MODE_CTRL); in rockchip_rk3308bs_otp_read()
215 ret = rk3308bs_otp_wait_status(otp, OTPC_RDM_IRQ_ST); in rockchip_rk3308bs_otp_read()
220 out_value = readl(otp->base + OTPC_RD_DATA); in rockchip_rk3308bs_otp_read()
228 rk3308bs_otp_standby(otp); in rockchip_rk3308bs_otp_read()
236 struct rockchip_otp_platdata *otp = dev_get_platdata(dev); in rockchip_rk3568_otp_read() local
251 ret = rockchip_otp_ecc_enable(otp, true); in rockchip_rk3568_otp_read()
257 writel(OTPC_USE_USER | OTPC_USE_USER_MASK, otp->base + OTPC_USER_CTRL); in rockchip_rk3568_otp_read()
261 otp->base + OTPC_USER_ADDR); in rockchip_rk3568_otp_read()
263 otp->base + OTPC_USER_ENABLE); in rockchip_rk3568_otp_read()
264 ret = rockchip_otp_wait_status(otp, OTPC_USER_DONE); in rockchip_rk3568_otp_read()
269 out_value = readl(otp->base + OTPC_USER_Q); in rockchip_rk3568_otp_read()
277 writel(0x0 | OTPC_USE_USER_MASK, otp->base + OTPC_USER_CTRL); in rockchip_rk3568_otp_read()
287 struct rockchip_otp_platdata *otp = dev_get_platdata(dev); in rockchip_rk3588_otp_read() local
316 otp->base + RK3588_OTPC_AUTO_CTRL); in rockchip_rk3588_otp_read()
317 writel(RK3588_AUTO_EN, otp->base + RK3588_OTPC_AUTO_EN); in rockchip_rk3588_otp_read()
318 ret = readl_poll_timeout(otp->base + RK3588_OTPC_INT_ST, st, in rockchip_rk3588_otp_read()
324 writel(RK3588_RD_DONE, otp->base + RK3588_OTPC_INT_ST); in rockchip_rk3588_otp_read()
326 out_value = readl(otp->base + RK3588_OTPC_DOUT0); in rockchip_rk3588_otp_read()
342 struct rockchip_otp_platdata *otp = dev_get_platdata(dev); in rockchip_rv1126_otp_init() local
346 writel(0x0, otp->base + RV1126_OTP_NVM_CEB); in rockchip_rv1126_otp_init()
347 ret = readl_poll_timeout(otp->base + RV1126_OTP_NVM_ST, status, in rockchip_rv1126_otp_init()
354 writel(0x1, otp->base + RV1126_OTP_NVM_RSTB); in rockchip_rv1126_otp_init()
355 ret = readl_poll_timeout(otp->base + RV1126_OTP_NVM_ST, status, in rockchip_rv1126_otp_init()
368 struct rockchip_otp_platdata *otp = dev_get_platdata(dev); in rockchip_rv1126_otp_read() local
374 writel(offset++, otp->base + RV1126_OTP_NVM_RADDR); in rockchip_rv1126_otp_read()
375 writel(0x1, otp->base + RV1126_OTP_NVM_RSTART); in rockchip_rv1126_otp_read()
376 ret = readl_poll_timeout(otp->base + RV1126_OTP_READ_ST, in rockchip_rv1126_otp_read()
383 *buffer++ = readb(otp->base + RV1126_OTP_NVM_RDATA); in rockchip_rv1126_otp_read()
410 struct rockchip_otp_platdata *otp = dev_get_platdata(dev); in rockchip_otp_ofdata_to_platdata() local
412 otp->base = dev_read_addr_ptr(dev); in rockchip_otp_ofdata_to_platdata()