• Thomas Zimmermann's avatar
    drm/radeon: Implement client-based fbdev emulation · e317a69f
    Thomas Zimmermann authored
    Implement fbdev emulation on top of struct drm_client and its helpers.
    Replaces ad-hoc interfaces for restoring and closing fbdev emulation with
    per-client callbacks for hotplugging, restoring and unregistering.
    
    A single function, radeon_fbdev_setup(), starts fbdev emulation after
    the DRM device has been registered. Hence, fbdev acts like a regular
    DRM client.
    
    The setup call prepares the fbdev emulation and invokes connector
    hotplugging. The first successful hotplug event initializes fbdev
    emulation with a framebuffer, device file, etc.
    
    Unregistering depends on the hotplug status. Fully initialized emulation
    is cleaned up through drm_fb_helper_unregister_info() and fb_destroy.
    For prepared-only setups, unregistering unprepares the emulation and
    releases all resources. In both cases, fbdev emulation will be cleaned
    up.
    Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    e317a69f
radeon_kms.c 24.2 KB