mirror of
https://github.com/patjak/facetimehd.git
synced 2026-04-09 19:10:01 +02:00
bcwc_pcie: set firmware args
This commit is contained in:
34
isp.c
34
isp.c
@@ -177,10 +177,12 @@ static int isp_load_firmware(struct bcwc_private *dev_priv)
|
||||
|
||||
int isp_init(struct bcwc_private *dev_priv)
|
||||
{
|
||||
struct isp_mem_obj *ipc_queue, *heap;
|
||||
struct isp_mem_obj *ipc_queue, *heap, *fw_args;
|
||||
u32 num_channels, queue_size, heap_size;
|
||||
u32 reg;
|
||||
int i, retries, ret;
|
||||
unsigned char *p;
|
||||
struct isp_fw_args *fw_args_data;
|
||||
|
||||
ret = isp_mem_init(dev_priv);
|
||||
if (ret)
|
||||
@@ -298,6 +300,36 @@ int isp_init(struct bcwc_private *dev_priv)
|
||||
|
||||
BCWC_ISP_REG_WRITE(heap->size, ISP_FW_HEAP_SIZE2);
|
||||
|
||||
/* Set FW args */
|
||||
fw_args = isp_mem_create(dev_priv, FTHD_MEM_FW_ARGS, sizeof(struct isp_fw_args));
|
||||
if (!fw_args)
|
||||
return -ENOMEM;
|
||||
|
||||
fw_args_data = dev_priv->s2_mem + fw_args->offset;
|
||||
|
||||
fw_args_data->__unknown = 2;
|
||||
fw_args_data->fw_arg = 0;
|
||||
fw_args_data->full_stats_mode = 0;
|
||||
|
||||
BCWC_ISP_REG_WRITE(fw_args->offset, ISP_REG_C301C);
|
||||
|
||||
BCWC_ISP_REG_WRITE(0x10, ISP_REG_41020);
|
||||
|
||||
for (retries = 0; retries < 1000; retries++) {
|
||||
reg = BCWC_ISP_REG_READ(ISP_REG_41000);
|
||||
if ((reg & 0xf0) > 0)
|
||||
break;
|
||||
mdelay(10);
|
||||
}
|
||||
|
||||
if (retries >= 1000) {
|
||||
dev_info(&dev_priv->pdev->dev, "Init failed! No second int\n");
|
||||
return -EIO;
|
||||
} /* FIXME: free on error path */
|
||||
|
||||
dev_info(&dev_priv->pdev->dev, "ISP second int after %dms\n",
|
||||
(retries - 1) * 10);
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user