Lines Matching full:efuse
2 * eFuse driver for Rockchip devices
92 u32 ctrl; /* 0x00 efuse control register */
93 u32 dout; /* 0x04 efuse data out register */
94 u32 rf; /* 0x08 efuse redundancy bit used register */
98 /* 0x14 efuse strobe finish control register */
120 /* setup efuse timing */ in rk1808_efuse_timing_init()
139 struct rockchip_efuse_regs *efuse = in rockchip_rk1808_efuse_read() local
160 &efuse->auto_ctrl); in rockchip_rk1808_efuse_read()
162 status = readl(&efuse->int_status); in rockchip_rk1808_efuse_read()
167 out_value = readl(&efuse->dout2); in rockchip_rk1808_efuse_read()
168 writel(RK1808_INT_FINISH, &efuse->int_status); in rockchip_rk1808_efuse_read()
185 struct rockchip_efuse_regs *efuse = in rockchip_rk3368_efuse_read() local
191 sip_smc_secure_reg_write((ulong)&efuse->ctrl, in rockchip_rk3368_efuse_read()
195 res = sip_smc_secure_reg_read((ulong)&efuse->ctrl); in rockchip_rk3368_efuse_read()
196 sip_smc_secure_reg_write((ulong)&efuse->ctrl, res.a1 & in rockchip_rk3368_efuse_read()
199 res = sip_smc_secure_reg_read((ulong)&efuse->ctrl); in rockchip_rk3368_efuse_read()
200 sip_smc_secure_reg_write((ulong)&efuse->ctrl, res.a1 | in rockchip_rk3368_efuse_read()
205 res = sip_smc_secure_reg_read((ulong)&efuse->ctrl); in rockchip_rk3368_efuse_read()
206 sip_smc_secure_reg_write((ulong)&efuse->ctrl, in rockchip_rk3368_efuse_read()
210 res = sip_smc_secure_reg_read((ulong)&efuse->dout); in rockchip_rk3368_efuse_read()
213 res = sip_smc_secure_reg_read((ulong)&efuse->ctrl); in rockchip_rk3368_efuse_read()
214 sip_smc_secure_reg_write((ulong)&efuse->ctrl, in rockchip_rk3368_efuse_read()
220 sip_smc_secure_reg_write((ulong)&efuse->ctrl, in rockchip_rk3368_efuse_read()
231 struct rockchip_efuse_regs *efuse = in rockchip_rk3399_efuse_read() local
244 /* cap to the size of the efuse block */ in rockchip_rk3399_efuse_read()
249 &efuse->ctrl); in rockchip_rk3399_efuse_read()
252 setbits_le32(&efuse->ctrl, in rockchip_rk3399_efuse_read()
255 out_value = readl(&efuse->dout); in rockchip_rk3399_efuse_read()
256 clrbits_le32(&efuse->ctrl, RK3399_STROBE); in rockchip_rk3399_efuse_read()
264 writel(RK3399_PD | RK3399_CSB, &efuse->ctrl); in rockchip_rk3399_efuse_read()
275 struct rockchip_efuse_regs *efuse = in rockchip_rk3288_efuse_read() local
284 writel(RK3288_LOAD | RK3288_PGENB, &efuse->ctrl); in rockchip_rk3288_efuse_read()
288 writel(readl(&efuse->ctrl) & in rockchip_rk3288_efuse_read()
290 &efuse->ctrl); in rockchip_rk3288_efuse_read()
292 writel(readl(&efuse->ctrl) | in rockchip_rk3288_efuse_read()
294 &efuse->ctrl); in rockchip_rk3288_efuse_read()
297 writel(readl(&efuse->ctrl) | in rockchip_rk3288_efuse_read()
298 RK3288_STROBE, &efuse->ctrl); in rockchip_rk3288_efuse_read()
301 *buffer++ = readl(&efuse->dout); in rockchip_rk3288_efuse_read()
303 writel(readl(&efuse->ctrl) & in rockchip_rk3288_efuse_read()
304 (~RK3288_STROBE), &efuse->ctrl); in rockchip_rk3288_efuse_read()
309 writel(RK3288_PGENB | RK3288_CSB, &efuse->ctrl); in rockchip_rk3288_efuse_read()
319 struct rockchip_efuse_regs *efuse = in rockchip_rk3288_efuse_secure_read() local
329 sip_smc_secure_reg_write((ulong)&efuse->ctrl, in rockchip_rk3288_efuse_secure_read()
333 res = sip_smc_secure_reg_read((ulong)&efuse->ctrl); in rockchip_rk3288_efuse_secure_read()
334 sip_smc_secure_reg_write((ulong)&efuse->ctrl, res.a1 & in rockchip_rk3288_efuse_secure_read()
337 res = sip_smc_secure_reg_read((ulong)&efuse->ctrl); in rockchip_rk3288_efuse_secure_read()
338 sip_smc_secure_reg_write((ulong)&efuse->ctrl, res.a1 | in rockchip_rk3288_efuse_secure_read()
343 res = sip_smc_secure_reg_read((ulong)&efuse->ctrl); in rockchip_rk3288_efuse_secure_read()
344 sip_smc_secure_reg_write((ulong)&efuse->ctrl, in rockchip_rk3288_efuse_secure_read()
348 res = sip_smc_secure_reg_read((ulong)&efuse->dout); in rockchip_rk3288_efuse_secure_read()
351 res = sip_smc_secure_reg_read((ulong)&efuse->ctrl); in rockchip_rk3288_efuse_secure_read()
352 sip_smc_secure_reg_write((ulong)&efuse->ctrl, in rockchip_rk3288_efuse_secure_read()
358 sip_smc_secure_reg_write((ulong)&efuse->ctrl, in rockchip_rk3288_efuse_secure_read()
369 struct rockchip_efuse_regs *efuse = in rockchip_rk3328_efuse_read() local
380 /* 128 Byte efuse, 96 Byte for secure, 32 Byte for non-secure */ in rockchip_rk3328_efuse_read()
396 &efuse->auto_ctrl); in rockchip_rk3328_efuse_read()
398 status = readl(&efuse->int_status); in rockchip_rk3328_efuse_read()
403 out_value = readl(&efuse->dout2); in rockchip_rk3328_efuse_read()
404 writel(RK3328_INT_FINISH, &efuse->int_status); in rockchip_rk3328_efuse_read()
430 *buf = device_is_compatible(dev, "rockchip,rk3288-secure-efuse") ? in rockchip_efuse_capatiblity()
465 .compatible = "rockchip,rk1808-efuse",
470 .compatible = "rockchip,rk3288-secure-efuse",
475 .compatible = "rockchip,rk3066a-efuse",
479 .compatible = "rockchip,rk3188-efuse",
483 .compatible = "rockchip,rk322x-efuse",
487 .compatible = "rockchip,rk3328-efuse",
492 .compatible = "rockchip,rk3368-efuse",
497 .compatible = "rockchip,rk3399-efuse",