// SPDX-License-Identifier: GPL-2.0-only /* * ONIE tlv NVMEM cells provider * * Copyright (C) 2022 Open Compute Group ONIE * Author: Miquel Raynal <miquel.raynal@bootlin.com> * Based on the nvmem driver written by: Vadym Kochan <vadym.kochan@plvision.eu> * Inspired by the first layout written by: Rafał Miłecki <rafal@milecki.pl>
*/
staticconstchar *onie_tlv_cell_name(u8 type)
{ switch (type) { case 0x21: return"product-name"; case 0x22: return"part-number"; case 0x23: return"serial-number"; case 0x24: return"mac-address"; case 0x25: return"manufacture-date"; case 0x26: return"device-version"; case 0x27: return"label-revision"; case 0x28: return"platform-name"; case 0x29: return"onie-version"; case 0x2A: return"num-macs"; case 0x2B: return"manufacturer"; case 0x2C: return"country-code"; case 0x2D: return"vendor"; case 0x2E: return"diag-version"; case 0x2F: return"service-tag"; case 0xFD: return"vendor-extension"; case 0xFE: return"crc32"; default: break;
}
/* The table contains a JAMCRC, which is XOR'ed compared to the original * CRC32 implementation as known in the Ethernet world.
*/
memcpy(&crc_be, table + table_len - ONIE_TLV_CRC_SZ, ONIE_TLV_CRC_SZ);
read_crc = be32_to_cpu(crc_be);
calc_crc = crc32(~0, table, table_len - ONIE_TLV_CRC_SZ) ^ 0xFFFFFFFF; if (read_crc != calc_crc) {
dev_err(dev, "Invalid CRC read: 0x%08x, expected: 0x%08x\n",
read_crc, calc_crc); returnfalse;
}
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.