On Tue, 7 Jan 2020 at 01:14, Jae Hyun Yoo <jae.hyun.yoo@xxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxx> > --- > 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 >