Hi all,
I'm working on implementing auto focus function of ISP on iMX8M Plus under Android for AR1335 camera with DW9790 focus lens driver.
I was able to compile libar1335.so for ISP-IMX and getting image and even see ISP trying to set focus (based on TRACE/DEBUG output). DW9790 driver inserted successfully too, but where are no IOCTL calls to it to set/change focus. Now I noticed that all ISI focus related methods are empty for the only sources code example available to public, specifically OS08A20.c
So, my question, do I have to implement them and if so, where I can get an example ?
Or I'm on the wrong path ?
Thank you in advance!
static RESULT AR1335_IsiFocusSetupIss(IsiSensorHandle_t handle)
{
TRACE(AR1335_INFO, "%s (enter)\n", __func__);
TRACE(AR1335_INFO, "%s: (exit)\n", __func__);
return RET_SUCCESS;
}
static RESULT AR1335_IsiFocusReleaseIss(IsiSensorHandle_t handle)
{
TRACE(AR1335_INFO, "%s (enter)\n", __func__);
TRACE(AR1335_INFO, "%s: (exit)\n", __func__);
return RET_SUCCESS;
}
static RESULT AR1335_IsiFocusGetIss(IsiSensorHandle_t handle, IsiFocusPos_t *pPos)
{
TRACE(AR1335_INFO, "%s (enter)\n", __func__);
TRACE(AR1335_INFO, "%s: (exit)\n", __func__);
return RET_SUCCESS;
}
static RESULT AR1335_IsiFocusSetIss(IsiSensorHandle_t handle, IsiFocusPos_t *pPos)
{
TRACE(AR1335_INFO, "%s (enter)\n", __func__);
TRACE(AR1335_INFO, "%s: (exit)\n", __func__);
return RET_SUCCESS;
}
static RESULT AR1335_IsiGetFocusCalibrateIss(IsiSensorHandle_t handle, IsiFoucsCalibAttr_t *pFocusCalib)
{
TRACE(AR1335_INFO, "%s (enter)\n", __func__);
TRACE(AR1335_INFO, "%s: (exit)\n", __func__);
return RET_SUCCESS;
}
Hi @DVideray
You must be using quite old version of isp-imx.
In newer version (I believe from v18 on. Current version is v22 if I am not wrong) these functions are implemented.
For example, if you download and deploy (simply execute *.bin file on Ubuntu host), you will see that all above function are filled with life.
isp-imx v20 (in link bellow, you can replace 20 with other numbers to download the version u want):
https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/isp-imx-4.2.2.20.0.bin
AR1335.c (with implemented AutoFocus fuctions) and dewarp XML and JSON files from ISP-IMX/units/isi/drv directory present in original 4.2.2p18 release, but deleted afterwards.
I also interested in reasons why it was removed after releasing. It doesn't work properly? Some kind of NDA violations? or what ?
It's worse! Support for ar1335 and Auto-Focus removed from all releases, including 4.2.2p18 and p19.
I hope to get some explanation and future release plans, so we can plan HW/SW development on our end.
I don't think we have tested this driver(ar1335_mipi_v3.c) since current nxp imx8mp board doesn't support ar1335 as default, but I found internal team tested ar1335 on nxp converter board, but I couldn't share the patches here, if you need it, let me check how you can get it
Correct. Current example of sensor driver for OS08A20.c for ISP looks like this:
static RESULT OS08A20_IsiFocusSetupIss(IsiSensorHandle_t handle)
{
TRACE(OS08A20_INFO, "%s (enter)\n", __func__);
TRACE(OS08A20_INFO, "%s: (exit)\n", __func__);
return RET_NOTSUPP;
}
static RESULT OS08A20_IsiFocusReleaseIss(IsiSensorHandle_t handle)
{
TRACE(OS08A20_INFO, "%s (enter)\n", __func__);
TRACE(OS08A20_INFO, "%s: (exit)\n", __func__);
return RET_SUCCESS;
}
static RESULT OS08A20_IsiFocusGetIss(IsiSensorHandle_t handle, IsiFocusPos_t *pPos)
{
TRACE(OS08A20_INFO, "%s (enter)\n", __func__);
TRACE(OS08A20_INFO, "%s: (exit)\n", __func__);
return RET_SUCCESS;
}
static RESULT OS08A20_IsiFocusSetIss(IsiSensorHandle_t handle, IsiFocusPos_t *pPos)
{
TRACE(OS08A20_INFO, "%s (enter)\n", __func__);
TRACE(OS08A20_INFO, "%s: (exit)\n", __func__);
return RET_SUCCESS;
}
static RESULT OS08A20_IsiGetFocusCalibrateIss(IsiSensorHandle_t handle, IsiFoucsCalibAttr_t *pFocusCalib)
{
TRACE(OS08A20_INFO, "%s (enter)\n", __func__);
TRACE(OS08A20_INFO, "%s: (exit)\n", __func__);
return RET_SUCCESS;
}