04 Jun, 2019

1 commit

  • struct drm_fb_helper_crtc is now just a wrapper around drm_mode_set so
    use that directly instead and attach it as a modeset array onto
    drm_client_dev. drm_fb_helper will use this array to store its modesets
    which means it will always initialize a drm_client, but it will not
    register the client (callbacks) unless it's the generic fbdev emulation.

    Code will later be moved to drm_client, so add code there in a new file
    drm_client_modeset.c with MIT license to match drm_fb_helper.c.

    The modeset connector array size is hardcoded for the cloned case to avoid
    having to pass in a value from the driver. A value of 8 is chosen to err
    on the safe side. This means that the max connector argument for
    drm_fb_helper_init() and drm_fb_helper_fbdev_setup() isn't used anymore,
    a todo entry for this is added.

    In pan_display_atomic() restore_fbdev_mode_force() is used instead of
    restore_fbdev_mode_atomic() because that one will later become internal
    to drm_client_modeset.

    Locking order:
    1. drm_fb_helper->lock
    2. drm_master_internal_acquire
    3. drm_client_dev->modeset_mutex

    v6: Improve commit message (Sam Ravnborg)

    v3:
    - Use full drm_client_init/release for the modesets (Daniel Vetter)
    - drm_client_for_each_modeset: use lockdep_assert_held (Daniel Vetter)
    - Hook up to Documentation/gpu/drm-client.rst (Daniel Vetter)

    v2:
    - Add modesets array to drm_client (Daniel Vetter)
    - Use a new file for the modeset code (Daniel Vetter)
    - File has to be MIT licensed (Emmanuel Vadot)
    - Add copyrights from drm_fb_helper.c

    Signed-off-by: Noralf Trønnes
    Reviewed-by: Sam Ravnborg
    Link: https://patchwork.freedesktop.org/patch/msgid/20190531140117.37751-3-noralf@tronnes.org

    Noralf Trønnes
     

10 Jul, 2018

1 commit

  • This the beginning of an API for in-kernel clients.
    First out is a way to get a framebuffer backed by a dumb buffer.

    Only GEM drivers are supported.
    The original idea of using an exported dma-buf was dropped because it
    also creates an anonomous file descriptor which doesn't work when the
    buffer is created from a kernel thread. The easy way out is to use
    drm_driver.gem_prime_vmap to get the virtual address, which requires a
    GEM object. This excludes the vmwgfx driver which is the only non-GEM
    driver apart from the legacy ones. A solution for vmwgfx will have to be
    worked out later if it wants to support the client API which it probably
    will when we have a bootsplash client.

    Suggested-by: Daniel Vetter
    Signed-off-by: Noralf Trønnes
    Reviewed-by: Daniel Vetter
    Link: https://patchwork.freedesktop.org/patch/msgid/20180703160354.59955-2-noralf@tronnes.org

    Noralf Trønnes