drm: Add Content Protection property
authorYi Zhou <yi.zhou@amlogic.com>
Thu, 5 Jul 2018 06:00:10 +0000 (14:00 +0800)
committerYixun Lan <yixun.lan@amlogic.com>
Thu, 5 Jul 2018 12:19:57 +0000 (05:19 -0700)
commit3f042f7a3fdfc669cae81a4af7db8ccfb6a22ed9
tree008767eac0dc03494336a15a3463bc411a64b7a4
parent3b447a7155358923a9908610f09eda47f07536b9
drm: Add Content Protection property

PD#158474: drm: Add Content Protection property

This patch adds a new optional connector property to allow userspace to enable
protection over the content it is displaying. This will typically be implemented
by the driver using HDCP.

The property is a tri-state with the following values:
- OFF: Self explanatory, no content protection
- DESIRED: Userspace requests that the driver enable protection
- ENABLED: Once the driver has authenticated the link, it sets this value

The driver is responsible for downgrading ENABLED to DESIRED if the link becomes
unprotected. The driver should also maintain the desiredness of protection
across hotplug/dpms/suspend.

If this looks familiar, I posted [1] this 3 years ago. We have been using this
in ChromeOS across exynos, mediatek, and rockchip over that time.

Changes in v2:
- Pimp kerneldoc for content_protection_property (Daniel)
- Drop sysfs attribute
Changes in v3:
- None
Changes in v4:
- Changed kerneldoc to recommend userspace polling (Daniel)
- Changed kerneldoc to briefly describe how to attach the property (Daniel)
Changes in v5:
- checkpatch whitespace noise
- Change DRM_MODE_CONTENT_PROTECTION_OFF to DRM_MODE_CONTENT_PROTECTION_UNDESIRED
Changes in v6:
- None

commit 24557865c8b1a6d0eaccaac47aabd9b23badf8fd
Author: Sean Paul <seanpaul@chromium.org>
Date:   Mon Jan 8 14:55:37 2018 -0500

Change-Id: Ief031a46681d88369454ebbc56ed0bb203258ab5
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Yi Zhou <yi.zhou@amlogic.com>
drivers/gpu/drm/drm_atomic.c
drivers/gpu/drm/drm_connector.c
include/drm/drm_connector.h
include/uapi/drm/drm_mode.h