summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: bc51e68)
raw | patch | inline | side by side (parent: bc51e68)
author | Amit Makani <amit.makani@ti.com> | |
Tue, 5 Nov 2019 11:37:27 +0000 (17:07 +0530) | ||
committer | Amit Makani <amit.makani@ti.com> | |
Thu, 7 Nov 2019 14:49:23 +0000 (20:19 +0530) |
- This issue occurs when firmware binary is not present
in the rootfs so adding condition to check if firmware
is present or not.
Signed-off-by: Amit Makani <amit.makani@ti.com>
in the rootfs so adding condition to check if firmware
is present or not.
Signed-off-by: Amit Makani <amit.makani@ti.com>
driver/decoder/vxd_core.c | patch | blob | history | |
driver/decoder/vxd_dec.h | patch | blob | history | |
linux/decoder/vxd_v4l2.c | patch | blob | history |
index b959f94b24be87fb7a36015f9fb166a5cc8de299..e6371f26ce2fbbe267b2fcd95500508f2af35be5 100644 (file)
struct vxd_fw_hdr *hdr;
void *buf_kptr;
int32 ret;
+ size_t size;
+ const uint8 *data = NULL;
- size_t size = osa_get_fw_size(fw);
- const uint8 *data = osa_get_fw_data(fw);
+ if(!fw) {
+ OSA_DEV_ERR(vxd->dev, "Firmware binary is not present\n");
+ vxd->no_fw = 1;
+ return;
+ }
+
+ size = osa_get_fw_size(fw);
+ data = osa_get_fw_data(fw);
OSA_DEV_INFO(vxd->dev, "FW: acquired %s size %zu\n", drv_fw_name, size);
ret = osa_request_firmware_nowait(OSA_THIS_MODULE,
drv_fw_name, vxd->dev, vxd,
vxd_fw_loaded);
+
if (ret < 0) {
OSA_DEV_ERR(vxd->dev, "request_firmware_nowait err: %d\n", ret);
osa_complete_all(vxd->firmware_loading_complete);
index 2bbb86a9ecca24d9e44c5d38c588f66256b7ebdb..1d5d4df31bcbf7247c5386dcc5be39558ab7b48f 100644 (file)
--- a/driver/decoder/vxd_dec.h
+++ b/driver/decoder/vxd_dec.h
* @rendec_buf_id: buffer id for rendec buffer allocation
* @firmware: firmware information based on vxd_dev_fw structure
* @firmware_loading_complete: loading completion
+ * @no_fw: Just to check if firmware is present in /lib
* @fw_refcnt: firmware reference counter
* @hw_on: indication if hw is on or off
* @hw_dead: indication if hw is dead
int32 rendec_buf_id;
struct vxd_dev_fw firmware;
void *firmware_loading_complete;
+ uint8 no_fw;
uint8 fw_refcnt;
uint32 hw_on;
uint32 hw_dead;
index f5a31309fe4f1de3b1e916f8a87a735df7518355..cfe4d94c269023512f70a6c98692bd37bce69158 100644 (file)
--- a/linux/decoder/vxd_v4l2.c
+++ b/linux/decoder/vxd_v4l2.c
OSA_DEV_DBG(vxd->dev, "%s:%d vxd %p\n", __func__, __LINE__, vxd);
+ if(vxd->no_fw) {
+ OSA_DEV_ERR(vxd->dev, "Error!! fw binary is not present");
+ return -1;
+ }
+
osa_mutex_lock_nested(vxd->mutex, OSA_SUBCLASS_BASE);
ctx = osa_zalloc(sizeof(*ctx), OSA_GFP_KERNEL);
goto out_core_init;
}
+ if(vxd->no_fw) {
+ OSA_DEV_ERR(&pdev->dev, "%s fw acquire failed!", __func__);
+ goto out_core_init;
+ }
+
osa_spin_lock_create(&vxd->lock, VXD_DEC_SPIN_LOCK_NAME);
if(vxd->lock == NULL)
{