/* SPDX-License-Identifier: GPL-2.0-only */ #include #include #include #define print(_x_...) printk(BIOS_INFO, _x_) struct dramc_param *get_dramc_param_from_blob(void *blob) { return (struct dramc_param *)blob; } void dump_param_header(const void *blob) { const struct dramc_param *dparam = blob; const struct dramc_param_header *header = &dparam->header; print("header.status = %#x\n", header->status); print("header.version = %#x (expected: %#x)\n", header->version, DRAMC_PARAM_HEADER_VERSION); print("header.size = %#x (expected: %#lx)\n", header->size, sizeof(*dparam)); print("header.flags = %#x\n", header->flags); print("header.checksum = %#x\n", header->checksum); } int validate_dramc_param(const void *blob) { const struct dramc_param *param = blob; const struct dramc_param_header *hdr = ¶m->header; if (hdr->version != DRAMC_PARAM_HEADER_VERSION) return DRAMC_ERR_INVALID_VERSION; if (hdr->size != sizeof(*param)) return DRAMC_ERR_INVALID_SIZE; return DRAMC_SUCCESS; } int is_valid_dramc_param(const void *blob) { return validate_dramc_param(blob) == DRAMC_SUCCESS; } int initialize_dramc_param(void *blob) { struct dramc_param *param = blob; struct dramc_param_header *hdr = ¶m->header; memset(hdr, 0, sizeof(*hdr)); hdr->version = DRAMC_PARAM_HEADER_VERSION; hdr->size = sizeof(*param); return 0; }