[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