[PATCH 3/3] media: aspeed: add AST2600 support
Joel Stanley
joel at jms.id.au
Tue Jan 7 14:15:26 AEDT 2020
On Tue, 7 Jan 2020 at 01:14, Jae Hyun Yoo <jae.hyun.yoo at linux.intel.com> wrote:
>
> Video engine in AST2600 has the exactly same register set with
> AST2500 except VR084 register which provides more precise JPEG
> size read back. This commit adds support for the difference and
> adds 'aspeed,ast2600-video-engine' compatible OF string.
>
> Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo at linux.intel.com>
> ---
> drivers/media/platform/aspeed-video.c | 15 +++++++++++----
> 1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
> index d8593cb2ae84..0dbe72672338 100644
> --- a/drivers/media/platform/aspeed-video.c
> +++ b/drivers/media/platform/aspeed-video.c
> @@ -72,10 +72,10 @@
> #define VE_SEQ_CTRL_CAP_BUSY BIT(16)
> #define VE_SEQ_CTRL_COMP_BUSY BIT(18)
>
> -#ifdef CONFIG_MACH_ASPEED_G5
> -#define VE_SEQ_CTRL_JPEG_MODE BIT(13) /* AST2500 */
> -#else
> +#ifdef CONFIG_MACH_ASPEED_G4
> #define VE_SEQ_CTRL_JPEG_MODE BIT(8) /* AST2400 */
> +#else
> +#define VE_SEQ_CTRL_JPEG_MODE BIT(13) /* AST2500/2600 */
> #endif /* CONFIG_MACH_ASPEED_G5 */
Yeah, nah. This should have never been done this way. I will send some
patches to fix it up, and you can add ast2600 support on top of them,
if that works for you.
Cheers,
Joel
>
> #define VE_CTRL 0x008
> @@ -135,6 +135,12 @@
>
> #define VE_OFFSET_COMP_STREAM 0x078
>
> +#ifdef CONFIG_MACH_ASPEED_G6
> +#define VE_JPEG_COMP_SIZE_READ_BACK 0x084 /* AST2600 */
> +#else
> +#define VE_JPEG_COMP_SIZE_READ_BACK VE_OFFSET_COMP_STREAM
> +#endif
> +
> #define VE_SRC_LR_EDGE_DET 0x090
> #define VE_SRC_LR_EDGE_DET_LEFT GENMASK(11, 0)
> #define VE_SRC_LR_EDGE_DET_NO_V BIT(12)
> @@ -572,7 +578,7 @@ static irqreturn_t aspeed_video_irq(int irq, void *arg)
> if (sts & VE_INTERRUPT_COMP_COMPLETE) {
> struct aspeed_video_buffer *buf;
> u32 frame_size = aspeed_video_read(video,
> - VE_OFFSET_COMP_STREAM);
> + VE_JPEG_COMP_SIZE_READ_BACK);
>
> spin_lock(&video->lock);
> clear_bit(VIDEO_FRAME_INPRG, &video->flags);
> @@ -1719,6 +1725,7 @@ static int aspeed_video_remove(struct platform_device *pdev)
> static const struct of_device_id aspeed_video_of_match[] = {
> { .compatible = "aspeed,ast2400-video-engine" },
> { .compatible = "aspeed,ast2500-video-engine" },
> + { .compatible = "aspeed,ast2600-video-engine" },
> {}
> };
> MODULE_DEVICE_TABLE(of, aspeed_video_of_match);
> --
> 2.17.1
>
More information about the Linux-aspeed
mailing list