lkml.org 
[lkml]   [2022]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 03/14] drm/sun4i: Remove obsolete references to PHYS_OFFSET
    Date
    commit b4bdc4fbf8d0 ("soc: sunxi: Deal with the MBUS DMA offsets in a
    central place") added a platform device notifier that sets the DMA
    offset for all of the display engine frontend and backend devices.

    The code applying the offset to DMA buffer physical addresses was then
    removed from the backend driver in commit 756668ba682e ("drm/sun4i:
    backend: Remove the MBUS quirks"), but the code subtracting PHYS_OFFSET
    was left in the frontend driver.

    As a result, the offset was applied twice in the frontend driver. This
    likely went unnoticed because it only affects specific configurations
    (scaling or certain pixel formats) where the frontend is used, on boards
    with both one of these older SoCs and more than 1 GB of DRAM.

    In addition, the references to PHYS_OFFSET prevent compiling the driver
    on architectures where PHYS_OFFSET is not defined.

    Fixes: b4bdc4fbf8d0 ("soc: sunxi: Deal with the MBUS DMA offsets in a central place")
    Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Signed-off-by: Samuel Holland <samuel@sholland.org>
    ---

    (no changes since v1)

    drivers/gpu/drm/sun4i/sun4i_frontend.c | 3 ---
    1 file changed, 3 deletions(-)

    diff --git a/drivers/gpu/drm/sun4i/sun4i_frontend.c b/drivers/gpu/drm/sun4i/sun4i_frontend.c
    index 56ae38389db0..462fae73eae9 100644
    --- a/drivers/gpu/drm/sun4i/sun4i_frontend.c
    +++ b/drivers/gpu/drm/sun4i/sun4i_frontend.c
    @@ -222,13 +222,11 @@ void sun4i_frontend_update_buffer(struct sun4i_frontend *frontend,

    /* Set the physical address of the buffer in memory */
    paddr = drm_fb_cma_get_gem_addr(fb, state, 0);
    - paddr -= PHYS_OFFSET;
    DRM_DEBUG_DRIVER("Setting buffer #0 address to %pad\n", &paddr);
    regmap_write(frontend->regs, SUN4I_FRONTEND_BUF_ADDR0_REG, paddr);

    if (fb->format->num_planes > 1) {
    paddr = drm_fb_cma_get_gem_addr(fb, state, swap ? 2 : 1);
    - paddr -= PHYS_OFFSET;
    DRM_DEBUG_DRIVER("Setting buffer #1 address to %pad\n", &paddr);
    regmap_write(frontend->regs, SUN4I_FRONTEND_BUF_ADDR1_REG,
    paddr);
    @@ -236,7 +234,6 @@ void sun4i_frontend_update_buffer(struct sun4i_frontend *frontend,

    if (fb->format->num_planes > 2) {
    paddr = drm_fb_cma_get_gem_addr(fb, state, swap ? 1 : 2);
    - paddr -= PHYS_OFFSET;
    DRM_DEBUG_DRIVER("Setting buffer #2 address to %pad\n", &paddr);
    regmap_write(frontend->regs, SUN4I_FRONTEND_BUF_ADDR2_REG,
    paddr);
    --
    2.35.1
    \
     
     \ /
      Last update: 2022-04-24 18:27    [W:4.029 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site