2017년 08월 09일 20:48에 Tobias Jakobi 이(가) 쓴 글: > We always translate the dma address such that the offsets of > the source image are zero. Hence we can remove manipulation of > the MXR_GRAPHIC_SXY(win) register. > > We leave the register defines (in regs_mixer.h) in place, since > they document the hardware. > > Signed-off-by: Tobias Jakobi <tjakobi@xxxxxxxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/exynos/exynos_mixer.c | 11 ++--------- > 1 file changed, 2 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c > index 8d68de85bada..28fbe79befff 100644 > --- a/drivers/gpu/drm/exynos/exynos_mixer.c > +++ b/drivers/gpu/drm/exynos/exynos_mixer.c > @@ -584,7 +584,7 @@ static void mixer_graph_buffer(struct mixer_context *ctx, > unsigned long flags; > unsigned int win = plane->index; > unsigned int x_ratio = 0, y_ratio = 0; > - unsigned int src_x_offset, src_y_offset, dst_x_offset, dst_y_offset; > + unsigned int dst_x_offset, dst_y_offset; > dma_addr_t dma_addr; > unsigned int fmt; > u32 val; > @@ -618,12 +618,10 @@ static void mixer_graph_buffer(struct mixer_context *ctx, > dst_x_offset = state->crtc.x; > dst_y_offset = state->crtc.y; > > - /* converting dma address base and source offset */ > + /* translate dma address base s.t. the source image offset is zero */ > dma_addr = exynos_drm_fb_dma_addr(fb, 0) > + (state->src.x * fb->format->cpp[0]) > + (state->src.y * fb->pitches[0]); > - src_x_offset = 0; > - src_y_offset = 0; > > if (mode->flags & DRM_MODE_FLAG_INTERLACE) > __set_bit(MXR_BIT_INTERLACE, &ctx->flags); > @@ -654,11 +652,6 @@ static void mixer_graph_buffer(struct mixer_context *ctx, > val |= MXR_GRP_WH_V_SCALE(y_ratio); > mixer_reg_write(res, MXR_GRAPHIC_WH(win), val); > > - /* setup offsets in source image */ > - val = MXR_GRP_SXY_SX(src_x_offset); > - val |= MXR_GRP_SXY_SY(src_y_offset); > - mixer_reg_write(res, MXR_GRAPHIC_SXY(win), val); The offset of source buffer can be set at bootloader so previous value can be keeped. I think MXR_GRAPHIC_SXY register should be cleared at mixer_win_reset function if you want to remove above lines. > - > /* setup offsets in display image */ > val = MXR_GRP_DXY_DX(dst_x_offset); > val |= MXR_GRP_DXY_DY(dst_y_offset); > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel