video: driver: Set lx arch to fw before fw boot
To simplify the boot process, firmware needs to know the type of architecture before it boots up. Change-Id: I42ff87094b816f9783d18fa67126e9b7a4dab320 Signed-off-by: Chinmay Sawarkar <chinmays@codeaurora.org>
Этот коммит содержится в:
@@ -92,7 +92,6 @@ enum hfi_buffer_type {
|
||||
HFI_BUFFER_RAW = 0x00000002,
|
||||
HFI_BUFFER_METADATA = 0x00000003,
|
||||
HFI_BUFFER_SUBCACHE = 0x00000004,
|
||||
HFI_BUFFER_SFR = 0x00000005,
|
||||
HFI_BUFFER_DPB = 0x00000006,
|
||||
HFI_BUFFER_BIN = 0x00000007,
|
||||
HFI_BUFFER_LINE = 0x00000008,
|
||||
|
@@ -2580,7 +2580,7 @@ int msm_vidc_core_init(struct msm_vidc_core *core)
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
d_vpr_h("%s(): waiting for sys init done, %d ms\n", __func__,
|
||||
d_vpr_h("%s(): waiting for sys_init_done, %d ms\n", __func__,
|
||||
core->capabilities[HW_RESPONSE_TIMEOUT].value);
|
||||
core_unlock(core, __func__);
|
||||
rc = wait_for_completion_timeout(&core->init_done, msecs_to_jiffies(
|
||||
|
@@ -2605,48 +2605,6 @@ static int __sys_init(struct msm_vidc_core *core)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __queue_sfr_buffer(struct msm_vidc_core *core)
|
||||
{
|
||||
int rc = 0;
|
||||
struct hfi_buffer buf;
|
||||
|
||||
memset(&buf, 0, sizeof(struct hfi_buffer));
|
||||
buf.type = HFI_BUFFER_SFR;
|
||||
buf.index = 0;
|
||||
buf.base_address = core->sfr.align_device_addr;
|
||||
buf.addr_offset = 0;
|
||||
buf.buffer_size = core->sfr.mem_size;
|
||||
buf.data_offset = 0;
|
||||
buf.data_size = 0;
|
||||
buf.timestamp = 0;
|
||||
buf.flags = 0;
|
||||
|
||||
rc = hfi_create_header(core->packet, core->packet_size,
|
||||
0, core->header_id++);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = hfi_create_packet(core->packet,
|
||||
core->packet_size,
|
||||
HFI_CMD_BUFFER,
|
||||
HFI_BUF_HOST_FLAG_NONE,
|
||||
HFI_PAYLOAD_STRUCTURE,
|
||||
HFI_PORT_NONE,
|
||||
core->packet_id++,
|
||||
&buf,
|
||||
sizeof(buf));
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = __iface_cmdq_write(core, core->packet);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
d_vpr_h("SFR buffer packet queued\n");
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int __sys_image_version(struct msm_vidc_core *core)
|
||||
{
|
||||
int rc = 0;
|
||||
@@ -2709,10 +2667,6 @@ int venus_hfi_core_init(struct msm_vidc_core *core)
|
||||
if (rc)
|
||||
goto error;
|
||||
|
||||
rc = __queue_sfr_buffer(core);
|
||||
if (rc)
|
||||
goto error;
|
||||
|
||||
rc = __sys_image_version(core);
|
||||
if (rc)
|
||||
goto error;
|
||||
|
@@ -278,6 +278,8 @@ static int handle_system_init(struct msm_vidc_core *core,
|
||||
if (pkt->flags & HFI_FW_FLAGS_SUCCESS) {
|
||||
d_vpr_h("%s: successful\n", __func__);
|
||||
complete(&core->init_done);
|
||||
} else {
|
||||
d_vpr_h("%s: unhandled. flags=%d\n", __func__, pkt->flags);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Ссылка в новой задаче
Block a user