#define FIMC_IS_BAYER_IMG_WIDTH 2560
#define FIMC_IS_BAYER_IMG_HEIGHT 1440
+#define FIMC_IS_FRONT_SENSOR_NUM_BUFFERS 5
+#define FIMC_IS_FRONT_3AA1_NUM_BUFFERS 5
+#define FIMC_IS_FRONT_ISP_NUM_BUFFERS 5
+#define FIMC_IS_FRONT_SCC_NUM_BUFFERS 4
+#define FIMC_IS_FRONT_SCP_NUM_BUFFERS 4
+
#define FIMC_IS_REAR_SENSOR_NUM_BUFFERS 5
#define FIMC_IS_REAR_3AA0_NUM_BUFFERS 10
+#define FIMC_IS_REAR_3AA0C_NUM_BUFFERS 0
#define FIMC_IS_REAR_ISP_NUM_BUFFERS 5
#define FIMC_IS_REAR_SCC_NUM_BUFFERS 4
#define FIMC_IS_REAR_SCP_NUM_BUFFERS 4
-#define FIMC_IS_FRONT_3AA1_NUM_BUFFERS 5
-
extern const CAMERASRC_DEV_DEPENDENT_MISC_FUNC *dev_misc_func;
/** proto type of internal function **/
V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
V4L2_MEMORY_DMABUF,
&buf_index_3aa_out,
- p->buffer_ta[0].num_planes);
+ p->buffer_3aa_out[0].num_planes);
if (ret != CAMERASRC_SUCCESS) {
camsrc_error("[3AA0 OUTPUT] _camerasrc_ioctl_dqbuf failed");
break;
}
/* Set ISP metadata */
- shot_3aa = (struct camera2_shot_ext *)p->buffer_ta[buf_index_3aa_out].planes[1].start;
+ shot_3aa = (struct camera2_shot_ext *)p->buffer_3aa_out[buf_index_3aa_out].planes[1].start;
memcpy(&shot_isp->shot.ctl, &shot_3aa->shot.ctl, sizeof(struct camera2_ctl) - sizeof(struct camera2_entry_ctl));
memcpy(&shot_isp->shot.udm, &shot_3aa->shot.udm, sizeof(struct camera2_udm));
p->qbuf_count_sensor++;
- shot_3aa = (struct camera2_shot_ext *)p->buffer_ta[buf_index_3aa_out].planes[1].start;
+ shot_3aa = (struct camera2_shot_ext *)p->buffer_3aa_out[buf_index_3aa_out].planes[1].start;
_camerasrc_set_shot_meta2(p, GRP_3AA, 0, 0, shot_3aa);
/* 3AA0 OUTPUT - QBUF */
V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
V4L2_MEMORY_DMABUF,
buf_index_3aa_out,
- &p->buffer_ta[buf_index_3aa_out]);
+ &p->buffer_3aa_out[buf_index_3aa_out]);
if (ret != CAMERASRC_SUCCESS) {
camsrc_error("[3AA0 - OUTPUT] _camerasrc_ioctl_qbuf index %d, failed[%x]",
V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
V4L2_MEMORY_DMABUF,
&buf_index_3aa_out,
- p->buffer_ta[0].num_planes);
+ p->buffer_3aa_out[0].num_planes);
}
while (p->qbuf_count_3aa_cap-- > 1) {
p = CAMERASRC_HANDLE(handle);
- if (p->buffer_sensor || p->buffer_ta || p->buffer_isp || p->buffer_scc || p->buffer_scp) {
+ if (p->buffer_sensor || p->buffer_3aa_out || p->buffer_isp || p->buffer_scc || p->buffer_scp) {
camsrc_warning("release remained buffer");
camerasrc_destroy_buffer(handle);
}
preview_width = p->format_scp.img_size.width;
preview_height = p->format_scp.img_size.height;
- p->format_3aa1.num_buffers = FIMC_IS_FRONT_3AA1_NUM_BUFFERS;
-
/**
* buffer allocation
*/
if (p->cur_dev_id == CAMERASRC_DEV_ID_PRIMARY) {
/* TA */
- camsrc_warning("buffer_ta allocation");
+ camsrc_warning("buffer_3aa_out allocation");
buffer_size[0] = 4096; //(64 + 9) / 10 * 16 * 32;;
buffer_size[1] = META_PLANE_SIZE;
buffer_size[2] = 0;
buffer_size[3] = 0;
- p->format_ta.num_buffers = 10;
-
- if (_camerasrc_allocate_device_buffer(handle, &p->buffer_ta, &p->format_ta, buffer_size, 2) != CAMERASRC_SUCCESS) {
- camsrc_error("alloc buffer_ta failed");
+ if (_camerasrc_allocate_device_buffer(handle, &p->buffer_3aa_out, &p->format_3aa0_out,
+ buffer_size, 2) != CAMERASRC_SUCCESS) {
+ camsrc_error("alloc buffer_3aa_out failed");
goto CREATE_BUFFER_FAILED;
}
buffer_size[2] = 0;
buffer_size[3] = 0;
- p->format_isp.num_buffers = 5;
-
if (_camerasrc_allocate_device_buffer(handle, &p->buffer_isp, &p->format_isp, buffer_size, 2) != CAMERASRC_SUCCESS) {
camsrc_error("alloc buffer_isp failed");
goto CREATE_BUFFER_FAILED;
buffer_size[2] = 0;
buffer_size[3] = 0;
- p->format_sensor.num_buffers = 5;
-
if (_camerasrc_allocate_device_buffer(handle, &p->buffer_sensor, &p->format_sensor, buffer_size, 2) != CAMERASRC_SUCCESS) {
camsrc_error("alloc buffer_sensor failed");
goto CREATE_BUFFER_FAILED;
buffer_size[2] = 0;
buffer_size[3] = 0;
- p->format_sensor.num_buffers = FIMC_IS_REAR_SENSOR_NUM_BUFFERS;
-
if (_camerasrc_allocate_device_buffer(handle, &p->buffer_sensor, &p->format_sensor, buffer_size, 2) != CAMERASRC_SUCCESS) {
camsrc_error("alloc buffer_sensor failed");
goto CREATE_BUFFER_FAILED;
}
/* ISP */
- p->format_isp.num_buffers = FIMC_IS_REAR_ISP_NUM_BUFFERS;
-
if (_camerasrc_allocate_device_buffer(handle, &p->buffer_isp, &p->format_isp, buffer_size, 2) != CAMERASRC_SUCCESS) {
camsrc_error("alloc buffer_isp failed");
goto CREATE_BUFFER_FAILED;
}
/* SCC */
- p->format_scc.num_buffers = FIMC_IS_REAR_SCC_NUM_BUFFERS;
-
if (_camerasrc_allocate_device_buffer(handle, &p->buffer_scc, &p->format_scc, buffer_size, 2) != CAMERASRC_SUCCESS) {
camsrc_error("alloc buffer_scc failed");
goto CREATE_BUFFER_FAILED;
/* buffer - ta */
camsrc_warning("ta");
- _camerasrc_release_device_buffer(p->buffer_ta, p->format_ta.num_buffers);
- p->buffer_ta = NULL;
+
+ if (p->format_3aa0_out.num_buffers) {
+ _camerasrc_release_device_buffer(p->buffer_3aa_out, p->format_3aa0_out.num_buffers);
+ p->buffer_3aa_out = NULL;
+ } else if (p->format_3aa1.num_buffers) {
+ _camerasrc_release_device_buffer(p->buffer_3aa_out, p->format_3aa1.num_buffers);
+ p->buffer_3aa_out = NULL;
+ }
/* buffer - isp */
camsrc_warning("isp");
/* 3AA0_OUTPUT format */
type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
- p->format_3aa0.img_size.width = 32;
- p->format_3aa0.img_size.height = 64;
- p->format_3aa0.pix_format = CAMERASRC_PIX_SBGGR12;
+ p->format_3aa0_out.img_size.width = 32;
+ p->format_3aa0_out.img_size.height = 64;
+ p->format_3aa0_out.pix_format = CAMERASRC_PIX_SBGGR12;
- err = _camerasrc_ioctl_s_fmt(p, p->fd_3aa0, type, &p->format_3aa0);
+ err = _camerasrc_ioctl_s_fmt(p, p->fd_3aa0, type, &p->format_3aa0_out);
if (err != CAMERASRC_SUCCESS) {
strerror_r(p->errnum, err_msg, CAMERASRC_ERRMSG_MAX_LEN);
camsrc_error("[3AA0_OUTPUT] _camerasrc_ioctl_s_fmt failed[%x] : %s", err, err_msg);
}
/* 3AA0_OUTPUT reqbufs */
- p->format_3aa0.num_buffers = FIMC_IS_REAR_3AA0_NUM_BUFFERS;
- type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
- err = _camerasrc_ioctl_reqbufs(p, p->fd_3aa0, p->format_3aa0.num_buffers,
- type, V4L2_MEMORY_DMABUF, &p->format_3aa0.num_buffers);
+ err = _camerasrc_ioctl_reqbufs(p, p->fd_3aa0, p->format_3aa0_out.num_buffers,
+ type, V4L2_MEMORY_DMABUF, &p->format_3aa0_out.num_buffers);
if (err != CAMERASRC_SUCCESS) {
strerror_r(p->errnum, err_msg, CAMERASRC_ERRMSG_MAX_LEN);
camsrc_error("[3AA0_OUTPUT] _camerasrc_ioctl_reqbufs failed[%x] : %s", err, err_msg);
/* 3AA0_CAPTURE format */
type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
- p->format_3aa0.img_size.width = p->format_isp.img_size.width;
- p->format_3aa0.img_size.height = p->format_isp.img_size.height;
- p->format_3aa0.pix_format = CAMERASRC_PIX_SBGGR12;
+ p->format_3aa0_cap.img_size.width = p->format_isp.img_size.width;
+ p->format_3aa0_cap.img_size.height = p->format_isp.img_size.height;
+ p->format_3aa0_cap.pix_format = CAMERASRC_PIX_SBGGR12;
- err = _camerasrc_ioctl_s_fmt(p, p->fd_3aa0, type, &p->format_3aa0);
+ err = _camerasrc_ioctl_s_fmt(p, p->fd_3aa0, type, &p->format_3aa0_cap);
if (err != CAMERASRC_SUCCESS) {
strerror_r(p->errnum, err_msg, CAMERASRC_ERRMSG_MAX_LEN);
camsrc_error("[3AA0_CAPTURE] _camerasrc_ioctl_s_fmt failed[%x] : %s", err, err_msg);
}
/* 3AA0_CAPTURE reqbufs */
- type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
- err = _camerasrc_ioctl_reqbufs(p, p->fd_3aa0, p->format_3aa0.num_buffers,
- type, V4L2_MEMORY_DMABUF, &p->format_3aa0.num_buffers);
+ err = _camerasrc_ioctl_reqbufs(p, p->fd_3aa0, p->format_3aa0_cap.num_buffers,
+ type, V4L2_MEMORY_DMABUF, &p->format_3aa0_cap.num_buffers);
if (err != CAMERASRC_SUCCESS) {
strerror_r(p->errnum, err_msg, CAMERASRC_ERRMSG_MAX_LEN);
camsrc_error("[3AA0_CAPTURE] _camerasrc_ioctl_reqbufs failed[%x] : %s", err, err_msg);
}
/* 3AA0C reqbufs */
- p->format_3aa0c.num_buffers = 5;
- type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
- err = _camerasrc_ioctl_reqbufs(p, p->fd_3aa0c, p->format_3aa0c.num_buffers,
+ if (p->format_3aa0c.num_buffers > 0) {
+ type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+ err = _camerasrc_ioctl_reqbufs(p, p->fd_3aa0c, p->format_3aa0c.num_buffers,
type, V4L2_MEMORY_DMABUF, &p->format_3aa0c.num_buffers);
- if (err != CAMERASRC_SUCCESS) {
- strerror_r(p->errnum, err_msg, CAMERASRC_ERRMSG_MAX_LEN);
- camsrc_error("[3AA0C] _camerasrc_ioctl_reqbufs failed[%x] : %s", err, err_msg);
- return CAMERASRC_ERR_IO_CONTROL;
+ if (err != CAMERASRC_SUCCESS) {
+ strerror_r(p->errnum, err_msg, CAMERASRC_ERRMSG_MAX_LEN);
+ camsrc_error("[3AA0C] _camerasrc_ioctl_reqbufs failed[%x] : %s", err, err_msg);
+ return CAMERASRC_ERR_IO_CONTROL;
+ }
}
p->reqbuf_3aa0c_capture = TRUE;
if (p->cur_dev_id == CAMERASRC_DEV_ID_PRIMARY) {
/* 3AA buffers qbuf */
for (i = 0 ; i < p->format_isp.num_buffers; i++) {
- struct camera2_shot_ext *shot_3aa = (struct camera2_shot_ext *)p->buffer_ta[i].planes[1].start;
+ struct camera2_shot_ext *shot_3aa = (struct camera2_shot_ext *)p->buffer_3aa_out[i].planes[1].start;
err = _camerasrc_set_shot_meta2(p, GRP_3AA, 0, 0, shot_3aa);
if (err != CAMERASRC_SUCCESS) {
V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
V4L2_MEMORY_DMABUF,
i,
- &p->buffer_ta[i]);
+ &p->buffer_3aa_out[i]);
if (err != CAMERASRC_SUCCESS) {
camsrc_error("[3AA0_OUTPUT - TA] _camerasrc_ioctl_qbuf index %d, failed[%x]", i, err);
return CAMERASRC_ERR_IO_CONTROL;
p->format_sensor.img_size.height = PRIMARY_SENSOR_HEIGHT;
+ p->format_sensor.num_buffers = FIMC_IS_REAR_SENSOR_NUM_BUFFERS;
+ p->format_3aa0_out.num_buffers = FIMC_IS_REAR_3AA0_NUM_BUFFERS;
+ p->format_3aa0_cap.num_buffers = FIMC_IS_REAR_3AA0_NUM_BUFFERS;
+ p->format_3aa0c.num_buffers = FIMC_IS_REAR_3AA0C_NUM_BUFFERS;
+ p->format_isp.num_buffers = FIMC_IS_REAR_ISP_NUM_BUFFERS;
p->format_scp.num_buffers = FIMC_IS_REAR_SCP_NUM_BUFFERS;
+ p->format_scc.num_buffers = FIMC_IS_REAR_SCC_NUM_BUFFERS;
} else {
+ p->format_sensor.num_buffers = FIMC_IS_FRONT_SENSOR_NUM_BUFFERS;
+ p->format_3aa1.num_buffers = FIMC_IS_FRONT_3AA1_NUM_BUFFERS;
+ p->format_isp.num_buffers = FIMC_IS_FRONT_ISP_NUM_BUFFERS;
p->format_scp.num_buffers = CAMERASRC_PREVIEW_BUFFER_NUM_SECONDARY;
+ p->format_scc.num_buffers = FIMC_IS_FRONT_SCC_NUM_BUFFERS;
}
switch (fmt->pix_format) {