diff --git a/drivers/media/platform/rockchip/isp1/capture.c b/drivers/media/platform/rockchip/isp1/capture.c index 5102cda4720b..188fa7cfcd3f 100644 --- a/drivers/media/platform/rockchip/isp1/capture.c +++ b/drivers/media/platform/rockchip/isp1/capture.c @@ -1918,7 +1918,8 @@ static int rkisp1_querycap(struct file *file, void *priv, strlcpy(cap->card, vdev->name, sizeof(cap->card)); snprintf(cap->driver, sizeof(cap->driver), - "%s_v%02d", dev->driver->name, stream->ispdev->isp_ver); + "%s_v%d", dev->driver->name, + stream->ispdev->isp_ver >> 4); snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s", dev_name(dev)); @@ -1958,7 +1959,8 @@ void rkisp1_unregister_stream_vdevs(struct rkisp1_device *dev) struct rkisp1_stream *raw_stream = &dev->stream[RKISP1_STREAM_RAW]; rkisp1_unregister_stream_vdev(mp_stream); - rkisp1_unregister_stream_vdev(sp_stream); + if (dev->isp_ver != ISP_V10_1) + rkisp1_unregister_stream_vdev(sp_stream); if (dev->isp_ver == ISP_V12 || dev->isp_ver == ISP_V13) rkisp1_unregister_stream_vdev(raw_stream); @@ -1976,6 +1978,8 @@ static int rkisp1_register_stream_vdev(struct rkisp1_stream *stream) switch (stream->id) { case RKISP1_STREAM_SP: vdev_name = SP_VDEV_NAME; + if (dev->isp_ver == ISP_V10_1) + return 0; break; case RKISP1_STREAM_MP: vdev_name = MP_VDEV_NAME; diff --git a/drivers/media/platform/rockchip/isp1/dev.c b/drivers/media/platform/rockchip/isp1/dev.c index 00b0f59bb6d7..c7d74cd73241 100644 --- a/drivers/media/platform/rockchip/isp1/dev.c +++ b/drivers/media/platform/rockchip/isp1/dev.c @@ -338,13 +338,16 @@ static int rkisp1_create_links(struct rkisp1_device *dev) return ret; /* create isp internal links */ - /* SP links */ - source = &dev->isp_sdev.sd.entity; - sink = &dev->stream[RKISP1_STREAM_SP].vnode.vdev.entity; - ret = media_create_pad_link(source, RKISP1_ISP_PAD_SOURCE_PATH, - sink, 0, flags); - if (ret < 0) - return ret; + if (dev->isp_ver != ISP_V10_1) { + /* SP links */ + source = &dev->isp_sdev.sd.entity; + sink = &dev->stream[RKISP1_STREAM_SP].vnode.vdev.entity; + ret = media_create_pad_link(source, + RKISP1_ISP_PAD_SOURCE_PATH, + sink, 0, flags); + if (ret < 0) + return ret; + } /* MP links */ source = &dev->isp_sdev.sd.entity; @@ -450,8 +453,9 @@ static int _set_pipeline_default_fmt(struct rkisp1_device *dev) /* change fmt&size of MP/SP */ rkisp1_set_stream_def_fmt(dev, RKISP1_STREAM_MP, width, height, V4L2_PIX_FMT_YUYV); - rkisp1_set_stream_def_fmt(dev, RKISP1_STREAM_SP, - width, height, V4L2_PIX_FMT_YUYV); + if (dev->isp_ver != ISP_V10_1) + rkisp1_set_stream_def_fmt(dev, RKISP1_STREAM_SP, + width, height, V4L2_PIX_FMT_YUYV); } return 0; @@ -792,7 +796,7 @@ static const struct isp_match_data rk3326_isp_match_data = { static const struct isp_match_data rk3368_isp_match_data = { .clks = rk3368_isp_clks, .num_clks = ARRAY_SIZE(rk3368_isp_clks), - .isp_ver = ISP_V10, + .isp_ver = ISP_V10_1, .clk_rate_tbl = rk3368_isp_clk_rate, .num_clk_rate_tbl = ARRAY_SIZE(rk3368_isp_clk_rate), .irqs = rk3368_isp_irqs, diff --git a/drivers/media/platform/rockchip/isp1/dev.h b/drivers/media/platform/rockchip/isp1/dev.h index f46c8206dde7..d4c91966ca7e 100644 --- a/drivers/media/platform/rockchip/isp1/dev.h +++ b/drivers/media/platform/rockchip/isp1/dev.h @@ -60,11 +60,13 @@ #define RKISP1_MEDIA_BUS_FMT_MASK 0xF000 #define RKISP1_MEDIA_BUS_FMT_BAYER 0x3000 +/* ISP_V10_1 for only support MP */ enum rkisp1_isp_ver { - ISP_V10 = 0, - ISP_V11, - ISP_V12, - ISP_V13 + ISP_V10 = 0x00, + ISP_V10_1 = 0x01, + ISP_V11 = 0x10, + ISP_V12 = 0x20, + ISP_V13 = 0x30, }; /* diff --git a/drivers/media/platform/rockchip/isp1/isp_params.c b/drivers/media/platform/rockchip/isp1/isp_params.c index 6d0711c8f8f9..1496ba4a8f23 100644 --- a/drivers/media/platform/rockchip/isp1/isp_params.c +++ b/drivers/media/platform/rockchip/isp1/isp_params.c @@ -1882,7 +1882,8 @@ static int rkisp1_params_querycap(struct file *file, struct rkisp1_isp_params_vdev *params_vdev = video_get_drvdata(vdev); snprintf(cap->driver, sizeof(cap->driver), - "%s_v%02d", DRIVER_NAME, params_vdev->dev->isp_ver); + "%s_v%d", DRIVER_NAME, + params_vdev->dev->isp_ver >> 4); strlcpy(cap->card, vdev->name, sizeof(cap->card)); strlcpy(cap->bus_info, "platform: " DRIVER_NAME, sizeof(cap->bus_info)); diff --git a/drivers/media/platform/rockchip/isp1/isp_stats.c b/drivers/media/platform/rockchip/isp1/isp_stats.c index 3e4d12098c1b..a1ff4d0b06f7 100644 --- a/drivers/media/platform/rockchip/isp1/isp_stats.c +++ b/drivers/media/platform/rockchip/isp1/isp_stats.c @@ -81,7 +81,8 @@ static int rkisp1_stats_querycap(struct file *file, strcpy(cap->driver, DRIVER_NAME); snprintf(cap->driver, sizeof(cap->driver), - "%s_v%02d", DRIVER_NAME, stats_vdev->dev->isp_ver); + "%s_v%d", DRIVER_NAME, + stats_vdev->dev->isp_ver >> 4); strlcpy(cap->card, vdev->name, sizeof(cap->card)); strlcpy(cap->bus_info, "platform: " DRIVER_NAME, sizeof(cap->bus_info));