/* * osal_firmware.c * * osal driver * * Copyright (c) 2020-2021 Huawei Device Co., Ltd. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #include "osal_firmware.h" #include #include #include #include "hdf_log.h" #define HDF_LOG_TAG osal_fw int32_t OsalRequestFirmware(struct OsalFirmware *fwPara, const char *fwName, void *device) { const struct firmware *fw = NULL; int ret; if (fwPara == NULL || fwName == NULL) { HDF_LOGE("%s invalid param", __func__); return HDF_ERR_INVALID_PARAM; } ret = request_firmware(&fw, fwName, device); if (ret < 0) { fwPara->fwSize = 0; fwPara->para = NULL; HDF_LOGE("%s failure to request firmware file", __func__); return HDF_FAILURE; } fwPara->fwSize = fw->size; fwPara->para = (void *)fw; return HDF_SUCCESS; } EXPORT_SYMBOL(OsalRequestFirmware); int32_t OsalSeekFirmware(struct OsalFirmware *fwPara, uint32_t offset) { (void)fwPara; (void)offset; return HDF_SUCCESS; } EXPORT_SYMBOL(OsalSeekFirmware); int32_t OsalReadFirmware(struct OsalFirmware *fwPara, struct OsalFwBlock *block) { struct firmware *fw = NULL; if (fwPara == NULL || fwPara->para == NULL || block == NULL) { HDF_LOGE("%s invalid param", __func__); return HDF_ERR_INVALID_PARAM; } fw = (struct firmware *)fwPara->para; block->data = (uint8_t *)fw->data; block->dataSize = fwPara->fwSize; block->curOffset = 0; block->endFlag = true; return HDF_SUCCESS; } EXPORT_SYMBOL(OsalReadFirmware); int32_t OsalReleaseFirmware(struct OsalFirmware *fwPara) { if (fwPara == NULL || fwPara->para == NULL) { HDF_LOGE("%s invalid param", __func__); return HDF_ERR_INVALID_PARAM; } release_firmware((struct firmware *)fwPara->para); fwPara->para = NULL; return HDF_SUCCESS; } EXPORT_SYMBOL(OsalReleaseFirmware);