nvmem: imx-ocotp-ele: support i.MX95
i.MX95 OCOTP has same accessing method, so add an entry for i.MX95, but some fuse has ECC feature, so only read out the lower 16bits for ECC fuses. Signed-off-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20240902142952.71639-3-srinivas.kandagatla@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8ca1cfd686
commit
c3f9b7b4e5
@ -14,8 +14,9 @@
|
||||
#include <linux/slab.h>
|
||||
|
||||
enum fuse_type {
|
||||
FUSE_FSB = 1,
|
||||
FUSE_ELE = 2,
|
||||
FUSE_FSB = BIT(0),
|
||||
FUSE_ELE = BIT(1),
|
||||
FUSE_ECC = BIT(2),
|
||||
FUSE_INVALID = -1
|
||||
};
|
||||
|
||||
@ -93,7 +94,10 @@ static int imx_ocotp_reg_read(void *context, unsigned int offset, void *val, siz
|
||||
continue;
|
||||
}
|
||||
|
||||
*buf++ = readl_relaxed(reg + (i << 2));
|
||||
if (type & FUSE_ECC)
|
||||
*buf++ = readl_relaxed(reg + (i << 2)) & GENMASK(15, 0);
|
||||
else
|
||||
*buf++ = readl_relaxed(reg + (i << 2));
|
||||
}
|
||||
|
||||
memcpy(val, (u8 *)p, bytes);
|
||||
@ -155,8 +159,30 @@ static const struct ocotp_devtype_data imx93_ocotp_data = {
|
||||
},
|
||||
};
|
||||
|
||||
static const struct ocotp_devtype_data imx95_ocotp_data = {
|
||||
.reg_off = 0x8000,
|
||||
.reg_read = imx_ocotp_reg_read,
|
||||
.size = 2048,
|
||||
.num_entry = 12,
|
||||
.entry = {
|
||||
{ 0, 1, FUSE_FSB | FUSE_ECC },
|
||||
{ 7, 1, FUSE_FSB | FUSE_ECC },
|
||||
{ 9, 3, FUSE_FSB | FUSE_ECC },
|
||||
{ 12, 24, FUSE_FSB },
|
||||
{ 36, 2, FUSE_FSB | FUSE_ECC },
|
||||
{ 38, 14, FUSE_FSB },
|
||||
{ 63, 1, FUSE_ELE },
|
||||
{ 128, 16, FUSE_ELE },
|
||||
{ 188, 1, FUSE_ELE },
|
||||
{ 317, 2, FUSE_FSB | FUSE_ECC },
|
||||
{ 320, 7, FUSE_FSB },
|
||||
{ 328, 184, FUSE_FSB }
|
||||
},
|
||||
};
|
||||
|
||||
static const struct of_device_id imx_ele_ocotp_dt_ids[] = {
|
||||
{ .compatible = "fsl,imx93-ocotp", .data = &imx93_ocotp_data, },
|
||||
{ .compatible = "fsl,imx95-ocotp", .data = &imx95_ocotp_data, },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, imx_ele_ocotp_dt_ids);
|
||||
|
Loading…
Reference in New Issue
Block a user