Hi Michael, On Fri, Aug 09, 2024 at 04:31:43PM +0200, Michael Tretter wrote: > On Tue, 06 Aug 2024 10:48:41 +0100, John Keeping wrote: > > The rot_mir_point_matrix is arranged with the rotation values in rows > > and mirror settings in the columns. Fix the order of indexing to match > > this so that the correct values are used. > > The table and indexing is correct. The rows (second index) contain the > mirror modes and the columns (first index) contain the rotation modes, > and the table and the indexing are correct. If you read the columns, the > corner moves clockwise, but if you read the rows, the corner moves in a > z or s form, indicating that these are the mirror modes. > > It's probably worth documenting, how the table works. > > However, there is a mixup of the arguments between the call to > rga_lookup_draw_pos() and the use in the function. > > The function definition is > > static struct rga_addr_offset * > rga_lookup_draw_pos(struct rga_corners_addr_offset * offsets, > u32 rotate_mode, u32 mirr_mode) > > but it is called as > > rga_lookup_draw_pos(&offsets, mir_mode, rot_mode); > > I think, fixing the order of the arguments in the function call is the > correct fix to your observed bug. Ah, yes. I'm not sure how I missed that. I have confirmed your suggested change works and will send an updated patch. Thanks, John > > > > Signed-off-by: John Keeping <jkeeping@xxxxxxxxxxxxxxxxx> > > --- > > drivers/media/platform/rockchip/rga/rga-hw.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/media/platform/rockchip/rga/rga-hw.c b/drivers/media/platform/rockchip/rga/rga-hw.c > > index 11c3d72347572..b7d51ddb10fa4 100644 > > --- a/drivers/media/platform/rockchip/rga/rga-hw.c > > +++ b/drivers/media/platform/rockchip/rga/rga-hw.c > > @@ -97,7 +97,7 @@ static struct rga_addr_offset *rga_lookup_draw_pos(struct > > if (!offsets) > > return NULL; > > > > - switch (rot_mir_point_matrix[rotate_mode][mirr_mode]) { > > + switch (rot_mir_point_matrix[mirr_mode][rotate_mode]) { > > case LT: > > return &offsets->left_top; > > case LB: > > -- > > 2.45.2