Lines Matching +full:otp +full:- +full:2
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Renesas R-Car E-FUSE/OTP Driver
12 #include <linux/nvmem-provider.h>
18 struct nvmem_keepout keepouts[2];
25 unsigned int bank; /* 0: PFC + E-FUSE, 1: OPT_MEM + E-FUSE */
36 ret = pm_runtime_resume_and_get(fuse->dev); in rcar_fuse_reg_read()
40 __ioread32_copy(val, fuse->base + offset, bytes / 4); in rcar_fuse_reg_read()
42 pm_runtime_put(fuse->dev); in rcar_fuse_reg_read()
49 struct device *dev = &pdev->dev; in rcar_fuse_probe()
53 .name = "rcar-fuse", in rcar_fuse_probe()
73 return -ENOMEM; in rcar_fuse_probe()
75 fuse->base = devm_platform_get_and_ioremap_resource(pdev, data->bank, in rcar_fuse_probe()
77 if (IS_ERR(fuse->base)) in rcar_fuse_probe()
78 return PTR_ERR(fuse->base); in rcar_fuse_probe()
80 fuse->dev = dev; in rcar_fuse_probe()
81 fuse->keepouts[0].start = 0; in rcar_fuse_probe()
82 fuse->keepouts[0].end = data->start; in rcar_fuse_probe()
83 fuse->keepouts[1].start = data->end; in rcar_fuse_probe()
84 fuse->keepouts[1].end = resource_size(res); in rcar_fuse_probe()
86 config.keepout = fuse->keepouts; in rcar_fuse_probe()
87 config.nkeepout = ARRAY_SIZE(fuse->keepouts); in rcar_fuse_probe()
91 fuse->nvmem = devm_nvmem_register(dev, &config); in rcar_fuse_probe()
92 if (IS_ERR(fuse->nvmem)) in rcar_fuse_probe()
93 return dev_err_probe(dev, PTR_ERR(fuse->nvmem), in rcar_fuse_probe()
124 { .compatible = "renesas,r8a779a0-efuse", .data = &rcar_fuse_v3u },
125 { .compatible = "renesas,r8a779f0-efuse", .data = &rcar_fuse_s4 },
126 { .compatible = "renesas,r8a779g0-otp", .data = &rcar_fuse_v4h },
127 { .compatible = "renesas,r8a779h0-otp", .data = &rcar_fuse_v4m },
141 MODULE_DESCRIPTION("Renesas R-Car E-FUSE/OTP driver");