/** * struct xilinx_efuse - the basic structure * @src: address of the buffer to store the data to be write/read * @size: read/write word count * @offset: read/write offset * @flag: 0 - represents efuse read and 1- represents efuse write * @pufuserfuse:0 - represents non-puf efuses, offset is used for read/write * 1 - represents puf user fuse row number. * * this structure stores all the required details to * read/write efuse memory.
*/ struct xilinx_efuse {
u64 src;
u32 size;
u32 offset; enum efuse_access flag;
u32 pufuserfuse;
};
if (bytes % WORD_INBYTES != 0) {
dev_err(dev, "Bytes requested should be word aligned\n"); return -EOPNOTSUPP;
}
if (pufflag == 0 && offset % WORD_INBYTES) {
dev_err(dev, "Offset requested should be word aligned\n"); return -EOPNOTSUPP;
}
if (pufflag == 1 && flag == EFUSE_WRITE) {
memcpy(&value, val, bytes); if ((offset == EFUSE_PUF_START_OFFSET ||
offset == EFUSE_PUF_MID_OFFSET) &&
value & P_USER_0_64_UPPER_MASK) {
dev_err(dev, "Only lower 4 bytes are allowed to be programmed in P_USER_0 & P_USER_64\n"); return -EOPNOTSUPP;
}
if (offset == EFUSE_PUF_END_OFFSET &&
(value & P_USER_127_LOWER_4_BIT_MASK)) {
dev_err(dev, "Only MSB 28 bits are allowed to be programmed for P_USER_127\n"); return -EOPNOTSUPP;
}
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.5Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.