Lines Matching +full:otp +full:- +full:size
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Rockchip Secure OTP Driver
6 * Author: Hisping <hisping.lin@rock-chips.com>
15 #include <linux/nvmem-provider.h>
36 int size; member
39 int (*init)(struct rockchip_otp *otp);
44 if (ver->impl_id == TEE_IMPL_ID_OPTEE) in optee_ctx_match()
51 * func: read data from non-protected oem zone in secure otp
71 return -EINVAL; in rockchip_read_oem_non_protected_otp()
78 /* Open context with OP-TEE driver */ in rockchip_read_oem_non_protected_otp()
82 rc = -ENODEV; in rockchip_read_oem_non_protected_otp()
95 rc = -EINVAL; in rockchip_read_oem_non_protected_otp()
123 param[1].u.memref.size = shm_size; in rockchip_read_oem_non_protected_otp()
129 rc = -EINVAL; in rockchip_read_oem_non_protected_otp()
136 rc = -EINVAL; in rockchip_read_oem_non_protected_otp()
154 * func: write data to non-protected oem zone in secure otp
174 return -EINVAL; in rockchip_write_oem_non_protected_otp()
181 /* Open context with OP-TEE driver */ in rockchip_write_oem_non_protected_otp()
185 rc = -ENODEV; in rockchip_write_oem_non_protected_otp()
198 rc = -EINVAL; in rockchip_write_oem_non_protected_otp()
215 rc = -EINVAL; in rockchip_write_oem_non_protected_otp()
234 param[1].u.memref.size = shm_size; in rockchip_write_oem_non_protected_otp()
240 rc = -EINVAL; in rockchip_write_oem_non_protected_otp()
259 struct rockchip_otp *otp = context; in rockchip_secure_otp_read() local
260 int ret = -EINVAL; in rockchip_secure_otp_read()
262 if (otp->data && otp->data->reg_read) in rockchip_secure_otp_read()
263 ret = otp->data->reg_read(offset, val, bytes); in rockchip_secure_otp_read()
271 struct rockchip_otp *otp = context; in rockchip_secure_otp_write() local
272 int ret = -EINVAL; in rockchip_secure_otp_write()
274 if (otp->data && otp->data->reg_write) in rockchip_secure_otp_write()
275 ret = otp->data->reg_write(offset, val, bytes); in rockchip_secure_otp_write()
281 .name = "rockchip-secure-otp",
297 .compatible = "rockchip,secure-otp",
306 struct device *dev = &pdev->dev; in rockchip_secure_otp_probe()
307 struct rockchip_otp *otp; in rockchip_secure_otp_probe() local
316 return -EINVAL; in rockchip_secure_otp_probe()
319 ret = device_property_read_u32(dev, "rockchip,otp-size", &otp_size); in rockchip_secure_otp_probe()
321 dev_err(dev, "otp size parameter not specified\n"); in rockchip_secure_otp_probe()
322 return -EINVAL; in rockchip_secure_otp_probe()
324 dev_err(dev, "otp size must be > 0\n"); in rockchip_secure_otp_probe()
325 return -EINVAL; in rockchip_secure_otp_probe()
328 otp = devm_kzalloc(&pdev->dev, sizeof(struct rockchip_otp), in rockchip_secure_otp_probe()
330 if (!otp) in rockchip_secure_otp_probe()
331 return -ENOMEM; in rockchip_secure_otp_probe()
333 otp->data = data; in rockchip_secure_otp_probe()
334 otp->dev = dev; in rockchip_secure_otp_probe()
336 otp->config = &otp_config; in rockchip_secure_otp_probe()
337 otp->config->size = otp_size; in rockchip_secure_otp_probe()
338 otp->config->priv = otp; in rockchip_secure_otp_probe()
339 otp->config->dev = dev; in rockchip_secure_otp_probe()
341 if (data->init) { in rockchip_secure_otp_probe()
342 ret = data->init(otp); in rockchip_secure_otp_probe()
347 nvmem = devm_nvmem_register(dev, otp->config); in rockchip_secure_otp_probe()
355 .name = "rockchip-secure-otp",
366 pr_err("failed to register secure otp driver\n"); in rockchip_secure_otp_init()
381 MODULE_DESCRIPTION("Rockchip Secure OTP Driver");