• Hans de Goede's avatar
    drm: Add privacy-screen class (v4) · a1a98689
    Hans de Goede authored
    On some new laptops the LCD panel has a builtin electronic privacy-screen.
    We want to export this functionality as a property on the drm connector
    object. But often this functionality is not exposed on the GPU but on some
    other (ACPI) device.
    
    This commit adds a privacy-screen class allowing the driver for these
    other devices to register themselves as a privacy-screen provider; and
    allowing the drm/kms code to get a privacy-screen provider associated
    with a specific GPU/connector combo.
    
    Changes in v2:
    - Make CONFIG_DRM_PRIVACY_SCREEN a bool which controls if the drm_privacy
      code gets built as part of the main drm module rather then making it
      a tristate which builds its own module.
    - Add a #if IS_ENABLED(CONFIG_DRM_PRIVACY_SCREEN) check to
      drm_privacy_screen_consumer.h and define stubs when the check fails.
      Together these 2 changes fix several dependency issues.
    - Remove module related code now that this is part of the main drm.ko
    - Use drm_class as class for the privacy-screen devices instead of
      adding a separate class for this
    
    Changes in v3:
    - Make the static inline drm_privacy_screen_get_state() stub set sw_state
      and hw_state to PRIVACY_SCREEN_DISABLED to squelch an uninitialized
      variable warning when CONFIG_DRM_PRIVICAY_SCREEN is not set
    
    Changes in v4:
    - Make drm_privacy_screen_set_sw_state() skip calling out to the hw if
      hw_state == new_sw_state
    Reviewed-by: default avatarEmil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211005202322.700909-3-hdegoede@redhat.com
    a1a98689
MAINTAINERS 606 KB