CHROMIUM: media: rockchip/isp1: Replace stream state with a boolean

The rkisp1_state enum consists only of 3 entries, where 1 is completely
unused and the other two respectively mean not streaming or streaming.
Replace it with a boolean called "streaming".

While at it, remove "saved_state" member from rkisp1_stream struct, as
it is not used anywhere.

BUG=b:78779539
TEST=Make sure camera works on scarlet.

Change-Id: I329b62951e214a25ac35a5c189814cebba26dbf1
Signed-off-by: Tomasz Figa <tfiga@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1059006
Tested-by: yichong zhong <zyc@rock-chips.com>
Reviewed-by: Ricky Liang <jcliang@chromium.org>
Reviewed-by: yichong zhong <zyc@rock-chips.com>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
This commit is contained in:
Tomasz Figa
2018-05-15 15:47:47 +09:00
committed by Tao Huang
parent 477ba003e2
commit 697ee6a0fb
4 changed files with 28 additions and 38 deletions

View File

@@ -878,7 +878,7 @@ static void mp_stop_mi(struct rkisp1_stream *stream)
{
void __iomem *base = stream->ispdev->base_addr;
if (stream->state != RKISP1_STATE_STREAMING)
if (!stream->streaming)
return;
stream->ops->clr_frame_end_int(base);
stream->ops->disable_mi(stream);
@@ -888,7 +888,7 @@ static void sp_stop_mi(struct rkisp1_stream *stream)
{
void __iomem *base = stream->ispdev->base_addr;
if (stream->state != RKISP1_STATE_STREAMING)
if (!stream->streaming)
return;
stream->ops->clr_frame_end_int(base);
stream->ops->disable_mi(stream);
@@ -980,13 +980,13 @@ static void rkisp1_stream_stop(struct rkisp1_stream *stream)
stream->stopping = true;
ret = wait_event_timeout(stream->done,
stream->state != RKISP1_STATE_STREAMING,
!stream->streaming,
msecs_to_jiffies(1000));
if (!ret) {
v4l2_warn(v4l2_dev, "waiting on event return error %d\n", ret);
stream->ops->stop_mi(stream);
stream->stopping = false;
stream->state = RKISP1_STATE_READY;
stream->streaming = false;
}
disable_dcrop(stream, true);
disable_rsz(stream, true);
@@ -1022,11 +1022,11 @@ static int rkisp1_start(struct rkisp1_stream *stream)
* also required because the sencond FE maybe corrupt especially
* when run at 120fps.
*/
if (other->state != RKISP1_STATE_STREAMING) {
if (!other->streaming) {
force_cfg_update(base);
mi_frame_end(stream);
}
stream->state = RKISP1_STATE_STREAMING;
stream->streaming = true;
return 0;
}
@@ -1100,7 +1100,7 @@ static void rkisp1_buf_queue(struct vb2_buffer *vb)
spin_lock_irqsave(&stream->vbq_lock, lock_flags);
/* XXX: replace dummy to speed up */
if (stream->state == RKISP1_STATE_STREAMING &&
if (stream->streaming &&
stream->next_buf == NULL &&
atomic_read(&stream->ispdev->isp_sdev.frm_sync_seq) == 0) {
stream->next_buf = ispbuf;
@@ -1193,7 +1193,7 @@ static int rkisp1_stream_start(struct rkisp1_stream *stream)
bool async = false;
int ret;
if (other->state == RKISP1_STATE_STREAMING)
if (other->streaming)
async = true;
ret = rkisp1_config_rsz(stream, async);
@@ -1224,7 +1224,7 @@ rkisp1_start_streaming(struct vb2_queue *queue, unsigned int count)
struct v4l2_device *v4l2_dev = &dev->v4l2_dev;
int ret;
if (WARN_ON(stream->state != RKISP1_STATE_READY))
if (WARN_ON(stream->streaming))
return -EBUSY;
ret = rkisp1_create_dummy_buf(stream);
@@ -1331,7 +1331,7 @@ static void rkisp1_set_fmt(struct rkisp1_stream *stream,
if (!pixm->quantization)
pixm->quantization = V4L2_QUANTIZATION_FULL_RANGE;
/* can not change quantization when stream-on */
if (other_stream->state == RKISP1_STATE_STREAMING)
if (other_stream->streaming)
pixm->quantization = other_stream->out_fmt.quantization;
/* calculate size */
@@ -1408,7 +1408,7 @@ void rkisp1_stream_init(struct rkisp1_device *dev, u32 id)
stream->config = &rkisp1_mp_stream_config;
}
stream->state = RKISP1_STATE_READY;
stream->streaming = false;
memset(&pixm, 0, sizeof(pixm));
pixm.pixelformat = V4L2_PIX_FMT_YUYV;
@@ -1726,7 +1726,7 @@ void rkisp1_mi_isr(struct rkisp1_stream *stream)
*/
if (stream->ops->is_stream_stopped(dev->base_addr)) {
stream->stopping = false;
stream->state = RKISP1_STATE_READY;
stream->streaming = false;
wake_up(&stream->done);
} else {
stream->ops->stop_mi(stream);

View File

@@ -166,8 +166,6 @@ struct rkisp1_stream {
u32 id;
struct rkisp1_device *ispdev;
struct rkisp1_vdev_node vnode;
enum rkisp1_state state;
enum rkisp1_state saved_state;
struct capture_fmt out_isp_fmt;
struct v4l2_pix_format_mplane out_fmt;
struct v4l2_rect dcrop;
@@ -178,6 +176,7 @@ struct rkisp1_stream {
struct rkisp1_dummy_buffer dummy_buf;
struct rkisp1_buffer *curr_buf;
struct rkisp1_buffer *next_buf;
bool streaming;
bool stopping;
wait_queue_head_t done;
union {

View File

@@ -85,15 +85,6 @@ enum rkisp1_fmt_raw_pat_type {
RAW_BGGR,
};
enum rkisp1_state {
/* path not yet opened: */
RKISP1_STATE_DISABLED,
/* path opened and configured, ready for streaming: */
RKISP1_STATE_READY,
/* path is streaming: */
RKISP1_STATE_STREAMING
};
struct rkisp1_buffer {
struct vb2_v4l2_buffer vb;
struct list_head queue;

View File

@@ -359,9 +359,9 @@ static int rkisp1_config_cif(struct rkisp1_device *dev)
u32 cif_id;
v4l2_dbg(1, rkisp1_debug, &dev->v4l2_dev,
"SP state = %d, MP state = %d\n",
dev->stream[RKISP1_STREAM_SP].state,
dev->stream[RKISP1_STREAM_MP].state);
"SP streaming = %d, MP streaming = %d\n",
dev->stream[RKISP1_STREAM_SP].streaming,
dev->stream[RKISP1_STREAM_MP].streaming);
cif_id = readl(dev->base_addr + CIF_VI_ID);
v4l2_dbg(1, rkisp1_debug, &dev->v4l2_dev, "CIF_ID 0x%08x\n", cif_id);
@@ -384,9 +384,9 @@ static int rkisp1_isp_stop(struct rkisp1_device *dev)
u32 val;
v4l2_dbg(1, rkisp1_debug, &dev->v4l2_dev,
"SP state = %d, MP state = %d\n",
dev->stream[RKISP1_STREAM_SP].state,
dev->stream[RKISP1_STREAM_MP].state);
"SP streaming = %d, MP streaming = %d\n",
dev->stream[RKISP1_STREAM_SP].streaming,
dev->stream[RKISP1_STREAM_MP].streaming);
/*
* ISP(mi) stop in mi frame end -> Stop ISP(mipi) ->
@@ -414,9 +414,9 @@ static int rkisp1_isp_stop(struct rkisp1_device *dev)
readx_poll_timeout(readl, base + CIF_ISP_RIS,
val, val & CIF_ISP_OFF, 20, 100);
v4l2_dbg(1, rkisp1_debug, &dev->v4l2_dev,
"state(MP:%d, SP:%d), MI_CTRL:%x, ISP_CTRL:%x, MIPI_CTRL:%x\n",
dev->stream[RKISP1_STREAM_SP].state,
dev->stream[RKISP1_STREAM_MP].state,
"streaming(MP:%d, SP:%d), MI_CTRL:%x, ISP_CTRL:%x, MIPI_CTRL:%x\n",
dev->stream[RKISP1_STREAM_SP].streaming,
dev->stream[RKISP1_STREAM_MP].streaming,
readl(base + CIF_MI_CTRL),
readl(base + CIF_ISP_CTRL),
readl(base + CIF_MIPI_CTRL));
@@ -435,9 +435,9 @@ static int rkisp1_isp_start(struct rkisp1_device *dev)
u32 val;
v4l2_dbg(1, rkisp1_debug, &dev->v4l2_dev,
"SP state = %d, MP state = %d\n",
dev->stream[RKISP1_STREAM_SP].state,
dev->stream[RKISP1_STREAM_MP].state);
"SP streaming = %d, MP streaming = %d\n",
dev->stream[RKISP1_STREAM_SP].streaming,
dev->stream[RKISP1_STREAM_MP].streaming);
/* Activate MIPI */
if (sensor->mbus.type == V4L2_MBUS_CSI2) {
@@ -457,10 +457,10 @@ static int rkisp1_isp_start(struct rkisp1_device *dev)
usleep_range(1000, 1200);
v4l2_dbg(1, rkisp1_debug, &dev->v4l2_dev,
"SP state = %d, MP state = %d MI_CTRL 0x%08x\n"
"SP streaming = %d, MP streaming = %d MI_CTRL 0x%08x\n"
" ISP_CTRL 0x%08x MIPI_CTRL 0x%08x\n",
dev->stream[RKISP1_STREAM_SP].state,
dev->stream[RKISP1_STREAM_MP].state,
dev->stream[RKISP1_STREAM_SP].streaming,
dev->stream[RKISP1_STREAM_MP].streaming,
readl(base + CIF_MI_CTRL),
readl(base + CIF_ISP_CTRL),
readl(base + CIF_MIPI_CTRL));