diff --git a/drivers/media/platform/rockchip/ispp/params.c b/drivers/media/platform/rockchip/ispp/params.c index 4be9b0c1d162..1905f9aa3713 100644 --- a/drivers/media/platform/rockchip/ispp/params.c +++ b/drivers/media/platform/rockchip/ispp/params.c @@ -343,6 +343,9 @@ static void shp_config(struct rkispp_params_vdev *params_vdev, void __iomem *base = params_vdev->dev->base_addr; u32 i, val; + rkispp_set_bits(base + RKISPP_SHARP_CTRL, SW_SHP_WR_ROT_MODE(3), + SW_SHP_WR_ROT_MODE(arg->rotation)); + rkispp_write(base + RKISPP_SHARP_SC_DOWN, (arg->scl_down_v & 0x1) << 1 | (arg->scl_down_h & 0x1)); diff --git a/drivers/media/platform/rockchip/ispp/stream.c b/drivers/media/platform/rockchip/ispp/stream.c index 85c1b996c534..e949c0d02bea 100644 --- a/drivers/media/platform/rockchip/ispp/stream.c +++ b/drivers/media/platform/rockchip/ispp/stream.c @@ -1041,6 +1041,8 @@ static int config_mb(struct rkispp_stream *stream) } if (stream->out_cap_fmt.wr_fmt & FMT_YUYV) mult = 2; + else if (stream->out_cap_fmt.wr_fmt & FMT_FBC) + mult = 0; set_vir_stride(stream, ALIGN(stream->out_fmt.width * mult, 16) >> 2); v4l2_dbg(1, rkispp_debug, &dev->v4l2_dev, "%s last module:%d\n", __func__, i); diff --git a/include/uapi/linux/rkispp-config.h b/include/uapi/linux/rkispp-config.h index 4c745e1521c5..ace9c2985026 100644 --- a/include/uapi/linux/rkispp-config.h +++ b/include/uapi/linux/rkispp-config.h @@ -167,6 +167,7 @@ struct rkispp_nr_config { } __attribute__ ((packed)); struct rkispp_sharp_config { + u8 rotation; u8 scl_down_v; u8 scl_down_h; u8 tile_ycnt;