dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/9] drm: Add privacy-screen class and connector properties
@ 2021-04-21 20:47 Hans de Goede
  2021-04-21 20:47 ` [PATCH v2 1/9] drm/connector: Add support for privacy-screen properties (v4) Hans de Goede
                   ` (9 more replies)
  0 siblings, 10 replies; 21+ messages in thread
From: Hans de Goede @ 2021-04-21 20:47 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	Daniel Vetter, David Airlie, Rajat Jain, Jani Nikula,
	Joonas Lahtinen, Rodrigo Vivi, Mark Gross, Andy Shevchenko
  Cc: Marco Trevisan, Pekka Paalanen, Sebastien Bacher, intel-gfx,
	dri-devel, platform-driver-x86, Hans de Goede, Mark Pearson,
	Mario Limonciello

Hi All,

Here is v2 of my series to add a privacy-screen class and connector
properties. The only significantly changed patch in this v2 is:
[2/9] drm: Add privacy-screen class (v2)
which was modified to fix the dependency issues which the lkp kernel test
robot, see the patches changelog for details.

Here is the v1 cover-letter which is still up2date:

Here is the privacy-screen related code which I last posted in August
of last year. To the best of my knowledge there is consensus about /
everyone is in agreement with the new userspace API (2 connector properties)
this patch-set add (patch 1 of the series).

The blocker the last time was that there were no userspace users of
the new properties and as a rule we don't add new drm userspace API
without users.

There now is GNOME userspace code using the new properties:
https://hackmd.io/@3v1n0/rkyIy3BOw

The new API works as designed for this userspace user and the branches
mentioned at the above link add the following features to GNOME:

1. Showing an OSD notification when the privacy-screen is toggled on/off
   through hotkeys handled by the embedded-controller
2. Allowing control of the privacy-screen from the GNOME control-panel,
   including the on/off slider shown there updating to match the hw-setting
   when the setting is changed with the control-panel open.
3. Restoring the last user-setting at login

This series consists of a number of different parts:

1. A new version of Rajat's privacy-screen connector properties patch,
this adds new userspace API in the form of new properties

2. Since on most devices the privacy screen is actually controlled by
some vendor specific ACPI/WMI interface which has a driver under
drivers/platform/x86, we need some "glue" code to make this functionality
available to KMS drivers. Patches 2-4 add a new privacy-screen class for
this, which allows non KMS drivers (and possibly KMS drivers too) to
register a privacy-screen device and also adds an interface for KMS drivers
to get access to the privacy-screen associated with a specific connector.
This is modelled similar to how we deal with e.g. PWMs and GPIOs in the
kernel, including separate includes for consumers and providers(drivers).

3. Some drm_connector helper functions to keep the actual changes needed
for this in individual KMS drivers as small as possible (patch 5).

4. Make the thinkpad_acpi code register a privacy-screen device on
ThinkPads with a privacy-screen (patches 6-8)

5. Make the i915 driver export the privacy-screen functionality through
the connector properties on the eDP connector.

I believe that it would be best to merge the entire series, including
the thinkpad_acpi changes through drm-misc in one go. As the pdx86
subsys maintainer I hereby give my ack for merging the thinkpad_acpi
changes through drm-misc.

There is one small caveat with this series, which it is good to be
aware of. The i915 driver will now return -EPROBE_DEFER on Thinkpads
with an eprivacy screen, until the thinkpad_acpi driver is loaded.
This means that initrd generation tools will need to be updated to
include thinkpad_acpi when the i915 driver is added to the initrd.
Without this the loading of the i915 driver will be delayed to after
the switch to real rootfs.

Regards,

Hans



Hans de Goede (8):
  drm: Add privacy-screen class (v2)
  drm/privacy-screen: Add X86 specific arch init code
  drm/privacy-screen: Add notifier support
  drm/connector: Add a drm_connector privacy-screen helper functions
  platform/x86: thinkpad_acpi: Add hotkey_notify_extended_hotkey()
    helper
  platform/x86: thinkpad_acpi: Get privacy-screen / lcdshadow ACPI
    handles only once
  platform/x86: thinkpad_acpi: Register a privacy-screen device
  drm/i915: Add privacy-screen support

Rajat Jain (1):
  drm/connector: Add support for privacy-screen properties (v4)

 Documentation/gpu/drm-kms-helpers.rst        |  15 +
 Documentation/gpu/drm-kms.rst                |   2 +
 MAINTAINERS                                  |   8 +
 drivers/gpu/drm/Kconfig                      |   4 +
 drivers/gpu/drm/Makefile                     |   1 +
 drivers/gpu/drm/drm_atomic_uapi.c            |   4 +
 drivers/gpu/drm/drm_connector.c              | 214 +++++++++
 drivers/gpu/drm/drm_drv.c                    |   4 +
 drivers/gpu/drm/drm_privacy_screen.c         | 468 +++++++++++++++++++
 drivers/gpu/drm/drm_privacy_screen_x86.c     |  86 ++++
 drivers/gpu/drm/i915/display/intel_display.c |   5 +
 drivers/gpu/drm/i915/display/intel_dp.c      |  10 +
 drivers/gpu/drm/i915/i915_pci.c              |  12 +
 drivers/platform/x86/Kconfig                 |   2 +
 drivers/platform/x86/thinkpad_acpi.c         | 131 ++++--
 include/drm/drm_connector.h                  |  56 +++
 include/drm/drm_privacy_screen_consumer.h    |  63 +++
 include/drm/drm_privacy_screen_driver.h      |  84 ++++
 include/drm/drm_privacy_screen_machine.h     |  46 ++
 19 files changed, 1173 insertions(+), 42 deletions(-)
 create mode 100644 drivers/gpu/drm/drm_privacy_screen.c
 create mode 100644 drivers/gpu/drm/drm_privacy_screen_x86.c
 create mode 100644 include/drm/drm_privacy_screen_consumer.h
 create mode 100644 include/drm/drm_privacy_screen_driver.h
 create mode 100644 include/drm/drm_privacy_screen_machine.h

-- 
2.31.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2021-08-03 20:51 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-21 20:47 [PATCH v2 0/9] drm: Add privacy-screen class and connector properties Hans de Goede
2021-04-21 20:47 ` [PATCH v2 1/9] drm/connector: Add support for privacy-screen properties (v4) Hans de Goede
2021-04-21 20:47 ` [PATCH v2 2/9] drm: Add privacy-screen class (v2) Hans de Goede
2021-06-01 15:31   ` [Intel-gfx] " Emil Velikov
2021-06-01 16:50     ` Marco Trevisan
2021-06-03 11:59     ` Hans de Goede
2021-06-03 13:48       ` Emil Velikov
2021-04-21 20:47 ` [PATCH v2 3/9] drm/privacy-screen: Add X86 specific arch init code Hans de Goede
2021-04-21 20:47 ` [PATCH v2 4/9] drm/privacy-screen: Add notifier support Hans de Goede
2021-04-21 20:48 ` [PATCH v2 5/9] drm/connector: Add a drm_connector privacy-screen helper functions Hans de Goede
2021-04-21 20:48 ` [PATCH v2 6/9] platform/x86: thinkpad_acpi: Add hotkey_notify_extended_hotkey() helper Hans de Goede
2021-04-21 20:48 ` [PATCH v2 7/9] platform/x86: thinkpad_acpi: Get privacy-screen / lcdshadow ACPI handles only once Hans de Goede
2021-04-21 20:48 ` [PATCH v2 8/9] platform/x86: thinkpad_acpi: Register a privacy-screen device Hans de Goede
2021-04-21 20:48 ` [PATCH v2 9/9] drm/i915: Add privacy-screen support Hans de Goede
2021-04-22  8:51 ` [PATCH v2 0/9] drm: Add privacy-screen class and connector properties Simon Ser
2021-04-22  8:54   ` Hans de Goede
2021-04-22  8:58     ` Simon Ser
2021-04-27 17:03     ` Marco Trevisan
2021-07-13 19:25       ` Rajat Jain
2021-08-03 15:20         ` Marco Trevisan
2021-08-03 20:50           ` Rajat Jain

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).